我必须eth0
在 Linux 设备启动期间为我的板载网络(用于通过接口连接的设备列表)设置防火墙规则。
默认情况下,FTP 访问eth0
应被禁用。
然后读取配置文件(conf.xml
),其中包含仅允许进行通信的 IP 地址或 URL 或端口,这意味着只有白名单设备可以进行通信。
我已经按照以下方式完成了它,但它没有按预期工作
例如。conf.xml
使用以下命令启用配置文件 ( ) 中提到的特定 IP 的 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
然后在脚本末尾添加以下两行,用于默认 - 禁用eth0
通信:
iptables -A INPUT -i eth0 -j DROP
iptables -A OUTPUT -o eth0 -j DROP
但我看到eth0
通信被永久禁用,甚至不允许 ipaddress10.10.10.10
访问 FTP 服务器。
答案1
您的示例中特定主机的白名单 FTP 包含拼写错误(可能)。iptables -A INPUT -p tcp -s 10.10.10.10 --dport 21 -i eth0 -j ACCEPT
如果您打算允许从主机 10.10.10.10 连接到您计算机上的某些 FTP 守护程序,则允许传入流量(规则)似乎没问题。第二条规则 ( iptables -A OUTPUT -p tcp -s 10.10.10.10 --dport 21 -o eth0 -j ACCEPT
) 可能应该允许目标(而非源)主机(它应该声明-d
而不是-s
)。
只是提一下...链中的最后一条规则iptables -A ... -j DROP
意味着所有通信(与之前的规则不匹配)都被禁用,而不仅仅是 FTP。