16-. Linux Processes and SELinux

16-. Linux 进程 与 SELinux

一个程序被加载到内存当中运作,那么在内存内的那个数据就被称为进程(process)。进程是操作系统上非常重要的概念, 所有系统上面跑的数据都会以进程的型态存在。

1. 进程(Process)

在 Linux 系统当中:『触发任何一个事件时,系统都会将他定义成为一个进程,并且给予这个进程一个 ID ,称为 PID,同时依据启发这个进程的用户与相关属性关系,给予这个 PID 一组有效的权限设定。』

1.1. 进程 与 程序(process & program)

  • 程序 (program):通常为 binary program ,放置在储存媒体中 (如硬盘、光盘、软盘、磁带等), 为实体文 件的型态存在;

  • 进程 (process):程序被触发后,执行者的权限与属性、程序的程序代码与所需数据等都会被加载内存中, 操 作系统并给予这个内存内的单元一个标识符 (PID),可以说,进程就是一个正在运作中的程序。

1.1.1. 子进程 与 父进程

程序彼此之间是有相关性的,故有父进程与子进程之分。而 Linux 系统所有进程的父进程就是 init 这个 PID 为 1 号的进程。

1.1.2. 进程呼叫

在 Linux 的进程呼叫通常称为 fork-and-exec 的流程!进程都会藉由父进程以复制 (fork) 的方式产生一个 一模一样的子进程, 然后被复制出来的子进程再以 exec 的方式来执行实际要进行的程序,最终就成为一 个子进程的存在。

1.1.3. 系统或网络服务

常驻在内存当中的进程通常都是负责一些系统所提供的功能以服务用户各项任务,因此这些常驻程序就会 被我们称为:服务 (daemon)。

2. 工作管理(job control)

这个工作管理 (job control) 是用在 bash 环境下的,也就是说:『当我们登入系统取得 bash shell 之 后,在单一终端机接口下同时进行多个工作的行为管理 』。

『进行工作管理的行为中, 其实每个工作都是目前 bash 的子进程,亦即彼此之间是有相关性的。 我们无法以 job control 的方式由 tty1 的环境去管理 tty2 的 bash !』

3. 进程管理

  1. 首先,本章一开始就谈到的,我们在操作系统时的各项工作其实都是经过某个 PID 来达成的 (包括你的 bash 环境), 因此,能不能进行某项工作,就与该进程的权限有关了。

  2. 再来,如果您的 Linux 系统是个很忙碌的系统,那么当整个系统资源快要被使用光时, 您是否能够找出最 耗系统的那个进程,然后删除该进程,让系统恢复正常呢?

  3. 此外,如果由于某个程序写的不好,导致产生一个有问题的进程在内存当中,您又该如何找出他,然后将 他移除呢?

  4. 如果同时有五六项工作在您的系统当中运作,但其中有一项工作才是最重要的, 该如何让那一项重要的工 作被最优先执行呢?

  • 进程管理的观察指令有: ps, top, pstree 等等

  • 进程之间是可以互相控制的,传递的讯息 (signal) 主要透过 kill 这个指令在处理

  • 进程是有优先级的,该项目为 Priority,但 PRI 是核心动态调整的,用户只能使用 nice 值去微调 PRI  nice 的给予可以有: nice, renice, top 等指令

4. SELinux 初探

『 Security Enhanced Linux 』的缩写,字面上的意义就是安全强化的 Linux

4.1. SELinux 运作模式

  • 主体 (Subject)

SELinux 主要想要管理的就是进程,因此你可以将『主体』跟本章谈到的 process 划上等号;

  • 目标 (Object)

主体进程能否存取的『目标资源』一般就是文件系统。因此这个目标项目可以等文件系统划上等号;

  • 政策 (Policy)

由于进程与文件数量庞大,因此 SELinux 会依据某些服务来制订基本的存取安全性政策。这些政策内还会 有详细的规则 (rule) 来指定不同的服务开放某些资源的存取与否。在目前的 CentOS 7.x 里面仅有提供三个 主要的政策,分别是:

    • targeted:针对网络服务限制较多,针对本机限制较少,是预设的政策;

    • minimum:由 target 修订而来,仅针对选择的进程来保护!

    • mls:完整的 SELinux 限制,限制方面较为严格。 建议使用预设的 targeted 政策即可。

  • 安全性本文 (security context)

我们刚刚谈到了主体、目标与政策面,但是主体能不能存取目标除了政策指定之外,主体与目标的安全性 本文必须一致才能够顺利存取。 这个安全性本文 (security context) 有点类似文件系统的 rwx 啦!安全性本 文的内容与设定是非常重要的! 如果设定错误,你的某些服务(主体进程)就无法存取文件系统(目标资源), 当然就会一直出现『权限不符』的错误讯息了!

4.2. SELinux 启动与关闭

  • SELinux 启动与关闭的配置文件在: /etc/selinux/config

  • SELinux 的启动与观察: getenforce, sestatus 等指令

  • 重设 SELinux 的安全性本文可使用 restoreconchcon

  • 在 SELinux 有启动时,必备的服务至少要启动 auditd 这个!

  • 若要管理预设的 SELinux 布尔值,可使用 getsebool, setsebool 来管理!

Last updated