iptables介绍
1、防火墙的作用
防火墙是存在于内部网络和外部网络之间的软件或硬件系统,主要作用是根据设定的安全策略,允许计算机的哪些服务可以被远程用户或站点访问,或者阻止内部重要信息向外流出,有双向监督功能。
2、基于Netfilter的iptables防护墙
2.1、iptables数据包传输流程
如果目的地址为本地的数据包被INPUT规则链的规则所接受,数据包就会在本地传送,如果数据包被FOWEARD规则链的规则所接受,数据包就会被送出相应的接口
经过本地处理后的外出数据包被送到OUTPUT规则链,如果被规则链接受,就会被送出到相应的接口
基于这个原理在项目中为了安全考虑,我们限制了INPUT的规则,使一部分可以通过规则链请求服务器的服务,加强了系统的安全性
2.2、常见的iptables基本语法
三个规则链:
1.INPUT——进来的数据包应用此规则链中的策略
2.OUTPUT——外出的数据包应用此规则链中的策略
3.FORWARD——转发数据包时应用此规则链中的策略
语法:
1 2 3 4 |
iptable <option> <chain> <matching criteria> <target>
示例: iptables -A INPUT -p tcp --dport 22 -j ACCEPT |
说明:上面示例的意思是允许请求服务的22端口,下面将参数进行说明
-A:在指定链的末尾添加一条新的规则
-D:从规则链中删除条目;
-I:向规则链中插入条目;
-R:替换规则链中的条目;
-L:显示规则链中已有的条目;
-F:清除规则链中已有的条目;
-p:匹配协议(tcp,udp,icmp)
--dport: 匹配目标端口号
-j:控制允许类型(ACCEPT|DROP )
删除已添加的iptables规则——使用-D参数
1 2 |
#假设之前用iptables -A INPUT -s 192.168.1.4 -j DROP 添加的规则 iptables -D INPUT -s 192.168.1.4 -j DROP |
修改规则——使用-R参数
1 2 |
#假设之前用iptables -A INPUT -s 192.168.1.4 -j DROP 添加的规则 iptables -R INPUT -s 192.168.1.4 -j DROP |
屏蔽ip——使用-I参数
1 2 |
iptables -I INPUT -s 123.45.6.7 -j DROP #屏蔽单个IP的命令 iptables -I INPUT -s 123.0.0.0/8 -j DROP #封整个段即从123.0.0.1到123.255.255.254的命令 |
在集群加固的过程中,我们需要让集群之间保通信,所有需要放开对特定IP的端口段
1 |
-A INPUT -s 10.66.64.130/32 -p tcp -m tcp --dport 1024:65535 -j ACCEPT |
添加好后永久生效
1 2 |
service iptables save #保存 service iptables restart #重启iptables防火墙 |
当已经添加好一个规则后,再次添加时还会成功,为了防止规则链重复
1 2 3 4 5 6 7 |
最近的iptables版本中有一个新的-C --check选项。 # iptables -C INPUT -p tcp --dport 8080 --jump ACCEPT iptables: Bad rule (does a matching rule exist in that chain?). # echo $? 1 $1是输出上次命令的执行结果 返回为0说明是已经存在 |
2.3、iptables的基本原理表和链
有点复杂,先上图:
用户请求web服务器时先将报文发送到网卡,信息通过内核的tcp协议传输到用户空间中的web服务
所以我们可以在内核中设置关卡,对进出的报文加以控制,这些关卡就是iptables中的规则链
对于iptbale防火墙是有规则链组成的,不同功能的规则放在不同的表中进行管理
而iptables已经为我们定义了4种表,下面分别说明这几个表的作用
filter表:负责过滤功能,防火墙;内核模块: iptables_filter
nat 表: network address translation,网络地址转换功能;内核模块: iptables_nat
mangle表:拆解报文,做出修改,并重新封装的功能; iptables_mangle
raw表:关闭nat表上启用的连接追踪机制; iptables_raw
如上图所示:
1 2 3 4 5 |
PREROUTING 的规则可以存在于:raw表,mangle表,nat表 INPUT 的规则可以存在于:mangle表,filter表 Forward 的规则可以存在于:mangle表,filter表 OUTPUT的规则可以存在于:raw表 mangle表 nat表 filter表 POSTROUTING 的规则可以存在于 :mangle表,nat表 |
当数据通过同一条链上的四个表时,执行的顺序:raw->mangle->nat->filter
那么表和链的关系就很清楚了,当数据包通过一条链时,往往会当前链的所有规则都匹配一遍,这样就会按上面的顺序经过不同的表,通过匹配的规则对数据包进行丢弃、转发或者拒绝操作,这样就可以控制别人对服务器数据的访问了。
最后网络安全是当今互联网最关注的问题之一,我们当树立安全意识。了解网络安全的基本常识。防止信息被窃取利用。