Linux防火墙
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux防⽕墙
iptables概述:
Linux系统的防⽕墙:IP信息包过滤系统,它实际上由两个组件netfilter 和 iptables 组成。
主要⼯作在⽹络层,针对IP数据包。体现在对包内的IP地址、端⼝等信息的处理上。
netfilter / iptables关系
netfilter:属于“内核态”(Kernel Space,⼜称为内核空间)的防⽕墙功能体系。
是内核的⼀部分,由⼀些数据包过滤表组成,这些表包含内核⽤来控制数据包过滤处理的规则集。
iptables:属于“⽤户态”(User Space,⼜称为⽤户空间)的防⽕墙管理体系。
是⼀种⽤来管理Linux防⽕墙的命令程序,它使插⼊、修改和删除数据包过滤表中的规则变得容易,通常位于/sbin/iptables⽬录下netfilter / iptables:后期简称为iptables。iptables 是基于内核的防⽕墙,其中内置了raw、mangle、nat 和 filter 四个规则表。表中所有规则配置后,⽴即⽣效,不需要重启服务。
四表五链:
规则表的作⽤:容纳各种规则链
规则链的作⽤:容纳各种防⽕墙规则
总结:表⾥有链,链⾥有规则
四表:
raw表:确定是否对该数据包进⾏状态跟踪。包含两个规则链,OUTPUT、PREROUTING
mangle:修改数据包内容,⽤来做流量整形的,给数据包设置标记。包含五个规则链,INPUT、OUTPUT、PREROUTING、FORWARD、POSTROUTING
nat表:负责⽹络地址转换,⽤来修改数据包中的源、⽬标IP地址或端⼝。包含三个链OUTPUT、PREROUTING、POSTROUTING
filter表:负责过滤数据包,确定是否放⾏该数据包(过滤)。包含三个规则链,INPUT、OUTPUT、FORWARD
注:iptables的四个规则表中,mangle 表和 raw 表的应⽤相对较少
五链:
INPUT:处理⼊站数据包,匹配⽬标IP为本机的数据包
OUTPUT:处理⼊站数据包,⼀般不在此链上做配置
FORWARD:处理转发数据包,匹配流经本机的数据包
PREROUTING:在进⾏路由选择前处理数据包,⽤来修改⽬的地址,⽤来做DNAT。相当于把内⽹服务器的IP和端⼝映射到路由器的外⽹IP和端⼝上
POSTROUTING:在进⾏路由选择前处理数据包,⽤来修改源地址,⽤来做SNAT。相当于内⽹通过路由器NAT转换功能实现内⽹主机通过⼀个公⽹IP地址上⽹
数据包到达防⽕墙时,规则表之间的优先顺序:
raw 》 mangle 》 nat 》 filter
规则链之间的匹配顺序:
主机型防⽕墙:
⼊站数据(来⾃外界的数据包,且⽬标地址是防⽕墙本机):PREROUTING > INPUT > 本机的应⽤程序
出站数据(从防⽕墙崩本机向外部地址发送的数据包):本机的应⽤程序 > OUTPUT > POSTROUTING
⽹站型防⽕墙:
转发数据(需要经过防⽕墙转发的数据包):PREROUTING > FORWARD > POSTROUTING
规则链内的匹配顺序:
⾃上⽽下按顺序⼀次进⾏检查,找到相匹配的规则即停⽌(LOG策略例外,表⽰记录相关⽇志)若在该链内找不到相匹配的规则,则按该链的默认策略处理(未修改的状况下,默认策略为允许) iptables命令⾏配置⽅法:
命令格式:
iptables [-t 表名] 管理选项 [链名] [匹配条件 ] [-j 控制类型 ]
注意事项:
不指定表名时,默认指 filter 表
不指定链名时,默认指表内所有链
除⾮设置链的默认策略,否则必须指定匹配条件
控制类型使⽤⼤写字母,其余均为⼩写
常⽤的控制类型:
ACCEPT:允许数据包通过
DROP:直接丢弃数据包,不给出任何回应信息
REJECT:拒绝数据包通过,会给数据发送端⼀个响应信息
SNAT:修改数据包的源地址
DNAT:修改数据包的⽬的地址
MASQUERADE:伪装成⼀个⾮固定公⽹IP地址
LOG:/var/log/menssages ⽂件中记录⽇志信息,然后将数据包传递给下⼀个规则
iptables命令的常⽤管理选项
-A在指定链的末尾追加(–append)⼀条新的规则
-I在指定链的开头插⼊(–insert)⼀条新的规则,未指定序号时默认作为第⼀条规则-R修改、替换(–replace)指定链中的某⼀条规则,可指定规则序号或具体内容
-P设置指定链的默认策略(–policy)
-D删除(–delete)指定链中的某⼀条规则,可指定规则序号或具体内容
-F清空(–flush)指定链中的所有规则,若未指定链名,则清空表中的所有链
-L列出(–list)指定链中所有的规则,若未指定链名,则列出表中的所有链
-n使⽤数字形式(–numeric)显⽰输出结果,如显⽰ IP 地址⽽不是主机名
-v显⽰详细信息,包括每条规则的匹配包数量和匹配字节数
–line-numbers查看规则时,显⽰规则的序号
-h常看帮助信息
⽤法实操:
1、添加新的规则
2、查看规则列表:
3、删除、清空规则
注:
-F仅仅是清空链中的规则,并不影响-p设置的默认规则,默认规则需要⼿动进⾏修改
-P设置了DROP后,使⽤-F⼀定要⼩⼼!防⽌把允许远程连接的相关规则清除后导致⽆法远程连接主机,此情况如果没有保存规则可重启主机解决
如果不写表名和链名,默认清空filter 表中所有链⾥的所有规则
4、设置默认策略
规则匹配条件:
匹配条件的设置分为三⼤类:通⽤匹配、隐含匹配、显式匹配
1、通⽤匹配:
通⽤匹配也称常规匹配,这种匹配⽅式可以独⽴使⽤,不依赖其他条件或扩展模块
常见的通⽤匹配包括协议匹配、地址匹配、⽹络接⼝匹配
①协议匹配:
②地址匹配:
③⽹络接⼝匹配
2:、隐含匹配:
这种匹配⽅式要求以指定的协议匹配作为条件,相当于⼦条件,因此⽆法独⽴使⽤,其对应的功能由iptables在需要的时⾃动(隐含)载⼊内核。
常见的隐含匹配包括端⼝匹配、TCP匹配、ICMP匹配
①端⼝匹配