应使用iptables -i input -s 203.0.113.45 -j drop插入顶部封禁,确保在accept规则前生效;再用iptables -l input -n | grep 203.0.113.45验证,并按系统保存规则防丢失。

当服务器正遭受高频请求或暴力破解攻击,需要立即阻断某个已确认的恶意IP(如203.0.113.45)时,必须在命令行中快速执行封禁操作,避免攻击持续消耗系统资源。
确认目标IP并检查当前规则
先用 iptables -L INPUT -n --line-numbers 查看 INPUT 链现有规则,确认该 IP 是否已被封禁——若已有同源 DROP 规则,重复添加会导致冗余且影响匹配效率。
观察输出中是否有类似 1 DROP all -- 203.0.113.45 0.0.0.0/0 的条目,【编号为1的规则会最先匹配,优先级最高】。
执行封禁:两种插入方式的区别
方法一:插入到规则链最顶部(推荐)iptables -I INPUT -s 203.0.113.45 -j DROP
这一步操作起来很简单,直接执行即可。因 iptables 规则自上而下匹配,插入顶部能确保该 IP 流量在任何 ACCEPT 规则前就被丢弃,防止被宽松规则放行。
方法二:追加到规则链末尾iptables -A INPUT -s 203.0.113.45 -j DROP
⚠️ 注意:如果链末尾已有 -j ACCEPT 或默认策略为 ACCEPT,该规则将永远不会生效——数据包早已被前面的允许规则放行了。
验证封禁是否实时生效
第一步:检查规则是否写入iptables -L INPUT -n | grep 203.0.113.45
有输出即表示规则存在。
第二步:确认该 IP 已无法建立新连接
从另一台机器执行 telnet 你的服务器IP 22 或 curl -I http://你的服务器IP,应出现超时或拒绝连接;若仍可通,说明封禁未生效,需检查规则位置或是否误用了 OUTPUT 链。
保存规则防止重启丢失
步骤一:判断系统发行版
执行 cat /etc/os-release | grep ID=,区分 Debian/Ubuntu 或 CentOS/RHEL。
步骤二:按系统类型保存
Debian/Ubuntu 系统:运行 iptables-save > /etc/iptables/rules.v4
CentOS 6:运行 service iptables save
CentOS 7:运行 iptables-save > /etc/sysconfig/iptables
【不保存=重启后规则清空,恶意IP将恢复访问】











