SElinux(Security-Enhanced Linux)

SELinux:

        是由美国国家安全局开发的,目的避免资源的误用,它的作法是以最小权限原则(principle of least privilege)为基础,在Linux核心中使用Linux安全模块(Linux Security Modules)。它并非一个Linux发布版,而是一组可以应用在类Unix操作系统(如Linux、BSD等的修改。SELinux不是一个安全软件,也不是为了替代密码,防火墙及其他安全系统,不是一种安全的解决方法,只是一种加强现有安全解决办法。

传统的文件与账户的关系:

自主式访问控制DAC(Discretionary Access Crontrol)基本上就是依据进程的拥有者与文件的-RWX权限决定有无存取的能力,

不过这种机制有几个问题不安全:
    1.root用户拥有最高权限,如果某只进程被他人取得root的权限,那么这个进程就可以进行任何资源操作。
    2.用户可以取得进程来变更文件的访问权限,如果某个目录的权限被设定为777,那么任何人都会对目录有读取存储的权限。
以策略规则定制特定进程的读取特定文件的权限:委任访问方式,MAC(Mandatory acess Control)
MAC设定下,进程的活动空间变小,他可以针对特定进程与特定的文件资源进行权限的控制,即使是root用户,针对不同的进程,你所能取得的权限也不一定是root。控制的主体由用户变成了进程,这个主体也不能随便使用系统资源,应为每一个文件也有针对该主体进程设定的权限。如此一来整个系统那么多进程、文件,一项一项的控制就没有穷尽,所以SElinux也就是提供一些预设的Ploicy,并在该ploicy内提供多个rule,那你选择启动控制规则。

SELinux 的运作模式
主体(subject):
        SELinux 主要管理的就是进程
目标(object):
        主体进程能否存取目标资源,一般是文件
策略(policy):
        Centos里面提供两种策略:
            targeted:针对网络服务限制多,针对本机限制较少,是预设的政策
            strict:完整的SELinux限制,限制方面比较严格。
安全性文本(security context):

        主体和目标的安全性文本必须一致才能顺利存取,这个安全性文本(scurity context)有点类似于文件系统的RWX,安全性的文件内容与设定非常重要。


查看安全性文本:ls -Z
如图1:
三个冒号组成的三个字段
Identify:role:type
身份识别(Identify):相当于账号方面的身份识别
            .root;表示root身份账号
            .object_r:代表是文件或目录资源
            .system_u:代表是进程
类型(type):(最重要!)
            在默认的targeted政策中,Identify与Role字段基本不重要,基本,一个主体进程能不能读取到这个文件,月类型有关而类型的文件与进程的定义不太想听听
                .type:在文件资源(object)上面称为类型;
                .domain:在主体进程(sbuject)则称为领域


进程与文件SELinux type 字段的相关性

SELinux支持三种模式:强制模式(enforcing)、宽容模式(permissive)、关闭模式(disable)
查看SELinux模式:getenforce
查看策略(policy):sestatus [-vb]
配置SELinux配置文件: /etc/selinux/config
    并且到核心有无关闭SELinux(如果关闭会出现 selinux=0 )/boot/grup/menu.lst
切换enforcing与permissive之间:setenforce [0|1]
重设SELinux安全性文本
    chcon [-R] [-t type] [-u user] [-r role] 文件还是user
        chccon是透过直接指定的方式来处理安全的类型资料
    restorecon [Rv] 文件或目录 使用预设的安全性文本还原

你终有一天会被 SELinux 阻止你访问所需的东西,而且要解决这个问题。SELinux 拒绝某个文件、进程或资源被访问的基要原因有数个:

  • 一个被错误标签的文件。
  • 一个进程在错误的 SELinux 安全性脉络下运行。
  • 政策出错。某个进程要访问一个在编写政策时意料不到的文件,并产生错误信息。
  • 一个入侵的企图。
头三个情况我们可以处理,而发出警报及通告正正是第四个情况的预期表现。
SELinux所需的服务
    所有的SELinux相关进程都是以se开头的
        .setroubleshoot 错误日志写入 /var/log/messsage
            这个服务会将关于SELinux的错误日志和解决方法记录到/var/log/message里
                setroubleshoot默认开机自动启动,我们可以使用chkcconfig setroubleshoot on 命令开启
        .aduit 会将SELinux发生的错误写入/var/log/aduit/aduit.log中
                与setroubleshoot不同,aduit会将很多的SELinux的信息都记录下来,而不知是错误日志,因此登录/var/log/audit/audit.log,非常庞大的,SELinux提供了audit2why来指令帮助查询信息。
SELinux的政策与规则管理
策略的查询:
        seinfo [-Atrub]
            seinfo -t |grep httpd 找到含有httpd字样的安全性文本
        sesearch [-a] [-s 主体类别] [-t 目标类别] [-b 布尔值]
            sesearch -a -t httpd_sys_content_t
这两个命令输出的策略数据都是放置在/etc/selinux/targeted_or_strict里面
布尔值的修改
subject 与object能否有存取的权限是与布尔值有关,查询系统的布尔值可以透过:seinfo -b
    getsebool [-a] [布尔条款]:查询某一个或多个布尔值的是关系还是开启状态
默认目录的安全性文本查询与修改
        semanage {login|user|port|interface|fcontext|translation}
            fcontext :主要用在安全性文本的用途,-l 为查询
            -a:增加的意思,可以增加一些目录的安全文本的文本类型的设定
            -m:修改好
            -d:删除的意思

chcon 这个指令可以用来更改一个或多个文件与目录的 SELinux 安全性脉络,正如 'chown' 或 'chmod' 可以用来更改一个文件的拥有者或标准权限。

就以 Apache 为例,假设你想修改 DocumentRoot 以另一个位置来伺服网页,替换缺省的/var/www/html 目录。譬如说我们在 /html 创建了一个目录(又或者挂载点),然后在那里创建一个index.html 档:

# mkdir /html
# touch /html/index.html
# ls -Z /html/index.html
-rw-r--r--  root root user_u:object_r:default_t        /html/index.html
# ls -Z | grep html
drwxr-xr-x  root root user_u:object_r:default_t        html 

我们可以见到 /html 这个目录以及/html/index.html 这个文件都拥有缺省的 default_t 安全性脉络类型。如果我们打开浏览器并尝试查看该页,SELinux 将会正确地拒绝它们被访问并记录错误,因为该目录与文件拥有不正确的安全性脉络。我们须要设置供 Apache 使用的 httpd_sys_content_t 正确安全性脉络。

# chcon -v --type=httpd_sys_content_t /html
context of /html changed to user_u:object_r:httpd_sys_content_t
# chcon -v --type=httpd_sys_content_t /html/index.html
context of /html/index.html changed to user_u:object_r:httpd_sys_content_t
# ls -Z /html/index.html
-rw-r--r--  root root user_u:object_r:httpd_sys_content_t    /html/index.html
# ls -Z | grep html
drwxr-xr-x  root root user_u:object_r:httpd_sys_content_t    html 

我们同样也可以利用 -R 这个回递标旗同时将它们的脉络设置:

# chcon -Rv --type=httpd_sys_content_t /html 


其他的命令及配置方法我这里就不再列举的,这里给两个链接一个是CentOS的简体document,一个事redhat原版英文版,
百度不到的好东西,希望不会被强奸。
Centos:http://wiki.centos.org/zh/HowTos/SELinux#head-23b32edada724aa8a29ab04685b53de6455e08a0
redhat:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7-Beta/html/SELinux_Users_and_Administrators_Guide/sec-What-is-new-in-RHEL-7.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: selinux-utils是一个开源软件包,提供了与SELinux(安全增强型Linux)相关的工具和库。 要找到selinux-utils源码,你可以遵循以下步骤: 1. 打开任何一个网页浏览器,进入一个搜索引擎,如Google、Baidu、Github等。 2. 在搜索引擎的搜索框中键入"selinux-utils源码"或"selinux-utils GitHub"。这将让搜索引擎帮你找到与selinux-utils相关的资源。 3. 在搜索结果中,通常会有指向源码存储库的链接。点击其中一个链接,比如Github的链接。 4. 进入源码存储库后,你可以找到selinux-utils的源代码文件。它们通常以.c或.cpp为扩展名。 5. 在源码存储库中,你还可以找到其他与selinux-utils相关的信息,如文档、问题跟踪和讨论。 请注意,selinux-utils源码可能在不同的代码托管平台(如GitHub、GitLab等)或者开发者的个人网站上。确保选择了可信的源,并使用适当的下载方式获取源码。 ### 回答2: selinux-utils 是一个用于管理 SELinux 的工具集,包含了一些常用的 SELinux 相关工具和库文件。 selinux-utils 的源代码可以在 SELinux 官方的代码库中找到。你可以通过以下方式获取 selinux-utils 的源码: 1. 从官方源获取:访问 SELinux 项目的官方网站(https://github.com/SELinuxProject/selinux-utils)。在该页面中,你可以找到 selinux-utils 的源码仓库链接。你可以使用 git 命令克隆整个仓库到本地,以获取 selinux-utils 的完整源码。 2. 使用包管理器获取:如果你在使用 Linux 发行版,你可以尝试使用包管理器来获取 selinux-utils 的源码。不同的发行版可能有不同的包管理器,可以通过在终端中运行适当的命令来查找 selinux-utils 的包,并使用包管理器获取其源码。 请注意,获取源码需要一定的技术知识和经验。如果你只是想使用 selinux-utils,而不是为了开发或修改它,你可以直接通过软件包管理器安装预编译的二进制文件,而无需获取或编译源码。 ### 回答3: selinux-utils 源码是 Security Enhanced Linux (SELinux) 的一部分,它包含了对 SELinux 系统的管理工具。在大部分标准的 Linux 发行版中,selinux-utils 源码通常是通过源代码包(source package)的形式提供的。在一般的 Linux 系统中,你可以通过以下步骤来获取 selinux-utils 源码: 1. 打开终端,以 root 用户或拥有管理员权限的用户身份登录。 2. 使用适用于你所使用的 Linux 发行版的包管理器,比如 apt、yum、dnf、zypper、pacman 等,执行以下命令: - 对于 Ubuntu 或 Debian 系统:sudo apt-get source selinux-utils - 对于 CentOS 或 Fedora 系统:sudo dnf download --source selinux-utils 或 sudo yumdownloader --source selinux-utils - 对于 openSUSE 系统:sudo zypper source-install selinux-utils - 对于 Arch Linux 系统:使用 AUR 或者自定义 PKGBUILD 构建 3. 上述命令将会下载 selinux-utils 源代码压缩包,并解压到当前目录中。 注意:具体的命令和过程可能会因你所使用的 Linux 发行版和版本而有所不同,上述命令只是提供了一些常见的示例。你也可以在 SELinux 官方网站(https://github.com/SELinuxProject/selinux-utils)上找到最新版本的 selinux-utils 源码,并根据官方文档提供的指引进行下载和编译。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值