一、什么是selinux
selinux是linux系统内核级加强型防火墙
selinux作用:(在使用ftp访问时体现)
1、限制程序访问,程序访问文件必须有匹配的上下文
2、.限制程序功能,把程序不安全功能屏蔽
二、selinux的常用命令
1.selinux状态的查看
getenforce ##selinux状态的查看
selinux的状态有三种:enforcing(1)##强制 permissive(0) ##警告 disabled##关闭
2.selinux状态的更改
vim /etc/sysconfig/selinux
SELINUX=XXX
reboot ##selinux的开启和关闭需要重启,加载配置
注意:更改selinux状态时强制状态和警告状态可以使用命令相互切换,不需要重启:
setenforce 0/1 ##修改selinux状态为强制或者警告
三、安全上下文
1.安全上下文的查看
ls -Z ##查看文件安全上下文
ls -Zd ##查看目录安全上下文
ps auxZ | grep vsftpd ##查看ftp服务安全上下文
2.临时修改文件/目录安全上下文
chcon -t 安全上下文 file ##临时更改文件的上下文
chcon -t 安全上下文 dir -p ##临时更改递归目录的安全上下文
注意:此操作下重启selinux(关闭 reboot /开启 reboot)后安全上下文会恢复默认设置
3、永久修改安全上下文
mkdir /westos
touch /westos/file{1…3}
ls -Zd /westos ##查看/westos/目录本身的安全上下文
ls -Zd /westos/* ##查看/westos/目录中文件的安全上下文
semanage fcontext -a -t public_content_t ‘/westos(/.*)?’ ##在内核安全上下文列表中将/westos/目录及目录中所有文件的安全上下文更改为public_content_t
semanage fcontext -l | grep westos ##仅查看与westos有关的安全上下文
restorecon -FvvR /westos/ ##刷新/westos/目录的安全上下文,F指向,vv过程,R递归
4.删除文件安全上下文
semanage fcontext -d ‘/westos(/.*)?’ ##删除内核上的安全上下文列表中的/westos
四、seinux影响程序功能(selinux开启情况下,lftp可以写和上传文件)
1.selinux开启后会给每个程序设定sebool值,默认关闭所有功能
getsebool -a | grep ftp ##查看关于ftp的所有sebool值
setsebool -P ftp_home_dir on ##打开sebool值中ftp_home_dir功能的开关
setsebool -P ftp_home_dir off ##关闭sebool值中ftp_home_dir功能的开关
注意:ftp服务中,将ftpd_full_access (相当于总开关)打开后。selinux将不再限制ftp功能
2.在selinux开启情况下,实现匿名用户lftp下载上传文件
yum install vsftpd lftp -y
systemctl start vsftpd
systemctl enable vsftpd
firewall-cmd --permanent --add-service=ftp
firewall–cmd --reload
第一步:修改配置文件,让匿名用户拥有可上传和可下载的权限
增加组和权限,将/var/ftp/pub/添加到ftp组下,并赋予其组有写的权限
vim /etc/vsftpd/vsftpd.conf
anon_upload_enable=YES ##匿名用户可上传
anon_world_readable_only=NO ###参数为no时匿名用户可下载
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
第三步:setsebool 打开ftp匿名用户write功能(-P表示永久修改)
chcon -t修改文件标签,增加写的功能
getsebool -a | grep ftp
setsebool -P ftpd_anon_write on
chcon -t public_content_rw_t /var/ftp/pub/
systemctl restart vsftpd
##注意:此方法为临时更改,重启selinux后会失效,若要永久改变,可采用下文日志中插件提供的解决办法
五、监控selinux的错误信息
lftp 172.25.254.145
cd pub
rm passwd
上图的错误信息会在/var/log/messages里显示,并且安装有setroubleshoot-server的机器还会告诉你如何解决报错问题
##注意:日志中的建议只提供解决方法,不注重安全性
所有的报错信息在/var/log/audit/audit.log里,但是只会报错,不会告诉你怎么解决
#######selinux端口
##更改selinux端口##
[root@localhost ftp]# yum install httpd
[root@localhost ftp]# vim /etc/httpd/conf/httpd.conf
42 Listen 6666
[root@localhost ftp]# systemctl restart httpd ##修改http端口后不能重启,因为http里没有6666的端口
Job for httpd.service failed. See ‘systemctl status httpd.service’ and ‘journalctl -xn’ for details.
[root@localhost ftp]# setenforce 0 ##警告
[root@localhost ftp]# systemctl restart httpd ##警告模式后可以重启
[root@localhost ftp]# semanage port -l | grep http ##查看当前selinux允许的http端口
http_cache_port_t tcp 8080, 8118, 8123, 10001-10010
http_cache_port_t udp 3130
http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t tcp 5988
pegasus_https_port_t tcp 5989
[root@localhost ftp]# semanage port -a -t http_port_t -p tcp 6666 ##添加6666端口到selinux
[root@localhost ftp]# semanage port -l | grep http ##再次查看端口是否添加进去
http_cache_port_t tcp 8080, 8118, 8123, 10001-10010
http_cache_port_t udp 3130
http_port_t tcp 6666, 80, 81, 443, 488, 8008, 8009, 8443, 9000
pegasus_http_port_t tcp 5988
pegasus_https_port_t tcp 5989
[root@localhost ftp]# setenforce 1 ##强制警告也可以重启了
[root@localhost ftp]# systemctl restart httpd
本文来自 24kmagic 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/qq_42711214/article/details/82752732?utm_source=copy