selinux、firewalld

一、selinux

1、selinux(Security-Enhanced Linux)------ 安全强化的linux

2、selinux的工作原理

2.1 工作原理 ------- SELinux是通过MAC的方式来控制管理进程,它控制的主体是进程,而目标则是该进程能否读取的文件资源。

  • 主体(subject):就是进程
  • 目标(object):被主体访问的资源,可以是文件、目录、端口等。
  • 策略(policy):由于进程与文件数量庞大,因此SELinux会依据某些服务来制定基本的访问安全策略。(这些策略内还会有详细的规则(rule)来指定不同的服务开放某些资源的访问与否。)
    目前主要策略有:
  • targeted:针对网络服务限制较多,针对本机限制较少,是默认的策略;
  • strict:完整的SELinux限制,限制方面较为严格。

2.2 安全上下文(security context):主体能不能访问目标除了策略指定外,主体与目标的安全上下文必须一致才能够顺利访问。(最终文件的成功访问还是与文件系统的rwx权限设置有关 。)

安全上下文用冒号分为四个字段:
Identify role type
  • 身份标识(Identify):相当于账号方面的身份标识,主要有以下三种常见的类型:
    root:表示root的账号身份;
    system_u:表示程序方面的标识,通常就是进程;
    unconfined_u:代表的是一般用户账号相关的身份。
  • 角色(role):通过角色字段,可知道这个数据是属于程序、文件资源还是代表用户。一般角色有:
    object_r:代表的是文件或目录等文件资源;
    system_r:代表的是进程。
  • 类型(type):在默认的targeted策略中,Identifyrole字段基本上是不重要的,重要的在于这个类型字段。而类型字段在文件与进程的定义不太相同,分别是:
    type:在文件资源上面称为类型。
    domain:在主体程序中则称为域。
    domain需要与type搭配,则该程序才能够顺利读取文件资源。
  • 最后一个字段是和MLSMCS相关的东西,代表灵敏度,一般用s0s1s2来命名,数字代表灵敏的分级。数值越大、灵敏度越高。

2.3 访问过程

  • 首先,触发具有httpd_exec_t这个类型的/usr/sbin/httpd这个可执行文件;
  • 该文件的类型会让这个文件所造成的主体进程具有httpd这个域,我们的策略已经针对这个域制定了许多规则,其中包括这个域可以读取的目标资源类型;
  • 由于httpd domain被设置为可读取httpd_sys_content_t这个类型的目标文件,因此httpd进程就 能够读取在/var/www/html/目录下面的文件了;
  • 最终能否读到/var/www/html/目录下面的数据,还要看rwx是否符合linux权限的规范。

3、selinux的启动、关闭与查看

3.1 selinux三种模式

  • enforcing:强制模式,代表SELinux正在运行中,开始限制domain/type
  • permissive:宽容模式,代表SELinux正在运行中,不过仅会有警告信息并不会实际限制domain/type的访问。
  • disabled:关闭,SELinux并没有实际运行。

getenforce ------  查看目前的模式

3.2 修改安全上下文

chcon [-R] [-t type] [-u user] [-r role] 文件
  • -R:连同该目录下的子目录也同时修改;
  • -t:后面接安全上下文的类型字段;
  • -u:后面接身份识别;
  • -r:后面接角色
chcon [-R] --reference = 范例文件 文件 将文件的安全上下文按照范例文件修改
restorecon [-Rv] 文件或目录
  • -R:连同子目录一起修改;
  • -v:将过程显示到屏幕上
restorecon 怎么会知道每个目录记载的默认 selinux type 类型呢?因为系统将每个目录的默认
selinux type 类型记录在 /etc/selinux/targeted/contexts/ 目录内。但是该目录内有很多不同
的数据,所以我们可以用 semanage 这个命令的功能来查询与修改。
semanage login|user|port|interface|fcontext|translation -l
semanage fcontext - {a|d|m} [-frst] file_spec
  • -l:为查询;
  • -a:增加一些目录的默认安全上下文的设置;
  • -m:修改;
  • -d:删除。

二、防火墙

1、防火墙:防火墙是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包的进出。

