我有一个 OpenWrt 10.03 路由器 [ IP: 192.168.1.1 ],它有一个 DHCP 服务器池:192.168.1.0/24 - 客户端通过无线/有线连接使用它。好的!
问题是:我需要将用户彼此分开。
我需要如何做到这一点:通过 IPTABLES 规则 [ /etc/firewall.user ]。
好的!
“大声思考”:所以我需要一个类似这样的规则[在OpenWrt路由器上]:
- DROP where SOURCE: 192.168.1.2-192.168.1.255 and DESTINATION is 192.168.1.2-192.168.1.255
这个想法是这样的。好的!
问题!
- 如果我应用此防火墙规则,我会锁定自己吗?
- 这是一种安全的方法吗? [这个容易吗?:你好,我是客户,我说,我的IP地址是192.168.1.1! - 现在它可以嗅探未加密的流量! :( - 因为所有客户端都在同一个子网中!]
- 有什么好的方法来查找/审核重复的 IP 地址吗?
- 有什么好的方法来查找/审核重复的 MAC 地址吗?
- 有什么好的方法吗?在 Layer2 上执行此 IPTALBES 规则?:
$ wget -q "http://downloads.openwrt.org/backfire/10.03/ar71xx/packages/" -O - | grep -i ebtables
$
ps:规则将是[它在一条好的链上吗?]:iptables -A FORWARD -m iprange --src-range 192.168.1.2-192.168.1.255 --dst-range 192.168.1.2-192.168.1.255 -j DROP
谢谢!
答案1
如果你想将无线和有线用户分开,为什么不匹配接口呢?假设 ppp0 面向互联网,eth0 是您的本地 LAN,wlan0 是无线:
iptables -P FORWARD DROP # Drop everything except:
iptables -A FORWARD -m state --state RELATED,ESTABLISHED # Accept already accepted connections
iptables -A FORWARD -i eth0 -o ppp0 -j ACCEPT # Accept outgoing connections from local LAN
iptables -A FORWARD -i wlan0 -o ppp0 -j ACCEPT # Accept outgonig connnections from wlan
如果你使用这个:
- 无法从互联网连接任何东西
- 无线用户只能连接到互联网
- 有线用户只能连接互联网
- 如果添加以下内容,您可以强制实施单独的 IP 范围
--src-range
如果您的 DHCP 服务器在 OpenWrt 设备上运行,那么 FORWARD 链不会以任何方式影响它。允许 DHCP 服务器使用
iptables -P INPUT DROP # Drop everything except:
iptables -A INPUT -m state --state RELATED,ESTABLISHED # Accept already accepted connections
iptables -A INPUT ! -i ppp0 -p tcp --dport 22 -j ACCEPT # Don't forget SSH
iptables -A INPUT ! -i ppp0 -p udp --sport 68 --dport 67 # Accept DHCP requests from any local network
我通常允许 OUTPUT 中的所有内容,除了少数类型的 ICMP 和垃圾邮件。但您可能更喜欢更安全的默认 DROP,因此具体规则如下:
iptables -P OUTPUT DROP # Drop everything except:
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT ! -o ppp0 -p udp --sport 67 --dport 68 -j ACCEPT # Allow DHCP to the local network
这对于不应该连接到所有东西的路由器来说更有意义。
根据我的经验,我建议不要进行 MAC 过滤,它不会增加安全性,只会带来不便。但如果你想看:
iptables -m mac --help
记录 MAC 地址可能很有用,但它们很容易伪造。只需在 ACCEPT 规则之前添加-j LOG
或-j NFLOG
即可,匹配规则相同。
由于您正在配置一台只能通过网络访问的计算机,因此您应该非常小心,不要将自己锁定在外面。您不能只是走到它那里并手动删除规则。特别是iptables -P INPUT DROP
使用空的 INPUT 链输入将会终止你的 SSH 会话。我建议使用iptables-save
andiptables-restore
并将规则写入配置文件中。如果您可以在路由器上尝试之前在带有键盘和显示器的计算机上测试规则,这也会有所帮助。