我想允许人们连接到端口 22、80 和 443。此外,我希望能够从我的服务器执行 DNS 查找。
这是我正在尝试的:
iptables -A INPUT -m tcp -p tcp --dport 1 -j ACCEPT
iptables -A INPUT -m udp -p udp --dport 1 -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -m udp -p udp --dport 53 -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -m udp -p udp --dport 80 -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -m udp -p udp --dport 443 -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -m udp -p udp --dport 22 -j ACCEPT
iptables -A INPUT -m tcp -p tcp -j REJECT
iptables -A INPUT -m udp -p udp -j REJECT
iptables -A OUTPUT -m tcp -p tcp -j ACCEPT
iptables -A OUTPUT -m udp -p udp -j ACCEPT
iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:tcpmux
ACCEPT udp -- anywhere anywhere udp dpt:1
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT udp -- anywhere anywhere udp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:https
ACCEPT udp -- anywhere anywhere udp dpt:https
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT udp -- anywhere anywhere udp dpt:ssh
REJECT tcp -- anywhere anywhere tcp reject-with icmp-port-unreachable
REJECT udp -- anywhere anywhere udp reject-with icmp-port-unreachable
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp
ACCEPT udp -- anywhere anywhere udp
如果我省略这几行:
iptables -A INPUT -m tcp -p tcp -j REJECT
iptables -A INPUT -m udp -p udp -j REJECT
我可以 ping 出去,但默认情况下我并没有关闭所有端口,而这正是我的目的。为什么 INPUT 规则会影响我执行主机名查找的能力(例如从我的服务器“ping google.com”?)
答案1
您需要再次允许相关流量(即:回复您的传出 DNS 流量)。此外,您可能希望使用默认丢弃而不是特定的拒绝所有规则来节省一些空间。
iptables -A 输入 -p tcp -m 多端口 --dports 22,80,443 -j 接受
iptables -A INPUT -m 状态 --状态 RELATED,ESTABLISHED -j ACCEPT
iptables -P 输入删除
您的 OUTPUT 链规则不需要,因为链上目前有一个默认的 ACCEPT,并且端口 53 规则也不需要,因为您没有托管DNS 服务器,仅使用一个,因此流量通过 OUTPUT 链离开,而不是 INPUT 链。
答案2
正如解释的那样这里,您应该允许 ESTABLISHED/RELATED 连接的传入流量,因此只需在开头添加以下规则:
iptables -A INPUT -m 状态 --状态 ESTABLISHED,RELATED -j ACCEPT