我想在节点内部的 iptables 上制定一组规则,但似乎 iptables 没有附加所有规则,或者不知何故每次我运行以下脚本时都会将我踢出(我在其他服务器中使用这组规则并且运行良好):
# Allow connections that are already connected to your server
iptables -A INPUT -i venet0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow connections to SSH
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
# Allowing connections to HTTP/HTTPS
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT
# Allow icmp input but limit it to 10/sec
iptables -A INPUT -p icmp -m limit --limit 10/second -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
# Allow all incoming traffic from local
iptables -A INPUT -i lo -j ACCEPT
# Changing the default policy for INPUT chain
iptables -A INPUT -j DROP
我发现的问题(我猜)是最后一行(DROP anything)被解释为 1,这就是服务器将我踢出的原因。
我已经更改了 vz 的配置:
IPTABLES_MODULES="ipt_REJECT ipt_tos ipt_limit ipt_multiport iptable_filter iptable_mangle ipt_TCPMSS ipt_tcpmss ipt_ttl ipt_length ipt_state xt_state ip_conntrack"
任何帮助都将不胜感激。
谢谢。
答案1
我发现 OpenVZ 和使用“ESTABLISHED,RELATED”存在更多问题。遗憾的是,我无法找到如何修复 OpenVZ 安装的方法,因为出于某种原因,这些安装不允许在容器中使用有状态 iptables。
但是,有了相当简单的 IPTable 规则,您真的需要它们有状态吗?我认为下面的方法同样有效:
# Allow connections to SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Allowing connections to HTTP/HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# Allow icmp input but limit it to 10/sec
iptables -A INPUT -p icmp -m limit --limit 10/second -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
# Allow all incoming traffic from local
iptables -A INPUT -i lo -j ACCEPT
# Changing the default policy for INPUT chain
iptables -A INPUT -j DROP