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

论坛 期权论坛 脚本     
匿名技术用户   2020-12-21 23:46   55   0

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

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP