如何在Linux中配置SELinux进行安全控制?

说实话,当我在 Linux 系统上做 SELinux 的时候,真的感觉就像在解谜一样。
听起来很简单,但如果你真的想开始,你需要小心每一步。
接下来我就给大家讲讲我的实践经验。
这可能有点偏离主题,但这都是事实。

1 .说实话,一开始我对SELinux的基本概念很困惑。
简单来说,主体是进程或用户,客体是可访问的文件、端口等资源。
最关键的是SecurityContext,格式为user:role:type:level,其中type是主要字段,直接决定是否可以访问。
我当时用了ls -Z命令,查看了这些文件前面的那组字母,比如httpd_sys_content_t。
起初,我实在不明白他们的意思。
后来我发现 ps -Z 也可以看到进程上下文,这才意识到 SELinux 给每个进程和文件打了一个标签,并根据标签来判断是否可以使用。

有趣的是 SELinux 的策略类型。
针对性模式是保护特定的服务,比如你的Web服务器和数据库,这样比较方便。
严格模式提供了全面的保护,但说实话,我尝试过一次就放弃了。
太复杂了,各个部门都有问题。
当时我在生产环境安装了严格模式,但是Apache直接崩溃了。
日志中充满了 SELinux 拒绝消息,这让我很困惑。

2 我在 SELinux 的工作方式中遇到了很多陷阱。
起初我认为强制模式是完全强制性的,但我发现宽容模式是一件好事。
我记得有一次系统出现问题,我直接将SELinux设置为permissive。
原来是某个脚本的执行权限不正确。
在宽容模式下没有报告错误。
当我将其恢复到应用程序时,它崩溃了。
后来我明白了,permissive是为了帮助你发现问题,而不是为了长期使用它。
编辑配置文件确实是最安全的,但是我更习惯使用setenforce命令,对于临时调试特别有用。
但有一个教训值得吸取:不要禁用 SELinux。
我的一个朋友以前就这么做过,结果被黑客利用了。

3 管理文件安全上下文 这可能是 SELinux 中最有问题的部分。
要恢复默认上下文,请使用restorecon 命令。
我尝试在大目录中操作,发现必须添加-R参数。
否则,只会恢复当前文件,子目录仍然会混乱。
修复上下文时的一般规则是尽可能使用标准路径。
例如,如果 Apache 内容放置在 /var/www/ 中,SELinux 将默认识别它。
如果你把它放在其他地方,你必须使用semanage fcontext命令重新定义它,这需要权限。
我有一个客户定制了太多路径。
结果,该服务不断报告 SELinux 错误,并且花了一整天的时间才修复这些错误。

4 处理reject事件和分析SELinux日志,说实话,不太好理解。
Audit.log 完全是英文的,并且直接读它就像读一本天书。
后来我发现ausearch特别有用,可以帮助你筛选出关键信息。
一旦系统报错,我使用 ausearch -mavc 发现了拒绝消息,发现某个进程访问了不该访问的文件,于是它迅速调整了策略。
sealert 工具确实很有用。
它将解释导致问题的策略并生成修复建议。
这比我想象的要好得多。
但是,应谨慎使用audit2 allow。
有一次我按照教程生成了一个模块,但是系统直接蓝屏了。
后来我发现我定的规则太宽泛了。
我真心建议新手不要乱用,在上手之前先了解一下SELinux的原理。

5 建议关键配置保持应用模式。
我用双手支持他。
尽管宽容可以帮助您在调试时检测问题,但长时间使用它意味着系统大门敞开。
正确理解上下文非常重要。
我当时就吃了亏,把用户的主目录上下文改了。
结果登录就出问题了,报纸上的分析就更关键了。
我有每天晚上使用 ausearch 检查最近一小时内是否有 SELinux 拒绝事件的习惯,以防止小问题演变成大崩溃。
说实话,平衡安全性和可用性确实取决于体验。
Semanage和restorecon是很好的工具,但是如果使用得不好就会出现问题。

