selinux与防火墙
selinux
什么是selinux
SELinux 是 Security-Enhanced Linux 的缩写,意思是安全强化的 linux 。
SELinux 主要由美国国家安全局( NSA )开发,当初开发的目的是为了避免资源的误用。系统资源都是通过程序进行访问的,如果将 /var/www/html/ 权限设置为 777 ,代表所有程序均可对该 目录访问,如果已经启动www 服务器软件,那么该软件触发的进程将可以写入该目录,而该进程是对整个internet 提供服务的。 NSA 为了控制这方面的权限与进程的问题,就使用 linux 来作为研究目标,最后将研究的成果整合到linux 内核里面去,也就是 SELinux 。
传统的文件权限与账号的关系:自主访问控制, DAC ( Discretionary Access Control )。当某个进程想要对文件进行访问时,系统就会根据该进程的所有者/ 用户组,并比较文件的权限,若通过权限检查,就可以访问该文件了。各种权限设置对root 用户是无效的。以策略规则制定特定程序读取特定文件:强制访问控制, MAC ( Mandatory Access Control )。 MAC 可以针对特定的进程与特定的文件资源来进行权限的控制。也就是说,即使你是root ,在使用不同的进程时,你所能取得的权限并不一定是root ,而得要看当时该进程的设置而定。如此一来,就可以针对进程,而不是用户对文件来进行访问控制。此外,这个进程也不能任意使用系统文件资源,因为每个文件资源也有针对进程设置可取用的权限。由于,整个系统进程那么多,文件那么多,所以SELinux 也提供一些默认的策略(policy ),并在该策略内提供多个规则,让你可以选择是否启用该控制规则。
selinux的工作原理
主体( subject ):就是进程目标( object ):被主体访问的资源,可以是文件、目录、端口等。策略( policy ):由于进程与文件数量庞大,因此 SELinux 会依据某些服务来制定基本的访问安全策略。
targeted :针对网络服务限制较多,针对本机限制较少,是默认的策略;strict :完整的 SELinux 限制,限制方面较为严格。
[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
安全上下文用冒号分为四个字段:
身份标识( Identify ):相当于账号方面的身份标识,主要有以下三种常见的类型:root :表示 root 的账号身份;system_u :表示程序方面的标识,通常就是进程;unconfined_u :代表的是一般用户账号相关的身份。
角色( role ):通过角色字段,可知道这个数据是属于程序、文件资源还是代表用户。一般角色有:object_r :代表的是文件或目录等文件资源;system_r :代表的是进程。
类型( type ):在默认的 targeted 策略中, Identify 与 role 字段基本上是不重要的,重要的在于这 个类型字段。而类型字段在文件与进程的定义不太相同,分别是:type :在文件资源上面称为类型。domain :在主体程序中则称为域。domain 需要与 type 搭配,则该程序才能够顺利读取文件资源。
最后一个字段是和 MLS 和 MCS 相关的东西,代表灵敏度,一般用 s0 、 s1 、 s2 来命名,数字代表灵敏度的分级。数值越大、灵敏度越高。
( 1 )首先,触发具有 httpd_exec_t 这个类型的 /usr/sbin/httpd 这个可执行文件;( 2 )该文件的类型会让这个文件所造成的主体进程具有 httpd 这个域,我们的策略已经针对这个域制定了许多规则,其中包括这个域可以读取的目标资源类型;( 3 )由于 httpd domain 被设置为可读取 httpd_sys_content_t 这个类型的目标文件,因此 httpd 进程就能够读取在/var/www/html/ 目录下面的文件了;( 4 )最终能否读到 /var/www/html/ 目录下面的数据,还要看 rwx 是否符合 linux 权限的规范。
selinux的启动、关闭与查看
SELinux三种模式
enforcing :强制模式,代表 SELinux 正在运行中,开始限制 domain/type 。permissive :宽容模式,代表 SELinux 正在运行中,不过仅会有警告信息并不会实际限制domain/type 的访问。disabled :关闭, SELinux 并没有实际运行。
防火墙
防火墙:防火墙是位于内部网和外部网之间的屏障,它按照系统管理员预先定义好的规则来控制数据包 的进出。
防火墙又可以分为硬件防火墙与软件防火墙。硬件防火墙是由厂商设计好的主机硬件,这台硬件防火墙 的操作系统主要以提供数据包数据的过滤机制为主,并将其他不必要的功能拿掉。软件防火墙就是保护 系统网络安全的一套软件(或称为机制),例如Netfilter 与 TCP Wrappers 都可以称为软件防火墙。
主要介绍 linux 系统本身提供的软件防火墙的功能,那就是 Netfilter ,即数据包过滤机制。数据包过滤,也就是分析进入主机的网络数据包,将数据包的头部数据提取出来进行分析,以决定该连 接为放行或抵挡的机制。由于这种方式可以直接分析数据包头部数据,包括硬件地址,软件地址, TCP、UDP 、 ICMP 等数据包的信息都可以进行过滤分析,因此用途非常广泛(主要分析 OSI 七层协议的 2、 3 、 4 层)。
由此可知,linux的Netfilter机制可以进行的分析工作有:
拒绝让 Internet 的数据包进入主机的某些端口;拒绝让某些来源 ip 的数据包进入;拒绝让带有某些特殊标志( flag )的数据包进入,最常拒绝的就是带有 SYN 的主动连接的标志了;分析硬件地址( MAC )来决定连接与否。
防火墙并不能有效阻挡病毒或木马程序。(假设主机开放了 www 服务,防火墙的设置是一定要将 www服务的 port 开放给 client 端的。假设 www 服务器软件有漏洞,或者请求 www 服务的数据包本 身就是病毒的一部分时,防火墙是阻止不了的)防火墙对于内部 LAN 的攻击无能为力(防火墙对于内部的规则设置通常比较少,所以就很容易造成 内部员工对于网络无用或滥用的情况)
iptables
在进行路由选择前处理数据包,用于目标地址转换( PREROUTING );处理流入的数据包( INPUT );处理流出的数据包( OUTPUT );处理转发的数据包( FORWARD );在进行路由选择后处理数据包,用于源地址转换( POSTROUTING )。
语法格式: 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 的末尾插入指定的规则,也就是说,这条规则会被放到最后,最后才会被执行。规则是由后面的匹配来指定-I--insert chain [rulenum] rule-specification :在链 chain 中的指定位置插入一条或多条规则。如果指定的规则号是 1 ,则在链的头部插入。这也是默认的情况,如果没有指定规则号-D--delete chain rule-specification -D, --delete chain rulenum :在指定的链 chain 中删除一个或多个指定规则-RnumReplays 替换 / 修改第几条规则-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显示帮助信息
firewalld
block.xml drop.xml home.xml public.xml work.xml dmz.xml external.xmlinternal.xml trusted.xml
[root@localhost ~] # rpm -qa | grep firewallfirewall-config-0.3.9-14.el7.noarchfirewalld-0.3.9-14.el7.noarch
firewall-cmd命令的参数说明如下:
相关文章:

selinux与防火墙
selinux 什么是selinux SELinux 是 Security-Enhanced Linux 的缩写,意思是安全强化的 linux 。 SELinux 主要由美国国家安全局( NSA )开发,当初开发的目的是为了避免资源的误用。 系统资源都是通过程序进行访问的࿰…...

java基础概念47-ArrayList、LinkList和迭代器
一、ArrayList集合 1-1、ArrayList的两种添加信息的方式 1-2、ArrayList集合底层逻辑 1、利用空参创建的集合,在底层创建一个默认长度为0的数组 2、添加第一个元素时,底层会创建一个新的长度为10的数组 3、存满时,会扩容1.5倍。 4、如果…...

Delphi 12.2.1 idhttpserver的使用方法
Delphi 12.2.1 idhttpserver的使用方法 1)CommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);事件 该事件和IDTCPSERVER的EXECUTE()事件一样,都是“线程方法”,即事件是在子线程里…...