1.1 分类

  • 硬件防火墙:由厂商设计好的主机硬件,这台硬件防火墙的操作系统主要以提供数据包数据的过滤机制为主,并将其他不必要的功能拿掉。
  • 软件防火墙:就是保护系统网络安全的一套软件(或称为机制),例如Netfilter(数据包过滤机制)TCP Wrappers都可以称为软件防火墙。
    数据包过滤------就是分析进入主机的网络数据包,将数据包的头部数据提取出来进行分析,以决定该连接为放行或抵挡的机制。由于这种方式可以直接分析数据包头部数据,包括硬件地址,软件地址,TCP、UDPICMP等数据包的信息都可以进行过滤分析,因此用途非常广泛(主要分析OSI七层协议的234层)。
    所以,linux的Netfilter机制可以进行的分析工作有:
  • 拒绝让Internet的数据包进入主机的某些端口;
  • 拒绝让某些来源ip的数据包进入;
  • 拒绝让带有某些特殊标志(flag)的数据包进入,最常拒绝的就是带有SYN的主动连接的标志了;
  • 分析硬件地址(MAC)来决定连接与否。

1.2 Netfilter防火墙存在的问题:

  • 防火墙并不能有效阻挡病毒或木马程序。(假设主机开放了www服务,防火墙的设置是一定要将www服务的port开放给client端的。假设www服务器软件有漏洞,或者请求www服务的数据包本身就是病毒的一部分时,防火墙是阻止不了的)
  • 防火墙对于内部LAN的攻击无能为力(防火墙对于内部的规则设置通常比较少,所以就很容易造成内部员工对于网络无用或滥用的情况)
netfilter 这个数据包过滤机制是由 linux 内核内建的,不同的内核版本使用的设置防火墙策略的软件不一样,在红帽7 系统中 firewalld 服务取代了 iptables 服务,但其实 iptables 服务与 firewalld 服务它们都只是用来定义防火墙策略的“ 防火墙管理工具 而已,他们的作用都是用于维护规则,而真正使用规则干活的是内核的netfilter
2、iptables
2.1 iptables介绍
防火墙会从以上至下的顺序来读取配置的策略规则,在找到匹配项后就立即结束匹配工作并去执行匹配项中定义的行为(即放行或阻止)。如果在读取完所有的策略规则之后没有匹配项,就去执行默认的策略。一般而言,防火墙策略规则的设置有两种:一种是“ (即放行),一种是 (即阻止)。当防火墙的默认策略为拒绝时(堵),就要设置允许规则(通),否则谁都进不来;如果防火墙的默认策略为允许时,就要设置拒绝规则,否则谁都能进来,防火墙也就失去了防范的作用。
iptables 服务把用于处理或过滤流量的策略条目称之为规则,多条规则可以组成一个规则链,而规则链则依据数据包处理位置的不同进行分类,具体如下:
  • 在进行路由选择前处理数据包,用于目标地址转换(PREROUTING);
  • 处理流入的数据包(INPUT);
  • 处理流出的数据包(OUTPUT);
  • 处理转发的数据包(FORWARD);
  • 在进行路由选择后处理数据包,用于源地址转换(POSTROUTING)。
iptables 命令可以根据流量的源地址、目的地址、传输协议、服务类型等信息进行匹配,一旦匹配成功,iptables 就会根据策略规则所预设的动作来处理这些流量。

语法格式:iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

