selinux试验
- 格式:doc
- 大小:46.50 KB
- 文档页数:5
湖北文理学院《网络存储》实验报告专业班级:计科1211姓名:***学号:***任课教师:李学峰2014年11月16日实验01 Windows 2003的磁盘阵列技术一、实验目的1.掌握在Windows 2003环境下做磁盘阵列的条件和方法。
2.掌握在Windows 2003环境下实现RAID0的方法。
3. 掌握在Windows 2003环境下实现RAID1的方法。
4. 掌握在Windows 2003环境下实现RAID5的方法。
5. 掌握在Windows 2003环境下实现恢复磁盘阵列数据的方法。
二、实验要求1.在Windows 2003环境下实现RAID02.在Windows 2003环境下实现RAID13.在Windows 2003环境下实现RAID54.在Windows 2003环境下实现恢复磁盘阵列数据三、实验原理(一)磁盘阵列RAID技术的概述RAID是一种磁盘容错技术,由两块以上的硬盘构成冗余,当某一块硬盘出现物理损坏时,换一块同型号的硬盘即可自行恢复数据。
RAID有RAID0、RAID1、RAID5等。
RAID 技术是要有硬件来支持的,即常说的RAID卡,如果没RAID卡或RAID芯片,还想做RAID,那就要使用软件RAID技术,微软Windows系统只有服务器版本才支持软件RAID技术,如Windows Server 2003等。
(二)带区卷(RAID0)带区卷是将多个(2-32个)物理磁盘上的容量相同的空余空间组合成一个卷。
需要注意的是,带区卷中的所有成员,其容量必须相同,而且是来自不同的物理磁盘。
带区卷是Windows 2003所有磁盘管理功能中,运行速度最快的卷,但带区卷不具有扩展容量的功能。
它在保存数据时将所有的数据按照64KB分成一块,这些大小为64KB的数据块被分散存放于组成带区卷的各个硬盘中。
(三)镜像卷(RAID1)镜像卷是单一卷的两份相同的拷贝,每一份在一个硬盘上。
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 。
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强制模式。
王宇航09283020 王聪雅09283017SELinux实验一、实验内容概述我选做的是用SELinux来保护本机的Apache Web服务器。
对于Internet上应用广泛的Web服务来说,有很多网站使用的是Linux系统,并且采用Apache服务器的无疑占据了极大的市场份额。
因此,在Linux系统中保护Apache Web 服务器的安全,防止非法用户进入无疑是一件非常重要的事情。
二、Apache Web服务器的安全需求在没有强制访问控制系统保护的Linux系统中,我们本机的Apache Web服务器是可能遭受攻击的,比如0-Day 攻击(利用尚未公开的漏洞实现的攻击行为)。
假设系统上的Apache Web服务器被发现存在一个漏洞,而修复该安全漏洞的Apache 更新补丁尚未打出,则某远程用户便可能有机会攻击我们的Apache Web服务器,访问系统上的敏感文件(比如/etc/passwd),或者尝试在别处写入进而攻击我们的系统。
这种情况下,我们便可以借助SELinux来保护我们的Apache Web服务器,对访问权限进行严格的限制,使其不会遭受真正的伤害。
因为使用SELniux后,几乎所有的服务进程都在限制下运行。
并且,大多数以root身份运行的系统进程(比如passwd进程)都是受限制的。
当进程受限制时,它只能在自己限制的域内运行,例如Web服务进程httpd只能运行在httpd_t域内。
如果一个受限制的进程被黑客攻击并控制了,根据SELinux策略配置,这个黑客也仅仅只能访问这个受限制的域,因此攻击所带来的危害也比传统的Linux小了很多。
三、实验环境主机CPU:Intel(R) Core i5 M 460 @ 2.53GHzVMware版本:VMware.Workstation.Full.7.1.0.261024.WinLinux发行版:Fedora-15-i386-DVDLinux内核:2.6.38.6-26四、实验过程1、了解SELinuxSELinux是一种基于域-类型模型(domain-type)的强制访问控制(MAC)安全系统,比起通常的Linux系统来,安全性能要高很多,它通过对用户进程权限的最小化,使系统即使受到攻击(例如进程或者用户权限被夺去),也不会对整个系统造成重大影响。
SELinux安全策略分析自动化研究的开题报告一、选题背景及意义SELinux(Security-Enhanced Linux)是一种强制访问控制(MAC)的安全机制,旨在提高操作系统的安全性能。
它通过强制规则限制每个进程的访问权限,从而保护操作系统、用户数据和网络资源免受恶意攻击。
SELinux采用了安全策略来保护系统,这种策略是基于对象级别的策略,与传统的主机级别的基于用户的访问控制(DAC)不同,基于对象级别的策略可以更好地保护系统,尤其是在为用户分配特定的权限上效果更好。
然而,由于SELinux的策略是高度复杂的,人工编写和管理策略的效率较低,因此,研究自动化分析和编写SELinux安全策略对提高系统安全性和减少管理成本非常重要。
本文旨在研究SELinux安全策略分析的自动化方法,并提出一种自动化分析工具的设计和实现。
二、研究内容和方案2.1 研究内容(1)研究SELinux安全策略的分析方法和技术,探索策略的命名约定、格式规范和元素语义等相关知识;(2)分析SELinux安全策略的结构和规则,进行策略分析和归类;(3)设计并实现自动化分析工具,包括策略解析、命令生成、策略修复等;(4)实验验证和评价自动化分析工具的性能和可靠性。
2.2 研究方案(1)搜集和整理SELinux安全策略相关的文献、资料和工具,研究策略的基本知识和技术;(2)分析SELinux安全策略的结构和规则,针对策略的不同类型、配置参数和权限控制等方面进行分析和归类;(3)设计并实现自动化分析工具,包括策略解析、命令生成、策略修复等功能,进一步完善其性能和功能;(4)利用自动化分析工具对常见的SELinux安全策略进行测试和评估,验证其准确性、可靠性和实用性。
三、研究计划与进展3.1 研究计划2022年1月-2022年4月:研究SELinux安全策略分析方法和技术,分析策略的结构和规则;2022年5月-2022年8月:设计并实现SELinux安全策略自动化分析工具,包括策略解析、命令生成、策略修复等功能;2022年9月-2022年12月:使用自动化分析工具对常见的SELinux 安全策略进行测试和评估,改进工具的性能和功能,并提出进一步优化建议。
查看SELinux状态及关闭SELinux ⼀、查看SELinux状态:1、我们可以通过查看配置⽂件的命令 cat /etc/selinux/config 来查看状态[root@lill ~]# cat /etc/selinux/config# 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=enforcing# SELINUXTYPE= can take one of these two values:# targeted - Targeted processes are protected,# mls - Multi Level Security protection.SELINUXTYPE=targeted发现SELinux共有3个状态enforcing (执⾏中)、permissive (不执⾏但产⽣警告)、disabled(关闭)。
2,也可以⽤这个命令检查:getenforce[root@localhost /]# getenforceEnforcing3、也可以⽤下述命令;如果SELinux status参数为enabled即为开启状态[root@localhost /]# /usr/sbin/sestatus -vSELinux status: enabled⼆、关闭SELinux:1、临时关闭(重启机器后失效):#setenforce 0设置为permissive模式;setenforce 1 设置为enforcing模式;setenforce 02、永久关闭(需要重启机器):sed -i s#SELINUX=enforcing#SELINUX=disabled# /etc/selinux/config重启机器即可。
SELinux三种模式⼀、SELinux三种模式简介Enforcing:强制模式。
代表SELinux在运⾏中,且已经开始限制domain/type之间的验证关系Permissive:宽容模式。
代表SELinux在运⾏中,不过不会限制domain/type之间的验证关系,即使验证不正确,进程仍可以对⽂件进⾏操作。
不过如果验证不正确会发出警告Disabled:关闭模式。
SELinux并没有实际运⾏⼆、getenforce命令功能:查看当前SELinux的运⾏模式三、sestatus命令功能:查看当前系统上⾯SELinux的策略,运⾏模式等信息命令格式:sestatus [-vb]相关参数与选项:-v:检查列于/etc/sestatus.conf内的⽂件御锦城的安全上下⽂-b:将⽬前策略的规则布尔值列出,亦即某些规则是否要启动(0/1)之意演⽰案例可以看到当前的策略为targeted。
模式为enforcing四、SELinux的配置⽂件(/etc/selinux/config)SELINUX=enforcing:当前SELinux的模式SELINUXTYPE=targeted:当前SELinux的策略如果想要修改策略和模式,就更改这个⽂件⾥⾯的内容即可五、SELinux模式的更改(setenforce命令)SELinux模式的更改规则:①不论是从Enforcing或Permissive改为Disabled,还是由Disabled改为Enforcing或Permissive,系统都需要重新启动。
因为SELinux是整合到内核中的②在SELinux已经运⾏的模式下:只能够在Enforcing和Permissive两种模式之间进⾏切换,⽽不能直接关闭SELinux(Disabled),如果你使⽤getenforce发现当前SELinux模式为Disabled时,请⽴即到/etc/selinux/config⽂件中将SELinux改为Enforcing,然后重新启动系统③如果你从Disable转到启动SELinux的模式时,系统必须针对⽂件写⼊安全上下⽂的信息,因此启动过程会花费不少时间等待重新写⼊SELinux安全上下⽂(有时成为SELinux Label),⽽且在写完之后还要再重新启动⼀次④如果你在Enforcing模式,但是可能由于⼀些设置的问题导致SELinux让某些服务⽆法正常地运⾏,此时可以将Enforcing的模式改为宽容(Permissive)的模式,让SELinux只会警告⽽,⽽不会直接阻⽌主体进程的读取权限setenforce命令格式:# 转换为Permissive宽容模式setenforce 0# 转换为Enforcing强制模式setenforce 1注意事项:setenforce⽆法设置SELinux为Disabled模式演⽰案例六、restorecon -Rv 命令介绍:当你从Disabled切换为Enforcing模式时,会有⼀堆服务⽆法顺利启动,会跟你说/lib/xxx⾥⾯的数据没有权限读取,所以启动失败。
安全防护软件S e l i n u x使用详解网络安全是目前互联网的热门话题之一,作为个人用户的我们同样需要关注,做好防护。
S E L i n u x(S e c u r i t y-E n h a n c e d L i n u x)是美国国家安全局(N S A)对于强制访问控制的实现,是 L i n u x上最杰出的新安全子系统。
今天小编要为大家带来的就是C e n t O S 上的安全防护软件S e l i n u x详解,希望对大家会有帮助,有需要的朋友一起去看看吧具体介绍S E L i n u x(S e c u r i t y-E n h a n c e d L i n u x)是美国国家安全局(N S A)对于强制访问控制的实现,是 L i n u x历史上最杰出的新安全子系统。
N S A是在L i n u x社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。
S E L i n u x默认安装在 F e d o r a和 R e d H a t E n t e r p r i s eL i n u x上,也可以作为其他发行版上容易安装的包得到,20**以G N U G P L发布,L i n u x内核 2.6版本后集成在内核中D A C:D i s c r e t i o n a r y A c c e s s C o n t r o l自由访问控制 M A C:M a n d a t o r y A c c e s s C o n t r o l强制访问控制D A C环境下进程是无束缚的M A C环境下策略的规则决定控制的严格程度M A C环境下进程可以被限制的策略被用来定义被限制的进程能够使用那些资源(文件和端口)默认情况下,没有被明确允许的行为将被拒绝s e l i n u x的工作类型s e l i n u x一共有四种工作类型s t r i c t:每个进程都受到s e l i n u x的控制t a r g e t e d:用来保护常见的网络服务,仅有限进程受到s e l i n u x控制,系统当中默认设置类型m i n i m u m:这个模式在c e n t o s7上,是t a r g e t e d的修改版,只对选择的网络服务,仅对选中的进程生效m l s:提供m l s机制的安全性,国防级别的s e l i n u x安全上下文传统的l i n u x,一切皆文件,由用户、组、权限来进行访问控制,这当中有很多的缺陷在s e l i n u x中,一切皆对象(进程),有存放在i n o d e 的扩展属性域的安全元素所控制其访问所有文件和端口资源和进程都具备安全标签,这就是安全上下文安全上下文有五个元素组成s y s t e m_u:o b j e c t_r:a d m i n_h o m e_t:s0u s e r:r o l e:t y p e:s e n s i t i v i t y:c a t e g o r yu s e r:指示登录系统的用户类型,如r o o t,u s e r_u,s y s t e m_u,多数本地进程都属于自由进程r o l e:定义文件,进程和用户的用途,文件:o b j e c t_r,进程和用户:s y s t e m_rt y p e:指定数据类型,规则重定义何种进程类型访问何种文件,t a r g e t策略基于t y p e实现,多服务功用,p u b l i c_c o n t e n t_ts e n s i t i v i t y:限制访问的需要,由组织定义的分层安全级别,如u n c l a s s i f i e d,s e c r e t,t o p,一个对象有且只有一个s e n s i t i v i t y,分0-15个级别,s0最低,t a r g e t策略默认使用是s0c a t e g o r y:对于特定组织划分不分层的分类,如F B I s e c r e t,N S A s e c r e t,一个对象可以有多个c a t e g o r y,c0-c1023共1024个分类,t a r g e t策略不适用c a t e g o r y 查看安全上下文l s Z;p s-Z期望(默认)上下文:存放在二进制的s e l i n u x策略库中s e m a n a g e f c o n t e x t l查看系统中的默认安全上下文@f o n t-f a c e{f o n t-f a m i l y:宋体;}@f o n t-f a c e{f o n t-f a m i l y:C a m b r i a M a t h;}@f o n t-f a c e{f o n t-f a m i l y:C a l i b r i;}@f o n t-f a c e{f o n t-f a m i l y:@宋体;}p.M s o N o r m a l,l i.M s o N o r m a l,d i v.M s o N o r m a l{m a r g i n:0c m0c m0.0001p t;t e x t-a l i g n:j u s t i f y;f o n t-s i z e:10.5p t;f o n t-f a m i l y:C a l i b r i,s a n s-s e r i f; }.M s o C h pD e f a u l t { f o n t-f a m i l y: C a l i b r i,s a n s-s e r i f;}d i v.W o r d S e c t i o n1{}s e l i n u x策略对象(o b j e c t):所有可以读取的对象,包括文件、目录和进程,端口等主体:进程称为主题(s u b j e c t)s e l i n u x中对所有的文件都赋予一个t y p e的文件类型标签,对于所有的进程也赋予各自的一个d o m a i n标签。
SELinux启用及安全测试一、认识SELinuxSELinux 是2.6 版本的Linux 内核中提供的强制访问控制(MAC)系统。
对于目前可用的Linux安全模块来说,SELinux 是功能最全面,而且测试最充分的,它是在20 年的MAC 研究基础上建立的。
SELinux 在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制概念。
SELinux是一种基于域-类型模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。
二、实验环境虚拟机平台:Vmware Workstation 8.0.3Linux系统:CentOs 6.4内核版本:2.6.32-358.el6.i686SELinux安全策略:selinux-policy-targeted-2.4.6-279.el5_5.1;Selinux-policy-2.4.6-279.el5_5.1 三、试验过程中用到的指令ls –Z 查看SELinux的上下文getenforce 得到当前SELinux的值setenforce 更改当前的SELinux设置sestatus 显示当前的SELinux的信息四、实验过程4.1 启用SELinux测试查看文件的上下文通过查看上下文发现,安全上下文主要由三个字段Identify:role:type对应的意思分别为身份识别:角色:类型身份标示(Identity):相当于账号方面的身份标示!主要有以下的三种常见的类型:root:标示root的账户身份system_u:标示系统程序方面的标示,通常就是进程user_u:代表的是一般用户账户的相关的身份角色(Role):通过角色字段,我们可以知道这个数据是属于程序、文件资源还是代表一般用户。
一般的角色有:Object_r:代表的是文件或目录等文件资源System_r:代表的是进程,不过一般的用户也会被指定成为system_r类型(type):在默认的策略targeted中,identity和role字段基本上是不重要的,重要的在这个类型字段!基本上,一个主体进程能不能读取到这个文件资源与类型字段有关。
linux selit命令的用法SELinux是Linux内核的一种安全机制,selinux命令用于管理和配置SELinux的相关功能。
selinux命令用法如下:1. 查看SELinux状态:`sestatus`2. 修改SELinux状态:-临时关闭SELinux:`setenforce 0`-临时开启SELinux:`setenforce 1`-永久关闭SELinux(需要重启生效):编辑`/etc/selinux/config`文件,将`SELINUX=enforcing`改为`SELINUX=disabled`-永久开启SELinux(需要重启生效):编辑`/etc/selinux/config`文件,将`SELINUX=disabled`改为`SELINUX=enforcing`3. 查看文件或目录的SELinux属性:`ls -Z <文件或目录路径>`4. 修改文件或目录的SELinux属性:-设置文件或目录的SELinux用户:`chcon -u <SELinux用户> <文件或目录路径>`-设置文件或目录的SELinux类型:`chcon -t <SELinux类型> <文件或目录路径>`-恢复文件或目录的SELinux默认属性:`restorecon -R <文件或目录路径>`5. 查看进程的SELinux上下文:`ps -eZ`6. 修改进程的SELinux上下文:-临时修改进程的SELinux上下文:`chcon -t <SELinux类型> <执行文件路径>`-永久修改进程的SELinux上下文(需要重启生效):使用`semanage`命令,例如:`semanage fcontext -a -t <SELinux类型> <执行文件路径>`,然后执行`restorecon -R -v <执行文件路径>`以上是selinux命令的基本用法,更多详细信息可参考相关文档或使用`man selinux`命令查看帮助文档。
Selinux学习
学习目标:学习和掌握selinux相关管理命令。
学习效果:学会使用基础常用的selinux命令,来实现对selinux服务的管理和应用。
一、SELinux简介
SELinux的全称是Security-Enhanced Linux,是由美国国家安全局NSA开发的访问控制体制。
SELinux可以最大限度地保证Linux系统的安全。
至于它的作用到底有多大,举一个简单的例子可以证明:没有SELinux保护的Linux的安全级别和Windows一样,是C2级,但经过保护SELinux保护的Linux,安全级别则可以达到B1级。
如:我们把/tmp目录下的所有文件和目录权限设置为0777,这样在没有SELinux保护的情况下,任何人都可以访问/tmp 下的内容。
而在SELinux环境下,尽管目录权限允许你访问/tmp下的内容,但SELinux的安全策略会继续检查你是否可以访问。
NSA推出的SELinux安全体系结构称为 Flask,在这一结构中,安全性策略的逻辑和通用接口一起封装在与操作系统独立的组件中,这个单独的组件称为安全服务器。
SELinux的安全服务器定义了一种混合的安全性策略,由类型实施 (TE)、基于角色的访问控制 (RBAC) 和多级安全(MLS) 组成。
通过替换安全服务器,可以支持不同的安全策略。
SELinux使用策略配置语言定义安全策略,然后通过checkpolicy 编译成二进制形式,存储在文件(如目标策略
/etc/selinux/targeted/policy/policy.18)中,在内核引导时读到内核空间。
这意味着安全性策略在每次系统引导时都会有所不同。
SELinux的策略分为两种,一个是目标(targeted)策略,另一个是严格(strict)策略。
有限策略仅针对部分系统网络服务和进程执行SELinux策略,而严厉策略是执行全局的NSA默认策略。
有限策略模式下,9个(可能更多)系统服务受SELinux监控,几乎所有的网络服务都受控。
配置文件是/etc/selinux/config,一般测试过程中使用“permissive”模式,这样仅会在违反SELinux规则时发出警告,然后修改规则,最后由用户觉得是否执行严格“enforcing”的策略,禁止违反规则策略的行为。
规则决定SELinux 的工作行为和方式,策略决定具体的安全细节如文件系统,文件一致性。
二、使用设置
在 GUI 图形界面模式下,要更改 SELinux 的策略使用方式,只需依次点击“应用程序”,“系统设置”,“安全级别”;然后在“安全级别配置”对话框的“SELinux”标签页中即可简单进行设置。
或者直接在控制台窗口输入
“system-config-securitylevel”来打开“安全级别”设置窗口。
在“SELinux”选项页中,我们不但可以设置“启用”或者“禁用”SELinux,而且还可以对已经内置的SELinux策略进行修改。
命令行模式下如何更改 SELinux 的策略使用方式呢?它并没有像防火墙那样方便而直观的“system-config-securitylevel-tui”工具可用。
1)查看当前模式:
# getenforce
permissive
2) Permissive
或者更详细些,包含配置文件中的设定值:
# sestatus | grep -i mode
Current mode: permissive
Mode from config file: permissive
3)改变当前模式(立即生效),但重启后又回到配置文件中的设定模式。
设为强制模式
# setenforce 1
# sestatus | grep -i mode
Current mode: enforcing
Mode from config file: permissive
设为警告模式
# setenforce 0
# sestatus | grep -i mode
Current mode: permissive
Mode from config file: permissive
4)当系统重启后,为了使 SELinux 的模式为自己所期望的值,需要编辑配置文件。
比如,要将 Enforcing(强制)改为 warn(警告)模式,可编辑
# vi /etc/selinux/config
将其中的
SELINUX=enforcing
改为:
SELINUX=permissive
如果当前 SELinux 已启用,要禁用 SELinux,你需要编辑
/etc/selinux/config,并重启系统。
反之亦然,但是要注意,启用时 SELINUX 的值是 enforcing 或 permissive 而不是 enabled!
5)禁用 SELinux:
# vi /etc/selinux/config
SELINUX=disabled
那要如何才能知道当前的状态呢?执行下面的命令:
# selinuxenabled;echo $?
结果返回0,表示启用;返回-256,表示禁用。
6)文件相关命令:
ls -Z
ps -Z
id -Z
分别可以看到文件,进程和用户的SELinux属性。
chcon 改变文件的SELinux属性。
三、案例分析
案例1:运行程序时日志文件报“/opt/AssetSuite/Agent/bin/libasacrypt.so: cannot restore segment prot after reloc: Permission denied”
问题分析:selinux禁止了so库的调用。
解决方法:
1)关闭selinux
2)改变库文件的上下文
chcon -t texrel_shlib_t /opt/AssetSuite/Agent/bin/libasacrypt.so
案例2:Apache - "Document root must be a directory" 问题?
有可能和这个问题并发的问题还有 403 Forbidden 禁止访问的问题。
1)现象描述:
不使用系统默认的 /var/www/html作为系统的Document Root,自己新建一个目录后修改/etc/httpd/conf/httpd.conf 中的配置,然后重起Apache的Daemon,发现Apache无法起动,系统报错:Document root must be a directory。
但是,我们设置的DocumentRoot 的确是一个目录,而且apache用户具有可读权限。
另一种情况:新建一个虚拟目录或文件后,无法访问,显示 Forbidden, 403 Error,但文件或目录有可读权限。
2)问题产生的原因:
一开始想来想去想不出为什么,但是给我感觉是权限的问题,用传统的Linux 的思维方式来看,权限绝对没有问题。
但是仔细一想,SELinux是不是会有其他安全的设定?
检查 avcmessage,查看 /var/log/messages文件,发现有类似以下内容的这样一段:
Dec 24 17:54:59 hostname kernel: audit(1098222899.827:0): avc:
denied{ getattr } forpid=19029 exe=/usr/sbin/httpd
path=/var/www/html/about.html dev=dm-0 ino=373900
scontext=root:system_r:httpd_t tcontext=user_u:object_r:user_home_t
tclass=file
问题找到了,果然是SELinux的新特性搞的鬼。
我把目录或文件设成了
user_home_t类型,因此apache的进程没有权限,无法访问。
针对Apache的进程所使用的SELinux target policy规定了apache的进程只能访问
httpd_sys_content_t类型的目录或文件。
3)解决办法:
把目录或文件的策略类型改成 httpd_sys_content_t 就可以了。
# chcon -t httpd_sys_content_t [file_name | dir_name]
然后可以用 ls -laZ 命令查看文件目录的策略类型。