CentOS-ssh动态禁用ip,防暴力破解
前面几句废话
最近发生了一件很闹心的事儿,新加了一台服务器,刚刚部署了一个台服DNF准备体验一下的时候,服务器被黑了。
某天下午,小伙伴给发我消息,游戏登录的时候报错了,还顺便给发了个截图。当时我还很奇怪,因为报错是数据连接失败了。我以为是本地配置哪里出错了。
等我登录到后台看数据库的时候,看的我一脸蒙逼,数据完全空了,留下了一个空表,里面两条记录。大概意思就是让我给他发 0.001 BTC,发完后给他发个邮件,他给我数据库数据的下载地址,否则数据将用就删除。
毕竟以前从来没发生过这种事情,还挺兴奋。开始追查到底是哪里出现了问题。这也就引出来这次需要记录的东西,自动禁用 IP 登录,防止暴力破解。
问题原因
经过系统日志的分析,发现在系统日志中,有大量的ssh尝试登录的报错,简单查询一下 IP 来源,基本上都在国外。
这次数据库被暴力破解其实是我自己的问题,我将本地的数据直接覆盖到服务器上之后,数据库的默认密码忘记修改了,默认密码太容易被暴力破解了。
为了防止暴力破解,配置一个将可疑IP加入ssh 黑名单的自动处理程序是非常有必要的。设置方法如下。
设置ssh自动将可疑IP加入黑名单
在 CentOS 系统中,lastb 命令可以查看所有的登录记录,通过该命令过滤出可疑IP,屏蔽每小时SSH暴力破解超过10次的IP。
编写一个自动检查的脚本secure_ssh.sh,脚本内容如下:
1 | #!/bin/bash |
将该脚本放到服务器上任意目录都可以,我这里放在/usr/local/bin/,然后将这个脚本设置到每个小时执行一次。
通过crontab 编辑定时任务。
1 | crontab -e |
编辑命令跟vim一样,如下表达式是每小时执行一次。
1 | 0 */1 * * * /bin/sh /usr/local/bin/secure_ssh.sh |
效果
一般情况下,只要有公网IP开了端口,就会被扫,就有概率被暴力破解,这些“专业”的都是自动程序在破解,循环扫的,所以还是有必要配置一下。
配置好之后,没多久就能记录一堆可疑 IP。
结束
又踩了一个坑。