我想使用 iptables 在我的系统中添加白名单。所以我在网上搜索并找到了这个:
iptables -I INPUT -s 10.0.0.0/8 -j ACCEPT
iptables -I INPUT -s 127.0.0.1/8 -j ACCEPT
iptables -I INPUT -s 192.168.0.0/16 -j ACCEPT
iptables -P INPUT DROP
确实有效。所以我iptable -F
删除了所有规则,然后我就无法再连接到该服务器了。
怎么了?
删除所有规则的正确方法是什么?
答案1
INPUT 的链策略设置为 DROP。
如果没有任何规则,一切都会被丢弃。
在摧毁所有链之前,确保所有链都有接受的政策iptables -P INPUT ACCEPT
答案2
除了 Olipro 的正确和有用的答案之外,我还想推荐一些东西
避免被防火墙锁定的风险
使用 crontab 绑定脚本,在出现问题时重新打开防火墙;如您所知,您可以在 sshd_config 中犯错误,但只要您仍处于登录状态,错误不会造成实际损害。但 iptables 则不然:一个错误就足以让您出局。因此:
#!/bin/bash
# openFW.sh
IPT=$(which iptables)
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -F
NOW=$(date +"%H:%m")
echo "FW opened on %h at $NOW" | mail -s "FW reset cron job jh1" \
[email protected]
logger "WARNING : iptables flushed and opened by cron job"
并crontab -e
放置类似
#*/5 8-19 * * * /root/scripts/openFW.sh
刷新 iptables 规则并每 5 分钟打开一次 FW。在编辑规则之前取消注释;检查规则(确保它们可用,并且尚未被此 cron 作业刷新);一切正常后,注释掉 flush cron
希望这可以帮助。