您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > linux百科

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

时间:2024-03-27 15:53:32  来源:微信公众号  作者:凡夫编程
linux 是一种开源的类Unix操作系统内核,由Linus Torvalds在1991年首次发布,其后又衍生出许多不同的发行版(如Ubuntu、Debian、centos等)。

前言

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

Linux

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

用户和权限管理

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


Tags:Linux安全   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
从原理到实践:深入探索Linux安全机制
Linux 是一种开源的类Unix操作系统内核,由Linus Torvalds在1991年首次发布,其后又衍生出许多不同的发行版(如Ubuntu、Debian、CentOS等)。前言本文将从用户和权限管理、文件系统...【详细内容】
2024-03-27  Search: Linux安全  点击:(13)  评论:(0)  加入收藏
Linux安全扫描工具ClamAV安装及使用
导语Clam AntiVirus(ClamAV)是免费而且开放源代码的防毒软件,软件与病毒码的更新皆由社群免费发布。ClamAV在命令行下运行,它不将杀毒作为主要功能,默认只能查出系统内的病毒,但是...【详细内容】
2023-05-11  Search: Linux安全  点击:(433)  评论:(0)  加入收藏
linux安全删除文件方法
概述在日常的工作中,我们有时需要安全地删除文件,特别对一些敏感文件或者是隐私文件,我们希望删除之后不能够被恢复,也就是彻底的被删除。下面分享一下Linux操作系统,安全删除文...【详细内容】
2023-04-10  Search: Linux安全  点击:(207)  评论:(0)  加入收藏
Linux安全之SELinux理解
安全增强式 Linux,即SELINUX(Security-Enhanced Linux)是一个 Linux 内核的安全模块,其提供了访问控制安全策略机制,包括了强制访问控制(Mandatory Access Control,MAC)。SELinu...【详细内容】
2022-09-30  Search: Linux安全  点击:(400)  评论:(0)  加入收藏
小白黑客是如何进行Linux安全加固的?
Linux安全加固. 防口令破解 限制口令长度和复杂度要求:修改口令策略,要满足复杂性和长度在8位数以上要求,口令里面宝行大写字母、小写字母、数字、特殊字符,每种字符至少一个方...【详细内容】
2021-06-21  Search: Linux安全  点击:(525)  评论:(0)  加入收藏
Linux安全技巧汇总,防止扫描,禁止空密码,强制用V2等
最近发现攻击官网和论坛量和人数又增加了,不得不再多做做安防。本文一颗优雅草科技央千澈所写,转载麻烦注明,非常感谢,依然本文和优雅草科技观点毫无关系,仅代表个人观点。 这...【详细内容】
2020-08-31  Search: Linux安全  点击:(499)  评论:(0)  加入收藏
LINUX安全加固规范
1概述近几年来Internet变得更加不安全了。网络的通信量日益加大,越来越多的重要交易正在通过网络完成,与此同时数据被损坏、截取和修改的风险也在增加。只要有值得偷窃的东西...【详细内容】
2020-08-03  Search: Linux安全  点击:(438)  评论:(0)  加入收藏
修改apache网站默认路径和SElinux安全上下文,实现站点重新访问
请先掌握上面默认网站浏览访问及页面文件的修改方法,然后进行修改网页数据的主目录,实现自定义网站数据主目录的操作。1、网站数据主目录修改把默认网站主目录/var/www/html改...【详细内容】
2019-12-13  Search: Linux安全  点击:(449)  评论:(0)  加入收藏
▌简易百科推荐
微软 Win11 Linux 子系统(WSL)发布 2.2.2 版本
IT之家 4 月 8 日消息,微软近日更新 Windows Subsystem for Linux(WSL),最新 2.2.2 版本中带来了诸多改进,重点更新了 nft 规则,可以让 IPv6 流量通过 Linux 容器。图源: dev.to,AI...【详细内容】
2024-04-08    IT之家  Tags:Linux   点击:(2)  评论:(0)  加入收藏
从原理到实践:深入探索Linux安全机制
Linux 是一种开源的类Unix操作系统内核,由Linus Torvalds在1991年首次发布,其后又衍生出许多不同的发行版(如Ubuntu、Debian、CentOS等)。前言本文将从用户和权限管理、文件系统...【详细内容】
2024-03-27  凡夫编程  微信公众号  Tags:Linux安全   点击:(13)  评论:(0)  加入收藏
在Linux系统中,如何处理内存管理和优化的问题?
本文对 Linux 内存管理和优化的一些高级技巧的详细介绍,通过高级的内存管理技巧,可以帮助系统管理员和开发人员更好地优化 Linux 系统的内存使用情况,提高系统性能和稳定性。在...【详细内容】
2024-03-26  编程技术汇  微信公众号  Tags:Linux   点击:(6)  评论:(0)  加入收藏
Linux 6.9-rc1 内核发布:AMD P-State 首选核心、BH 工作队列
IT之家 3 月 25 日消息,Linus Torvalds 宣布,Linux 6.9 内核的首个 RC(候选发布)版 Linux 6.9-rc1 发布。▲ Linux 6.9-rc1Linus 表示,Linux 内核 6.9 看起来是一个“相当正常”...【详细内容】
2024-03-25    IT之家  Tags:Linux   点击:(9)  评论:(0)  加入收藏
轻松实现Centos系统的软件包安装管理:yum指令实战详解
yum 是一种用于在 CentOS、Red Hat Enterprise Linux (RHEL) 等基于 RPM 的 Linux 发行版上安装、更新和管理软件包的命令行工具。它可以自动解决软件包依赖关系,自动下载并...【详细内容】
2024-02-27  凡夫贬夫  微信公众号  Tags:Centos   点击:(51)  评论:(0)  加入收藏
Win + Ubuntu 缝合怪:第三方开发者推出“Wubuntu”Linux 发行版
IT之家 2 月 26 日消息,一位第三方开发者推出了一款名为“Wubuntu”的缝合怪 Linux 发行版,系统本身基于 Ubuntu,但界面为微软 Windows 11 风格,甚至存在微软 Windows 徽标。据...【详细内容】
2024-02-27    IT之家  Tags:Ubuntu   点击:(47)  评论:(0)  加入收藏
Linux中磁盘和文件系统工作原理解析
在Linux系统中,一切皆文件的概念意味着所有的资源,包括普通文件、目录以及设备文件等,都以文件的形式存在。这种统一的文件系统管理方式使得Linux系统具有高度的灵活性和可扩展...【详细内容】
2024-02-20  王建立    Tags:Linux   点击:(49)  评论:(0)  加入收藏
Linux子系统概览
inux操作系统是一个模块化的系统,由多个子系统组成。这些子系统协同工作,使Linux能够执行各种任务。了解Linux的子系统有助于更好地理解整个操作系统的运作机制。以下是Linux...【详细内容】
2024-02-01    简易百科  Tags:Linux   点击:(74)  评论:(0)  加入收藏
Linux内核:系统之魂与交互之源
内核,作为任何基于Linux的操作系统的心脏,扮演着至关重要的角色。它不仅是计算机系统软件与硬件之间的桥梁,更是确保系统稳定、高效运行的关键。内核提供了一系列核心功能,为上...【详细内容】
2024-02-01  松鼠宝贝    Tags:Linux内核   点击:(65)  评论:(0)  加入收藏
如何确保Linux进程稳定与持久
在Linux系统中,进程的稳定性与持久性对于维持系统的持续运行至关重要。然而,由于各种原因,进程可能会面临崩溃或系统重启的情况。为了确保关键进程能够持续运行,我们必须采取一...【详细内容】
2024-01-19  松鼠宝贝    Tags:Linux进程   点击:(84)  评论:(0)  加入收藏
站内最新
站内热门
站内头条