SELinux原理
概念
SELinux(Security-Enhanced Linux),即安全增强型 Linux,作为一款旨在强化系统安全性的 Linux 安全模块,其核心在于采用强制访问控制(Mandatory Access Control,简称 MAC)机制,以此为操作系统筑牢安全防线。
我们平日里较为熟悉的是标准的用户、组、其他 rwx 权限安全模型,这种以用户和组为基础的模型,被称作自由决定的访问控制(Discretionary Access Control,简称 DAC)。在 DAC 模式下,资源的所有者拥有绝对的决定权,能够自主决定哪些用户可以访问其资源,并且可以将相应的访问权限授予其他用户。然而,这种控制方式的层级相对较低,在那些高度定制化的安全环境中,往往难以提供足够的保护力度。
与之形成鲜明对比的是,SELinux 所采用的强制访问控制(MAC)规则,完全不受资源所有者主观意愿的影响。它通过一系列严谨的策略,对进程和用户访问资源的行为加以限制,从而为系统带来了更高级别的安全保障。
启用/禁用 SELinux
如果需要启用或禁用 SELinux,可以编辑 /etc/selinux/config 文件,并将 SELINUX 参数设置为 enforcing(启用)或 disabled(禁用)
我们也可以用命令的方式查看和更改模式。比如要确定当前的SELinux模式,运行getenforce命令。要将SELinux设置为其他模式,使用 setenforce命令
配置SELinux上下文
SELinux上下文(SELinux Context)是什么
在运行SELinux的系统上,所有进程和文件都会有相应的标签。标签代表了与安全有关的信息,称为SELinux上下文。
SELinux 上下文的格式通常是 “user:role:type”,例如 “system_u:object_r:httpd_sys_content_t”。其中,“system_u” 表示用户标识符,“object_r” 表示角色标识符,“httpd_sys_content_t” 表示类型标识符(每个对象都被赋予一个唯一的类型标识符,通过类型标识符限制了进程和资源之间的访问)。
显示文件或目录上的SELinux上下文
我们使用 ls 命令结合 -Z 选项来显示文件或目录上的 SELinux 上下文
ls -Z example.txt #显示文件 "example.txt" 的 SELinux 上下文
ls -Zd my_directory #显示目录 "my_directory" 的 SELinux 上下文
更改文件的SELinux上下文
在 SELinux 环境中,用于更改文件 SELinux 上下文的命令主要有三个,分别是semanage fcontext、restorecon和chcon,它们在功能和使用场景上各有不同。
chcon
chcon命令的作用是临时更改 SELinux 上下文。值得注意的是,它所做的上下文更改并不会被保存到 SELinux 上下文数据库中。这就意味着,一旦使用了restorecon命令,chcon命令之前所做的更改就会失效,无法保留下来。
semanage fcontext
若要为文件设置 SELinux 上下文,semanage fcontext命令是首选方法。使用该命令可以声明文件的默认标签,之后再搭配restorecon命令,就能将所设置的上下文应用到文件上。
semanage fcontext命令有一些常用的选项(部分),具体如下:
|
选项 |
描述 |
|
-a, --add |
添加新的规则 |
|
-d, --delete |
删除现有的文件规则 |
|
-l, --list |
列出当前定义的文件上下文规则 |
|
-t, --type=TYPE |
指定要应用的目标上下文类型 |
示例
假设我们搭建了一个 FTP 服务器,用于存储供用户下载的共享文件,其文件存放目录为/srv/ftp/shared,我们希望将该目录及其子目录和文件的安全上下文设置为public_content_t类型,确保 FTP 服务器能够正常访问这些文件。
首先,使用以下命令添加上下文规则:
semanage fcontext -a -t public_content_t "/srv/ftp/shared(/.*)?"
其中,-a表示添加新的规则,-t指定了要应用的目标上下文类型为public_content_t,"/srv/ftp/shared(/.*)?"是一个正则表达式,用于精准匹配/srv/ftp/shared目录以及该目录下的所有子目录和文件。
然后,使用以下命令使规则生效:
restorecon -Rv /srv/ftp/shared
这里的-R表示递归处理,会对/srv/ftp/shared目录下的所有子目录和文件逐一恢复上下文设置;-v表示显示详细的操作过程,让我们能清晰看到哪些文件的上下文被修改了。
完成上述操作后,/srv/ftp/shared目录及其包含的所有子目录和文件就都拥有了public_content_t类型的安全上下文,FTP 服务器也就能顺利访问并提供这些共享文件的下载服务了。
787

被折叠的 条评论
为什么被折叠?



