一.selinux的简介
1.什么是selinux:
selinux(security enhanced linux)安全增强型linux系统,它是一个linux内核模块,也是linux的一个安全子系统。
selinux的主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)
2.selinux有两个级别 强制和警告 setenforce 0|1 0表示警告,1表示强制
3.selinux相当于一个插件 (内核级的插件)
4.selinux功能开启后,会关闭系统中不安全的功能
5.查看日志中的警告:cat /var/log/audit/audit.log
6.修改selinux的状态:
vim /etc/sysonfig/selinux
修改为enforcing
reboot
getfenforce
7.selinux有两个功能: 程序访问文件 安全上下文
程序访问功能 sebool
二,selinux的用法:影响文件的安全上下文
(一)修改文件的安全上下文:
我们从别的地方复制一个文件到/var/ftp,而当我们登陆lftp之后,发现看不到该文件,是因为这个文件的安全上下文和/var/ftp的安全上下文不匹配,这就是selinux的保护机制,所以我们需要将这个文件的安全上下文修改和/var/ftp的达到一致。
1.touch /mnt/file1
2.mv /mnt/file1 /var/ftp 为什么是移动而不是复制,移动是重命名的过程,文件的属性和权限不会改变,而复制是新建 的过程,文件的属性和权限等等可能会发生改变。
3.lftp 172.25.254.210 ls
4.touch /var/ftp/file2
5.lftp 172.25.254.210 ls
6.cd /var/ftp
7.ls -Z 显示/var/ftp的安全上下文的类型
或者 semanager fcontext -l | grep /var/ftp 查看/var/ftp的安全上下文
8.chcon -t public_context_t file1 修改file1的安全上下文
9.lftp 172.25.254.210 ls
semanage fcontext -l 显示内核已经记录的安全上下文
(二)修改目录的安全上下文
/var/ftp是lftp的默认发布目录,它默认的安全上下文是public_content_t,如果我们想要修改/var/ftp的默认发布目录,就必须修改这个新的发布目录的安全上下文。
1.mkdir /jay
2.touch /jay/file
3.vim /etc/vsftpd/vsftpd.conf
anon_root=/jay
4.systemctl restart vsftpd
5.lftp 172.25.254.210
6.ls 不会显示/jay和/jay里边的文件,因为其安全上下文不是content_public_t
setenforce 0/1 ls后可以显示里边的文件 说明这个问题的出现和selinux有关系
7.修改/jay目录的安全上下文有两种方法,一种是临时的,一种是永久的
(1)临时的:
chcon -t public_content_t /jay -R -R表示递归
修改selinux的配置文件,将selinux修改为disable后重启,再修改为enfrocing重启,/jay的安全上下文会变回原样。
(2)永久的:
semanage fcontext -a -t public_content_t '/jay(/.*)?'修改/jay和底下的所有文件的安全上下文
-a表示增加,-t表示类型
semanage fcontext -l |grep /jay 查看/jay的安全上下文
restorecon -FvvR /jay 递归刷新并显示刷新过程
8.lftp 172.25.254.210
9.ls
二,selinux的用法:对进程本身开关的影响sebool值
selinux会对我们系统中有些功能加上开关,我们在使用这些功能时,应该先打开开关才可以使用
(一).功能开关的影响
1.lftp 172.25.254.210 -u student
2.put /etc/passwd 显示不能上传,如果将selinux的值修改为0,则可以上传,说明这是selinux对上传文件的影响
3.getsebool -a |grep ftp 显示ftp的上传功能未开启
4.setsebool -P ftp_home_dir on 打开ftp的上传功能 -P表示永久打开
5.getsebool -a |grep ftp 显示ftp的上传功能开启
6.lftp 172.25.254.210 -u student
7.put /etc/group
(二).selinux的排错工具: setroubleshoot-server
1.touch /mnt/file
2.mv /mnt/file /var/ftp
3.在浏览器里输入ftp://172.25.254.210/file 不能看到自己建立的文件,这是由于安全上下文的关系
4.清空/var/log/messages
5.在浏览器处刷新,查看/var/log/messages
6.里边有解决方案:里边说明解决方案在/var/log/audit/audit.log里
解决方案是:restorecon -v /var/ftp/*
7.这个解决方案是软件setroubleshoot-server-3.2.17.e17.x86_64提供的
8.如果我们卸载这个软件,那么在/var/log/audit/audit.log里边就不会再有解决方案
(三).selinux影响服务所使用的资源
1.安装http服务
2.cat /etc/services |grep http 查看http的tcp协议使用默认端口为80
3.vim /etc/httpd/conf/httpd.conf 将第42行httpd的tcp协议端口修改为6666
4.systemctl restart httpd 这时候我们发现不能重启服务
5.setforence 0 将selinux的状态设置为警告
6.systemctl restart httpd 这时候我们发现可以重启服务,说明这是selinux的保护机制
7.semanage port -l | grep http 查看http服务的tcp协议默认端口列表里没有6666
8.semanage port -a -t http_port_t -p tcp 6666 将6666端口添加到tcp列表的默认端口中
9.semanage port -l | grep http 查看6666端口已经添加到tcp的端口列表中