selinux 常用指令

Auser_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 查看帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值