Shell脚本防止Linux远程SSH暴力破解
概述:
在CentOS云服务器上使用“journalctl”工具发现系统上存在大量的SSHD日志,大概意思是一直有来自不同国家和地区的IP地址、更换各种不同用户名和端口的暴力连接尝试:
执行命令:
journalctl --since "开始时间" --until "结束时间"
日志内容:
pam_unix(sshd:auth): check pass; user unknown
pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=IP地址
Failed password for invalid user 用户名 from IP地址 port 端口号 ssh2
Received disconnect from IP地址 port 端口号:11: Bye Bye [preauth]
Disconnected from invalid user 用户名 IP地址 port 端口号 [preauth]
由于防火墙没有配置仅开放特定的端口和源地址,单纯的禁止root远程登录或修改默认端口,虽然能有效的防止尝试成功,但是总是被访问也很烦人。
虽然访问量不是特别大,但是在某些情况下,特别是服务器负载非常高的时候,也会形成被DDOS的效果,例如在某些服务构建了大量的磁盘IO的时候,可能出现了和sssd_nss争抢CPU资源的情况,然后nss被watchdog干掉,然后服务器卡死。
P.S. 上面这段是瞎猜的,可以略过。系统为什么死了不太清除,云服务器控制台显示磁盘IO繁忙100%了,可能是其他服务导致的,因为之前sssd_nss也被watchdog干掉过几次,都没出现问题。
Child [442357] ('nss':'nss') was terminated by own WATCHDOG. Consult corresponding logs to figure out the reason.
正文:
创建路径和拒绝IP列表的文件
mkdir sshPrevent
cd sshPrevent
touch ipblack.list
创建shell脚本
vim sshPrevent.sh
编辑脚本内容