Linux firewalld 防火墙
Linux firewalld 防火墙
简介
RHEL 7 系统中集成了多款防火墙管理工具,其中 firewalld(Dynamic Firewall Manager of Linux systems,Linux 系统的动态防火墙管理器)服务是默认的防火墙配置管理工具,它拥有基于 CLI(命令行界面)和基于 GUI(图形用户界面)的两种管理方式。
相较于传统的防火墙管理配置工具,firewalld 支持动态更新技术并加入了区域(zone)的概念。简单来说,区域就是 firewalld 预先准备了几套防火墙策略集合(策略模板),用户可以根据生产场景的不同而选择合适的策略集合,从而实现防火墙策略之间的快速切换。
例如:我们有一台笔记本电脑,每天都要在办公室、咖啡厅和家里使用。按常理来讲,这三者的安全性按照由高到低的顺序来排列,应该是家庭、公司办公室、咖啡厅。当前,我们希望为这台笔记本电脑指定如下防火墙策略规则:在家中允许访问所有服务;在办公室内仅允许访问文件共享服务;在咖啡厅仅允许上网浏览。在以往,我们需要频繁地手动设置防火墙策略规则,而现在只需要预设好区域集合,然后只需轻点鼠标就可以自动切换了,从而极大地提升了防火墙策略的应用效率。firewalld 中常见的区域名称(默认为 public)以及相应的策略规则。
| 区域 | 默认策略规则 |
| trusted | 允许所有的数据包 |
| home | 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh、mdns、ipp-client、amba-client 与 dhcpv6-client 服务相关,则允许流量 |
| internal | 等同于 home 区域 |
| work | 拒绝流入的流量,除非与流出的流量数相关;而如果流量与 ssh、ipp-client 与 dhcv6-client 服务相关则允许流量 |
| public | 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh、dhcpv6-client 服务 相关则允许流量 |
| external | 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh 服务相关,则允许流量 |
| dmz | 拒绝流入的流量,除非与流出的流量相关;而如果流量与 ssh 服务相关,则允许流量 |
| block | 拒绝流入的流量,除非与流出的流量相关 |
| drop | 拒绝流入的流量,除非与流出的流量相关 |
终端管理工具 firewall-cmd
firewall-cmd 是 firewalld 防火墙配置管理工具的 CLI(命令行界面)版本。它的参数一般都是以“长格式”来提供。
| 参数 | 作用 |
| --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 模式。如果不关注这个细节,就算是正确配置了防火墙策略,也可能无法达到预期的效果。
使用
查询操作
- # 查看当前所使用的区域
- firewall-cmd --get-default-zone
- # 查看指定网卡在firewalld服务中的区域
- firewall-cmd --get-zone-of-interface=网卡名
- # 查询指定服务在指定区域下当前是否允许请求服务协议的流量
- firewall-cmd --zone=区域 --query-service=服务名
- # 查看指定服务在指定区域下当前的端口所有状态
- firewall-cmd --zone=区域 --list-ports
- # 查看指定区域下当前所有状态
- firewall-cmd --zone=区域 --list-all
配置策略
- # 修改指定网卡内使用的永久模式区域、系统重启后生效
- firewall-cmd --permanent --zone=区域 --change-interface=网卡名称
- # 修改当前区域修改成指定区域
- firewall-cmd --set-default-zone=区域
- # 修改指定服务在指定区域下当前允许协议流量访问、立即生效、重启后失效
- firewall-cmd --zone=区域 --add-service=服务名
- # 修改指定服务在指定区域下永久允许协议流量访问、重启后生效
- firewall-cmd --permanent --zone=区域 --add-service=服务名
- # 修改指定服务再指定区域下当前拒绝协议流量访问、立即生效、重启后失效
- firewall-cmd --zone=区域 --remove-service=服务名
- # 修改指定服务再指定区域下永久拒绝协议流量访问、重启生效
- firewall-cmd --permanent --zone=区域 --remove-service=服务名
- # 允许指定端口再指定区域下当前允许访问、立即生效
- firewall-cmd --zone=区域 --add-port=端口号/tcp
- # 允许指定端口再指定区域下永久允许访问、重启生效
- firewall-cmd --permanent --zone=区域 --add-port=端口号/tcp
- # 把访问指定源端口再指定区域下临时转发到指定目标端口、立即生效
- firewall-cmd --zone=区域 --add-forward-port=port=源端口:proto=tcp:toport=目标端口:toaddr=目标IP地址
- # 把访问指定源端口再指定区域下永久转发到指定目标端口、重启生效
- firewall-cmd --permanent --zone=区域 --add-forward-port=port=源端口:proto=tcp:toport=目标端口:toaddr=目标IP地址
- # 把指定源端口再指定区域下临时转发到目标网段端口、立即生效
- firewall-cmd --zone=区域 --add-rich-rule 'rule family="ipv4" source address="网段/掩码位" forward-port port="源端口" protocol="tcp" to-port="目标端口"'
- # 把指定源端口再指定区域下永久转发到目标网段端口、重启生效
- firewall-cmd --permanent --zone=区域 --add-rich-rule 'rule family="ipv4" source address="网段/掩码位" forward-port port="源端口" protocol="tcp" to-port="目标端口"'
- # 指定区域下临时禁用指定IP地址的访问、accept 为允许
- firewall-cmd --zone=区域 --add-rich-rule='rule family=ipv4 source address="IP地址" reject'
- # 指定区域下永久禁用指定IP地址的访问、重启生效、accept 为允许
- firewall-cmd --permanent --zone=区域 --add-rich-rule='rule family="ipv4" source address="IP地址" reject'
- # 指定区域下指定服务临时拒绝一个网段访问、适用于单个IP、accept 为允许
- firewall-cmd --zone=区域 --add-rich-rule="rule family="ipv4" source address="网段/掩码位" service name="服务名" reject"
- # 指定区域下指定服务永久拒绝一个网段访问、重启生效、适用于单个IP、accept 为允许
- firewall-cmd --permanent --zone=区域 --add-rich-rule="rule family="ipv4" source address="网段/掩码位" service name="服务名" reject"
- # 指定区域下指定端口临时拒绝一个网段访问、适用于单个IP、accept 为允许
- firewall-cmd --zone=区域 --add-rich-rule="rule family="ipv4" source address="网段/掩码位" port protocol="tcp" port="端口号" reject"
- # 指定区域下指定端口永久拒绝一个网段访问、重启生效、适用于单个IP、accept 为允许
- firewall-cmd --permanent --zone=区域 --add-rich-rule="rule family="ipv4" source address="网段/掩码位" port protocol="tcp" port="端口号" reject"
其他操作
- # 启动/关闭 firewalld 防火墙服务的应急状况模式,阻断一切网络连接(当远程控制服务器时请慎用)
- firewall-cmd --panic-on
- firewall-cmd --panic-off
- # 保存设置、可立即生效permanent配置
- firewall-cmd --reload
- # 删除操作、将参数签的 add 改为 remove
- firewall-cmd .. --zone=区域 --remove-..
其他知识
REJECT 与 DROP
1、REJECT动作会返回一个拒绝(终止)数据包(TCP FIN或UDP-ICMP-PORT-UNREACHABLE),明确的拒绝对方的连接动作。
2、DROP动作只是简单的直接丢弃数据,并不反馈任何回应。需要Client等待超时,Client容易发现自己被防火墙所阻挡。
Linux firewalld 防火墙的更多相关文章
- [转帖]Linux firewalld 防火墙使用
Linux firewalld 防火墙使用 2018-06-19 19:26:08 蚩尤后裔 阅读数 2101 收藏 更多 分类专栏: Linux 版权声明:本文为博主原创文章,遵循CC 4.0 ...
- linux firewalld 防火墙操作命令
查看防火墙的状态systemctl status firewalldTomcat默认使用8080端口,如果防火墙开启,需要开通8080端口firewall-cmd --zone=public --ad ...
- 使用 firewalld 构建 Linux 动态防火墙
firewalld 是新一 Linux 代防火墙工具,它提供了支持网络 / 防火墙区域 (zone) 定义网络链接以及接口安全等级的动态防火墙管理工具.它也支持允许服务或者应用程序直接添加防火墙规则的 ...
- linux系统中firewalld防火墙管理工具firewall-config(GUI图形用户界面)
firewall-config是firewalld防火墙管理工具的GUI(图形用户界面)版本,几乎可以实现所有以命令行来执行的操作. firewall-config的界面如下图(在终端直接运行fire ...
- 第8章 Iptables与Firewalld防火墙
章节简述: 红帽RHEL7系统已经用firewalld服务替代了iptables服务,新的防火墙管理命令firewall-cmd与图形化工具firewall-config. 本章节基于数十个防火墙需求 ...
- SpringCloud的应用发布(四)vmvare+linux,防火墙和selinux
一.vmvare网络配置为nat模式 二.vmvare的网络设置为桥接bridge模式 1.linux 网卡的ip获取方式dhcp 三.关闭linux的防火墙和selinux 1.临时关闭防火墙 sy ...
- CentOS7使用firewalld防火墙配置端口
安装启用firewalld防火墙 CentOS7默认的防火墙是firewalld 如果没有firewalld防火墙,可以执行yum install firewalld 命令进行安装 firewalld ...
- CentOS7、REHL7的firewalld防火墙使用简单说明
title: CentOS7.REHL7的firewalld防火墙使用简单说明 categories: Linux tags: - Linux timezone: Asia/Shanghai date ...
- CentOS 7 打开关闭FirewallD防火墙端口命令
CentOS 7 使用firewalld代替了原来的iptables,使用方法如下: >>>关闭防火墙 systemctl stop firewalld.service ...
随机推荐
- 算法-KMP
KMP算法的作用在于在一个主串中查找一个主串. 传统查找子串的方法是一个字符一个字符的比较,代码如下: public static int notKMP(String main,String sub) ...
- C#获取一个数组中的最大值、最小值、平均值
C#获取一个数组中的最大值.最小值.平均值 1.给出一个数组 ,,,,,-,,,,}; 2.数组Array自带方法 本身是直接可以调用Min(),Max(),Average()方法来求出 最小值.最大 ...
- Webservice学习之WSDL详解
1. <definitions/> 这部分在基础篇里已经介绍,主要说明引用了哪些schema以及schema的位置等,可以看下基础篇的介绍,SayHello的Demo这部分内容如下: &l ...
- 原码、补码,反码以及JAVA中数值采用哪种码表示
原码.补码,反码以及JAVA中数值采用哪种码表示 1.原码定义(摘自百度百科):一种计算机中对数字的二进制定点表示方法,原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位 ...
- 剑指offer——python【第16题】合并两个有序链表
题目描述 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1->1-& ...
- tomcat8.5.11安装教程
备份,省得以后自己又忘了. 1.下载tomcat 2.环境变量设置 打开环境变量设置 注意,要点击下面红框处的新建按钮,而不要点击上面的.新建系统变量: 注意,变量名一定得设置为CATALINA_HO ...
- mysql提权常用方法。 hack某某
一般是root权限,知道mysql root权限,root账号密码 启动项提权:原理:利用高权限的root写入一个vbs脚本到启动项,再通过一些方法如ddos,社工管理员之类的方法来让服务器重启,运行 ...
- (一)juc线程高级特性——volatile / CAS算法 / ConcurrentHashMap
1. volatile 关键字与内存可见性 原文地址: https://www.cnblogs.com/zjfjava/category/979088.html 内存可见性(Memory Visibi ...
- dokuwiki 安装配置
dokuwiki如果在用户注册的时候,发生"发送密码邮件时产生错误.请联系管理员!",那么需要配置sendmail. 在linux平台下,参考这个帖子https://www.dok ...
- python摸爬滚打之day18----instance, type, issubclass和反射
1.issubclass(a,b) ----> 判断a是否是b的子类. isinstance(a,b) ----> 判断a这个对象是否是b类型的(可以向上判断, 即考虑继承关系往父类 ...