开学前就听说学校“限制”了路由的使用,刚回学校那段时间也体验到了那恶心的情况,不禁你路由,但是就是让你用路由的用不爽。据学校某些同学说是电信查到路由使用就返回了RST包。具体的检查手段没去深究,根据大多数的做法是靠防火墙过滤掉RST包,基本可以解决问题,再者可以使用TP-Link 541的主机伪装功能,也可以解决问题。
但令人更恶心的是,使用Ubuntu or MAC的同学即使不用路由,正常拨号的情况也是不是也会被重置。遭到严重歧视。前段时间一直在使用540也就意识不到问题的存在了,熄灯之后用回笨兔,上网被重置后才重新意识到这个问题。于是就借用iptables来过滤RST。
这里仅对iptables用到的部分做点笔记,避免自己忘记了。(昨天晚上还翻书来的= =,用得不多,忘得就很快)
内容参考man手册和《Ubuntu Linux 指南:管理篇》的iptables部分
拿过滤RST的语句来做下例子
sudo iptables -A INPUT -p tcp –tcp-flags ALL RST -j DROP
对应man手册写的结构是
iptables [-t table] -[AD] chain rule-specification [options]
1、表[table]
iptables的表有3个,Filter、NAT、Mangle。指定表名使用-t或者–table选项来指定表。默认不指定表时,处理Filter表。
Filter表:默认表,target有ACCPET和DROP,内置链[chain]包括INPUT、FORDWARD、OUTPUT。用户自定规则链也在这个表中。
NAT表:内置链[chain]有PREROUTING、OUTPUT和POSTROUTING,target有DNAT、SNAT和MASQUERADE。
Managle:专门用来修改分组中的TOS、TTL和MARK字段,内置链[chain]有PREROUTING和OUTPUT。一般不处理这个表。
2、命令[Command](请参考man手册获得更多更准确的用法。)
常用的当然是-A,–append(添加)、-D,–delete(删除)。
-A,–append:将rule-specification指定的规则添加到规则链chain的末尾。如果分组匹配rule-specification的所有规则,那么目标target就会处理它。
-D,–delete:将一条或多条规则从规则链chain中删除,rule-specification或rule-numbers将被指定删除。
其他可能用到的还有:
-I,–insert:将rule-specification和target指定的规则添加到规则链中,rule-number指定插入位置。如果没有指定,默认为1,即规则链头部。
-R,–replace:将规则链chain中编号为rule-number的规则替换成rule-specification和target。
-L,–list:显示chain中的规则,漏掉chain的话,将显示所有规则链的规则。
-F,–flush:删除规则链chain中的所有规则。漏掉chain,将显示所有链中的所有规则删除。
3、分组匹配(更多参考man手册)
-p,–protocol [!] protocol:匹配分组使用协议,过滤RST中则对应tcp协议。!表示不匹配。
其他两个是匹配接受到和发送的分组相关的,可以man一下对应的内容。
-i, –in-interface [!] name:
-o, –out-interface [!] name:
4、目标[target]
ACCEPT:继续处理分组。
DROP:丢弃分组,不发出任何通知。
REJECT:类似DROP,但是会通知发送分组的系统该分组被屏蔽。
基本上涉及的部分也就这么多了,记的并不多,毕竟平时没太多机会去使用。man手册里面写得很详尽,需要的了解更多的话可以man一下iptables^_^。
另外,《Linux防火墙》一书高清PDF版本可以在这里下载。书中全面阐述了iptables防火墙,并详细讨论了如何应用psad、fwsnort、fwknop 3个开源软件最大限度地发挥iptables检测和防御攻击的效力。