一、selinux的状态及管理
1.selinux的开启(永久性)
vim /etc/selinux/config SELINUX = disabled #selinux 关闭 SELINUX = enforcing #selinux 开机设定为强制状态此状态为 selinux 开启 SELINUX = permissive #selinux 开机设定为警告状态此状态为 selinux 开启 enforcing : 不符合条件一定不能被允许, 并会收到警告信息 permissive : 不符合条件被允许, 并会收到警告信息 注:selinux开启或关闭需要重启系统 selinux日志位置 : / var / log / audit / audit. log
selinux状态的查看: getenforce
2.临时修改selinux状态
二、Selinux的安全上下文
1.查看
ls -Z ??##查看文件的安全上下文 ls -Zd ??##查看目录的安全上下文 ps axZ ??##查看进程的安全上下文
2.修改安全上下文
1.临时修改
#此方式更改的安全上下文在selinux重启后会还原
chcon -t 标签 文件|目录
chcon -t public_content_t /var/ftp/westosfile1
chcon -Rt public_content_t /westosdir #修改目录及目录中的所有子文件的安全上下文
由上可以看出 chcon -Rt public_content_t /test 只是临时修改selinux安全上下文 在重启系统之后 仍然是public_content_t 没有改变的原因是因为没有对/etc/sysconfig/selinux中的selinux状态作出改变 此时可以touch /.autorelabel (相当于改变上述文件中selinux的状态)该文件是一次性的,重启之后自动消失 如果永久存在 就不是开关了。
2.永久改变
#如果需要特殊指定安全上下文需要修改内核安全上下文列表
semanage fcontext -l ##查看内核安全上下文列表
semanage fcontext -a -t public_content_t '/westosdir(/.*)?'
restorecon -RvvF /westosdir/
touch /.autorelabel ##重启系统时selinux初始化文件标签开关文件
使用上图所示命令 (注意特殊字符的规范使用) 在使用完semanage fcontext命令对/test的安全上下文作出更改后 如果想在当下就查看到它的改变 要使用restorecon命令对其进行扫描(就和修改conf文件后重启守护进程一样)『/.autorelable创立之后需要重启系统 扫描之后不需要』 如果没有作上步操作 那就重启系统之后才能观察到。
三、SEBOOL和SEPORT的更改
1.SEBOOL
getsebool -a ##现实服务的bool值
setsebool -P ftpd_anon_write on #更改
进入/etc/vsftpd/vsftpd.conf文件中 将匿名用户访问及匿名用户上传功能打开。 由上可知 两道屏障打开了一道 但是sebool还为开启 所以不能上传文件 进行下面的操作将sebool开启。 测试:
2.SEPORT的更改
semanage port -l | grep ssh
semanage port -a -t ssh_port_t -p tcp 2222
vim /etc/ssh/sshd_config # 将其中的端口号由默认的22改为2222 做完实验后将配置的2222删除 使用默认的22端口
四、setrouble
有关于selinux的报错 离不开两个文档 /var/log/audit/audit.log # 查看报错基本信息 /var/log/messages #查看解决方案(通过错误id)
#/var/log/audit/audit.log ##selinux警告信息
#/var/log/messages ##selinux问题解决方案
#setroubleshoot-server ##此软件功能是采集警告信息并分析得到解决方案存放到message中
semanage port -d -t ssh_port_t -p tcp 1111
> /var/log/audit/audit.log
>/var/log/messages
systemctl restart sshd
systemctl stop sshd
#实验步骤: dnf search setrouble dnf remove setroubleshoot-server.x86_64 #将查找错误的工具卸载掉 观察两次实验的结果
1.先将查找错误的工具卸载掉
2.将setroubleshoot-server.x86_64装上
dnf install setroubleshoot-server.x86_64
[root@westoslinux100 ~]# > /var/log/messages
[root@westoslinux100 ~]# > /var/log/audit/audit.log
[root@westoslinux100 ~]# lftp 172.25.254.100
lftp 172.25.254.100:~> ls
drwxrwxrwx 2 0 0 20 Nov 19 14:20 pub
lftp 172.25.254.100:/> quit
[root@westoslinux100 ~]# cat /var/log/audit/audit.log
[root@westoslinux100 ~]# cat /var/log/audit/audit.log
type=AVC msg=audit(1636857999.168:194): avc: denied { getattr } for pid=3734 comm="vsftpd" path="/testfile1" dev="vda3" ino=17251759 scontext=system_u:system_r:ftpd_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:mnt_t:s0 tclass=file permissive=0
[root@westoslinux100 ~]# cat /var/log/messages
在/var/log/audit/audit.log中观察到错误位置
在cat /var/log/messages中找到;
sealert -l c34e6e04-67fb-4db5-82ce-dc9e49209617
在其中能找到:restorecon -v '/testfile1'
然后 在命令行输入:restorecon -v /var/ftp/testfile1
测试:
|