Linux--firewalld服务

firewalld服务

firewalld 介绍

firewalld是CentOS 7.0新推出的管理netfilter的用户空间软件工具
firewalld是配置和监控防火墙规则的系统守护进程。可以实iptables,ip6tables,ebtables的功能
firewalld服务由firewalld包提供
firewalld支持划分区域zone,每个zone可以设置独立的防火墙规则

归入zone顺序:

  • 先根据数据包中源地址,将其纳为某个zone
  • 纳为网络接口所属zone
  • 纳入默认zone,默认为public zone,管理员可以改为其它zone

网卡默认属于public zone,lo网络接口属于trusted zone

firewalld zone分类

zone名称默认配置
trusted允许所有流量
home拒绝除和传出流量相关的,以及ssh,mdsn,ipp-client,samba-client,dhcpv6-client预定义服务之外其它所有传入流量
internal和home相同
work拒绝除和传出流量相关的,以及ssh,ipp-client,dhcpv6-client预定义服务之外的其它所有传入流量
public拒绝除和传出流量相关的,以及ssh,dhcpv6-client预定义服务之外的其它所有传入流量,新加的网卡默认属于public zone
external拒绝除和传出流量相关的,以及ssh预定义服务之外的其它所有传入流量,属于external zone的传出ipv4流量的源地址将被伪装为传出网卡的地址。
dmz拒绝除和传出流量相关的,以及ssh预定义服务之外的其它所有传入流量
block拒绝除和传出流量相关的所有传入流量
drop拒绝除和传出流量相关的所有传入流量(甚至不以ICMP错误进行回应)

预定义服务

服务名称配置
sshLocal SSH server. Traffic to 22/tcp
dhcpv6-clientLocal DHCPv6 client. Traffic to 546/udp on the fe80::/64 IPv6 network
ipp-clientLocal IPP printing. Traffic to 631/udp.
samba-clientLocal Windows file and print sharing client. Traffic to 137/udp and 138/udp.
mdnsMulticast DNS (mDNS) local-link name resolution. Traffic to 5353/udp to the 224.0.0.251 (IPv4) or ff02::fb (IPv6) multicast addresses.

