RHEL7 linux防火墙详解

一 .了解防火墙管理工具

    防火墙虽有软件或硬件之分但主要功能还是依据策略对外部请求进行过滤,成为公网与内网之间的保护屏障
防火墙会监控每一个数据包并判断是否有相应的匹配策略规则,直到满足其中一条策略规则为止,而防火墙规则策
略可以是基于来源地址、请求动作或协议来定制的,最终仅让合法的用户请求流入到内网中,其余的均被丢弃

   红帽 RHEL7 系统中 firewalld 服务取代了 iptables 服务,但依然可以使用 iptables 命令来管理内
核的netfilter ,这对于接触 Linux 系统比较早或学习过红帽 RHEL6 系统的读者来讲,突然接触 firewalld 
服务会比较抵触,可能会觉得新增 Firewalld 服务是一次不小的改变,其实这样讲也是有道理的。但其实Iptables
服务与Firewalld 服务都不是真正的防火墙,它们都只是用来定义防火墙规则功能的“防火墙管理工具”,将定义
好的规则交由内核中的netfilter 即网络过滤器来读取,从而真正实现防火墙功能,所以其实在配置规则的思路上
是完全一致的

   Firewalld 服务是红帽 RHEL7 系统中默认的防火墙管理工具,特点是拥有运行时配置与永久配置选项且能够支持
动态更新以及“zone”的区域功能概念,使用图形化工具 firewall-config 或文本管理工具 firewall-cmd,这里主
要介绍文本管理工具。

二  .防火墙的区域概念
     1.防火墙的网络区域定义了网络连接的可信等级,我们可以根据不同场景来调用不同的 firewalld 区域,区域
  规则有如下:
  trusted 允许所有的数据包。  
  home   拒绝流入的数据包,除非与输出流量数据包相关或是 ssh,mdns,ipp-client,samba-client 与 
  dhcpv6-client服务则允许
  work 拒绝流入的数据包,除非与输出流量数据包相关或是 ssh,ipp-client 与 dhcpv6-client 服务则允许。
  public 拒绝流入的数据包,除非与输出流量数据包相关或是 ssh,dhcpv6-client 服务则允许。
  externa 拒绝流入的数据包,除非与输出流量数据包相关或是 ssh 服务则允许。
  dmz 拒绝流入的数据包,除非与输出流量数据包相关或是 ssh 服务则允许。
  block 拒绝流入的数据包,除非与输出流量数据包相关。
  drop 拒绝流入的数据包,除非与输出流量数据包相关。
  简单来讲就是为用户预先准备了几套规则集合,我们可以根据场景的不同选择合适的规矩集合
   2,防火墙进入区域的规则:匹配即停止
 (1)查看数据包中的原ip地址,再查看防火墙中哪个区域有源ip地址的规则,哪个区域有,则进入该区域
 (2)默认区域为为public  

三. 字符管理工具
   如果想要更高效的配置妥当防火墙,那么就一定要学习字符管理工具 firewall-cmd 命令,命令参数有:
    参数                  作用
--get-default-zone 查询默认的区域名称。
--set-default-zone=<区域名称> 设置默认的区域,永久生效。
--get-zones 显示可用的区域。
--get-services 显示预先定义的服务。
--get-active-zones 显示当前正在使用的区域与网卡名称。
--add-source= 将来源于此 IP 或子网的流量导向指定的区域。
--remove-source= 不再将此 IP 或子网的流量导向某个指定区域。
--add-interface=<网卡名称> 将来自于该网卡的所有流量都导向某个指定区域。
--change-interface=<网卡名称> 将某个网卡与区域做关联。
--list-all 显示当前区域的网卡配置参数,资源,端口以及服务等信息。
--list-all-zones 显示所有区域的网卡配置参数,资源,端口以及服务等信息。
--add-service=<服务名> 设置默认区域允许该服务的流量。
--add-port=<端口号/协议> 允许默认区域允许该端口的流量。
--remove-service=<服务名> 设置默认区域不再允许该服务的流量。
--remove-port=<端口号/协议> 允许默认区域不再允许该端口的流量。
--reload 让“永久生效”的配置规则立即生效,覆盖当前的。
  特别需要注意的是 firewalld 服务有两份规则策略配置记录,必需要能够区分:
  RunTime:当前正在生效的。
  Permanent:永久生效的。
四.来一些例子: 
  当下面实验修改的是永久生效的策略记录时,必须执行”–reload“参数后才能立即生效,否则要重启后再生效。
查看当前的区域:
  [root@linuxprobe ~]# firewall-cmd --get-default-zone
  public
查询 eno16777728 网卡的区域:
[root@linuxprobe ~]# firewall-cmd --get-zone-of-interface=eno16777728
public
在 public 中分别查询 ssh 与 http 服务是否被允许:
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=ssh
yes
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=http
no
设置默认规则为 dmz:
[root@linuxprobe ~]# firewall-cmd --set-default-zone=dmz
让“永久生效”的配置文件立即生效:
[root@linuxprobe ~]# firewall-cmd --reload
success
启动/关闭应急状况模式,阻断所有网络连接:
应急状况模式启动后会禁止所有的网络连接,一切服务的请求也都会被拒绝,当心,请慎用。
[root@linuxprobe ~]# firewall-cmd --panic-on
success
[root@linuxprobe ~]# firewall-cmd --panic-off
success
如果您已经能够完全理解上面练习中 firewall-cmd 命令的参数作用,不妨来尝试完成下面的模拟训练吧:
模拟训练 A:允许 https 服务流量通过 public 区域,要求立即生效且永久有效:
方法一:分别设置当前生效与永久有效的规则记录:
[root@linuxprobe ~]# firewall-cmd --zone=public --add-service=https
[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-service=https 
方法二:设置永久生效的规则记录后读取记录:
[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-service=https
[root@linuxprobe ~]# firewall-cmd --reload

模拟训练 B:不再允许 http 服务流量通过 public 区域,要求立即生效且永久生效:
[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --remove-service=http
success
使用参数“–reload“让永久生效的配置文件立即生效:
[root@linuxprobe ~]# firewall-cmd --reload
success

模拟训练 C:允许 8080 与 8081 端口流量通过 public 区域,立即生效且永久生效:
[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp
[root@linuxprobe ~]# firewall-cmd --reload

模拟训练 D:查看模拟实验 C 中要求加入的端口操作是否成功:
[root@linuxprobe ~]# firewall-cmd --zone=public --list-ports
8080-8081/tcp
[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --list-ports
8080-8081/tcp

模拟实验 E:将 eno16777728 网卡的区域修改为 external,重启后生效:
[root@linuxprobe ~]# firewall-cmd --permanent --zone=external --change-interface=eno16777728
success
[root@linuxprobe ~]# firewall-cmd --get-zone-of-interface=eno16777728
public
再次注意立即生效与重启后依然生效的差别,千万不要修改错了。

模拟实验 F:设置富规则,拒绝 192.168.10.0/24 网段的用户访问 ssh 服务:
firewalld 服务的富规则用于对服务、端口、协议进行更详细的配置,规则的优先级最高。
[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source

添加源IP规则设置
添加:
firewall-cmd --zone=block --add-source=172.25.0.10
删除:
firewall-cmd --zone=block --remove-source=172.25.0.10

猜你喜欢

转载自blog.csdn.net/weixin_42104231/article/details/82695317