从原理到实践:深入探索Linux安全机制(一)

news2024/9/22 1:53:00

前言

本文将从用户和权限管理、文件系统权限、SELinux、防火墙、加密和安全传输、漏洞管理和更新等几个Linux安全机制中的重要方面,深入探索其工作原理和使用方法。在当今数字化时代,网络安全问题备受关注,Linux作为广泛应用的操作系统之一,其安全性至关重要。无论你是Linux系统的初学者还是资深管理员,本文都将为你提供宝贵的经验和启发,帮助你在保护网络安全的道路上行稳致远。

Linux

Linux 是一种开源的类Unix操作系统内核,由Linus Torvalds在1991年首次发布,其后又衍生出许多不同的发行版(如Ubuntu、Debian、CentOS等)。Linux操作系统则是由Linux内核与各种应用程序、工具和库组成的完整操作系统,在其众多的特性中,Linux以其稳定性和安全性而闻名,这首先得益于开源社区的广泛参与和持续改进,其次就是Linux优秀的安全机制,这些保证了其能够提供一个高度稳定和安全的运行环境,事实上在服务器领域、嵌入式系统、超级计算机等多个领域也得到了广泛应用,并拥有庞大的用户群体和开发者社区。

下面将通过两篇文章来,从用户和权限管理、文件系统权限、SELinux、防火墙、加密和安全传输、漏洞管理和更新等几个Linux安全机制中的重要方面,和大家分享一下其工作原理和使用方法:

《从原理到实践:深入探索Linux安全机制(一)-CSDN博客》

《从原理到实践:深入探索Linux安全机制(二)-CSDN博客》

用户和权限管理

Linux系统使用用户和组的概念来管理文件和系统资源的访问权限。其主要原理也很简单,可以从下面几个方面来理解:

  • 用户:

在 Linux 系统中,每个用户都有一个唯一的用户名和用户 ID(User ID),用于标识用户身份。用户可以属于一个或多个用户组,每个用户组也有一个唯一的组名和组 ID。

  • 权限

每个文件和目录都有属主(Owner)、所属组(Group)和其他用户(Others)的权限设置。权限通常包括读(r)、写(w)和执行(x)权限。这些权限分别表示对文件的读取、写入和执行操作的权限。另外,每个权限位也可以用一个数字来表示,分别对应读(4)、写(2)和执行(1)权限。

  • 权限位:

Linux 中使用权限位来表示文件或目录的权限。每个文件或目录有 9 个权限位,分为 3 个部分:属主权限、所属组权限和其他用户权限。每个部分包括读(r)、写(w)和执行(x)权限。

  • 权限控制:

当用户访问文件或目录时,系统会根据用户的身份(用户 ID)、文件的权限位和用户所属的组来确定是否允许特定操作。只有拥有相应权限的用户或组成员才能对文件进行读取、写入或执行操作。

  • 特殊权限:

除了基本的读写执行权限外,还有一些特殊权限,如 SetUID、SetGID 和粘着位(Sticky Bit)。这些特殊权限可以影响文件或目录的执行方式,例如在执行文件时临时提升用户权限或确保只有文件所有者才能删除文件。

文件系统权限

从我个人的理解来看,文件系统权限应该属于Linux用户和权限管理的一部分,但我更愿意把它单独拿出来理解,因为理解的角度不一样,侧重重点也不同。

在用户和权限管理中,更多侧重于用户和权限。在这里更多侧重于文件和权限。虽然角度不同,但是描述的是同一件事,这是确定的。

Linux 文件系统权限的工作原理主要涉及文件的所有者、所属组和其他用户对文件的访问控制,其基本工作原理也比较简单:

  • 文件属性:

每个文件和目录在 Linux 系统中都有一个唯一的所有者(Owner)和所属组(Group)。此外,还有其他用户(Others)对该文件的访问权限。这些属性由文件系统存储,并且与文件的元数据一起保存。

  • 权限位:

每个文件和目录都有 9 个权限位,分为 3 个部分:属主权限、所属组权限和其他用户权限。每个部分包括读(r)、写(w)和执行(x)权限。这些权限位决定了不同用户对文件的操作权限。另外,每个权限位也可以用一个数字来表示,分别对应读(4)、写(2)和执行(1)权限。

  • 访问控制:

