如今,安全是软件开发、服务器管理和应用开发的一个极其重要的方面。
如果你使用Linux,你很幸运--它有一个称为SE Linux的优秀功能,可以帮助你增加一个额外的安全层。
什么是SE Linux?
SE Linux是由NSA(国家安全局)开发的,为政府相关安全任务服务。
SE Linux是安全增强型Linux的缩写。它为系统管理员提供了更多的控制,以提供对文件和进程的访问。使用SE Linux,管理员可以定义一个上下文,对文件进行标记,并在该上下文中允许它们。
访问权和权限通常是由一个组中的用户继承的。但有一些来源(如网络服务器和进程)需要访问网络端口和内核进程。这些通常是由root或有特殊权限的用户生成的。SE Linux可以帮助你限制谁可以访问这些特殊进程。
如何使用SE Linux
SE Linux在大多数Linux发行版中都是默认的。在这篇文章中,我将在 Fedora 上工作。
请记住,使用SE Linux需要sudo 或root 访问。
SE Linux的配置文件位于/etc/sysconfig/selinux 文件夹中。让我们来看看它的内容。
SE Linux模式

SE Linux的配置文件
在配置文件中,我们可以改变模式,并从以下内容中选择任何一种。
- 强制的 - 默认情况下启用,根据定义的策略进行过滤。
- Permissive - 不强制执行定义的策略,但在日志文件中记录所有的尝试。这种模式对排除故障很有用。
- 禁用 - SE Linux完全被禁用。不建议这样做,因为它可能使你的系统受到威胁。另外,恢复到执行状态可能会产生某些差异。
你可以用下面的命令检查你当前的SE Linux模式:
getenforcesestatus
如果你只需要改变当前会话的模式,你可以使用下面的命令:
sudo setenforce 0- 设置当前会话的允许模式sudo setenforce 1- 为当前会话设置强制模式
SE Linux策略
在SE Linux中,策略定义对用户的访问。用户定义对角色的访问,角色定义对域的访问。然后域提供对某些文件的访问:

SE Linux策略
为了改变和修改访问权,定义了 "布尔"。我们将在下一节中讨论布尔运算。
如何用布尔值管理SE Linux策略
正如你现在所知道的,SE Linux策略是由布尔值管理的。
让我们看一个如何查看和设置布尔值的工作例子。在这个例子中,我们将设置特定于httpd 的布尔值。
首先,列出所有针对http的模块 -getsebool -a | grep httpd 。
这里 -a列出所有的布尔运算:

布尔值的列表
接下来,让我们选择并改变上面代码中黄色突出显示的布尔值:
getsebool httpd_can_connect_ftp
现在,将该值设置为allow :
setsebool -P httpd_can_connect_ftp 1
在上面的命令中:
- 标志P被用来使改变在重启后也是永久的。
1是启用布尔值。
现在,当你再次列出这个进程时,它的值将被允许:

布尔值'on
SE Linux架构
下图解释了SE Linux如何从源头验证一个尝试:

故障排除和SE Linux日志
SE Linux为每次尝试产生非常详细的日志。你可以在这里找到并查看这些日志:/var/log/audit 。
在排除故障时,你应该进入 "允许 "模式,这样所有的事件都可以记录在日志中。虽然策略没有被执行,但尝试被记录在日志中。
如何禁用和启用 SE Linux
完全禁用SE Linux不是一个好的选择。但在某些情况下,可以绕过政策,例如在排除故障时。
如果你遇到一个小问题,与其禁用SE Linux,不如投入一些时间进行故障排除。
但如果你真的需要禁用SE Linux,请遵循以下步骤:
- 将模式从 "强制 "改为 "允许"。
- 将模式从 "允许 "改为 "禁用"。
总结
学习SE Linux是值得你花时间的,在使用它时,你可以探索无穷的可能性。
SE Linux为管理员提供了一个细粒度的控制水平。所以,为什么不学习它并利用它来提高你的安全性呢?