直接用 iptables -i input -s ip -j drop 可立即生效封禁ip,-i确保规则优先匹配,避免被后续accept绕过;规则仅内存生效,需手动保存防重启丢失。

直接用 iptables -I INPUT -s IP -j DROP 最快生效
临时封一个恶意IP,不需要重启、不依赖服务、不改配置文件,iptables -I INPUT -s 192.168.1.100 -j DROP 这条命令敲完就生效。注意用 -I(Insert)而不是 -A(Append):它把规则插在最前面,确保优先匹配,避免被后面的 ACCEPT 规则绕过。
常见错误现象:
- 用了
-A却发现封不住——可能已有更靠前的ACCEPT规则(比如已允许所有 ESTABLISHED 连接) - 封了之后自己也连不上——没确认当前操作 IP 是否被误伤,也没留白名单出口
- 重启服务器后规则消失——
iptables规则是内存态的,必须手动保存
实操建议:
- 封之前先确认自己不在目标 IP 范围内,或提前加一条白名单:
iptables -I INPUT -s your_admin_ip -j ACCEPT - 封完立刻验证:
iptables -L INPUT -n --line-numbers,看新规则是否出现在第 1 行 - 别只封
INPUT,如果该 IP 还在反向连接你(比如反弹 shell),顺手加一条:iptables -I OUTPUT -d 192.168.1.100 -j DROP
删规则别只靠行号,iptables -D INPUT -s IP -j DROP 更可靠
查规则时看到 num 是 3,就以为 iptables -D INPUT 3 能删掉?不一定。规则顺序会随增删动态变化,刚查完的编号可能下一秒就变了。直接按规则内容删除更稳。
实操建议:
- 先用
iptables -L INPUT -n确认规则存在且格式一致(比如是否带-p tcp或端口限制) - 执行
iptables -D INPUT -s 192.168.1.100 -j DROP——只要规则完全匹配,就能精准删除 - 如果提示
No chain/target/match by that name,说明规则不存在或字段不一致(比如当初用了REJECT而不是DROP) - 不确定时,宁可清空 INPUT 链重来:
iptables -F INPUT,但务必先备份:iptables-save > /tmp/iptables.bak
封大量 IP 别硬写几百条 iptables,改用 ipset
要封 500 个散列 IP(比如来自日志提取的攻击源),逐条 iptables -I INPUT -s x.x.x.x -j DROP 不仅慢,还会拖慢包匹配性能——每进一个包都要遍历全部规则。
ipset 把这些 IP 存成哈希表,iptables 只需一条规则匹配整个集合:
ipset create badips hash:net ipset add badips 192.168.1.100 ipset add badips 203.0.113.44 iptables -I INPUT -m set --match-set badips src -j DROP
实操建议:
- 安装:
apt install ipset(Debian/Ubuntu)或yum install ipset(CentOS/RHEL) - 类型选
hash:net(支持 CIDR)或hash:ip(纯单 IP),别用list:set(性能差) - 规则持久化:仅
ipset save不够,还要在系统启动时加载(如 systemd service 或/etc/network/if-up.d/脚本) - 别把
ipset当日志分析工具——它不自动更新,得配合脚本定期从auth.log提取并ipset add
封完别忘保存,否则重启全丢
iptables 规则默认只在内存里,关机或重启后自动清空。不同发行版保存方式不同,错用会导致“明明封好了,重启后又被打爆”。
实操建议:
- Debian/Ubuntu:
iptables-save > /etc/iptables/rules.v4(需先装iptables-persistent) - RHEL/CentOS 7:
service iptables save(要求iptables-services包已安装) - RHEL/CentOS 8+ 或新版 Ubuntu:默认用
nftables,iptables命令只是兼容层,保存应走nft list ruleset > /etc/nftables.conf - 更稳妥的做法:封完立即执行保存命令,再跑一次
iptables-restore 确认能 reload 成功
真正容易被忽略的是:云服务器(AWS/Azure/阿里云)的安全组和底层 iptables 是两套机制,封了 iptables 不代表安全组放行策略失效;生产环境建议优先配安全组,iptables 作补充。











