selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错

一,Security-Enhanced  Linux

SELINUX ( 安全增强型 Linux ) 是可保护系统安全性的额外机制,在某种程度上 , 它可以被看作是与标准权限系统并行的权限系统。在常规模式中 , 以用户身份运行进程 , 并且系统上的文件和其他资源都设置了权限标签(控制哪些用户对哪些文件具有哪些访问权,SELINUX 的另一个不同之处在于 , 若要访问文件 ,你必须具有普通访问权限和 SELINUX 访问权限。因此 , 即使以超级用户身份root 运行进程 , 根据进程以及文件或资源的 SELinux 安全性上下文可能拒绝访问文件或资源 )

上下文的重要部分是第三个用冒号分隔的字段。

什么确定文件的初始 SELinux 上下文 ? 通常是父目录。将父目录的上下文指定给新创建的文件, touch命令时会产生作用 , 但是如果文件是在其他位置创建的并且保留了权限 ( mv  ) 则还将保留 了原来文件的SELinux上下文,移动到其他目录下是不会更改的。

注意:移动不会改变安全上下文,因为移动相当于是重命名,不会影响属性,而cp复制数据之后还会改属性。

二,开启selinux策略

1,getenforce查看selinux是否开启

[[email protected] ~]# getenforce

Disabled                ###没有开启

此时-Z查看文件###ps 、 ls 、 cp都可以设置或者显示安全上下文

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错


2,vim /etc/sysconfig/selinux 

SELINUX=disabled 改为enforcing

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错

3,reboot

此时-Z查看文件,出现了安全上下文

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错

三,安全上下文的临时修改

enforcing - SELinux security policy is enforced.          setenforce  1    ###强制

permissive - SELinux prints warnings instead of enforcing.             setenforce  0    ###警告

enforcing和disabled转换时需要修改配置文件并重启

1,在student用户家目录中建立文件file1

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错

2,在/mnt下建立文件file2,并且将file2移动到student用户家目录

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错

不要用cp,cp文件的安全上下文会改变,mv不会

3,student用户登陆ftp查看

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错

4,由于是enforcing强制模式,file1和file2安全上下文不一样,所以看不到file2

方法一:改为permissive警告模式

[[email protected] student]# getenforce
Enforcing
[[email protected] student]# setenforce 0
[[email protected] student]# getenforce

Permissive

注意:警告模式虽然也能看到,但是这是不安全的,并且这样开启selinux就没了意义。

再次查看

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错

方法二:chcon直接修改file2的安全上下文,使其和file1一样

chcon - change file SELinux security context

chcon   -t    xxx   file  ###-t是设置文件的安全上下文

                                       ###-R 是第归设置(目录本身和下面的所有文件)

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错####两者安全上下文一样

注意:这种开启是一次性的,当重启selinux(> disabled reboot > enforcing reboot )之后又会改变过来,但是方法二中,由于已经移动到student目录下面的,所以重启之后表面上看安全上下文还是user_home_t,但实际上安全上下文是其修改为enforcing之后系统加的,只是和我们自己chcon加的一样。

5,目录本身的安全上下文和目录下面的文件的安全上下文是一样的。

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错

semanage fcontext -l | grep /var/ftp  ###过滤ftp目录下面的所有文件

semanage fcontext- SELinux Policy Management file context tool

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错

这里不能grep /var/ftp/ 否则得到的不是ftp目录本身的,无法提供更改ftp目录下文件安全上下文的有效信息

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错

/var/ftp(/.*)?  是指/var/ftp以及下面的所有文件(包括隐藏文件)的所有文件的所有文件.....

