selinux 常用指令

来源:互联网 发布:淘宝水弹枪哪家好 编辑:程序博客网 时间:2024/06/04 18:51
大多数 SELinux的设置都是布尔值-换句话说就是,通过设定 0 或 1 来使其关闭或激活。默认这些值存储在 /selinux/booleans 目录下。举一个简单的例子,user_ping,这个布尔值通常设置为 1,以允许用户使用ping命令。想要了解 SELinux 的详细信息,请浏览 www.nsa.gov/selinux/papers/policy/node1.html。

在工作中
如果你只是想进行 SELinux的实验,你可以将其配置为 Permissive 模式。这个模式会记录任何违规操作,而不会停止他们。你可以使用安全级别管理工具进行配置,也可以在 配置文件 /etc/sysconfig/selinux 中,通过 SELINUX=permissive 来设定。

SELinux 状态

SELinux 有三种可能的状态:enforcing,permissive和 disabled。 enforcing和disabled 很好理解,就像其本身的意思一样。 permissive意味着 SELinux 会记录所有违规的操作的而不会去停止他们。

当 SELinux被激活,这里有两种工作方式: targeted或 strict。默认模式是 targeted,这也是我建议你采用的,它允许你定要保护那些目标,如何保护。

等会儿你就会看到,通过图形 SELinux管理工具,配置 SELinux是很简单的。同样,一些简单配置可以通过改变配置文件 /etc/sysconfig/selinux 来完成。在配置文件中有三种指令,描述如下:
指令 <-------->描述
SELINUX <-------->SELinux工作状态,可以设置为 enforcing,permissive或disabled。
SELINUXTYPE <-------->指定保护级别。默认是 targeted,仅作用于daemons。另一个选择是 strict 使用 SELinux进行全面保护。
SELOCALDEFS <-------->支持本地 SELinux 策略。默认设置为 0(即关闭)

如果你想改变 SELinux的基本状态,改变 SELinux指令。重启后,改动生效。

考试预览
在考试中你不大可能被要求在安装过程中配置 SELinux(出了设定 enforcing,permissive或disabled),如果你已配置完 SELinux 必须重启, SELinux 策略启用事需要占有几分钟的时间。考试中,在这段时间内,你不要做任何操作。总之,之前多多练习吧。

手动配置

SELinux 相对来说还是新技术。如果你还没有充分理解它,最好使用 SELinux管理工具进行 SELinux配置。作为安全级别管理工具的一部分,SELinux 图形配置工具已经有了很大的改进。你甚至可以利用新的工具为单独的目录配置 SELinux内容。

这个配置工具比较新,因此许多人认为应该到RHEL 6再发布。在第9章,我们已经描述了如何为 Apache 的虚拟主机配置 SELinux。

在结尾,有一些基本的 SELinux命令。如果你已经启用了 SELinux,使用 ls -Z 命令你能看到类似于上面示例的 SELinux 内容。使用 getenforce 命令可以获得当前 SELinux的工作状态,它范围三种状态的一种:enforcing,permissive或 disabled。

你可以使用 setenforce 命令来改变 SELinux 工作状态,命令如下:
# setenforce enforcing
# setenforce permissive
这将改动 /selinux/enforce 的布尔值。通常来说,你也可以直接更改配置文件:
# cat "1" > /selinux/enforce

如果你想改变某个文件或目录的配置,可以使用 chcon 命令。例如,你想将一个非标准文件配置给 FTP 服务器,你需要确定该目录 SELinux内容与默认 FTP 目录相符。你可以使用以下命令查看:
# ls -Z /var/ftp/
drwxr-xr-x root root system_u:object_r:public_content_t pub
SELinux内容显示,该目录是系统用户(system_u)和系统对象(object_r),允许其他人共享的类型(public_content_t)。如果你为 FTP 服务器创建了其它目录,你需要为这个目录配置相同的SELinux内容。例如你作为 root 用户创建了 /ftp 目录,并使用 ls -Z 命令查看,你会看到以下内容:
drwxr-xr-x root root user_u:object_r:root_t ftp
使用 chcon 命令来改变SELinux内容。如果含有子目录,你需要使用递归选项 -R。这中情况下,改变目录的用户与类型以匹配 /var/ftp,运行下面命令:
# chcon -R -u user_u -t public_content_t /ftp
如果你想这个目录支持上传功能,你需要指定另一个类型:public_content_rw_t。命令如下:
# chcon -R -u user_u -t public_content_rw_t /ftp

默认的文件配置保存在 /etc/selinux/targeted/contexts/files/file_contexts 文件中。如果你进行了错误的操作,想使某个文件返回原来的 SELinux配置,可以使用 restorecon 命令根据存储在 file_contexts 的配置进行恢复。不过默认的目录,不一定和你创建的一样。例如:使用下面命令改变 /ftp 目录的 SELinux内容类型:
# restorecon -F /ftp
# ls -Z /
drwxr-xr-x root root system_u:object_r:default_t ftp

