防火墙iptables简单应用
简介:
iptables防火墙可以用于创建过滤(filter)与NAT规则。所有Linux发行版都能使用iptables,因此理解如何配置iptables将会帮助你更有效地管理Linux防火墙。
iptables的结构:包含4个内建表, Rules->Chains -> Tables。简单地讲,tables由chains组成,而chains又由rules组成。
如下图:
1)这4个表的优先级别:raw> mangle > nat > filter
2)每个表有相关的链
raw表有2个链:prerouting、output
mangle表有5个链:prerouting、postrouting、input、output、forward
nat表有3个链:prerouting、postrouting、output
filter表中有3个链:input、output、forward
如果是第一次接触iptables,会觉得它很复杂,但是一旦理解iptables的工作原理,会发现其实它很简单。建议先看看IPTABLES基础知识。
语法:iptables [-t 表] -命令 匹配规则 规则的动作
n -t 表:用于指定命令应用于哪个iptables内置表
n 命令:用于指定iptables的执行方式,包括插入规则,删除规则和添加规则
n 匹配规则:用于指定数据包与规则匹配所具有的特征,包括源地址,目的地址,传输协议和端口号。
n 操作:用于指定规则的动作,比如常用动作:ACCEPT、REJECT、DROP、REDIRECT 、MASQUERADE等。
命令说明:
-P --policy 链名> 定义默认策略
-L --list 链名> 查看iptables规则列表
-A --append 链名> 在规则列表的最后增加1条规则
-I --insert 链名> 在指定的位置插入1条规则
-D --delete 链名> 从规则列表中删除1条规则
-R --replace 链名> 替换规则列表中的某条规则
-F --flush 链名> 删除表中所有规则
-Z --zero 链名> 将表中数据包计数器和流量计数器归零
-X --delete-chain 链名> 删除自定义链
-v --verbose 链名> 与-L他命令一起使用显示更多更详细的信息
匹配规则:
-i --in-interface 网络接口名> 指定数据包从哪个网络接口进入
-o --out-interface 网络接口名> 指定数据包从哪个网络接口输出
-p ---proto协议类型 指定数据包匹配的协议,如TCP、UDP和ICMP等
-s --source 源地址或子网> 指定数据包匹配的源地址
--sport 源端口号> 指定数据包匹配的源端口号
--dport 目的端口号> 指定数据包匹配的目的端口号
-m --match 匹配的模块 指定数据包规则所使用的过滤模块
规则的匹配过程:
Iptables程序匹配规则时,是从规则表中从上至下顺序执行的,如果数据包没遇到匹配的规则,就一条一条往下执行,如果遇到匹配的规则后,那么就执行本规则,执行后根据本规则的动作(accept,reject,log,drop等),决定下一步执行的情况,后续执行一般有三种情况:
①一种是继续执行当前规则队列内的下一条规则。比如执行过Filter队列内的LOG后,还会执行Filter队列内的下一条规则。
②一种是中止当前规则队列的执行,转到下一条规则队列。比如从执行过accept后就中断Filter队列内其它规则,跳到nat队列规则去执行。
③一种是中止所有规则队列的执行。
规则的动作:
reject
拦阻该数据包,并返回数据包通知对方,可以返回的数据包有几个选择:ICMP port-unreachable、ICMP echo-reply 或是tcp-reset(这个数据包包会要求对方关闭联机),进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。
drop
丢弃数据包不予处理,进行完此处理动作后,将不再比对其它规则,直接中断过滤程序。
redirect
将封包重新导向到另一个端口(PNAT),进行完此处理动作后,将会继续比对其它规则。这个功能可以用来实作透明代理或用来保护web 服务器。
范例:
(1防火墙的关闭、启动、重启
[root@lamp02 ~]# service iptablesstart //启动
[root@lamp02 ~]# service iptables stop //关闭
[root@lamp02 ~]# service iptablesrestart //重新启动
(2)查看本机关于IPTABLES的设置情况
[root@lamp02 ~]# iptables -L –n //默认显示的是filter表中的三个chain:input、forward、output的规则
[root@lamp02 ~]# iptables -t nat -L –n //显示nat表中的所有规则
[root@lamp02 ~]# iptables -t mangle -L–n //显示mangle表中的所有规则
(3)清除原有规则.
[root@lamp01~]# iptables -F //清除表filter中的所有规则链的规则
[root@lamp01~]#iptables -X //清除表filter中用户自定义链中的规则
[root@lamp02~]# iptables -t nat -F
[root@lamp02~]# iptables -t nat -X
[root@lamp02~]# iptables -t mangle -F
[root@lamp02~]# iptables -t mangle –X
注意,这里清除规则是暂时的,系统重新启动后会恢复之前样式,只要使用保存命令才能永久生效
(4)保存规则
[root@tp~]# /etc/rc.d/init.d/iptables save //把配置结果写到/etc/sysconfig/iptables文件里
[root@lamp02~]# service iptables restart //重新启动,加载/etc/sysconfig/iptables配置文件