当Selinux未开启时
在/mnt中建立文件被移动到/var/ftp下可以被vsftpd服务访问
匿名用户可以通过设置后上传文件
当使用ls -Z /var/ftp查看文件时显示"?"
ps auxZ | grep vsftpd 时显示:
当Selinux开启:
在/mnt中建立文件被移动到/var/ftp下不可以被vsftpd服务访问
匿名用户可以通过设置后仍然不能上传文件
当使用ls -Z /var/ftp查看文件时显示信息
ps auxZ | grep vsftpd 时显示:
selinux
1.对于文件的影响: 当selinux开启时,内核会对每个文件及每个开启的程序进行标签加载标签内记录程序和文件的安全上下文(context)
2.对于程序功能的影响:当selinux开启会对程序的功能加载开关,并设定此开关的状态为关闭当需要此功能时需要手动开启功能开关
此开关叫做sebool
1.selinux的开启
vim /etc/selinux/config
SELINUX=disabled #selinux关闭
SELINUX=enforcing #selinux开机设定为强制状态此状态为selinux开启
SELINUX=permissive #selinux开机设定为警告状态此状态为selinux开启
"selinux开启或关闭需要重启系统"
enforcing: 不符合条件一定不能被允许,并会收到警告信息
permissive: 不符合条件被允许,并会收到警告信息
selinux状态的查看:getenforce
selinux开启后强制和警告级别的转换
setenforce 0 ##警告 (临时设置)
setenforce 1 ##强制
selinux日志位置:
/var/log/audit/audit.log
1.查看
ls -Z ##查看文件的安全上下文
ls -Zd ##查看目录的安全上下文
ps axZ ##查看进程的安全上下文2.修改安全上下文
2.修改安全上下文
#临时修改
#此方式更改的安全上下文在selinux重启后会还原
chcon -t 标签 文件|目录
chcon -t public_content_t /var/ftp/westosfile1
chcon -Rt public_content_t /westosdir
chcon -t public_content_t /var/ftpfwestosfile ##修改文件的安全上下文
chcon -Rt public_content_t /westos/ #修改目录及目录中的所有子文件的安全上下文
(如果没有在 /etc/sysconfig/selinux中修改enforcing--->disabled 或者disabled---> enforcing重启之后就不会初始化,临时设定也不会消失)
touch /.autorelabel ##重启系统时selinux初始化文件标签开关文件(进入到挽救模式每次会初始化)然后reboot
又变成之前的安全上下文(因为初始化了文件标签)
#永久修改安全上下文
#如果需要特殊指定安全上下文需要修改内核安全上下文列表
semanage命令是用来查询与修改selinux默认目录的安全上下文
semanage fcontext -l ##查看内核安全上下文列表
semanage fcontext -a -t public_content_t '/westosdir(/.*)?'##-a 增加 -t 为类型
restorecon -RvvF /westosdir/
touch /.autorelabel ##重启系统时selinux初始化文件标签开关文件
semanage fcontext -l | grep ftp ##在内核文件中已经写入/var/ftp/的安全上下文
semanage fcontext -a -t public_content_t '/westos(/.*)?' 执行完之后必须进行刷新
restorecon -RvvF /westos ##对于目录进行刷新 R为递归 vv为详细信息 F为刷新
getsebool -a ##显示服务的bool值
setsebool -P ftpd_anon_write on #更改
如果需要在200主机上传文件
vim /etc/vsftpd/vsftpd.conf 打开anon_upload_enable=YES
systemctl restart vsftpd
chcon -t public_content_rw_t /var/ftp/pub/ ##更改使其有读写权力,上传文件仍然没有成功
查询到ftp的匿名可写权限关闭
setsebool -P ftpd_anon_write on ## -p表示永久 ,允许匿名用户写入
测试:
semanage port -l | grep ssh
semanage port -a -t ssh_port_t -p tcp 2222
vim /etc/ssh/sshd_config 改变port=2222
systemctl restart sshd 会报错
semanage port -a -t ssh_port_t -p tcp 2222 ##添加端口2222
semanage port -d -t ssh_port_t -p tcp 2222 ##删除设定的2222
vim /etc/ssh/sshd_config 注释掉2222
systemctl restart sshd
/var/log/audit/audit.log ##selinux警告信息
#/var/log/messages ##selinux问题解决方案
#setroubleshoot-server ##此软件功能是采集警告信息并分析得到解决方案存放到message中
lftp 172.25.254.200 看不到建立的ly 文件
cat /var/log/audit/audit.log ##里面有记录elinux警告信息
cat /var/log/messages ##里面没有selinux问题解决方案
dnf search setrouble
dnf install setroubleshoot-server.x86_64 -y 安装查看selinux日志的程序
setroubleshoot-server ##此软件功能是采集警告信息并分析得到解决方案存放到message中
清空日志 lftp 172.25.254.200还是看不到建立的ly
cat /var/log/audit/audit.log ##里面记录selinux警告信息
cat /var/log/messages ##显示排除错误的方案
sealert -l 8b2286ac-c81a-42d9-9ba3-7b5b498f5d4b ##查找解决方法
出现两种解决方案
restorecon -v /var/ftp/ly 或setsebool -P ftpd_full_access 1
restorecon -v /var/ftp/ly ##对文件进行刷新
lftp 172.25.254.200 会看到建立的ly