2020-07-18 上海

firewalld服务

firewalld是Linux系列最新的网络防火墙管理服务,它包装了之前iptables,并非替换iptables,通过提供更加方便操作来提升服务质量。

firewalld中引入zoneservices的概念,而不是iptables中的chainrules
firewalld能够动态的改变规则集,同时不会影响已经建立起来的connection和session

安装和管理firewalld

sudo yum install firewalld # 安装firewalld服务
sudo systemctl start firewalld # 启动firewalld服务
sudo systemctl stop firewalld # 停用firewalld服务
sudo systemctl enable firewalld # 设置firewalld自启动
sudo systemctl status firewalld # 查看firewalld运行状态

firewalld服务管理

firewalld服务的相关设置通过命令firewall-cmd来完成。

比如:输出当前防火墙是否在运行

[root@localhost ~]# firewall-cmd --state
running

firewalld配置

firewalld的配置是通过XML文件的形式,当然我们的配置途径是通过firewall-cmd命令完成,避免直接去操作xml文件去配置,配置文件主要放置在如下两个目录:

  • /usr/lib/firewalld:这里保存着预定义默认的zone和通用serivce的配置,这里面的配置不要去修改,因为firewalld的包升级会更新里面的内容
  • /etc/firewalld:这里面保存着系统配置文件,这里面的配置内容优先覆盖上面目录的配置内容

firewalld的配置集(configuration sets)分为两类: RuntimePermanent.
Runtime:这类配置只能运用到当前的运行环境中,一旦重启机器或者重启firewalld服务,配置内容就丢失了
Permanent:这类配置持久化配置内容,在后续重启机器或者重启firewalld服务中会立即生效

两者的配置方式主要通过是否包含--permanent来区分,默认是Runtime,示例如下:

sudo firewall-cmd --zone=public --add-service=http --permanent # 当前配置为permanent规则
sudo firewall-cmd --zone=public --add-service=https            # 当前配置为Runtime规则
sudo firewall-cmd --reload # 重启firewalld服务,此时上面https服务配置丢失,http配置开始生效, 同时需要注意的时,如果已经使用之前Runtime规则建立起来的连接仍然有效,这一点由firewalld的特点决定的

zone概念

zone引入的主要作用是将应用不同场景的规则进行打包,提供更高程度的抽象,而不像iptables那种比较原始的哪些端口开通或者拒绝,通过zone的规则封装以及zone本身的语义化,可以更好的帮助理解和复用.

zone的配置可以作用在不同网络接口上,如果某网络接口没有指定zone,则默认使用默认的zone.

查看默认zone的命令如下:
sudo firewall-cmd --get-default-zone

当然,你也可以修改默认的zone:
sudo firewall-cmd --set-default-zone=zoneXXX

查看已经被网络接口应用的zone列表:
sudo firewall-cmd --get-active-zones

查看具体zone的详细信息:
sudo firewall-cmd --zone=zoneXXX --list-all

查看所有zone的详细信息:
sudo firewall-cmd --list-all-zones

示例:

[root@localhost firewalld]# firewall-cmd --get-default-zone
public
[root@localhost firewalld]# firewall-cmd --get-active-zones
publicinterfaces: ens33
[root@localhost firewalld]#
[root@localhost firewalld]# firewall-cmd --get-default-zone
public
[root@localhost firewalld]# firewall-cmd --get-active-zones
publicinterfaces: ens33
[root@localhost firewalld]# firewall-cmd --zone=public --list-all
public (active)target: defaulticmp-block-inversion: nointerfaces: ens33sources:services: ssh dhcpv6-clientports: 2181/tcpprotocols:masquerade: noforward-ports:source-ports:icmp-blocks:rich rules:[root@localhost firewalld]# firewall-cmd --list-all-zones
public (active)target: defaulticmp-block-inversion: nointerfaces: ens33sources:services: ssh dhcpv6-clientports: 2181/tcpprotocols:masquerade: noforward-ports:source-ports:icmp-blocks:rich rules:trustedtarget: ACCEPTicmp-block-inversion: nointerfaces:sources:services:ports:protocols:masquerade: noforward-ports:source-ports:icmp-blocks:rich rules:...省略...

