SELinux - CentOSx86_64:用户命令限制

SELinux - CentOSx86_64:用户命令限制

SELinux - CentOSx86_64:用户命令限制

SELinux 是完成这项工作的合适工具吗?如果是,那么最好的方法是什么?

我想限制特定用户仅运行一些预定义的命令/脚本列表(可能在他们的主目录中)。此外,用户脚本可能有权运行用户无法直接运行的命令(例如,用户脚本 test.sh 可以调用“ping localhost”,但用户无法直接从命令行调用“ping localhost”)。值得一提的是,我认为这些限制仅适用于一个用户帐户(我不需要为不同的用户帐户进行多种不同的配置)。

操作系统是CentOSx86_64,SELinux启用如下:

SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted

我对 SELinux 还很陌生,但已经尝试了以下内容:

(1)我认为 MLS 政策可能是最适合的(这个链接看起来很有希望:http://www.centos.org/docs/5/html/Deployment_Guide-en-US/sec-mcs-getstarted.html) 来完成这项任务,所以我首先尝试将其打开。'SELinux Admin GUI' 没有提供任何选项来更改策略,因此我尝试直接更改 /etc/selinux/config。重启后,结果出现“内核崩溃”,因此我决定不使用原始安装的策略(即目标策略)。

(2) 我从 SELinux 管理 GUI 创建了一项新策略,其策略类型为“最小终端用户角色”。对于“名称”,我将其命名为“limiteduser”。我没有选择要转换到的角色。我没有选择其他角色。我选择了“所有”TCP 和 UDP 端口进行绑定/连接。我没有向策略添加布尔值。运行生成的 .sh 后,创建了新的 SELinux 用户和角色。然后我为“limiteduser”分配了一个登录名。正如预期的那样,这给了我一个权限非常有限的用户。

(3) 最初,这个新用户可以在其主目录中创建脚本,但无法执行它。在我设置了一个名为“allow_gues_exec_content”的布尔值后,用户就可以执行该脚本了。最初,脚本只包含一个“echo”,但是当我将其更改为 ping 后,它再次失败。为了允许这个新用户使用“ping”,我取消选择了布尔值 user_ping(虽然我认为这仅适用于 user_u,而不适用于 guest_u)。为了实现我想要的效果,我认为另一种方法可能是定义一个基于“user_u”的类型,然后删除权限(而不是采用我所采用的方法,即采用基于 guest_u 的类型并添加权限 - 但是我也不知道该怎么做!)。

(4) 许多在线资源讨论了来自 src 目录的策略文件,但未安装该目录,我无法确定要安装哪个软件包来添加它。我安装了以下 selinux 相关软件包:

libselinux.x86_64                   2.0.94-5.3.el6                     installed
libselinux-devel.x86_64             2.0.94-5.3.el6                     installed
libselinux-python.x86_64            2.0.94-5.3.el6                     installed
libselinux-utils.x86_64             2.0.94-5.3.el6                     installed
selinux-policy.noarch               3.7.19-126.el6_2.4                 @updates 
selinux-policy-targeted.noarch      3.7.19-126.el6_2.4                 @updates 
setools-console.x86_64              3.3.7-4.el6                        @base    
setools-devel.x86_64                3.3.7-4.el6                        @base    
setools-gui.x86_64                  3.3.7-4.el6                        @base    
setools-libs.x86_64                 3.3.7-4.el6                        @base    
setools-libs-java.x86_64            3.3.7-4.el6                        @base    
setools-libs-python.x86_64          3.3.7-4.el6                        @base    
setools-libs-tcl.x86_64             3.3.7-4.el6                        @base   

我认为我需要定义一个自定义策略(或者可能使用“严格”策略)。在该策略中:

(a)允许用户执行其主目录中的文件。(b)允许用户脚本转换为不同类型以运行用户没有权限执行的命令。

使用 SELinux 管理 GUI(和我所知道的配置文件)我不知道如何做到这一点。

感谢您的任何帮助,您可以提供。

答案1

我认为有限的外壳如http://lshell.ghantoos.org/对您来说会更容易。由于它是用 Python 编写的,如果您无法让它完全按照您想要的方式工作,您可以对其进行自定义。

相关内容