1.基本 SELINUX 安全性概念
SELINUX(Security Enhanced Linux),意思是安全增强型Linux, 是可保护你系统安全性的额外机制
在某种程度上 , 它可以被看作是与标准权限系统并行的权限系统。在常规模式中 , 以用户身份运行进程 , 并且系统上的文件和其他资源都设置了权限 (若要访问文件 ,你必须具有普通访问权限和 SELinux 访问权限。因此 , 即使以超级用户身份root 运行进程 , 根据进程以及文件或资源的 SELinux 安全性上下文可能拒绝访问文件或资源) 标签
2.SElinux安全上下文访问规则
web服务器的http进程设置了SElinux上下文system_u:system_r:httpd_t 标签。该上下文的重要部分是第三个用冒号分隔的字段,SElinux类型:httpd_t
系统上的文件和资源也设置了 SElinux上下文标签 , 并且重要的部分是 SElinux类型。例如 ,/var/www/html 中的文件具有类型 httpd_sys_content_t 。 /tmp 和 /var/tmp 中的文件通常具有类型 tmp_t
Selinux 策略具有允许以 httpd_t 身份运行的进程访问标记为httpd_sys_content_t 的文件的规则。没有规则允许这些进程访问标记有 tmp_t 的文件 , 因此将拒绝这些访问 , 即使常规文件权限指出应该允许这些访问
3.SElinux模式
Disabled | 不警告不拒绝/关闭状态 |
Enforcing | 强制模式,如果不符合会拒绝访问 |
Permissive | 警告模式,不符合会警告但是可以访问 |
管理selinux状态
更改 selinux的开机状态
在配置文件vim /etc/sysconfig/selinux
中修改:
修改后必须重启reboot,否则不生效
查看selinux状态
更改SELINUX 模式
简单更改,只能在enforcing和permissive两种状态之间切换
更改安全上下文
临时更改安全上下文:
chcon -t public_content_t file文件名
更改前
更改后
更改目录以及目录下所有文件的
改安全上下文:
chcon -t public_content_t /ftpdir/ -R
永久性修改安全上下文:
通过命令semanage fcontext -l | grep /var/ftp
可以查看目录以及目录中文件的安全上下文
更改安全上下文
semanage fcontext -a -t public_content_t '/ftpdir(/ . *)?'
执行命令restorecon -FvvR /ftpdir
让他生效
通过lftp也可以访问到
管理SElinux的布尔值:
- SELinux 布尔值是更改 SELinux 策略行为的开关, 是可以启用或禁用的规则
- 安全管理员可以使 SELinux 布尔值来调整策略 , 以有选择地进行调整
- getsebool 用于显示布尔值 , setsebool 用于修改布尔值
- setsebool -P 修改 SELinux 策略 , 以永久保留修改
例:匿名用户上传和下载
首先修改配置文件/etc/vsftpd/vsftpd.conf,开启上传和下载服务,重启vsftpd服务:
修改默认发布目录权限,组:
开启服务对应的bool值:
设置布尔值(1开启,0关闭)也可以用on和off控制
更改默认发布目录的安全上下文,增加读写权限:
测试:在selinux为enforcing的状态下匿名用户可以很顺利的上传和下载文件
例:本地用户上传和下载
首先,在vsftpd配置文件中开启相应的服务,并重启vsftpd服务
修改ftp相应服务的bool值:
测试:可以看到,本地用户student可上传可删除可下载可建目录
监控 SELinux 冲突
- 必须安装 setroubleshoot-server 软件包 , 才能将 SELinux消息发送至 /var/log/messages
- setroubleshoot-server 侦听 /var/log/audit/audit.log 中的审核信息并将简短摘要发送至 /var/log/messages
- 摘要包括 SELinux 冲突的唯一标识符 ( UUIDs ), 可用于收集更多信息
- Sealert -l UUID 用于生成特定事件的报告。Sealert-a/var/log/audit/audit.log 用于在该文件中生成所有事件的报告
- 当setroubleshoot-server 软件包存在时,客户端如果访问失败,cat /var/log/messages日志中会有解决方案
- 如果卸载setroubleshoot-server 软件包 日志中没有解决方案
/var/log/audit/audit.log | selinux日志存放位置 |
/var/log/messages | selinux解决方案 |
安装软件:
yum install setroubleshoot-server.x86_64
清空日志:
> /var/log/audit/audit.log
>/var/log/messages
查看ftp://172.25.254.205 发现看不到westos
cat /var/log/audit/audit.log 查看问题出在哪里
cat /var/log/messages 查看解决方案
检测: