以下是我的命令的输出iptables-save
。最后一条规则和默认策略是丢弃任何不匹配的数据包。
Generated by iptables-save v1.4.9 on Wed Aug 3 21:00:05 2011
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [76:6239]
-A INPUT -p -m tcp --dport 8080 -j ACCEPT
-A INPUT -p -m tcp --dport 2222 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -j DROP
但令人惊讶的是,DHCP 和其他所有流量都能够通过...请告知如何仅允许端口 8080 和端口 2222 上的连接并放弃其他所有连接。
正在机器上设置 iptables 规则FedoraRouter
。并且该FedoraRouter
机器分别在端口 8080 和 2222 上运行 Apache 和 SSH。
客户端FedoraClient
只WinXP-Client
需要访问这些服务。我无法通过 IP 阻止它们,因为我将来会添加更多计算机,一般来说,除 HTTP 和 SSH 流量之外的任何流量都需要丢弃。
根据当前设置 - 它允许 DHCP 数据包到达路由器,路由器实际上正在运行 DHCP 并且我需要阻止它。
谢谢!
答案1
ISC dhcpd, 为了各种相当烦人的原因使用原始套接字执行网络 I/O。对于其他技术原因,原始套接字绕过iptables
处理(包括不适当命名的raw
表),这使得当防火墙和主机在同一台机器上时,iptables 无法有效过滤 DHCP 服务器流量。
您可以在此处阅读有关原始套接字的信息http://www.linuxchix.org/content/courses/security/raw_sockets。
DHCP 流量无论如何都会被广播,并且很难针对每个客户端进行阻止。那么为什么不直接关闭 dhcpd 守护进程呢?