IPTables 正在我的 Web 服务器上运行。我确实需要 SSH 动态端口转发,但我的 IPTables 会丢弃所有 INPUT/OUPUT 连接,只允许某些端口。
对于FORWARD链,我写了以下规则:
Chain FORWARD (policy ACCEPT)
target prot opt source destination
DROP tcp -- 0.0.0.0/0 0.0.0.0/0 tcpflags:! 0x17/0x02 state NEW
ACCEPT all -f 0.0.0.0/0 0.0.0.0/0 limit: avg 100/sec burst 100
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 limit: avg 2/sec burst 10
DROP all -- 0.0.0.0/0 0.0.0.0/0 state INVALID
我的规则可以阻止任何 SSH 动态端口转发连接。
我需要写什么规则?不要告诉我“禁用 IPTables”,我需要防火墙来防止破解者。
答案1
我猜测 Web 服务器的 INPUT 链已经允许 ssh,请原谅我问这个显而易见的问题。
现在,对于动态 (-D) 隧道,您还需要启用从 Web 服务器(任何本地端口)到所需远程主机及其端口的输出。远程是指您希望通过动态隧道实际连接的主机。
因此,如果您计划使用隧道连接到端口 443 上的主机 1.2.3.4,那么您需要在 Web 服务器上允许从任何端口到 1.2.3.4:443 的输出。
FORWARD 链在这里完全不相关。
答案2
只是为了澄清@kubanczyk的回答,FORWARD链是不相关的,因为它只适用于发往应路由的本地主机以外的地址的传入数据包通过本地主机。由于 ssh 守护进程正在 tcp/22 上接受连接(INPUT 链),然后代表客户端发起连接(OUTPUT 链)(由于 -D),因此不会发生数据包转发。