Part3.2——Linux中内核级加强型火墙的管理(Selinux)

目录

一、Selinux的功能

1、观察现象

2、Selinux简介

二、Selinux的状态及管理

1、Selinux配置文件的管理

2、Selinux的开启或关闭

3、Selinux状态的查看

4、Selinux开启后强制和警告级别的转换

5、Selinux日志

三、Selinux的安全上下文

1、查看安全上下文

2、修改安全上下文

(1)临时修改

(2)永久修改

四、SEBOOL

1、实验背景

五、seport改变服务端口

第一步:更改sshd服务的端口信息

第二步:测试

 3、扩展知识

六、setrouble

模拟问题:

七、本章总结


一、Selinux的功能

1、观察现象

Selinux未开启时:

在ftp服务器的匿名用户的默认发布目录下,从其他文件目录下新建一个文件,并移动到发布目录下。在客户机使用匿名身份访问,可以看到这个文件。

Selinux已开启时: 

Selinux从关闭到开启需要重启系统,在重启系统的时候对所有文件进行安全上下文校验。所以可以看到在上一步中没有安全上下文的文件“testfile”有了属于此目录的安全上下文;而重新从其它地方移动过来的文件“testfile1”的安全上下文为“mnt_t”,不属于此目录下的。所以匿名用户在客户机上通过ftp访问的时候看不到这个文件。

2、Selinux简介

对于文件的影响:
当selinux开启时,内核会对每个文件及每个开启的程序进行标签加载,标签内记录程序和文件的安全上下文(context)

对于程序功能的影响:
当selinux开启会对程序的功能加载开关,并设定此开关的状态为关闭,当需要此功能时需要手动开启功能开关,此开关叫做sebool

二、Selinux的状态及管理

1、Selinux配置文件的管理

##编辑Selinux配置文件
vim /etc/sysconfig/selinux
vim /etc/selinux/config

 两种编辑Selinux配置文件的方式都可以,因为第一种方式的文件指向的是第二种方式的文件。

2、Selinux的开启或关闭

SELINUX=enforcing                #Selinux开机设定为强制状态(此状态为开启状态)
SELINUX=permissive               #Selinux开机设定为警告状态(此状态为开启状态)
SELINUX=disabled                 #Selinux关闭

 注意:Selinux状态开启关闭需要重启系统

3、Selinux状态的查看

getenforce

4、Selinux开启后强制和警告级别的转换

setenforce 0            #警告
setenforce 1            #强制

 

5、Selinux日志

Selinux日志的存储位置:

/var/log/audit/audit.log

三、Selinux的安全上下文

1、查看安全上下文

lz -Z#查看文件的安全上下文
ls -Zd#查看目录的安全上下文
ps Zax#查看进程的安全上下文

2、修改安全上下文

(1)临时修改

此方法修改的安全上下文会在Selinux重启后还原

#chcon -t     标签            文件|目录
chcon -t public_content_t  /var/ftp/testfile      #修改单个文件的安全上下文
chcon -Rt public_content_t  /var/ftp/testdir     #修改目录及目录中所有子文件的安全上下文

不加参数<-R>则只改变目录本身的安全上下文,不会改变目录子文件的安全上下文。

(2)永久修改

如果需要特殊指定安全上下文需要修改内核的安全上下文列表

semanage fcontext -l            #查看内核的安全上下文列表
semanage fcontext -a -t public_content_t '/westosdir(/.*)?'
                                #永久更改westosdir及其下属文件的安全上下文
restorecon -RvvF /westosdir/    #同步安全上下文

第一步:创建实验环境

在目录</mnt>下创建一个目录和三个文件,目录中也包含三个文件。查看这些文件的安全上下文都是“mnt_t”

第二步:修改目录及下属文件的安全上下文

可以看到,仅仅是修改还不够,需要执行同步安全上下文命令将更改后的同步上去。

第三步:同步目录(或文件)的安全上下文

同步完成后,可以看到该目录及下属文件的安全上下文已全部更新了。

四、SEBOOL

1、实验背景

第一步:

