linux ---- SELinux详解1

一、访问控制简介

1、自主访问控制系统(Discretionary Access Control,DAC)

自主访问控制系统(Discretionary Access Control,DAC)是 Linux 的默认访问控制方式,也就是依据用户的身份和该身份对文件及目录的 rwx 权限来判断是否可以访问。不过,在 DAC 访问控制的实际使用中我们也发现了一些问题:

  • root 权限过高,rwx 权限对 root 用户并不生效,一旦 root 用户被窃取或者 root 用户本身的误操作,都是对 Linux 系统的致命威胁。
  • Linux 默认权限过于简单,只有所有者、所属组和其他人的身份,权限也只有读、写和执行权限,并不利于权限细分与设定。
  • 不合理权限的分配会导致严重后果,比如给系统敏感文件或目录设定 777 权限,或给敏感文件设定特殊权限——SetUID 权限等。
  • 2、强制访问控制(Mandatory Access Control,MAC)

强制访问控制(Mandatory Access Control,MAC)是通过 SELinux 的默认策略规则来控制特定的进程对系统的文件资源的访问。也就是说,即使你是 root 用户,但是当你访问文件资源时,如果使用了不正确的进程,那么也是不能访问这个文件资源的。

传统的 Linux 系统安全,采用的是 DAC(自主访问控制方式),而 SELinux 是部署在 Linux 系统中的安全增强功能模块,它通过对进程和文件资源采用 MAC(强制访问控制方式)为 Linux 系统提供了改进的安全性。SELinux 的 MAC 并不会完全取代 DAC,恰恰相反,对于 Linux 系统安全来说,它是一个额外的安全层,换句话说,当使用 SELinux 时,DAC 仍然被使用,且会首先被使用,如果允许访问,再使用 SELinux 策略;反之,如果 DAC 规则拒绝访问,则根本无需使用 SELinux 策略。
例如,若用户尝试对没有执行权限(rw-)的文件进行执行操作,那么传统的 DAC 规则就会拒绝用户访问,因此,也就无需再使用 SELinux 策略。

2、SELinux MAC的优点

相比传统的 Linux DAC 安全控制方式,SELinux 具有诸多好处,比如说:

  • 它使用的是 MAC 控制方式,这被认为是最强的访问控制方式;
  • 它赋予了主体(用户或进程)最小的访问特权,这也就意味着,每个主体仅被赋予了完成相关任务所必须的一组有限的权限。通过赋予最小访问特权,可以防止主体对其他用户或进程产生不利的影响;
  • SELinux 管理过程中,每个进程都有自己的运行区域(称为域),各进程仅运行在自己的域内,无法访问其他进程和文件,除非被授予了特殊权限。
  • SELinux 可以调整到 Permissive 模式,此模式允许查看在系统上执行 SELinux 后所产生的印象。在 Permissive 模式中,SELinux 仍然会记录它所认为的安全漏洞,但并不会阻止它们。

3、SELinux 示例

例如,Web 服务器守护进程(httd)正在监听某一端口上所发生的事情,而后进来了一个请求查看主页的来自 Web 浏览器的简单请求。由于不会受到 SELinux 的约束,httpd 守护进程听到请求后,可以完成以下事情:
根据相关的所有者和所属组的rwx权限,可以访问任何文件或目录;
完成存在安全隐患的活动,比如允许上传文件或更改系统显示;
可以监听任何端口的传入请求。

但在一个受 SELinux 约束的系统上,httpd 守护进程受到了更加严格的控制。仍然使用上面的示例,httped仅能监听 SELinux 允许其监听的端口。SELinux 还可以防止 httpd 访问任何没有正确设置安全上下文的文件,并拒绝没有再 SELinux 中显式启用的不安全活动。

因此,从本质上讲,SELinux 最大程序上限制了 Linux 系统中的恶意代码活动。

二、SELinux 的工作模式

