欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux系统selinux的初级管理

程序员文章站 2022-04-26 15:41:21
...

一、selinux

SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是
Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux
默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。 SELinux
是 2.6 版本的 Linux 内核中提供的强制访问控制(MAC)系统。对于目前可用的 Linux安全模块来说,SELinux
是功能最全面,而且测试最充分的,它是在 20 年的 MAC 研究基础上建立的。SELinux
在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制概念。[1] 大部分使用 SELinux 的人使用的都是
SELinux 就绪的发行版,例如 Fedora、Red Hat Enterprise Linux (RHEL)、Debian或
Centos。它们都是在内核中启用 SELinux 的,并且提供一个可定制的安全策略,还提供很多用户层的库和工具,它们都可以使用
SELinux 的功能。 SELinux是一种基于 域-类型
模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。任何程序对其资源享有完全的控制权。假设某个程序打算把含有潜在重要信息的文件扔到/tmp目录下,那么在DAC情况下没人能阻止他。SELinux提供了比传统的UNIX权限更好的访问控制。

实验准备
用im /etc/sysconfig/selinux
disabled-->enforcing             ##重启两次

1 getenforce
  setenfoce 0 | 1                ## 0 -> permisve
                                 ## 1 -> enforcing
2 级别管理
-->vim /etc/sysconfig/selinux    ##selinux配置文件开机状态
selinux=disabled                 ##关闭模式
selinux=Enforcing                ##强制模式
selinux=Permisissive             ##警告模式
-->reboot                        ##必须重启才会加载内核

1修改selinux配置文件,设置关闭模式,需要开机能启动
Linux系统selinux的初级管理

2修改成Enforcing强制模式,用getenforce查看依旧是关闭模式,需要开启才能加载内核
Linux系统selinux的初级管理

3强制和警告模式下可以相互装化,用setenforce命令
Linux系统selinux的初级管理

二、安全上下文

所有的操作系统访问控制都是基于与主体和客体相关的访问控制属性的。在SELinux中,访问控制属性杯称作安全上下文。所有的客体(文件,进程间通信,通信管道,套接字,网络主机等)和主体(进程)有一个和他们相关的单一安全上下文。一个安全上下文有三个元素:用户,角色和类型标识符。指定和显示一个安全上下文常用的格式如下:
用户(user):角色(role):类型标识符(type)
每一个元素的字符串标识符杯定义在SELinux的策略语言中,策略语言的细节后面慢慢讨论。就现在来说,仅仅理解一个有效的安全上下文一定要有一个有效的用户,角色和类型标识符,并且标识符被策略书写者定义。每一个标识符的命名空间都是正交的。(所以,举个例子,用户,角色和类型有相同的字符串标识符是可以的,但是不推荐使用。)
检查安全上下文:
SELinux通过添加-Z选项修改了系统命令来展示主体和客体的安全上下文。例如,ls -Z 显示了文件系统对象的安全上下文,ps -Z展示了进程的安全上下文。另外一个有用的命令是 id,他展示你的shell的安全上下文(也就是说,你的当前的用户,角色和类型)。下面的例子展示了一个运行在SELinux中的shell的安全上下文。

mv /mnt/westosfile /var/ftp/pub/
> 用mv不用CP,因为cp需要考虑到文件权限问题,可以用-p解决,为了方便操作就采用mv
相关命令
ps auxz | grep vsftpd  ##过滤
ls -Z                  ##显示安全上下文,Z(大写)

1临时更改
choot -t             ##一次性定制安全上下文,执行restorecon刷新后会还原
restorecon - <r|f> <dir|file> -R   ##刷新安全上下文
格式
chcon   -t  安全上下文             文件    
chcon   -t  public_content_t    /hellofile  -R  

1在selinux强制模式下的安全上下文管理
Linux系统selinux的初级管理

2修改安全上下文之后可以用lftp匿名查看
Linux系统selinux的初级管理

3临时更改之后刷新
Linux系统selinux的初级管理

永久更改改变目录安全上下文的步骤
1 semanage fcontext -a -t public_content_t'/hello(/.*)/'                                               ##永久设置westos的内核安全上下文
-->semanage fcontext -l | grep hello ##列出目录安全上下文
2 restorecon -RvvF /hello/           ##重新加载内核安全上下文列表
3 ls -lZ /hello/                     ##查看目录的的安全上下文

1过滤查看ftp的安全上下文格式
Linux系统selinux的初级管理

2永久设置,重新加载,测试该功能实现Linux系统selinux的初级管理
Linux系统selinux的初级管理

三、管理 selinux布尔值

布尔值 布尔值是“真” True 或“假” False 中的一个。动作脚本也会在适当时将值 True 和 False 转换为 1 和
0。布尔值经常与动作脚本语句中通过比较控制脚本流的逻辑运算符一起使用。
在逻辑中,真值或逻辑值是指示一个陈述在什么程度上是真的。在计算机编程上多称作布尔值。
在selinux就是权限开关的,即是否开放。

1 getsebool -a | grep ftp               ##列出布尔值
2 chmod u+w /home/hello/                ##给该目录所有人w的权限
-->setsebool -P ftp_home_dir 1 | on     ##修改布尔值
-->getsebool -a | grep ftp              ##查看修改后的布尔值状态

1过滤并列出ftp在selinux强制模式下的布尔值
Linux系统selinux的初级管理

2修改ftp_home_dir的布尔值
Linux系统selinux的初级管理