1.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 在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制概念`
(1)针对文件,会对系统中每个文件添加安全上下文(context)
(2)针对进程,会对系统中每个进程添加安全上下文(context)
(3)会在系统服务上设定sebool开关
(4)当进程的安全上下文和文件的安全上下文不匹配时,那么进程无法访问此文件
(5)sebool会限制服务的不安全功能,如果需要用此功能,必须调整sebool的值
- selinux的影响:
一是对服务功能的影响;
二是对文件的影响
2.管理selinux
selinux的开关
vim /etc/sysconfig/selinux
代码 | 说明 |
---|---|
SELINUX=enforcing | selinux开启,级别为强制(对文件安全上下文的设定)<切换到此状态时,必须reboot重启> |
SELINUX=permissive | selinux开启,级别为警告 |
SELINUX=disabled | selinux关闭,级别为禁用 |
setenforce=0/1 | 更改selinux当前的级别,0–警告,1–强制 |
getenforce | 查看selinux的状态 |
**注意:**当selinux从关到开(或从开到关),需要reboot重启系统
临时更改文件安全上下文—适用于更改文件
chcon -t 安全上下文 文件
chcon -t public_content_t /var/ftp/zxyos2
注意:chcon 命令临时修改安全上下文后,系统reboot重启,安全上下文会恢复到默认
永久更改文件安全上下文
semanage fcontext -l
semanage fcontext -a -t public_content_t /var/ftp/ /*永久更改文件安全上下文*/
restorecon -Rvvf /var/ftp/ /*刷新*/
注意:semanage 命令永久修改安全上下文后,系统reboot重启,安全上下文不会恢复到默认
selinux设置为enforcing匿名用户仍然可以登陆ftp服务器
匿名用户:
步骤一:使用 getsebool -a | grep ftp 查看所有ftp的功能的状态
步骤二:setsebool -P ftpd_anon_write on 让匿名用户可以上传 (-P 永久)
当 ftpd_anon_write -->off 时,匿名用户是不能上传的
当 ftpd_anon_write -->on 时,匿名用户可以上传
getsebool -a | grep ftp
setsebool -P ftpd_anon_write on
getsebool -a | grep ftp
步骤三:chcon -t public_content_rw_t /var/ftp/pub 让匿名用户具有读写这个目录的权力(必须设置)
chcon -t public_content_rw_t /var/ftp/pub
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
lftp 172.25.254.118
ls
cd pub/
put /etc/group /*上传文件成功*/
enforcing状态下本地用户家目录上传和删除文件
getsebool -a | grep ftp
setsebool -P ftp_home_dir on /*将本地用户的家目录永久开启*/
getsebool -a | grep ftp
lftp 172.25.254.118 -u student
ls
put /etc/group /*上传文件成功*/
设置好后,本地用户便可直接在enforceing状态下在自己家目录下上传和删除文件
与selinux相关的两个日志
/var/log/messages: 系统日志,提供解决方案,需要安装服务才能提供解决方案
/var/audit/audit.log:selinux真正的日志,不提供解决方案
yum search selinux
yum install setroubleshoot-server.x86_64 -y
实验步骤如下:
(1)有setroubleshoot这个软件服务时:
步骤一:
> /var/log/messages /*清空日志文件*/
cd /mnt/
touch /mnt/file
mv /mnt/file /var/ftp/
步骤二:
lftp 172.25.254.118
ls /*并未查看到 mv 过来的 file 文件*/
cat /var/log/messages /*查看日志可知,/mnt 下的 file 文件已转移到 /var/ftp 下*/
restorecon -vR /var/ftp/ /*刷新*/
ls -Z /var/ftp/ /*查看到安全上下文一致*/
lftp 172.25.254.118
ls /*可查看到文件 file*/
(2)没有setroubleshoot 时,日志不提供解决办法:
yum remove setroubleshoot-server.x86_64 -y /*实验前先移除已有的setroubleshoot*/
> /var/log/messages
cd /mnt/
touch /mnt/file
mv /mnt/file /var/ftp/
lftp 172.25.254.118
ls /*并未查看到 mv 过来的 file 文件*/
cat /var/log/messages /*此时日志不提供解决办法*/
yum install setroubleshoot-server.x86_64 -y /*完成实验后安装setroubleshoot*/