Selinux及防火墙
一,selinux简介:
SELinux(Security-Enhanced Linux)是一个Linux内核安全模块,旨在提供强制访问控制(MAC)机制,以增强系统的安全性。由美国国家安全局(NSA)开发,SELinux通过实施细粒度的安全策略,控制用户和进程对系统资源的访问。
主要功能:
- 强制访问控制:不同于传统的自愿访问控制,SELinux通过政策强制实施安全规则,限制程序和用户的行为。
- 安全策略:SELinux使用复杂的策略定义哪些操作是被允许的,支持细致到每个进程和文件的访问控制。
- 标签和类型强制:每个进程和对象(如文件)都有一个安全标签,SELinux根据这些标签来决定访问权限。
- 审计与监控:SELinux能够记录所有的访问尝试,帮助系统管理员检测和分析潜在的安全问题。
应用场景:
保护网络服务(如Web服务器)免受攻击。
实现多用户环境下的安全隔离。
满足合规性和安全审计要求。se
二,selinux的原理:
在红帽Linux(Red Hat Enterprise Linux)中,SELinux的工作原理基于强制访问控制(MAC),其主要机制包括以下几个方面:
1. 安全策略:
SELinux通过定义一组安全策略来控制对系统资源的访问。这些策略规定了哪些用户和进程可以访问哪些文件、设备和其他资源。这些策略通常在系统启动时加载,并且可以根据需要进行修改。
2. 类型标签:
每个进程和对象(如文件、目录、端口)都有一个与之相关的安全上下文标签(即安全属性)。标签通常包括以下几个部分:
- 用户:表示进程的拥有者。
- 角色:用于定义用户在系统中的身份。
- 类型:决定了进程和对象之间的访问权限。
3. 决策机制:
当进程尝试访问资源时,SELinux会根据当前的安全策略和标签,决定是否允许该操作。这个过程涉及以下步骤:
- 访问请求:进程发起对某个对象的访问请求。
- 策略匹配:SELinux检查当前安全上下文和策略,判断是否有匹配的规则。
- 允许或拒绝:如果有匹配的规则且操作被允许,访问将被执行;否则,访问请求将被拒绝,系统将记录拒绝事件。
4. 审计与日志:
SELinux能够记录所有的访问尝试,包括被拒绝的操作。这些日志信息对于安全审计和问题排查非常有用,管理员可以通过审计日志了解哪些操作被拒绝,以及拒绝的原因。
5. 模式:
SELinux可以在不同的模式下运行:
- 强制模式(Enforcing):强制实施策略,拒绝不符合策略的访问。
- 许可模式(Permissive):不强制实施策略,但记录所有不符合策略的访问尝试。
- 禁用模式(Disabled):完全关闭SELinux。
通过这些机制,SELinux在红帽Linux中提供了强大的安全防护,保护系统免受恶意攻击和未经授权的访问。
#查看文件的安全上下文
[root@localhost ~]# ls -Z-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfgdrwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 home
三,selinux的用法:
#查看selinux的状态
sestatus#切换的许可模式
setenforce 0#切换到强制模式
setenforce 1#查看当前selinux的策略
getenforce#查看安全上下文
ls -Z /path/to/file#更改安全上下文
chcon -t httpd_sys_content_t /var/www/html/example.html#查看审计日志:该命令将显示所有被拒绝的访问尝试的记录
cat /var/log/audit/audit.log | grep denied#生成SELinux策略建议: 使用audit2allow工具可以将审计日志中的拒绝信息转换为策略建议
cat /var/log/audit/audit.log | audit2allow -M mypol
semodule -i mypol.pp
第一个命令将生成策略模块,第二个命令将其安装。
四,防火墙的简介:
防火墙是一种网络安全设备或软件,用于监控和控制进入和离开计算机网络的网络流量。它通过设定的安全规则来阻止或允许数据包,从而保护网络和设备免受未授权访问、网络攻击和恶意软件的威胁。
主要功能:
- 流量过滤:防火墙根据预设的规则过滤网络流量,允许合法流量通过,同时阻止潜在的恶意流量。
- 访问控制:防火墙可以限制某些用户或设备对网络资源的访问,确保只有授权用户可以访问敏感数据或服务。
- 网络地址转换(NAT):一些防火墙可以隐藏内部网络的IP地址,防止外部用户直接访问内部设备。
- 日志记录与监控:防火墙记录所有通过的流量,并提供日志以供分析,帮助管理员检测潜在的安全事件。
类型:
- 包过滤防火墙:根据数据包的源地址、目标地址和端口号等信息进行简单的过滤。
- 状态检测防火墙:跟踪连接的状态,能够理解数据包之间的上下文关系,提供更强的安全性。
- 代理防火墙:通过代理服务器进行流量转发,能够深入检查数据包内容,增加安全性。
- 下一代防火墙(NGFW):集成了多种功能,包括应用层过滤、入侵防御系统(IPS)和深度包检查(DPI)。
应用场景:
- 企业网络安全:保护公司内部网络免受外部攻击。
- 家庭网络安全:保护家庭设备和个人信息免受网络威胁。
- 数据中心安全:保护关键应用和数据免受攻击。
防火墙是网络安全策略的重要组成部分,能够有效地帮助防止网络入侵和数据泄露
五,红帽中的防火墙:
简介
firewalld:红帽Linux中的默认防火墙管理工具,使用iptables作为底层实现。它提供了一个用户友好的界面,支持命令行和图形界面(如firewall-config)。- 区域和服务:
firewalld使用区域来定义不同的信任级别,每个区域可以指定允许的服务和端口。
原理
- 区域概念:
firewalld将网络接口分配到不同的区域中,每个区域定义了不同的安全级别。例如,public区域用于不信任的网络,而trusted区域则用于完全信任的网络。 - 服务与端口:用户可以通过服务名称(如HTTP、SSH等)来允许或拒绝特定流量,而不需要手动指定端口号。
- 动态管理:
firewalld支持动态添加或移除规则,而无需重启服务。这使得配置更为灵活,适合于快速变化的网络环境。 - 持久化与临时配置:规则可以设置为临时生效或持久化保存,以便在重启后依然生效。
应用
保护服务器:通过配置适当的区域和服务,保护Web服务器、数据库服务器等不受外部攻击。
隔离网络流量:在多租户环境中,可以通过不同的区域来隔离不同客户的流量。
VPN与远程访问:配置防火墙规则以允许VPN流量,通过安全隧道保护远程访问。
日志记录与审计:通过配置日志规则,监控网络流量和攻击尝试,帮助进行安全审计。
六,防火墙的一些常见配置命令:
#查看防火墙状态:
firewall-cmd --state#查看当前区域和活动接口:该命令将显示当前活动的区域及其相关联的网络接口。
firewall-cmd --get-active-zones#查看特定区域的规则:该命令将列出public区域的所有规则,包括允许的服务、端口和接口。
firewall-cmd --zone=public --list-all#添加服务到某个区域:该命令将HTTP服务添加到public区域,并将其设置为持久化配置。
firewall-cmd --zone=public --add-service=http --permanent#添加特定端口:该命令将TCP端口8080添加到public区域,并持久化
firewall-cmd --zone=public --add-port=8080/tcp --permanent#删除服务或端口:该命令将从public区域中删除HTTP服务。
firewall-cmd --zone=public --remove-service=http --permanent#重新加载配置:该命令将应用所有未持久化的更改,并重新加载防火墙配置。
firewall-cmd --reload#查看日志: 如果启用了日志记录,可以使用以下命令查看日志:
journalctl -f -u firewalld
七,实验案例:
案例 1:允许SSH和HTTP流量
# 允许SSH流量
firewall-cmd --zone=public --add-service=ssh --permanent# 允许HTTP流量
firewall-cmd --zone=public --add-service=http --permanent# 重新加载配置以使更改生效
firewall-cmd --reload
案例 2:限制特定IP地址的访问
# 添加拒绝规则
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" reject' --permanent# 重新加载配置
firewall-cmd --reload
案例 3:启用HTTPS流量
# 添加HTTPS服务
firewall-cmd --zone=public --add-service=https --permanent# 重新加载配置
firewall-cmd --reload
案例 4:临时允许某个服务
# 临时允许FTP服务
firewall-cmd --zone=public --add-service=ftp# 重新加载配置以使更改生效
firewall-cmd --reload
相关文章:
Selinux及防火墙
一,selinux简介: SELinux(Security-Enhanced Linux)是一个Linux内核安全模块,旨在提供强制访问控制(MAC)机制,以增强系统的安全性。由美国国家安全局(NSA)开…...
业绩代码查询实战——php
一、一级代码显示职员 foreach($data_职员信息 as $key > $value){//$where_查询分类$where_查询通用;//$dat分类one $业绩提成->where($where_查询分类)->order("CreateDate desc")->select();if($value[haschildname]0 && $value[key] !"…...
内网穿透技术选型PPTP(点对点隧道协议)和 FRP(Fast Reverse Proxy)
PPTP(点对点隧道协议)和 FRP(Fast Reverse Proxy)是两种实现内网穿透的技术,但它们的工作原理、使用场景和特点有很大区别。以下是它们的详细比较: PPTP(Point-to-Point Tunneling Protocol&am…...
信号与噪声分析——第三节:随机过程的统计特征
随机过程的定义: 随机过程是一种数学模型,用来描述系统或现象在时间或者空间上随之变化的不确定性。 一个随机过程的数字特征 1.数学期望(统计平均值): 表示为 数学期望是随机过程在时间 t 上的平均值,通常…...
nginx(四):如何在 Nginx 中配置以保留真实 IP 地址
如何在 Nginx 中配置以保留真实 IP 地址 1、概述2、nginx配置示例2.1、配置说明2.2、客户端获取真实IP2.2.1、代码说明 3、插曲4、总结 大家好,我是欧阳方超,可以我的公众号“欧阳方超”,后续内容将在公众号首发。 1、概述 当使用nginx作为…...
docker对nginx.conf进行修改后页面无变化或页面报错
可能是因为没有重启nginx容器 可以执行 docker restart nginx 重启nginx试试 引入了其他的配置文件 本人安装的是docker默认的nginx,自带了一个default.conf的配置文件,并且在nginx.conf中还引入了这个文件,后面我还对nginx.conf添加了一个…...
SpringCloudGateway — 网关路由
Spring Cloud Gateway 是 Spring 提供的一个高效、灵活的 API 网关解决方案,基于 Spring 5、Spring Boot 2 和 Project Reactor,具有高并发和低延迟的特点。它用于在微服务架构中对外提供统一的入口,处理请求的路由、过滤、负载均衡等功能。 …...
docker pull 拉取镜像失败,使用Docker离线包
1、登录并注册Github,然后在Github中搜索并打开“wukongdaily/DockerTarBuilder” 项目,在该项目主页点击“Fork”。 然后点 “Create Fork”,将项目创建到自己的Github主页。 2、接着在自己创建过来的这个项目中点击“Actions” 3、然后…...
轻松理解操作系统 - 轻松了解 inode 是如何管理文件的
Linux 由于其开源、比较稳定等特点统治了服务端领域。也因此,学习Linux 系统相关知识在后端开发等岗位中变得越来越重要,甚至可以说是必不可少的。 因为它的广泛应用,所以在程序员的日常工作和面试中,它都是经常出现的。它的开源特…...
go中Println和Printf的区别
Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 go中Println和Printf的区别 package mainimport ( "fmt" )//TIP To run your code, right-click the c…...
C++现代教程七之模块
优点 编译时间减少:模块消除了重复解析和编译头文件的需要,从而显著减少了编译时间。特别是在大型项目中,这一点尤为重要。更好的封装性:模块允许更严格的封装,可以明确地控制哪些符号对外可见。这有助于减少命名冲突和…...
AVLTree
1.AVL树的概念 二叉搜索树虽然可以提高查找的效率,但是如果数据有序或者接近有序,二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。为了解决该问题,于是就有了AVLTree。即当向二叉搜索树中插入…...
Java面向对象 C语言字符串常量
1. (1). package liujiawei;public class Phone {String brand;double price;public void call(){System.out.println("手机打电话");}public void play(){System.out.println("手机打游戏");} } public class phonetest {public…...
SpringBoot+Thymeleaf电商系统
> 这是一个基于SpringBootThymeleafBootstrap实现的简单电商系统。 > 实现了用户浏览、添加购物车、商品管理等功能,并支持响应式布局。 > 本项目适合JAVA初学者作为入门学习项目 一、部分界面演示 二、技术栈 技术栈中文描述Spring Boot快速开发框架…...
了解数据库并发产生的问题
在数据库管理系统中,并发控制是一个至关重要的方面。随着多个用户或进程同时访问和修改数据库中的数据,如果没有适当的并发控制机制,就可能导致数据不一致、丢失更新、脏读、不可重复读和幻读等问题。在单用户系统中,数据库操作是…...
openstack之guardian介绍与实例创建过程
运行特征 采集模块:扩展Ceilometer,采集存储网、业务网连通性、nova目录是否可读写; 收集模块:将采集到的数据存储到数据库中; 分析模块:根据采集的结果,分析各节点状态,并进行反向检…...
新一代跟踪器StrongSORT: Make DeepSORT Great Again论文解析—让 DeepSORT 再次伟大
新一代跟踪器StrongSORT: Make DeepSORT Great Again论文解析—让 DeepSORT 再次伟大 时间:2023年 机构:北京邮电大学 发表在:IEEE TRANSACTIONS ON MULTIMEDIA, VOL. 25, 2023 代码源码地址: pytorch版本:https://github.com/dyh…...
SAP ABAP开发学习——RFC
目录 RFC接口 定义 调用过程 RFC的通信 RFC通信情况 RFC接口系统 RFC的通信模式 RFC版本 RFC调用方式 Web Service接口 SAP创建Web Service示例 远程目标的维护 创建远程目标 外部系统访问设置 RFC的调用 RFC接口 定义 调用过程 RFC的通信 RFC通信情况 RFC接…...
Elasticsearch里的索引index是什么概念?(ChatGPT回答)
在 Elasticsearch(ES)中,索引(Index) 是一种数据结构,用来存储、组织和管理文档数据。它可以理解为数据库中的一张表,但有一些关键的不同之处。索引是 Elasticsearch 全文搜索引擎的核心概念之一…...
安全性测试
安全性测试评估系统在面对各种安全威胁时的防护能力和安全性的过程。以下是安全性测试的一些主要方面和方法: 1. 身份验证和授权测试 测试目标 确保系统能够正确验证用户的身份,并根据用户的权限授予相应的访问权限。测试方法 弱密码测试:尝…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
JavaScript基础-API 和 Web API
在学习JavaScript的过程中,理解API(应用程序接口)和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能,使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...
