防火墙——firewalld
介绍
firewald是对于iptables的一个封装,可以让你更容易地管理iptables规则。firewalld是iptables前端控制器,用于实现持久地网络流量规则。
一、对比
firewalld与直接控制地iptables相对比:
- firewalld使用区域和服务而不是链式规则。
- firewalld动态地管理规则集,允许更新规则而不破坏现有回话和连接。
- firewalld的规则是默认拒绝,iptables的规则默认是允许。
二、区域
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 | 拒绝进入的流量,除非与出去的流量相关; |
相对应的这九个区域的配置文件存在于/usr/lib/firewalld/zones下。
默认情况下,在/etc/firewalld/zones下面有一个public.xml。如果给任何一个区域做一些改动,并永久保存,/etc/firewalld/zones就会自动生成对应的配置文件。
三、服务
在/usr/lib/firewalld/services目录中,还保存了另外一类配置文件,每个文件对应一项具体的网络服务,例如ssh服务等。与之对应的配置文件中记录了各项服务所使用的tcp/udp端口。当默认的服务不够用或者需要重新定义默认的服务端口时,就可以在此目录下进行配置。
优点: 通过服务名字来管理规则更加人性化;用服务来组织端口分组更加高效,如果一个服务需要多个端口,则在服务配置文件中就可以直接操作多个端口的开启和关闭。
四、命令
1、基础信息
#firewalld启动关闭重启
systemctl start firewalld
systemctl stop firewalld
systemctl restart firewalld
#查看firewalld的版本
firewall-cmd -V | firewall-cmd --version
#显示帮助
firewall-cmd -h | firewall-cmd --help
#显示防火墙的状态
firewall-cmd --state | systemctl status firewalld
#重新加载防火墙配置
firewall-cmd --reload
2、区域相关
#查看所有区域的名称
firewall-cmd --get-zones
#查看默认的区域名称
firewall-cmd --get-default-zone
#设置默认的区域
firewall-cmd --set-default-zone=区域名称
#显示正在使用的区域和对应的网卡名称
firewall-cmd --get-active-zone
#默认public区域拒绝所有流量,但如果来源IP是192.168.10.0/24网段则允许
[root@localhost ~]# firewall-cmd --zone=public --list-services #查看publicq区域中默认通行的服务
dhcpv6-client telnet[root@localhost ~]# firewall-cmd --zone=public --remove-service=dhcpv6-client --remove-service=telnet #删除public区域中的默认服务
success
[root@localhost ~]# firewall-cmd --zone=trusted --add-source=192.168.10.0/24 #将所有来自192.168.10.0/24的端口设置为通行
success
[root@localhost ~]# firewall-cmd --reload
success
3、端口相关
#查看当前开放的端口
firewall-cmd --list-ports
#开启指定端口,允许所有端口访问
[root@localhost ~]# firewall-cmd --zone=public --add-port=443/tcp --permanent
success
[root@localhost ~]# firewall-cmd --reload
success#移除某个开启的端口,允许所有端口访问
[root@localhost ~]# firewall-cmd --zone=public --remove-port=443/tcp --permanent
success
[root@localhost ~]# firewall-cmd --reload
success#查看某个端口是否开放
[root@localhost ~]# firewall-cmd --query-port=80/tcp
yes
4、富规则相关
#查看目前拥有的富规则
firewall-cmd --list-rich-rules
#开放某个端口只允许指定IP访问
[root@localhost ~]# firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.10.11" port protocol="tcp" port="443" accept" --permanent
success
[root@localhost ~]# firewall-cmd --reload
success#移除某个富规则
[root@localhost ~]# firewall-cmd --remove-rich-rule="rule family="ipv4" source address="192.168.10.11" port protocol="tcp" port="3306" accept" --permanent
success
[root@localhost ~]# firewall-cmd --reload
success
5、转发规则
#允许TCP端口转发
[root@localhost ~]# firewall-cmd --zone=public --add-masquerade
success
[root@localhost ~]# firewall-cmd --reload
success#将访问到本机的443端口的流量转发到192.168.10.10的80端口上
[root@localhost ~]# firewall-cmd --add-forward-port=port=443:proto=tcp:toport=80:toaddr=192.168.10.10 --permanent
success
[root@localhost ~]# firewall-cmd --reload
success#去除某条转发规则
[root@localhost ~]# firewall-cmd --remove-forward-port=port=443:proto=tcp:toport=80:toaddr=192.168.10.10 --permanent
success
[root@localhost ~]# firewall-cmd --reload
success#查看所有转发规则
[root@localhost ~]# firewall-cmd --list-forward-ports
port=80:proto=tcp:toport=80:toaddr=192.168.10.11
port=3306:proto=tcp:toport=80:toaddr=192.168.10.13
6、服务相关
#允许192.168.10.10主机访问ssh服务,等同于开放22端口
[root@localhost zones]# firewall-cmd --add-rich-rule="rule family="ipv4" source address="192.168.10.10" service name="ssh" accept" --zone=public
success
[root@localhost zones]# firewall-cmd --reload
success#每分钟允许两个新连接访问ftp服务
[root@localhost ~]# firewall-cmd --add-rich-rule="rule service name=ftp limit value=2/m accept" --permanent
success
[root@localhost ~]# firewall-cmd --reload
success#允许IPV6地址为1:2:3:4:6::子网的主机访问dns服务,并且每小时审核以西,300秒后自动取消
[root@localhost ~]# firewall-cmd --add-rich-rule="rule family="ipv6" source address="1:2:3:4:6::" service name="dns" audit limit value=1/h accept" --timeout=300
success
7、网卡相关
#查看指定网卡所对应的区域
[root@localhost ~]# firewall-cmd --get-zone-of-interface=ens33
public#修改指定网卡对应的区域
[root@localhost ~]# firewall-cmd --zone=drop --change-interface=ens33
success#将来自某个网卡的流量全部作用于drop区域
[root@localhost ~]# firewall-cmd --zone=drop --add-interface=ens33
success
[root@localhost ~]# firewall-cmd --reload
success
8、应急状况
此方法是防火墙的应急状况模式,启动后远程连接也会断掉
#检查应急状况是否开启
[root@localhost ~]# firewall-cmd --query-panic
no#开启应急状况
[root@localhost ~]# firewall-cmd --panic-on #拒绝所有流量,远程连接会立即断掉,只能本地登录
success
#关闭应急状况
[root@localhost ~]# firewall-cmd --panic-off #取消应急模式,但需要重新启动firewalld后才可以远程ssh
success
防火墙——firewalld的更多相关文章
- Centos 7防火墙firewalld开放80端口(转)
开启80端口 firewall-cmd --zone=public --add-port=80/tcp --permanent 出现success表明添加成功 命令含义: --zone #作用域 -- ...
- fedora/centos7防火墙FirewallD详解
1 使用 FirewallD 构建动态防火墙 1.1 “守护进程” 1.2 静态防火墙(system-config-firewall/lokkit) 1.3 使用 iptables 和 ip6tabl ...
- 第一篇:动态防火墙firewalld和静态防火墙iptables
动态防火墙firewalld firewalld提供了一个动态管理的防火墙,它支持网络(network)/防火墙区域(firewall zones )来定义网络连接( network connecti ...
- 防火墙firewalld的基础操作
防火墙Firewalld.iptables 1.systemctl模式 systemctl status firewalld #查看状态 2 systemctl start firewalld #启动 ...
- centos 7.0 修改ssh默认连接22端口 和 添加防火墙firewalld 通过端口
首先 先做的就是 修改ssh的默认端口22 需要修改文件 /etc/ssh/sshd_config 使用命令 vi /etc/ssh/sshd_config [root@localhost ~]# v ...
- Centos 7防火墙firewalld开放80端口
开启80端口 1.firewall-cmd --zone=public --add-port=80/tcp --permanent 出现success表明添加成功 命令含义: --zone #作用域 ...
- linux 防火墙--firewalld学习
firewalld是centos7默认的防火墙,相比于iptables重要的优势: 1 支持动态更新: 2 不用重启服务: 同时增加了防火墙的“zone”概念,具体差异没做过多了解,这篇文章只记录fi ...
- 【Centos7】5分钟理解防火墙firewalld
Centos7中默认将原来的防火墙iptables升级为了firewalld,firewalld跟iptables比起来至少有两大好处: 1.firewalld可以动态修改单条规则,而不需要像ipta ...
- Centos 7 防火墙firewalld命令
今天自己在Hyper-v下搭建三台Linux服务器集群,用于学习ELKstack(即大数据日志解决技术栈Elasticsearch,Logstash,Kibana的简称),下载的Linux版本为cen ...
- CentOS7 防火墙firewalld详细操作
1.firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status firewalld 停止: systemctl disab ...
随机推荐
- 『学了就忘』vim编辑器基础 — 97、vim使用技巧
目录 1.在vim中导入其他文件内容或命令结果 (1)导入其他文件内容 (2)在vim中执行系统命令 (3)导入命令结果 2.设定快捷键 3.字符替换 4.多文件打开 vim使用技巧,就是vim编辑器 ...
- CS5262设计DP转HDMI 4K60HZ +VGA 1080P方案芯片
CS5262是一款带嵌入式MCU的4通道DisplayPort1.4到HDMI2.0/VGA转换器芯片,设计用于将DP1.4信号源连接到HDMI2.0接收器.CS5262集成了DP1.4兼容接收机和H ...
- JDK中的BitMap实现之BitSet源码分析
前提 本文主要内容是分析JDK中的BitMap实现之java.util.BitSet的源码实现,基于JDK11编写,其他版本的JDK不一定合适. 文中的图比特低位实际应该是在右边,但是为了提高阅读体验 ...
- Oracle数据库导入csv文件(sqlldr命令行)
1.说明 Oracle数据库导入csv文件, 当csv文件较小时, 可以使用数据库管理工具, 比如DBevaer导入到数据库, 当csv文件很大时, 可以使用Oracle提供的sqlldr命令行工具, ...
- webSocket 使用 HttpSession 的数据配置与写法
1.前言 webSoket 无法获取 HttpSession ,使用就更谈不上了 !!! 2解决过程 使用 configurator 注入即可 (1) 配置一个类 1 package cn.c ...
- 实验 7 : OpenDaylight 实验 —— Python 中的 REST API 调用
实验 7 : OpenDaylight 实验 -- Python 中的 REST API 调用 一.实验 目的 对 Python 调用 OpenDaylight 的 REST API 方法有初步了解. ...
- Python实战案例系列(一)
本节目录 烟草扫码数据统计 奖学金统计 实战一.烟草扫码数据统计 1. 需求分析 根据扫码信息在数据库文件中匹配相应规格详细信息,并进行个数统计 条码库.xls 扫码.xlsx 一个条码对应多个规格名 ...
- 在变压器厂中使用 ISA-95 应用程序进行调度集成
介绍 在工业批量和连续生产/运营环境中,调度涉及将诸如罐.反应器和其他加工设备之类的资源分配给生产/运营任务.第 4 层生产/运营计划确定要制造什么产品.要制造多少产品以及何时制造.根据设备.物料.人 ...
- java基础01-03-注释、标识符、数据类型讲解
java基础01-注释 java中的注释有三种: 单行注释 多行注释 文件注释 public class helloworld { public static void main(String[] a ...
- [STM32F4xx 学习] SPI小结
一.STM32F4xx系列的SPI特点: 1. 支持全双工的3线SPI模式(即SCK, MISO, MOSI) 2. 支持单工2线传输,同时数据线可以设置成单向或者双向模式 3. 8-bit, 16- ...