基于linux下的selinux强制访问控制

本文介绍了SELinux的基本概念、状态管理和安全上下文。内容包括SELinux的三种状态(enforcing、disabled、permissive)及其切换方法,以及安全上下文对文件和进程访问控制的重要性。通过示例展示了如何查看和修改安全上下文,以及通过semanage和setsebool调整系统功能。同时,提到了SELinux的日志分析和故障排除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         SELinux是Security-Enhanced Linux的简称,SELinux是一种基于 域-类型 模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。

1.selinux状态

SELINUX有 enforcing   disabled    permissive   3种选择

enforcing       //强制,如果违反了策略,则无法继续操作

disabled       //关闭,安全级别最低

permissive   //警告,selinux有效,即使是违法策略,依旧可以继续操作,但是会有警告,查看警告信息:cat /var/log/audit/audit.log

命令查询当前selinux状态:

getenforce

设置selinux的状态:

方式1.编辑配置文件

vim  /etc/sysconfig/selinux        ##在配置文件中修改selinux的状态,

保存退出后需要重启才能使该修改生效

方式2.命令修改:setenforce=0 | 1

setenforce=0            ##设置selinux的状态为permissive

setenforce=1            ##设置selinux的状态为enforcing

注意:该方式对selinux状态的修改是临时的。

命令方式可以对selinux的状态在permissive和enforcing之间进行切换,但是如果要从这两种方式向disabled状态切换时,必须通过编辑配置文件进行修改,并重启生效。

安全上下文的引入:

当selinux处于disabled状态时:

在/mnt 目录下建立目录后移动到默认发布目录下

用匿名用户登陆查看

修改配置文件,将selinux状态修改为enforcing,重启生效

重新在/mnt 目录下建立文件后移动到默认发布目录下

用匿名用户登陆查看:发现并没有看到westofile 文件

查看警告日志:

>  /var/log/audit/audit.log          ###清空警告日志

cat /var/log/audit/audit.log        ###查看警告日志

2.selinux安全上下文

      安全上下文是一个访问控制属性。当安全上下文匹配时,才会被访问允许;若不匹配时则不被允许。在SELinux中,类型标识符是安全上下文中决定访问的主要的部分。

安全上下文基本格式说明:

所有的文件和端口资源和进程都具备安全标签:安全上下文(security context)组成元素:

user:role:type:sesitivity:category,

如user_u:object_r:tmp_t:s0:c0

实际上下文存放在文件系统中,进程、文件、已经用户等都有相应的安全上下文。

查看安全上下文

查看指定文件的安全上下文:ls -Z

查看进程的安全上下文件:

查看用户安全上下文:


上述实验中在远程连接172.25.254.100时看不到/var/ftp/westofile

查看/var/ftp中文件的安全上下文:

ls  -Z  /var/ftp

可以看出westofile的安全上下文和ftp (public_content_t)默认安全上下文不一致,所以远程连接时无法查看该文件。


当selinux 为permissive 状态时,远程连接可以查看安全上下文不同的文件,但依然会有警告

setenforce 0

匿名用户远程连接查看

cat /var/log/audit/audit.log      

修改安全上下文

1. 修改文件的安全上下文

chcon   -t   public_content_t   /var/ftp/westofile

将selinux状态改为enforcing,测试在远程连接172.25.254.100时是否可以看到westofile

2. 修改目录及其内容的安全上下文

chcon   -t   public_content_t    dir  -R

新建目录及其目录下的文件,并将其移动到默认发布目录下

查看目录本身及其内容的安全上下文

修改目录及其内容的安全上下文

此时在远程连接172.25.254.100时是可以看到test1的

永久修改安全上下文

semanage  fcontext  -l      ###内核指定的所有文件的安全上下文的列表 

man semanage fontext         ####查询semanage用法

semanage   fcontext   -a   -t   public_content_t   '/dir(/.*)?'    # #永久修改目录及目录中所有内容的安全上下文

新建目录及其目录下的文件

查看目录本身及其内容的安全上下文

semanage   fcontext   -a   -t   public_content_t   '/dir(/.*)?' 

semanage fcontext -l | grep /dir    ###查看目录本身的安全上下文是不是public_content_t

restorecon  -RvvF   /dir                  ####递归刷新并显示刷新过程

sebool值

        selinux会对我们系统中有些功能加上开关,我们在使用这些功能时,应该先打开开关才可以使用。而selinux布尔值是更改selinux的开关;有时候,selinux的访问权限可选可通过selinux布尔值触发,可以提高系统安全性。

1.查看ftp 的sebool值设置:

getsebool   -a   |   grep   ftp              ###用于显示布尔值,查看进程的开启或关闭情况

可以看出ftpd的各项功能是默认关闭的状态

其中,ftp_home_dir - ->off 表示本地用户上传文件的功能未开启

2.将ftp_home_dir修改为 为开启状态

setsebool  -P  ftp_home_dir  on       ##修改布尔值(开启本地用户上传文件的功能);其中 -P表示 永久修改

getsebool   -a   |   grep   ftp              ###再次查看进程的开启或关闭情况,看是否修改成功

3.此时,测试本地用户是否可以成功上传文件

selinux 的排错

提供日志的插件

setroubleshoot-server.x86_64

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值