文章作者:冷夏[E.S.T]
注意:如果转帖请注明文章作者,谢谢。
①.首先,您必须先将您的Linux系统核心更改为可支持数据包过滤的版本。您可以检查系统里/proc/net/ip_fwchains这个文件是否存在,有,请在核心配置文件内加上:
CONFIG_FIREWALL=y
CONFIG_IP_FIREWALL=y
两个选项后重新编译您的核心。
②.使用IPCHAINS:
刚开始系统会有三个内建的chains:input 、output 、forward分别处理出入及转送的规则。
首先您可以检查ipchains的版本是否为1.3.9以上:
$ipchains--version1.3.9,17-mar-1999
基本操作:
1.建立新的chain:ipchains -N chain
2.删除不要的chain:ipchains -X chain
3.改变chain的polich:ipchains -P chain policy
4.列出chain的rule:ipchains -L [chain]
5.删除chain的所有rule:ipchains -F [chain]
6.将chain的计数器归零:ipchains -Z [chain]
以上[chain]若未指定的话就表示所有的chains
更改chains的规则:
1.增加一条新的规则:ipchains -A chain
2.删除第一个比对符合的规则:ipchains -D chain
3.删除某个位置号码的规则:ipchains -D chain rulenum
4.在某个位置号码插入一条新的规则:ipchains -I chain [rulenum]
5.更改某个位置号码的规则:ipchains -R chain [rulenum]
以上的位置号码是规则比对的顺序(优先序),通常不加代表1(最优先)
③.关于对包过滤(Packet Filtering)的设定:
IP对包过滤程序(Packet filter)会检查网络数据包,并决定是否让这些数据包通过过滤程序。这些检查动作可以在几个不同的过程中执行,比如说当数据包到达时或是数据包要转送到其他机器时。
通常决定这个过滤程序(filter)通过与否有以下数种因素:
1.来源及目的的地址。
2.协议种类(TCP、UDP、ICMP等)。
3.IP的选择性设定:像是否允许来源路由(source route)的数据包通过。
4.来源及目的的通讯端口号码(port):可过滤某些特定的服务(像HTTP是用TCP port 80)。
5.TCP区块标头的flag设定:像是否允许建立新的连线(ACK或SYN标示位的设定)。
6.TCMP的信息种类:像关闭echo,不让别人使用ping来查询。
7.不同的网卡。
8.日期或时间。
9.用户数据。
在Linux的核心(kernel),其奔身就提供了数据包过滤程序的功能,可以限制数据包的接受、传出、及转送。而IP数据包过滤程序的运作是依据一些设定好的规则(rule)及数据包的处理方法(policy)。通常是依下列的过程来执行:
1.首先检查适用于这个过滤程序的规则中是否有相符的。
2.如果有相符的话,第一个相符的规则会决定:
数据包的处理方法(根据这个规则所设定的)。
在过滤程序里每个规则都有一个数据包数量及大小的计数器。会增加。(这是系统做的记录用的)。
操作系统本身也会做相关的记录(如果有设定的话)。
3.如果没有相符的话,就使用预设处理方法。
Linux支持以下三种数据包的处理方法:
1.Accept:让数据包通过过滤程序。
2.Deny:把数据包丢弃(安静地)。
3.Reject:丢弃数据包并送回无法到达目的地的信息(ICMP)给来源。
Linux支持的过滤程序规则有以下数种:
1.来源及目的的网络地址(IP address)及网络掩码(network mask):一个只含0的掩码会让每个地址都符合这条规则。
2.网络协议:可以是ICP、UDP、ICMP、或any(任何协议)。
3.来源及目的的通讯端口(port)号码:需配合ICP或UDP使用,每条规则可以最多指定十个端口的号码,也可以指定一组范围。
4.信息种类:需配合使用。
5.一组位组用来比对区块标头中的ACK及SYN旗标:可用来拒绝特定方向的新连线的建立。
6.网络装置的名称或地址:如果规则里包含网络装置的话,那该条规则只会对流进(或流出)该装置的数据包进行比对。
7.一个设定是否当数据包比对相符时,要修改IP标头的TOS栏位。
8.一个旗标设定是否当数据包对比对规则相符时,记录数据包的基本数据到系统记录文件中。
|