当用户尝试访问某个文件时,系统会根据用户的身份(用户 ID)、文件的权限位和用户所属的组来判断是否允许特定操作。如果用户是文件的属主或具有适当的权限,系统将允许他们进行读取、写入或执行操作。

  • 特殊权限:

除了基本的读写执行权限外,还有一些特殊权限,如 SetUID、SetGID 和粘着位(Sticky Bit)。这些特殊权限可以影响文件或目录的执行方式,例如在执行文件时临时提升用户权限或确保只有文件所有者才能删除文件。

关于用户和权限管理有两个命令是必须得掌握的,这两个命令就是chmod和chown。

1、在 CentOS 7 中,chmod 命令用于修改文件或目录的权限。

使用方式:

chmod [选项] 权限模式 文件/目录

常用选项:

  • -R:递归地修改文件夹及其子文件夹的权限。
  • -v:显示每个修改后的文件/目录的权限。

权限模式:

可以使用数字或符号来指定权限模式。

  • 数字模式:数字模式使用三位数,每一位表示一个权限组(所有者、所属组、其他用户),其中每一位的值为 4(读权限)、2(写权限)和 1(执行权限)的组合。例如,755 表示所有者具有读、写和执行权限,所属组和其他用户具有读和执行权限。
  • 符号模式:符号模式使用类似于 u+rwx、g+rw、o-x 的格式来指定权限。u 代表所有者,g 代表所属组,o 代表其他用户,+ 表示添加权限,- 表示移除权限,r 表示读权限,w 表示写权限,x 表示执行权限。例如,chmod u+rwx file.txt 表示给文件 file.txt 的所有者添加读、写和执行权限。

示例:

将文件 file.txt 的所有者和所属组的权限设置为读写,其他用户无权限:

chmod 660 file.txt

将文件夹 dir 及其子文件夹的所有者、所属组和其他用户的权限设置为读写执行:

chmod -R 777 dir

给文件 script.sh 的所有用户添加执行权限:

chmod a+x script.sh

给文件 file.txt 的所有者和所属组添加读权限,其他用户移除所有权限:

chmod u+r,g+r,o-rwx file.txt

2、在 CentOS 7 中,chown 命令用于修改文件或目录的所有者。

使用方式:

chown [选项] 新所有者 文件/目录

常用选项:

  • -R:递归地修改文件夹及其子文件夹的所有者。
  • -v:显示每个修改后的文件/目录的所有者。

示例:

  • 将文件 file.txt 的所有者修改为 fanfu:
chown fanfu file.txt
  • 将目录 dir 及其子目录的所有者修改为 fanfu,同时显示修改过程:
chown -Rv fanfu dir
  • 将文件 file.txt 的所有者和所属组修改为 fanfu 和 yzxa:
chown fanfu:yzxa file.txt

chmod 和 chown 是两个在 CentOS(以及其他 Linux 发行版)中常用的命令,用于修改文件或目录的权限和所有者,功能上很相近,但是还是有区别的:

chmod 命令:

  • 作用:chmod 命令用于修改文件或目录的权限。
  • 使用方式:chmod 命令后面跟着权限模式和要修改权限的文件或目录路径。
  • 权限模式:可以使用数字(例如 755)或符号(例如 u+rwx)来指定权限模式。
  • 数字模式:数字模式使用三位数,每一位表示一个权限组(所有者、所属组、其他用户),其中每一位的值为 4(读权限)、2(写权限)和 1(执行权限)的组合。例如,755 表示所有者具有读、写和执行权限,所属组和其他用户具有读和执行权限。
  • 符号模式:符号模式使用类似于 u+rwx、g+rw、o-x 的格式来指定权限。u 代表所有者,g 代表所属组,o 代表其他用户,+ 表示添加权限,- 表示移除权限,r 表示读权限,w 表示写权限,x 表示执行权限。

chown 命令:

  • 作用:chown 命令用于修改文件或目录的所有者。
  • 使用方式:chown 命令后面跟着新的所有者和要修改所有者的文件或目录路径。
  • 所有者:可以使用用户名或用户 ID(UID)来指定新的所有者。

总的来看,chmod 用于修改文件或目录的权限,而 chown 用于修改文件或目录的所有者。它们是不同的命令,用途和参数也不同。在实际应用中,我们可以根据需要选择使用 chmod 或 chown 来对文件或目录进行相应的权限和所有者的修改操作。

