Linux中内核级加强型防火墙selinux的管理详解
Posted 是大姚呀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中内核级加强型防火墙selinux的管理详解相关的知识,希望对你有一定的参考价值。
Linux中内核级加强型防火墙selinux的管理
一、SElinux的功能
SELinux 全称为安全增强式 Security-Enhanced Linux(SELinux),是 2.6 版本的 Linux 内核中提供的强制访问控制 (MAC)系统。对于目前可用的 Linux 安全模块来说,SELinux 是功能最全面,而且测试最充分的。对于其功能,我们可以通过下面几个现象进行更深入的了解:
现象一:
1)当Selinux未开启: 安装vsftpd服务,编辑vsftp服务的配置文件,允许匿名用户访问,在/mnt中建立文件,将该文件移动到/var/ftp下后,匿名用户访问ftp可以访问到该文件;编辑vsftp服务的配置文件,允许匿名用户上传文件,匿名用户访问ftp可以上传文件
查看vsftpd服务的默认共享目录及该服务程序的安全上下文时,显示?
2)当selinux开启: 编辑/etc/sysconfig/selinux,开启selinux,重启系统使设定生效,在/mnt中建立文件,将该文件移动到/var/ftp下后,匿名用户访问ftp不能访问到该文件;匿名用户可以通过设置后仍然不能上传文件
查看vsftpd服务的默认共享目录及该服务程序的安全上下文时,显示selinux为其加载的标签
现象二:selinux对于文件的影响
当selinux开启: 内核会对每个文件及每个开启的程序进行标签加载,标签内记录了程序和文件的安全上下文(context)
现象三:selinux对于程序功能的影响
当selinux开启: 内核会对程序的功能加载开关,并设定此开关的状态为关闭,当需要此功能时需要手动开启功能开关,此开关叫做sebool
二、Selinux的状态及管理
我们可以通过编辑/etc/selinux/config这一配置文件(也可以编辑/etc/sysconfig/selinux,该文件是/etc/selinux/config的一个软链接)来更改selinux的状态:
SELINUX=disabled——selinux关闭
SELINUX=enforcing ——selinux开启并设定为强制状态
SELINUX=permissive ——selinux开启并设定为警告状态
注意: selinux开启或关闭需要重启系统才能使设定生效
selinux的状态可以通过getenforce
查看,当selinux开启后可以通过setenforce 0—警告
和setenforce 1—强制
进行强制和警告状态的转换。当selinux为enforcing强制状态时,不符合安全条件的操作一定不被允许,并且会收到警告信息;当selinux为permissive警告状态时,不符合安全条件的操作被允许,并且会收到警告信息,我们可以在selinux日志位置/var/log/audit/audit.log处查看相应的警告信息。
实验步骤:
1)编辑/etc/selinux/config开启selinux,重启系统使设定生效,此时selinux为enforcing强制状态
2)在/mnt中建立文件,将该文件移动到/var/ftp下后,匿名用户访问ftp不能访问到该文件,在/var/log/audit/audit.log处可以查看到相应的警告信息
3)更改selinux为permissive警告状态,匿名用户再次访问ftp可以访问到该文件,在/var/log/audit/audit.log处可以查看到相应的警告信息
三、Selinux的安全上下文
1、查看安全上下文
ls -Z ##查看文件的安全上下文
ls -Zd ##查看目录的安全上下文
ps axZ ##查看进程的安全上下文
2、修改安全上下文
a)临时修改安全上下文
chcon -t 标签 文件|目录
:修改文件/目录的安全上下文
chcon -Rt 标签 目录
:修改目录及目录中的所有子文件的安全上下文
注意: chcon更改安全上下文标签的操作是临时设定,重启系统后(selinux会重置其安全上下文)会复原
实验步骤:
1)在/mnt中建立文件,查看该文件的安全上下文, chcon更改该文件安全上下文标签,再次查看可以看到标签已更改,建立/.autorelabel文件后重启系统,当/.autorelabel文件存在,重启时selinux会重新初始化
2)再次查看/mnt中新建文件文件的安全上下文,其标签复原,而/var/ftp安全上下文标签固定,是因为在内核安全上下文列表中有记载,我们新建立的文件在内核安全上下文列表中无记载
b)永久修改安全上下文
如果需要永久指定安全上下文,需要修改内核安全上下文列表,具体操作如下:
实验步骤:
1)新建目录,修改内核安全上下文列表即使用semanage指定目录及目录中内容的安全上下文标签(’/目录(/.*)?'必须使用单引号因为双引号无法转译?),修改后ls -Z查看该目录的安全上下文标签,设定不会立即生效,需要使用restorecon刷新信息后才生效
四、Sebool
当selinux开启时内核会对程序的功能加载开关,并设定此开关的状态为关闭,当需要此功能时需要手动开启功能开关,此开关叫做sebool。
实验步骤 :
1)selinux开启状态下,开启vsftpd服务,访问ftp,上传/etc/passwd文件,553报错即文件系统权限限制,需要更改默认共享目录/var/ftp的权限为755、pub/的权限为777,权限设置完成后仍不能上传(553报错),此时需要在内核安全上下文列表中设置/var/ftp/pub/的读写权限,restorecon刷新信息,还要修改内核安全上下文中ftp允许匿名用户写的功能开关的布尔值为真
2)完成上述操作后,匿名用户访问ftp才能够成功上传文件
五、Seport
当selinux开启时内核会限制程序、服务使用端口号的范围,我们可以通过以下操作修改seport。
实验步骤:
1)selinux开启状态下,安装并开启httpd服务,编辑httpd服务的配置文件,修改http服务的默认端口为8888,重启服务失败,这是因为系统内核防火墙selinux会限制http服务所使用的端口号范围,将selinux设置为警告模式可以重启服务
2)另一种解决方案是在内核安全上下文列表中为http服务添加8888端口号,添加完成后,将selinux设置为强制模式也可以成功重启服务
六、setroubleshoot
setroubleshoot软件可以帮助我们采集selinux日志/var/log/audit/audit.log中的警告信息并分析得到解决方案存放到/var/log/messages中(先采集再分析,即需要先查看/var/log/audit/audit.log再查看/var/log/messages)。
实验步骤:
1)selinux为enforcing强制状态下,安装setroubleshoot软件,在/mnt中建立文件,将该文件移动到/var/ftp下后,匿名用户访问ftp不能访问到该文件,在/var/log/audit/audit.log处可以查看到相应的警告信息
2)查看/var/log/messages,可以得到相应解决方案
3)按照解决方案完成相应操作后,匿名用户访问ftp可以成功访问到该文件
4)卸载setroubleshoot软件后,在/mnt中建立另一个文件,将该文件移动到/var/ftp下后,匿名用户访问ftp不能访问到该文件,在/var/log/audit/audit.log处可以查看到相应的警告信息,但/var/log/messages中无内容
以上是关于Linux中内核级加强型防火墙selinux的管理详解的主要内容,如果未能解决你的问题,请参考以下文章