service概念

firewalld可以应用针对特定服务而预定义的规则集,当然用户可以自定义自己的服务,然后将其运营在任何的zone上.
默认支持的service定义放在目录: /usr/lib/firewalld/services.
用户自定义的service定义放在目录: /etc/firewalld/services.

查看默认可用的服务:
sudo firewall-cmd --get-services

应用service到zone上:

sudo firewall-cmd --zone=public --add-service=http --permanent # 配置service到zone
sudo firewall-cmd --zone=public --remove-service=http --permanent # 从zone中删除指定的service

通过查看预定义的service配置文件,我们可以自定义自己的service,写法也比较简单,需要注意的是,文件放到/etc/firewalld/serivces目录下:

<?xml version="1.0" encoding="utf-8"?>
<service><short>Jiangjian Demo Service</short><description>just test</description><port protocol="udp" port="8081"/>
</service>

允许或者拒绝任意端口/协议

通过如下命令完成:

sudo firewall-cmd --zone=pubic --add-port=1234/tcp --permanent # 允许TCP端口1234
sudo firewall-cmd --zone=public --remove-port=1234/tcp --permanent # 拒绝TCP端口1234

Forwarding(转发)

  1. 相同主机内不同端口间转发.
    命令格式: sudo firewall-cmd --zone=public --add-forward-port=port=80:prto=tcp:toport=1234 # 将80端口的请求转发给端口1234

  2. 不同主机间的转发.

  • 激活zone的masquerade,命令格式为: sudo firewall-cmd --zone=public --add-masquerade
  • 设置转发,命令格式为: sudo firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=198.1.1.2
  • 如果需要删除不同主机间的转发配置,命令格式为:sudo firewall-cmd --zone=public --remove-masquerade

网络接口添加/删除zone

sudo firewall-cmd --zone=dmz --add-interface=ens33    # 将dmz zone配置应用到网络接口ens33
sudo firewall-cmd --zone=dmz --remove-interface=ens33 # 将dmz zone配置从网络接口ens33删除

Rich rules

firewalld定义了一套DSL,具体的语言细节参考: https://jpopelka.fedorapeople.org/firewalld/doc/firewalld.richlanguage.html
我们通过--add-rich-rule, --list-rich-rules--remove-rich-rule去管理rich rule.

示例:

sudo firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address=192.0.2.0 accept' # 允许所有来着192.0.2.0的ipv4流量
sudo firewall-cmd --zone=public --add-rich-rule 'rule family="ipv4" source address="192.0.2.0" port port=22 protocol=tcp reject' # 拒绝来着192.0.2.0的tcp 流量到端口22
sudo firewall-cmd --zone=public --list-rich-rules # 查看zone public所有的rich rule

Iptables操作

firewalld提供操作直接操作iptables的入口

firewall-cmd --direct --get-all-chains # 获取iptables配置的chains
firewall-cmd --direct --get-all-rules  # 获取iptables配置的rules

