首页 > 系统相关 >红帽SELinux资料-翻译---第三章-Targeted策略

红帽SELinux资料-翻译---第三章-Targeted策略

时间:2023-08-03 19:59:13浏览次数:41  
标签:httpd Targeted SELinux 用户 --- 受限 root 运行

 

 

 

 

红帽企业 Linux 7 SELinux

用户和管理员指南

 

 

翻译者:李天聪       


 

 

第三章     Targeted策略

Targeted策略是红帽企业Linux的默认SELinux策略。当使用targeted策略时,目标进程运行在受限的域中,非目标进程运行在不受限的域中。例如,默认情况下,登录的用户运行在unconfined_t域,由init启动的系统进程运行在unconfined_service_t域;这两个域都是非受限的。

可执行和可写内存检查可能适用于受限域和非受限域。然而默认情况下,在不受限制的域中运行的主体可以分配可写内存并执行它。这些内存检查可以通过设置布尔值来启用,这允许 SELinux 策略在运行时修改。布尔配置将在后面讨论。

3.1 受限进程

在红帽企业Linux中,几乎所有在网络上侦听的服务,如sshd或httpd,都是受限的。此外,大多数以root用户身份运行并为用户执行任务的进程,例如 passwd程序,也是受限的。当进程被限制时,它会在自己的域中运行,例如在httpd_t域中运行的httpd进程。如果受限进程被攻击者破坏,由于SELinux策略配置,攻击者对资源的访问和可能造成的损害是有限的。

完成以下步骤以确保已启用SELinux,并且系统已准备好执行以下示例:

  如何验证SELinux状态

1)      确认SELinux已启用,运行在enforcing模式下,并且使用targeted策略。正确的输出应类似于下面的输出:

 

关于更改SELinux模式的详细信息,请参见第4.4节 “SELinux状态和模式的永久更改”。

2)      以root用户的身份,在/var/www/html目录下创建一个文件:

 

3)      输入下面的这条命令来查看这个新文件的SELinux安全上下文:

 

默认情况下,在红帽企业Linux中,Linux用户不受限制地运行,这就是testfile文件被标记为unconfined_u的原因。RBAC 用于进程,而不是文件。角色对文件来说没有意义;object_r角色是用于文件的(在持久存储和网络文件系统)。在/proc目录下,与进程相关的文件可能使用system_r角色。httpd_sys_content_t类型:允许httpd进程访问此文件。

下面的示例演示了SELinux如何防止Apache HTTP服务器 (httpd)读取未正确标记的文件,例如供Samba使用的文件。这是一个例子,并且不应在生产中使用。它假设安装了httpd和wget软件包,使用SELinux的targetd策略,并且 SELinux 在enforcing模式下运行。

例子:受限进程

1)      以root身份启动httpd守护进程:

 

确认服务正在运行。输出应包括以下信息(你电脑的打印应该仅时间戳不同):

 

2)      切换到您的Linux用户具有写入访问权限的目录,然后输入以下内容命令。除非对默认配置进行了更改,否则此命令将成功:

 

3)      chcon命令能够重新标记文件;但是,当系统重新标记时,此类标签更改不会继续存在。对于在文件系统重新标记后继续存在的永久更改,请使用semanage程序,稍后将讨论。现在以root身份输入以下命令把类型改为Samba使用的类型:

 

输入下面这条命令来查看更改的结果

 

4)      请注意,当前的DAC权限允许httpd进程访问testfile。现在进入一个你的linux用户有写权限的目录,然后输入以下命令。除非有更改默认配置时,此命令将失败:

 

5)      以root用户的身份删除testfile

 

6)      最后,如果你不需要用httpd,就用root账户输入下面的命令把它关掉

 

此示例演示了SELinux附加的安全性。尽管DAC规则允许httpd进程在步骤2中对testfile的访问,但是因为该文件被标记为httpd进程无权访问的tpye,SELinux拒绝了这个访问。

如果auditd的守护程序正在运行,则会在/var/log/audit/audit.log中记录类似于以下内容的错误:

 

       此外,类似于以下内容的错误将记录到/var/log/httpd/error_log:

 

3.2 非受限进程

非受限进程运行在不受约束的域中,例如,由init启动的非受限服务最终运行在unconfined_service_t域中,由内核执行的非受限服务最终运行在kernel_t域中,由非受限Linux用户执行的非受限服务最终运行在unconfined_t域中。对于非受限进程, SELinux策略规则被应用了,不过在非受限域中运行的进程几乎被允许访问所有的类。运行在非限域中的进程将回退到仅使用DAC规则的状态。如果一个非限制进程被攻击,SELinux不会阻止攻击者访问系统资源和数据,但是,当然了, DAC规则仍然在生效。SELinux是DAC规则之上的安全增强功能-而并不是把它替换掉了。

