内核级加强火墙
一、Selinux的实验环境功能
一、selinux的介绍
SELinux 全称为安全增强式 Security-Enhanced Linux(SELinux),是 2.6 版本的 Linux 内核中提供的强制访问控制 (MAC)系统。对于目前可用的 Linux 安全模块来说,SELinux 是功能最全面,而且测试最充分的
二、实验环境搭建
1、重置一个虚拟机
2、关闭虚拟机的selinux
vim /etc/selinux/config
3、安装vsftp,重启服务
dnf install lftp
dnf install vsftpd
systemctl enable --now vsftpd
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
4、开启匿名用户登陆和上传功能
vim /etc/vsftpd/vsftpd.conf
chmod 777 /var/ftp/pub/
systemctl restart vsftpd.service
二、Selinux实验现象
selinux从关闭到警告和强制模式或者反之都需要重启系统
一、第一个实验
当Selinux未开启时,在/mnt中建立文件被移动到/var/ftp,上传文件。
结论:
1、匿名用户可以进行vsftpd服务访问,并且可以随意的创建文件
2、匿名用户可以随意的上传文件
3、当使用ls -Z /var/ftp/pub查看文件时显示"?"
二、第二个实验
当selinux开启后在强制模式下(设定开启后必须重启),在/mnt中建立文件移动到/var/ftp,
结论:
1、匿名用户登陆vsftpd,查看不到移动到/var/ftp/下面的文件
2、虽然给予了上传文件的权限,但是匿名用户无法上传文件。
3、当使用ls -Z /var/ftp查看软件的selinux的信息时发现其安全上下文只能读,不能写和执行
4、发现seliunx给予的权限都是关闭的, 内核会对程序的功能加载开关,并设定此开关的状态为关闭,当需要此功能时需要手动开启功能开关,此开关叫做sebool
三、selinux的作用
对于文件的影响:
当selinux开启时,内核会对每个文件及每个开启的程序进行标签加载
标签内记录程序和文件的安全上下文(context)
对于程序功能的影响:
当selinux开启会对程序的功能加载开关,并设定此开关的状态为关闭
当需要此功能时需要手动开启功能开关
此开关叫做sebool
三、Selinux的状态及管理
selinux的开启
vim /etc/selinux/config
SELINUX=disabled | selinux关闭 |
---|---|
SELINUX=enforcing | selinux开机设定为强制状态此状态为selinux开启 |
SELINUX=permissive | selinux开机设定为警告状态此状态为selinux开启 |
selinux开启或关闭需要重启系统
enforcing强制状态解释:不符合条件一定不能被允许,并会收到警告信息
permissive警告模式解释:不符合条件被允许,并会收到警告信息
selinux状态的查看:getenforce
警告: setenforce 0
强制: setenforce 1
selinux日志位置:/var/log/audit/audit.log
四、Selinux的安全上下文
一、查看方式
ls -Z | 查看文件的安全上下文 |
---|---|
ls -Zd | 查看目录的安全上下文 |
ps axZ | 查看进程的安全上下文 |
二、临时修改文件/目录安全上下文
(此方式更改的有些文件的安全上下文在selinux重启后会还原)
(1)基本原理
chcon -t 标签 文件/目录
chcon -t public_content_t /var/ftp/file1
修改文件的安全上下文
chcon -Rt public_content_t /westosdir2
修改目录及目录中的所有子文件的安全上下文
touch /.autorelabel
开机自动重新读取selinux记载的文件安全上下文
(2)具体操作
1、为方便实验建立对象
2、给予权限,刷新权限
3、建立重启文件,验证权限
发现重启后,文件恢复到原有的安全上下文
三、永久修改文件/目录安全上下
(1)、永久更改的代码
semanage fcontext -l
查看永久内核安全上下文
semanage fcontext -a -t public_content_t '/dir(/.*)?'
给予目录及其子目录安全上下文
restorecon -RvvF /var/ftp/file1
恢复文件的权限和目录本来的权限
touch /.autorelabel
开机自动重新读取selinux记载的文件安全上下文
(2)、实验步奏
1、建立实验目录/dir3,/dir4,查看安全上下文权限
建立两个文件,方便做对比
2、/dir3用临时设定的方式进行设定,/dir4用永久的方式进行设定
可以看到临时设定的已经更改为了公共目录,永久设定的还没有更改文件的安全上下文(是因为现在只是在内核安全上下文里面进行了更新)
3、刷新内核文件记录的安全上下文信息
restorecon -RvvF /westosdir/
可以看到
临时设定的文件因为没有记录在内核安全文件里面,所以一刷新就恢复了原本的默认文件信息。
永久设定方式的文件因为记录在了内核安全文件里面,所以一刷新就更改为了公共发布文件信息。
4、建立重启文件,查看最终效果
结果发现,哪怕重新读取内核记录的安全上下文,永久设定方式的安全上下文继续不变。
五、程序的SEBOOL设定
当selinux开启时内核会对程序的功能加载开关,并设定此开关的状态为关闭,当需要此功能时需要手动开启功能开关,此开关叫做sebool。
一、基本原理
getsebool -a
##查看目前的程序的安全权限波尔值
setsebool -P ftpd_anon_write on
#更改
二、实现强制模式下FTP匿名用户的上传功能
此时开启了强制模式的seliunx
1、查看目前的情况
发现不能上传,系统权限问题
2、给予FTP满权限,查看效果
发现还是权限拒绝
3、给予可写的安全上下文
4、查看setbool值
getsebool -a | grep ftp
ftp各种功能都是关闭的
4、将匿名用户上传功能的权限打开
setsebool -P ftpd_anon_write on
6、再次上传成功
六、selinux(setrouble )的排错
一、排错相关信息
1.日志地址
/var/log/audit/audit.log
2.排错地址:
cat /var/log/messages
3.排错软件下载:
dnf research setrouble
二、修改http的端口进行排错
1.更改http的端口为80000
vim /etc/httpd/conf/httpd.conf
2.清空日志,重启服务
> /var/log/audit/audit.log
systemctl restart httpd.service
3.利用selinux查看报错信息
cat /var/log/messages
将目录地址里的45行改回来即可
三、在强制模式下,将文件移动到/var/ftp/,进行排错
1.建立环境
touch /mnt/111
mv /mnt/111 /var/ftp/
> /var/log/audit/audit.log
> /var/log/messages
lftp 172.25.254.120
2.发现查看不到我们的文件,进行排错
3.用建议的命令完成以下操作,即可查看。