利用Denyhosts阻止SSH暴力攻击

0x00

当服务器SSH端口暴露在公网上,将会遭到互联网上的扫描软件进行扫描,并暴力破解SSH登录口令。Denyhosts由Phil Schwartz用python开发的,他通过分析/var/log/secure日志是否存在对OpenSSH暴力破解行为,如发现同一IP在进行多次SSH密码尝试时就会记录IP到/etc/hosts.deny文件,从而拒绝该IP登录请求。

0x01

一、下载Denyhosts并解压安装:

wget https://sourceforge.net/projects/denyhosts/files/DenyHosts-2.6.tar.gz                    //下载Denyhost压缩包文件

tar -zxf DenyHosts-2.6.tar.gz && cd DenyHosts-2.6                                                      //解压文件

echo " "/var/log/secure && service rsyslog restart                                                    //清空secure文件,并重启日志服务

python setup.py install                                                                                        //运行Denyhost-2.6目录下的setup.py 进行安装

cd /usr/share/denyhosts/                                                                                     //进入Denyhosts

cp denyhosts.cfg-dist denyhosts.cfg && cp daemon-control-dist daemon-control   //复制自带的配置文件为Denyhosts使用的配置文件

cat denyhosts.cfg|grep -v "#"                                                           //查看配置文件

二、Denyhosts配置文件说明:

·SECURE_LOG:指定系统安全日志的位置,在CentOS和Redhat系统中设为/var/log/secure。

·HOSTS_DENY:检测到暴力破解后,指定在哪个文件中添加相应的恶意IP并禁止,在CentOS和Redhat系统中设为/etc/hosts.deny。

·BLOCK_SERVICE:检测到暴力破解后,指定封停来源IP访问哪些服务,可以指定sshd或者ALL(即封停来源IP访问任何使用了libwrap的服务程序)。

·DENY_THRESHOLD_INVALID:对于在/etc/passwd不存在的用户名的暴力尝试,指定发现多少次以后封停,这个值使用默认的5即可。

·DENY_THRESHOLD_VALID:对于在/etc/passwd存在的用户名(除root外)的暴力尝试,指定发现多少次以后封停。建议适当调大这个值(如设置为20),以避免合法用户自己输错密码导致的无法继续登录。

·DENY_THRESHOLD_ROOT:对于root账户的暴力尝试,指定发现多少次以后封停。建议适当调大这个值(如设置为10),以避免合法root用户自己输错密码导致的无法继续登录。

·HOSTNAME_LOOKUP:指定是否启用来源IP到完整域名(Fully Qualified Domain Name,FQDN)的解析,建议设置为NO,以节省服务器尝试反向解析的开销

三、启动Denyhosts服务

chown root daemon-control

 chmod 700 daemon-control                                                                     //赋予权限

 ./daemon-control start                                                                            //启动Denyhost 服务

ln -sf /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts            //创建链接           

chkconfig --add denyhosts                                                                        //加入开机启动

chkconfig --level 2345 denyhosts on

echo "/usr/share/denyhosts/daemon-control start" >> /etc/rc.local

四、利用hydra破解测试

利用kali对服务器进行ssh密码猜测测试

hydra -l root -P password.txt ssh://IP地址 -t 4                                                //password字典自备


hydra尝试密码猜测

查看系统日志/var/log/secure


日志记录

查看/etc/hosts.deny,发现kali主机IP地址已经添加


hosts.deny文件

0x02

安全建议:

1.利用Denyhosts可以有效避免暴力破解【在公网出口IP不固定使用】

2.修改SSH访问端口

3.在防火墙限制登录也可以避免OpenSSH暴力破解【有自己的公网IP,可直接公网IP连接】

你可能感兴趣的:(利用Denyhosts阻止SSH暴力攻击)