RHEL 7 系统中集成了多款防火墙管理工具,其中 firewalld(Dynamic Firewall Manager of Linux systems,Linux 系统的动态防火墙管理器)服务是默认的防火墙配置管理工具,它拥有基于 CLI(命 令行界面)和基于 GUI(图形用户界面)的两种管理方式。
  相较于传统的防火墙管理配置工具,firewalld 支持动态更新技术并加入了区域(zone) 的概念。简单来说,区域就是 firewalld 预先准备了几套防火墙策略集合(策略模板),用户可 以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。例如, 我们有一台笔记本电脑,每天都要在办公室、咖啡厅和家里使用。按常理来讲,这三者的安 全性按照由高到低的顺序来排列,应该是家庭、公司办公室、咖啡厅。当前,我们希望为这 台笔记本电脑指定如下防火墙策略规则:在家中允许访问所有服务;在办公室内仅允许访问 文件共享服务;在咖啡厅仅允许上网浏览。在以往,我们需要频繁地手动设置防火墙策略规 则,而现在只需要预设好区域集合,然后只需轻点鼠标就可以自动切换了,从而极大地提升 了防火墙策略的应用效率。
  
firewalld 中常见的区域名称(默认为 public)以及相应的策略规则 如表 

firewalld 中常用的区域名称及测了规则

区域
默认策略规则
trusted
允许所有的数据包
home
拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh、mdns、ipp-client、 amba-client 与 dhcpv6-client 服务相关,则允许流量
internal
等同于 home 区域
work
拒绝流入的流量,除非与流出的流量数相关;而如果流量与 ssh、ipp-client 与 dhcpv6-client 服务相关,则允许流量
public
拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh、dhcpv6-client 服务 相关,则允许流量
external
拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh 服务相关,则允许流量
dmz
拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh 服务相关,则允许流量
block
拒绝流入的流量,除非与流出的流量相关
drop
拒绝流入的流量,除非与流出的流量相关

终端管理工具

在讲解 Linux 命令时曾经听到,命令行终端是一种极富效率的工作方式, firewalld-cmd 是 firewalld 防火墙配置管理工具的 CLI(命令行界面)版本。它的参数一般都 是以“长格式”来提供的,大家不要一听到长格式就头大,因为 RHEL 7 系统支持部分命令 的参数补齐,其中就包含这条命令(很酷吧)。也就是说,现在除了能用 Tab 键自动补齐命令 或文件名等内容之外,还可以用 Tab 键来补齐表 2 中所示的长格式参数了。
表 2 firewalld-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
让“永久生效”的配置规则立即生效,并覆盖当前的配置规则
--panic-on
开启应急状况模式
--panic-off
关闭应急状况模式
 
  与 Linux 系统中其他的防火墙策略配置工具一样,使用 firewalld 配置的防火墙策略默认 为运行时(Runtime)模式,又称为当前生效模式,而且随着系统的重启会失效。如果想让配 置策略一直存在,就需要使用永久(Permanent)模式了,方法就是在用 firewall-cmd 命令正 常设置防火墙策略时添加--permanent 参数,这样配置的防火墙策略就可以永久生效了。但是,永久生效模式有一个“不近人情”的特点,就是使用它设置的策略只有在系统重启之 后才能自动生效。
  如果想让配置的策略立即生效,需要手动执行 firewall-cmd --reload 命令。

常用示例

  接下来的实验都很简单,但是提醒大家一定要仔细查看刘遄老师使用的是 Runtime 模式 还是 Permanent 模式。如果不关注这个细节,就算是正确配置了防火墙策略,也可能无法达 到预期的效果。
查看 firewalld 服务当前所使用的区域:
[root@linuxprobe ~]# firewall-cmd --get-default-zone
public
查询 eno16777728 网卡在 firewalld 服务中的区域:
[root@linuxprobe ~]# firewall-cmd --get-zone-of-interface=eno16777728
public 
把 firewalld 服务中 eno16777728 网卡的默认区域修改为 external,并在系统重启后生效。
分别查看当前与永久模式下的区域名称:
[root@linuxprobe ~]# firewall-cmd --permanent --zone=external --change-interface= eno16777728 success
[root@linuxprobe ~]# firewall-cmd --get-zone-of-interface=eno16777728
public
[root@linuxprobe ~]# firewall-cmd --permanent --get-zone-of-interface=eno16777728 external  
把 firewalld 服务的当前默认区域设置为 public:
[root@linuxprobe ~]# firewall-cmd --set-default-zone=public
success
[root@linuxprobe ~]# firewall-cmd --get-default-zone
public 
启动/关闭 firewalld 防火墙服务的应急状况模式,阻断一切网络连接(当远程控制服务器 时请慎用):

 [root@linuxprobe ~]# firewall-cmd --panic-on