参数说明
-t
对指定的表进行操作, table 必须是 raw nat filter mangle 中的一个。默认是 filter表。
-p
指定要匹配的数据包协议类型
-s
--source address[/mask][,...] :把指定的一个或者一组地址作为源地址,按此规则进行过滤。当后面没有mask 时, address 是一个地址,比如: 192.168.1.1 ;当 mask 指定时,可以表示一组范围内的地址,比如:192.168.1.0/255.255.255.0
-d
--destination address[/mask][,...] :地址格式同上,但这里指定地址为目的地址,按此进行过滤
-i
--in-interface name :指定数据包的来自来自网络接口,比如最常见的 eth0 。注意:它只对 INPUT FORWARD PREROUTING 这三个链起作用。如果没有指定此选项, 说明可以来自任何一个网络接口。同前面类似,"!" 表示取反
-o
--out-interface name :指定数据包出去的网络接口。只对 OUTPUT FORWARD ,POSTROUTING 三个链起作用
-L
--list [chain] 列出链 chain 上面的所有规则,如果没有指定链,列出表上所有链的所有规则
-A
--append chain rule-specification :在指定链 chain 的末尾插入指定的规则,也就是说,这条规则会被放到最后,最后才会被执行。规则是由后面的匹配来指定
-l
--insert chain [rulenum] rule-specification :在链 chain 中的指定位置插入一条或多条规则。如果指定的规则号是1 ,则在链的头部插入。这也是默认的情况,如果没有指定规则号
-D
--delete chain rule-specification -D, --delete chain rulenum :在指定的链 chain 中删除一个或多个指定规则
-R num
Replays 替换 / 修改第几条规则
-P
--policy chain target :为指定的链 chain 设置策略 target 。注意,只有内置的链才允许有策略,用户自定义的是不允许的
-F
--flush [chain] 清空指定链 chain 上面的所有规则。如果没有指定链,清空该表上所有链的所有规则
-N
--new-chain chain 用指定的名字创建一个新的链
-X
--delete-chain [chain] :删除指定的链,这个链必须没有被其它任何规则引用,而且这条上必须没有任何规则。如果没有指定链名,则会删除该表中所有非内置的链
-E
--rename-chain old-chain new-chain :用指定的新名字去重命名指定的链。这并不会对链内部造成任何影响
-Z
--zero [chain] :把指定链,或者表中的所有链上的所有计数器清零
-j
--jump target < 指定目标 > :即满足某条件时该执行什么样的动作。 target 可以是内置的目标,比如 ACCEPT ,也可以是用户自定义的链
-h
显示帮助信息
3、firewalld
3.1 firewalld介绍
iptables service 首先对旧的防火墙规则进行了清空,然后重新完整地加载所有新的防火墙规则,而如果配置了需要 reload 内核模块的话,过程背后还会包含卸载和重新加载内核模块的动作,而不幸的是,这个动作很可能对运行中的系统产生额外的不良影响,特别是在网络非常繁忙的系统中。
如果我们把这种哪怕只修改一条规则也要进行所有规则的重新载入的模式称为静态防火墙的话,那么firewalld 所提供的模式就可以叫做动态防火墙,它的出现就是为了解决这一问题,任何规则的变更都不需要对整个防火墙规则列表进行重新加载,只需要将变更部分保存并更新即可, 它具备对 IPv4 IPv6 防火墙设置的支持。
相比于传统的防火墙管理工具, firewalld 支持动态更新技术并加入了区域的概念。区域就是 firewalld 预先准备了几套防火墙策略集合(策略模板),用户可以选择不同的集合,从而实现防火墙策略之间的快速切换。
3.2 firewalld 中常见的区域名称(默认为 public )以及相应的策略规则:
区域默认规则策略
阻塞区域(block)
拒绝流入的流量,除非与流出的流量相关
工作区域(work)
拒绝流入的流量,除非与流出的流量相关
家庭区域(home)
拒绝流入的流量,除非与流出的流量相关
公共区域(public)
不相信网络上的任何计算机,只有选择接受传入的网络连接。
隔离区域(DMZ)
隔离区域也称为非军事区域,内外网络之间增加的一层网络,起到缓冲作用。对于隔离区域,只有选择接受传入的网络连接。
信任区域(trusted)
允许所有的数据包。
丢弃区域(drop)
拒绝流入的流量,除非与流出的流量相关
内部区域(internal)
等同于 home 区域
外部区域(external)
拒绝流入的流量,除非与流出的流量有关;而如果流量与 ssh 服务相关,则允许流量
firewalld 默认提供的九个 zone 配置文件都保存在 “/usr/lib/firewalld/zones/” 目录下,分别为:
block.xml drop.xml home.xml public.xml work.xml dmz.xml external.xml
internal.xml trusted.xml
RHEL7 中, firewalld 服务是默认的防火墙配置管理工具,他拥有基于 CLI (命令行界面)和基于
GUI (图形用户界面)的两种管理方式。 firewall-config firewall-cmd 是直接编辑 xml 文件,其中
firewall-config 是图形化工具, firewall-cmd 是命令行工具。
3.3 firewall-cmd 命令的参数说明如下:
参数说明
--get-default-zone
查询默认的区域名称
--set-default-zone=< 区域名称 >
设置默认的区域,使其永久生效
--get-zones
显示可用的区域
--get-services
显示预先定义的服务
--get-active-zones
显示当前正在使用的区域与网卡名称
--add-source=
将源自此 IP 或子网的流量导向指定的区域
--remove-source=
不再将源自此 IP 或子网的流量导向某个指定区域
--list-all
显示当前区域的网卡配置参数、资源、端口以及服务等信息
--list-all-zones
显示所有区域的网卡配置参数、资源、端口以及服务等信息
--add-service=< 服务名 >
设置默认区域允许该服务的流量
--add-port=< 端口号 / 协议 >
设置默认区域允许该端口的流量
--remove-service=< 服务名 >
设置默认区域不再允许该服务的流量
--remove-port=< 端口号 / 协议 >
设置默认区域不再允许该端口的流量
--reload
永久生效 的配置规则立即生效,并覆盖当前的配置规则
--panic-on
开启应急状况模式
--panic-off
关闭应急状况模式

