防火墙基本设置


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

172012181.jpg

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

172025965.jpg

删除用户自定义链

172036358.jpg



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

172046952.jpg

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

172058903.jpg

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

172113538.jpg

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

添加规则

172125203.jpg

查看filter表

172135305.jpg

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

172143613.jpg

答案是可以的

添加新规则

172154295.jpg



修改新添加的规则

172206978.jpg

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

172218205.jpg

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





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

172234748.jpg

添加规则

172242883.jpg

客户端访问

172307552.jpg

添加开启ftp20号端口的规则

172317770.jpg

172327123.jpg

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

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