要确保SELinux启用了,并且系统已准备好执行以下示例,参考第3.1节 “受限进程”中所述的例子 “如何验证SELinux 状态”流程。

以下示例演示了Apache HTTP服务器(httpd)如何访问预期数据供Samba在不受限制的情况下使用。请注意,在红帽企业 Linux 中,httpd 进程默认情况下在受限httpd_t域中运行。这是一个示例,不应在生产中使用。它假设安装了httpd,wget,dbus和audit包,SELinux使用targeted策略,并且SELinux运行正在enforcing模式下。

  一个非限制进程的例子:

1)      以root用户输入下面的命令,将testfile改为Samba使用的类型:

 

查看修改的结果:

 

2)      输入以下命令来确认httpd进程有没有运行,如果打印与下面这个相同,则代表没有运行:

 

如果输出与上面这个图片不同,则执行下面的命令来把httpd程序停掉:

 

3)      要使httpd进程不受限制地运行,请以 root 身份输入以下命令以更/usr/sbin/httpd文件的类型,转换为不转换为受限域的类型:

 

4)      确保/usr/sbin/httpd被标记为bin_t;

 

5)      以root用户,启动httpd进程,并确认它成功的启动了:

 

 

6)      输入下面的命令,可以看到httpd运行在unconfined_service_t域:

 

7)      进入你的linux用户有写权限的目录,然后执行下面的命令。除非改过默认配置,否则这个命令应该能够成功执行:

 

尽管根据selinux策略httpd进程无法访问标有samba_share_t类型的文件,但是httpd在不受限制的unconfined_service_t域中运行,因此回退到只使用DAC规则的状态了,因此,wget命令能够成功执行。如果httpd一直运行在受控的httpd_t域中,wget 命令将失败。

8)      restorencon程序用于恢复文件的默认SELinux上下文。以root用户身份输入以下命令恢复/usr/sbin/httpd的默认SELinux上下文

 

确认/usr/sbin/httpd标记为httpd_exec_t类型:

 

9)      以root用户身份输入以下命令重新启动httpd。重新启动后,确认httpd是在受限域httpd_t中运行:

 

 

10)   以root用户身份,删掉testfile

 

11)   如果你不用httpd服务的话,以root用户身份,运行下面这条命令把它停掉:

 

这个例子展示了当受限进程被攻击后,数据能够被保护(受SELinux的保护),以及当非受限进程被攻击后,数据更容易被攻击者获取(不受SELinux保护)。

3.3 受限和非受限用户

基于SELinux策略,每一个linux用户都能够映射到一个SELinux用户,这就使得linux用户能够继承这个SELinux用户的限制。Linux用户与SELinux用户之间的映射关系,可以运行“semanage login -l”命令来查看(需要以root用户身份来运行):

 

     在红帽企业Linux中,Linux用户默认被映射到__default__,它会被映射到SELinux用户“unconfined_u”。下面这行定义了这个默认映射关系:

 

以下过程演示如何将新的Linux用户添加到系统以及如何映射该用户到 SELinux用户unconfined_u。它假设root用户不受限制地运行,就像在红帽企业Linux中默认情况下一样:

  将新的Linux用户映射到SELinux用户unconfined_u

1)      以root用户身份,执行下面这条命令,创建一个新的linux用户newuser:

 

2)      以root用户身份,运行下面这条命令,给新用户设置一个密码:

 

 

3)      注销当前会话,然后以新用户newuser登录,当你登录时,“pam_selinux”PAM模块会自动将Linux用户映射到SELinux用户(在这个例子中,是unconfined_u),并设置生成SELinux安全上下文。然后linux用户的shell基于这个安全上下文启动。输入下面这条命令来查看linux用户(shell)的安全上下文:

 

4)      如果你不需要newuser用户,先退出newuser的会话,然后登录你自己的账户,以root用户身份运行“userdel -r newuser”命令,这条命令将删除newuser用户,以及它的家目录。

受限和非受限Linux用户需要受制于可执行和可写内存检查,并且也受到MCS和MLS的限制。

运行下面这条命令可以查看所有可用的SELinux用户:

 

