linux安全-firewalld防火墙-基础讲解

news2024/12/26 22:15:36

目录

一、 防火墙技术分类

二、 firewalld

三、 firewalld支持的类型的NAT

四、 富语言

五、 firewalld配置方式

六、 firewall-cmd命令

七、 小实验


这篇文章将对 firewalld 防火墙的基础知识进行介绍

firewalld简介:firewalld的作用是为包过滤机制提供匹配规则(或称为策略),通过各种不同的规则, 告诉netfilter对来自指定源、前往指定目的或具有某些协议特征的数据包采取何种处理方式。 

一、 防火墙技术分类

1. 包过滤:linux防火墙主要工作在网络层

2. 应用代理:squid

3. 状态检测


在centos7中有几种防火墙的存在:firewalld,iptables,ebtables

firewalld和iptables的关系:

firewalld自身并不具备防火墙的功能,而是和iptables一样需要通过内核的netfilter来实现。也就是说firewalld和iptables一样,他们的作用都是用于维护规则,而真正使用规 则干活的是内核的netfilter,只不过firewalld和iptables的结构以及使用方法不一样罢了。 系统提供了图形化的配置工具firewall-config、system-config-firewall,提供命令行客户端firewall-cmd,用于配置firewalld永久性或非永久性运行时间的改变:它依次用iptables工具与执行数据包筛选的内核中的Netfilter通信

逻辑关系图:

从图中可以看出,iptables服务和firewalld都是通过iptables命令与内核的netfilter 进行交互的。在centos7中,我们仍然可以使用iptables命令来管理我们的防火墙。唯一不 同的是当我们重启服务器或重启firewalld时,iptables命令管理的规则不会自动加载,反而会被firewalld 的规则代替。

默认使用firewalld来管理netfilter子系统

netfilter:linux内核中实现包过滤防火墙的内部结构-内核态

firewalld:用于管理linux防火墙的命令程序-用户态

二、 firewalld

支持网络区域所定义的网络链接以及接口安全等级的动态防火墙

配置模式

  • 运行时配置
  • 永久配置

规则匹配顺序

首先检查“源地址”

  1. 若源地址关联到特定的区域,则执行该区域所制定的规则
  2. 若源地址未关联到特定的区域,则使用传入网络接口的区域并执行该区域所制定的规则
  3. 若网络接口未关联到特定的区域,则使用默认区域并执行该区域所制定的规则

🚨默认区域是:public

区域划分

  • 信任区域:trusted
  • 公共区域:public
  • 工作区域:work
  • 家庭区域:home
  • 内部区域:internal
  • 外部区域:external
  • 非军事区域:dmz
  • 限制区域:block
  • 丢弃区域:drop

三、 firewalld支持的类型的NAT

  1. IP地址伪装-SNAT
  2. 端口转发-DNAT(目的地址转换/端口映射)

四、 富语言

可用于表达基本的允许/拒绝原则,也可以用于配置记录,以及端口转发、伪装和速率限制

语法

  • source:限制源地址
  • destination:限制目标地址
  • service:服务
  • protocol:协议
  • icmp-block:阻断一个/多个ICMP类型
  • masquerade:IP伪装
  • forward-port:将指定的tcp/udp-本机的其他端口
  • log:日志
    • 等级:emerg、alert、crit、erroor、warning、notice、info
  • audit:审核
  • accept:允许
  • reject:拒绝
  • drop:丢弃

五、 firewalld配置方式

  1. 图形化
  2. firewalld-cmd
  3. 配置文件

六、 firewall-cmd命令

介绍一些基础命令使用以及常用的

1. 显示预定义的区域

firewall-cmd --get-zones


区域管理

  • --get-default-zone:显示网络连接或接口的默认区域
  • --set-default-zone=<zone>:设置网络连接或接口的默认区域
  • --get-active-zones:显示已激活的所有区域
  • --get-zone-of-interface=<interface>:显示 指定接口绑定的区域
  • --zone=<zone> --add-interface=<interface>:为指定的区域更改绑定的网络接口
  • --zone=<zone> --change-interface=<interface>:为指定的区域更改绑定的网络接口
  • --zone=<zone> --remove-interface=<interface>:为指定的区域删除绑定的网络接口
  • --list-all-zones:显示所有区域及其规则
  • [--zone=]--list-all:显示所有指定区域的所有规则,省略--zone=<zone>时表示仅对默认区域操作

具体操作

1. 显示当前系统中的默认区域

firewall-cmd --get-default-zone

2. 显示默认区域的所有规则

firewall-cmd --list-all

3. 显示网络接口ens33对应区域

firewall-cmd --get-zone-of-interface=ens33

4. 将网络接口ens33对应区域更改为internal区域

firewall-cmd --zone=internal --change-interface=ens33

5. 显示所有激活区域

firewall-cmd --get-active-zones


服务管理

  • [--zone=<zone>] --list-services:显示指定区域内允许访问的所有服务
  • [--zone=<zone>] --add-service=<service>:为指定区域设置允许访问的某项服务
  • [--zone=<zone>] --remove-service=<service>:删除指定区域已设置的允许访问的某项服务
  • [--zone=<zone>] --list-ports:显示指定区域内允许访问的所有端口号
  • [--zone=<zone>] --add-port=<portid>[-<portid>]/<protocol>:为指定区域设置允许访问的某个/某段端口号(包括协议名)
  • [--zone=<zone>] --remove-port=<portid>[-<portid>]/<protocol>:删除指定区域已设置的允许访问的端口号(包括协议名)
  • [--zone=<zone>] --list-icmp-blocks:显示指定区域内拒绝访问的所有ICMP类型
  • [--zone=<zone>] --add-icmp-block=<icmptype>:为指定区域设置拒绝访问的某项ICMP类型
  • [--zone=<zone>] --remove-icmp-block=<icmptype>:删除指定区域已设置的拒绝访问的某项ICMP 类型,省略-zone=<zone>时表示对默认区域操作

具体操作

1. 为默认区域设置允许访问的服务

#显示默认区域内允许访问的所有服务
firewall-cmd --list-services

#设置默认区域允许访问http服务
firewall-cmd --add-service=http

2. 为internal区域设置允许访问的服务

#设置internal区域允许访问mysql服务
firewall-cmd --zone=internal --add-service=mysql

#显示internal区域内允许访问的所有服务
firewall-cmd --zone=internal --list-services


端口管理

1. 在internal区域打开443/TCP端口

firewall-cmd --zone=internal --add-port=443/tcp

2. 在internal区域禁止443/TCP端口访问

firewall-cmd --zone=internal --remove-port=443/tcp

七、 小实验

服务端:192.168.180.110

客户端:192.168.180.120

项目需求

  1. 禁止主机ping服务器
  2. 只允许192.168.180.120访问ssh
  3. 允许所有主机访问httpd服务

实验步骤

1. 允许所有主机访问httpd

firewall-cmd --zone=public --add-service=http

#可以设置永久设置
firewall-cmd --zone=public --add-service=http –permanent	

客户端测试访问

curl 192.168.180.110

2. 只允许192.168.180.120访问ssh

#先删除在默认区域的ssh
firewall-cmd --zone=public --remove-service=ssh

#在work区域添加ssh
firewall-cmd --zone=work --add-source=192.168.180.120
firewall-cmd --zone=work --add-service=ssh

客户端访问测试

用192.168.180.120测试

用192.168.180.130测试,不行

3. 禁止ping服务器

firewall-cmd --zone=public --add-icmp-block=echo-request


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

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

相关文章

Android中使用NSD扫描,实现局域网内设备IP的发现

