介绍

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的更多相关文章

  1. Centos 7防火墙firewalld开放80端口(转)

    开启80端口 firewall-cmd --zone=public --add-port=80/tcp --permanent 出现success表明添加成功 命令含义: --zone #作用域 -- ...

  2. fedora/centos7防火墙FirewallD详解

    1 使用 FirewallD 构建动态防火墙 1.1 “守护进程” 1.2 静态防火墙(system-config-firewall/lokkit) 1.3 使用 iptables 和 ip6tabl ...

  3. 第一篇:动态防火墙firewalld和静态防火墙iptables

    动态防火墙firewalld firewalld提供了一个动态管理的防火墙,它支持网络(network)/防火墙区域(firewall zones )来定义网络连接( network connecti ...

  4. 防火墙firewalld的基础操作

    防火墙Firewalld.iptables 1.systemctl模式 systemctl status firewalld #查看状态 2 systemctl start firewalld #启动 ...

  5. centos 7.0 修改ssh默认连接22端口 和 添加防火墙firewalld 通过端口

    首先 先做的就是 修改ssh的默认端口22 需要修改文件 /etc/ssh/sshd_config 使用命令 vi /etc/ssh/sshd_config [root@localhost ~]# v ...

  6. Centos 7防火墙firewalld开放80端口

    开启80端口 1.firewall-cmd --zone=public --add-port=80/tcp --permanent  出现success表明添加成功 命令含义: --zone #作用域 ...

  7. linux 防火墙--firewalld学习

    firewalld是centos7默认的防火墙,相比于iptables重要的优势: 1 支持动态更新: 2 不用重启服务: 同时增加了防火墙的“zone”概念,具体差异没做过多了解,这篇文章只记录fi ...

  8. 【Centos7】5分钟理解防火墙firewalld

    Centos7中默认将原来的防火墙iptables升级为了firewalld,firewalld跟iptables比起来至少有两大好处: 1.firewalld可以动态修改单条规则,而不需要像ipta ...

  9. Centos 7 防火墙firewalld命令

    今天自己在Hyper-v下搭建三台Linux服务器集群,用于学习ELKstack(即大数据日志解决技术栈Elasticsearch,Logstash,Kibana的简称),下载的Linux版本为cen ...

  10. CentOS7 防火墙firewalld详细操作

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

随机推荐

  1. 单芯片替代PS176 DP转HDMI 4K60HZ DP转HDMI2.0转换芯片CS5263

    PS176是一个显示端口 (DP)至HDMI 2.0视频接口转换器适用于需要视频协议转换的电缆适配器.电视接收器.监视器和其他应用.它将接受任何显示端口输入格式,包括DP 1.1a.dp1.2a.dp ...

  2. 编写Java程序,使用 Java 的 I/O 流将 H:\eclipse.zip 文件拷贝至 E 盘下,重新命名为 eclipse 安装 .zip。

    查看本章节 查看作业目录 需求说明: 使用 Java 的 I/O 流将 H:\eclipse.zip 文件拷贝至 E 盘下,重新命名为 eclipse 安装 .zip.在拷贝过程中,每隔2000 毫秒 ...

  3. 【】Apache Ranger剖析:Hadoop生态圈的安全管家

    前言 2016年,Hadoop迎来了自己十周岁生日.过去的十年,Hadoop雄霸武林盟主之位,号令天下,引领大数据技术生态不断发展壮大,一时间百家争鸣,百花齐放.然而,兄弟多了不好管,为了抢占企业级市 ...

  4. 基于机器学习和TFIDF的情感分类算法,详解自然语言处理

    摘要:这篇文章将详细讲解自然语言处理过程,基于机器学习和TFIDF的情感分类算法,并进行了各种分类算法(SVM.RF.LR.Boosting)对比 本文分享自华为云社区<[Python人工智能] ...

  5. js 表格操作 全选和反选效果 案例

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  6. JMeter_请求参数

    在做接口测试时,发送请求的参数有两种格式,一种是Parameters,一种是JSON 一.Jmeter传参 JMeter 传Parameters格式的参数 JMeter 传JSON格式的参数 二.区分 ...

  7. 灵雀云开源网络插件Kube-OVN 1.4.0 版发布!支持跨集群容器网络、NetworkPolicy 日志

    从 1.4 开始 Kube-OVN 支持将多个 Kubernetes 集群容器网络打通,不同集群之间的 Pod 可以通过 Pod IP 直接互相通信.本版本还支持 ACL 日志,可以记录因 Netwo ...

  8. nginx代理图片上传以及访问 nginx 图片上传完整版

    nginx代理图片上传 首先需要利用nginx代理图片访问参考 https://www.cnblogs.com/TJ21/p/12609017.html 编写接受文件的controller 1 @Po ...

  9. redis的使用场景和优缺点

    使用场景和优缺点: 2 Redis用来做什么? 通常局限点来说,Redis也以消息队列的形式存在,作为内嵌的List存在,满足实时的高并发需求.而通常在一个电商类型的数据处理过程之中,有关商品,热销, ...

  10. 【Java】System类时间戳

    System类中获取时间戳 long time = System.currentTimeMillis(); //返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差称为时间戳 Syst ...