防火墙基本设置
防火墙系统是保护系统免受侵害的最基本的一种手段。Netfilter/iptables是linux系统提供的一个非常优秀的防火墙工具。
该文档内容主要将iptables作为主机防火墙的一些基本设置。
首先,普及一下iptables的基本内容
规则链是防火墙规则/策略的集合,默认iptables包括了5种规则链
INPUT处理入站的数据包
OUTPUT处理出站的数据包
FORWARD处理转发数据包
PREROUTING在进行路由选择前处理数据包
POSTROUTING在进行路由选择后处理数据包
Redhat enterprise linux 的规则表是规则链的集合,默认的规则表有4个
raw表确定是否对该数据包进行状态跟踪
mangle表为数据包设置标记
nat表修改数据包的源,目标ip或端口
filter表确定是否放行该数据包
我们主要学到的表是filter表和nat表
Iptables命令规则
Iptables [-t 表名 ]<命令>[链名][规则号][规则][-j 目标]
Iptables中未指明表名的情况下默认使用filter表
参数
-A在指定的链的末尾添加一条或多条规则
-D从指定的链中删除一条或多条规则。可以按照规则的序号进行删除,也可以删除满足匹配条件的规则
-R在指定的链中用新的规则置换掉某一规则号的旧规则
-I在指定的规则序号前插入一条或多条规则,如果没有指定规则号,则默认1
-L列出指定链中的所有规则,如果没有指定链,则所有链中的规则都将列出来
-F删除指定链中的所有规则,如果没有指定,则所有链中的规则都将列出
-N建立一个新的用户自定义链
-X删除指定的用户自定义链
-p指定上一层协议
-s指定源ip地址或子网
-d指定目的ip或子网
-i指定数据包进入的网络接口名称
-o指定数据包出去的网络接口名称
实验需求:vmwareworkstation,rhel4
查看filter表中的规则
清空所有规则,在此查看filter表
删除用户自定义链
因为规则链中默认的处理入站数据包为ACCEPT,我们试着在客户端上访问该服务器上的web服务
现在,我们试着把默认的规则链修改为DROP,再进行访问
所以INPUT链阻止了客户端的访问
那么,有什么方法让你的客户端ip地址进行访问呢?答案是有的
添加规则
查看filter表
我们再一次在客户端测试是否可以访问web服务
答案是可以的
添加新规则
修改新添加的规则
我们可以看到上面的规则中一个是ACCEPT,一个是DROP,当客户端访问时应遵循哪一条规则呢?
因为匹配的两条规则,前面的是放行的,所以后面的规则就不起作用啦
在服务器上开启ftp服务,并且让客户端可以访问
添加规则
客户端访问
添加开启ftp20号端口的规则
又或者是先开启21端口可通过的规则链后,加入以下规则
iptables �CA INPUT �Cp tcp �Cm state �Cstate ESTABLISHED,RELAATED�Cj ACCEPT