SELinux

SELinux(Security-Enhanced Linux)和 AppArmor 都是用于强化 Linux 系统安全性的安全模块,它们提供了额外的安全层来限制程序和进程的权限,以减少系统受到恶意攻击的风险。

它是由美国国家安全局(NSA)开发的安全模块,旨在提供强大的访问控制机制,通过强制访问控制(MAC)实现对系统资源的细粒度控制。SELinux基于安全策略规则,可以限制程序、进程和用户对文件、网络资源以及其他系统资源的访问权限,从而减少潜在的安全漏洞。SELinux的灵活性很高,但配置和管理相对复杂,想要熟练掌握有一定难度。然而这并妨碍你来了解它,如果在使用Linux系统中,遇到一些棘手的问题,这个地方也是一个排查方向。

这里可以先从以下几个方面来理解一下SELinux的工作原理:

  • 安全策略:

SELinux 使用安全策略来定义系统资源和对象之间的访问规则。这些安全策略由 SELinux 策略库(Policy)管理,其中包括了对文件、进程、网络端口等各种资源的访问规则定义,以及用户角色和安全上下文等信息。

  • 安全上下文:

在 SELinux 中,每个对象(如文件、进程)都有一个安全上下文,用于描述该对象的安全属性。安全上下文由标签表示,包括了对象的类型(Type)、角色(Role)和用户(User)等信息。这些安全上下文决定了对象可以执行的操作和被允许的访问权限。

  • 强制访问控制:

SELinux 引入了强制访问控制(MAC),通过强制执行安全策略来限制系统资源的访问。即使用户具有足够的权限(如 root),也无法绕过 SELinux 对资源的访问控制。这种强制控制确保了系统的安全性,减少了恶意软件和攻击的影响范围。

  • 安全上下文转换:

当进程或程序尝试访问某个资源时,SELinux 会根据安全上下文进行访问权限的检查。如果需要访问的资源与进程的安全上下文不匹配,SELinux 可能会进行安全上下文的转换,以确保访问的合法性。

  • 日志和审计:

SELinux 提供了完善的日志和审计功能,可以记录系统中发生的安全事件和违反安全策略的行为。这些日志信息对于系统管理员来说是非常有价值的,可以帮助其监控系统的安全状况,并及时采取措施应对潜在的安全威胁。

以我个人经验来看,在日常工作来说,SELinux的安全策略管理是一个非常重要的地方,之前在搭建vsftp服务的时候,遇到的问题就是vsftp的配置正常,但是无法实现匿名用户的访问、文件上传,经过排查发现原因是SELinux的安全策略中,允许匿名用户写入的权限是关闭的,后来把这个权限打开,问题迎刃而解。因此,我觉得,如果能够掌握SELinux安全策略的基本管理,还是比较实用的。这里就给大家分享一下SELinux安全策略管理常用工具和命令的用法:

1、sestatus

sestatus命令可以查看当前 SELinux 的状态和基本信息,包括是否启用、当前模式等。

sestatus

sestatus输出信息的解读:

  • ELinux status: enabled

SELinux 状态为启用,这表示 SELinux 安全模块已经启用并正在系统中运行。

  • SELinuxfs mount: /sys/fs/selinux

SELinux 文件系统挂载点的路径为 /sys/fs/selinux,这是 SELinux 内核文件系统所在的路径。

  • SELinux root directory: /etc/selinux

SELinux 根目录的路径为 /etc/selinux,这是 SELinux 配置文件等相关文件存放的位置。

  • Loaded policy name: targeted

加载的策略名称为 targeted,这表示系统当前使用的是针对特定应用的 SELinux 策略。

  • Current mode: enforcing

当前 SELinux 模式为强制执行(enforcing),这意味着 SELinux 将强制执行安全策略,对违反规则的操作进行限制。

  • Mode from config file: enforcing

从配置文件中设置的 SELinux 模式也是强制执行(enforcing),这说明系统会在重启后继续以强制执行模式运行。

  • Policy MLS status: enabled

策略 MLS 状态为启用,这表示多级安全策略(MLS)功能在 SELinux 中是启用的。

  • Policy deny_unknown status: allowed

deny_unknown 策略状态为允许(allowed),这表示 SELinux 允许对未知进程进行访问控制。

  • Max kernel policy version: 31