3.4 使用firewalld配置的防火墙策略默认为当前生效,会随着系统的重启而失效。如果想让策略一直存在,就需要使用永久模式了,即在使用firewall-cmd命令设置防火墙策略时添加--permanent参数,这样配置的防火墙策略就可以永久生效了,最后想要使用这种方式设置的策略生效,只能重启或者输入命令:firewall-cmd --reload

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

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

相关文章

分布式锁整理

分布锁一般有以下几种实现方式&#xff1a;数据库方式、redis、zookeeper 。 1、数据库方式 数据库方式&#xff0c;一般可以使用以下三种方式来实现 1.1 基于表记录方式 创建一张表&#xff0c;表中某个字段设置为unique&#xff0c;在需要锁时&#xff0c;就往表中新增一…

【LC】303. 区域和检索 - 数组不可变

题目描述&#xff1a; 给定一个整数数组 nums&#xff0c;处理以下类型的多个查询: 计算索引 left 和 right &#xff08;包含 left 和 right&#xff09;之间的 nums 元素的和 &#xff0c;其中 left < right 实现 NumArray 类&#xff1a; NumArray(int[] nums) 使用…

第 42 章 - Go语言 设计模式

在Go语言中&#xff0c;设计模式是一种被广泛接受的解决常见问题的最佳实践。这些模式可以分为三类&#xff1a;创建型模式、结构型模式和行为型模式。下面我将结合案例以及源代码对这三种类型的设计模式进行详细讲解。 创建型模式 创建型模式主要关注对象的创建过程&#xf…

深度学习编译器

目录 深度学习编译器 深度学习编译器的原理 举例说明 深度学习编译器 在提高并行训练可编程性方面扮演着至关重要的角色,尤其是在面对大规模智能算法开发时。下面,我将简单解释深度学习编译器的原理,并通过一个例子来说明其重要性。 深度学习编译器的原理 深度学习编译…

wordpress网站首页底部栏显示网站备案信息

一、页脚文件footer.php 例如&#xff0c;wordpress主题使用的是simple-life主题&#xff0c;服务器IP为192.168.68.89,在wordpress主题文件中有个页脚文件footer.php&#xff0c;这是一个包含网站页脚代码的文件。 footer.php 路径如下&#xff1a; /www/wwwroot/192.168.68…

使用 Vite 创建 Vue3+TS 项目并整合 ElementPlus、Axios、Pinia、Less、Vue-router 等组件或插件

前言 记录一下使用 Vite 创建 Vue3TS 项目并整合 ElementPlus、Axios、Pinia、Less、Vue-router 等组件或插件。 一、使用 Vite 创建 Vue3TS 项目 1.新建一个 temp 文件夹 &#xff08;1&#xff09;在桌面新建一个 temp 文件夹&#xff0c;然后在 VS Code 中打开此文件夹&…

【sqlcipher】pc端sqflite使用过程中遇到的问题

在flutter中使用sqlcipher时 Mac上如果通过flutter带的文件管理api&#xff08;即File的delete()方法&#xff09;删除数据库文件&#xff0c;再创建同名的数据文件的话&#xff0c;必现readonly问题&#xff0c; 这里需要注意的一点是 DatabaseFactory 在Mac上直接使用全局的…

Dubbo的RPC泛化调用

目录 一、RPC泛化调用的应用场景 二、Dubbo RPC泛化调用的实现原理 三、Dubbo RPC泛化调用的实现步骤 四、示例代码 五、泛化调用怎么发现提供该接口的服务及服务的IP和端口&#xff1f; Dubbo的RPC泛化调用是一种在调用方没有服务方提供的API的情况下&#xff0c;对服务方…

使用uni-app进行开发前准备

使用uni-app进行开发&#xff0c;需要遵循一定的步骤和流程。以下是一个详细的指南&#xff0c;帮助你开始使用uni-app进行开发&#xff1a; 一、开发环境搭建 安装Node.js&#xff1a; 首先&#xff0c;从Node.js的官方网站&#xff08;https://nodejs.org/&#xff09;下载并…

ssh的隧道连接(端口映射)

