在 CentOS 上设置 iptables

在 CentOS 上设置 iptables

首先,这里是我想要使用 IP 表执行的操作的列表。

  • 接受 TCP 端口 80 上的所有 IP
  • 接受 TCP 端口 443 上的所有 IP
  • 通过 tcp 端口 SSH_PORT 接受来自我的 ip 的请求

我还希望其他一切都安全且正常运行,例如:能够使用 wget。

以下是我所创建的。

# Accept tcp packets on destination port 80
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# Accept tcp packets on destination port 443
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# Accept from specific ip on ssh
iptables -A INPUT -p tcp -s 192.XXX.XX.XX/32 --dport SSHPORT -j ACCEPT

# Accept all icmp traffic
iptables -A INPUT -p icmp -j ACCEPT

# Accept established tcp traffic on the specified ports
iptables -A INPUT -m state --state ESTABLISHED --dport 32768:65535 -j ACCEPT


# Drop eveything else
iptables -P INPUT DROP
iptables -P FORWARD DROP

# Allow all output
iptables -P OUTPUT ACCEPT

答案1

假设你的意思是这一行,那么你似乎错过了 DNS 流量:

# Accept established tcp traffic on the specified ports

因为您似乎允许所有流量。您应该在该行添加 -p tcp。

您将需要回送流量……其余的可能取决于个人喜好。例如,我不喜欢允许所有 icmp 流量进入。

这还取决于这台机器的用途。您可以决定是否需要完全允许 ​​UDP(DNS 除外)?如果不需要,则将 -p tcp 添加到输出并建立连接行。

我也不允许所有输出流量。但既然您不介意,这里是我建议的配置/修改:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]

# Allow ping and ICMP error returns.
-A INPUT -p icmp -m state --state NEW --icmp-type 8 -j ACCEPT
-A INPUT -p icmp -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -p icmp -j ACCEPT

# Allow loopback (lo) traffic
 -A INPUT -i lo -j ACCEPT
 -A OUTPUT -o lo -j ACCEPT

## ------ DNS (UDP 53. 443 if you use DNSCrypt) -------------
-A INPUT   -p udp    -m multiport --sports 53,443  -m state --state ESTABLISHED,RELATED  -j ACCEPT
-A OUTPUT  -p udp    -m multiport --dports 53,443 -m state --state NEW,ESTABLISHED,RELATED  -j ACCEPT

# ------- web INPUT ----------
-A INPUT   -p tcp   -m multiport --dports 80,443  -m state  --state NEW,ESTABLISHED  -j ACCEPT

#---- SSH input
# Accept from specific ip on ssh---
-A INPUT -p tcp -s 192.XXX.XX.XX/32 --dport SSHPORT -j ACCEPT

# Accept established tcp traffic on the specified ports
-A INPUT -m state --state ESTABLISHED --dport 32768:65535 -j ACCEPT

# Drop eveything else
 -A INPUT DROP
 -A FORWARD DROP

# Allow all output
 -A OUTPUT ACCEPT

COMMIT

相关内容