我需要设置一个服务器(最好是 RedHat/CentOS/Fedora,但 Debian 系列也可以),但在给定的界面上没有可用的服务。
我无法使用iptables
(这将是最简单的解决方案)。
我可以检查哪些已启用,然后手动禁用它们或强制绑定到另一个接口,但存在更新/升级/附加软件安装后更改将被恢复或部署额外服务的风险。
有没有办法配置网络接口,使其不允许任何服务绑定到它,从而没有端口监听它?
答案1
我想我终于明白了这个问题。我(我想其他人也一样)的主要误解是,我暗示扫描仪在外面某处。
如果您计划将此主机用作扫描仪,那么 iptables 可能会不堪重负。
如果是这样,您需要一些设置来保护主机应用程序,但不要为扫描仪流量创建会话记录。
解决方案很简单:创建一个容器(LXC 或 OpenVZ)并将扫描仪人员隐藏在那里。使用容器与真实网络的桥接连接设置。
因此,您的扫描仪将拥有一个专用 IP 地址,主机应用程序永远不会绑定它。在基本设置中,容器的流量将跳过 iptables。
如果您想要额外保护容器,请打开网桥的 iptable 查找(net.bridge.bridge-nf-call-iptables = 1
在 sysctl.conf 中)并添加如下规则:
-I FORWARD -p ip -s <rogue_network> -d <scanner_ip> -j ACCEPT
-I FORWARD -p ip -s <scanner_ip> -d <rogue_network> -j ACCEPT
-I FORWARD -j REJECT --reject-with icmp-host-unreachable
更新型多巴胺:
上一个无法正常工作 - 忘记禁用连接跟踪:
-t raw -I PREROUTING -p ip -s <rogue_network> -d <scanner_ip> -j NOTRACK
-t raw -I PREROUTING -p ip -s <scanner_ip> -d <rogue_network> -j NOTRACK
-t raw -I PREROUTING -j REJECT --reject-with icmp-host-unreachable
答案2
我不知道有什么方法可以告诉内核不允许绑定到给定的网络接口。你说你会考虑iptables
,所以在我看来,这行
iptables -I INPUT 1 -p tcp -m state --state NEW -j REJECT --reject-with tcp-reset
将产生与不绑定守护进程相同的效果(对于绑定到 TCP 端口的守护进程而言);在这两种情况下,都会发出 TCP 重置。类似地,以下行
iptables -I INPUT 2 -p udp -m state --state NEW -j REJECT --reject-with icmp-port-unreachable
对于没有绑定侦听器的 UDP 端口的新连接将执行相同的操作:在任何一种情况下,内核都会发出 ICMP 端口不可达数据包。
这是一个非常简单的iptables
设置,并且不太可能被通过该 NIC 传输的任何流量所淹没。