SSH 隧道&#xff08;SSH tunneling&#xff09;的命令&#xff1a;用于将本地计算机的端口与远程服务器上的端口进行映射 命令&#xff1a; ssh -L 本地端口:localhost:服务器端口 -p 22 用户名服务器ip ssh: 表示使用 SSH 协议连接远程服务器。 -L 8501:localhost:8501: 这部…

AI需求条目化全面升级!支持多格式需求,打破模板限制!

AI需求条目化全面升级&#xff01;支持多格式需求&#xff0c;打破模板限制&#xff01; 一、多格兼济 标准立成 1、功能揭秘 预览未来 平台需求板块的AI需求条目化功能迎来全面升级。它支持多种需求格式&#xff0c;不再受限于模板文件&#xff0c;能够一键自动快速且灵活地生…

SSM相关面试题01

目录 1.何为Spring Bean容器?Spring Bean容器与Spring IOC 容器有什么不同吗? 2.Spring IOC 如何理解? 3.Spring DI 如何理解? 4.Spring 中基于注解如何配置对象作用域?以及如何配置延迟加载机制? 5.Spring 工厂底层构建Bean对象借助什么机制?当对象不使用了要释放…

【c++篇】:解读Set和Map的封装原理--编程中的数据结构优化秘籍

✨感谢您阅读本篇文章&#xff0c;文章内容是个人学习笔记的整理&#xff0c;如果哪里有误的话还请您指正噢✨ ✨ 个人主页&#xff1a;余辉zmh–CSDN博客 ✨ 文章所属专栏&#xff1a;c篇–CSDN博客 文章目录 前言一.set和map的初步封装1.树的节点封装修改2.Find()查找函数3.红…

机器学习实战:泰坦尼克号乘客生存率预测(数据处理+特征工程+建模预测)

项目描述 任务&#xff1a;根据训练集数据中的数据预测泰坦尼克号上哪些乘客能生存下来 数据源&#xff1a;csv文件&#xff08;train.csv&#xff09; 目标变量&#xff1a;Survived&#xff08;0-1变量&#xff09; 数据集预览&#xff1a; 1、英文描述&#xff1a; 2、…

Linux自动化部署方法(Linux Automated Deployment Method)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 本人主要分享计算机核心技…

C++软件设计模式之组合模式与其他模式的协作举例

组合模式&#xff08;Composite Pattern&#xff09;、装饰器模式&#xff08;Decorator Pattern&#xff09;、享元模式&#xff08;Flyweight Pattern&#xff09;、迭代器模式&#xff08;Iterator Pattern&#xff09;和访问者模式&#xff08;Visitor Pattern&#xff09;…

2686694 - 操作方法:MSEG - DBSQL_REDIRECT_INCONSISTENCY

2686694 - 操作方法&#xff1a;MSEG - DBSQL_REDIRECT_INCONSISTENCY SAP Note, Version: 4, 审批日期: 24.04.2023 显示更改 组件MM-IM-GF对象状态 优先级建议/附加信息对象状态 类别咨询对象状态 审批状态已发布至客户对象状态 更正0对象状态 手动活动0对象状态已成…

嵌入式 FPGA开发

目录 一、引言 二、当前嵌入式 FPGA 开发的现状 三、嵌入式 FPGA 开发的优势 四、嵌入式 FPGA 的应用领域 1. 通信系统 2. 数字信号处理 3. 视频图像处理 4. 高速接口设计 5. 人工智能 6. IC 设计与 PCB 设计类比 五、嵌入式 FPGA 未来发展趋势 六、结论 一、引言 …

工业AI质检 AI质检智能系统 尤劲恩(上海)信息科技有限公司

来的现代化工厂&#xff0c;将逐步被无人化车间取代&#xff0c;无人工厂除了产线自动化&#xff0c;其无人质检将是绕不开的话题。尤劲恩致力于帮助工业制造领域上下游工厂减员增效、提高品质效率&#xff0c;真正实现无人质检IQC/IPQC/OQC的在线质检系统。分析生产环节真实品…

Angular v19 (三):增量水合特性详解 - 什么是水合过程?有哪些应用场景?与 Qwik 相比谁更胜一筹?- 哪个技术好我就学哪个,这就是吸心大法吧

Angular在其最新版本 v19 中引入了增量水合&#xff08;Incremental Hydration&#xff09;这一特性。这一更新引发了开发者们广泛的讨论&#xff0c;特别是在优化首屏加载速度和改善用户体验方面。本文将详解水合过程的概念、增量水合的应用场景&#xff0c;以及它与类似框架如…