CentOS7安装及简单配置(二)

SELinux概念及配置

(一)科普介绍(以下内容来自维基百科中文条目)

安全增强式Linux(SELinux,Security-Enhanced Linux)是一个Linux内核安全模块,其提供了访问控制安全策略机制,包括了美国国防部风格的强制访问控制(Mandatory Access Control,MAC)。

SELinux是一系列添加到多个Linux发行版的内核修改与用户空间工具。其软件架构力图从安全策略中分离出执行安全决策并优化涉及执行安全策略的软件。[2][3]奠基SELinux的核心概念可以追溯回美国国家安全局(NSA)的一些早期项目。

SELinux用户和角色不需要与实际系统用户与角色相关。对每个正在进行的用户或进程,SELinux分配一个三字符串上下文,包含了用户名、角色和域(或者类型)。此系统比通常所需要的系统更灵活:作为规定之一,大多数真实用户享有着相同的SELinux用户名,且所有的访问控制都经由第三个标签——域来进行。在一个进程被允许进入域的情况下必须在策略中配置。命令runcon允许启动进程进入一个显性定义上下文(用户、角色和域)环境中,但如果政策中未允许的话那么SELinux可能会拒绝此请求。

(以下内容来自知乎)

安全上下文是 SELinux 的核心。

安全上下文我自己把它分为「进程安全上下文」和「文件安全上下文」。

一个「进程安全上下文」一般对应多个「文件安全上下文」。

只有两者的安全上下文对应上了,进程才能访问文件。它们的对应关系由政策中的规则决定。

文件安全上下文由文件创建的位置和创建文件的进程所决定。而且系统有一套默认值,用户也可以对默认值进行设定。

需要注意的是,单纯的移动文件操作并不会改变文件的安全上下文。

安全上下文的结构及含义

安全上下文有四个字段,分别用冒号隔开。形如:system_u:object_r:admin_home_t:s0

(二)为何网络上通常建议关闭SELinux而CentOS作为默认开启

在浏览了大量的Blog知乎和红帽网站后,又了解了DAC和MAC的区别,就不难判断出为何大家一般建议关闭SELinux,主要原因有2个,一是SELinux太复杂,说明文档是中文,导致大量的用户看不懂弄不来,干脆一关了事;二是SELinux采用的MAC方式,在设置了用户权限后,并没有设置进程权限,导致很多服务无法启动或者无法访问相应的文件夹,而SELinux默认的规则都是采用的默认设置,需要修改大量的规则才能正确适配目前安装的程序。So 太复杂又太难了会严重影响使用,所以基本上都推荐关闭。

(三)一点建议和感想

对于提供基本服务的服务器,比如文件服务器,HTTP服务器,建议配置SELinux后使用,不要关闭,对于使用的服务较多,而无法一一配置的服务器,建议直接关闭,但是关闭后,要经常的对系统打补丁,设置好其他应用层的安全防护,比如不要采用常用的端口号等,来最大化的避免系统暴露。

(四)常用的命令

常用的操作SELinux命令是通过工具semanage,但是通常系统没有默认安装,使用命令安装这个工具:

1 yum install policycoreutils-python -y

查看某进程的端口号,比如SSH

semanage port -l|grep ssh

添加端口号:

semanage port -a -t ssh_port_t -p tcp 222

删除端口号:

semanage port -d -t ssh_port_t -p tcp 222

查看当前进程的域信息:ps -z

查看文件上下文信息:ls -z

我们的CentOS的SELinux配置文件是存放在 /etc/sysconfig/ 目录下的 selinux 文件,通过修改该文件来确定SELinux的模式,SELinux模式有三种,分别是

enforcing  强制模式:只要是违反策略的行动都会被禁止,并作为内核信息记录

permissive  允许模式:违反策略的行动不会被禁止,但是会提示警告信息

disabled  禁用模式:禁用SELinux,与不带SELinux系统是一样的,通常情况下我们在不怎么了解SELinux时,将模式设置成disabled,这样在访问一些网络应用时就不会出问题了

通过修改配置文件可以设置相应的模式。

setenforce 0     //临时修改SELinux模式为允许模式
setenforce 1     //临时修改SELinux模式为强制模式(该模式为默认模式)

(五)其他知识点

在桌面环境下 SELinux 故障排除工具应该已经弹出来报错了。若是在终端下,可以通过查看 /var/log/messages 日志然后用 sealert -l 加编号的方式查看,或者直接使用 sealert -b 浏览。

日志中一般会介绍修改方式。

猜你喜欢

转载自www.cnblogs.com/5kyRang3r/p/10952249.html