Linux -- SELinux

SELinux概述

Security-Enhanced Linux的缩写,即安全增强型Linux,是一种采用安全架构的Linux系统,它能够让管理软更好的管控哪些人可以访问系统哪些资源。它最初是作为Linux的一系列补丁,由美国国家安全局(NSA)利用Linux安全模块(LSM)开发而成。

SELinux的工作原理

        SELinux定义了每个人对系统上的应用、进程和文件的访问权限,通过安全策略来强制执行策略所允许的访问。

        当应用或进程(主体)发出访问对象(如文件、端口)的请求时,SELinux会检查访问向量缓存(AVC),其中缓存有主题与对象的访问权限。

        如果SELinux无法根据缓存对权限做出访问决定,他会将请求发送到安全服务器。安全服务器。安全服务器随即检查应用或进程或文件的安全环境,确认其是否匹配SELinux策略数据库的安全环境。之后便根据检查授予权限或拒绝。

如果被拒绝,/var/log.messages中将会显示消息”avc:denied“

        形象的说,好比你(主体)去银行做项目,经理(电脑小白 -- SELinux)带你去机房,告诉你只能看哪哪哪的东西(策略),然后你问经理,我能不能看那,经理就看老板(管理员)留下的小本本(AVC),上面写了不能看,那就拒绝你,如果小本本中没有明确说明你不能看,那他就会跟懂安全的人士(安全服务器)打电话,问这块能不能给你看,安全人士看了看你要看的东西说,随便看,那你就能看,说不能看,然后就不让你看,并给你记到一张记录表中,记录你你想看哪哪哪被拒绝了

        变态的形容:你去你同事(陈某)家里,同事有事不在家,就他正在不穿衣服睡觉的老婆和他在学习的孩子狗蛋在家,你问狗蛋能不能看电视,小明看了看爸爸留下的纸条说可以,你说能不能看看保险柜,狗蛋一看纸条说不可以,你又问狗蛋,能不能进你妈妈的卧室,一下子给狗蛋问住了,纸条也没写能也没想不能,心想玩这么变态,狗蛋直接给110打电话问能不能,110一看这不纯纯变态嘛,马上告诉狗蛋不行,狗蛋很听话,不让你进去,并且把这件事写在了一个本本上,如果陈某回来看了本本,他直接警惕你!

自主访问控制(DAC)与强制访问控制(MAC)

        传统上,Linux和Unix系统都采用DAC。SELinux是Linux采用MAC机制的一个示例。

        对于DAC而言,文件和进程都有相应的所有者。可以让用户/群组/其他人拥有某个文件,用户可以自己更改自己文件的权限

        根用户对DAC系统拥有完全访问控制权。如果一个用户拥有根访问权,则可以访问其他任何用户的文件,或在系统上执行任何操作

        但在像SELinux这样的MAC系统上,访问权限有相应的管理设置策略。即使主目录上的DAC发生改变,SELinux策略也会组织其他用户或进程访问目录,从而保证系统的安全。

        SELinux策略可以让管理员针对性设置,并且涵盖大量进程。可以对SELinux进行更改,以限制用户、文件、目录等之间的访问。

SElinux标签和类型强制访问控制

        Selinux可以作为标签系统允许,即系统中的所有文件、进程和端口都具有与之关联的SELinux标签。标签可以按照逻辑将目标组合分类。在启动过程中,内核负责管理标签

        标签的格式为user:role:type:level(level)为可选项。user、role、level用于类似MLS的更高级的SELinux实施中。MLS极为复杂,通常只有政府机构才会使用,标签类型相对目标策略更加重要!!!

标签也叫安全上下文

        如何修改安全上下文,使用指令:chcon [-R] [-t type][-u user] [-r role] 文件

选项

含义

-R

连同该目录下的子目录也同时修改

-t

后面跟安全上下文的类型字段

-u

后面跟身份识别

-r

后面跟角色

        SELinux利用类型强制访问控制来强制执行系统中定义的策略。类型强制访问控制是SELinux策略的一部分,它定义了特定类型的经常能否访问标记为特定类型的文件

        系统默认的目录都有特殊的selinux安全上下文(标签),例如/var/www/html默认是httpd可以读取的目录。如果修改错误可以使用restorecon还原默认的安全上下文

restorecon [-Rv] 文件/目录

选项

含义

-R

连同子目录一起修改

-v

将过程显示到屏幕上

restorecon是怎么知道每个目录记载的selinux type呢?因为系统将每个目录的默认selinux type类型记录在/etc/selinux/targeted/contexts/目录内,但是这个目录内有很多不同的数据,所有可以使用semanage这个命令来查询与修改

怎么启动Selinux

        如果目前禁用了(disable)SELinux,则可以通过编辑/etc/selinux/config并设置SELINUX=permissive(宽容模式)来启动SELinux。因为SELinux尚未启用,最好不要立即强制执行,因为系统可能会出现误标记,会影响系统正常启动,应该在根目录下创建名为.autorelabel的空文件,然后重新启动,通过这样强制系统为整个文件重新标记SELinux。如果系统中错误过多,应在宽容模式(permissive)下重新启动,以确保启动成功。重新标记所有内容后,利用/etc/selinux/config将SELinux设置为强制模式(enforcing)并重新启动,或使用指令setenforce 1

        注意:/etc/selinux/config和/etc/sysconfig/selinux是同一个文件,后者只是前者的链接文件

        查看当前的模式,使用指令getenforce

SELinux常见问题

        1、标签错误:如果标签不正确,需要使用工具来修复标签

        2、策略修修复:需要将所作的更改通知SELinux或调整策略,可用布尔值或策略模块进行修复

        布尔值 -- 布尔值是SELiunx的开关设置,开关SELINUX功能的设置有几百种,许多设置已预定义。可使用指令:getsebool -a 查询系统中已设置的布尔值,设置布尔值使用指令setseboll指令

        例如:setsebool -p httpd_enable_homedirs,-p代表直接将设置写入配置文件

        3、策略有错误:直接消除 查看当前使用的策略,使用指令sestatus 查看selinux所有的策略,使用指令vim /etc/selinux/config,修改完策略需要重启才能生效

        4、系统已损坏:重装!

你可能感兴趣的:(liunx服务器入门到入坟,linux,运维,服务器)