|
|
ESTABLISHED,RELATED状态(一个包分为NEW,ESTABLISHED,RELATED,INVALID四种状态)的包,故又不妨碍从本机出去的连接。
由于并不是所有的电脑都可以上网,所以还要对共享上网的电脑做一个限制:
IP限制:
-A FORWARD –s 192.168.2.0/29 –p udp –m multiport –port 53 –j ACCEPT
-A FORWARD –s 192.168.2.0/29 –p tcp –m multiport –port 3128,110,25 –j ACCEPT
-A FORWARD –s 192.168.20.253 –j ACCEPT
|
充许192.168.2.0~192.168.2.7和192.168.20.253(squid server)的电脑可上网和发邮件。3128是squid server的proxy port。我们用它去共享上网,110为pop3,25为smtp。Udp的53为DNS所要的port。不过由于使用的是DHCP,可能每次得到的IP都不一样,所以我们就要用下面一种MAC限制的方法了。
MAC 限制:
-A FORWARD –m mac -–mac XX:XX:XX:XX:XX:XX –p udp –m multiport –port 53 –j ACCEPT
-A FORWARD –m mac -–mac XX:XX:XX:XX:XX:XX –p tcp –m multiport –port 3128,110,25 –j ACCEPT
|
如上就可通过网卡来控制上网了,但现在电脑高手多多,改一个MAC的地址好像也不是什么难事了,怎么办呢?那就用我们的第三种方法吧。
MAC+IP限制:
更改/etc/dhcpd.conf,如果MAC与IP绑定:
subnet 192.168.2.0
netmask 255.255.255.0{
range 192.168.2.30 192.168.2.230;
option broadcast-address 192.168.2.255;
option routers 192.168.2.9;
option domain-name-servers 212.132.16.163;
host meeting-room {
hardware ethernet 00:50:ba:c8:4b:3a;
fixed-address 192.168.2.35;
}}
|
我们的Iptables改为:0
-A FORWARD –s 192.168.2.35 –m mac -–mac XX:XX:XX:XX:XX:XX –p udp –m multiport –port 53 –j ACCEPT
-A FORWARD –s 192.168.2.35 –m mac -–mac XX:XX:XX:XX:XX:XX –p tcp –m multiport –port 3128,110,25 –j
|
这样做之后,高手也无能为力了,不过公司有位MM是兄台的GF,上班的时候想和她聊聊天,培养培养感情;怎么办呢?我们知道QQ用的是udp的4000端口,如占用则4002,4003……那么就如下了:
-A FORWARD –s 192.168.2.35 –m mac -–mac XX:XX:XX:XX:XX:XX –p udp –m multiport
–port 53,4000,4001,4002,4003,4004,4005 –j ACCEPT
-A FORWARD –s 192.168.2.35 –m mac -–mac XX:XX:XX:XX:XX:XX –p tcp –m multiport
–port 3128,110,25 –j ACCEPT
|
最后加一句:
-A FORWARD –s 192.168.0.0/16 –j DROP
|
由于前面应该开的都开了,所以最后全部禁止。呵呵,到此大功告成。
总结
世界上没有绝对安全的防火墙,安全永远是相对的。配置iptables的思路是先ACCEPT再DROP。共享上网的办法还有一个就是用iptables server的Owner,但由于linux没有像win2k那样的验证模式,在验证owner时有些困难。本人正在测试,但目前还没有比较好的解决办法,哪位兄弟搞定的话请Mail小弟,小弟将不胜感激。值得注意的是在做NAT时,客户端的网关一定要是iptagles的IP。 |
|