5、sebool会限制服务不安全功能,如果无需此功能,必须调整sebool的值
####如何管理selinux#####
selinux的开关
vim /etc/sysconfig/selinux
SELINUX=enforcing #selinux开启,级别为强制
SELINUX=permissive #selinux开启,级别为警告
SELINUX=disabled #selinux关闭
注意:当selinux每一次重新设置后,都需要重启系统
SELINUX 有【disabled】、【permissive】、【enforcing】3种选择。
disabled:不启用SELINUX功能
permissive:SELINUX有效,但是即使你违反了策略,它让你继续操作,但是把你的违反的内容记录下来。在我们开发策略的时候非常的有用。相当于Debug模式。
enforcing:当你违反了策略,你就无法继续操作下去。
selinux中对文件安全上下文的设定:
touch /mnt/westos1
344 mv /mnt/westos1 /var/ftp/
345 lftp 172.25.254.217
touch /mnt/westos2
cp /mnt/westos2 /var/ftp
lftp 172.25.254.217
touch /var/ftp/file
353 lftp 172.25.254.217
354 ls -Z /var/ftp
在/mnt里建立两个文件westos1和westos2,在/var/ftp里建立一个file文件。将westos1‘移动‘到/var/ftp中,在命令行使用ls命令可以查看到westos1,但是使用lftp登陆到ftp服务器时无法查看到westos1,只可查看到file,但是将/mnt下的westos2‘复制‘到/var/ftp中时。登陆ftp服务器也可以查看到westos2
ftp服务器中看不见westos1的原因在于westos1在/mnt中建立,和/var/ftp目录下的文件又不一样的安全上下文,两者的安全上下文不匹配,所以在ftp服务器中无法查看到westos1。westos2可以看到是因为westos2时复制过去的,复制过去之后就会同步/var/ftp目录的安全上下文,所以在ftp服务器中可以看见westos2。
注意:单纯的复制文件时,SELinux 的 type 字段是会继承目标目录的(即会变成和所到的目录的一样); 如果是移动,那么连同 SELinux 的类型也会被移动过去。
355 semanage fcontext -l | grep /var/ftp/ ###查看/var/ftp安全上下文类型
356 chcon -t public_content_t westos1 ###更改westos1上下文类型
-t 指定上下文类型
358 ls -Z /var/ftp ###查看上下文类型
######永久更改安全上下文#######
(实验环境)
mkdir /westos
362 touch /westos/file1
touch /westos/file2
363 vim /etc/vsftpd/vsftpd.conf
364 systemctl restart vsftpd
365 lftp 172.25.254.217
366 setenforce 0 ###可以访问,但有警告
367 lftp 172.25.254.217
######################################
368 chcon -t public_content_t /westos/ -R ####临时更改目录安全上下文
369 ls -Z /westos/
370 ls -Zd /var/ftp/
将selinux修改为disabled后重启,再改为enforcing重启,/westos的安全上下文会变回原样
#######永久修改目录及目录中文件的安全上下文####
371 semanage fcontext -l |grep /var/ftp/
372 semanage fcontext -a -t public_content_t '/westos(/.*)?'###将/westos(/.*)?添加到安全上下文里
'/westos(/.*)?'匹配/westos后跟的所有文件
(-a,添加 -t,指定安全上下文类型)
semanage fcontext -l | grep /westos
-l:查询的意思
-a:增加的意思,增加一些目录的安全上下文的设定
restorecon -FvvR /westos ####递归刷新并显示刷新过程###
-R:连同次目录一起修改
-v:将过程显示到屏幕上
lftp 172.25.254.217
379 touch /.autorelabel ####让系统重新扫描所有文件相当于更该selinx状态后重启
reboot
380 ls -Z /westos/ ###查看/westos安全上下文类型
###sebool值##
当selinux开启时,系统默认会设置很多功能的开关,而且默认都是关闭的
sebool就是那个开关
lftp 172.25.254.217 -u student ###登陆本地用户,尝试上传文件
getsebool -a | grep ftp ###查看ftp的sebool值状态(默认都是关闭的)
setsebool -P ftp_home_dir on ### -P大写(永久的)打开ftp_home_dir开关
getsebool -a | grep ftp ###再次查看状态
lftp 172.25.254.217 -u student ###登陆本地用户上传就可以了
注意:ls -ld /home/student/ ##做过前面操作后可能还会说权限小,查看student用户权限
chmod u+w /home/student/ ##加上写权限
ls -ld /home/student/
lftp 172.25.254.217 -u student ##再次登陆就可以上传
#######监控selinux冲突#####
touch /mnt/westos
mv /mnt/westos /var/ftp
437 > /var/log/messages ####清空selinux的解决方案
438 > /var/log/audit/audit.log ######清空selinux的报错信息
在firefox中 ftp://172.25.254.101/ ##注意setenforce 1,若为0可以直接看到westos
restorecon -v /var/ftp/* ######刷新网页就可以看到westos
436 yum remove setroubleshoot-server.x86_64 #####卸载setroubleshoot-server这个软件
cat /var/log/messages ####不会给出解决方案
cat /var/log/audit/audit.log ###会有selinux报错信息
##########selinux所影响的httpd#######
yum install httpd -y
450 vim /etc/httpd/conf/httpd.conf ###修改http端口
1.原本tcp协议端口是80
2.将端口改为6666
451 systemctl restart httpd ##重启httpd服务,起不了
452 setenforce 0
453 systemctl restart httpd ###可以启动
454 setenforce 1
455 systemctl restart httpd ###不能启动
semanage port -a -t http_port_t -p tcp 6666 ###将6666加入http的tcp端口列表中
463 semanage port -l | grep http ###查看http的tcp端口列表
464 systemctl restart httpd ##重启成功
465 setenforce 1 ##将selinux改为强制的
466 systemctl restart httpd ###可以重启