使用 SELinux管理工具进行配置

这一节需要你将 SELinux 模式配置为 enforcing 或 permissive,见前面的描述。最简便的配置 SELinxu的方法就是使用 SELinux管理工具,你可是使用 system-config-selinux 命令启动它。如果你没有启用它,你将不会启动这个工具如下图所示,或仅收到地址为 232544错误。在开始本节前,启用 SELinxu 至少为 permissve模式,重启。如果你在 RHCE 考试中需要使用 SELinux,你最好将 SELinux 工作模式设为 enforcing。

图--略

SELinux管理工具比其他安全级别管理工具拥有更多的功能。如你所见,这里默认的当前模式是 enforcing,你可以设置为 Enabled,Permissive或 Disabled。截至所写,这一工具只支持默认策略类型。如果你不准备改变默认的策略类型,不需要在激活 Relabel On Next Reboot 选项。

在 SELinux管理工具的左侧窗格中有一定数量的类,这些类将在以下节里描述。这里的许多的类都是布尔类型,和大多数 SELinux类一样。

SELinux 布尔值设置

如你所见, SELinux 策略可以分为不同的类,一些于系统管理有关,一些关于服务。一些选项如下图。你做的任何改动都对应这 /selinux/booleans 目录下的布尔变量。除非你作出更改,不然你不会在 /selinux/booleans 目录下看到那些变量的。

图---略

随着安全级别管理工具的升级,本文所描述的信息与实际可能有所差距。你可能看到比我描述的更多的类或选项,这取决于你所安装的服务与包。

我不会介绍所有的选项。但是不要错过这些,可能 Red Hat 刚刚对 RHCE 和 RHCT 的考试增加了新的需求。

Admin
在 Admin 类下,你可以允许系统使用未分配的终端(ttys),允许对 root 目录进行写操作,从非标准位置读取文件,禁止任何进程加载内核模块,禁止任何对 SELinux策略的修改,以及提供对缓冲区溢出保护的支持。

Cronn
在这节,你可以启用额外的规则以支持 fcron 调度命令,以及禁用 SELinux对 cron服务的保护。

CVS
如果你使用 CVS 版本控制系统,你可能想使它能够访问密码的影文件。

Databases
如果你安装了 MySQL 或 PostgreSQL 数据库系统,你可以关闭 SELinux对它们的保护。

FTP
这里有6个配置项,RHEL5 的 SELinux 允许 FTP作为独立于 xinetd (第13章对 xinetd服务有描述)的服务允许。即支持 vsftpd 作为常规服务运行,而不与 inetd或 xinetd 有关联。允许目录上传,需使用 public_content_rw_t 指令,前面已有讨论。你可以同样支持使用 CIFS和 NFS进行文件传输,允许读写用户家目录,或禁用 SELinux对 FTP服务的保护。

HTTPD Service
这里有一些 SELinux指令以增强 Apache Web 服务器的安全性,如下列所示。许多是很好理解的,其中一些,我添加了注释。
*允许 Apache 使用 mod_auth_pam (Pluggable Authentication Modules)
*允许 HTTPD 支持 CGI (CGI脚本)
*允许 httpd 守护进程对有 public_content_rw_t 标签的目录与文件写入(类似 FTP)
*允许 HTTPD 脚本和模块连接到网络
*允许 HTTPD 脚本和模块通过网络连接到数据库
*允许 HTTPD 脚本对有 public_content_rw_t 标签的目录与文件写入(类似 FTP)
*允许 HTTPD 读取家目录
*允许 HTTPD 作为 FTP 服务器运行
*允许 HTTPD 运行 SSL 与 CGI 在同一域中
*允许 HTTPD 支持内置脚本
*禁止 SELinux 对 httpd守护进程的保护
*禁止 SELinux 对 httpd suexec(可允许 HTTPD 服务的可执行文件)的保护
*统一 HTTPD 处理的所有内容档案
*统一 HTTPD 连接终端;需要处理证书

Kerberos
这里有3个配置选项。一个选项允许其他进程使用 Kerberos 文件(默认启用)。其他两个选项禁止 SELinux 对 Kerberos 管理进程 (kadmind) 和 Kerberos 键盘控制进程 (krb5kdc) 的保护。

Memory Protection
在目前版本的 Red Hat 考试指南,内存保护选项不与任何服务或系统关联。

Mount
这一类与 automount 服务有关;你可以通过配置它以允许挂载者挂载任何目录或文件,同样也可以禁用 SELinux的保护。