0. 前言 本文介绍了什么是NSD协议&#xff0c;并介绍了如何在Android中实现NSD的服务端和客户端&#xff0c;实现局域网内的设备发现功能。 1. NSD是什么 在Android开发中&#xff0c;NSD&#xff08;Network Service Discovery&#xff09;是一种用于在局域网内发现其他设备…

ROS2 系列学习教程(总目录)

ROS2Learning ROS1 系列学习教程(总目录) 一、ROS2 简介 1.1 ROS2简介及学习资源汇总 二、ROS2 基础 2.1 ROS2安装详细教程&#xff08;以Humble为例&#xff09; 2.2 ROS2 构建系统 colcon 介绍、安装与使用 2.3 ROS2 与 ROS1 编码方式对比 ROS2 与 ROS1 编码方式对比&am…

万字长文解读深度学习——VQ-VAE和VQ-VAE-2

&#x1f33a;历史文章列表&#x1f33a; 深度学习——优化算法、激活函数、归一化、正则化 深度学习——权重初始化、评估指标、梯度消失和梯度爆炸 深度学习——前向传播与反向传播、神经网络&#xff08;前馈神经网络与反馈神经网络&#xff09;、常见算法概要汇总 万字长…

Vue 组件通信全面解析

Vue 组件通信全面解析&#xff1a;方式、原理、优缺点及最佳实践 在 Vue 开发中&#xff0c;组件通信是一个重要的核心问题。随着应用复杂度的增加&#xff0c;如何在组件之间有效传递数据、触发事件&#xff0c;直接影响代码的可维护性和可扩展性。Vue 提供了多种组件通信方式…

对力扣77组合优化的剪枝操作的理解

