我确信这主要是我对 iptables 工作原理的误解,但我已经设置了一些规则......
-A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED -j ACCEPT
-A OUTPUT -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED -j ACCEPT
我的 iptables -L -n -v 输出是:
Chain INPUT (policy ACCEPT 603K packets, 272M bytes)
pkts bytes target prot opt in out source destination
19382 1874K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 state NEW,ESTABLISHED
1241K 205M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport dports 80,443 state NEW,ESTABLISHED
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 628K packets, 120M bytes)
pkts bytes target prot opt in out source destination
22575 3769K ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:22 state ESTABLISHED
1085K 888M ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 multiport sports 80,443 state ESTABLISHED
不幸的是,在这种设置下,FTP 等连接仍然可以连接。我希望这些规则成为唯一可用的连接选项。换句话说,基本上拒绝除通过 SSH 和常见 Web 服务器端口进行的访问之外的任何访问。
我该如何修改设置来完成这种配置?
答案1
您需要将默认策略更改为其他策略ACCEPT
,或者需要添加规则来阻止数据包。(请参阅命令iptables -P
。)
如果到达内置链的末尾或匹配内置链中具有目标 RETURN 的规则,则链策略指定的目标将决定数据包的命运。
确保您有其他方式来访问机器,以防在更改链策略或添加广泛的规则来阻止数据包时出现问题。