如何阻止任何服务绑定到给定接口?

如何阻止任何服务绑定到给定接口?

我需要设置一个服务器(最好是 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 传输的任何流量所淹没。

相关内容