firewalld预定义服务配置

  • firewall-cmd –get-services 查看预定义服务列表
  • /usr/lib/firewalld/services/*.xml预定义服务的配置

firewalld 三种配置方法

  • firewall-config (firewall-config包)图形工具
  • firewall-cmd (firewalld包)命令行工具
  • /etc/firewalld 配置文件,一般不建议
firewall-cmd 命令

firewall-cmd 格式

Usage: firewall-cmd [OPTIONS...]

常见选项

--get-zones     列出所有可用区域
--get-default-zone  查询默认区域
--set-default-zone=<ZONE> 设置默认区域
--get-active-zones  列出当前正使用的区域
--add-source=<CIDR>[--zone=<ZONE>]  添加源地址的流量到指定区域,如果无--zone= 选项,使用默认区域
--remove-source=<CIDR> [--zone=<ZONE>]  从指定区域删除源地址的流量,如无--zone= 选项,使用默认区域
--add-interface=<INTERFACE>[--zone=<ZONE>]  添加来自于指定接口的流量到特定区域,如果无--zone= 选项,使用默认区域
--change-interface=<INTERFACE>[--zone=<ZONE>]   改变指定接口至新的区域,如果无--zone= 选项,使用默认区域
--add-service=<SERVICE> [--zone=<ZONE>] 允许服务的流量通过,如果无--zone= 选项,使用默认区域
--add-port=<PORT/PROTOCOL>[--zone=<ZONE>] 允许指定端口和协议的流量,如果无--zone= 选项,使用默认区域
--remove-service=<SERVICE> [--zone=<ZONE>]  从区域中删除指定服务,禁止该服务流量,如果无--zone= 选项,使用默认区域
--remove-port=<PORT/PROTOCOL>[--zone=<ZONE>]    从区域中删除指定端口和协议,禁止该端口的流量,如果无--zone= 选项,使用默认区域
--reload    删除当前运行时配置,应用加载永久配置
--list-services  查看开放的服务
--list-ports   查看开放的端口
--list-all [--zone=<ZONE>]     列出指定区域的所有配置信息,包括接口,源地址,端口,服务等,如果无--zone= 选项,使用默认区域

范例:

#查看默认zone
firewall-cmd --get-default-zone
#默认zone设为dmz
firewall-cmd --set-default-zone=dmz
#在internal zone中增加源地址192.168.0.0/24的永久规则
firewall-cmd --permanent --zone=internal  --add-source=192.168.0.0/24
#在internal zone中增加协议mysql的永久规则
firewall-cmd --permanent --zone=internal  --add-service=mysql
#加载新规则以生效
firewall-cmd  --reload

范例:配置firewalld

systemctl mask iptables
systemctl mask ip6tables
systemctl status firewalld
systemctl enable firewalld
systemctl start firewalld
firewall-cmd  --get-default-zone
firewall-cmd  --set-default-zone=public
firewall-cmd  --permanent  --zone=public  --list-all
firewall-cmd  --permanent  --zone=public  --add-port  8080/tcp
firewall-cmd   ---reload
其它规则

当基本firewalld语法规则不能满足要求时,可以使用以下更复杂的规则

  • rich-rules 富规则,功能强,表达性语言
  • Direct configuration rules 直接规则,灵活性差, 帮助:man 5 firewalld.direct
管理rich规则

rich规则比基本的firewalld语法实现更强的功能,不仅实现允许/拒绝,还可以实现日志syslog和auditd,也可以实现端口转发,伪装和限制速率

规则实施顺序:

  • 该区域的端口转发,伪装规则
  • 该区域的日志规则
  • 该区域的允许规则
  • 该区域的拒绝规则

每个匹配的规则生效,所有规则都不匹配,该区域默认规则生效

rich语法:

rule[source][destination]service|port|protocol|icmp-block|masquerade|forward-port[log][audit][accept|reject|drop]

man 5 firewalld.richlanguage

rich规则选项

选项描述
–add-rich-rule=’‘Add to the specified zone, or the default zone if no zone is specified.
–remove-rich-rule=’‘Remove to the specified zone, or the default zone if no zone is specified.
–query-rich-rule=’‘Query if has been added to the specified zone, or the default zone if no zone is specified. Returns 0 if the rule is present, otherwise 1.
–list-rich-rulesOutputs all rich rules for the specified zone, or the default zone if no zone is specified.
rich规则实现

拒绝从192.168.0.11的所有流量,当address 选项使用source 或 destination时,必须用family= ipv4 |ipv6

firewall-cmd --permanent --zone=public --add-rich-rule='rule   family=ipv4 source address=192.168.0.11/32 reject'

限制每分钟只有两个连接到ftp服务

firewall-cmd --add-rich-rule=‘rule service name=ftp limit value=2/m accept’

抛弃esp( IPsec 体系中的一种主要协议)协议的所有数据包

firewall-cmd --permanent --add-rich-rule='rule protocol value=esp drop'

接受所有192.168.1.0/24子网端口5900-5905范围的TCP流量

firewall-cmd --permanent --zone=vnc --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 port port=5900-5905 protocol=tcp accept'

rich日志规则

log [prefix="<PREFIX TEXT>" [level=<LOGLEVEL>] [limit value="<RATE/DURATION>"]<LOGLEVEL> 可以是emerg,alert, crit, error, warning, notice, info, debug.
<DURATION> s:秒, m:分钟, h:小时, d:天
audit [limit value="<RATE/DURATION>"]

范例

#接受ssh新连接,记录日志到syslog的notice级别,每分钟最多三条信息
firewall-cmd --permanent --zone=work --add-rich-rule='rule service name="ssh" log prefix="ssh " level="notice" limit value="3/m" accept#从2001:db8::/64子网的DNS连接在5分钟内被拒绝,并记录到日志到audit,每小时最大记录一条信息
firewall-cmd --add-rich-rule='rule family=ipv6 source address="2001:db8::/64" service name="dns" audit limit value="1/h" reject' --timeout=300firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=172.25.X.10/32 service name="http" log level=notice prefix="NEW HTTP " limit value="3/s" accept'
firewall-cmd --reload
tail -f /var/log/messages
curl http://serverX.example.com
伪装和端口转发

NAT网络地址转换,firewalld支持伪装和端口转发两种NAT方式

伪装NAT

firewall-cmd --permanent --zone=<ZONE> --add-masquerade
firewall-cmd --query-masquerade  #检查是否允许伪装
firewall-cmd --add-masquerade   #允许防火墙伪装IP
firewall-cmd --remove-masquerade #禁止防火墙伪装IP

范例:

firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.0.0/24 masquerade'

端口转发

端口转发:将发往本机的特定端口的流量转发到本机或不同机器的另一个端口。通常要配合地址伪装才能实现

firewall-cmd --permanent --zone=<ZONE> --add-forward-port=port=<PORTNUMBER>:proto=<PROTOCOL>[:toport=<PORTNUMBER>][:toaddr=]

说明:toport= 和toaddr= 至少要指定一个

范例:

#转发传入的连接9527/TCP,到防火墙的80/TCP到public zone 的192.168.0.254
firewall-cmd --add-masquerade  启用伪装
firewall-cmd --zone=public --add-forward-port=port=9527:proto=tcp:toport=80:toaddr=192.168.0.254

rich规则的port转发语法:

forward-port port=<PORTNUM> protocol=tcp|udp [to-port=<PORTNUM>] [to-addr=<ADDRESS>]

范例:

#转发从192.168.0.0/24来的,发往80/TCP的流量到防火墙的端口8080/TCP
firewall-cmd --zone=work --add-rich-rule='rule family=ipv4 source address=192.168.0.0/24 forward-port port=80 protocol=tcp to-port=8080'firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=172.25.X.10/32 forward-port port=443 protocol=tcp to-port=22'
firewall-cmd --reload
ssh -p 443 serverX.example.com

范例:限制ssh服务非标准端口访问

cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh.xml
vim /etc/firewalld/services/ssh.xml 
<port protocol="tcp" port="999"/>
systemctl restart sshd.service
systemctl status -l sshd.service
sealert -a /var/log/audit/audit.log
semanage port -a -t ssh_port_t -p tcp 999
systemctl restart sshd.service
ss -tulpn | grep sshd
firewall-cmd --permanent --zone=work --add-source=172.25.X.0/24
firewall-cmd --permanent --zone=work --add-port=999/tcp
firewall-cmd --reload

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/56405.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gitxray:一款基于GitHub REST API的网络安全工具

关于Gitxray Gitxray是一款基于GitHub REST API的网络安全工具&#xff0c;支持利用公共 GitHub REST API 进行OSINT、信息安全取证和安全检测等任务。 Gitxray&#xff08;Git X-Ray 的缩写&#xff09;是一款多功能安全工具&#xff0c;专为 GitHub 存储库而设计。它可以用于…

【大数据技术基础 | 实验三】HDFS实验:部署HDFS

文章目录 一、实验目的二、实验要求三、实验原理&#xff08;一&#xff09;分布式文件系统&#xff08;二&#xff09;HDFS&#xff08;三&#xff09;HDFS基本命令&#xff08;四&#xff09;HDFS适用场景 四、实验环境五、实验内容和步骤&#xff08;一&#xff09;在master…

优阅达携手 Theobald 亮相新加坡科技周,助力企业 SAP 数据集成与应用

针对不同用户需求量身定制解决方案&#xff0c;帮助企业轻松应对从数据提取到分析、从开发到流程管理的 SAP 数据挑战。 上周&#xff0c;2024 新加坡科技周在滨海湾金沙会议展览中心圆满落幕。在为期两天的活动中&#xff0c;七大专题展览同时进行&#xff0c;超过 2,000 家…

二、Thread常见的方法

Thread 类是 JVM ⽤来管理线程的⼀个类&#xff0c;换句话说&#xff0c;每个线程都有⼀个唯⼀的 Thread 对象与之关 联。 2.1 Thread 的常⻅构造⽅法 方法说明Thread()创建线程Thread(Runnable target)使用 Runnable 实现多线程Thread(String name)创建线程 并命名Thread(Ru…

【解决】webstrom uniapp rpx格式化空格 报错飘红

解决办法 1、安装 wechat mini program support 插件 2. 设置 wechat mini program 里小程序支持选为启用 3. 重新格式化显示正常&#xff0c;也不飘红了 注意要style开启scss支持lang"scss"&#xff0c;否则也会飘红报错 <style lang"scss"><…

理解JVM里的栈信息

文章目录 栈内存的结构实际例子局部变量表&#xff08;Local Variable Array&#xff09;操作数栈&#xff08;Operand Stack&#xff09;动态链接&#xff08;Dynamic Linking&#xff09;方法返回地址&#xff08;Return Address&#xff09;其他信息 调用示意图问题 栈内存的…

『Mysql集群』Mysql高可用集群之读写分离(二)

前言 主从复制: 解决了Mysql的单点故障问题以及提高MySQL的整体服务性能. 读写分离: 解决的是数据库的读性能问题,分担主库的压力&#xff0c;提高系统的可用性和稳定性。 分库分表: 数据库分表可以解决单表海量数据的查询性能问题&#xff0c;分库可以解决单台数据库的并发…

【微服务】精细化微服务日志管理:构建高效的监控与故障排查体系

目录 引言一、微服务日志的概述1.1 定义1.2 重要性 二、微服务日志的类型2.1 日志类型详细说明 三、微服务架构的日志挑战四、微服务日志的实现4.1 日志记录4.2 日志格式 五、日志收集5.1 日志收集概述5.2 常用日志收集工具5.3 日志收集工具详细对比5.4 日志收集流程 六、日志存…

轮转数组解决方法

轮转数组 问题描述 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。也就是说&#xff0c;将数组的每个元素向右移动 k 个位置&#xff0c;超过数组长度的部分循环到数组的开头。 示例&#xff1a; 输入&#xff1a;nums …

新能源行业必会基础知识-----电力交易员职业标准-----持续更新

新能源行业知识体系-------主目录-----持续更新https://blog.csdn.net/grd_java/article/details/140004020 文章目录 1. 基本常识2. 达到基本入行标准&#xff08;四级/中级&#xff09;2.1 交易资质及信息管理2.2 中长期交易2.3 现货交易2.4 辅助服务管理2.5 售电管理2.6 电价…

mysql数据迁移到elasticsearch以及elasticsearch的使用

目录 根据数据不断调整架构安装elasticsearch 版本8.12.2kibana安装ik分词分词的拓展以及停用 springboot实战pom.xmlapplication.yml相关配置框架集成-SpringData-集成测试-文档操作 相关代码调整 随着物联网平台的不断发展&#xff0c;平台要求接入的模块会越来越多&#xff…

Qt 实现动态时钟

1.实现效果 2.widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE namespace

leetcode中哈希的python解法:Counter()介绍

Counter 是 Python 的 collections 模块中的一个类&#xff0c;用于统计可迭代对象中元素的出现次数。Counter 是一种专门为计数设计的哈希表&#xff08;字典&#xff09;&#xff0c;它的键是元素&#xff0c;值是元素出现的次数。 Counter 的特点&#xff1a; 继承自 dict…

hackmyvm-Hundred靶机

主机发现 sudo arp-scan -l 以sudo权限执行arp-scan -l 扫描并列出本地存在的机器&#xff0c;发现靶机ip为192.168.91.153 nmap扫描 端口发现 21/tcp open ftp 22/tcp open ssh 80/tcp open http web信息收集 我们先尝试一下ftp端口的匿名登录 FTP:是文件传输协议的端…

JAVA 中的克隆对象

克隆对象就是复制一个一模一样的对象&#xff0c;但是复制出来的对象和原对象不是同一个对象&#xff0c;是两个对象&#xff0c;只不过复制过来的对象和原对象除了内存地址之外&#xff0c;其它的属性一模一样。 在超类 Object 中有一个 clone() 方法&#xff1a; protected…

17. typedef关键字的使用

一、为什么需要typedef关键字 C 语言允许用户使用 typedef 来为一个数据类型起一个新的别名。一旦用户在程序中定义了别名&#xff0c;就可以在该程序中使用别名来定义变量的类型、数组的类型、指针变量的类型与函数的类型等。 typedef 关键字定义的名称并不是真的创造了一种数…

循序渐进丨MogDB 中 gs_dump 数据库导出工具源码概览

背景 gs_dump 是 MogDB 中一个功能丰富灵活的数据库导出工具&#xff0c;在数据库的维护、迁移和开发中经常使用。该工具允许用户根据需要导出整个数据库或者数据库中的特定对象&#xff0c;如模式&#xff08;schema&#xff09;、表&#xff08;tables&#xff09;、视图&am…

grafana version 11.1.0 设置Y轴刻度为1

grafana 版本 # /usr/share/grafana/bin/grafana --version grafana version 11.1.0设置轴 Axis 搜索 Standard options 在"Decimals"中输入0&#xff0c;确保只显示整数

Java基础12-特殊文件和日志技术

十二、特殊文件和日志技术 1、特殊文件 properties&#xff1a;用来存储键值对数据。 xml&#xff1a;用来存储有关系的数据。 1.1 properties文件 特点&#xff1a;存储键值对&#xff0c;键不能重复&#xff0c;文件后缀一般是.properties结尾的。 properties&#xff1a;是…

混合专家模型(MoE)中的容量因子f

在混合专家模型&#xff08;MoE&#xff09;中&#xff0c;容量因子f是一个重要的参数&#xff0c;它用于衡量MoE层中专家模型的容量和利用情况。具体来说&#xff0c;容量因子f通常定义为MoE层中实际激活的专家数量与MoE层中总专家数量的比例。 当容量因子f为1.25时&#xff…