SElinux

SElinux

概述

SELinux全称是Security Enhanced Linux,由美国国家安全部(National Security Agency) 领导开发的GPL项目,它拥有一个灵活而强制性的访问控制结构,旨在提高Linux系统的安全性,提供强健的安全保证,可防御未知攻击,相当于B1级的军事安全性能。比MS NT的C2等高得多。

SELinux起源于自1980开始的微内核和操作系统安全的研究,这两条研究线路最后形成了一个叫做的分布式信任计算机(Distribute Trusted Mach (DTMach))的项目,它融合了早期研究项目的成果 (LOCK【锁】,它包含一组安全内核类型强制;Trusted Mach【信任计算机】,它将多层安全控制合并到计算机微内核中)。美国国家安全局的研究组织参加了DTMach项目,付出了巨大努力,并且继续参与了大量的后续安全微内核项目。最终,这些工作和努力导致了一个新的项目产生,那就是Flask,它支持更丰富的动态类型的强制机制。

由于不同平台对这这项技术没有广泛使用,NAS认为需要在大量的社团中展示这个技术,以说明它的持久生命力,并收集广泛的使用支持意见。在1999年夏天,NSA开始在Linux内核中实现Flask安全架构,在2000年十二月,NSA发布了这项研究的第一个公共版本,叫做安全增强的Linux。因为是在主流的操作系统中实现的,所以SELinux开始受到Linux社区的注意,SELinux最迟是在2.2.x内核中以一套内核补丁的形式发布的。

随着2001年Linux内核高级会议在加拿大渥太华顺利召开,Linux安全模型(LSM[7])项目开始为Linux内核创建灵活的框架,允许不同的安全扩展添加到Linux中。NSA和SELinux社区是SELinux的主要贡献者,SELinux帮助LSM实现了大量的需求,为了与LSM一起工作,NSA开始修改SELinux使用LSM框架。2002年八月LSM核心特性被集成到Linux内核主线,同时被合并到Linux 2.6内核。2003 年八月,NSA在开源社区的帮助下,完成了SELinux到LSM框架的迁移,至此,SELinux进入Linux 2.6内核主线,SELinux已经成为一种全功能的LSM模块,包括在核心Linux代码集中。

数个Linux发行版开始在2.6内核中不同程度使用SELinux特性,但最主要是靠Red Hat发起的Fedora Core项目才使SELinux具备企业级应用能力,NSA和Red Hat开始联合集成SELinux,将其作为Fedora Core Linux发行版的一部分。在Red Hat参与之前,SELinux总是作为一个附加的软件包,需要专家级任务才能进行集成。Red Hat开始采取行动让SELinux成为主流发行版的一部分,完成了用户空间工具和服务的修改,默认开启增强的安全保护。从Fedora Core 2开始,SELinux和它的

支持基础架构以及工具得到改进。在2005年早些时候,Red Hat发布了它的Enterprise Linux 4(RHEL 4),在这个版本中,SELinux默认就是完全开启的,SELinux和强制访问控制已经进入了主流操作系统和市场。

应用SELinux后,可以减轻恶意攻击或恶意软件带来的灾难,并提供对机密性和完整性有很高要求的信息很高的安全保障。普通Linux安全和传统Unix系统一样,基于自主存取控制方法,即DAC,只要符合规定的权限,如规定的所有者和文件属性等,就可存取资源。在传统的安全机制下,一些通过setuid/setgid的程序就产生了严重安全隐患,甚至一些错误的配置就可引发巨大的漏洞,被轻易攻击。

而SELinux则基于强制存取控制方法,即MAC,透过强制性的安全策略,应用程序或用户必须同时符合DAC及对应SELinux的MAC才能进行正常操作,否则都将遭到拒绝或失败,而这些问题将不会影响其他正常运作的程序和应用,并保持它们的安全系统结构。

DAC和MAC

SELinux出现之前,Linux上的安全模型叫DAC,全称是Discretionary Access Control,翻译为自主访问控制。DAC的核心思想很简单,就是:进程理论上所拥有的权限与执行它的用户的权限相同。

比如,以root用户启动进程,那么该进程就有root用户的权限,在Linux系统上能干任何事情;

MAC(Mandatory Access Control),强制访问控制,即任何进程想在SELinux系统中干任何事情,都必须先在安全策略配置文件中赋予权限。凡是没有出现在安全策略配置文件中的权限,进程就没有该权限;

DAC:

1.自主访问控制

2.主体(Process)的权限Capability决定了它能访问和操作什么ROOT进程可以访问和操作一切!

3.传统(legacy)Linux的安全模式,基于UID/GID/Capability

MAC:

1.强制访问控制

2.系统的Policy决定了主体能操作访问哪些客体

3.即便是ROOT进程,系统Policy配置了你能做什么,你只能做什么,在下MAC模式,ROOT进程和普通进程是无区别对待的。

在这里插入图片描述

selinux的操作

chcon 修改安全上下文

chcon -t samba_share_t index.html

httpd 的安全上下文是httpd_sys_content_t

ps auxZ | grep httpd

Z可以查看安全上下文

ls -lZ 可以查看文件的安全上下文

semanage fcontext -l

可以查看安全上下文的配置

selinux 的安全上下文配置

restorecon /var/www/logs/

重新加载 /var/www/logs目录的安全上下文

semanage fcontext -a -t httpd_sys_content_t '/web(/.*)?'

给/web 目录下所有的文件配置安全上下文为httpd_sys_content_t

  • a 为添加
  • t 指定安全上下文类型

restorecon -Rv .

重新加载当前目录的安全上下文

  • R 表示递归
  • v 表示显示详细信息

touch /.autorelabel

重启的时候会把系统里的所有文件重新打标安全上下文,重启完之后该文件将会被删除

httpd配置文件中修改了配置文件中的端口号后,启动会失败,因为selinux未打selinux标记

semanage port -a -t http_port_t -p tcp 12345

将12345端口打上selinux标志

semanage port -l | grep 12345

getenforce 获取当前selinux状态

1、Enforcing 强制模式,只有满足selinux的才允许访问

2、Permissive 宽容模式,不满足的,再日志中报错,但是不阻止访问,日志放置在/var/log/audit/audit.log

3、Disable 当前selinux 为关闭

setenforce 0 设置为Permissive

setenforce 1 设置为Enforcing

这两种设置都是临时的,这两种selinux都是开启的

setenforce 不能设置disable

配置文件中修改:

/etc/selinux/config 修改配置文件后,要重启后才生效

SELINUX=disabled 重启后selinux才是关闭状态

disabled 改为enforcing 或者 permissive 时,状态互换,重启操作系统时,会重新打标

semanage boolean -l | grep samba

查看安全上下文的某些权限是否允许

setsebool -P samba_create_home_dirs off 关闭 samba_create_home_dirs

具体设置,要看服务的官方文档要设置哪些

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值