为什么默认情况下 SELinux(Enforcing=1)允许绑定到低(或任何)端口?

为什么默认情况下 SELinux(Enforcing=1)允许绑定到低(或任何)端口?

根据文档,我假设 Selinux 默认要求基本上所有端口操作都将被阻止并记录为 AVC。

我有一个启用 SELinux 强制的虚拟机,是用 Centos7 创建的,开箱即用。

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             mls
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      31

不过,我可以启动一个网络服务器并将其绑定到端口 1。

[vagrant@localhost ~]$ sudo python -m SimpleHTTPServer 1
Serving HTTP on 0.0.0.0 port 1 ...

我假设 SElinux ,在新的操作系统上强制执行并且没有其他修改实际上会限制对这些类型操作的访问(我只是使用端口 1 作为安全违规有多严重的例子,因为一般来说我认为至少默认情况下,少量端口将通过 selinux 被阻止)。

答案1

SELinux 配置(参考策略)包括无限制类型,默认情况下用户位于无限制域(unconfined_t)中。对于不受限制的进程(以及可以启动不受限制的进程的用户),限制很少。在非受限域中运行的进程与非 SELinux 系统上的进程具有几乎相同的权限。

另一种类型的域是受限域,它们对允许在此类域中运行的进程执行的操作有严格的规则。

红帽文档如果您想使用受限的 SELinux 用户配置系统,这里有一些详细信息和示例。

相关内容