Linux中内核级加强型火墙的管理
SeLinux的功能
作为系统级加强型火墙,SeLinux
开启后对文件和程序都会产生影响.
对于文件而言
当SeLinux
开启时,内核会对每个文件及每个开启的程序进行标签加载,标签内记录程序和文件的安全上下文.
对程序功能而言
当SeLinux
开启时,会对程序的功能加载开关,并设置此开关的状态为关闭.
当需要此功能时需要手动开启功能开关.
这个开关功能叫做sebool
SeLinux的状态及管理
##开启SeLinux
vim /etc/selinux/config
SELINUX=disabled ##此时为关闭状态
SELINUX=enforcing ##此时为强制状态
SELINUX=permissive ##此时为警告状态
##查看SeLinux状态
getenforce
##切换SeLinux状态
setenforce 0 ##切换到警告
setenforce 1 ##切换到强制
##SeLinux日志位置
/var/log/audit/audit/log
permissive
和enforcing
都是开启状态,区别在于enforcing
状态下不符合条件的一定不能被允许并会收到警告信息;而permissive
状态尽管会收到警告信息但仍可以运行相关功能.
安全上下文
在开启了SeLinux后,所有的文件和程序都被打上了标签,指定安全上下文的程序只能访问对应安全上下文的文件.
临时修改的安全上下文属性,SeLinux标签重新加载时又会恢复.如果根下有.autorelabel
文件,则开机时SeLinux会重新加载标签
##临时修改安全上下文属性,SeLinux标签重新加载时又会恢复
chcon -t public_content_t /TestDir/
使用semanage
命令可以管理安全上下文的设置规则,实现持久的修改安全上下文.
- 图中的(/.*)? 表示包含目录中内容和以后创建的
Sebool功能开关
在开启SeLinux后,会自动对程序的功能增加开关并设置为关,许多功能即使在配置中开启也无法使用.需要设置其Sebool
属性为on
才能正常运行.
SeLinux对于端口的限制
除了会设置安全上下文,对程序功能设置开关,SeLinux还会对程序使用的端口进行限制.
如SSH
服务本身运行在22
端口上,如果在开启SeLinux强制模式的前提下修改其端口并重启服务,会发现无法重启.
Setrouble
在上面的实验中我们可以看到,在Selinux
开启的情况下.,Message
中输出了相关的警告信息.显然,系统并不会自发的输出相关信息,一定是有配套软件来进行这一过程.
Setrouble
是系统中用来对Selinux
警告信息进行分析并提供解释和方法的软件,通常来说系统中都是预先安装好的.
##查看安装好的Setroubleshoot软件包
rpm -qa | grep setrouble
在系统中有安装好的Setroubleshoot
软件包时,如果出现安全上下文等问题, Audit
日志只会输出警告信息,而不会告诉你解决方法; Message
在提示警告信息的同时也会出现对应的解决方法提示.
如果清空Message
和Audit
日志后卸载Setroubleshoot
软件包,则在出现Selinux
警告问题时只有Audit
日志中会出现警告信息,而message
内不会有任何相关信息出现,因为能够提供警告和解决信息的软件已经被卸载了,并不能起到应有的作用.