iptables:通过源端口过滤是否危险?

iptables:通过源端口过滤是否危险?

我想运行无状态防火墙设置,目前有以下规则:

#Do not track any packet
*raw
:PREROUTING ACCEPT [0:0]
-A PREROUTING -j NOTRACK
COMMIT

#Actual firewall rules
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -p udp --sport 53 -j ACCEPT
-A INPUT -m multiport -p tcp --sport 80,443 -j ACCEPT
COMMIT

现在我的问题是,只要攻击者从他的计算机通过源端口 80、443 或 53 建立连接,他是否就能远程访问我服务器上的任何服务?

答案1

这些规则将允许任何传入数据包,只要其原始端口是 53 (UDP)、80 (TCP) 或 443 (TCP)。无论目标端口是什么。因此,您的机器已为这些数据包打开所有端口。答案是是的

常见的iptables配置将根据目标端口进行过滤:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

更新:正如您所注意到的,它使用状态机。没有它,防火墙就无法跟踪已建立的 TCP 连接。从侦听套接字获取连接后,服务器会将目标端口(例如 80)更改为其他端口。

相关内容