linux学习笔记(十八)-------selinux

一、什么是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

猜你喜欢

转载自blog.csdn.net/qq_42711214/article/details/82752732