Linux中SElinux的解决方案
SElinux介绍
- 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 在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制概念
- 由于selinux涉及安全上下文的问题,因此会使很多操作的结果不正确,如果要使用selinux,就需要修改对应文件的安全上下文,非常不方便,所以在企业中很少使用
selinux的开关
给虚拟机配置共享yum源
给火墙加上永久允许ftp服务,再使用yum源安装lftp软件
给火墙加上永久允许ftp
查看selinux的状态
selinux对服务访问文件以及功能有影响
enforceing与permissive二者可以直接进行切换,但是二者与disabled(关闭selinux)进行切换时要reboot
enforceing | 强制模式 |
---|---|
permissive | 警告模式 |
disabled | 关闭模式 |
在每不安全的功能上面加功能开关(默认关闭),安全性提高,0关闭,1开启(在/var/ftp/pub/能不能上传文件)
不是服务本身不允许,而是selinux不允许
临时更改安全上下文
开启selinux,开启vsftpd,建立文件/mnt/westos1,并且移动到/var/ftp
用匿名用户身份登录,可以看到,不能ls 查看到westos1
但是,/var/ftp/是有westos1文件的
可以看到,/var/ftp/westos1和pub的安全上下文是不一致的
将selinux的级别改为permissive警告模式
再次连接查看发现可以看到westos1文件
再次setenforce 1改为强制模式时,就不能看到westos1文件了
chcon -t 安全上下文 文件
chcon -t public_content_t /var/ftp/westos1 #更改westos1的安全上下文与pub一致
更改了westos1的安全上下文,则可以查看到/var/ftp/westos1
开启selinux,在ftp服务器上也不能上传文件
在配置文件里设置允许匿名用户上传文件
可以看到,不能上传文件
将selinux的状态切换到disabled
重启
可以看到,匿名用户可以上传
永久更改安全上下文
semanage fcontext -l #查看系统默认发布目录设置的标签
建立/westos,在这个目录下创建5个文件
但是我们自己建立的目录与默认发布目录的标签不一致
semanage fcontext -a -t public_content_t ‘/westos(/.*)?’ #将自己建立的发布目录加上标签(目录里面的内容)
restorecon -RvvF /westos/ #刷新使其生效
ftp功能状态的修改
getsebool -a | grep 服务名称 查看指定服务布尔值
getsebool -a | grep ftp 查看ftp服务布尔值
setsebool -P 服务 on|off 在这里on=1 off=0
setsebool -P ftpd_anon_write on 打开匿名用户上传功能
在没修改到on时,匿名用户不能上传
ftpd_anon_write的状态已经修改为on,
chcon -t public_content_rw_t /var/ftp/pub
让匿名用户具有读写这个目录的权力
可以看到,匿名用户上传成功
在enforcing状态下,本地用户家目录上传和删除文件
可以看到,本地用户可以上传文件
本地用户可以删除文件
与selinux相关的日志
/var/log/messagesr 系统日志,提供解决方案
/var/audit/audit.log selinux 真正的日志,不提供解决方案
/var/log/secure 查看登陆系统的用户