我需要阻止从我的专用网络外部访问我的服务器。
我需要只允许从我的服务器发出的 ping 到我的专用网络,并应答从我的专用网络发起的 ping。
但根据我设置的这些规则,它不起作用,因为它阻止我进行 ping 操作,并且我的服务器不会应答从我的专用网络发起的 ping 操作。
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 0 -s 0/0 -d 192.168.1.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -j REJECT
iptables -A OUTPUT -p icmp --icmp-type 8 -s 192.168.1.0/24 -d 0/0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j REJECT
答案1
考虑使用 DROP 而不是 REJECT。
链有一个策略,规定不匹配任何规则的数据包应该发生什么,使用它而不是最终规则。
这些规则不会让 SSH 工作,因为您只在 INPUT 链中提到它,并且流量是双向流动的。
内核的连接跟踪足够好,我建议在输入和输出中都使用“-m state --state ESTABLISHED,RELATED -j ACCEPT”规则。那么在添加新规则时只需要考虑谁发起连接即可。