IPTABLES/netfilter(http://www.netfilter.org)其实大多数人都认为iptables是linux系统上的一个服务,其实不是的.我们linux系统上的服务比如说httpd服务在启动起来的时候,是不是在后台启动一个相应的服务进程且在网卡上监听一个端口,而iptables却不然,那么iptables到底是什么呢?其实iptables只是一个工具而已.我们的linux系统有用户空间,和内核空间,而iptables有两个组件,一是netfilter, netfilter组件只是用来过滤防火墙规则,及作出相应的处理机制的,它是集成在内核中的一部分,也就是说它是工作在内核空间的,那么大家都知道用户是不可能直接跟内核空间打交道的,那么netfilter只是工作在内核空间对规则进行处理的,那么规则从何而来呢?是从iptables的第二个组件iptables而来的,我们上面说了IPTABLES只是一个工作在用户空间的一个工具而已,那么用户就使用这个工具的一个命令来跟工作在内核空间中的netfiter组件打交道的.其实IPTABLES防火墙就是这样的.
成都创新互联制作网站网页找三站合一网站制作公司,专注于网页设计,网站建设、网站设计,网站设计,企业网站搭建,网站开发,建网站业务,680元做网站,已为上千余家服务,成都创新互联网站建设将一如既往的为我们的客户提供最优质的网站建设、网络营销推广服务!
IPTABLES常用的表和链有三个filter表 nat表 mangle表,和五个链 INPUT链 OUTPUT链 FORWARE链 POSTROUTING链 PREROUTING链,下面来介绍下它们的各个功能呢个功能,
filter表主要是过滤数据包的,IPTABLES几乎所有的数据包过滤都在此表中实现的,filter表也是IPTABLES中默认的表,此表中还包含三个链如下
1.1 INPUT链
过滤所有的目标地址是本机的数据包
1.2 OUTPUT链
过滤所有从本机出去的数据包
1.3 FORWORD链
过滤所有从本机路过的数据包
nat表主要是用于做网络地址转换的(NAT)在IPTABLES中可以做SNAT(源地址转换),DNAT(目标地址转换),PNAT(即跟SNAT差不多,不一样的是SNAT的源地址是固定的,而PNAT的源地址是不固定的,当使用ppp或pppoe的方式连接互联网的时候一般适应这中)。 nat表中包含两个链如下
2.1 PREROUTING链
在数据包到达防火墙的时候改变目标地址 DNAT应用于此链.
2.2 OUTPUT链
可以改变本地产生的数据包的目标地址
2.3 POSTROUTING链
在数据包离开防火墙的时候改变源地址,SNAT应用于次链
mangle表主要是修改数据包头部信息的,此表中包含以下5条链
3.1 PREROUTING链,
在数据包进入防火墙之后,也称为路由前,
3.2 POSTROUTING链,
在数据包确定目标地址后,也称为路由后,
3.3 OUTPUT链
从本机出去的时间包路由前
3.4 INPUT链
数据包进入本机后,路由后
3.5 FORWARD链
第一次路由判断之后,最后一次路由判断之前改变数据包
IPTABLES的状态跟踪连接有4种,分别是,NEW,ESTABLISHED,RELATED,INVALID,除了从本机出去的数据包有nat表的OUTPUT链处理外,其他说有的状态跟踪都在nat表中的PREROUTING链中处理,下面来说下4种状态是什么,
1,NEW状态
NEW状态的数据包说明这个数据包是收到的第一个数据包,
2,ESTABLISHED状态,
只要发送并接到应答,一个数据包的状态就从NEW变为ESTABLEISHED,而且该状态会继续匹配这个连接后继数据包,
3,RELATED状态
当一个数据包的状态处于ESTABLSHED状态的连接有关系的时候,就会被认为是RELATED,也就是说一个链接想要是RELATED状态,首先要有一个ESTABLISHED的连接,
4,INVALID状态
不能被识别属于哪个连接状态或没有任何关系的状态,一般这中数据包要被拒绝的
iptables在RHEL的系统上默认安装的, IPTABLES的命令选项主要分为这么几大类,规则管理,链管理,默认管理,查看,匹配条件,处理动作,基本应该就这些了吧,下面来一一说名,
#iptables -A添加一条新规则
#iptables -I插入一条新规则 -I后面加一数字表示插入到哪行
#iptables -D删除一条新规则 -D后面加一数字表示删除哪行
#iptables -R替换一条新规则 -R后面加一数字表示替换哪行
#iptables -F清空链中的所有规则
#iptables -N新建一个链
#iptables -X删除一个自定义链,删除之前要保证次链是空的,而且没有被引用
#iptables -E重命名链
3.默认管理类
#iptables -P设置默认策略
#iptables -L查看规则 -L还有几个子选项如下
#iptables -L -n以数字的方式显示
#iptables -L -v显示详细信息
#iptables -L -x显示精确信息
#iptables -L --line-numbers显示行号
5.1基本匹配
条件匹配也可以使用 !取反
-s源地址
-d目标地址
-p协议{tcp|udp|icmp}
-i从哪个网络接口进入,比如 -i eth0
-o从哪个网络接口出去,比如 -o eth0
5.2扩展匹配
5.2.1隐含扩展匹配
-p {tcp|udp} --sport指定源端口
-p {tcp|udp} --dport指定目标端口
5.2.2显示扩展匹配
-m state --state匹配状态的
-m mutiport --source-port端口匹配 ,指定一组端口
-m limit --limit 3/minute每三分种一次
-m limit --limit-burst 5只匹配5个数据包
-m string --string --algo bm|kmp --string "xxxx"