我必须eth0
在 Linux 设备启动期间为我的板载网络(通过接口连接的设备列表)设置防火墙规则。
默认情况下,所有通信eth0
都应被禁用。
然后读取配置文件(conf.xml
),其中包含 ipaddress 或 URL 或端口,这些只允许进行通信,意味着只有白名单设备才能进行通信。
我已经按照以下方式完成了但它没有按预期工作
默认 - 禁用eth0
通信使用
sudo iptables -A INPUT -i eth0 -j DROP
然后例如conf.xml
使用以下命令为配置文件中提到的特定 IP 启用 FTP 访问()
iptables -A INPUT -p tcp -s 10.10.10.10 --dport 21 -j ACCEPT
但我发现eth0
通信被永久禁用,甚至不允许 ipaddress10.10.10.10
访问 FTP 服务器。
编辑:根据答案我修改了脚本如下
在开始处添加以下两行
iptables -A INPUT -p tcp -s 10.10.10.10 --dport 21 -i eth0 -j ACCEPT
iptables -A OUTPUT -p tcp -s 10.10.10.10 --dport 21 -o eth0 -j ACCEPT
然后在脚本末尾添加以下两行
iptables -A INPUT -i eth0 -j DROP
iptables -A OUTPUT -o eth0 -j DROP
我仍然面临使用 IP 访问 FTP 的问题iptables -A INPUT -i eth0 -j DROP
答案1
iptables 规则从上到下进行处理,并
-A
附加到底部。如果你从匹配的 DROP 规则开始一切,那么这些数据包确实会被立即丢弃——它们永远不会经过后续的 ACCEPT。因此,请确保您的规则以正确的顺序添加 – 接受特定的事情前默认-删除所有内容。(如果需要,使用
-I
在链的顶部而不是底部插入规则。)(但是一旦您有了最终确定的规则集,请使用 iptables-save 和 iptables-restore 一次保存/加载整个规则集;此时不要使用脚本。)
FTP 使用的不仅仅是端口 21,它还使用单独的数据连接,这些连接(在被动模式下)也是进入服务器的,但在不同的随机端口上。您需要为 FTP 服务器配置特定的端口范围,并为其设置 iptables ACCEPT 规则,此外至端口 21。