一般来说,SELinux 如果使用得当可以挽救生命,但如果使用不当可能会致命。
我建议新手从专注模式开始,逐渐熟悉各种命令。
不要急于禁用 SELinux。
说实话,9 0%的系统问题都是由不正确的SELinux策略引起的,但只要掌握了方法,其实并没有那么困难。

LINUX怎么查看并关闭SELinux_Linux查看与关闭SELinux方法

说白了,查看SELinux的状态有两种方法:sestatus或者getenforce。
前者被展开,后者被切割。

展开来说,有3 个关键点: 首先,我们来谈谈最重要的事情。
预设输出上的当前模式告诉您状态 - 强制模式是严格的,宽容模式是宽容的,禁用的媒体完全关闭。
当我们去年运行该项目时,发生的情况是他们取消了一些脚本执行,我们在发现问题之前将其更改为允许它。
还有一点是,你只是用0来改变时间,但是你要记住,重启后会返回默认配置。
很多人不重视这一点。
另一个是决定性的。
要使修改永久生效,需要更改/etc/selinux/中的SELINUX=disabled命令,但说实话,这相当棘手。
如果您在没有进行不受支持的更改的情况下重新启动,系统将自动强化。

一开始我也以为selinux=0内核参数是万能的,后来发现我错了。
这只是一个好的开始,接下来还得改变形态。

建议初学者先强制检查状态,使用force 0测试一段时间,并且在永久更改配置之前一定要备份文件。
您认为在宽容模式下测试足够安全吗?

linux设置SELinux执行模式是什么-setenforce 命令使用与实例

setenforce在Linux中非常重要,它用于改变SELinux的状态。
SELinux共有三种模式,记住清楚。

第一个叫做Enforcing,也就是强制模式。
这个东西一旦运行起来,系统就会严格遵守规则,不会允许非法操作。
例如,如果你想运行某个服务,但SELinux不让它运行,系统会直接以强制模式为你关闭它,不让你运行它。

第二种称为宽容模式。
当该模式开启时,SELinux发现你违反了规则,但不会阻止你,并会帮你记录在日志中。
此模式适合调试您的策略并查看哪里出错了。

第三个叫Disabled,就是彻底关闭SELinux。
不推荐这种模式,因为它不再安全,就像裸奔一样。

如何使用SetonForce?非常简单,一行命令即可。
例如,如果您想启用强制模式,请输入 sudosetenforce1 或 sudosetenforceEnforcing,这两个命令都可以。
要启用宽容模式,请使用 sudosetenforce0 或 sudosetenforcePermissive。

如果你想知道SELinux当前的状态,不要使用不带参数的setenforce,它可能没什么用。
直接使用getenforce,它会告诉你是否强制、允许或禁用。

有几点需要注意:首先,您必须具有管理员权限才能更改状态。
没有sudo是没有用的。
其次,如果用SetenForce替换的话,重启后又会恢复到原来的状态。
会回来的。
如果您想长期更改此设置,则需要更改 /etc/selinux/config 文件,更改其中的 SELINUX= 行,例如将其更改为 SELINUX=Enforcing,然后重新启动系统。
第三,SetenForce 只允许您在 Enforcing 和 Permissive 之间切换。
如果你想完全关闭SELinux,你需要更改配置文件。

在实际使用中,比如由于SELinux导致服务无法运行,可以暂时开启permissive模式,看看服务是否可以运行。
如果策略写错了,就用permissive模式,运行几个步骤,然后去日志里看看SELinux记录了什么。

Q1 问为什么Satanforce没用?可能SELinux已经宕机很长时间了,所以你需要检查/etc/selinux/config。
您输入的命令不正确,或者您没有 sudo 权限。

Q2 问如何彻底关闭SELinux?虽然不建议这样做,但如果必须禁用它,只需更改 /etc/selinux/config,将 SELINUX= 行更改为 SELINUX=disabled,然后重新启动即可。

Q3 :Setenforce和Getenforce有什么区别? setenforce的目的是改变状态,getenforce的目的是查看状态。

简而言之,SetenForce是一个很好的工具,但是在使用它时您应该明白它所做的更改是暂时的。
在生产环境中,安全是第一位的,始终建议开启强制模式。
如果您想进行长期更改,您仍然需要更改配置文件。