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. 身份验证和授权测试 测试目标 确保系统能够正确验证用户的身份,并根据用户的权限授予相应的访问权限。测试方法 弱密码测试:尝…...
HTML 语义化
目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案: 语义化标签: <header>:页头<nav>:导航<main>:主要内容<article>&#x…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
前端中slice和splic的区别
1. slice slice 用于从数组中提取一部分元素,返回一个新的数组。 特点: 不修改原数组:slice 不会改变原数组,而是返回一个新的数组。提取数组的部分:slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...
从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...
