Linux中的内核级加强型火墙SELinux

SELinux(Security-Enhanced Linux)是一种内核级的安全子系统,通过限制服务进程访问资源来增强系统安全性。它通过安全上下文控制文件和程序的访问权限,同时管理sebool值以控制程序功能。SELinux有enforcing、permissive和disabled三种工作模式,可以通过getenforce查看状态,并用setenforce切换。安全上下文的查看和修改涉及chcon和semanage命令,而sebool用于管理程序功能开关。此外,seport用于管理服务使用的端口。
摘要由CSDN通过智能技术生成

一、什么是SELinux

安全增强型火墙SELinux(Security-Enhanced Linux)是Linux的一个内核模块,也是Linux的一个安全子系统

二、SELinux的作用

SELinux的主要作用就是最大限度地减小系统中服务进程可以访问的资源:

在没有使用SELinux的操作系统中,决定一个资源是否能被访问的因素是这个资源是否拥有对应用户的读、写、执行的权限;而在使用了SELinux的操作系统中,决定一个资源是否能被访问的因素除了上述之外,还需要判断每一类进程是否拥有对某一类资源的访问权限

这样一来,即时进程是以超级用户root身份进行的,系统也会判断这个进程的类型以及被访问资源的类型才能决定是否能被访问某个资源,进程的活动空间也可以被压缩到最小

SELinux对文件的影响:

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

SELinux对程序的影响:

当selinux开启时,内核会对程序的功能加载开关(sebool),并设定此开关的状态为关闭;当使用此功能时需要手动开启功能开关

SELinux状态对文件和程序的影响效果

当selinux未开启时

当selinux开启时

selinux开启时,内核对Vsftpd服务程序的功能加载了开关,如上图匿名用户的写入功能开关为关闭状态,所以导致即使Vsftpd的配置文件中允许了匿名用户上传,但因为匿名用户写入的功能未开启,导致匿名用户无法上传文件 

三、SELinux的状态及管理

selinux有三种状态(工作模式):

enforcing                ##强制模式===违反SELinux规则的行为将被阻止并记录到日志中

permissive                ##警告模式===违反SELinux规则的行为会被允许且会收到警告,也会记录到日志中

disabled                ##SELinux关闭

日志位置:/var/log/audit/audit.log

日志服务:auditd.service

操作者可以在selinux的配置文件 /etc/selinux/config 中更改其状态

在此文件中更改selinux状态时需重启系统才能生效

selinux状态查看命令:getenforce

selinux开启后强制模式和警告模式的切换:

setenforce  0 ==== permissive

setenforce  1 ==== enforcing

 四、SELinux的安全上下文

1、安全上下文的查看

ls  -Z                ##查看文件的安全上下文

ls  -Zd                ##查看目录的安全上下文

ps  auxZ                ##查看进程的安全上下文

 2、安全上下文的修改

临时修改

chcon  -t  标签  文件/目录        ##更改文件或目录的安全上下文

chcon  -Rt  标签  目录        ##更改目录及目录中内容的安全上下文

 此方式修改的安全上下文在系统(selinux)重启后后自动还原;这是因为更改的文件的安全上下文在内核安全上下文列表中无记载

永久更改

如果需要永久修改文件或目录的安全上下文,需要将修改的文件的安全上下文同步到内核安全上下文列表中

semanage  fcontext  -l                ##查看内核安全上下文列表

semanage  fcontext  -a  -t  public_content_t  '/linux(/.*)?'                ##添加内核级安全上下文列表'(/.*)?' 为固定搭配可目录使此及目录下的文件的安全上下文保持一致

restorecon  -RvvF  /linux                ##恢复SELinux文件属性即恢复文件的安全上下文(-R=递归;-F=指定文件;-v=显示过程)

五、Sebool

SELinux开启时内核会对程序的功能加载开关,此开关就叫做sebool值

getsebool  -a                ##查看程序功能的开关状态

setsebool  -P  ‘功能’  on/off                ##更改程序功能的开关状态

六、Seport

selinux开启时,内核会限制程序、服务使用的端口

semanage  port  -l                ##查看程序使用的端口

可以通过以下方式修改端口:

服务文件修改端口

将httpd服务的端口在其配置文件中修改为12,重启服务失败;这是因为selinux限制了httpd服务使用的端口范围,在将selinux更改为警告模式后,httpd服务可以重启成功

内核安全上下文列表添加端口

semanage  port  -a  -t  http_port_t  -p  tcp  12                ##在内核安全上下文列表中添加服务端口

semanage  port  -d  -t  http_port_t  -p  tcp  12                ##在内核安全上下文列表中删除服务端口

如上图,在内核安全上下文中添加http服务使用的端口号之后,在selinux=enforcing状态下也可以成功重启服务

七、setroubleshoot

setoubleshoot是SELinux的排错软件工具;其可以采集selinux的日志/var/log/audit/audit.log 中的警告信息并分析得到解决方案存放至 /var/log/messages 中

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值