注意:seinfo命令由“setools-console package”包提供,这个包默认是不安装的。

       如果一个非受限的linux 用户执行了一个应用程序,这个应用程序被SELinux策略定义为可以从unconfined_t域转换为自己的受限域,那么这个非受限的linux用户则将依然受限与对这个受限域的限制。这样做的优势在于,即使一个linux用户运行在非受限状态,应用程序依然是受限的。一个应用的漏洞造成的危害能够被规则限制。

标签:httpd,Targeted,SELinux,用户,---,受限,root,运行
From: https://www.cnblogs.com/qscfyuk/p/17604281.html

相关文章

  • Linux环境编程day01--库与环境变量
    UNIX系统简介:1970年于美国贝尔实验室,作者肯.汤普逊和丹尼斯.里奇UNIX是最早的多用户、多任务、支持多种CPU架构,高稳定性、高可靠性、高安全性既能构建大型关键型业务系统的服务器(银行、电信公司等),也能支持移动嵌入式设备Minix是一种开源的基于微内核架构的类UNIX计算机操作......
  • 504 Gateway Time-out
       现状:nginx代理某api接口,业务是统计一年数据,计算量较大,耗时2分钟,导致页面返回504 http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_read_timeoutSyntax:proxy_read_timeout time;Default:proxy_read_timeout60s;Context:http, serv......
  • SQL 标准历史(比如 isolation in SQL-92)
      https://learnsql.com/blog/history-of-sql-standards/ HastheSQLstandardchangedinthe30+yearsit'sbeenaround?Absolutely!LearnaboutthejourneyfromSQL-86tomodernSQL,today’sstandarddatalanguage.SQLwas createdintheearly1970s......
  • 红帽SELinux资料-翻译---第二章-SELinux安全上下文
         红帽企业Linux7SELinux用户和管理员指南  翻译者:李天聪        第一章    SELinux安全上下文进程和文件标有包含附加信息的SELinux上下文,例如SELinux用户、角色、类型以及级别(可选)。运行SELinux时,所有这些信息都用于做出访问控制......
  • Wi-Fi STA/STA 并发
    Android12引入了Wi-FiSTA/STA并发功能,使设备可同时连接到两个Wi-Fi网络。此可选功能支持以下功能。Make-before-break:设备会在断开现有连接之前连接到新的Wi-Fi网络。这使得Wi-Fi网络之间的切换更加顺畅并发仅本地和互联网连接:设备会连接到仅限本地的网络,而不中断设......
  • 动态规划--选择问题
    1.路径选择1.1.HouseRobber给一个自然数数组,在不允许相邻取的情况下,求可取的最大和Input:[1,2,3,1]Output:4取1,3和为4方法:设定状态dp[n]表示前n项在不能相邻取情况下最大和取法的最大和(结果),要用前面信息表示dp[n]\[dp[n]=max(value[n]+dp[n-2],dp[n-1])\]defr......
  • [论文阅读笔记] AnoShift - A Distribution Shift Benchmark for U
    AnoShift:ADistributionShiftBenchmarkforUnsupervisedAnomalyDetection主要贡献点:用t-SNE,OptimalTransportDatasetDistance分析了网络流量中用于无监督异常检测任务的大型常用数据集(Kyoto-2006+),并证明其受到分布偏移的影响。我们提出了基于时间顺序的基准测试,重......
  • 【python系列】手把手教你在pypi发布自己的包-他人可pip下载
    前言最近在写一个接口执行引擎用作于接口自动化测试平台的核心。看了挺多资料,做了挺多事情,学了挺多乱七八糟的知识,笔记记得乱糟糟的,以至于一直没有整理发文(啊其实我就是懒),各位见谅。正文如下目前该引擎可以通过pip直接下载,但内容我还在写,预计这个月会完成(大概也许可能可以。)pypi发......
  • npm - 报错:found XXX vulnerabilities (XXX low, X moderate),run `npm audit fix` to
    完整报错我正准备 npm 装包,结果失败了,并提示如下报错信息:found808vulnerabilities(804low,4moderate)run`npmauditfix`tofixthem,or`npmaudit`fordetails解决直接按照后面提示的命令执行:npmauditfix解决xxxpackagesarelookingforfundingn......
  • ios自动化-Xcode、WebDriverAgent环境部署
    环境准备:Mac电脑一台(更新到最新的macOS,此文档使用的为macOS12.3.1,Intel芯片)Xcode最新稳定版(此文档使用的为13.4.1)IOS设备(此文档使用了10.3.3-15.1均有,且都安装WebDriverAgent成功)保证自己电脑有大于25G的可用内存空间,Xcode很大!Xcode下载https://developer.apple.com/xcode/r......