目录:
1.selinux
selinux----内核级加强型防火墙
-
selinux是一种控制服务安全,是内核上面的一个插件,也叫内核加强型防火墙
-
selinux默认安装在fedora和red hat enterprise linux上,其他版本可以通过安装包获得
-
selinux在类型强制服务器中采用了基于角色的访问控制概念:
针对文件:会对系统中每个文件添加安全上下文(context)
针对进程:会对系统中每个进程添加安全上下文(context)
会在系统服务上设定sebool开关
当进程的安全上下文和文件的安全上下文不匹配时,那么进程无法访问此文件
sebool会限制服务的不安全功能,如果需要用此功能,必须调整sebool的值 -
selinux主要是对服务功能的影响和文件的影响
2.管理selinux
2.1selinux对系统的影响
<实验准备:纯净的环境>
rm -fr /etc/vsftpd/vsftpd.conf ##删除vsftpd.conf
yum reinstall vsftpd -y ##重新安装vsftpd
确保匿名用户可以上传
vim /etc/vsftpd/vsftpd.cong
anon_upload_enable=YES ##开启匿名用户上传
systemctl restart vsftpd ##重启vsftpd
chmod 755 /var/ftp/pub ##修改pub目录权限
chgrp ftp /var/ftp/pub ##添加ftp到组
确保本地用户可以上传
chmod +w /home/student/ ##给student用户家目录添加写权限
touch /mnt/westosfile
mv /mnt/westosfile /var/ftp
lftp 172.25.60.251 ##可以看到westosfile发布成功
vim /etc/sysconfig/selinux
SELINUX=enforcing ##修改selinux为enforcing
reboot ##重启
lftp 172.25.60.251 ##匿名用户不可上传
lftp 172.25.60.251 -u student ##student用户无法上传
touch /mnt/westosfile1
mv /mnt/westosfile /var/ftp
lftp 172.25.60.251 ##可以看到westosfile1没有发布成功
ls -Z /var/ftp ##查看ftp目录中文件的上下文
ps axZ|grep vsftpd ##查看vsftpd的安全上下文
注意:
特定标签的程序只能读取和操作特定标签的文件,标签不配套访问就会被禁止,这就是为什么看不到westosfile1的原因
对程序本身的影响是给程序本身增加了一个开关,开关的名字叫做sebool
2.2selinux的开关
配置文件 :vim /etc/sysconfig/selinux
参数 | 说明 |
---|---|
SELINUX=enforcing | selinux开启,级别为强制(对文件安全上下文的设定),切换到此状态时必须重起reboot |
SELINUX=permissive | selinux开启,级别为警告 |
SELINUX=disabled | selinux关闭,级别为禁用 |
setenforce 0 ##表示Permissive 警告状态
setenforce 1 ##表示Enforcing 强制状态
getenforce ##查看selinux的状态
注意:当selinux从开到关(或从关到开),需要reboot重起系统
2.3临时更改文件安全上下文-----适用于更改文件
chcon -t public_content_t 文件 ##将文件的标签改成与发布目录一致
验证是临时修改
2.4 永久更改文件安全上下文
将目录加载到安全上下文中
semanage fcontext -l | grep /var/ftp ##查看系统已经为ftp默认设置的安全上下文
semanage fcontext -a -t public_context_t '/westos(/.*)?' ##将自己建立的目录和目录里面的内容加上安全上下文
semanage fcontext -l | grep /westos ##查看系统已经为ftp默认设置的安全上下文
restorecon -RvvF /westos/ ##刷新westos目录
2.5 sebool设定
本地用户上传
getsebool -a|grep ftp ##查看ftp的sebool
setsebool -P ftp_home_dir on ##开启本地用户的上传,-P表示永久开启
匿名用户上传
setsebool -P ftpd_anon_write on ##开启匿名用户可写,-P表示永久开启
semanage fcontext -a -t public_context_rw_t '/var/ftp/pub(/.*)?' ##将pub目录和目录里面的内容加上读写功能
restorecon -RvvF /var/ftp/pub ##刷新pub目录
2.6 selinux排错
> /var/log/messages 清空日记文件
> /var/log/audit/audit.log
清空ftp里除了pub目录的文件
touch /mnt/file
mv /mnt/file /var/ftp/
lftp 172.25.254.126 ##ftp目录中没有file文件
解决方法
cat /var/log/audit/audit.log ##查看日志文件发现file被拒绝
cat /var/log/messages ##查看解决方案(message提供解决方案)
<没有setroubleshoot的情况>