1.简介:
SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是基于内核级的系统安全防护,是 Linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。若要访问文件 , 你必须具有普通访问权限和 SELINUX 访问权限。因此 , 即使以超级用户身份 root 运行进程 , 根据进程以及文件或资源的 SELinux 安全性上下文可能拒绝访问文件或资源限 ) 标签。
SELinux系统比起通常的Linux系统来,安全性能要高的多,它通过对于用户,进程权限的最小化,即使受到攻击,进程或者用户权限被夺去,也不会对整个系统造成重大影响。
3.查看以及更改selinux 的模式
查看selinux模式:
命令:getenforce
在开启selinux的情况下 设置selinux 的模式
命令:setenforcing 0 设置为警告模式
setenforcing 1 设置为强制模式
更改selinux 的开机状态:
修改文件:vim /etc/sysconfig/selinux
可以修改为 SELINUX=disabled 来关闭selinux ,修改文件后重启内核才能生效。
SELINUX=enforcing 开启,强制模式
SELINUX=Permissive 开启,警告模式
SELINUX=disabled 关闭selinux
4.安全上下文
简介安全上下文:
所有的操作系统访问控制都是基于与主体和客体相关的访问控制属性的。在SELinux中,访问控制属性杯称作安全上下文。所有的客体(文件,进程间通信,通信管道,套接字,网络主机等)和主体(进程)有一个和他们相关的单一安全上下文。一个安全上下文有三个元素:用户,角色和类型标识符。
在标准Linux中,主体的进程访问属性是通过进程结构体提供的在linux内核中所有进程的真实有效的用户ID和组ID。这些属性被内核所保护着,并且经过一些列的控制方式来设置。包括登录进程和setuid程序。对于客体来说,文件的索引节点包含着一系列的访问模式位和文件的用户ID和组ID,前者是基于三个读/写/可执行位的集合来实现控制访问,这三个分别代表文件拥有者,文件组和其他任何人。后者决定了文件的所有者和组来决定对于一个给定的访问尝试应该使用哪一个位集合。
在SELinux中,访问控制属性他基本上就是安全上下文。所有的客体和主体有一个相关的安全上下文。标准Linux使用进程的用户/组ID,文件访问模式位和文件用户/组ID来同意或者是拒绝访问,SELinux使用进程和客体的安全上下文来进行访问控制。更具体的说,由于SELinux的主要访问控制特征是TE,即类型强制策略,安全上下文中的类型标识符被用来决定访问。
SELinux是在标准Linux之上添加的类型强制机制。也就是说标准Linux和SELinux访问控制都必须满足才能访问客体。所以,例如,我们有SELinux对于文件的一个写权限,但是没有标准linux的写权限,我们依然不能想文件中写入数据。
查看安全上下文:
命令 ls -Z
修改安全上下文:(重启selinux 后会失效)
临时修改
例如:chcon -t public_content_t /mnt -R
我们将匿名用户默认登陆的目录改为 /danger
先查看目录/danger 的安全上下文 :为 default
然后我们用匿名用户的登陆ftp, 没有看见目录下的东西
然后我们修改/danger 的安全上下文,然后我们再登陆ftp就可以看见/danger 下面的文件
永久修改安全上下文:
semanage fcontext -l 列出所有的安全上下文
semanage fcontext -a -t public_content_t '文件路径(/.*)?'
semanage -FvvF /目录/ 重新加载立即生效
5.管理selinux布尔值
SELinux 布尔值是更改 SELinux 策略行为的开关。SELinux 布尔值是可以启用或禁用的规则。安全管理员可以使用 SELinux 布尔值来调整策略
getsebool -a | grep 服务名称 #查看布尔值
setsebool P 功能bool值 on|off #开启或关闭服务
设置ftp 可以再家目录里执行动作
然后我们用本地用户登陆,就可以上传文件了