2.包选择工具Iptables
Netfilter只提供了数据包的处理机制,而对数据包的具体处理工作则是由 Iptables 完成的。Iptables 是基于 Netfilter 框架实现的数据包选择工具,它由两个子系统组成:内核模块和用户接口应用程序。内核模块可以对 Netfilter 的规则表进行管理,由于Iptables对数据包的处理提供了表、链和规则的实现方法,所以可以通过添加删除链中的规则,完成对输入、输出和转发的数据包的过滤修改等操作(Iptables表、链、规则过滤结构如图2);用户接口程序负责接收用户的命令,并且将用户命令添加到内核中。
图2 Iptables过滤结构图
Filter该模块的功能是过滤数据包,不作任何修改,用户可以根据数据包内容或者接受,或者拒绝。报文分别在input、output、forward三条链过滤,也就是说,所有报文都将经过filter模块的处理。
NAT支持源(SNAT )和目的(DNAT )主要进行网络地址转换。NAT表运行修改数据包的源或目的地址和端口。它有三个内建的规则链。
(1)PREROUTING规则链有传递入站数据包到路由功能。修改后的目的地址可以指向本地机前,修改目的地址DNAT,修改后的目的地址可以指向本地机器(透明代理、端口转发),或负载均衡。
(2)OUTPUT 规则链指定了在做出路由决定(DNAT,RE-DIRECT)之前,对本地(防火墙本身)产生的出站数据包目的地址的修改。它通常用于透明地重定向一个出站数据包到本地代理,但也可以用于通过端口转发到不同的主机。
(3)POSTROUTING规则链指定了对将要通过盒子(SNAT,MASQUERADE)路由出站的数据包源地址进行修改。这种修改在做出路由决定之后才被应用。
Mangle表实现对数据报的修改或给数据报附上一些带外数据,以进行流量及路由控制等,由OUTPUT和PREROUTING两条链构成。
3. Iptables语法
一个Iptables命令基本上包含如下五部分:希望工作在哪个表上、希望使用该表的哪个链、进行的操作(插入、添加、删除、修改)、对特定规则的目标动作、匹配数据报条件。基本的语法为:
iptables -t table -Operation chain一target matches
如希望添加一个规则,允许所有从任何地方到本地smtp端口的连接:
iptables -t filter -A INPUT一ACCEPT -p tcp --dport smtp
当然,还有其他的对规则进行操作的命令如:清空链表、设置链缺省策略、添加一个用户自定义的链。基本操作:
-A在链尾添加一条规则;-I插入规则;-D删除规则;-R替代一条规则;-L列出规则。
基本目标动作,适用于所有的链:
ACCEPT接收该数据报;DROP丢弃该数据报;QUEUE排队该数据报到用户空间;
RETURN返回到前面调用的链。
基本匹配条件,适用于所有的链:
_P指定协议((tcp/icmp/udp/...);-s源地址(ip address/masklen);
-d目的地址(ip address/masklen);-i数据报输入接口;-o数据报输出接口。
二、系统架构
本防火墙系统架构如图3所示,防火墙把网络分成了内网(LAN),外网 (Internet),防火墙保护内网免受外部攻击,并利用防火墙上面2块网卡,网卡一(eth0) 连接外网,网卡二(eth1) 连接内网,设置内部 IP:192.168.0.1;防火墙内也有一台 Web 服务器。
图 3 防火墙系统架构
下面通过设置防火墙访问策略说明配置方法:
内网到外网:内网通过防火墙的NAT访问外网web、ftp等服务;内网访问防火墙web服务;外网到内网:外网访问内网的Web、ftp等服务;最后设置内网规则,防止碎片等。
|