iptables2

防火墙

内核中数据包的传输过程

  • 当一个数据包进入网卡时,数据包首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去
  • 如果数据包就是进入本机的,数据包就会到达INPUT链。数据包到达INPUT链后,任何进程都会收到它。本机上的程序可以发送数据包,这些数据包经过OUTPUT链,然后到达POSTROUTING链输出
  • 如果数据包是要转发出去的,且内核允许转发,数据包就会到达FORWARD链,然后到达POSTROUTING链输出

iptables规则

  • 规则rule:根据规则的匹配条件尝试匹配报文,对匹配成功的报文根据规则定义的处理动作作出处理

1、匹配条件:默认为与条件,同时满足

基本匹配:IP,端口,TCP的Flags(SYN,ACK等)
扩展匹配:通过复杂高级功能匹配

2、处理动作:称为target,跳转目标

  • 内建处理动作:ACCEPT,DROP,REJECT,SNAT,DNATMASQUERADE,MARK,LOG…
  • 自定义处理动作:自定义chain,利用分类管理复杂情形

3、规则要添加在链上,才生效;添加在自定义上不会自动生效

  • 链chain:

1、内置链:每个内置链对应于一个钩子函数
2、自定义链:用于对内置链进行扩展或补充,可实现更灵活的规则组织管理机制;只有Hook钩子调用自定义链时,才生效

iptables添加要点

  • iptables规则添加时考量点

1、要实现那种功能:判断添加在那张表上
2、报文流经的路径:判断添加在哪个链上
3、报文的流向:判断源和目的
4、匹配规则:业务需要

  • 链上规则的次序,即为检查的次序,因此隐含一定的法则

1、同类规则(访问同一应用),匹配范围小的放上面
2、不同类规则(访问不同应用),匹配到报文频率较大的放上面
3、将那些可由一条规则描述的多个规则合并为一个
4、设置默认策略

避免自己定义的规则和系统默认的冲突,建议关闭系统的防火墙

Centos 7 系统环境

1
2
systmectl stop firewalld.service        关闭防火墙
systemctl disable firewalld.service 设置开机不启动

Centos 6 系统环境

1
2
service iptables stop       关闭防火墙
chkconfig iptables off 设置开机不启动

iptables命令

简单实例

表规则

规则格式

1
iptables [-t table] SUBCOMMAND chain [-m matchname [per-matchoptions]] -j targetname [per-target-options]

-t table:raw,mangle,nat,[filter]默认

链管理

-N:new,自定义一条新的规则链
-X:delete,删除自定义的空的规则链
-P:Policy,设置默认策略;对filter表中的链默认为ACCEPT,可修改DROP
-E:重命名自定义链;引用计数不为0的自定义链不能够重命名,也不能被删除

规则查看

-L:list, 列出指定鏈上的所有规则,本选项须置后
-n:numberic,以数字格式显示地址和端口号
-v:verbose,详细信息
-vv 更详细
-x:exactly,显示计数器结果的精确值,而非单位转换后的易读值
–line-numbers:显示规则的序号
常用组合:–vnL;–vvnxL; –line-numbers
-S selected,以iptables-save 命令格式显示链上规则

规则管理

-A:append,追加
-I:insert, 插入,要指明插入至的规则编号,默认为第一条
-D:delete,删除
(1) 指明规则序号
(2) 指明规则本身
-R:replace,替换指定链上的指定规则编号
-F:flush,清空指定的规则链
-Z:zero,置零
iptables的每条规则都有两个计数器
(1) 匹配到的报文的个数
(2) 匹配到的所有报文的大小之和

-------------本文结束感谢您的阅读-------------