Iptables是基于内核的防火墙,也就是说它是在内核中生效的,用户无法直接对其进行操作。所以Iptables就在内核中开了个口,便于我们进行操作。这些口的名字就是表,不要小看了Iptables中的表,防火墙中的规则都是通过表来设置实现的,在表下又定义了规则链来控制数据包。Iptables中有的文件所在,一个 是/etc/sysconfig/iptables它是保存规则的文件,在Iptables中添加了规则会立即生效,但是不会保存,再重启就没有了,所以一定要记得保存规则;另一个是/etc/sysconfig/iptables-config它是向Iptables脚本提供配置文件的文件。
Iptables自带的有三个表:Filter、Nat、Mangle;
自带的链有五个:Input、Output、Forward、Prerouting、Postroouting。
主要知识点
那么Iptables的表和链具体怎么工做呢?
表:
filter负责过滤数据包,包括的规则链有,input,output和forward;
nat则涉及到网络地址转换,包括的规则链有,prerouting,postrouting和output;
mangle表则主要应用在修改数据包内容上,用来做流量×××的,默认的规则链有:INPUT,OUTPUT,NAT,POSTROUTING,PREROUTING;
链:
input匹配目的IP是本机的数据包,也就是进入本机的数据包请求;
output匹配源IP是本机的数据包,也就是本机出去的数据包;
forward匹配流经本机的数据包,也可以看做是由本机转发的数据包;
prerouting就是处理还没有进行路由选择的数据包;
postrouting处理已经进行了路由选择后的数据。
Iptables的工作过程大致是这样的:当本机接到数据请求的时候,先判定其属于哪个表的管理范围,而后确定此数据符合表中哪条链的规则,如果确定符合某规则,就由此规则中我们指定好的动作来处理,如果数据请求不属于任何表的管理范围,那么就正常接收数据包。
主要参数及用法
-A 附加规则,默认是附加到尾部
-I 插入规则,默认是插入到首部
-D 删除规则,其后也可附带数字,表示删除第几条规则
-R 替换规则,其后同样可附带数字,表示替换第几条规则
-F 清空链内的规则,全部清空,后若跟数字代表清空第几条
-N 新建用户自定义的链
-X 删除链,这里只是删除自己建的空链
-E 重命名链
-P 指定默认规则
-Z 清空计数器,每条规则都有来两个计数器,一个是被匹配到的所有数据包的个数;一个是被匹配到的所有数据包的大小
-T 指定要操作的表,默认的表是Filter
-L 查看,列出Iptables的规则;还有一些子选项:-n 以纯数字方式显示;-v显示详细规则的计数器,-v越多显示越详细;--ilne-numbers 排序显示
-s 指定源地址
-d 指定目的地址
-p 匹配协议,如tcp、udp、icmp等。-p选项还支持各种匹配:先指定协议,后跟类型如 --sport源端口、--dport目的端口等;还有一种显示扩展,用-m来指定,如iprange(ip的扩展)limit(指定速率)string(指定匹配的字符串)time(指定时间限制)muitipost(指定协议宽口) 等
-i 数据包的流入接口,作用在Input、Forward、Prerouting
-o 数据包的流出接口,作用在Output、Forward、Postrouting
-j 处理动作,基本动作有:accept 就受、drop拒绝、reject直接拒绝、snat源地址转换、dnat目标地址转换
Iptables的语法:
iptables [-t 表名] 参数命令 (可附带子命令) 链名 匹配条件 -j 动作
这里要注意的是 表名一定要小写,链名一定要大写。
参数具体用法:
iptables -t指定表 filter -A加规则 INPUT链 -s 源IP -d 目的地址 -j 动作
#iptables -F 删除所有链
# iptables -A INPUT -d 192.168.1.1 -p tcp --dpor 80 -j DROP 拒绝别人访问本机192.168.1.1的80端口,其中-s省略了就表示所有主机,DROP表示拒绝
#iptables -A INPUT -s 192.168.2.1 -d 192.168.1.1 -p icmp --icmp-type 8 -j DROP 拒绝192.168.2.1ping本机,其中协议是icmp类型是8代表的是ping中的请求。
#iptables -A INPUT -p tcp --dport 22 -j ACCEPT
#iptables -A Output -p tcp --sport 22 -j ACCEPT这两条规则定义了ssh