牛!内核级加强防火墙——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的状态必须得经过重启计算机才可以得到转换)
重启后我们可以用命令getenforce查看selinux的状态
说到状态,这里有必要解释一下selinux的三种状态
状态 | 解释 |
---|---|
Enforcing | 警告并拒绝 |
Permissive | 警告并允许 |
Disabled | 关闭 |
注:产生的警告信息会保存在/varlog/message或/var/log/audit/audit.log
在我们了解了其状态后我们还需要了解一下安全上下文(security context)
ls -Z filename ##查看文件的安全上下文
ps -Z pid ##查看进程的安全上下文
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是否可见
临时修改安全上下文:
chcon -t public_content_t /var/ftp/ljz
永久修改安全上下文:
semanage fcontext -a -t public_content_t '/ljz(/.*)?' ##永久修改文件的安全上下文
semanage fcontext -l | grep /ljz ##查看上下文标示
restorecon -FvvR /ljz/ ##刷新/ljz的上下文标示F(刷新)vv(显示文件标签的更改,并将结果显示到屏幕上,)R(递归)
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 ##发现可以上传文件
匿名用户写权限开启
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
3.SElinux状态间的切换
setenforce 0 ##改为Permissive,只警告,不报错
setenforce 1 ##改为Enforcing,警告且强制
4.SElinux排错
查看日志 cat /var/log/messages
会有报错与解决办法
我们可以轻易的发现报错,并且查看日志会出现解决办法
然而能提出解决办法的时软件 setroubleshoot-server-3.2…
可用yum remove 卸载软件,则无解决办法
报错的日志则只能在/var/log/audit/audit.log,但是无解决方案
注:通过世界爱你对比,发现并无新的报错信息产出
注:我们可以发现/var/log/audir/audit.log有显示报错,但并无解决方案