SELinux(Security-Enhanced Linux)是美国国家安全局在 Linux 开源社区的帮助下开发的
一个强制访问控制(MAC,Mandatory Access Control)的安全子系统。RHEL 7 系统使用 SELinux
技术的目的是为了让各个服务进程都受到约束,使其仅获取到本应获取的资源。
例如,您在自己的电脑上下载了一个美图软件,当您全神贯注地使用它给照片进行美颜
的时候,它却在后台默默监听着浏览器中输入的密码信息,而这显然不应该是它应做的事情
(哪怕是访问电脑中的图片资源,都情有可原)。SELinux 安全子系统就是为了杜绝此类情况而
设计的,它能够从多方面监控违法行为:对服务程序的功能进行限制(SELinux 域限制可以确
保服务程序做不了出格的事情);对文件资源的访问限制(SELinux 安全上下文确保文件资源
只能被其所属的服务程序进行访问)。
SELinux 服务有三种配置模式,具体如下。
enforcing:强制启用安全策略模式,将拦截服务的不合法请求。
permissive:遇到服务越权访问时,只发出警告而不强制拦截。
disabled:对于越权的行为不警告也不拦截。
SELinux 服务的主配置文件中,定义的是 SELinux 的默认运行状态,可以将其理解为系
统重启后的状态,因此它不会在更改后立即生效。可以使用 getenforce 命令获得当前 SELinux
服务的运行模式:
可以用 setenforce [0|1]命令
修改 SELinux 当前的运行模式(0 为禁用,1 为启用)。注意,这种修改只是临时的,在系统
重启后就会失效:
semanage 命令用于管理 SELinux 的策略,格式为“semanage [选项] [文件]”。
SELinux 服务极大地提升了 Linux 系统的安全性,将用户权限牢牢地锁在笼子里。
semanage 命令不仅能够像传统 chcon 命令那样—设置文件、目录的策略,还可以管理网络
端口、消息接口。使用 semanage 命令时,经常用到的几个
参数及其功能如下所示:
-l 参数用于查询;
-a 参数用于添加;
-m 参数用于修改;
-d 参数用于删除。
在某些情况下,使用httpd服务访问书数据的时候,返回错误页面,我们就要思考是不是,httpd 服务中突然开启的这项个人用
户主页功能到底有没有被 SELinux 域默认允许呢?
getsebool 命令查询并过滤出所有与 HTTP 协议相关的安全策略。其中,off 为
禁止状态,on 为允许状态。
setsebool 命令来修改 SELinux 策略中各条规则的布尔值
通过这两种命令是httpd服务显示正常,如果我们建立的是一个个人主页不希望其他人看到我们可以建立一个私人账号:
可以使用htpasswd 命令生成密码数据库。-c 参数表示第一次生成;后面再分
别添加密码数据库的存放文件,以及验证要用到的用户名称(该用户不必是系统中已有的
用户)来设置权限。