Name Service
名称服务器进程(named)指的是 RHEL DNS 服务。如果你维护一个区域,你会希望允许 named 进程可以覆盖主域文件。你也可以禁用 SELinux 的保护。名称服务器的缓存进程(ncsd)也是如此。

NFS
在NFS启用 SELinux之前,你至少需要启用 NFS 文件系统的读权限。如果你使用 NFS 共享系统,你可能想在 NFS 文件系统上启用读/写/创建功能。如果你配置某个服务器上的家目录作为 NFS 共享,你可能想让 NFS 支持家目录。这些都有通常安全管理服务进程(gssd)提供支持。

NIS
如果你想在 SELinux 系统上运行 NIS,你可能想允许 NIS 运行进程。你可以取消 SELinux对 NIS 密码和 NIS 传输进程的保护。如果还有问题,你可以取消 SELinux对相关进程(ypbind)的保护。

Other
这些选项可以允许完整文件的访问,通过 FTP 和未标签的包。它们同样可以禁止 SELinux 对PC读卡器和特殊时区数据的保护。

Polyinstatiation
Polyinstatiation 是很重要的,这意味着不同的用户在相同的目录下可能会看到不同的东西,如/ tmp。你可以使用 SELinux工具启用这一支持。

pppd
这一进程使用电话调制解调器进行通讯。你可以允许 pppd 在内核中插入支持通信的模块,或禁用 SELinux保护。

Printing
这部分允许你禁用 SELinux 对于不同 CUPS 进程的保护,包括 CUPS 后台服务, cupsd进程,cupsd-lpd服务和 HP 打印机进程(hplip)。你甚至可以用 LPD代替 CUPS。

rsync
这部分允许你为标签为 public_content_rw_t 目录配置写权限,和禁止 SELinux保护。

Samba
这里有一些方法,你可以使用SELinux 保护 Samba。选项如下:
*允许 Samba 共享 nfs目录
*允许 Samba 共享用户家目录
*允许 Samba 对标签为 public_content_rw_t 的目录文件进行写操作
*允许 用户登录到 CIFS家目录
*禁止 SELinux对 nmbd进程(NetBIOS 进程)的保护
*禁止 SELinux对 smbd进程(Samba 进程)的保护
*禁止 SELinux对 winbind进程(WINS 服务进程)的保护

SASL Authentication Server
简单的身份验证和安全层(SASL)服务器是另一个验证方法;通过安全级别配置工具,可以允许它进入您的 /etc/shadow 验证数据库,以及停用SELinux的保护。
在工作中
如上所述,这里有"sasl authentication server" 和 "sasl authentications server"。相关错误见 231868错误文件 https://bugzilla.redhat.com

SELinux Service Protection
这一类允许为大范围的进程禁用 SELinux保护,如从 amanda 到 zebra。这些服务不包含在其他类中。

Spam Protection
这一类作用于 SpamAssassin 服务。对于常规用户需要进入家目录。当然,你依然可以禁用它。

SQUID
如果你想设置 Squid Web代理的缓存(第9章有描述),你将需要允许它访问网络。你也可以禁止 SELinux。

Universal SSL Tunnel
如果你要为网络配置一个安全通道,你可以用 SELinux添加保护。你可以使用此工具允许 stunnel 作为单独的服务运行,也可以禁用SELinux的保护。

Zebra
你可以利用这一工具是 Zebra 路由服务对路由表进行写入。

文件标签
你可以更改文件的默认标签,有些我们这章前面已经提到了(有些是在早些的章节)。一些选项如下:

图------略

用户映射
用户映射允许你在默认设置外进行常规和管理用户的操作。

SELinux 用户
SELinux 用户允许你为标准用户分配角色,如:常规用户(user_u),系统用户(system_u)和管理 root 帐号.

Translation
这节允许你定义敏感级别

网络端口
这部分为服务分配端口。

策略模块
指定应用于模块的 SELinux的版本号

SEtroubleshoot(SELinux 排错浏览器)
如果因为 SELinux而出现问题是很难察觉的。例如,如果你的 Samba出现问题,你可能找不到任何错误信息;它可能不清楚你是否为 Samba 认证数据库添加了密码或者是 SELinux禁止了访问。你可能去分析日志文件,但关于 SELinux的问题是很难查找的。

Red Hat 提供了 SELinux排错工具,如下图。它使用 Linux管理员完全理解的语言,为你可能遇到的问题提供提示和建议,包括能够解决问题的命令等。

图------略

在 GNOME 桌面启动 SELinux排错浏览器,点击 System | Administration | SELinux Troubleshooter;或者使用 sealert -b 在图形界面的命令行启动它。 sealert 有许多参数,你可以使用 sealert -h 查看帮助。

 

原创粉丝点击