在ftp服务器的Selinux开启的情况下,即使更改vsftpd服务的配置文件为匿名用户允许上传,在客户机中也无法上传文件。

第二步:

查看了Selinux对vsftpd服务的限制,可以看到,Selinux默认是不允许匿名用户上传文件的。

getsebool -a                     #显示服务的bool值
getsebool -a | grep ftp          #过滤ftp服务的bool值

第三步:更改ftp服务的bool值,使得其允许匿名用户上传文件。

setsebool -P ftpd_anon_write on          #更改Selinux匿名用户上传文件的bool值

第四步:更改pub目录的权限

semanage fcontext -a -t pubilc_content_rw_t '/var/ftp/pub(/.*)?'
                                         #给pub目录安全上下文写权限
restorecon -RvvF /var/ftp/pub            #同步安全上下文列表
#以下两个权限也需要改,否则会导致匿名用户我无法上传文件
chmod 775 /var/ftp/pub                    #给目录775权限
chgrp ftp /var/ftp/pub                    #更改目录的所有组

这里权限的意思包括但不限于:(1)pub的“775”权限、(2)pub的安全上下文权限、(3)pub的所有人所组权限。

 第五步:测试

只有pub目录有权限,所以可以上传文件成功,testdir目录没有更改权限,用户无法上传文件。

五、seport改变服务端口

以sshd服务为例,默认的是通过22端口,现在在Selinux开启的情况下该怎么更改服务端口呢?

步骤如下:

第一步:更改sshd服务的端口信息

semanage port -l | grep sshd                      #查看服务端口信息
semanage port -a -t ssh_port_t -p tcp 2222        #为sshd服务增加一个2222端口
semanage port -d -t ssh_port_t -p tcp 2222        #删除sshd服务的2222端口

可以看到,默认sshd服务端口为22,在第一次更改sshd配置文件的端口时,重启服务会报错,原因是sshd没有这个端口,通过<semanage port>命令为sshd服务增加一个2222的端口,重启sshd服务不再报错。

第二步:测试

在客户机上指定更改后的端口,就可以连接了。(不指定端口时使用的时默认的22端口,无法连接)

 3、扩展知识

注意:需要为sshd服务添加多个端口的话,可以先通过<semansge port>增加端口,再更改sshd服务的配置文件。

 在客户机中测试:

指定端口22和2222都可以通过ssh服务连接服务机,不指定端口时默认是22端口,也可以连接。

六、setrouble

一般在遇到错误时,<setroubleshoot-server>服务会把报错信息和解决方案分别存在以下日志中。仅当这个服务运行的时候才会有记录,没有运行就不会有记录。

setroubleshoot-server此软件功能是采集警告信息并分析得到解决方案存放到messages中
/var/log/audit/audit.logSelinux警告信息
/var/log/messagesSelinux问题解决方案

模拟问题:

第一步:在sshd服务的配置文件中故意写一个没有的端口,重启服务,查看报错信息

 第二步:查看</var/log/messages>中的解决问题方案

找到这一行,复制这段命令,执行后就可以看到解决方案。

 这里已经把出错信息和解决方案都给出来了,按照解决方案给的步骤执行就可以解决问题。

第三步:执行解决方案

执行这两部解决方案后,sshd服务已经可以启动了。

 第四步:测试

在客户机中,已经可以通过ssh指定端口连接上服务机了

七、本章总结

1、<chcon>命令临时修改文件或目录的安全上下文,重启系统并不会恢复,只有在重启Selinux的时候才会恢复到修改前的安全上下文。

2、Selinux开启的情况下,sebool的设定这里,客户机的匿名用户想要上传文件,需要从以下几个方面入手:

(1)vsftpd服务的配置文件设定是否有误、(2)pub目录的安全上下文的写权限、(3)pub目录的“775”权限、(4)pub目录的所有人所有组权限

3、setrouble工具提供的解决办法很实用,是可以解决问题的,但是在最后测试的过程中,也不知道原理是啥。Selinux中并没有增加sshd服务的端口,但是修复后客户机还是可以通过未指定的端口访问。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值