一文读懂SElinux,相关策略以及SElinux域转换

什么是SELinux

SELinux (Security-Enhanced linux)安全增强的linux,是linux的内核模块,可以理解为linux的安全子系统,SELinux 可以作为标签系统运行,系统中的文件操作、进程、端口、ip、网络行为等,都配置了与之关联的标签。在给计算机内的资源定义标签以后,只有拥有标签的进程才能访问。

SELinux 三种状态

1.Enforcing(严格模式):selinux正在运行,设置的所有安全措施都被启用,与SELinux 安全策略相关的服务和程序被限制,并记录到日志中。
2. Permissive(宽容模式):表示selinux运行,设置的所有安全措施被开启,与SELinux 安全策略相关的服务和程序被限制,程序不会受到限制,违反安全测率,记录到日志中。
3. Disabled(关闭):SELinux安全策略被关闭。

Enforcing(1) : 严格模式,拦截未定义的不安全请求;
Permissive(0):宽容模式,记录未定义的操作;
Disabled: 关闭selinux模式。

如何查看SELinux 状态

1.查看selinxu状态:getenforce
2. setenforce 1 (设置selinux状态为严格模式)
3. setenforce 0 (设置selinux状态为宽容模式)
setenforce 只能设置0和1两种。如果需要关闭需要修改系统配置下的selinux文件
例如:/system/etc/selinux/config 修改其中定义的模式为Disabled。

selinx的上下文关系

SELinux 提供了基于角色的访问控制 (RBAC)、类型强制 (TE) 和可选的多级安全性 (MLS) 的组合。
例如:
~]$ ls -Z file1
-rwxrw-r-- user1 group1 unconfined_u:object_r:user_home_t:s0 file1

SELinux 上下文遵循 SELinux user:role:type:level 语法。

SELinux user
每个 Linux 用户都使用 SELinux 策略映射到一个 SELinux 用户。这允许 Linux 用户继承对 SELinux 用户的限制。映射的 SELinux 用户标识在 SELinux 上下文中用于该会话中的进程,以便定义它们可以输入的角色和级别。
role
SELinux 用户被授权使用角色,角色被授权用于域。该角色充当域和 SELinux 用户之间的中介。
type
类型是类型强制的一个属性。该类型为进程定义域,为文件定义类型。
当存在允许访问的特定 SELinux 策略规则时,才允许访问。
level
每个级别都是一个敏感度类别对,类别是可选的。我称其为灵敏度,灵敏度有s0,s1,s2。个人不清楚灵敏度定义,不过常见默认s0。

域转换

一个域中的进程通过执行具有新域类型的应用程序来转换到另一个域。该权限在 SELinux 策略中使用,并控制哪些应用程序可用于进入域。
以下示例演示了域转换:

entrypointentrypoint

域转换示例

用户想要更改其密码。为此,他们运行该实用程序。可执行文件标有以下类型:
passwd/usr/bin/passwdpasswd_exec_t

~]$ ls -Z /usr/bin/passwd
-rwsr-xr-x  root root system_u:object_r:passwd_exec_t:s0 /usr/bin/passwd

该实用程序访问 ,标有以下类型:passwd/etc/shadowshadow_t

~]$ ls -Z /etc/shadow
-r--------. root root system_u:object_r:shadow_t:s0    /etc/shadow

SELinux 策略规则声明允许在域中运行的进程读取和写入标有该类型的文件。该类型仅适用于密码更改所需的文件。这包括 、 及其备份文件。

`passwd_tshadow_tshadow_t/etc/gshadow/etc/shadow`

SELinux 策略规则声明域的权限设置为类型。

`passwd_tentrypointpasswd_exec_t`

当用户运行该实用程序时,用户的 shell 进程将转换到域。使用 SELinux,由于默认操作是拒绝,并且存在允许(除其他外)在域中运行的应用程序访问标有该类型的文件的规则,因此允许应用程序访问 ,并更新用户的密码。

passwdpasswd_tpasswd_tshadow_tpasswd/etc/shadow

此示例并非详尽无遗,用作解释域转换的基本示例。尽管有一个实际规则允许在域中运行的主体访问标有文件类型的对象,但在使用者可以转换到新域之前,必须满足其他 SELinux 策略规则。在此示例中,类型强制确保:

passwd_tshadow_t

只能通过执行标有该类型的应用程序来输入域;只能从授权的共享库执行,例如类型;并且无法执行任何其他应用程序。

passwd_tpasswd_exec_tlib_t

只有授权域(如 )才能写入标有该类型的文件。即使其他进程以超级用户权限运行,这些进程也无法写入标有该类型的文件,因为它们不在域中运行。

passwd_tshadow_tshadow_tpasswd_t

只有授权的域才能转换到域。例如,在域中运行的进程没有执行的正当理由;因此,它永远无法过渡到域。

passwd_tsendmailsendmail_tpasswdpasswd_t

域中运行的进程只能读取和写入授权类型,例如标有 or 类型的文件。这可以防止应用程序被诱骗读取或写入任意文件。

passwd_tetc_tshadow_tpasswd

参考网站:
https://access.redhat.com/documentation/enus/red_hat_enterprise_linux/7/html/selinux_users_and_administrators_guide/index—>SElinux

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SELinux是一个安全增强的Linux内核模块,它通过将安全策略强制应用于系统资源来提供更高的安全性。在Linux系统中,httpd_t是与Apache HTTP服务器相关的安全策略。下面是一些与httpd_t相关SELinux策略的详解: 1. httpd_t是一个(domain),它是一个安全策略的集合,用于控制Apache HTTP服务器与其他系统资源的交互。 2. httpd_t是一个受限制的,它只能访问被允许的资源和服务。这可以提高系统的安全性,因为即使Apache HTTP服务器被攻破,攻击者也无法访问不被允许的资源。 3. httpd_t的访问控制是通过控制SELinux上下文来实现的。在Linux系统中,每个进程、文件和对象都有一个SELinux上下文,它描述了该对象的安全属性。httpd_t的安全上下文描述了Apache HTTP服务器的访问控制策略。 4. 在httpd_t中,可以使用httpd_sys_script_exec_t上下文来允许脚本的执行,如PHP、Perl和Python。httpd_sys_script_exec_t上下文允许Apache HTTP服务器执行与脚本相关的操作,同时遵循SELinux策略。 5. httpd_t中另一个重要的上下文是httpd_log_t。这个上下文用于控制Apache HTTP服务器的日志记录。httpd_log_t上下文允许Apache HTTP服务器写入日志文件,并提供对日志文件的访问控制。 总之,httpd_t是一个重要的SELinux策略,用于控制Apache HTTP服务器与其他系统资源的交互。它通过限制Apache HTTP服务器的访问权限来提高系统的安全性,并提供对脚本执行和日志记录的访问控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值