【Linux命令每日一知】firewall-cmd--防火墙管理相关推荐

  1. 【10】linux命令每日分享——cp复制文件和目录

    大家好,这里是sdust-vrlab,Linux是一种免费使用和自由传播的 类UNIX操作系统,Linux的基本思想有两点:一切都是文件:每个文件都有确定的用途:linux涉及到IT行业的方方面面,在 ...

  2. 【12】linux命令每日分享——echo命令为用户添加密码

    大家好,这里是sdust-vrlab,Linux是一种免费使用和自由传播的 类UNIX操作系统,Linux的基本思想有两点:一切都是文件:每个文件都有确定的用途:linux涉及到IT行业的方方面面,在 ...

  3. linux echo 指向文件夹,Linux 命令每日一练:echo命令

    Linux中echo命令 ->英文含义:回声.共鸣.重复.可以理解记忆为: 重复之前的内容得到响应然后打印输出一行文本,一般起到一个提示的作用. 命令格式: echo[选项]-[字符串/数字]- ...

  4. L29.linux命令每日一练 -- 第四章 文本处理三剑客 -- sed命令

    4.2 sed:流编辑器 4.2.1 sed命令语法及参数说明 ​ [命令星级] ★★★★★ ​ [功能说明] ​ sed是Stream Editor(字符流编辑器)的缩写,简称流编辑器.它是Linu ...

  5. 文件节点的linux指令,Java工程师必学的Linux命令(一)文件与目录管理

    从本篇文章开始,我将总结一些Java工程师日常研发工作中会使用到的Linux命令,在介绍这些命令的过程中,也会对Linux系统的一些基础知识进行普及.希望对大家工作和学习有所帮助吧. 本篇将从文件与目 ...

  6. Firewall Analyzer防火墙管理

    企业防火墙管理 典型的企业网络安全基础设施包括传统防火墙.下一代防火墙 (NGFW).虚拟专用网络 (VPN) 和来自多个供应商的代理服务器.网络安全管理,特别是防火墙安全管理尤其棘手,因为每个供应商 ...

  7. L60.linux命令每日一练 -- 第九章 Linux进程管理命令 -- top和nice

    9.7 top:实时显示系统中各个进程的资源占有状况 9.7.1 命令详解 ​ [命令星级] ★★★★★ ​ [功能说明] ​ top命令用于实时地对系统处理器状态进行监控,它能够实时地显示系统中各个 ...

  8. L70.linux命令每日一练 -- 第十章 Linux网络管理命令 -- nc和ssh

    10.13 nc:多功能网络工具 10.13.1 命令详解 ​ [命令星级] ★★★★☆ ​ [功能说明] ​ nc是一个简单.可靠.强大的网络工具,它可以建立TCP连接,发送UDP数据包,监听任意的 ...

  9. Linux命令之Centos 7 systemctl和防火墙firewalld命令(初学一)

    如上图:可以在本地的git bash中通过ssh来连接登录linux服务器 语法:ssh 用户名@IP -p 端口   (因为ssh默认端口是22)   也可以是ssh 用户名@IP 2.echo命令 ...

  10. Linux文本编辑跳到指定行,Linux 命令每日一练:vi命令

    Linux中vi 命令 ->可以理解记忆为:visual insert(即可视化插入)-> 是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器.Linux中的vi编辑器叫v ...

最新文章

  1. PLMN概念和应用设置
  2. 上传图片和音频到DB
  3. linux socat rpm,RabbitMQ系列(三)RabbitMQ Server的安装(基于Linux RPM)
  4. 掌握spec只需读这一篇文章,CentOS、RedHat、SUSE粉的福利来了
  5. python3函数写文件路径时,怎么写文件路径
  6. 【积少成多】vi的进阶使用
  7. 蔚来汽车股价跌跌不休 盘中触及上市以来最低点
  8. Spring MVC 基于Method的映射规则(注解版)
  9. mfc在运行的时候为什么没有实例化_Redis(7)——持久化【一文了解】
  10. 6.12使用tensorflow来搭建一个Transformer
  11. DDR3的配置及仿真教程
  12. 【Codecs系列】码率控制之VBV实现原理
  13. frame切换/窗口切换
  14. css文字怎么显示在一起,css如何让文字成排显示
  15. GitHub圣诞最火神器:“时光穿梭机”一键实现变老变年轻!
  16. torch.nn.MaxPool1d各参数分析
  17. python中break和continue区别_Python break和continue用法及区别
  18. 有关 Java Long 型数据的比较
  19. Duilib样式性大全-Duilib属性大全-Duilib XML属性大全-Duilib XML样式大全
  20. Springboot实现MQTT通信

热门文章

  1. 感谢高考,让我涅槃重生
  2. 双十二好用电容笔怎么选?十大电容笔知名品牌
  3. 护眼台灯到底有没有用?护眼灯好物推荐
  4. C++ Java 23种设计模式的uml图表示及通俗介绍
  5. 二维burgers方程_二维Burgers方程的格子Boltzmann模型
  6. 功能性食品国稻种芯药食同源大健康 第六届食品科技创新论坛
  7. linux终端怎么设置开机密码,Linux系统怎么设置开机密码?Linux设置开机密码的方法...
  8. NOIP2016参赛日志+总结
  9. 【win11系统下vivado无法安装license】
  10. chatgpt赋能python:如何打出Python中的横杠——一个SEO优化指南