selinux学习理解
SElinux学习总结
SElinux学习体会学习目的:(1)掌握SElinux控制策略的查询修改方式。
(2)对SElinux的控制范围进行初步的了解。
(3)了解SElinux从进程初始化、继承和程序执行三个方面通过策略进行访问控制。
学习内容:(1)SElinux的三种状态模式:enforcing(强制模式)、permissive(警告模式)、disabled(关闭模式),可通过getenforce 命令判断SElinux所处状态,setenforce 0/1命令进行强制/警告模式的转换。
(2)查看文件的上下文值SElinux将每个程序都编入到SElinux域内,同时将每个资源放在SElinux安全上下文中,然后根据SElinux策略定义哪个进程可以访问哪些资源。
使用命令ls -Z可以查看文件的上下文值。
其中的第三个字段为文件标记字段,记录了文件的类型。
(3)SElinux的访问控制我们知道,context值是受上一级目录影响的,一般情况下它们会继承上一级目录的context值。
Tmp目录和html目录拥有不同的标记类型,tmp目录下的index.html文件context值第三个字段是tmp_t,而html目录下的index.html文件context值第三个字段为httpd_sys_content_t。
在开启httpd服务器后,通过浏览器访问网址,并切换SElinux的状态模式,判断SElinux策略是否对Apache 网站目录下的文件有访问控制的功能。
①在默认模式下,用浏览器打开index.html文件,文件的标记为httpd_sys_content_t,可以正常访问文件。
②用chcon -t tmp_t命令,修改文件的context值,文件的标记变为tmp_t,再用浏览器打开index.html文件,会出现错误提示。
③用restorecon -v命令,按照SElinux的目标策略恢复文件的默认标记,文件的标记变为httpd_sys_content_t,可以正常访问文件。
SELINUX详解
SELINUX知识点Security Enhenced linux如果某个用户需要以root权限执行某条命令怎么办?如果某个用户a想要与用户b共同享有某个文件的全部权限怎么办?进程安全上下文 context进程是用户获取资源的代理一个进程在运行过程中对哪些文件具有访问权限是由进程的发起者的权限决定的试想如果你的web服务器是以webman这个用户的身份运行的他对系统中所有o上置r的文件都具有读权限如果某个人劫持了web服务器那么他就获得了webman的所有权限他可以利用缓冲区溢出漏洞set uid等多种方式获得权限提升进而劫持整个系统此时传统的DAC模式就无法防范这种攻击DAC 自主访问控制用户自主决定属于自己的文件权限MAC 强制访问控制内核定义了所有用户包括root 的权限由selinux决定由内核实现当进程不运行时只是文件Subject 是正在内存中执行的进程object 动作承受者进程文件套接字是否一个subject能够操作一个object 取决于selinux的定义在一个进程需要运行以完成某种任务时 selinux为此进程规定了一个运行环境sandbox,此环境限制了此进程可以进行的操作和可以访问的文件此时这个进程可以活动的范围就由selinux限定如果是传统的DAC 此进程的行为权限则由运行它的用户的权限决定,此时它的活动范围是整个系统selinux将进程分类将资源分类定义了那个进程在哪个范围内运行只能访问哪些资源此时不管它对其它的资源有读写权限此时只要selinux不允许它就不能访问(1)首先设置开启selinux的全局设置:查看和设置selinux状态、配置文件、配置选项:临时查看和设置:#getenforce //查看selinux状态#sestatus –bv //查看系统当前运行的selinux的状态#semodule –l //查看selinux加载的内核模块#sealert -a /var/log/audit/audit.log //查看selinux错误日志#system-config-selinux //SElinux的图形化管理工具#setenforce 1/0 // 把selinux临时设为enforcing/permissivels -Z ps -Z id -Z //分别可以看到文件,进程和用户的SELinux属性seinfo //查询SElinux的policy信息查看文件系统的扩展属性:getfattr[root@linuxas ~]# getfattr -m. -d /etc/passwdgetfattr: Removing leading '/' from absolute path names# file: etc/passwdsecurity.selinux="system_u:object_r:etc_t:s0\000"查看的文件的 security.selinux 属性中储存了此文件的安全上下文, 所以上面例子中的上下文就是system_ubject_r:etc_t 。
selinux基本工作原理
selinux基本工作原理SELinux(Security-Enhanced Linux)是一个在Linux内核中实现的强制访问控制(MAC)系统。
其基本工作原理是通过在系统中强制执行安全策略,对进程的访问和操作进行更为细致和精确的控制,以增强系统的安全性。
以下是SELinux的基本工作原理:1.策略定义:SELinux的工作始于一个称为"策略"的定义。
策略规定了哪些主体(如进程、用户)有权执行哪些操作(如读、写、执行),以及在哪些对象(如文件、目录)上执行这些操作。
策略是由安全策略管理器生成和维护的。
2.标签:SELinux为系统上的每个对象和主体分配唯一的安全标签。
这些标签包含了有关对象和主体的信息,如它们的角色、类型和安全上下文。
标签的引入使得SELinux能够在更细粒度上进行访问控制。
3.强制访问控制:SELinux通过在系统中实施强制访问控制来执行定义的策略。
传统的Linux访问控制是基于自愿访问控制(DAC),而SELinux引入了强制访问控制(MAC)。
这意味着即使用户具有访问某个资源的权限,如果SELinux规则不允许,则该用户也无法访问。
4.安全上下文:SELinux使用安全上下文来定义对象和主体的标签。
安全上下文包括类型(type)、角色(role)和用户(user)。
这些信息在策略中定义,并通过标签与对象和主体相关联。
5.审计日志:SELinux还提供了审计功能,可用于记录系统上发生的安全事件。
审计日志记录包含有关SELinux决策的信息,以及与安全策略违规相关的详细信息。
总体而言,SELinux通过实施强制访问控制和基于安全标签的访问规则,提供了比传统自愿访问控制更为细致和强大的安全性。
这有助于防范各种攻击和提高系统的整体安全性。
selinux基本知识及更改
在Redhat Enterprise Linux 4.0或Fedora Core 2 Linux以上版本的Linux中,有不少用户经常会遇到诸如apache的Permission denied,X windows打不开等等问题,抛开一些常规配置错误外,很大一部分原因是因为激活了SELinux的缘故。
什么是SELinux?SELinux全称是Security Enhanced Linux,由美国国家安全部(National Security Agency)领导开发的GPL项目,它拥有一个灵活而强制性的访问控制结构,旨在提高Linux系统的安全性,提供强健的安全保证,可防御未知攻击,据称相当于B1级的军事安全性能。
比MS NT所谓的C2等高得多。
应用SELinux后,可以减轻恶意攻击或恶意软件带来的灾难,并提供对机密性和完整性有很高要求的信息很高的安全保障。
SELinux vs Linux普通Linux安全和传统Unix系统一样,基于自主存取控制方法,即DAC,只要符合规定的权限,如规定的所有者和文件属性等,就可存取资源。
在传统的安全机制下,一些通过setuid/setgid的程序就产生了严重安全隐患,甚至一些错误的配置就可引发巨大的漏洞,被轻易攻击。
而 SELinux则基于强制存取控制方法,即MAC,透过强制性的安全策略,应用程序或用户必须同时符合DAC及对应SELinux的MAC才能进行正常操作,否则都将遭到拒绝或失败,而这些问题将不会影响其他正常运作的程序和应用,并保持它们的安全系统结构。
SELinux on Redhat Linux在RHEL4.0或FC3以上的版本中,可以在安装时就选择是否激活SELinux,系统自动会安装相应的内核、工具、程序等。
由于 SELinux的MAC机制将极大的影响了现有引用,因此RHEL4/FC3中已预配置了大量兼容现有应用的安全策略。
SELinux的配置相关文件都在 /etc/selinux下,其中/etc/selinux/targeted目录里就包含了策略的详细配置和context定义,以下是主要文件及功用:/etc/selinux/targeted/contexts/*_context 默认的context设置/etc/selinux/targeted/contexts/files/* 精确的context类型划分/etc/selinux/targeted/policy/* 策略文件使用Redhat 默认的策略对正常应用带来的影响比较小,兼容性相对比较好。
Linux中SElinux
Linux中SElinuxSElinux初探SElinux已经是个⾮常完备的内核模块了,CentOS5.x提供了很多管理SELinux的命令与机制,因此在整体架构上⾯⽐以前的版本要单纯且容易操作管理。
SElinux字⾯上的意义就是安全强化的Linux。
SELinux是在进⾏程序、⽂件等权限设置依据的⼀个内核模块SELinux的启动、关闭与查看SELinux⽀持三种模式,分别如下Enforcing:强制模式,代表SELinux正在运⾏中,且已经正确开始限制domain/type了。
permissive:宽容模式:代表SELinux正在运⾏中,不过仅会有警告信息并不会实际限制。
domain/type的访问。
这种模式可以运来作为SELinux的调试之⽤。
disabled:关闭,SELinux并没有实际运⾏。
SELinux的配置⽂件就是在 /etc/selinux/config查看当前SELinux模式。
[root@Centos ~]# getenforceEnforcing范例⼀:列出⽬前的SELinux使⽤的策略[root@Centos ~]# sestatusSELinux status:enabled 是否启动SELinuxSELinuxfs mount:/selinux SELinux的相关⽂件数据挂载点Current mode:enforcing ⽬前的模式Mode from config file:enforcing 配置⽂件制定模式Policy version: 24Policy from config file:targeted ⽬前的策略为何SELinux的启动与关闭上⾯是默认的策略与启动的模式,你要注意的是,如果改变了策略则需要重新启动;如果由enforcing或permissive改成disabled,或由disabled改成其他两个,那也必须要重新启动。
让SELinux模式在enforcing于permissive之间切换的⽅法为:[root@Centos ~]# setenforce [0|1]0:转成permissive宽容模式1:转成Enforcing强制模式。
第15章 SELinux基础
⑵ 许可模式(Permissive Mode)
许可模式表示启用SELinux,记录违规日志,但会允 许所有违规操作。
⑶ 禁用模式(Disabled Mode)
完全禁用SELinux,系统不受SELinux的保护。
SELinux许可模式示意图
⒉ SELinux的配置文件
在Red Hat系列的Linux操作系统中, SELinux的配置文件是 “/etc/selinux/config”。 在这个配置文件中,提供了两个配置参数。
15.3.3 管理SELinux安全上下文
在启用了SELinux的Linux操作系统中,所有的进程、 文件、目录以及端口等资源都有相关联的SELinux标签 ,称作安全上下文。 安全上下文是由简单的字符串所表示的名称,在 SELinux策略中,具体规定了被标记了哪种上下文的进 程能够访问被标记了哪些上下文的文件和端口等资源。 安全上下文是由若干个字段组成的,分别是用户(User )、角色(Role)、类型(Type)和范围(Range) 等字段。其中,用户的上下文名称通常以“_u”结尾, 角色的上下文名称通常以“_r”结尾,类型的上下文名 称通常以“_t”结尾。在SELinux默认的targeted策 略中,我们只需要考虑第三个上下文:类型(Type)上 下文。
[root@redhat ~]# ls -dZ /var/www/html drwxr-xr-x root root system_u:object_r:httpd_sys_content_t /var/www/html [root@redhat html]# cd /var/www/html [root@redhat html]# echo "Apache Homepage" > index.html [root@redhat html]# ls -Z /var/www/html/index.html -rw-r--r-- root root root:object_r:httpd_sys_content_t /var/www/html/index.html
selinux详解及配置文件
selinux详解及配置⽂件selinux详解selinux 的全称是Security Enhance Linux,就是安全加强的Linux。
在Selinux之前root账号能够任意的访问所有⽂档和服务;如果某个⽂件设为777,那么任何⽤户都可以访问甚⾄删除。
这种⽅式称为DAC(主动访问机制),很不安全。
DAC⾃主访问控制:⽤户根据⾃⼰的⽂件权限来决定对⽂件的操作,也就是依据⽂件的own,group,other/r,w,x 权限进⾏限制。
Root有最⾼权限⽆法限制。
r,w,x权限划分太粗糙。
⽆法针对不同的进程实现限制。
Selinux则是基于MAC(强制访问机制),简单的说,就是程序和访问对象上都有⼀个安全标签(即selinux上下⽂)进⾏区分,只有对应的标签才能允许访问,否则即使权限是777,也是不能访问的。
在selinux中,访问控制属性叫做安全上下⽂,所有客体(⽂件、进程间通讯通道、套接字、⽹络主机等)和主体(进程)都有与其关联的安全上下⽂,⼀个安全上下⽂由三部分组成:⽤户(u)、⾓⾊(r)、和类型(t)标识符。
但我们最关注的是第三部分当程序访问资源时,主体程序必须要通过selinux策略内的规则放⾏后,就可以与⽬标资源进⾏安全上下⽂的⽐对,若⽐对失败则⽆法存取⽬标,若⽐对成功则可以开始存取⽬标,最终能否存取⽬标还要与⽂件系统的rwx权限的设定有关,所以启⽤了selinux后出现权限不符的情况时,你就得⼀步⼀步分析可能出现的问题了。
1.selinux状态查看与配置:selinux的配置⽂件位置:/etc/selinux/config,它还有个链接在/etc/sysconfig/selinux.使⽤config⽂件来配置selinux(通过配置⽂件修改selinux的状态属于永久修改,要重启系统才⽣效)[root@localhost ~]# ls /etc/sysconfig/selinux -llrwxrwxrwx. 1 root root 17 Jan 10 19:48 /etc/sysconfig/selinux -> ../selinux/config(1)配置⽂件[root@make_blog ~]# cat /etc/sysconfig/selinux# This file controls the state of SELinux on the system.# SELINUX= can take one of these three values:# enforcing - SELinux security policy is enforced.# permissive - SELinux prints warnings instead of enforcing.# disabled - No SELinux policy is loaded.SELINUX=disabled# SELINUXTYPE= can take one of three two values:# targeted - Targeted processes are protected,# minimum - Modification of targeted policy. Only selected processes are protected.# mls - Multi Level Security protection.SELINUXTYPE=targetedselinux=enforcing#此项定义selinux状态#enforcing-是强制模式系统,它受selinux保护。
selinux原理
SELinux 是一种强制访问控制(MAC)系统,是Linux 内核的一部分,它通过将安全上下文标签应用到各种资源(如进程、文件、套接字等)来提供更细粒度的安全策略。
它的主要思想是建立一个强制访问控制策略,即只允许明确允许的操作,而禁止所有其他操作,以保护系统和数据安全。
SELinux 的工作原理可以分为以下几个方面:1. 标记系统:SELinux 会为每个对象(如进程、文件、套接字等)提供一个安全上下文标签,该标签包含对象的身份信息、权限信息和其他策略信息。
2. 策略引擎:SElinux 提供了一个策略引擎,用于根据安全上下文标签规则执行访问控制决策,以确定哪些操作是允许的,哪些是禁止的。
3. 访问控制决策:当某个进程对某个对象进行操作时,SELinux 会根据当前操作的安全上下文标签和对象的安全上下文标签,去策略引擎里查找匹配的规则,如果匹配成功则允许操作,否则拒绝访问。
4. 日志记录:SELinux 会将所有访问控制决策信息记录到系统日志中,以便后期审计和分析。
除了上面提到的,SELinux 还有一些其他的原理和特点:1. 强制访问控制(MAC):SELinux 强制访问控制是指只有在用户被授权访问某个资源的情况下才允许访问,而普通的权限控制是基于用户自己的限制和许可来控制访问。
2. 安全上下文:SELinux 使用安全上下文标签来标识每个进程和文件的身份信息、权限信息和其他策略信息。
这些标签是由系统管理员和SELinux 策略引擎共同定义的。
3. 多层安全:SELinux 支持多层安全,可以为不同的用户和应用程序分配不同的安全级别,确保系统各部分之间的完全隔离,并使其更加安全可靠。
4. 可定制性:SELinux 的策略引擎是高度可定制的,可以针对不同的应用场景进行设置,以满足不同的安全需求。
SELinux 是一个复杂而且功能强大的安全模块,它能够在Linux 系统中提供强制访问控制和更细粒度的安全保障,适合需要高度安全性保护的系统和应用程序。
操作系统安全:selinux简介
定而定。这样,我们对控制的主体变成了进程而不是使用者,此外,这个主体进程也不能任意使用系
统文件资源,因为每个文件资源也有针对该主体进程设定可取用的权限.
SELinux 也提供一些预设的政策(policy),并在该政策内提供多个(rule)
Selinux简介
SELinux是通过MAC的方式来控管进程,他控制的主体是进程,而目标则该进程能否读取的文件资源。
Selinux的简介
Selinux简介
1 SELinux(security enhanced Linux)安全强化的Linux
SELinux 是由美国国家安全局(NSA)开发,我们知道所有的系统资源都是透过进程 来进行存取的,那么/var/www/html/如果设定为777,代表所有进程均可对该目录进行存 取,为了控制权限与进程之间的问题,SELinux是在进行进程、文件等细部权限设定依据一 个核心模块,由于启动网络服务也是进程,因此也刚好也能控制网路服务能否存存取系统 资源的一道关卡。
Selinux简介
3
以政策规则定制特定进程读取特定文件:委任式访问控制,MAC
为了避免DAC容易发生的问题,因此SELinux导入了委任式访问控制(mandatory access
control)的方法,委任式访问控制控制可以针对特定的进程与特定的文件资源来进行权限的控管, 即
使你是root,那么在使用不同的进程时,你所取得的权限并不一定时root,而得要看当时该进程的设
主体能不能存取目标除了政策指定外,主体与目标的安全性 本文必须一致才能顺利存取,SELinux重点在保护进程读取文件系 统的权限,主体进程必须要通过SELinux政策内的规则放行后,就 可以与目标资源进行安全性本文的对比,若对比失败,则无法存 取文件,若对比成功则可以开始存取目标
SELinux是什么
SELinux是什么SELinux是什么导读:SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是Linux® 上最杰出的新安全子系统。
NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。
SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。
概述SELinux 是 2.6 版本的 Linux 内核中提供的强制访问控制 (MAC)系统。
对于目前可用的Linux 安全模块来说,SELinux 是功能最全面,而且测试最充分的,它是在20 年的MAC 研究基础上建立的。
SELinux 在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制概念。
大部分使用 SELinux 的.人使用的都是 SELinux 就绪的发行版,例如 Fedora、Red Hat Enterprise Linux (RHEL)、Debian 或 Gentoo。
它们都是在内核中启用SELinux 的,并且提供一个可定制的安全策略,还提供很多用户层的库和工具,它们都可以使用 SELinux 的功能。
SELinux是一种基于域-类型模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。
众所周知,标准的UNIX安全模型是"任意的访问控制"DAC。
就是说,任何程序对其资源享有完全的控制权。
假设某个程序打算把含有潜在重要信息的文件扔到/tmp目录下,那么在DAC情况下没人能阻止他!而MAC情况下的安全策略完全控制着对所有资源的访问。
selinux机制原理_概述及解释说明
selinux机制原理概述及解释说明1. 引言:1.1 概述:SELinux(Security-Enhanced Linux)是一种用于Linux操作系统的强制访问控制(MAC)安全机制,它通过为每个对象和主体分配唯一的标签,并使用这些标签来管理对系统资源的访问权限,从而提供了更高级别的系统安全性。
SELinux广泛应用于各种Linux发行版中,并成为许多关键部署环境中不可或缺的安全功能。
1.2 文章结构:本文首先对SELinux机制进行概述,包括其基本原理和概念。
然后介绍了安全策略与访问控制在SELinux中扮演的角色,并阐述了标签和标记机制在实现安全性方面的重要性。
接下来,我们将深入了解SELinux的工作原理,包括类型强制访问控制(TE)机制、强制访问控制(MAC)模型与规则引擎等方面。
此外,我们还会提供一些利用SELinux保护系统安全的实例和示例。
在完成对SELinux机制原理和工作原理的详细介绍后,我们将说明如何与Linux 内核集成以及各种实现方式。
这部分将涵盖SELinux在Linux内核中位置、关键组件的介绍,以及如何解决不同发行版和版本之间的差异。
最后,我们会提供一些开启、关闭或配置SELinux策略的方法和技巧指南。
1.3 目的:本文旨在为读者深入了解SELinux机制原理提供一个全面而清晰的解释。
通过详细阐述SELinux的基本概念、工作原理、与Linux内核的集成方式等内容,读者可以更好地理解SELinux对系统安全性的重要性和实际应用。
同时,本文也将帮助读者掌握使用和配置SELinux策略的方法,进一步提升系统的安全性。
2. SELinux机制原理:2.1 SELinux概述:SELinux(Security-Enhanced Linux)是一种强制访问控制(MAC)机制,旨在增强Linux操作系统的安全性。
它通过强制策略来控制进程、文件和网络资源的访问,以及保护系统免受恶意软件和未经授权的访问。
初步认识selinux
Redhat7初步认识selinux1.Selinux配置文件:/etc/selinux/config可以看到,配置文件能配置的只有两行SELINUX=enforcing--enforcing强制开启--permissive仅记录不阻止--disabled停用SELINUXTYPE=targeted --基于目标的selinux2.Selinux图形化管理安装包policycoreutils-gui3.查看用户selinux context值:id –Z查看当前每个进程正在使用的context值:ps –auxZ查看selinux规则库中的context值:semanage fcontext -l查看单个文件的context值:ls -Z filels -dZ dir(目录)查看每个服务的selinux布尔值:getsebool –a4.临时设置selinux开关getenforce 查看当前selinux值setenforce 0 修改为permissive5.更改文件的context值类型:chcon -t public_content_rw_t /var/www/html/index.htmlchcon --reference=/var/www/html / var/test #参照指定目录的context值类型restorecon -R /var/test #依照规则库修改该目录及其以下的文件context值类型6.更改服务的布尔值:setsebool -P ftp_home_dir 1 #-P 永久更改向selinux规则库添加规则:semanage fcontext -a -t httpd_sys_content_t '/custom(/.*)?'restorecon -Rv /custom #应用规则库里的规则7.selinux排错,redhat7默认已经安装安装包setroubleshoot*重启服务systemctl restart auditd查看日志:sealert -a /var/log/audit/aduit.log/var/log/messagessealert -l ID如果没有收集到日志,需执行semodule –DB8.selinux日志selinux默认日志位置/var/log/audit/audit.log9.selinux引起的httpd问题搭建httpd服务器使在/var/www/html/下创建index.html在浏览器上可以看到index.html的内容。
SELinux基本概念详解
SELinux基本概念详解SELinux(Security Enhanced Linux),以下是SELinux的三种类型实际操作流程⽰意图:意义:传统的Linux权限控制采⽤⾃主式权限控制(Discretionary Access Control, DAC),依据程序拥有者和资源的rwx权限决定有⽆存取能⼒.这样存在root账户盗⽤可以使⽤任何资源和⽬录如果被设为777权限⽽导致任意存取和操作的问题.SELinux采⽤MAC(Mandatory Access Control, MAC).在访问资源时,判断程序是否有权限,⽽不是判断⽤户.所以,即使不⼩⼼httpd被取得了控制权,他也⽆权浏览/etc/shadow 等重要的⽂档.开启SELinux后,访问⽂件会经过SELinux权限控制和普通的⽤户资源rwx权限控制.SELinux 是整合到核⼼的⼀个核⼼功能,不需要启动什么额外的服务来开启SELinux.开机完成后,SELinux也就启动了.策略模式:SELinux 的运作策略:targeted:针对⽹路服务限制较多,针对本机限制较少,是预设的政策;strict:完整的SELinux 限制,限制⽅⾯较为严格.三种模式:enforcing:强制模式,代表SELinux运作中,且已经正确的开始限制domain/type了;permissive:宽容模式:代表SELinux运作中,不过仅会有警告讯息并不会实际限制domain/type的存取.这种模式可以运来作为SELinux的debug之⽤(看下什么原因导致⽆法访问);disabled:关闭.查询SELinux当前模式:getenforce查询SELinux当前policy详细信息:sestatus打开关闭:临时关闭SELinux: setenforce 0 (设置SELinux 成为permissive模式)临时打开SELinux: setenforce 1 (设置SELinux 成为enforcing模式)彻底关闭SElinux: vi /etc/selinux/config 设置SELINUX=disabled ,重启⽣效log:以下服务可以记录当发⽣SELinux 错误时,将那些有⽤的资讯记录到log,⽤以提供解决的⽅案:setroubleshoot(只记录错误信息)auditd(记录详细信息)基本使⽤:安全性本⽂(Security Context)查看:ls -Z安全性本⽂主要⽤冒号分为三个栏位Identify:role:type⾝份识别:⾓⾊:类型⾝份识别(Identify):root:表⽰root的帐号⾝份,如同上⾯的表格显⽰的是root home⽬录下的资料system_u:表⽰系统程序⽅⾯的识别,通常就是程序user_u:代表的是⼀般使⽤者帐号相关的⾝份⾓⾊(Role):object_r:代表的是档案或⽬录等档案资源,这应该是最常见的system_r:代表的就是程序啦!不过,⼀般使⽤者也会被指定成为system_r 类型(Type) :(最重要!)程序的domain要和⽂件的type相搭配,才能有权限访问.每个⽬录或档案都会有预设的安全性本⽂查询增加修改预设的安全性⽂本:semanage将⽂件修改为当前⽬录默认的安全性⽂本:restorecon -Rv /var/www/html/index.html将⽂件⽬录安全性⽂本设置为和另⼀个⽂件⽬录⼀样:chcon -R --reference=/var/lib/ref_file target_file可以设置和修改访问规则,可以修改⽬录默认安全性⽂本.。
Linux安全中阶教程之SElinux(适合有一定水平的管理员) ...
Linux安全中阶教程之SEIinux(适合有一定水平的管理员)一:SElinux(安全增强linux 简介)1:使用SElinux可以将进程放入在特定的SElinux域,同时赋予系统上的资源(如文件,网络套接字,系统调用等)SElinux上下文。
装入SElinux的策略(通常作为系统启动过程的一部分),然后决定哪个进程域可以访问哪些资源上下文。
2:在红帽企业版linux5中,有关SElinux的选择有下面几种:(1)我是否需要启用SElinux(2)一旦启用,我需要SElinux处于允许(permissive)还是强制(enforcing)状态。
(3)我需要在文件上赋予什么样的SElinux上下文。
3:在实际工作中,红帽企业版linux5支持一种SElinux策略,叫目标策略(targeted).这个策略在大多数应用之中。
在目标策略之中,只有目标进程受到SElinux的影响。
而其他进程运行在非限制模式下。
目标策略只影响常用的网络应用程序。
受到限制的服务在200个以上,有增加的趋势。
SElinux限制的典型应用程序如下:(1)dhcp(2)httpd(3)mysqld(4)named(5)nscd()(6)ntpd()(7)portmap(8)postgres()(9)snmpd()(10)squid(11)syslogd4:启用SElinux/etc/sysconfig/selinuxsetenforcegetenforce/etc/sysconfig/selinux⑴强制(enforcing):任何违法SElinux的操作都被禁止。
⑵允许(permissive):任何违反SElinux的操作都会受到一个警告信息。
但是行动可以继续。
⑶停用(disabled):不启用SElinux策略。
Setenforce和getenforce命令Setenforce0/10表示允许;1表示强制Getenforce查看当前SElinux的状态。
linux中selinux的作用
linux中selinux的作用Linux中的SELinux是一种安全增强工具,它在操作系统级别提供了额外的安全层,以保护系统免受恶意软件和攻击的侵害。
SELinux的全称是Security-Enhanced Linux,它是由美国国家安全局(NSA)开发的,旨在提供更高级别的安全性。
SELinux的作用主要体现在以下几个方面:1. 强制访问控制(MAC):SELinux通过强制访问控制机制,对系统资源进行细粒度的访问控制。
它基于安全策略规则,限制进程对文件、目录、网络端口等资源的访问权限。
这种机制可以防止恶意软件或攻击者利用系统漏洞获取未授权的访问权限。
2. 标签安全:SELinux使用标签来标识系统中的各种对象,如文件、进程、网络端口等。
每个对象都有一个唯一的标签,用于表示其安全级别和访问权限。
通过标签安全机制,SELinux可以对系统中的对象进行细粒度的访问控制,确保只有具有相应标签的对象才能相互交互。
3. 强制策略:SELinux提供了一套默认的安全策略,用于限制系统中各个进程的行为。
这些策略规则定义了进程可以执行的操作,如读取、写入、执行等。
通过强制策略,SELinux可以防止恶意软件或攻击者执行未经授权的操作,从而保护系统的安全性。
4. 安全审计:SELinux可以记录系统中发生的安全事件,并生成相应的审计日志。
这些日志可以用于分析系统的安全性,发现潜在的安全威胁。
通过安全审计,管理员可以及时发现并应对系统中的安全问题,提高系统的安全性。
5. 安全上下文:SELinux使用安全上下文来标识系统中的对象和主体。
安全上下文是一个包含标签的字符串,用于表示对象或主体的安全属性。
通过安全上下文,SELinux可以对系统中的对象和主体进行细粒度的访问控制,确保只有具有相应安全上下文的对象和主体才能相互交互。
总之,SELinux在Linux系统中起到了重要的安全保护作用。
它通过强制访问控制、标签安全、强制策略、安全审计和安全上下文等机制,提供了更高级别的安全性。
1 管理SELINUX
07/21/12
显示和修改 SELinux 模式
请注意, /etc/sysconfig/selinux 包含一些有用注释:
在引导时,使用 /etc/sysconfig/selinux 更改默认 SELinux 模式。在上面的示例中,设置为强制模 式。若要显示当前 SELinux 模式,请使用 getenforce 。若要修改当前 SELinux 模式,请使用 setenforce :
07/21/12
显示和修改 SELinux 文件上下文
许多处理文件的命令具有一个用于显示或设置 SELinux 上下文的选项(通常是 -Z )。例如, ps 、 ls 、cp 和 mkdir 都使用 -Z 选项显示或设置 SELinux 上下文。
什么确定文件的初始 SELinux 上下文?通常是父目录。将父目录的上下文指定给新创建的文件。这 对 vimcp 和 touch 等命令其作用,但是,如果文件是在其他位置创建的并且保留了权限(与 mv 或 cp a 一样)则还将保留 SELinux 上下文。
07/21/12ຫໍສະໝຸດ 管理 SELinux 布尔值
SELinux 布尔值是更改 SELinux 策略行为的开关。 SELinux 布尔值是可以启用或禁用的规则。 安全管理员可以使用 SELinux 布尔值来调整策略,以有选择地进行调整。getsebool 用于显示布尔 值, setsebool 用于修改布尔值。 setsebool -P 修改 SELinux 策略,以永久保留修改。 [root@serverX ~]# getsebool -a abrt_anon_write --> off ..... [root@serverX ~]# getsebool httpd_enable_homedirs httpd_enable_homedirs --> off [root@serverX ~]# setsebool httpd_enable_homedirs on [root@serverX ~]# semanage boolean -l |grep httpd_enable_homedirs httpd_enable_homedirs --> off Allow httpd to read home directories [root@serverX ~]# getsebool httpd_enable_homedirs httpd_enable_homedirs --> on [root@serverX ~]# setsebool -P httpd_enable_homedirs on [root@serverX ~]# semanage boolean -l |grep httpd_enable_homedirs httpd_enable_homedirs --> on Allow httpd to read home directories
SELinux简单学习
SELinux简单学习SELinux(Security Enhanced Linux)是RedHat公司在RHEL4以后的版本中所使用的一种全新的安全机制。
有很多的用户在使用RHEL4以后的版本的时候,不知道该如何设置此功能,并且影响了在RHEL上的服务的运行。
所以一开始的时候,就停用了此功能。
这篇文章就是为了让使用RHEL4或者是RHEL5的用户了解其基本的操作来加强系统的安全性。
本文所有的操作以RHEL5.1为例。
SElinux简介SELinux是美国国家安全局开发的,是建立在kernel之上的安全机制。
图01DAC(Discretionary access control,自主访问控制):DAC机制就是指对象(比如程序、文件或进程等)的的拥有者可以任意的修改或授予此对象相应的权限。
也就是大家熟悉的使用user、group和other的方式来进行权限的控制。
MAC(Mandatory Access Control,强制访问控制):MAC机制是指系统不再允许对象(比如程序、文件或文件夹等)的拥有者随意修改或授予此对象相应的权限,而是透过强制的方式为每个对象统一授予权限。
在MAC这种安全机制下,访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。
并且与部分的网络服务器加以整合,如DHCP,Apacher等服务。
假如使用传统的DAC方式,我们的RHEL5上有提供WEB服务的时候,,那么当黑客入侵WEB服务器,那么黑客有可能提升自己的权限,从而导致整台的RHEL5的服务器瘫痪;但是如果采用了MAC的方式,由于有了SELinux的保护,当黑客入侵WEB服务器,由于进程只能访问那些在他的任务中所需要文件,也就是WEB服务器的所有文件,不能访问除WEB服务器以外的文件,那么我们的RHEL5的服务器不会瘫痪,最多也就是WEB服务器被黑客损坏,这样可以降低损失。
如图02使用传统的控制方式黑客可能通过/etc/passwd来获取权限,从而导致RHEL5的资料丢失或瘫痪如图03使用SELinux,黑客不能到WEB服务器以外的范围,只能在WEB 所在的范围之内转一转,这样如果黑客攻击也就不能破坏RHEL5的其他部分,最多破坏WEB服务器。
SELinux之一:SELinux基本概念及基本配置旺旺知识库
SELinux之一:SELinux基本概念及基本配置旺旺知识库SELinux从出现至今,已经走过将近13年历史,然而在Linux相关QQ技术群或者Linux相关论坛,经常有人遇到问题问题都归咎与SELinux,如httpd各项配置都正常,但客户就是无法访问;又比如vsftpd配置均正常,但客户端访问提示无法转换家目录。
于是乎很多人都对SELinux有了极大的偏见,认为SELinux带来的似乎只有麻烦,于是很多人选择在安装系统第一件事就是将SELinux设置为禁用。
不过随着日益增长的 0-day 安全漏洞,SELinux在很多时候给了我们关键的保障。
什么是SELinux?SELinux 全称 Security Enhanced Linux (安全强化 Linux),是美国国家安全局2000年以 GNU GPL 发布,是 MAC (Mandatory Access Control,强制访问控制系统)的一个实现,目的在于明确的指明某个进程可以访问哪些资源(文件、网络端口等)。
强制访问控制系统的用途在于增强系统抵御 0-Day 攻击(利用尚未公开的漏洞实现的攻击行为)的能力。
所以它不是网络防火墙或 ACL 的替代品,在用途上也不重复。
在目前的大多数发行版中,已经默认在内核集成了SELinux。
举例来说,系统上的Apache 被发现存在一个漏洞,使得某远程用户可以访问系统上的敏感文件(比如 /etc/passwd 来获得系统已存在用户) ,而修复该安全漏洞的Apache 更新补丁尚未释出。
此时SELinux 可以起到弥补该漏洞的缓和方案。
因为/etc/passwd 不具有Apache 的访问标签,所以Apache 对于/etc/passwd 的访问会被SELinux 阻止。
相比其他强制性访问控制系统,SELinux 有如下优势:•控制策略是可查询而非程序不可见的。
•可以热更改策略而无需重启或者停止服务。
•可以从进程初始化、继承和程序执行三个方面通过策略进行控制。
如何理解Linux下的SELinux
如何理解Linux下的SELinux⽬录⼀、SELinux简介⼆、SELinux基本概念2.1、⼯作类型2.2、security context介绍三、策略四、SELinux模式五、实例六、SELinux⽇志管理⼀、SELinux简介SELinux是⼀个内核级别的安全机制,从Linux2.6内核之后就将SELinux集成在了内核当中,因为SELinux是内核级别的,所以我们对于其配置⽂件的修改都是需要重新启动操作系统才能⽣效的。
现在主流发现的Linux版本⾥⾯都集成了SELinux机制,CentOS/RHEL都会默认开启SELinux机制。
系统资源都是通过进程来读取更改的,为了保证系统资源的安全,传统的Linux使⽤⽤户、⽂件权限的概念来限制资源的访问,通过对⽐进程的发起⽤户和⽂件权限以此来保证系统资源的安全,这是⼀种⾃由访问控制⽅式(DAC);但是随着系统资源安全性要求提⾼,出现了在Linux下的⼀种安全强化机制(SELinux),该机制为进程和⽂件加⼊了除权限之外更多的限制来增强访问条件,这种⽅式为强制访问控制(MAC)。
这两种⽅式最直观的对⽐就是,采⽤传统DAC,root可以访问任何⽂件,⽽在MAC下,就算是root,也只能访问设定允许的⽂件。
⼯作原理如下图:⼆、SELinux基本概念我们知道,操作系统的安全机制其实就是对两样东西做出限制:进程和系统资源(⽂件、⽹络套接字、系统调⽤等)。
在之前学过的知识当中,Linux操作系统是通过⽤户和组的概念来对我们的系统资源进⾏限制,我们知道每个进程都需要⼀个⽤户才能执⾏。
在SELinux当中针对这两样东西定义了两个基本概念:域(domin)和上下⽂(context)。
2.1、⼯作类型SELinux下存在不同的规则,SELinux根据不同的⼯作类型对这些规则打开或关闭(on|off<布尔值1|0>),然后通过规则的开启与关闭具体地限制不同进程对⽂件的读取。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
selinux学习理解一、什么是selinux。
selinux全称是security enhanced linux,安全强化linux,是MAC (mandatory access control,强制访问控制系统)的一个实现,目的在于明确的知名某个程序可以访问哪些资源(程序,端口)。
它的用户在于防范0—DAY攻击(利用尚未公开的漏洞实现攻击),所以它不是防火墙和ACL的替代品,功能也不重复。
举例来说,系统上Apache被发现存在一个漏洞,使得远程用户可以访问系统上的敏感文件(比如/etc/passwd),且修复该漏洞的补丁尚未发布,此时selinux可以起到弥补漏洞的方法。
因为/etc/passwd 不具有apache的访问标签,所以Apache对于/etc/passwd的访问会被selinux阻止。
相比其他强制访问系统,selinux有如下访问优势:1.控制策略是可以查询,而非程序比可见的。
2.可以热更改策略,无需或停止服务。
3.可以从程序初始化、继承、执行三个方面,使用策略进行控制。
4.控制范围广,包括:文件系统,目录,文件,文件启动描述符,端口,消息接口,网络接口。
二、了解和配置selinux。
1、获取当前selinux运行状态getenforce:可能返回三种结果Enforcing:记录报警且阻止可疑行为。
Permissive:记录告警,不阻止可以行为。
Disable:关闭selinux。
默认是Enforcing2、改变selinux状态。
setenforce 1|0 1代表Enforcing,0代表Permissive。
此时不需要重启系统就可以实现。
要永久改变selinxu的状态,在/etc/sysconfig/selinux实现。
当从disable切换到enforcing或permissive时,要重启系统并为整个文件系统重新创建安全标签。
3、selinux运行策略。
配置文件/etc/sysconfig/seilnux还包含了selinux运行策略的信息,通过改变SELINUXTYPE值实现,该值有两种可能:targeted代表仅针对预制的几种网络服务和访问请求都要使用selinux。
strict代表所有网络服务和访问请求要经过selinux。
默认为targeted,包含了几乎所有的网络服务的selinux策略配置,已经默认安装并且无需更改可以直接使用。
4、coreutils工具的selinux模式常见的属于coreutils的工具如ps\ls等,可以通增加-Z的方式查看selinux的信息。
例:ls -Z /etc/ 查看目录ps -auxZ 查看进程三、Apache selinux配置实例1、让Apcche可以访问位于非默认目录下的网站。
首先,用semanage fcontext -l | grep ‘/var/www/’得到默认的selinux上下文,/var/www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0 ,可以看到apache只能访问有第三段object_r:httpd_sys_content_t标签的文件,那么就可以给你想的访问的非默认目录增加这个标签。
分为两步:为目录增加标签,semanage fcontext -a -t httpd_sys_content_t ‘/www’,然后用新标签为已有的文件进行标注,restorecon -Rv /www,就可以使用这个目录下的网站了。
restorecon起到的是恢复文件默认标签的作用。
如从其它目录复制文件到/var/www/html时,无法访问,因为标签不同,这时就要用restorecon将文件的标签恢复成Apache可以访问的标签。
例:2、让apache侦听非标准端口。
默认情况下Apache只侦听80和443两个端口,若要想让它侦听指定的888端口的话,会在apache启动时报错。
这时候可以在/var/log/messages中查看,3、允许Apache访问创建的私人网站。
若希望在~/pulib_html下创建私人网站,需要在Apache策略中允许该操作,使用setsebool httpd_enable_homedirs 1来改变selinux的bool值,getsebool-a得到现在系统中的bool值,默认情况下,重启后上述操作无效,若想永久生效,加-P参数,setsebool -P httpd_enable_homedirs 1四、其它man httpd_selinuxs相看相关服务的手册setroubleshoot开头的包,audit开头的包安装上面的包后,报警也可能在/var/log/auditd/audit.log中看日志,找到需要执行的代码,可以解决selinux不能访问的问题linux中ftp使用selinux的实例:一、Selinux 下匿名FTP的使用1,确认已经启用了Selinux:[root@sgzhang ~]# getenforceEnforcing2,启动FTP deamon:[root@sgzhang ~]# ps -efZ |grep vsftpdroot:system_r:ftpd_t:s0 root 12636 1 0 20:13 ? 00:00:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf3,在匿名访问目录下创建2个文件进行测试,一个是在该目录下手动创建,这样该文件会自动继承/var/ftp/pub下的目录上下文的值,一个用mv命令从root 目录下移动过来,这样的文件会保留root目录下的安全上下文,如下[root@sgzhang pub]# pwd/var/ftp/pub[root@sgzhang pub]# echo "just a test" > test.txt[root@sgzhang pub]# chmod 755 test.txt[root@sgzhang pub]# ls -Z-rwxr-xr-x root root root:object_r:public_content_t:s0 test.txt [root@sgzhang ~]# pwd/root[root@sgzhang ~]# echo "aaa123" > root.txt[root@sgzhang ~]# chmod 755 /root/root.txt[root@sgzhang ~]# mv root.txt /var/ftp/pub/[root@sgzhang ~]# ls -Z /var/ftp/pub/-rw-r-xr-x root root root:object_r:user_home_t:s0 root.txt-rwxr-xr-x root root root:object_r:public_content_t:s0 test.txt4、使用匿名登录测试:[root@sgzhang pub]# lftp localhostlftp localhost:~> cd pubcd ok, cwd=/publftp localhost:/pub> ls-rwxr-xr-x 1 0 0 12 Aug 23 12:19 test.txt-rwxr-xr-x 1 0 0 910974 Aug 04 02:19 yumlftp localhost:/pub>发现这里看不到root.txt文件5、已知系统启动了Selinux,先查看系统日志,有两个工具可以收集到Selinux 产生的日志,一个是setroubleshoot,对应的软件包为setroubleshoot-server-2.0.5-5.el5一个是audit,对应的软件包名称是audit-1.7.13-2.el5,先使用audit工具,使用方法如下:系统中提供了audit相关的命令,常用的有audit2why和audit2allow,audit产生的日志放在/var/log/audit,由于此文件记录的信息很多不宜直接查看,可以借助audit2why命令,首先启动audit deamon[root@sgzhang audit]# /etc/init.d/auditd statusauditd is stopped[root@sgzhang audit]# /etc/init.d/auditd startStarting auditd: [ OK ][root@sgzhang audit]# /etc/init.d/auditd statusauditd (pid 4013) is running...6、在客户端登录FTP服务器时会出发audit deamon产生日志:audit2why </var/log/audit/audit.logtype=AVC msg=audit(1392170806.708:37813): avc: denied { mac_admin } for pid=21841 comm="chcon" capability=33 scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tclass=capability2Was caused by:Missing type enforcement (TE) allow rule.You can use audit2allow to generate a loadable module to allow this access.粗的字体提示使用audit2allow命令audit2allow </var/log/audit/audit.log#============= ftpd_t ==============# This avc can be allowed using one of the these booleans:# allow_ftpd_full_access, ftp_home_dirallow ftpd_t admin_home_t:file getattr;#============= unconfined_t ==============allow unconfined_t self:capability2 mac_admin;提示更改bool值。