success
[root@linuxprobe ~]# firewall-cmd --panic-off
success
查询 public 区域是否允许请求 SSH 和 HTTPS 协议的流量:
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=ssh
yes
[root@linuxprobe ~]# firewall-cmd --zone=public --query-service=https
no
把 firewalld 服务中请求 HTTPS 协议的流量设置为永久允许,并立即生效:

[root@linuxprobe ~]# firewall-cmd --zone=public --add-service=https
success
[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-service=https
success
[root@linuxprobe ~]# firewall-cmd --reload
success
把 firewalld 服务中请求 HTTP 协议的流量设置为永久拒绝,并立即生效:

[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --remove-service=http
success [root@linuxprobe ~]# firewall-cmd --reload
success 
把在 firewalld 服务中访问 8080 和 8081 端口的流量策略设置为允许,但仅限当前生效:

[root@linuxprobe ~]# firewall-cmd --zone=public --add-port=8080-8081/tcp
success
[root@linuxprobe ~]# firewall-cmd --zone=public --list-ports
8080-8081/tcp
把原本访问本机 888 端口的流量转发到 22 端口,要且求当前和长期均有效:
注: 流量转发命令格式为 firewall-cmd --permanent --zone=<区域> --add-forward-port=port= <源端口号>:proto=<协议>:toport=<目标端口号>:toaddr=<目标 IP 地址>

[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=192.168.10.10
success
[root@linuxprobe ~]# firewall-cmd --reload
success
在客户端使用 ssh 命令尝试访问 192.168.10.10 主机的 888 端口: 
[root@client A ~]# ssh -p 888 192.168.10.10
The authenticity of host '[192.168.10.10]:888 ([192.168.10.10]:888)' can't be established.
ECDSA key fingerprint is b8:25:88:89:5c:05:b6:dd:ef:76:63:ff:1a:54:02:1a. Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.10.10]:888' (ECDSA) to the list of known hosts. root@192.168.10.10's password:此处输入远程 root 管理员的密码
Last login: Sun Jul 19 21:43:48 2017 from 192.168.10.10
firewalld 中的富规则表示更细致、更详细的防火墙策略配置,它可以针对系统服务、端 口号、源地址和目标地址等诸多信息进行更有正对性的策略配置。
它的优先级在所有的防火 墙策略中也是高的。
比如,我们可以在 firewalld 服务中配置一条富规则,使其拒绝 192.168.10.0/24 网段的所有用户访问本机的 ssh 服务(22 端口):

[root@linuxprobe ~]# firewall-cmd --permanent --zone=public --add-rich-rule=" rule family="ipv4" source address="192.168.10.0/24" service name="ssh" reject"
success
[root@linuxprobe ~]# firewall-cmd --reload success
在客户端使用 ssh 命令尝试访问 192.168.10.10 主机的 ssh 服务(22 端口):

[root@client A ~]# ssh 192.168.10.10
Connecting to 192.168.10.10:22...
Could not connect to '192.168.10.10' (port 22): Connection failed.

Firewalld 的基本使用的更多相关文章

  1. CentOS7使用firewalld打开关闭防火墙与端口(转载)

    1.firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status firewalld 停止: systemctl disabl ...

  2. CentOS7使用firewalld打开关闭防火墙与端口

    1.firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status firewalld  停止: systemctl disab ...

  3. linux系统的初化始配置(包括网络,主机名,关闭firewalld与selinux)

    每次我们使用Linux都会对系统进行初始化的配置,下面我们一一列出来. 1.服务的开启 systemctl enable firewalld.service //将指定的服务设置为开机启动 syste ...

  4. Centos7的firewalld配置

    红帽官方的使用文档: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Gu ...

  5. Linux防火墙配置(iptables, firewalld)

    netfilter和底层实现 iptables firealld Linux中的防火墙 RHEL中有几种防火墙共存: iptables firewalld ip6tables ebtables 这些软 ...

  6. centos7 firewalld

    1.firewalld简介 firewalld是centos7的一大特性,最大的好处有两个: 1.支持动态更新,不用重启服务: 2.加入了防火墙的"zone"概念   firewa ...

  7. centos7 开启防火墙端口 firewalld

    systemctl start firewalld firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd -- ...

  8. 关于firewalld防火墙的使用

    要想使用该防火墙,应该需要安装 networkmanager 并启动其服务.因为之前使用的是 netctl 提供的wifi-menu 来连接无线网络,导致安装networkmanager之后启动 Ne ...

  9. Centos7 关闭防火墙(Firewalld ),使用防火墙(iptables)

    1.直接关闭防火墙 systemctl stop firewalld.service: #停止firewall systemctl disable firewalld.service: #禁止fire ...

  10. Linux系统的初化始配置(包括配置网络,修改主机名,关闭firewalld与selinux的生效)

    一.配置网络环境 1.运行 cmd 查看本机的ip地址,然后记录下来. 2.网络和共享中心--本地连接属性如下: 手工配置到本地连接上面 IP:172.16.191.215,DNS:101.7.8.9 ...

随机推荐

  1. vue-cli项目上传到github预览问题

    上传前先npm run build 后git push origin master 问题:chunk无法加载? 原因:在github.io请求chunk时,chunk的url使用的是publicPat ...

  2. 8086 8255A proteus仿真实验

    目录 实验内容 电路图 电路分析 代码 实验内容 数码管循环显示0123456789abcdef- 电路图 电路分析 端口地址和控制字地址主要看电路图,片选信号由译码器的\(\overline{IO1 ...

  3. zz MySQL redo log及recover过程浅析

    原作地址:http://www.cnblogs.com/liuhao/p/3714012.html 写在前面:作者水平有限,欢迎不吝赐教,一切以最新源码为准. InnoDB redo log 首先介绍 ...

  4. hadoop(hbase)副本数修改

    一.需求场景 随着业务数据的快速增长,物理磁盘剩余空间告警,需要将数据备份从3份修改为1份,从而快速腾出可用磁盘容量. 二.解决方案 1. 修改hdfs的副本数 Hbase 的数据是存储在 hdfs ...

  5. Spring 中基于 AOP 的 XML架构

    Spring 中基于 AOP 的 XML架构 为了使用 aop 命名空间标签,你需要导入 spring-aop j架构,如下所述: <?xml version="1.0" e ...

  6. Linux 下三种提高工作效率的文件处理技巧

    Linux 下三种提高工作效率的文件处理技巧 在 Linux 下工作,打交道最多的就是文件了,毕竟 Linux 下工作一切皆文件嘛.Linux 也为大家提供了多种用于处理文件的命令,合理使用这些命令可 ...

  7. Ubuntu 安装 rabbitmq

    第一步:安装 erlang 官网:https://www.erlang-solutions.com/resources/download.html 然后在终端输入:erl 显示如下,说明安装成功! E ...

  8. [推荐]大量 Blazor 学习资源(一)

    前言 / Introduction Blazor 是什么? Blazor 允许您使用 C# 而不是 JavaScript 构建交互式 Web UI. Blazor 应用由使用 C#.HTML 和 CS ...

  9. Nginx 实现 HTTPS(基于 Let's Encrypt 的免费证书)

    SSL / TLS加密会为您的用户带来更高的搜索排名和更好的安全性. Let’s Encrypt 是一个认证机构(CA).它可以提供免费证书,并且已经被大多数浏览器所信任.另外,通过工具 Certbo ...

  10. 【Copy攻城狮日志】docker搭建jenkins拉取svn代码打包vue项目部署到nginx

    ↑开局一张图,故事全靠编↑ 前言 打开搜索引擎输入『Copy攻城狮』,发现最新的一条记录已经是去年的4月,意味着我又有一年时间没有再总结成长了.习惯了“温水煮青蛙”的日子,无论是经验水平还是薪资收入, ...