牛!内核级加强防火墙——SElinux

什么是SElinux?

SELinux是一种基于 域-类型 模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。任何程序对其资源享有完全的控制权。假设某个程序打算把含有潜在重要信息的文件扔到/tmp目录下,那么在DAC情况下没人能阻止他。SELinux提供了比传统的UNIX权限更好的访问控制。
大部分使用 SELinux 的人使用的都是 SELinux 就绪的发行版,例如 Fedora、Red Hat Enterprise Linux (RHEL)、Debian或 Centos。它们都是在内核中启用 SELinux 的,并且提供一个可定制的安全策略,还提供很多用户层的库和工具,它们都可以使用 SELinux 的功能。
SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。由于我们的系统是rhel-server7,所以系统也是默认安装了SElinux,故我们在接下来的学习中就不用再去安装它。

SElinux的学习

学习环境:

同上一章,先rm -fr /etc/vsftpd/*
再重新安装vsftped
然后修改vim /etc/sysconfig/selinux  中将disable改为enforcing(只有这一个地方可以开启和关闭selinux)
修改后reboot重启(注:selinux的状态必须得经过重启计算机才可以得到转换)

牛!内核级加强防火墙——SElinux
牛!内核级加强防火墙——SElinux
牛!内核级加强防火墙——SElinux
重启后我们可以用命令getenforce查看selinux的状态
牛!内核级加强防火墙——SElinux
说到状态,这里有必要解释一下selinux的三种状态

状态 解释
Enforcing 警告并拒绝
Permissive 警告并允许
Disabled 关闭

注:产生的警告信息会保存在/varlog/message或/var/log/audit/audit.log
在我们了解了其状态后我们还需要了解一下安全上下文(security context)

ls -Z filename						##查看文件的安全上下文
ps -Z	pid							##查看进程的安全上下文

牛!内核级加强防火墙——SElinux
context分为5个部分,以:分割

user role type sensitivity category
身份识别 文件,进程,用户 数据类型 安全级别 划分的不同分类
unconfined_u不受限的用户或文件system_u受限的进程或文件 object_r为文件,system_r为进程和用户 何种类型进程访问何种文件 s0最低,只有在msl才有意义 最后这一位意义不大,也可以省略

SElinux在系统中的作用

1.安全上下文的影响

在/mnt目录下建立文件ljz
将ljz移动到/var/ftp目录下
在/var/ftp/目录下建立一个文件fire,查看文件的安全上下文
lftp去验证不同的安全上下文lftp是否可见

牛!内核级加强防火墙——SElinux
牛!内核级加强防火墙——SElinux
临时修改安全上下文:

chcon -t public_content_t /var/ftp/ljz

牛!内核级加强防火墙——SElinux
牛!内核级加强防火墙——SElinux
永久修改安全上下文:
牛!内核级加强防火墙——SElinux

semanage fcontext -a -t public_content_t '/ljz(/.*)?'		##永久修改文件的安全上下文
semanage fcontext -l | grep /ljz 						##查看上下文标示
restorecon -FvvR /ljz/										##刷新/ljz的上下文标示F(刷新)vv(显示文件标签的更改,并将结果显示到屏幕上,)R(递归)

牛!内核级加强防火墙——SElinux
2.SElinux影响服务功能:
SElinux会给所有额服务加一个布尔值(开关)
bool值:1–>on开启 0–>off关闭
普通用户写权限开启

getsebool -a | grep ftp查看权限的是否开启
setsebool -P ftp_home_dir on 		##-P 为永久设置
lftp 172.25.254.117 -u studnet 		##发现可以上传文件

牛!内核级加强防火墙——SElinux
牛!内核级加强防火墙——SElinux
匿名用户写权限开启

1.vim /etc/vsftpd/vsftpd.conf
打开 anon_upload...(29行左右的)
2.chmod 775 /var/ftp/pub
chgrp ftp /var/ftp/pub
3.getsebool -a | grep ftp
setsebool -P ftpd_anon_write on
4.semanage fcontext -a -t public_content_rw_t /var/ftp/pub
restorecon -RvvF /var/ftp/pub

牛!内核级加强防火墙——SElinux
牛!内核级加强防火墙——SElinux
牛!内核级加强防火墙——SElinux
牛!内核级加强防火墙——SElinux
3.SElinux状态间的切换

setenforce 0		##改为Permissive,只警告,不报错
setenforce 1 		##改为Enforcing,警告且强制

牛!内核级加强防火墙——SElinux
4.SElinux排错

查看日志 cat /var/log/messages
会有报错与解决办法

牛!内核级加强防火墙——SElinux
牛!内核级加强防火墙——SElinux
我们可以轻易的发现报错,并且查看日志会出现解决办法

然而能提出解决办法的时软件 setroubleshoot-server-3.2…
可用yum remove 卸载软件,则无解决办法
报错的日志则只能在/var/log/audit/audit.log,但是无解决方案

牛!内核级加强防火墙——SElinux
牛!内核级加强防火墙——SElinux
牛!内核级加强防火墙——SElinux
注:通过世界爱你对比,发现并无新的报错信息产出
牛!内核级加强防火墙——SElinux注:我们可以发现/var/log/audir/audit.log有显示报错,但并无解决方案