原理和功能
-
安全策略:SELinux的行为由一组详细的安全策略控制,这些策略定义了系统中的对象(如文件、进程)如何互相交互。
-
标签:SELinux为系统中的每个对象(包括文件、进程)和主体(用户、进程)分配安全标签。标签通常由类型、角色和级别组成,这允许SELinux精确控制访问权限。
-
TE(Type Enforcement):类型强制是SELinux策略的核心部分,基于对象和主体的类型来决定访问权限。例如,一个拥有特定类型的进程可能只被允许访问具有特定类型的文件。
-
RBAC(Role-Based Access Control):基于角色的访问控制允许根据用户的角色分配权限,这意味着用户的访问权限取决于其角色而不是身份。
-
MLS(Multi-Level Security):多级安全是一种用于处理不同安全级别信息的策略,确保只有授权的用户可以访问特定安全级别的数据。
总结:用户只分配【需要】的最小权限,进程只访问【需要】的资源,网络服务只能开启需要的端口。
运行模式
SELinux有两种主要的运行模式:
- Enforcing:在执行模式下,SELinux将强制实施其安全策略,阻止未经授权的访问,并记录所有违反策略的尝试。
- Permissive:许可模式下,SELinux不会强制实施策略,但会记录所有违反策略的活动,这通常用于调试和创建新的策略规则。
案例
-
防止Web服务器访问敏感文件:假设有一个运行在Apache上的Web服务器,通过SELinux可以配置策略,使得即使Web服务器被黑客入侵,黑客也无法访问位于非公开目录的敏感文件。例如,SELinux可以限制Apache进程只能访问
/var/www
目录,而不能访问/home
或/etc
目录中的文件。 -
限制数据库服务器的网络访问:在数据库服务器上,SELinux可以用来限制数据库服务(如MySQL或PostgreSQL)只能通过特定的网络端口与客户端通信。即使数据库软件存在漏洞,这也可以防止攻击者通过不正当的端口或协议访问数据库服务。
-
保护邮件服务器:SELinux可以配置策略来限制邮件服务(如Postfix或Sendmail)的文件访问权限和网络行为。这可以防止邮件服务被利用来执行未授权的操作,如访问或修改不应该访问的文件。
-
隔离用户应用:在多用户系统中,SELinux可以用来隔离用户的应用程序,确保它们无法互相干扰或访问彼此的数据。例如,如果一个用户的应用程序被攻击,SELinux可以限制攻击者仅能访问该应用程序的数据,而不能泄露其他用户的信息。
-
限制系统服务的权限:SELinux可以用来限制系统服务的权限,如只允许特定服务访问必要的文件和目录。例如,如果一个系统服务被设计用来写日志,SELinux可以确保该服务仅能写入指定的日志文件目录。
命令
1.检查selinux状态:getenforce
2.立即切换运行状态:setenforce【0,1】【宽松,强制】
3.设置开机自动配置:默认为Enforcing状态
1.修改配置文件:vim /etc/selinux/config
2.SELINUX=disabled 或 permissive