SELinux 提供了 3 种工作模式:Disabled、Permissive 和 Enforcing,而每种模式都为 Linux 系统安全提供了不同的好处。

1、Disable工作模式(关闭模式)

在 Disable 模式中,SELinux 被关闭,默认的 DAC 访问控制方式被使用。关闭 SELinux 的方式也很简单,只需编辑配置文件 /etc/selinux/config,并将文本中 SELINUX= 更改为 SELINUX=disabled 即可,重启系统后,SELinux 就被禁用了。

2、Permissive工作模式(宽容模式)

在 Permissive 模式中,SELinux 被启用,但安全策略规则并没有被强制执行。当安全策略规则应该拒绝访问时,访问仍然被允许。然而,此时会向日志文件发送一条消息,表示该访问应该被拒绝。

SELinux Permissive 模式主要用于以下几种情况:

  • 审核当前的 SELinux 策略规则;
  • 测试新应用程序,看看将 SELinux 策略规则应用到这些程序时会有什么效果;
  • 解决某一特定服务或应用程序在 SELinux 下不再正常工作的故障。

某些情况下,可使用 audit2allow 命令来读取 SELinux 审核日志并生成新的 SELinux 规则,从而有选择性地允许被拒绝的行为,而这也是一种在不禁用 SELinux 的情况下,让应用程序在 Linux 系统上工作的快速方法。

3、Enforcing工作模式(强制模式)

从此模式的名称就可以看出,在 Enforcing 模式中, SELinux 被启动,并强制执行所有的安全策略规则。

三、配置与命令

配置文件路径 /etc/selinux/config

1、配置

SELINUX

# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
#指定SELinux的运行模式。有enforcing(强制模式)、permissive(宽容模式)、disabled(不生效)三种模式

2、命令

setenforce 选项;

  • 0: 切换成 permissive(宽容模式);
  • 1: 切换成 enforcing(强制模式);

getenforce 查看系统当前 SELinux 的工作模式

### Linux GitLab 使用教程图文详解 #### 一、环境准备 确保服务器已准备好并可以访问互联网。对于CentOS 7.2来说,更新系统软件包到最新状态是非常重要的[^2]。 ```bash sudo yum update -y ``` #### 二、安装依赖项 为了使GitLab正常工作,在开始之前还需要安装一些必要的依赖库。这一步骤同样适用于其他基于Red Hat的企业级Linux发行版。 ```bash sudo yum install curl policycoreutils-y ``` #### 三、配置防火墙与SELinux设置 如果启用了firewalld,则需开放HTTP(S)端口;另外还需调整SELinux策略以允许GitLab运行所需权限。 ```bash # 开放80,443端口 sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo systemctl reload firewalld # 设置SELinux为permissive模式 setenforce 0 sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config ``` #### 四、下载并安装GitLab社区版(CE) 通过官方提供的脚本可以直接获取最新的稳定版本,并完成整个安装流程。 ```bash curl https://packages.gitlab.com/install/repositories/gitlab-ce/script.rpm.sh | sudo bash sudo EXTERNAL_URL="http://your_domain" yum install -y gitlab-ce ``` > **注意**: 将`your_domain`替换为你实际使用的域名或IP地址。 #### 五、初始化配置向导 首次启动时会自动进入图形化界面引导用户进行初始设定,按照提示操作即可快速完成基本参数定义。 ![Initial Setup](https://docs.gitlab.com/ee/administration/install/linux_repository.html) #### 六、日常管理和维护指南 - 访问Web控制台:浏览器输入指定URL登录,默认管理员账号密码可在日志文件中找到。 - 备份数据:定期执行备份命令保存重要资料以防意外丢失。 - 升级服务:遵循官方文档说明安全地升级至新版本保持功能同步。 ```bash # 查看默认root用户的临时密码 cat /etc/gitlab/initial_root_password # 执行全量备份 gitlab-rake gitlab:backup:create # 更新GitLab实例 sudo apt-get update && sudo apt-get upgrade -y ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值