我的 ISP 路由器的内部有三个设备:
ISP router 128.128.43.1
Firewall router 128.128.43.2
Server 128.128.43.3
防火墙路由器后面是使用 192.168.100.n/24 的 NAT 网络
这个问题与服务器上运行的 iptables 有关。我想仅允许防火墙路由器后面的 NAT 客户端访问端口 8080,因此我使用了此规则
-A Firewall-1-INPUT -s 192.168.100.0/24 -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
这有效,但意外地允许了全局访问,导致我们的 JBOSS 服务器受到攻击。我现在知道正确的规则是使用防火墙路由器的地址而不是内部网络,但有人能解释为什么第一条规则允许全局访问吗?我原本以为它会失败。
完整配置,大部分来自 RedHat 服务器:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:Firewall-1-INPUT - [0:0]
-A INPUT -j Firewall-1-INPUT
-A FORWARD -j Firewall-1-INPUT
-A Firewall-1-INPUT -i lo -j ACCEPT
-A Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A Firewall-1-INPUT -m comment --comment "allow ssh from all"
-A Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A Firewall-1-INPUT -m comment --comment "allow https from all"
-A Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A Firewall-1-INPUT -m comment --comment "allow JBOSS from Firewall"
### THIS RESULTED IN GLOBAL ACCESS TO PORT 8080
### -A Firewall-1-INPUT -s 192.168.100.0/24 -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
### THIS WORKED
-A Firewall-1-INPUT -s 128.128.43.2 -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPt
###
-A Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
答案1
有人能解释为什么第一条规则允许全局访问吗?
第一条规则允许全局访问,因为您接受来自 192.168.100.0/24 的新连接。虽然 ISP 路由器 192.168.43.1 不适合这个范围,但看起来您的默认策略是接受,因此实际上,您允许来自整个互联网的新连接。
第二条规则,服务器只允许来自 128.128.43.2/32 的新连接,因为第二行默认隐式拒绝
-A 防火墙-1-INPUT -j REJECT --reject-with icmp-host-prohibited”
这意味着只有这一个IP可以建立新的连接。
另一种方法是实现显式默认 DROP,而不是隐式地作为规则链的一部分
-P 输入下降
DROP 和 REJECT 之间的区别非常显著,因为 DROP 会默默地丢弃所有数据包,而 REJECT 会告诉远程用户“不”。聪明的黑客可以利用这一点来发现您的设备。DROP 更好。
答案2
我认为您是在妄下结论。192.168.100.0/24
正如规则所述,您的规则允许来自 的连接。如果您的防火墙配置为对到服务器的连接进行 NAT 处理,就像对到 Internet 其余部分的连接进行 NAT 处理一样,那么您的第一条规则将无法匹配来自 LAN 的连接。
这是否意味着您无意中允许了来自其他人的连接?可能不是,但我们也不能明确回答这个问题。为了让某人使用允许来自的流量的防火墙规则连接到您的服务器,他们必须能够192.168.100.0/24
使用源 IP 在该范围内的数据包向您的服务器发送数据包。他们还必须接收您发送回的数据包192.168.100.0/24
,否则他们将完全盲目操作,需要猜测 32 位序列号。在您的设置中,发送到该 IP 地址范围的数据包可能会采用默认路由返回到您的 ISP。
如果来自其他 ISP 的人尝试使用该192.168.100.0/24
范围内的源 IP 连接到您的服务器,则从他们到您的服务器的路由中至少有三个地方应该过滤该源范围。而且不会有返回他们的路由。鉴于所有这些障碍,我不相信会发生这种情况。
与您使用同一 ISP 的人更有可能被攻击。如果 ISP 的路由器被视为192.168.100.0/24
直接连接到其外部接口,则该链路上的任何其他客户都可能连接到您的服务器。但那将是一次极具针对性的攻击。
综合考虑,我认为除了根据该规则允许连接之外,还有很多更可能的攻击媒介。其中一种更可能的攻击媒介是有人在服务器上打开了存在安全漏洞的浏览器,然后访问了恰好托管恶意软件的网页。
如果你想知道入侵是如何发生的,你首先需要提供你掌握的有关入侵性质的证据。你是如何发现它被入侵的?