最大内核策略版本号为 31,这是指内核支持的 SELinux 策略的最大版本号。

2、getenforce

getenforce命令可以查看 SELinux 的强制模式(Enforcing)、警告模式(Permissive)或禁用模式(Disabled)。

3、semanage

semanage命令可以查询和管理 SELinux 策略中的各种对象,如端口、用户、登录名等。比如查询ftp服务相关的布尔值是否处于打开状态,这里多解释一下,在 SELinux 安全策略中,布尔值(Boolean)是一种用于控制特定安全策略行为的开关变量。通过设置这些布尔值,可以启用或禁用特定的安全策略规则,从而调整系统的访问控制行为。

semanage boolean -l | grep ftp

如果semanage指令执行错误,可以是未安装SELinux管理工具包,执行下面的指令进行相关工具包安装,安装后再次执行上述命令:

sudo yum install policycoreutils

4、setsebool

setsebool 用于设置或修改 SELinux 的布尔值(Boolean)。布尔值通常以 on 或 off 的形式存在,用于表示某个特定的安全功能或行为是否启用。通过 setsebool,你可以启用或禁用特定的 SELinux 布尔值,从而调整系统的访问控制行为。

比如,允许vsftpd服务匿名用户写入

setsebool -P ftpd_anon_write on

其中,-P 参数表示永久性地修改该布尔值,而不仅仅是临时性地修改。

5、getsebool

用于查看 SELinux 布尔值的状态。比如,查询允许vsftpd服务匿名用户写入的布尔值:

getsebool ftpd_anon_write

写在最后

非常感谢你能耐心看完我的这篇文章,希望我的分享对你有所帮助。当然,如果你觉得这篇文章对你有所帮助,不妨点击点赞按钮,让更多的人看到这篇优质的技术分享。同时,别忘了将这篇文章收藏起来,也方便日后再次查阅。

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

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

相关文章

【GPT概念04】仅解码器(only decode)模型的解码策略

一、说明 在我之前的博客中,我们研究了关于生成式预训练转换器的整个概述,以及一篇关于生成式预训练转换器(GPT)的博客——预训练、微调和不同的用例应用。现在让我们看看所有仅解码器模型的解码策略是什么。 二、解码策略 在之前…

财报解读:“高端化”告一段落,华住开始“全球化”?

2023年旅游业快速复苏,全球酒店业直接受益,总体运营指标大放异彩,多数酒店企业都实现了营收上的明显增长,身为国内龙头的华住也不例外。 3月20日晚,华住集团发布2023年四季度及全年财报。整体实现扭亏为盈,…

阿里云安装宝塔后面板打不开

前言 按理来说装个宝塔面板应该很轻松的,我却装了2天,真挺恼火的,网上搜的教程基本上解决不掉我的问题点,问了阿里云和宝塔客服,弄了将近2天,才找出问题出在哪里,在此记录一下问题的处理。 服…

深度探析:7天后不过期的微信群二维码生成的优势

在日常生活和工作中,微信不过期二维码深受用户的欢迎。因为传统的微信群二维码被下载下来后,只有7天有效期。但企业在日常运营中,如果直接使用下载下来的微信群二维码,会造成很多的不便和宣传资源浪费。这些问题,可以通…

华为ensp中ospf基础 原理及配置命令(详解)

CSDN 成就一亿技术人! 作者主页:点击! ENSP专栏:点击! CSDN 成就一亿技术人! ————前言———— OSPF 的全称是 Open Shortest Path First,意为“开放式最短路径优先”。是一种内部网关协…

MySQL之基本操作与用户授权

一 基本操作 1 SQL分类 数据库:database 表:table,行:row 列:column 索引:index 视图:view 存储过程:procedure 存储函数:function 触发器:trigger 事…

“Python神技:一键转换PPT页面为高清图片,源码大公开!”(附Python源码)

今天让claude3帮忙写了个python代码,实现了将ppt转换成图片功能。WPS中实现这个功能还需要开通会员, 其实也就一点代码就可以实现,而且powerpoint中还没有这个将页面转换成图片的功能,废话不多说,直接上源码。 import …

欧科云链:从技术与数据视角,看Solana如何成为Web3“流量担当”?

