我尝试在我的脚本中允许传出 SSH,但是当我测试它时,它没有反应。
我通过以下方式实现:iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT
传入 SSH 工作正常,我也在做同样的事情,但只是
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
是不是因为我只允许icoming建立的连接?:
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
答案1
正如你所说。你发出的 SSH 的回复将是从端口 22,而不是到端口 22,而是初始传出连接时选择的随机端口。因此不会匹配任何规则。我想您有一个默认的 DROP 策略,否则就不会出现这个问题。
只需将相同的规则添加到 OUTPUT 链即可:
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
该规则通过使用 conntrack 自动允许反向流动,使防火墙变为“有状态”。