网站运营
位置:首页>> 网站运营>> 基于Linux系统的包过滤防火墙(4)

基于Linux系统的包过滤防火墙(4)

 来源:asp之家 发布时间:2009-09-19 20:21:00 

标签:防火墙,linux

关于ICMP类型的更详细的表述参见RFC792。

2.2 iptables语法

2.2.1 Iptables的优点

→iptables允许建立状态(stateful)防火墙,就是在内存中保存穿过防火墙的每条连接。这种模式对于有效地配置FTP和DNS以及其它网络服务是必要的。

→iptables能够过滤TCP标志任意组合报文,还能够过滤MAC地址。

→系统日志比ipchains更容易配置,扩展性也更好。

→对于网络地址转换(NetworkAddressTranslation)和透明代理的支持,Netfilter更为强大和易于使用。

→iptables能够阻止某些DoS攻击,例如SYS洪泛攻击。

2.2.2 Iptables的规则要素

一条iptables规则基本上应该包含5个要素:

→指定表(table)

→指定操作命令(command)

→指定链(chains)

→指定规则匹配器(matcher)

→指定目标动作(target)

(1)表。Iptables从其使用的3个表而得名,分别是filter、nat、mangle。对于包过滤防火墙只使用filter表。表filter是默认的表,无需显示说明。

(2)操作命令。包括添加、删除、更新等。

(3)链。对于包过滤防火墙可操作filter表中的INPUT链、OUTPUT链和FORWARD链。也可以操作由用户自己定义的自定义链。

(4)规则匹配器。可以指定各种规则匹配,如IP地址、端口、包类型等。

目标动作。当规则匹配一个包时,真正要执行的任务用目标标识。最常用的内置目标分别是:

→ACCEPT表示允许包通过

→DROP表示被丢弃

此外,包过滤防火墙还可以使用扩展的目标:

→REJECT表示拒绝包,丢弃包的同时给发送者发送没有接受的通知。

→LOG表示包的有关信息被记录日志。

→TOS表示改写包的ToS的值。

要使用上述的扩展目标,必须在内核中激活相应选项或者装载了相应的内核模块。

2.2.3 Iptables工具的调用语法

Iptables的语法非常复杂,要查看该工具的完整语法,应该查看其手册页。

Iptables的语法通常可以简化为下面的形式:

Iptables[-t table]CMD[chain][rule-matcher][-j target]

其中:tables为表名,CMD为操作命令,chain为链名,rule-matcher为规则匹配器,target为目标动作。

2.2.4 制定永久性规则

iptables软件包提供了两个命令分别用于保存和恢复规则集。可以使用下在的命令转储在内存中的内核规则集。其中/etc/sysconfig/iptables是iptables守护进程调用的默认规则集文件:

#/sbin/iptables-save >; /etc/sysconfig/iptables

要恢复原来的规则库,需使用命令:

#/sbin/iptables-restore < /etc/sysconfig/iptables

为了使得用iptables命令配置的规则在下次启动机器时还能被使用,有两种主法。

(1)使用iptables的启动脚本实现。Iptables的启动脚本/etc/rc.d/init.d/iptables每次启动时都使用/etc/sysconfig/iptables所提供的规则进行规则恢复,并可以使用如下的命令保存规则:

#service iptables save

(2)在自定义脚本中用iptables命令直接创建规则集。可以直接用iptables命令编写一个规则脚本,并在启动时执行这个脚本。

例如:若规则脚本的文件名为/etc/fw/rules,则可以在启动脚本/etc/rd.d/init.d/rc.local中加入下面的代码:

if[-x /etc/fw/rules];then /etc/fw/rules;fi;

这样,机器每次启动时即可执行该规则脚本。

如果使用此种方式,建议使用ntsysv命令关闭系统的iptables守护进程。

2.3 iptables命令使用举例

2.3.1 链的基本操作

(1)清除所有的规则。通常在开始配置包过滤防火墙之初清除所有的规则,重新开始配置,以免原有的规则影响新的设定。使用如下命令进行:

1) 清除预设表filter中所有规则链中的规则。

#iptables -F

2)清除预设表filter中使用者自定义链中的规则。

#iptables -X

3)将指定链所有规则的包字节记数器清零。

#iptables -Z

(2)设置链的默认策略。一般地,配置链的默认策略有两种方法。

1)首先允许所有的包,然后再禁止有危险的包通过防火墙。即“没有被拒绝的都允许”。这种方法对于用户而言比较灵活方便,但对系统而言,容易引起严重的安全问题。

为此,应该使用如下的初始化命令:

#iptables -P INPUT ACCEPT

#iptables -P OUTPUT ACCEPT

#iptables -P FORWARD ACCEPT

2)首先禁止所有的包,然后再根据需要的服务允许特定的包通过防火墙。即“没有明确允许的都被拒绝”。这种方法最安全,但不太方便。为了使得系统有足够的安全性,一般采用此种策略进行iptables防火墙的配置。

为此,应该使用如下的初始化命令:

#iptables -P INPUT DROP

#iptables -P OUTPUT DROP

#iptables -P FORWAED DROP

3)列出表/链中的所有规则。包过滤防火墙只使用filter表,此表为默认的表,因此可以使用下面的命令列出filter表中所有规则:

#iptables -L

使用上面的命令时,iptables将逆向解析IP地址,这将发费很多时间,从而造成信息出来的非常慢。为了解决这个问题,可以使用下面的带有-n参数的命令(-n参数用于显示数字化的地址和端口):

#iptables -L -n

4)向链中添加规则。下面的语句用于开放网络接口:

#iptables -A INPUT -i lo -j ACCEPT

#iptables -A OUTPUT -o lo -j ACCEPT

#iptables -A INPUT -i eth0 -j ACCEPT

#iptables -A OUTPUT -o eth0 -j ACCEPT

#iptables -A FORWARD -i eth0 -j ACCEPT

#iptables -A FPRWAED -o eth0 -j ACCEPT

5)使用用户自定义链。下面是一个用户自定义链的创建、修改和调用的简单命令序列:

0
投稿

猜你喜欢

手机版 网站运营 asp之家 www.aspxhome.com