如何设置防火墙规则以允许白名单 IP 通过 eth0 进行通信

如何设置防火墙规则以允许白名单 IP 通过 eth0 进行通信

我必须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

  1. iptables 规则从上到下进行处理,并-A附加到底部。如果你从匹配的 DROP 规则开始一切,那么这些数据包确实会被立即丢弃——它们永远不会经过后续的 ACCEPT。

    因此,请确保您的规则以正确的顺序添加 – 接受特定的事情默认-删除所有内容。(如果需要,使用-I在链的顶部而不是底部插入规则。)

    (但是一旦您有了最终确定的规则集,请使用 iptables-save 和 iptables-restore 一次保存/加载整个规则集;此时不要使用脚本。)

  2. FTP 使用的不仅仅是端口 21,它还使用单独的数据连接,这些连接(在被动模式下)也是进入服务器的,但在不同的随机端口上。您需要为 FTP 服务器配置特定的端口范围,并为其设置 iptables ACCEPT 规则,此外至端口 21。

相关内容