我正在锁定入站和出站端口
iptables -P INPUT DROP
iptables -P OUTPUT DROP
然后我允许某些流量到某些服务器
- 从我的网络通过 SSH 连接到服务器(入站)
- 从服务器到另一台服务器的 8080 端口上的 HTTP 请求(出站)
iptables -A INPUT -p tcp -s <my_ip> --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp -d <server_ip> --dport 8080 -j ACCEPT
我注意到上述规则和执行 HTTP 请求时存在一些问题,因此我添加了
iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -I OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
对于 DNS,我随后添加了:
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
但是,nslookup
不起作用:
nslookup google.com
最终起作用的是还允许端口 53 入站流量:
iptables -A INPUT -p udp --dport 53 -j ACCEPT
总的来说,这些是我的命令:
1. iptables -A INPUT -p tcp -s <my_ip> --dport 22 -j ACCEPT
2. iptables -A OUTPUT -p tcp -d <my_server> --dport 8080 -j ACCEPT
3. iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
4. iptables -A INPUT -p udp --dport 53 -j ACCEPT
3. iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
4. iptables -I OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
5. iptables -P INPUT DROP
6. iptables -P OUTPUT DROP
我的问题是:我想尽可能地锁定服务器。我不认为我需要打开 UDP 入站。我知道 UDP 是无状态的等等。但我通常不需要打开任何入站来使 DNS 正常工作,无论是在防火墙上还是在我的 Windows 机器上。
我做错了什么吗,我需要端口 53 入站?