selinux

1.定义

selinux是内核级加强型火墙

2.selinux支持的三种模式

enforcing ##强制开启 会警告你也会拒绝你
permissive ##警告开启,会警告但不会拒绝
disabled ##关闭

3.切换模式

开启和关闭模式切换,需要重新启动
两种开启模式可以相互转换,不需要重启动
setenforce 0 ##警告
setenforce 1 ##警告并拒绝

4.selinux对程序的影响

selinux对程序的影响::开启之后会给每一个文件加载一个标签
安全上下文 pubic_content
程序的安全上下文和文件的安全上下文是匹配的,才可以访问
程序的安全上下文和文件的安全上下文是不匹配,否则访问失败

之前FTP章节练习时修改配置文件,为了下面实验不受到影响,还原!
selinux
1.selinux模式设置为disabled
touch /mnt/westosfile
mv /mnt/westosfile /var/ftp
lftp 172.25.254.188
ls 可以看到westosfile
selinux
vim /etc/sysconfig/selinux 设置成enforcing
selinux
reboot
selinux
重启后查看
selinux
touch /mnt/westosfile2
mv /mnt/westosfile2 /var/ftp
lftp 172.25.254.188
ls 可以看不到westosfile2
selinux
但是westosfile2确实存在
selinux
这是为何?
查看程序的上下文是否和目录上下文匹配
selinux
文件初始selinux上下文通常是父目录。将父目录的上下文指定给新创建的文件
cd /var/ftp
touch file
ls -Z
file 上下文是public_content_t
selinux
touch /mnt/file
ls -Z /mnt/file
/mnt/file 上下文是mnt_t
selinux
因为file父目录/mnt的上下文就是mnt_t
ls -Z /mnt/ -d
/mnt的上下文是mnt_t
selinux
临时修改文件的上下文
ls -Z
westosfile2 的上下文是mnt_t
selinux
chcon -t public_content_t westosfile2
##临时修改文件westosfile2的上下文
ls -Z
westosfile2 的上下文变成public_content_t
selinux
vim /etc/vsftpd/vsftpd.conf ##修改配置文件
anon_root=/ftphome ##匿名用户登陆的家目录修改为/ftphome
selinux

selinux
lftp 172.25.254.177 ##匿名用户登陆
ls没东西
selinux
ls -Zd /ftphome/ ##/ftphome/的上下文是default_t
selinux
chcon -t public_content_t /ftphome/ -R
##临时更改/ftphome/的安全上下文
ls -Zd /ftphome/ ##/ftphome/的上下文是public_content_t
selinux
lftp 172.25.254.177 ##匿名用户登陆
ls 可以看见里边东西
selinux
查看临时设定的话重启之后是否文件的上下文改变
vim /etc/sysconfig/selinux
7行 SELINUX=disbale ##由原来的enforcing修改成disbale
selinux
reboot
selinux
vim /etc/sysconfig/selinux
7行 SELINUX=enforcing ##由原来的disbale修改成enforcing
selinux
reboot ##重启两次
selinux
lftp 172.25.254.177 ##匿名用户登陆
ls没东西 ##说明它是临时设定
selinux
ls -Zd /ftphome ##显示/ftphome的上下文是default_t
ls -Zd /var/ftp ##显示/var/ftp的上下文是public_content_t
selinux
匿名用户默认登陆/var/ftp时安全上下文匹配允许用户查看里边信息,那么如果修改/ftphome的安全上下文为public_content_t使得用户也可以查看/ftphome里边的信息。
上边介绍了一种临时修改文件的安全上下文的方法,但是重启后失效。有没有永久更改文件的安全上下文的方法呢?
查看/var/ftp安全上下文是如何永久设定的
selinux
永久更改/ftphome的安全上下文
semanage fcontext -a -t public_content_t ‘/ftphome(/.*)?’
selinux
restorecon -RvvF /ftphome ##读取里边内容使得永久设定生效
selinux
可以看到永久设定生效
selinux
semanage fcontext 可用与显示或修改 restorrecon 用来设置默认文件上下文的规则

5. selinux对服务的影响

对服务的影响:加程序的功能开关
getsebool 用于显示布尔值,setsebool用于修改布尔值
getsebool 0 1 bool
getsebool -a | grep ftp

警告模式下匿名用户可以上传
setenforce 0 设置为警告模式
selinux
vim /etc/vsftpd/vsftpd.conf
29行 匿名用户上传权限开启 服务允许
selinux
selinux
chgrp ftp /var/ftp/pub/
chmod 775 /var/ftp/pub修改权限
selinux
注意:自己实验不可以上传?错在哪里 权限553
chgrp ftp /var/ftp/pub/
chmod 775 /var/ftp/pub 修改权限
手残写成 755 导致不能上传,因为组用户没有写的权限

lftp 172.25.254.188
cd pub/
put /etc/passwd 可以上传
selinux
强制模式下匿名用户不可以上传
setenforce 1 设置为强制模式
selinux
lftp 172.25.254.188
cd pub/
put /etc/group
553报错不可以上传
selinux
getsebool -a | grep ftp
原来是关闭的
selinux
setsebool -P ftp_anon_write on ##打开匿名用户上传功能开关 ,-P 永久开启
selinux
lftp 172.25.254.188
cd pub/
put /etc/group
553报错不可以上传
selinux
ls -Zd /var/ftp/pub/
selinux
chcon -t public_content_rw_t /var/ftp/pub/ ##原来是只读,修改成可写可读
ls -Zd /var/ftp/pub/ ##修改成功
selinux
setsebool -P ftp_anon_write on ##打开匿名用户上传功能开关 ,-P 永久开启
lftp 172.25.254.188
cd pub/
put /etc/group ##上传成功
selinux

6.发生错误查看日志

/var/log/audit/audit.log 提供问题出在哪里
/var/log/messages 专门分析前面日志,提供解决方案
清空日志
清空日志:>/var/log/audit/audit.log
清空日志:>/var/log/messages
touch /mnt/file
mv /mnt/file /var/ftp

selinux

lftp 172.25.254.188
ls
selinux
cat /var/log/audit/audit.log ##提供问题出在哪里
selinux
cat /var/log/messages ## 专门分析前面日志,提供解决方案
selinux
rpm -qa | grep settroubleshoot ##查看提供解决方案的软件
selinux
yum remove sett…server… ##卸载这个软件
selinux
selinux
清空日志:> /var/log/audit/audit.log
清空日志:> /var/log/messages
lftp 172.25.254.188
ls
selinux

cat /var/log/audit/audit.log ##提供问题出在哪里
selinux
cat /var/log/messages ##没有解决方案
selinux
yum install sett…server… ##安装这个软件
selinux
清空日志:> /var/log/audit/audit.log
清空日志:> /var/log/messages
lftp 172.25.254.188
ls
selinux
cat /var/log/audit/audit.log ##提供问题出在哪里
selinux
cat /var/log/messages ##又可以专门分析前面日志,提供解决方案
selinux