我需要有关iptables的帮助。当我使用命令iptables -L
时,我有以下iptables规则Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT icmp -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh
Chain FORWARD (policy DROP)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain MYSSH (0 references)
target prot opt source destination
现在我想在我的过滤表的INPUT
链中添加一条规则,将所有ssh流量发送到MYSSH
链。我必须确保此新规则遵循(而不是先于)RELATED,ESTABLISHED
规则,因此它不适用于现有连接!
我试过了:
iptables -I INPUT 1 -p tcp -m MYSSH --dport 22 -j ACCEPT
但这不起作用。你能告诉我怎么做吗?
答案 0 :(得分:-1)
这对超级用户来说是一个问题,但没关系。我今天有管理员帽子。 :P
主要的是,您可以将您的链用作ACCEPT
,REJECT
或DROP
等目标,因此您希望将其作为-j
选项传递,即
iptables -A INPUT -p tcp --dport 22 -j MYSSH
会附加一条规则,将通过MYSSH
链到端口22的所有TCP流量通过管道传输到INPUT
链。
另一个问题是在何处插入此规则。通常,当我手动执行此类操作时(这些天我通常使用shorewall因为它更容易维护),我只使用iptables -A
命令并按正确的顺序运行它们。在您的情况下,看起来好像您想要将它作为第二个或第三个规则插入,然后再加入
ACCEPT all -- anywhere anywhere
规则(虽然可能有一些额外的条件,iptables -L
在没有-v
的情况下不会显示;我无法知道)。然后我们正在查看
iptables -I INPUT 2 -p tcp --dport 22 -j MYSSH
或
iptables -I INPUT 3 -p tcp --dport 22 -j MYSSH
取决于你想要的地方。
顺便说一句,请注意,如果这个包罗万象的规则没有我没有看到的附加条件,那么它下面的规则永远不会达到。