文章目录
实验环境
初始化ftp服务
rm -fr /etc/vsftp/
dnf reinstall vsftpd -y
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
修改12行:anonymous_enable=YES
允许匿名用户上传
修改29行:anon_upload_enable=YES
vim /etc/vsftpd/vsftpd.conf
systemctl restart vsftpd
lftp 192.168.0.17
内核级的加强型防火墙
vim /etc/selinux/config
安全上下文,sebool,se的状态控制
1. 关闭、开启selinux的区别
selinux的状态是disabled时,
项目 | 结果 |
---|---|
在mnt下建立文件,移动到/var/ftp,是否可以通过lftp查看到 | 是 |
ls -Z /var/ftp | 显示有一个“?” |
匿名用户是否可以上传 | 是 |
selinux的状态是enfrocing时,reboot(内核初始化,必然需要重启)
vim /etc/selinux/config
reboot
getenforce
systemctl enable --now vsftpd
项目 | 结果 |
---|---|
在mnt下建立文件,移动到/var/ftp,是否可以通过lftp查看到 | 否 |
ls -Z /var/ftp | “?”是extent,安全上下文 |
匿名用户是否可以上传 | 否 |
ps auxZ | grep vsftpd
2. Selinux的影响
selinux对文件的影响:
贴标签(content 安全上下文),当selinux开启时,内核会对每个文件及每个开启的程序进行标签加载
标签内记录了程序和文件的安全上下文(contect)
selinux对程序的影响:
当selinux开启时,会对程序功能加载开关,并设定此开关的状态是关闭,当需要此功能时,需要手动开启功能开关(开关:sebool),提高了系统的安全性
reboot开机的快慢,是因为需要给每个程序和文件贴上“ 标签 ”
- sebool功能开关
波尔值:01、on off、true false、yes no
波尔值的调整
setsebool -P ftpd_anon_write on功能开启(可以上传)
(内核上的加强型的插件)
3. selinux的状态及管理
vim /etc/selinux/config
setenforce 0 //警告模式
setenforce 1 //强制模式
状态 | 说明 |
---|---|
enfrocing | 强制模式,不可以访问,有警告 |
permissive | 警告模式,可以访问内容,但是有警告 |
强制模式enforcing
不符合条件就一定会被拒绝,并会收到警告
getenforce
#enforcing
lftp 192.168.0.17
>ls
cat /var/log/audit/audit.log
警告模式permissive
不符合条件也可以被允许,并会收到警告
setenforce 0 //变成警告模式
getenforce
#permissive
lftp 192.168.0.17
>ls
cat /var/log/audit/audit.log
4. selinux的安全上下文
查看功能
ls -Z //查看文件的安全上下文
ls -Zd //查看目录的安全上下文
ps axZ //查看进程的安全上下文
4.1 临时修改安全上下文
修改功能
public_content_t:标签
chcon -t public_content_t /westosdir1
chcon -Rt public_content_t /westosdir1/ //修改目录及目录中的所有子文件的安全上下文
此方式更改的安全上下文在selinux重启后会还原
mkdir /westosdir1
touch /westosdir1/file1
查看目录的安全上下文
ls -Zd /westosdir1
chcon -t public_content_t /westosdir1/
ls -Zd /westosdir1
查看文件的安全上下文
ls -Z /westosdir1/
chcon -Rt public_content_t /westosdir1/
ls -Z /westosdir1/
重启selinux,创建/.autorelabel
文件,只需要重启一次,安全上下文被还原
touch /.autorelabel
reboot
ls -Zd /westosdir1
ls -Z /westosdir1/
4.2 永久修改安全上下文
查看/var/ftp
的安全上下文列表
semanage fcontext -l | grep /var/ftp
贴标签,修改安全上下文
semanage fcontext -a -t public_content _t '/westosdir1(/.*)?'
semanage fcontext -l | grep /westosdir1
刷新安全上下文
restorecon -RvvF /westosdir1
5. SEBOOL
显示服务的bool值
getsebool -a | grep ftp
更改服务的bool值
setsebool -P ftpd_anon_write off
getsebool -a | grep ftp
6. SEPORT
添加
semanage port -l | grep ssh
semanage port -a -t ssh_port_t 1111 -p tcp
systemctl restart sshd
semanage port -l | grep ssh
删除
semanage port -d -t ssh_port_t 1111 -p tcp
semanage port -l | grep ssh
7. setrouble
强制模式下,看不到mv的操作
> /var/log/messages
> /var/log/audit/audit.log
getenforce
touch /mnt/yao
mv /mnt/yao /var/ftp
lftp 192.168.0.18
>ls
cat /var/log/messages
cat /var/log/audit/audit.log
日志 | 说明 |
---|---|
/var/log/message | 系统警告日志 |
/var/log/audit/audit.log | selinux报警信息日志 |
系统给出的决策:改变安全上下文
/var/log/message
日志有提供解决的方法
> /var/log/message
> /var/log/audit/audit.log
restorecon -FvvR /var/ftp
setrouble进行检测,提供解决方案
实验:删除setroubleshoot,系统无法提供解决方案
当它被删除,selinux报错时,系统不会提供selinux的解决方案
解决方案是在message里
dnf remove setroubleshoot
> /var/log/message
> /var/log/audit/audit.log
touch /mnt/yaoyao
mv /mnt/yaoyoa /var/ftp
lftp 192.168.0.18
>ls
cat /var/log/messages
cat /var/log/audit/audit.log
现在删除了setrouble
,/var/log/messages
中不提供解决方案