出品|欧科云链研究院 作者|Jason Jiang 坎昆升级完成后,除一众L2手续费锐减外,以太坊生态并未掀起涟漪,相反Solana凭借一波短暂的Meme热潮,再次成为焦点。尽管本周Solana生态的Meme热度褪去,但…

最新,955神仙公司名单(非外企)

955 神仙公司名单(非外企) 往常爆料最多的 955 神仙公司名单通常都是集中在一线城市的外企。 例如下面这张最为流行的名单图: 最近牛客网上有同学整理出了非外企的版本,其中不乏一些耳熟能详的互联网产品。 随手把名单分享给大家。…

SDKMAN多版本SDK并行管理工具

一、简介 SDKMAN是管理多个SDK并行版本的工具,它提供了方便的命令行界面(CLI)和API,用于列出,安装,切换和删除候选对象。此外,它还为我们设置了环境变量。 它还允许开发人员安装基于JVM的SDK&…

短剧分销cps推广很简单,短剧分销授权平台怎么搭建?

一、短剧分销是什么? 短剧分销,也被称为短剧CPS,是一种通过推广短剧并获得收益的方式。分销方会提供短剧片单,内容创作者可以根据这些片单剪辑成短视频内容进行分发。这样既能避免版权问题,又可以利用优质内容吸引用户…

JAVA入门第一步

学习总结: 打开CMD常见的CMD命令 一、打开CMD CMD的概念 CMD是Windows操作系统中的命令提示符(Command Prompt)程序,它是一种命令行工具,可以让用户通过键入命令来与计算机进行交互。CMD是Windows中一个基本的系统组件,它提供了一…

基于springboot+vue的库存管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

SQL:窗口函数之OVER()

窗口函数 通用格式 “函数 OVER (PARTITION BY 分组 ORDER BY 排序依据 升降序)”。 这里记录下OVER() 以及搭配LEAD/LAG函数的使用方法(执行平台Impala) 目录 OVER函数1、不加条件的OVER函数——得到所有的汇总结果2、仅有排序的OVER函数——得到按顺序…

基于XENSIV电容原理的KP236N6165XTMA1、KP276D1201XTMA1、KP276D1505XTMA1压力传感器,采用BiCMOS技术

1、XENSIV™ KP236N6165 压力传感器 23.93PSIA 4.85V DSOF8 描述:KP236N6165XTMA1 是一款模拟大气压力传感器,适用于大温度范围的汽车应用。它采用表面微加工技术,内置一个采用BiCMOS技术的单片集成信号调理电路。该器件将60 kPa至165 kPa的…

题注或页码中不含章节编号。若要应用章节编号,请使用“开始”选项卡上的“多级列表”按钮,然后选择连接到标题样式的编号方案

问题: 给图片或表格插入含有章节号的题注时,提示【题注或页码中不含章节编号。若要应用章节编号,请使用“开始”选项卡上的“多级列表”按钮,然后选择连接到标题样式的编号方案】。 原因: 当前图片或表格所在的段落…

力扣Lc20--- 202.快乐数(java版)-2024年3月20日

1.题目 2.知识点 (1)while (seen.contains(n) false) { // 循环体 } 与 !seen.contains(n) 等同 (2) 当传入数字 19 给 isHappy(19) 方法时,下面是每一行代码的执行过程: 初始化一个空的 HashSet&#…

Python 日志记录库之loguru使用详解

概要 在软件开发中,良好的日志记录是至关重要的。它不仅可以帮助开发人员跟踪应用程序的运行状态和诊断问题,还可以为用户提供更好的支持和维护。而Python的Loguru库则为日志记录提供了一种简洁而强大的解决方案。本文将深入探讨Loguru库的各个方面,包括其基本概念、功能、…

Linux环境JMeter脚本性能测试、easyNmon生成监控报告

一、下载JMeter安装包 Jmeter是Java开发的,需要依赖JDK环境,因此我们需提前安装好JDK。 Jmeter是开源的工具,我们直接到官网下载即可。 最新版本下载地址:Apache JMeter - Download Apache JMeter 二、安装JMeter #新建jmete…

OneNote 中的云端字典在哪里? RoamingCustom.dic 在哪里?

早期懵懂不知,使用 OneNote 时直接将所有标红的单词添加到字典中了。后面才发现默认会添加到云端字典中。因为云端字典是存储在云端上的,所以 onenote 没有给出路径: 难道没办法获取了吗?有的! 方案如下:考…