Dis*_*tum 3 linux iptables centos centos6.4
在 Centos 6.4 上,我想阻止除 22、80 和 443 之外的所有传入端口。80(外部)应该重定向到 8080(内部)。443(外部)应该重定向到 8181(内部)。我使用了以下命令:
service iptables stop
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8181
service iptables save
service iptables restart
Run Code Online (Sandbox Code Playgroud)
但是,我仍然可以访问端口 8080 和 8181。有没有办法从外部阻止端口 8080 和 8181,并且仍然在内部打开以从 80 和 443 重定向?
您的规则中没有任何内容会丢弃任何数据包。您可以通过将INPUT
链的默认策略设置为 来完成此操作DROP
。默认情况下它是ACCEPT
:
iptables -P INPUT DROP
Run Code Online (Sandbox Code Playgroud)
当您这样做时,您可能会开始注意到您的传出连接不再有效。
您可以将INPUT
链顶部的规则添加到ACCEPT
已经建立的流量中。
使用以下方法执行此操作:
iptables -A INPUT -m state --state ESTABLISHED,RELATED
Run Code Online (Sandbox Code Playgroud)
该RELATED
部分允许其他相关流量通过(例如,由于ESTABLISHED
连接中发生的事情而发送的 ICMP 数据包)