将服务器与同一子网上的其他主机隔离

将服务器与同一子网上的其他主机隔离

我有一台服务器,由于某些原因,我不想与同一子网上的任何其他服务器进行通信或查看它,但我仍然需要任何人都可以访问它上面的 HTTP 服务器(已经从服务器为任何地方打开了 443)

简而言之,任何人都可以访问 Web 服务器(即使在我们的网络之外),但服务器本身无法看到同一网络上的任何其他服务器。有没有办法做到这一点,而无需为该服务器创建另一个 VLAN?在这种情况下,ACL 规则是一个不错的选择吗?谢谢。

答案1

假设您的以太网设备是 eth0,您可能可以使用类似下面的方法(其中一些可能是多余的,并且尚未经过测试,因此可能需要进行一些调整/调试)

  # Because we are inserting chains into the beginning, this file is read in reverse order.  This means we don't need to worry about other rules, these will take priority.
  # Drop outgoing packets we don't specifically allow
  /sbin/iptables -I OUTPUT -j DROP 

  # Allow ourselves to make DNS requests and other outbound requsts.  You might want to add other stuff like SSH
  /sbin/iptables -I OUTPUT -p udp --dport 53 -j ACCEPT
  /sbin/iptables -I OUTPUT -p tcp --dport 53 -j ACCEPT

  # Allow incoming requests to web server to be answered. The magic is because we are responding, so we use source port.
  /sbin/iptables -I OUTPUT -p tcp --sport 443 -j ACCEPT
  /sbin/iptables -I OUTPUT -p tcp --sport 80 -j ACCEPT

 # We may or may not need to specify we want other traffic to be dropped.
 # This is probably not required but will explicitly prevent outgoing requests on port 443 and 80 (because its dport we know they are outgoing rather then incoming)
  /sbin/iptables -I OUTPUT -p tcp --dport 443 -J DROP
  /sbin/iptables -I OUTPUT -p tcp --dport 443 -J DROP

答案2

您可以添加防火墙规则,以将此服务器与此子网上的所有其他服务器隔离。假设您有子网

IP Address: 192.168.1.0
Network Address:    192.168.1.0
Usable Host IP Range:   192.168.1.1 - 192.168.1.254
Broadcast Address:  192.168.1.255
Total Number of Hosts:  256
Number of Usable Hosts: 254
Subnet Mask:    255.255.255.0 

假设您想要的服务器托管在上面192.168.1.7,并且您希望它无法访问同一子网中的所有其他主机。我假设您有防火墙的 ip 表

# Allow traffic locally on the server

iptables -I INPUT -s 127.0.0.1 -j ACCEPT

# Block all OTHER traffic that does not meet  condition above

 iptables -P INPUT DROP

如果您使用 AWS 或其他云解决方案,那么您可以使用自己的防火墙。

相关内容