今天一朋友突然想起来看看服务器有没有被恶意ssh爆破,结果不看不知道,还真的有。还不少,上github看了一下,果然还是有和我们一样的朋友的。。已经有大神写好了插件了,直接用就行了。
本来我准备把密码访问关闭,然后端口也改一下,后来想了想,关闭密码访问真的不方便,改端口一样可以扫出来,还不如来点儿狠得,直接拉黑得了。
一、DenyHost简介:
DenyHosts是基于Python2写的一个程序软件,运行于Linux上预防SSH暴力破解的,它会分析sshd的日志文件(/var/log/auth.log),当发现重复的攻击时就会记录IP到/etc/hosts.deny文件,并且会列入系统防火墙黑名单
- DenyHosts官网:点击访问 http://denyhosts.sourceforge.net/
重要提示!!!
使用这个软件之前,最好清空一下已经存在的系统日志,因为软件会扫描已经存在的日志文件,如果他检测到你的允许次数 小于 日志中已经存在的ip的错误次数。那么即使是之前的登录日志中的ip也会被封的。
所以建议先清理一下旧日志,清理之后一定要重启系统日志服务!!
1 | |
二、DenyHost安装
这里以ubuntu为例
1 | |
安装完成后程序会自动启动 查看是否启动命令:
1 | |
我今天一安装,程序扫描我的日志文件,居然发现了300多个想尝试登陆我服务器得ip.天呐, 我服务器上是有什么宝吗? ?
目录:
/var/lib/denyhosts/ # 程序工作目录 所有的日志都在这里面 /etc/hosts.deny # 已加入黑名单的ip
配置文件详细解读
1 | |
相关命令
1 | |
误封了自己的ip怎么办?我刚开始安装,为了测试,把自己ip封了,整了好久才搞好。
我之前误封之后,把ip从 hosts.deny里面移除了也不行。后来发现官网早有解释。

但是问题来了,我按照他的方法操作了,还是不行,后来我直接把这个软件卸载了,并且重启了服务器,发现我的ip依然被封禁,那这就不用想了,肯定是系统级别的禁止。果不其然。执行
1 | |
发现了我自己的ip。

由于官方并没有提供命令移除被封禁的ip,所以我在这里帮大家写好了一键移除的脚本。
IP=$1
if [ -n "$IP" ];then
if [[ $IP =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]];then
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
echo $IP remove from Denyhosts
service denyhosts start
else
echo "This is not IP"
fi
else
echo "IP is empty"
fi
用法 新建一个后缀.sh的文件,将下面代码复制进去,然后执行
1$ sudo chmod +x name.sh # 添加可执行权限解除封禁ip命令
1$ sudo ./name.sh 127.0.0.1添加白名单ip ⬇️ 官网介绍
命令
1 | |
现在看我的收件箱:
大概看了下ip,有国外也有国内的。。。

