防火墙基本设置


防火墙系统是保护系统免受侵害的最基本的一种手段。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表中的规则

防火墙基本设置_第1张图片

清空所有规则,在此查看filter表

防火墙基本设置_第2张图片

删除用户自定义链

防火墙基本设置_第3张图片



因为规则链中默认的处理入站数据包为ACCEPT,我们试着在客户端上访问该服务器上的web服务

防火墙基本设置_第4张图片

现在,我们试着把默认的规则链修改为DROP,再进行访问

防火墙基本设置_第5张图片

所以INPUT链阻止了客户端的访问

防火墙基本设置_第6张图片

那么,有什么方法让你的客户端ip地址进行访问呢?答案是有的

添加规则

查看filter表

防火墙基本设置_第7张图片

我们再一次在客户端测试是否可以访问web服务

防火墙基本设置_第8张图片

答案是可以的

添加新规则

防火墙基本设置_第9张图片



修改新添加的规则

防火墙基本设置_第10张图片

我们可以看到上面的规则中一个是ACCEPT,一个是DROP,当客户端访问时应遵循哪一条规则呢?

防火墙基本设置_第11张图片

因为匹配的两条规则,前面的是放行的,所以后面的规则就不起作用啦





在服务器上开启ftp服务,并且让客户端可以访问

防火墙基本设置_第12张图片

添加规则

防火墙基本设置_第13张图片

客户端访问

防火墙基本设置_第14张图片

添加开启ftp20号端口的规则

防火墙基本设置_第15张图片

又或者是先开启21端口可通过的规则链后,加入以下规则

iptables –A INPUT –p tcp –m state –state ESTABLISHED,RELAATED–j ACCEPT