linux基础篇(十八):基于Redhat7系统的SElinux及安全上下文

xiaoxiao2025-10-08  10

SElinux

SElinux简介

SELinux的全称是Security Enhanced Linux, 就是安全加强的Linux。在SELinux之前,root账号 能够任意的访问所有文档和服务;如果某个文件设为777,那么任何用户都可以访问甚至删除;这种 方式称为DAC(主动访问机制),很不安全。 DAC 自主访问控制: 用户根据自己的文件权限来决定对文件的操作,也就是依据文件的own, group,other/r,w,x权限进行限制。Root有最高权限无法限制。r,w,x权限划分太粗糙。无 法针对不同的进程实现限制。 SELinux则是基于MAC(强制访问机制),简单的说,就是程序和访问对象上都有一个安全标签(即 selinux上下文)进行区分,只有对应的标签才能允许访问。否则即使权限是777,也是不能访问 的。

SElinux相关操作

1、Selinux状态查看与配置: Selinux的配置文件位置:/etc/selinux/config,它还有个链接在/etc/sysconfig/selinux 两个文件作用是一样的 使用config文件来配置selinux(通过配置文件修改selinux的状态属于永久修改,要重启系统才生效) SELINUX=enforcing #此项定义selinux状态。 #enforcing—是强制模式系统受selinux保护。就是你违反了策略,你就无法继续操作下去 #permissive—是提示模式系统不会受到selinux保护,只是收到警告信息。permissive就是Selinux有效,但是即使你违反了策略的话它让你继续操作,但是把你的违反的内容记录下来(警告信息) #disabled—禁用selinux。

SELINUXTYPE=targeted #此项定义selinux使用哪个策略模块保护系统。targeted只对apache ,sendmail, bind,postgresql,nfs,cifs等网络服务保护。 以上策略配置都放置在/etc/selinux目录中,目录和策略名称相同 2、selinux相关命令查看和修改状态:(属于立即生效但临时性的) sestatus 查询selinux工作状态 selinuxenabled检查selinux是否开启,配合echo $?.传回值是0为开启,1为关闭 getenforce查看selinux的状态 setenforce设定selinux运行状态,1开启(Enforcing),0关闭(Permissive)

安全上下文

简介

在SELinux中,访问控制属性叫做安全上下文。所有客体(文件、进程间通讯通道、套接字、网络 主机等)和主体(进程)都有与其关联的安全上下文,一个安全上下文由三部分组成:用户(u)、 角色(r)和类型(t)标识符。但我们最关注的是第三个部分,标识符。 当程序访问资源时,主体程序必须要通过selinux策略内的规则放行后,就可以与目标资源进行安 全上下文的比对,若比对失败则无法存取目标,若比对成功则可以开始存取目标,最终能否存取目 标还要与文件系统的rwx权限的设定有关。

修改安全上下文

实验前请将selinux设置为enforcing 1:在/mnt里面新建一个文件 2:mv /mnt/file /var/ftp/ (必须用mv,mv移动过去的文件的安全上下文不会改变,cp复制过去的文件安全上下文会改变为目标目录的安全上下文) 3:lftp ip 4:ls 无法看到从/mnt目录移动到/var/ftp中的文件 5:直接在/var/ftp/目录中新建一个文件,lftp ip ————> ls 可以看到直接建立的文件,因为直接建立的文件的安全上下文与目录相同 6:用 semanage fcontext -l | grep /var/ftp 或者 ls -Z 查看目录或者文件的安全上下文 7:临时修改安全上下文类型

chcon 意思是change context -t type 类型 -R recursive 递归(特别适用于改变某个目录下所有文件的context) -u user -r role

我们用ls -Z /var/ftp可以看到,刚刚从/mnt目录移动过来的文件file的安全上下文和直接在/var/ftp目录下创建的file2文件的安全上下文不同,现在我们就来将file的安全上下文修改为和file2文件相同的安全上下文 chcon -t 安全上下文的类型 文件名 8:lftp ip ----> ls 修改了安全上下文的文件此时可以看到 以上的修改在selinux重启(disabled后重启在enforcing再次重启)后会还原 9:永久修改安全上下文(我们需要将安全上下文写入 semanage fcontext中) a.创建一个目录 b.修改这个目录的安全上下文为public_content_t 3:重启selinux ####将selinux设定为disabled后重启系统,再将selinux设定为enforcing再重启系统## 4:ls -Zd 安全上下文还原 5:再次修改木录安全上下文 6:semanage fcontext -l | grep 目录 ### 查看目录安全上下文,因为没有将安全上下文写入 semanage fcontext,所以看不到 7:写入semanage fcontext: semanage fcontext -a(添加) -t(添加的类型) public_content_t ‘目录(/.*)?’ 8:restorecon -FvvR /test/ 同步安全上下文 9:重启selinux查看安全上下文

给功能添加开关(SElinux)

SELinux 布尔值是更改 SELinux 策略行为的开关。 SELinux 布尔值是可以启用或禁用的规则。安全管理员可以使用 SELinux 布尔值来调整策略 , 以有选择地进行调整,许多软件包都具有 man page *_selinux(8), 其中详细说明了所使用的一些布尔值 ; man -k ‘_selinux’ 可以轻松地找到这些手册 getsebool -a | grep 服务名称 eg:getsebool -a | grep ftpd 实验: 1、本地用户登陆lftp lftp 172.25.66.11 -u student 2、put /etc/passwd ###显示553 权限过小 3、getsebool -a | grep ftp 查看ftp的布尔值 我们需要将ftp_home_dir这一项设置为on即为打开状态 4、setsebool -P ftp_home_dir on 将ftp布尔值设为1,即打开(on) 5、接下来再做一次测试 lftp 172.25.66.11 -u student—>ls—>put /etc/passwd

排错

1:> /var/log/audit/audit.log > /var/log/message 2:touch /mnt/westos 3:mv /mnt/westos /var/ftp/ 4:浏览器中输入 ftp://172.25.66.11 看不到刚刚移动过来的文件,是什么原因呢,让我们来排一下错 5:cat /var/log/audit/audit.log ###错误地方 安全上下文不同 cat /var/log/message ####改正方法 6:restorecon -v /var/ftp/* 将安全上下文同步 7:在浏览器重新查看 ## ftp://172.25.66.11 同步了westos的安全上下文之后就可以看到westos这个文件了

服务默认端口的设定

1:安装httpd yum install httpd -y 2:vim /etc/httpd/conf/httpd.conf 第42行 设定一个端口值 3:systemctl restart httpd 此时会重启失败,将selinux设置为0(警告模式)则会重启成功 4:semanage port -l | grep http 查看端口 此时是看不到添加的端口值6666的,需要添加到配置文件 5:semanage port -a -t http_port_t -p tcp 设定的端口值 ###将要设置的端口值添加到配置文件 6:systemctl restart httpd 重启(此时selinux设置为0或者1都可以重启)

转载请注明原文地址: https://www.6miu.com/read-5037575.html

最新回复(0)