前言:公司网关为一台linux服务器,文中均为实例!
一、概述
1、Linux的防火墙体系工作在网络层,针对TCP/IP数据包实施过滤和限制,属于典型的包过滤防火墙。
2、种类:netfilter和iptables通常都可以用来指Linux防火墙,但二者区别如下:
- Netfilter:指的是Linux内核中实现包过滤防火墙的内部结构,不以程序或文件的形式存在,属于“内核态”的防火墙功能体系,使用较少。
- Iptables:指的是管理Linux防火墙的命令工具,程序通常位于/sbin/iptables,由用户直接使用,属于“用户态”的防火墙功能体系,通常使用的就是这个。
3、规则表(见图1.1)
- Filter表:包含三个规则链:INPUT、FORWARD、OUTPUT
- Filter表主要用于对数据包进行过滤,根据具体的规则决定是否放行该数据包。
- Filter表对应的内核模块为iptable_filter。
- Nat表:包含三个规则链:PREROUTING、POSRTOUING、OUTPUT
- Nat表主要用于修改数据包的IP地址,端口号等信息。
- Nat表对应的内核模块为iptable_nat
- Mangle表:包含五个规则链:、PREROUTING、POSTROUTING、INPUT、OUTPUT、FORWARD
- Mangle表主要用于修改数据包的TOS、TTL、以及为数据包设置Mark标记,以实现Qos调整及策略路由等应用。
- Mangle表对应的内核模块为iptable_mangle
- Raw表:包含两条规则链:OUTPUT、PREROUTING
- Raw表是iptables新增加的表,主要用于决定数据包是否被状态跟踪机制处理。
- Raw表对应的内核模块为iptable_raw
4、规则链
- INPUT链:当接收到访问防火墙本机地址的数据包(入站)时,应用此链中的规则。
- OUTPUT链:当防火墙向外发送数据包(出站)时,应用此链中的规则。
- FORWARD链:当接受到需要通过防火墙发送给其他地址的数据包(转发)时,应用此链接中的规则。
- PREROUTING链:在对数据包作路由现在之前,应用此链中的规则。
- POSTROUTING链:在对数据包作路由选择之后,应用此链中的规则。
- 注:其中INPUT、OUTPUT链更多应用在访问本机的进出数据的安全控制中,而FORWARD、PREROUTING、POSTROUING更多应用在当使用linux做网关的时候。
二、工作原理首先我们需要了解当使用iptables作网关时,数据包的主要途径。Iptables的大体结构如下图1.2所示,这个图是数据包流经iptables的路径图。
- 假如数据包A流经这个网关,首先进入PREROUTING链,顺序匹配这里的规则(包括默认规则);
- 从这里开始需要分支:
- 如果这个数据包A是发给LOCALHOST本机的(也就是网关本身),那么数据包A的下一站是INPUT链,
- 同样顺序匹配这里的规则(包括默认规则),然后进去LOCALHOST本地进程进行处理这个数据包A;
- 处理完成后需要回应数据包A,LOCALHOST发出的数据包B第一站是OUTPUT,然后进入POSTROUTING,
- 从而离开网关服务器。
- 如果这个数据包A不是发给LOC ALHOST,那么数据包A的下一站是FORWARD,顺序匹配这里的规则;
- 然后数据包A的下一站是POSTROUTING,从而数据包A离开网关服务器;
- 在这个过程中,数据包A每次经过一个链,都会顺序匹配这个链的规则,所以数据在每一个链中都有可能被丢掉。
三、管理设置iptables 1、基本语法
- Iptables [-t 表命] 命令选项 [链名] [匹配条件] [-j 动作]
- 表名、链名用于指定iptables命令所操作的表和链,没有指定的话,默认使用filter表;
- 命令选项用于指定管理iptables规则的方式,比如插入,删除,增加,查看;
- 条件匹配用于指定对符合什么样条件的数据包进行处理;
- 动作指的就是对数据包的动作,如转发、丢弃、拒绝。
2、命令选项
- -A 在指定链的末尾添加一条新的规则
- -D 删除指定链中的某一条规则,按规则序号或内容确定要删除的规则
- -I 在指定链中插入一条新的规则,若未指定插入位置,则默认在链的开头插入
- -R 修改、替换指定链中的某一条规则,按规则序号或内容确定要替换的规则
- -L 列出指定链中所有的规则进行查看,未指定链名,则列出表中所有的链
- -F 清空指定链中的的所有规则,未指定链名,则清空表中所有链的规则
- -N 新建一条用户自己定义的规则链
- -X 删除指定表中用户自定义的规则链
- -P 设置指定链的默认策略
- -n 使用数字形式显示输出结果
- -v 查看规则烈表示显示详细的信息
- -V 查看iptables命令工具的版本信息
- -h 查看命令帮助信息
本文出自 “我的未来不是梦。” 博客,请务必保留此出处http://song49.blog.51cto.com/4480450/950276