【golang】单元测试,以及出现undefined时的解决方案
单元测试 要对某一方法进行测试时,例如如下这一简单减法函数,选中函数名后右键->转到->测试 1)Empty test file 就是一个空文件,我们可以自己写测试的逻辑 但是直接点绿色箭头运行会出问题: 找不到包。我们要在…...

jmeter 压测常用静默参数解释应用
简介: JMeter静默压测(即无界面压测)是一种常用的性能测试方法,用于模拟多个用户同时访问系统并测量系统的响应时间和吞吐量等关键性能指标。在JMeter静默压测中,常用的压测参数及其解释如下: 一、基本…...

【开源】A059-基于SpringBoot的社区养老服务系统的设计与实现
🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看项目链接获取⬇️,记得注明来意哦~🌹 赠送计算机毕业设计600个选题ex…...

《智能体雏形开发(高阶实操)》开发计划概述
智能体雏形开发计划 通过本计划,逐步完成一个可以真实运行的智能体雏形。 最终完成一个**“用户日志文件生成日报,日报再进一步汇总成周报”**的任务驱动型智能体雏形 第一阶段:基础准备与环境搭建 1. 学习基础知识 了解智能体的概念、类型和技术框架。学习大模型(如阿里…...

QT学习笔记-QStringList,QTimer
QStringList-存储和管理一系列的字符串 在Qt框架中,QStringList 是一个模板类 QList<QString> 的特化,专门用于处理 QString 对象(即Qt中的字符串)的列表。当你看到这样的声明: QStringList m_rec_topicList; …...

如何使用brew安装phpredis扩展?
如何使用brew安装phpredis扩展? phpredis扩展是一个用于PHP语言的Redis客户端扩展,它提供了一组PHP函数,用于与Redis服务器进行交互。 1、cd到php某一版本的bin下 /usr/local/opt/php8.1/bin 2、下载 phpredis git clone https://githu…...

游戏引擎学习第25天
Git: https://gitee.com/mrxiao_com/2d_game 今天的计划 总结和复述: 这段时间的工作已经接近尾声,虽然每次编程的时间只有一个小时,但每一天的进展都带来不少收获。尽管看起来似乎花费了很多时间,实际上这些日积月累的时间并未…...

多线程运行时,JVM(Java虚拟机)的内存模型
在多线程运行时,JVM(Java虚拟机)的内存模型主要涉及以下几个方面: 1. 主内存和工作内存 JVM内存模型定义了主内存和工作内存的概念。主内存是所有线程共享的内存区域,而工作内存是每个线程私有的内存区域。线程对变量…...

kernel crash数据解析
crash数据解析 crash解析工具下载和编译方法如下: git clone https://github.com/crash-utility/crash.git cd crash; make targetARM64 crash工具解析ramdump文件: 1. 将dump 出来的ramdump 文件拷贝到 Linux 系统 2. 找到当前Linux 内核对应的vm…...

CLIP模型也能处理点云信息
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...

利用若依代码生成器实现课程管理模块开发
目录 前言1. 环境准备1.1 数据库表设计与导入 2. 使用若依代码生成器生成模块代码2.1 导入数据库表2.2 配置生成规则2.2.1 基本信息配置2.2.2 字段信息配置2.2.3 生成信息配置 3. 下载与集成生成代码3.1 解压与集成3.2 启动项目并验证 4. 优化与扩展4.1 前端优化4.2 后端扩展 结…...

用Python做数据分析环境搭建及工具使用(Jupyter)
目录 一、Anaconda下载、安装 二、Jupyter 打开 三、Jupyter 常用快捷键 3.1 创建控制台 3.2 命令行模式下的快捷键 3.3 运行模式下快捷键 3.4 代码模式和笔记模式 3.5 编写Python代码 一、Anaconda下载、安装 【最新最全】Anaconda安装python环境_anaconda配置python…...

SpringBoot实战(三十二)集成 ofdrw,实现 PDF 和 OFD 的转换、SM2 签署OFD
目录 一、OFD 简介1.1 什么是 OFD?1.2 什么是 版式文档?1.3 为什么要用 OFD 而不是PDF? 二、ofdrw 简介2.1 定义2.2 Maven 依赖2.3 ofdrw 的 13 个模块 三、PDF/文本/图片 转 OFD(ofdrw-conterver)3.1 介绍:…...

linux环境人大金仓数据库修改密码
1.进入人大金仓安装目录 cd /home/opt/Kingbase/ES/V9/Server/bin2.连接数据库 ./ksql -U system -d mydb -h 127.0.0.1 -p 54321-u 用户名 -d 数据库名 -h ip地址 -p 端口号 3.修改密码 ALTER USER system WITH PASSWORD 密码;...

使用ESP32通过Arduino IDE点亮1.8寸TFT显示屏
开发板选择 本次使用开发板模块丝印为ESP32-WROOM-32E 开发板库选择 Arduino IDE上型号选择为ESP32-WROOM-DA Module 显示屏选择 使用显示屏为8针SPI接口显示屏 驱动IC为ST7735S 使用库 使用三个Arduino平台库 分别是 Adafruit_GFXAdafruit_ST7735SPI 代码详解 首…...

Spring Cloud Alibaba(六)
目录: 分布式链路追踪-SkyWalking为什么需要链路追踪什么是SkyWalkingSkyWalking核心概念什么是探针Java AgentJava探针日志监控实现之环境搭建Java探针日志监控实现之探针实现编写探针类TestAgent搭建 ElasticsearchSkyWalking服务环境搭建搭建微服务微服务接入Sky…...

【包教包会】CocosCreator3.x——重写Sprite,圆角、3D翻转、纹理循环、可合批调色板、不影响子节点的位移旋转缩放透明度
一、效果演示 重写Sprite组件,做了以下优化: 1、新增自变换,在不影响子节点的前提下位移、旋转、缩放、改变透明度 新增可合批调色板,支持色相、明暗调节 新增圆角矩形、3D透视旋转、纹理循环 所有功能均支持合批、原生平台&…...

jupyter-lab 环境构建
我平时用来调试各种代码的。 创建环境,安装库 conda create --name jupyterlab python3.12 -y conda activate jupyterlab conda install -c conda-forge jupyterlab nodejs之前用的是3.10的,但是最近安装的时候,发现3.10的python里面的jup…...

【C++】LeetCode:LCR 026. 重排链表
题干 LCR 026. 重排链表 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln-1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → Ln-1 → L2 → Ln-2 → … 不能只是单纯的改变节点内部的值,而是需要实…...

【Linux】vim编辑器
vim是什么? vim就是命令行模式下的文本编辑器,相当于windows中的记事本,可以用来进行文本编辑。 vim有三种运行模式,分别可以执行不同的操作: 普通模式(Normal Mode):用于浏览和编辑…...

delphi 12 idhttpsever(S)+idhttp(C) 实现简单的JSON API服务
这篇博客展示了如何使用Delphi创建一个简单的HTTP服务器,并处理GET和POST请求。服务器监听6600端口,响应JSON格式的数据。客户端通过IdHttp组件进行GET和POST请求,获取并显示服务器响应的内容。 http服务器测试代码 procedure TForm1.FormSh…...

JVM 主副内存 详解
在 JVM (Java Virtual Machine) 中,内存的设计主要分为主内存和工作内存(又称为线程内存)。这种设计是基于 Java 内存模型(Java Memory Model, JMM) 的规定,它确保了多线程环境下数据的一致性和线程间的通信…...

sscanf与sprintf函数
本期介绍🍖 主要介绍:sscanf()、sprintf()这对输入/输出函数,并详细讲解了这两个函数的应用场景。 概述🍖 在C语言的输出和输入库中,有三对及其相似的库函数:printf()、scanf()、fprintf()、fscanf()、spri…...

【k8s】创建基于sa的token的kubeconfig
需求 创建一个基于sa的token的kubeconfig文件,并用这个文件来访问集群。 具体创建sa 和sa的token请参考文章: 【k8s】给ServiceAccount 创建关联的 Secrets-CSDN博客 创建sa apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata:namespace: jtkjdevnam…...

Gentoo Linux部署LNMP
一、安装nginx 1.gentoo-chxf ~ # emerge -av nginx 提示配置文件需更新 2.gentoo-chxf ~ # etc-update 3.gentoo-chxf ~ # emerge -av nginx 4.查看并启动nginx gentoo-chxf ~ # systemctl status nginx gentoo-chxf ~ # systemctl start nginx gentoo-chxf ~ # syst…...

2411C++,CXImage简单使用
介绍 CxImage是一个可非常简单快速的加载,保存,显示和转换图像的C类. 文件格式和链接的C库 Cximage对象基本上是加了一些成员变量来保存有用信息的一个位图: class CxImage{...protected:void* pDib; //包含标题,调色板,像素BITMAPINFOHEADER head; //标准头文件CXIMAGEINFO…...

什么是 Kubernetes(K8s)?
什么是 Kubernetes(K8s)? Kubernetes(简称 K8s) 是一个用来管理容器的开源工具,它可以自动化部署、扩展和管理容器化应用。简单来说,K8s 就是一个“容器管家”,负责确保你的应用程序…...