77. 组合 代码随想录放出了这一张图 我乍一看觉得想当然,但是仔细想想,又不知道以下剪枝代码作何解释,因此我想通过这篇文章简要解释一下 class Solution { private:vector<vector<int>> result;vector<int> path;void backtracking(int n, int k, int sta…

SpringMVC其他扩展

一、全局异常处理机制: 1.异常处理两种方式: 开发过程中是不可避免地会出现各种异常情况的&#xff0c;例如网络连接异常、数据格式异常、空指针异常等等。异常的出现可能导致程序的运行出现问题&#xff0c;甚至直接导致程序崩溃。因此&#xff0c;在开发过程中&#xff0c;…

运行 GreatSQL 时为什么要求关闭透明大页

在大部分运维规范中&#xff0c;一般都会要求在运行 GreatSQL/MySQL 的环境中要关闭透明大页&#xff0c;那么到底什么是透明大页&#xff0c;为什么要关闭&#xff0c;打开有什么风险吗&#xff1f; 在此之前&#xff0c;我也是有点懵的&#xff0c;本文试着回答这个疑问&…

日本IT|AWS技术方向都需要做哪些工作呢?

在日本IT行业中&#xff0c;AWS&#xff08;亚马逊网络服务&#xff09;技术方向的工作主要涉及利用AWS提供的各种服务和工具来构建、部署和管理云计算解决方案。具体来说&#xff0c;AWS技术方向的工作内容可能包括但不限于以下几个方面&#xff1a; 架构设计&#xff1a; 根据…

PostgreSQL实现透视表查询

PostgreSQL 8.3版本发布时&#xff0c;引入了一个名为tablefunc的新扩展。这个扩展提供了一组非常有趣的函数。其中之一是交叉表函数&#xff0c;用于创建数据透视表。这就是我们将在本文中讨论的内容。 需求说明 解释此函数如何工作的最简单方法是使用带有数据透视表的示例…

生信软件开发1 - 设计一个简单的Windwos风格的GUI报告软件

1. 安装基础库 使用Windows 11标题样式和主题自定义UI窗口库pywinstyles&#xff08;github: https://github.com/Akascape/py-window-styles&#xff09;&#xff0c;结合python自带tkinter库设计一个报告GUI软件。 pip install pywinstyles2. 设计一个简单的Windwos风格的G…

navicat连接mysql 8.0以上版本2059错误

安装了最新版本8.0.4的mysql之后&#xff0c;使用navicat链接提示以下错误。原因是因为mysql8.0 之前的版本中加密规则是 mysql_native_password&#xff0c;而 mysql8.0 之后的版本加密规则是caching_sha2_password 处理方案 解决方案1&#xff1a;下载安装最新版本navicat…

使用docker快速部署Nginx、Redis、MySQL、Tomcat以及制作镜像

文章目录 应用快速部署NginxRedisMySQLTomcat 制作镜像镜像原理基于已有容器创建使用 Dockerfile 创建镜像指令说明构建应用创建 Dockerfile 文件创建镜像 应用快速部署 Nginx docker run -d -p 80:80 nginx使用浏览器访问虚拟机地址 Redis docker pull redis docker run --…

【PlantUML系列】类图(一)

目录 一、类 二、接口 三、抽象类 四、泛型类 五、类之间的关系 六、添加注释 七、包图 八、皮肤参数 一、类 使用class关键字定义类&#xff0c;类名后跟大括号&#xff0c;声明类的属性和方法。 属性&#xff1a;格式为{visibility} attributeName : AttributeType…

VR眼镜可视化编程:开启医疗信息系统新纪元

一、引言 随着科技的飞速发展&#xff0c;VR 可视化编程在医疗信息系统中的应用正逐渐成为医疗领域的新趋势。它不仅为医疗教育、手术培训、疼痛管理等方面带来了新的机遇&#xff0c;还在提升患者体验、推动医疗信息系统智能化等方面发挥着重要作用。 在当今医疗领域&#xf…

IS-IS的原理

IS-IS的基本概念&#xff1a; 概述&#xff1a; IS-IS&#xff0c;中间系统到中间系统&#xff0c;是ISO国际标准化组织为它的无连接网络协议设计的一种动态路由协议 IS-IS支持CLNP网络和IP网络&#xff0c;采用数据链路层封装&#xff0c;区别于ospf只支持IP网络&#xff0…

华为ACL应用笔记

1、基本ACL 2000-2999 基本ACL&#xff08;Access Control List&#xff0c;访问控制列表&#xff09;是一种网络安全技术&#xff0c;它根据源IP地址、分片信息和生效时间段等信息来定义规则&#xff0c;对报文进行过滤。 规则&#xff1a; ACL由一系列规则组成&#xff0c;每…

点云标注软件SUSTechPOINTS的安装和使用,自测win10和ubuntu20.04下都可以用

点云标注软件SUSTechPOINTS的安装和使用 github项目源码&#xff1a;https://github.com/naurril/SUSTechPOINTS gitee源码以及使用教程&#xff1a;https://gitee.com/cuge1995/SUSTechPOINTS 首先拉取源码 git clone https://github.com/naurril/SUSTechPOINTS最好是在cond…

大模型评测中的基础指标都包括哪些

大语言模型&#xff08;LLM&#xff09;评测是LLM开发和应用中的关键环节。目前评测方法可以分为人工评测和自动评测&#xff0c;其中&#xff0c;自动评测技术相比人工评测来讲&#xff0c;具有效率高、一致性好、可复现、鲁棒性好等特点&#xff0c;逐渐成为业界研究的重点。…

SystemUI修改状态栏电池图标样式为横屏显示(以Android V为例)

SystemUI修改状态栏电池图标样式为横屏显示(以Android V为例) 1、概述 在15.0的系统rom产品定制化开发中&#xff0c;对于原生系统中SystemUId 状态栏的电池图标是竖着显示的&#xff0c;一般手机的电池图标都是横屏显示的 可以觉得样式挺不错的&#xff0c;所以由于产品开发…

最长最短单词

最长最短单词 C语言实现C实现Java实现Python实现 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 输入1行句子&#xff08;不多于200个单词&#xff0c;每个单词长度不超过100&#xff09;&#xff0c;只包含字母、空格和逗号。单词由至少一…