SELinux教程:命令与管理


当你考虑在服务器上使用SELinux时,了解一些基本命令和管理工具会有所帮助。本文是三本SELinux教程的一部分,在这里,我们将提供一些命令来帮助你确保Linux服务器的安全。

功能 命令
chcon

用于用特定的安全环境标注一个或多个文件。

checkpolicy 是一个用于将政策来源编译到二进制政策文件中的工具。一般不直接命名它,而是以该政策的生成文件称呼它。
newrole 命令用于切换角色。一般来说,该命令会发布成newrole -r sysadm_r来转换到sysadm_r角色完成管理任务。
sestatus 显示SELinux当前的状态,包括状态(允许或禁止)、政策版本和所有政策布尔运算的设置。
getsebool  显示SELinux布尔运算条件
setsebool 设置SELinux布尔运算条件
ffixfiles 可用来重新标注整个基于现有政策的文件系统或重新标注基于包括在该应用的rpm数据包中信息在内的打包应用文件。

除了这些新的SELinux命令,一些内置的Linux命令,如cp、mv、ls和ps,都随着SELinux的启动变成使用–Z标记。标识符命令也被修改来显示连同用户默认安全属性的用户安全环境。

SELinux配置决窍

除了Linux服务器上文件和单独流程的安全环境,SELinux还有更多安全功能。在这篇文章中涵盖所有SELinux功能和基本的安全模式几乎是不可能的,但这里我会强调关键的那些。

端口管理:你可以通过SELinux管理对系统端口的访问。默认情况下,SELinux允许应用访问默认端口(如ssh可访问端口22),不过一旦禁用SELinux,你也可以重新配置任一应用来访问任一非默认端口。

为了得到SELinux管理端口的完整清单,你可以使用以下命令:

#/home/root>semanage port –l
将ssh的访问端口从22改成24
#/home/root> semanage port –a –t ssh_port_t –p tcp 24

然后重启ssh相关的服务。

用户管理:有了SELinux严格用户管理功能的帮助,你可以让你的服务器“确实难以攻破”。它们可以在任一SELinux政策中担任重要角色。但在目标政策中(默认的SELinux政策),每个域运行一个单一角色且TE用来从其它流程中分离出受限的流程。

因此,在目标SELinux政策中,流程和对象问题以system_u的形式出现,而所有的默认Linux用户是user_u,就像下面显示的:

SELinux,命令,管理

但在严格政策中,一些系统帐户可以运行在普通的、无特权的user_u身份下,而其它帐户可以在政策数据库中有直接身份。

自定义政策模块(Customized Policy Modules):有时候我们在在建立SELinux时面对的情况是政策和布尔运算条件可能不足。在这种情况下,我们可以利用audit2allow命令来定义我们的自定义SELinux政策。举例来说,如果否定错误登入到所有ftp相关服务的审计日志中,我们可以用以下句子来形成我们的自定义SELinux政策模块:

#/home/root> # grep ftpd_t /var/log/audit/audit.log | audit2allow -M ftplocal

这个自定义ftp相关政策模块之后可以如下方式下载到现有的SELinux目标政策:

#/home/root> semodule –i ftplocal

由于SELinux缺乏文档编制和技巧,很多管理员都忽略了它。但是有默认目标政策的SELinux模式对很多管理员来说都是一个安全的起始点。如果你准备测试它,我建议先运行几天,观察所有错误和警告的日志,如果没有错误,切换到执行模式。

如果你正运行一些特定的数据库或应用(如MySql或Oracle),也要注意,在服务器上执行SELinux政策之前,你应该为SELinux相关指令查看特定版本的文档编制。

相关内容