防火墙的工作原理
防火墙通过审查经过的每一个数据包,判断它是否有相匹配的过滤规则,根据规则的先后顺序进行一一比较,
直到满足其中的一条规则为止,然后依据控制机制做出相应的动作。如果都不满足,则将数据包丢弃,从而
保护网络的安全。
iptables概念
iptabels是与Linux内核集成的包过滤防火墙系统几乎所有的linux发行版本都会包含iptables的功能,它可
以代替昂贵的商业防火墙解决方案,完成封包过滤、封包重定向和网络地址转换NAT等功能。
防火墙规则:
规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这
样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输
协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据
规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。防火墙的配置
就是增加,修改,删除这些规则。
链
链(chains)是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或
数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则
所定义的条件。如果满足,系统就会根据该条规则所定义的方法处理该数据包;否则iptables将继续检查下一
条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包。
表
iptables内置了filter,nat和mangle三张表,分别用于实现包过滤,网络地址转换和包重构的功能。filter负责过
滤数据包,包括的规则链有input,output和forward;nat则涉及到网络地址转换,包括的规则链有prerouting,
postrouting和output;mangle表则主要应用在修改数据包内容上,用来做流量整形的,默认的规则链有:INPUT,
OUTPUT,NAT,POSTROUTING,PREROUTING;
input匹配目的IP是本机的数据包,
forward匹配流经本机的数据包,
prerouting用来修改目的地址用来做DNAT,
postrouting用来修改源地址用来做SNAT。
iptables数据包传输过程
1)当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据路由表和数据包目的IP判断是否需要转送出去。
2)如果数据包就是进入本机的,它就会沿着图向下移动,到达INPUT链。数据包到了INPUT链后,任何进程都会收到
它。本机上运行的程序可以发送数据包,这些数据包会经过OUTPUT链,然后到达POSTROUTING链输出。
3)如果数据包是要转发出去的,且内核允许转发,数据包就会如图所示向右移动,经过FORWARD链,然后到达POSTROUT
ING链输出。
linux下的iptables的使用
1.启动和关闭防火墙 sudo Ufw enable/disable
2.默认策略来处理数据包,默认策略的定义格式如下。 iptables [-t表名] <-p> <协议> <动作>
[-t表名]:指默认策略将应用于哪个表,可以使用filter、nat和mangle,如果没有指定使用哪个表,iptables就默认使用filter表。
<-p>:定义默认策略。除了-p外的其他参数选项
<链名>:指默认策略将应用于哪个链,可以使用INPUT、OUTPUT、FORWARD、PREROUTING、OUTPUT和POSTROUTING。
<动作>:处理数据包的动作,可以使用ACCEPT(接受数据包)和DROP(丢弃数据包)。动作选项的其他参数
3.查看iptables规则
iptables [-t表名] <-l> [链名]
<-l>:查看指定表和指定链的规则列表。
与<-l>同类的其他的一些参数:
4.增加、插入、删除和替换规则
iptables [-t表名] <-a |="" i="" d="" r=""> 链名 [规则编号] [-i | o 网卡名称] [-p 协议类型] [-s 源IP地址 | 源子网] [–sport 源端口号]
[-d目标IP地址 | 目标子网] [–dport目标端口号] <-j动作>
5.清除规则和计数器
iptables [-t表名] <-f |="" z="">
-F:删除指定表中所有规则。
-Z:将指定表中的数据包计数器和流量计数器归零。-f>-a>-l>-l>-l>-p>-p>
iptables配置防火墙的一些实例
1.配置ICMP规则,防止ping攻击。
命令:iptables -A FORWARD -p icmp -j DROP
2.以分钟为周期,允许正常通过5个ICMP 数据包,超过之后仅允许每10秒通过一个ICMP包。
3.如果你的电脑中了冰河木马,木马服务器端想要使用反向连接,连接外部的客户端。请配置防火墙规则,禁止端口7626向外的连接
Sudo iptables -A FORWARD –sport 7626 –p tcp –j DROP