/var/ftp(/.*)?  === /var/ftp/* === /var/ftp/*/*/*

四,安全上下文的永久修改

1,首先修改ftpd的默认发布目录,建立文件,firefox测试  ###注意是在强制模式下,警告模式没意义

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错

网页测试

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错###看不到file

2,修改为永久的安全上下文

[[email protected] ftpdir]# semanage fcontext -l | grep /ftpdir   ####查看内核识别的安全上下文,发现/ftpdir不在列表中

semanage fcontext -a -t public_content_t '/ftpdir(/.*)?'   ####-a 添加 -t安全上下文类型

                                                                                                    ###/ftpdir(/.*) 对文件本身和里面的所有隐藏文件

                                                                                                     ###?匹配单个文件

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错###出现搜索结果

3,restorecon -FvvR   /ftpdir  ###刷新列表,否则安全上下文还是没有改变

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错

###结果显示更改了安全上下文,网页可见

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错

五,如何修复selinux?

selinux启用过程中出现了问题,建立/.autorelable文件,然后直接reboot,这个过程相当于(> disabled reboot 然后 > enforcing reboot)

六,selinux对服务功能的影响


1,对ftp的影响

###警告模式

###可以上传文件,但是这样没意义,和不开启selinux一样

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错

###强制模式

###不可以随便上传文件

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错

###强制模式下上传文件

强制模式下有服务的布尔值

getsebool - get SELinux boolean value(s)

-a     Show all SELinux booleans.

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错###上传功能关闭

开启强制模式下的ftp_home_dir功能

setsebool -P ftp_home_dir on       ###-P表示永久

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错

此时ftp可以正常上传

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错

注意:

#1,getsebool -a | grep ftp 这个是查看与ftp有关的开关 ftp_home_dir --> on 时可以在lftp上面上传文件,前提是要对改目录有写的权限

#2,/.autorelable在这里就可以使用,如果打开开关,但是getsebool -a | grep ftp却查看不到,就建立此文件,然后reboot


2,对httpd的影响

传输协议:udp是不管对方在不在就发送给你(短信,速度快),tcp存在三次握手过程(接视频,http,安全)

端口:系统能开启的端口是2^32或2^64(这个和系统是多少位有关),但是一般不使用1024之后的,1024之后一般是随即开启的,http的默认端口是80,https的默认端口是443

修改端口:修改端口是要确定端口好没有服务使用的,比如21端口是ftp使用了,就不能再把其他服务端口修改为21

vim /etc/httpd/conf/httpd.conf
Listen 6666      ###把端口80修改为6666
[[email protected] ftp]# systemctl restart httpd    ####在强制模式写这样是启动不了的
Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.
[[email protected] httpd]# setenforce 0

[[email protected] httpd]# systemctl restart httpd   ###为0的情况下能启动,但是为0的情况是警告模式,这样是不安全的

semanage port -l查看端口号,http的端口是80,81,433......但是没有6666

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错

semanage port -a -t http_port_t -p tcp 6666  ####添加6666到列表里面###注意格式,可以man semanage port查看格式

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错

#####此时服务可以成功启动

注意:

cat /etc/services | grep http 和semanage port -l | grep http 都可以查看服务和对应的端口号

不过semanage port一般是查看服务有哪些端口,/etc/services是查看服务在使用哪一个端口


七,setroubleshoot系统自动排错

1,westos文件的安全上下文和ftp目录是不一样的,网页上是看不见的

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错###清空日志

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错###访问时会产生日志

2,[[email protected] pub]# cat /var/log/messages ###这里面会产生新的日志并且setroubleshoot会分析日志自动给出排错指令

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错

restorecon -v '$FIX_TARGET_PATH'      ####$FIX_TARGET_PATH就是路径

3,执行setroubleshoot分析给出的排错指令

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错####看这个结果其实就是更改了安全上下文

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错

注意:

1,setroubleshoot这个排错只是给出了一种解决方案,很多情况下是不安全的

2,如果卸载了这个软件,/var/log/messages 里面就没有解决方案了

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错

3,访问日志文件其实是在/var/log/audit/audit.log里面

selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错



##############################################################################

 yum clean all没有结果时可能需要kill 进程
selinux基本概念 | 开启selinux策略 | 安全上下文的临时修改 | 安全上下文的永久修改 | 如何修复selinux | selinux对服务功能的影响 | 系统自动排错