在服务器的日常运维工作中,端口扫描与SSH暴力破解攻击屡见不鲜。利用CentOS系统自带的iptables防火墙进行访问控制,是抵御此类威胁最直接有效的方法之一。本文将演示如何快速找出当天试图登录但失败的所有IP地址,并一次性将其封禁。

借助以下一条命令,即可一键封禁所有检测到的恶意IP地址:
for i in `grep "$(date +"%b %d")" /var/log/secure | grep "Failed password" | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr| awk '{print $2}'` ;do iptables -A INPUT -s $i -j DROP; done
实际效果:执行上述命令后,这些IP将被彻底阻断,确保它们无法再骚扰您的SSH服务端口。

下面来详细解析这条命令的执行逻辑:首先,通过grep从/var/log/secure日志文件中筛选出当日所有“Failed password”记录;接着利用awk提取出发起攻击的远程IP地址;然后进行排序、去重并按失败次数降序排列;最后通过循环将每个恶意IP添加至iptables的DROP规则中。整个流程简洁高效,非常适合集成到日常服务器安全巡检脚本中。
