我的ISP路由器的内部有三个设备:
ISP router 128.128.43.1 Firewall router 128.128.43.2 Server 128.128.43.3
防火墙路由器后面是使用192.168.100.n / 24的NATnetworking
这个问题是关于服务器上运行的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服务器受到攻击。 我现在知道正确的规则是使用防火墙路由器的地址而不是内部networking,但任何人都可以解释为什么第一个规则允许全局访问? 我会预料它会失败。
完整的configuration,大部分是从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
谁能解释为什么第一条规则允许全球接入?
第一个规则允许全局访问,因为你接受来自192.168.100.0/24的NEW连接。 虽然isp路由器192.168.43.1不适合这个范围,但是看起来你的默认策略是ACCEPT,所以有效地,你允许来自整个互联网的NEW连接。
第二条规则,服务器只允许128.128.43.2/32的NEW conns,因为第二行,默认的REJECT隐含
-A Firewall-1-INPUT -j REJECT –reject-with icmp-host-prohibited“
这意味着只有这一个IP才能build立新的连接。
另一种做法是实现一个明确的默认DROP,而不是隐式地作为规则链的一部分
-Pinput丢弃
DROP和REJECT之间的差异是显着的,因为DROP将默默地丢弃所有的数据包,但是REJECT会告诉远程用户“否”。 这可以被聪明的黑客利用来发现你的设备。 DROP更好。
我想你一直在做结论。 正如它所说的那样,您规定允许来自192.168.100.0/24连接。 如果您的防火墙configuration为连接到服务器的NAT连接,就像连接到Internet的其他部分,则您的第一个规则不会与来自LAN的连接相匹配。
这是不是意味着你无意中允许别人的联系? 可能不会,但是我们也不能说这个问题是否定的。 为了让某人通过使用允许来自192.168.100.0/24stream量的防火墙规则连接到您的服务器,他们必须能够使用该范围内的源IP向您的服务器发送数据包。 他们还必须接收发送回192.168.100.0/24数据包,否则它们将完全失效,需要猜测32位的序列号。 在你的设置中,到这个IP地址范围的数据包很可能会把默认路由返回给你的ISP。
如果来自不同ISP的人尝试使用192.168.100.0/24范围内的源IP连接到您的服务器,那么从他们到您服务器的路由中至less有三个地方应该过滤源范围。 而且不会有回到他们的路线。 所有这些障碍,我不相信是发生了什么事情。
有人使用相同的ISP将有更好的机会。 如果来自ISP的路由器将192.168.100.0/24视为直接连接到其外部接口,则该链路上的任何其他客户都可能已连接到您的服务器。 但是,这将是一个非常有针对性的攻击。
所有考虑的事情,我会说有很多更可能的攻击媒介比由于这个规则允许的连接。 更可能的攻击媒介之一是有人打开浏览器在服务器上的安全漏洞,并进入一个网页,恰巧是托pipe恶意软件。
如果你想知道妥协是如何发生的,你首先需要提供你有关妥协性质的证据。 你是怎么知道它已经被破坏的?