提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
内核级加强型火墙主要是指系统中的selinux功能,该功能开启时,会对系统中的文件和程序产生影响,用户的一些操作会被限制。
一、Selinux开启后所产生的影响
当Selinux未开启时
在/mnt中建立文件被移动到/var/ftp下可以被vsftpd服务访问
匿名用户可以通过设置后上传文件
当使用ls -Z /var/ftp查看文件时显示"?"
ps auxZ | grep vsftpd 时显示:
- root 8546 0.0 0.0 26952 408 ? Ss 10:35 0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
当selinux开启:
在/mnt中建立文件被移动到/var/ftp下不可以被vsftpd服务访问
匿名用户可以通过设置后仍然不能上传文件
当使用ls -Z /var/ftp查看文件时显示信息
ps auxZ | grep vsftpd 时显示:
system_u:system_r:ftpd_t:s0-s0:c0.c1023 root 6577 0.0 0.0 26952 412 ? Ss 10:50
0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
对于文件的影响:
当selinux开启时,内核会对每个文件及每个开启的程序进行标签加载
标签内记录程序和文件的安全上下文(context)
对于程序功能的影响:
当selinux开启会对程序的功能加载开关,并设定此开关的状态为关闭
当需要此功能时需要手动开启功能开关
此开关叫做sebool
对nodea主机selinux=Disabled
1、把文件westosfile从mnt/westosfile复制到/var/ftp可以ls显示出来
图片最后一行代码是修改主机名
2、ls -Z /var/ftp
3、
对nodeb主机selinux=Enforcing,
1、把文件westosfile从mnt/westosfile复制到/var/ftp可以ls显示不出来,是因为启用了selinux的原因
但当setenforce 0把selinux改为Permissive后虽然安全上下文报错但仍能显示出来
2.ls -Z /var/ftp
3、
4、对于程序功能的影响:多一个selinux开关,sebool开关
二、Selinux的状态及管理
selinux的开启:
vim /etc/selinux/config 或者/etc/sysconfig/selinux
SELINUX=disabled %selinux关闭
SELINUX=enforcing %selinux开机设定为强制状态,此状态为selinux开启
SELINUX=permissive %selinux开机设定为警告状态,此状态为selinux开启
"selinux从开启到关闭需要重启系统"
enforcing:
不符合条件一定不能被允许,并会收到警告信息
permissive:
不符合条件被允许,并会收到警告信息
selinux状态的查看:
getenforce
selinux开启后强制和警告级别的转换
setenforce 0 %警告
setenforce 1 %强制
强制模式下,用lftp不能访问,警告模式下可以访问,两种情况下都会在/var/log/audit/audit.log中生成日志
selinux日志位置:
/var/log/audit/audit.log
过程:对nodea开启selinux:vim /etc/selinux/config把Disable改为enforcing
改完之后reboot
把状态从enforing改为permissive,查看日志有警告信息
三、Selinux的安全上下文
临时修改文件的安全上下文:此方式更改的安全上下文在selinux重启后会还原
chcon -t 标签 文件|目录
chcon -t public_content_t /var/ftp/westosfile1 %不能改/var/ftp里面的,因为该目录下的文件原本的安全上下文就为public_content_t,改完再重启系统没有变化
chcon -Rt public_content_t /westosdir %修改目录及目录中的所有子文件的安全上下文
永久修改安全上下文:如果需要特殊指定安全上下文需要修改内核安全上下文列表
semanage fcontext -l %查看内核安全上下文列表
semanage fcontext -a -t public_content_t '/westosdir(/.*)?' %如果不加(/.*)?,则只是目录本身的安全上下文被记录了,目录里面的内容不会发生变化
restorecon -RvvF /westosdir/ %使上述设定生效,刷新状态
touch /.autorelabel %重启系统时selinux初始化文件标签开关文件
临时修改:
永久修改:’/test(/.*)?'表示目录及目录地下文件
重启后发现目录及文件已经更改
history
查看内核安全上下列表
四、SEBOOL开关和SEPORT
SEBOOL:
getsebool -a %查看现实服务的bool值
setsebool -P ftpd_anon_write on %更改(开启write开关),加-P表示永久开启,不加表示临时,重启后还会关闭
SEPORT:
semanage port -l | grep http %查看现实服务的port值列表,即系统允许更改的端口号
semanage port -a -t http_port_t -p tcp 1111 %更改
netstat -antlupe | grep httpd %查看httpd的当前端口
目的:在selinux=enforcing情况下ftp上传文件到/pub
要求:1满足vsftpd章节匿名用户上传文件到/pub要求:
vim /etc/vsftpd/vsftpd.conf 改为下图
/var/ftp/pub/权限满足
2/var/ftp/pub/安全上下文
查询ftp安全上下文
更改安全上下文:没有这一步,没有rw都会报553错误
3打开ftp的sebool开关:第一行为on
以上都做完后,才能匿名用户上传文件
SEPORT设置:
最后systemctl restart sshd
五、setrouble
/var/log/audit/audit.log %selinux警告信息
/var/log/messages %可在此日志中查找selinux问题解决方案
[root@server mnt]# touch hello
[root@server mnt]# ls
hello
[root@server mnt]# mv hello /var/ftp
[root@server mnt]# lftp 172.25.254.101
lftp 172.25.254.101:~> ls
-rw-r--r-- 1 0 0 0 Nov 29 01:38 file
drwxrwxrwx 2 0 0 33 Nov 29 01:16 pub
lftp 172.25.254.101:/> exit
[root@server mnt]# cat /var/log/messages
[root@server mnt]# setsebool -P ftpd_full_access 1 %日志中提供的解决方案
[root@server mnt]# ls
[root@server mnt]# lftp 172.25.254.101
lftp 172.25.254.101:~> ls %可以看到安全上下文不正确的文件
-rw-r--r-- 1 0 0 0 Nov 29 01:38 file
-rw-r--r-- 1 0 0 0 Nov 29 01:45 file2
-rw-r--r-- 1 0 0 0 Nov 29 01:49 hello
drwxrwxrwx 2 0 0 33 Nov 29 01:16 pub
lftp 172.25.254.101:/> exit
nodea主机中安装了setrouble:
实验准备:执行完之后可以看到test
二、实验准备:更改端口号出现错误,解决错误让他
解决问题: