防火墙管理工具
防火墙作为公网与内网之间的保护屏障,在保障数据的安全性方面起着至关重要的作用。
防火墙虽然有软件或硬件之分,但主要功能都是依据策略对穿越防火墙自身的流量进行过滤。防火墙策略可以基于流量的源目地址、端口号、协议、应用等信息来定制,然后防火墙使用预先定制的策略规则监控出入的流量,若流量与某一条策略规则相匹配,则执行相应的处理,反之则丢弃。这样一来,就可以保证仅有合法的流量在内网和公网之间流动了。
在Linux系统中,Iptables与Firewalld是非常常用的防火墙管理工具。两者之间最大的区别是:iptables服务会把配置好的防火墙策略交由内核层面的netfilter网络过滤器来处理,而firewalld服务则是把配置好的防火墙策略交由内核层面的nftables包过滤框架来处理。
Iptables
策略与规则链
防火墙会从上至下的顺序来读取配置的策略规则,在找到匹配项后就立即结束匹配工作并去执行匹配项中定义的行为(即放行或阻止)。如果在读取完所有的策略规则之后没有匹配项,就去执行默认的策略。
一般而言,防火墙策略规则的设置有两种:一种是“通”(即放行),一种是“堵”(即阻止)。当防火墙的默认策略为拒绝时(堵),就要设置允许规则(通),否则谁都进不来;如果防火墙的默认策略为允许时,就要设置拒绝规则,否则谁都能进来,防火墙也就失去了防范的作用。
Iptables服务把用于处理或过滤流量的策略条目称之为规则,多条规则可以组成一个规则链,而规则链则依据数据包处理位置的不同进行分类,具体如下:
-
在进行路由选择前处理数据包(PREROUTING);
-
处理流入的数据包(INPUT);
-
处理流出的数据包(OUTPUT);
-
处理转发的数据包(FORWARD);
-
在进行路由选择后处理数据包(POSTROUTING)。
在实际的应用中,最常用的就是INPUT规则链,对该链上的策略进行适当的配置,可以极大的增强系统的安全性。
在Iptables中,对流量有四种处理策略,分别是:
- ACCEPT(允许流量通过)
- REJECT (拒绝流量通过)
- DROP(拒绝流量通过)
- LOG(记录日志信息)
其中,REJECT与DROP的区别在于:REJECT拒绝后,会向对方回复一条拒绝消息 ,而DROP拒绝则是直接丢弃,不对其进行任何回复。
代码演示:
#使用REJECT策略,会显示对方主机无法连接
[root@localhost ~]# ping -c 4 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
From 192.168.10.10 icmp_seq=1 Destination Port Unreachable
From 192.168.10.10 icmp_seq=2 Destination Port Unreachable
From 192.168.10.10 icmp_seq=3 Destination Port Unreachable
From 192.168.10.10 icmp_seq=4 Destination Port Unreachable
--- 192.168.10.10 ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3002ms
#使用DROP策略,无法准确判断对方主机信息
[root@localhost ~]# ping -c 4 192.168.10.10
PING 192.168.10.10 (192.168.10.10) 56(84) bytes of data.
--- 192.168.10.10 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3000ms
基本的命令参数
iptables命令可以根据流量的源地址、目的地址、传输协议、服务类型等信息进行匹配,一旦匹配成功,iptables就会根据策略规则所预设的动作来处理这些流量。
iptables中常用的参数以及作用:
参数 | 作用 |
---|---|
-P |
设置默认策略 |
-F |
清空规则链 |
-L |
查看规则链 |
-A |
在规则链的末尾加入新规则 |
-I num |
在规则链的头部加入新规则 |
-D num |
删除某一条规则 |
-s |
匹配来源地址IP/MASK,加叹号! 表示除这个IP外 |
-d |
匹配目标地址 |
-i |
网卡名称 匹配从这块网卡流入的数据 |
-o |
网卡名称 匹配从这块网卡流出的数据 |
-p |
匹配协议,如TCP、UDP、ICMP |
--dport num |
匹配目标端口号 |
--sport num |
匹配来源端口号 |
代码演示&