zoukankan      html  css  js  c++  java
  • Firewalld 的基本使用

      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.
  • 相关阅读:
    笔记:JDBC 数据库
    笔记:Eclipse 安装 m2eclipse 插件
    Maven 生成项目站点
    Maven 项目报告插件
    【学习总结】《大话数据结构》- 第8章-查找
    【问题解决方案】Markdown正文中慎用星号否则容易变斜体
    【学习总结】《大话数据结构》- 第7章-图
    【学习总结】《大话数据结构》- 第6章-树
    【刷题】求出栈序列个数之卡特兰数公式
    【学习总结】《大话数据结构》- 第5章-串
  • 原文地址:https://www.cnblogs.com/xuewenlong/p/12809330.html
Copyright © 2011-2022 走看看