【Linux命令每日一知】firewall-cmd--防火墙管理
2020-07-18 上海
firewalld服务
firewalld是Linux系列最新的网络防火墙管理服务,它包装了之前iptables
,并非替换iptables
,通过提供更加方便操作来提升服务质量。
firewalld中引入zone和services的概念,而不是iptables
中的chain和rules
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)分为两类: Runtime
和Permanent
.
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(转发)
相同主机内不同端口间转发.
命令格式:sudo firewall-cmd --zone=public --add-forward-port=port=80:prto=tcp:toport=1234 # 将80端口的请求转发给端口1234
不同主机间的转发.
- 激活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--防火墙管理相关推荐
- 【10】linux命令每日分享——cp复制文件和目录
大家好,这里是sdust-vrlab,Linux是一种免费使用和自由传播的 类UNIX操作系统,Linux的基本思想有两点:一切都是文件:每个文件都有确定的用途:linux涉及到IT行业的方方面面,在 ...
- 【12】linux命令每日分享——echo命令为用户添加密码
大家好,这里是sdust-vrlab,Linux是一种免费使用和自由传播的 类UNIX操作系统,Linux的基本思想有两点:一切都是文件:每个文件都有确定的用途:linux涉及到IT行业的方方面面,在 ...
- linux echo 指向文件夹,Linux 命令每日一练:echo命令
Linux中echo命令 ->英文含义:回声.共鸣.重复.可以理解记忆为: 重复之前的内容得到响应然后打印输出一行文本,一般起到一个提示的作用. 命令格式: echo[选项]-[字符串/数字]- ...
- L29.linux命令每日一练 -- 第四章 文本处理三剑客 -- sed命令
4.2 sed:流编辑器 4.2.1 sed命令语法及参数说明 [命令星级] ★★★★★ [功能说明] sed是Stream Editor(字符流编辑器)的缩写,简称流编辑器.它是Linu ...
- 文件节点的linux指令,Java工程师必学的Linux命令(一)文件与目录管理
从本篇文章开始,我将总结一些Java工程师日常研发工作中会使用到的Linux命令,在介绍这些命令的过程中,也会对Linux系统的一些基础知识进行普及.希望对大家工作和学习有所帮助吧. 本篇将从文件与目 ...
- Firewall Analyzer防火墙管理
企业防火墙管理 典型的企业网络安全基础设施包括传统防火墙.下一代防火墙 (NGFW).虚拟专用网络 (VPN) 和来自多个供应商的代理服务器.网络安全管理,特别是防火墙安全管理尤其棘手,因为每个供应商 ...
- L60.linux命令每日一练 -- 第九章 Linux进程管理命令 -- top和nice
9.7 top:实时显示系统中各个进程的资源占有状况 9.7.1 命令详解 [命令星级] ★★★★★ [功能说明] top命令用于实时地对系统处理器状态进行监控,它能够实时地显示系统中各个 ...
- L70.linux命令每日一练 -- 第十章 Linux网络管理命令 -- nc和ssh
10.13 nc:多功能网络工具 10.13.1 命令详解 [命令星级] ★★★★☆ [功能说明] nc是一个简单.可靠.强大的网络工具,它可以建立TCP连接,发送UDP数据包,监听任意的 ...
- Linux命令之Centos 7 systemctl和防火墙firewalld命令(初学一)
如上图:可以在本地的git bash中通过ssh来连接登录linux服务器 语法:ssh 用户名@IP -p 端口 (因为ssh默认端口是22) 也可以是ssh 用户名@IP 2.echo命令 ...
- Linux文本编辑跳到指定行,Linux 命令每日一练:vi命令
Linux中vi 命令 ->可以理解记忆为:visual insert(即可视化插入)-> 是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器.Linux中的vi编辑器叫v ...
最新文章
- PLMN概念和应用设置
- 上传图片和音频到DB
- linux socat rpm,RabbitMQ系列(三)RabbitMQ Server的安装(基于Linux RPM)
- 掌握spec只需读这一篇文章,CentOS、RedHat、SUSE粉的福利来了
- python3函数写文件路径时,怎么写文件路径
- 【积少成多】vi的进阶使用
- 蔚来汽车股价跌跌不休 盘中触及上市以来最低点
- Spring MVC 基于Method的映射规则(注解版)
- mfc在运行的时候为什么没有实例化_Redis(7)——持久化【一文了解】
- 6.12使用tensorflow来搭建一个Transformer
- DDR3的配置及仿真教程
- 【Codecs系列】码率控制之VBV实现原理
- frame切换/窗口切换
- css文字怎么显示在一起,css如何让文字成排显示
- GitHub圣诞最火神器:“时光穿梭机”一键实现变老变年轻!
- torch.nn.MaxPool1d各参数分析
- python中break和continue区别_Python break和continue用法及区别
- 有关 Java Long 型数据的比较
- Duilib样式性大全-Duilib属性大全-Duilib XML属性大全-Duilib XML样式大全
- Springboot实现MQTT通信
热门文章
- 感谢高考,让我涅槃重生
- 双十二好用电容笔怎么选?十大电容笔知名品牌
- 护眼台灯到底有没有用?护眼灯好物推荐
- C++ Java 23种设计模式的uml图表示及通俗介绍
- 二维burgers方程_二维Burgers方程的格子Boltzmann模型
- 功能性食品国稻种芯药食同源大健康 第六届食品科技创新论坛
- linux终端怎么设置开机密码,Linux系统怎么设置开机密码?Linux设置开机密码的方法...
- NOIP2016参赛日志+总结
- 【win11系统下vivado无法安装license】
- chatgpt赋能python:如何打出Python中的横杠——一个SEO优化指南