DenyHosts教程:防暴力破解SSH密码

Posted 周先森爱吃素

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DenyHosts教程:防暴力破解SSH密码相关的知识,希望对你有一定的参考价值。

背景

此前服务器多次被恶意挖矿,我们通过下面的命令搜索SSH远程登录日志,发现攻击者的IP尝试登录了200多次,即暴力破解了被攻击用户的密码。通过询问该用户得知,设置的密码确实比较简单,为了防止后面被爆破所以考虑关闭密码访问,但又不是很方便,那么有没有工具能自动监控登录日志,并将登录失败次数过多的用户直接拉黑呢?

 grep "Failed password for invalid user" /var/log/auth.log | awk 'print $13' | sort | uniq -c | sort -nr | more

还真有,DenyHosts就是这样一个基于Python开发的工具,它运行于Linux平台用于防止SSH暴力破解密码登录,它会自动分析SSHD服务的日志(Ubuntu的是/var/log/auth.log文件)并维护一个黑名单,更多细节可以查询官网

安装

需要注意的是,在安装这个软件之前建议先清理一下SSHD登录日志,因为这个软件会扫描历史日志,若它检测到你曾经登录失败的次数小于允许的次数,那么你也会被封禁。可以通过cat /dev/null > /var/log/auth.log命令来清理日志文件,清理后请重启日志服务,也就是service rsyslog restart。上述命令和后续命令均需要root用户来处理,如不是root用户则命令之前需要使用sudo来使用管理员权限。

在Ubuntu下,安装DenyHosts相对比较简单,也不需要采用源码安装的方式,直接通过apt就可以安装,具体命令如下。

apt-get update
apt-get install denyhosts
service denyhosts status

安装后服务会自动运行,应当会看到如下的运行状态。

然后就是服务的配置了,服务的配置文件为/etc/denyhosts.conf,整个程序的工作目录为/var/lib/denyhosts/,程序禁用的IP列表则在黑名单文件/etc/hosts.deny中。

配置文件中需要重点关注下面几项。

SECURE_LOG = /var/log/auth.log   # sshd日志文件  
HOSTS_DENY = /etc/hosts.deny    # 黑名单文件
PURGE_DENY =  3d   # 过多久后清除已经禁止的,空代表永不解禁 其中w代表周,d代表天,h代表小时,s代表秒,m代表分钟
BLOCK_SERVICE = sshd   # 阻止服务名
DENY_THRESHOLD_INVALID = 5  # 允许无效用户(在/etc/passwd未列出)登录失败次数,允许无效用户登录失败的次数.
DENY_THRESHOLD_VALID = 5  #  允许普通用户登录失败的次数
DENY_THRESHOLD_ROOT = 5  #  允许root登录失败的次数

修改配置文件后需要重启服务,对应的命令如下。

service denyhosts restart

若想要卸载DenyHosts则使用下面的命令。

service denyhosts stop
apt-get purge denyhosts

解封

由于我在服务器上使用了frp进行内网穿透,导致127.0.0.1这个IP被封,我无法使用frp服务了。在卸载DenyHosts无效后,发现依然无法访问,那大概知道是系统级别的禁用IP了,此是可以通过下面的命令来解封。

IP=输入想要解封的IP
service denyhosts stop
sed -i "/$IP/d" /etc/hosts.deny
sed -i "/$IP/d" /var/lib/denyhosts/hosts-valid
sed -i "/$IP/d" /var/lib/denyhosts/users-hosts
sed -i "/$IP/d" /var/lib/denyhosts/hosts
sed -i "/$IP/d" /var/lib/denyhosts/hosts-root
sed -i "/$IP/d" /var/lib/denyhosts/hosts-restricted
iptables -D INPUT -s $IP -j DROP

总结

DenyHosts是非常非常实用的防SSH暴力破解密码的一个工具,为了防止挖矿,可以安装使用它。

以上是关于DenyHosts教程:防暴力破解SSH密码的主要内容,如果未能解决你的问题,请参考以下文章

Linux 系统安全 -- 防暴力破解

linux防暴力破解远程密码神器-fail2ban

linux 防暴力破解

使用DenyHosts防止ssh暴力破解

Centos7使用DenyHosts防止ssh暴力破解

Centos7使用DenyHosts防止ssh暴力破解