selinux内核级加强型防火墙
作用:CONTEXT安全上下文(每个文件)pub_content_t ##文件影响
程序和文件安全上下文必须一致,否则程序访问文件被selinux拒绝
每个目录安全上下文不一致 ls -Z /mnt /var
getsebool 不安全开关bool值,程序部分功能不可使用 ##服务影响
selinux的功能(1)限制服务的功能(2)限制服务访问功能
验证selinux功能
在selinux开启状态下,ftp目录里有text文件,然而连接却看不到此文件,因为安全上下文不一致!
selinux安全级别
getenforce ##查状态
enforcing 强制
permissive 警告 ##均为开启状态
disabled 关闭
setenforce 0 设定为警告状态
setenforce 1 设定为强制状态
##不用重启,这两条命令转换强制和警告(前提selinux为开启状态)
permissive警告!就是Selinux有效,即使你违反了策略的话它让你继续操作,但是会把违反的内容记录下来
Enforcing拒绝!就是若违反了策略,就无法继续操作下去,服务会被拒绝!
vim /etc/sysconfig/selinux 修改配置文件
必须重启reboot ##关闭<-->开启
selinux的模式转换需要重启,因为selinux是内核级的插件
重新按装vsftpd 恢复默认
student权限也恢复默认,700
用户student删除550 上传553提示!
lftp student@172.25.254.143:~> put /etc/group
put: Access failed: 553 Could not create file. (group)
lftp student@172.25.254.143:~> rm file
rm: Access failed: 550 Delete operation failed. (file)
setenforce 0 ##警告!
[root@143 pub]# getenforce
Permissive
lftp student@172.25.254.143:~> rm file
rm ok, `file' removed
ls -Z /var/ftp/ ##查看文件安全上下文
ls -Zd /var/ftp ##查看目录安全上下文
ps auxZ | grep ftp ##查看ftp服务安全上下文
chcon -t 安全上下文 文件 ##临时修改文件安全上下文
getsebool -a | grep ftp ##查看ftp服务bool值
临时更改上下文,重启不生效
mkdir /westos
touch /westos/file
vim /etc/vsftpd/vsftpd.conf
local_enable=YES
anon_root=/westos ##添加家目录
systemctl restart vsftpd.service
ls -Z /westos ##查看上下文
ls -Z /var/ftp
chcon -t public_content_t /westos/ -R ##更改安全上下文
[root@243 home]# mkdir /westos
[root@243 home]# touch /westos/file
[root@243 home]# vim /etc/vsftpd/vsftpd.conf
[root@243 home]# systemctl restart vsftpd.service
但是这种设定是临时的,重启selinux失效,这里的重启指的是selinux的重启
[root@243 home]# getenforce
Enforcing
[root@243 home]# vim /etc/sysconfig/selinux ##改为disabled
[root@243 home]# reboot ##重启
Connection to 172.25.254.243 closed by remote host.
Connection to 172.25.254.243 closed.
[kiosk@foundation66 Desktop]$ ssh root@172.25.254.243
root@172.25.254.243's password:
Last login: Tue Nov 6 22:30:57 2018
[root@243 ~]# getenforce ##现在变为disabled状态了
Disabled
[root@243 ~]# vim /etc/sysconfig/selinux ##再次更改为enforcing
[root@243 ~]# reboot ##重启
Connection to 172.25.254.243 closed by remote host.
Connection to 172.25.254.243 closed.
[kiosk@foundation66 Desktop]$ ssh root@172.25.254.243
root@172.25.254.243's password:
Last login: Tue Nov 6 22:39:02 2018
[root@243 ~]# getenforce ##开启成功
Enforcing
[root@243 ~]# ls -Zd /westos ##安全上下文失效!
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 /westos
永久修改
目录及里面内容都记录到-a 表添加 -t类型
semanage fcontext -l | grep /var/ftp
semanage fcontext -l | grep /westos/ ##对比可见配置文件中并没有写入/westos目录所以重启失效
semanage fcontext -a -t public_content_t '/westos(/.*)?'
##将westos及里面所有添加到内核安全上下文列表
semanage fcontext -l | grep /westos
/westos(/.*)? all files system_u:object_r:public_content_t:s0
ls -Zd /westos/
restorecon -RvvF /westos/ ##刷新(F指向,vv过程,R递归)
删除文件的安全上下文
semanage fcontext -d '/westos(/.*)?' ##删除内核上的安全上下文列表的/westos
管理SElinux布尔值
实现匿名用户写上传:
getsebool -a | grep ftp ##查看ftp服务的所有sebool值开启与否
##修改布尔值,修改selinux策略,以永久保留修改。
系统会更加安全,将selinux改为警告0仅仅是可以执行,但是系统不安全。
参数-P会将bool值记录在文件中##
setsebool -P ftp_home_dir on ##对功能永久开启
setsebool -P ftpd_anon_write on ##匿名上传永久开启
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd.service ##30行开启 重启服务
chgrp ftp /var/ftp/pub/
chmod 775 /var/ftp/pub/
lftp 172.25.254.143:/> cd pub/
lftp 172.25.254.143:/pub> put /etc/passwd
put: Access failed: 553 Could not create file. (passwd) ##这时候是仅可读,所以上传不了
chcon -t public_content_rw_t /var/ftp/pub/ ##改为可读写
lftp 172.25.254.143:/pub> put /etc/passwd
2102 bytes transferred
##setenforce 0也可以实现不用改public_content_rw_t!(只是警告不影响执行!)
修改vsftpd服务的配置文件vim /etc/vsftpd/vsftpd.conf,打开文件上传的功能,重启vsftpd服务
改变/var/ftp/pub的组为ftp,并且赋予组写的权限
默认仅可读,修改上下文public_content_rw_t为读写,再次上传成功!
监控selinux冲突
/var/log/audit/audit.log :selinux日志文件所有的报错信息在此文件中,只会报错,不会告诉你如何解决
setroubleshoot-server软件,监听/var/log/audit/audit.log中的审核信息并将简短摘要发送到/var/log/messages(前提已安装 setroubleshoot-server 软件包 )
/var/log/messages有报错信息和解决方案(但是解决方案不考虑系统安全性)
卸载setroubleshoot-server 软件,清日志
查看日志没有排错提示
再次安装setroubleshoot-server,/var/log/audit/audit.log有错误信息,/var/log/messages有解决方案