文档库 最新最全的文档下载
当前位置:文档库 › SELinux中文教程

SELinux中文教程

Getting Started with SE Linux HOWTO:the new SE Linux

Getting Started with SE Linux HOWTO:

the new SE Linux

(简体中文版)

Getting Started with SE Linux HOWTO:the new SE Linux

Getting Started with SE Linux HOWTO: the new SE Linux

(译者注:本文的最原始版本为2004年3月所写,此份HOWTO是作者在今年2月根据最

新的SE Linux所作的修改后的版本。新的SE Linux与以前的有比较大的变化,而且这项技

术本身也正在飞速的发展,并未最后成熟。阅读本文是需要对Linux本身有一定深度的了解

作为基础的。本文并不是Linux的初级教程,但却是SE Linux技术的初级教程。)

原著:Faye Coker, March 2004.

faye@https://www.wendangku.net/doc/9b2143757.html,

中文译者:邹立巍, 2006年7月

mini.jerry@https://www.wendangku.net/doc/9b2143757.html,;

重要的提示!注意!

我正在根据最新的SE Linux来根本的升级这份文档。我用了很长时间来做这件事情,不过

看来我好像永远没有足够的时间作完它。我现在正在继续做,请相信我!

Faye Coker, Feb 04, 2006

(译者注:本人技术出身,英语实在比较差。翻译如有不当之处,敬请指正!)

这份文档已经根据最新的SE Linux做了更改。旧的"Getting Started with SE Linux HOWTO"

的内容将保留在此份文档里,不过绝大多数的内容是根据最新的SE Linux的特点作了修改。新的SE Linux是基于2.6.*内核的,但是仍然支持2.4.*的内核。这份文档的大部分内容是原

来的,我在需要修改的地方做了调整。

这份文档是美国国家安全局的安全加强的Linux(NSA SE Linux)的概述性的说明。我们主

要的环境是基于Debian Linux的,而且大部分的软件包的操作命令实例都是基于Debian的。这份文档主要是针对那些想要基础了解SE Linux的人,所以这里没有对SE Linux比较进介

的介绍。你可以在附录的资源部分找到其它介绍SE Linux的资料。

这份文档已经被Ivan Pesin翻译成了俄文。你可以在

https://www.wendangku.net/doc/9b2143757.html,/rus/articles/intro_selinux.html找到俄文的版本。谢谢Ivan做了这些。

目录

1.介绍

1.1.欢迎反馈!

1.2.注意!

1.3.最新的SE Linux的特色

1.4.Fedora用户的策略(policy)源代码目录介绍

2.概览

2.1.为什么要使用SE Linux?

2.2.术语的使用

址上找到:https://www.wendangku.net/doc/9b2143757.html,/kwade/fedora-docs/selinux-faq-en/

2.2.1.身份(identity)

2.2.2.域(domain)

2.2.3.类型(type)

2.2.4.角色(role)

2.2.5.安全上下文(security context)

2.2.6.转换(transition)

2.2.7.策略(policy)

3.安装

3.1.

基于Debian的安装

修改Debian包管理工具

3.1.1.

基于Fedora的安装

3.2.

4.登录

4.1. 在登录时提供用户上下文

4.2. 用newrole -r命令改变上下文

4.3. 在sysadm_t域中执行命令

4.4. Permissive 和 Enforcing 模式

4.5. 不同角色运行命令的比较

5.建立用户帐户

5.1. 建立一个新的用户

5.2. 给用户分配角色和申请改变

5.3. 给用户设置缺省的安全上下文

5.4. 重新标记用户主目录

6.添加新的用户域

6.1. 编辑用户的域文件

6.2. 在此建立一个新的测试用户

7.日志文件信息的说明

8.资源

1. 介绍

这份文档是一个SE Linux的简介,可以指导一部分人初步的学会SE Linux。它

涵盖和解释了SE Linux 的各方面的术语,安装和添加用户并且涵盖了一小部分

别的知识。一个更高级的帮助文档将会在不久发布(译者注:正在翻译中), 包

含了如何编辑策略等内容。 (which causes a little too much information

overload with users new to SE Linux and is not included here).

例 3

avc: denied { append } for pid=6153 exe=/bin/bash path=/.bash_history dev=03:03 ino=498 \

scontext=faye:user_r:user_t tcontext=faye:object_r:root_t tclass=file

这条提示是说属于user_r:user_t 角色:域的faye 身份的用户想要在属于 root 的类型为root_t .bash_history 文件里添加内容被拒绝。

例 4

avc: denied { write } for pid=605 exe=/bin/touch dev=09:03 ino=2 \ scontext=root:user_r:user_t tcontext=system_u:object_r:root_t tclass=dir

这个例子显示的是路径找不到。然而我们可以知道的是因为inode 号是2,所以是根目录。

8. 资源

在下面是和SE Linux 的相关的链接材料。 请参照NSA 的白皮书。

NSA 官方网站

NSA的官方SE Linux 网站: https://www.wendangku.net/doc/9b2143757.html,/selinux

官方SE Linux FAQ在: https://www.wendangku.net/doc/9b2143757.html,/selinux/info/faq.cfm NSA 出版的文件, 技术上的报告在 https://www.wendangku.net/doc/9b2143757.html,/selinux/info/docs.cfm

邮件列表

NSA 为所有有关 SE Linux 的讨论建立了一个邮件列表

https://www.wendangku.net/doc/9b2143757.html,/selinux/list.html ,相同的网址上也说明了该如何获得目录文件。

SE Linux 的Sourceforge 项目

SE Linux的Sourceforge 在: http:/https://www.wendangku.net/doc/9b2143757.html,/projects/selinux.

Fedora Core 2 SE Linux FAQ

Karsten Wade 已经为在Fedora Core 2上使用SE Linux 的用户写了一份 FAQ ,可以在下面地

1.1. 欢迎反馈!

我们欢迎对这份文档的反馈信息,请发邮件给faye@https://www.wendangku.net/doc/9b2143757.html, (中文的就给我吧!;)mini.jerry@https://www.wendangku.net/doc/9b2143757.html,)

1.2. 注意!

这份文档只是一份指导。我强烈的建议你在实际工作的机器上应用之前先找一台试验机器来做练习 。

1.3. 最新的SE Linux 的特点

最新的SE Linux 有一些新的特点,下面先介绍一下:

/selinux 文件系统

加入了一个/selinux 文件系统. 因此有些安装程序需要你编辑/etc/fstab 文件。 /selinux 文件系统和 /proc 文件系统类似,都是虚拟的文件系统。你可以用ls -l /selinux 命令来显示。

total 0

-rw-rw-rw- 1 root root 0 Nov 25 11:27 access -rw-rw-rw- 1 root root 0 Nov 25 11:27 context -rw-rw-rw- 1 root root 0 Nov 25 11:27 create -rw------- 1 root root 0 Nov 25 14:19 enforce -rw------- 1 root root 0 Nov 25 11:27 load

-r--r--r-- 1 root root 0 Nov 25 11:27 policyvers -rw-rw-rw- 1 root root 0 Nov 25 11:27 relabel -rw-rw-rw- 1 root root 0 Nov 25 11:27 user

运行cat 命令查看 "enforce"文件将会显示一个值,代表SE Linux 当前的状态,1 代表 enforcing 状态, 0代表permissive 状态。

使用了文件系统的扩展属性

新的 SE Linux 使用了文件系统的扩展属性(Extended attributes)来存放安全上下文(security contexts)。你必须让你的内核支持这种扩展属性属性。 扩展属性是一个 名称—数据 元组 (name-data tuple)-- 举个例子说,

security.selinux 就是一个属性的名称,安全上下文(security context)就

是要存的数据。 当SE Linux 正在运行时,你可以用 ls

--context filename 命令来查看一个文件的安全上下文(我们将在后面进一步解释这个命令),无论SE Linux 是否打开,你都可以用getfattr 命令查看文件系统的扩展属性。不过你要先装支持 attr 的软件包并且通过 getfattr 命令的manpage 学会使用它。这个命令的运行方法是:

faye@kaos:~$ getfattr -m . -d /etc/passwd

getfattr: Removing leading '/' from absolute path names # file: etc/passwd

security.selinux="system_u:object_r:etc_t\000"

你所查看的文件的 security.selinux 属性中储存了此文件的安全上下文, 所以上面例子中的上下文就是 system_u:object_r:etc_t 。所有运行了SE Linux 的ext2/3文件系统上都有 security.selinux 这个属性(这个新特性的关键). 如果你引导了一个没有 SE Linux 的内核, 你将仍然看到这个扩展属性. 当你用make relabel 操作设置了文件的安全上下文期间,扩展属性就被setfiles 设置了。

从init 加载SE Linux 策略

打开了SE Linux 的系统在引导时,init 进程既要挂载 /selinux 文件系统,并在那之后载入SE Linux 的策略。

安全ID(SIDs) 和 父进程安全ID(PSIDs) 不再使用

SIDs (安全ID) 在旧的 SE Linux 是用户进程的内核接口. PSIDs (父进程安全ID SIDs) 是内核映射(设置)磁盘上的文件的上下文的根据(译者注:这里的概念可能不是很清晰,总的来说就是SID和PSID在旧的SE Linux中起着标记安全上下文的作用)。 请看NSA的 Configuring the SELinux Policy 获得更多的帮助。 在新的SE Linux中, 扩展属性记录了安全上下文,所以SIDs和PSIDs 也就不必要了。

-Z 参数

-Z 可以替代 --context 命令参数,比如ls -Z 和 ps -Z.

用 chcon 命令替代了chsid 命令

chsid 命令在旧的SE Linux 中用来设置文件的安全上下文。新的SE Linux 中用chcon 命令来设置。 chcon 在旧的SE Linux 中已经可以使用,但是在新的SE Linux 中的设置用户或类型方面得到了进一步改善。可以查看manpage 获得更多的提示。

1.4. Fedora 用户的策略(Policy)源代码目录介绍

在Debian 中, 策略的源代码目录是/etc/selinux . 在Fedora 中是/etc/security/selinux/src/policy 。 在这份文档中我市参照 Debian 的源代码目录做的操作, 如果你是Fedora 用户, 请用 /etc/security/selinux/src/policy 替换。

2. 总揽

例 1

avc: denied { getattr } for pid=6011 exe=/usr/bin/vim path=/etc/shadow dev=03:03 ino=123456 \

scontext=faye:user_r:user_t tcontext=system_u:object_r:shadow_t tclass=file

这一个例子显示的是,在enforcing模式时一个无特权用户(faye) 尝试编辑 /etc/shadow文件的显示信息。

"avc: denied" 意味着这样的操作被拒绝。

"{ getattr }" 意味着有人对文件使用 stat()函数。 在这个操作中,必须首先查看文件的属性 (或者说至少要查看文件属性), 如果不能查看,于是停止操作。 braces {}里的内容包含了操作的动作,或者说是SE Linux 正在做的有关操作。 SE Linux 可以做出包括allow 和deny 两种检查结果, 在这个例子中检查的结果是被拒绝, 并通知你你想要的操作被拒绝。

"for pid=" 你操作的进程的pid。

"exe=/usr/bin/vim" 是你执行的命令 (在这个例子里,执行的是vim)。 "path=/etc/shadow" 实行要操作的目标文件路径。

"dev=03:03" 是跟此操作有关的文件系统所在的块设备的设备号。 第一个 "03"(主设备号) 意思是使用了 hda ,第二个 "03" 是 3(辅助设备号或从设备号), 所以这个"dev=03:03" 就意味着 /dev/hda3 (如果你在 devfs 上运行那么应该是/dev/ide/host0/bus0/target0/lun0/part3). 当SE Linux 核查权限的时候 他并不知道你要操作的对象的完整路径所以它不能记录任何事情。它只知道文件系统的相关路径, 和文件系统所在块设备的设备号。 比如说我们要访问的 /etc/shadow. SE Linux 并不知道这个文件在根目录下。它仅仅知道 /etc/shadow 所在的文件系统。

"ino=123456" 目标的 inode 号 (这个例子中的目标是 /etc/shadow) "scontext=faye:user_r:user_t" 操作动作来源进程的上下文

"tcontext=system_u:object_r:shadow_t" 操作对象的安全上下文 (/etc/shadow)。

"tclass=file" 意味着目标对象是个文件。 Example 2

avc: granted { avc_toggle } for pid=6073 exe=/sbin/avc_toggle \

scontext=faye:sysadm_r:sysadm_t tcontext=system_u:system_r:kernel_t tclass=system

"avc: granted"意思是你的操作被允许正常运行。

"{ avc_toggle }" 表示你的程序调用了 avc_toggle()系统调用。 "tclass=system" 表示目标程序属于system class 。

标记终端设备(tty)和虚拟终端设备。当然也建立了相应的策略应用于这些标记。

SE Linux 内部并不支持任何类型的标定, 以及类型/域的继承,等。当然策略语言的编写也不支持这些特征。 所以我们用M4宏编译器来设置简单的域和类型。 我们现在来建立一个用户在这个新域中使用 (second_t)并访问 second_r 角色。

6.2再次建立一个新的测试用户

使用 useradd, 建立一个新的用户。(让我们假设用户叫做 " spike") 把spike 加入 /etc/selinux/users 只给予他对 second_r 角色的访问权和没有其它权限。 然后运行

make -C /etc/selinux load

应用新的策略。

接下来是设置缺省域和新的角色。 我们可以编辑 /etc/security/default_type 文件并添加以下行: second_r:second_t

我们现在必须手动设定/home/spike 和它的上下文。useradd ,命令不会做这些事情,它只支持重新标记用户的 user_r 角色。 运行下面的命令: find /home/spike -print0 | xargs -0 chcon -h system_u:object_r:second_home_t ;\

chcon -h system_u:object_r:second_home_dir_t /home/spike

现在试着用spike 用户身份登录。

7. 日志信息的说明

接下来介绍提示的说明信息。我将解释每部分信息的意义。 对于比较容易的部

分,我会直接在输出的内容上标记出来。

有些时候,日志信息不会以你喜欢的形式清晰的表达出来, 所以我们首先要清除 ReiserFS 和Ext2/Ext3 文件系统(SE Linux 支持的文件系统) 的root inode 是2。

XFS 文件系统和 JFS 文件系统现在正在测试中。

接下来是有关在什么情况下你该使用SE Linux 和它的基本使用的简短介绍。 2.2 部分规定了后面章节将常使用的的术语。, 所以请熟悉他们。 2.1 为什么使用SE Linux?

SE Linux 可以为你的系统提供较棒的安全防护。 使用者能被分配预先定义好的角色,以便他们不能存取文件或者访问他们不拥有的程序。 这可不是简单的 " chmod 777" 同等物操作。 这在角色, 或他所在的安全上下文已经限制接触的文件和其他的资源的使用者定义中是不同于一般的 Unix 许可权限的,除了在一种比较受约束的流行之外。 带一个用户的.rhosts 文件在一个一般的 Unix 系统上申请。 如果他们使它成为任何人可写入 , 那么任何能登录的人都可以作危险的操作。 在 SE Linux 之下,你能控制其它用户是否有能力改变他们的.rhosts文件, 以及阻止其他的人写入 , 就算拥有者已经使它成为任何人可写入。

一个通常的疑问是 SE Linux 的权限设置如何与标准的 Unix 的权限设置共存。 当你做特定的操作的时候, Unix 权限首先被检查。 如果他们允许你的操作 , 那么然后, SE Linux 将会检查并且允许或拒绝使用者的使用。 但是如果 Unix 许可不让你做某事,在那里的运行的操作被禁止和 SE Linux 检查没关系。 另外的一个例子是,如果有一个设置了SUID 的可执行文件,如/usr/bin/passwd 他可以运行命令chmod 666 /etc/shadow,SE Linux 会阻止任何人非法的这样设置文件。

2.2 术语

接下来的术语将在本文当中经常出现, 也是来自SE Linux 的基本概念. It is somewhat tricky to define one word without including the other terms so I realise my definitions include things that need defining (译者注:这句实在不敢乱译,sorry 。不过不耽误学习;-)) ;)

2.2.1 (身份)identity

在 SE Linux 中,身份的概念不同于传统的Unix uid (user id). 它们可以共存于一个系统, 但却是十分不同的概念。 在SE Linux 中的身份是安全上下文的一部分,它会影响哪个域可以进入,也就是本质上的可以被执行。一个SE Linux 的身份(identity )会跟标准的Unix 登录名有很相似的文本表示 (大部分情况下它们是这样), 无论如何,了解它们是两个完全不同的概念是很重要的。 运行su 命令不会改变SE Linux 中的身份(identity )。(译者注:我在红帽系统中做的实验却不是这样,不过这无所谓,可能红帽系统的策略设置不同,我目前还没来得及研究具体是什么问题,只是猜测。)

举例:

一个无特权用户 faye 运行 id 命令 (在启动SE Linux 的情况下) 可以看到用户的安全上下文:

context=faye:user_r:user_t

安全上下文中的身份部分就是 "faye"。 现在, 如果 faye su 切换成 root 再运行id , 他将发现安全上下文仍然是:

context=faye:user_r:user_t

身份保持相同, 跟没切换到root 时一样。, 不管怎样,如果faye 身份被允许进入sysadm_r 角色并转换成了sysadm_r (这里可以使用newrole -r 命令),再运行id 命令,他将看到:

context=faye:sysadm_r:sysadm_t

身份字段保持一样但是角色和域(第二和第三字段)的字段已经变了。这样保持身份的方式是用户职责所必需的。身份将影响系统决定哪个角色和域可以被什么身份所使用,这将对系统安全期决定性的作用。

2.2.2 域

所有进程都在域中运行。域直接决定了进程的访问。 域基本上是一个进程允许做的操作的列表, 或者说它决定了一个进程可以对哪些类型进行操作。 域就好像一个标准UNIX 的uid 的概念。 假设一个属于root 用户的可执行程序被设置了setuid 。 在这个系统上的任何用户,只要可以执行这个程序,它就有可能获得root 的权限。这是一个很大的安全漏洞。 再有SE Linux 的系统上, 如果一个正在执行的进程想要转换进入特权域执行时,如果这个进程的角色被设置成不允许进入特权与的话, 这个进程就不能执行。

常见的例子是sysadm_t 是系统管理域, user_t 是无特权用户域。 Init 运行在init_t 域, named 运行在 named_t 域。

2.2.3 类型

类型分配给一个对象并决定谁可以访问这个对象。 它的定义和域基本相同, 不同就是域是对进程的应用而类型是分配给目录,文件,和套接字的。

2.2.4 角色

角色决定了那些域可以使用。 有关哪些与可以被哪些角色使用可以预先定义在策略的配置文件里。如果一个策略数据库中定义了一个角色不可以使用一个域, 它将被拒绝。

这一个命令使所有在/home/setest目录下的文件都运行了 chcon命令(变化文件安全上下文) 改变了文件的安全上下文。 用户主目录被标记成类型为 user_home_dir_t ,而且在户主目录下的文件都被标记成类型为 user_home_t 。 有时,一个程序可能被允许访问一个用户主目录, 但是不能访问何再此目录下的文件, 两种不同的类型由此而来。

6. 添加新的用户域

现在让我们建立一个我们自己的用户域, 并把它叫做second_t 。 我们也将会建立一个新的角色叫做second_r 。 要建立second_r 角色首先在前面的部分(刚刚分配了 user_r 角色并且并不真正建立这样的用户) 中一步一步跟着作,但是不要运行第 5.2 节中的make 命令。在你已经编辑 /etc/selinux/user之后,回到这里并且继续下一部分,关于编辑使用者领域文件的部分。

关于为什么我不想要你运行make 指令的原因,是因为早先的部分刚刚分配了缺省的一个 user_r 的角色。 但是我们将会建立一个新的角色,而且同样地我们需要一个新的域与它搭配。以下部分进行概略说明。

6.1编辑用户的域文件

用户域的配置文件是 /etc/selinux/domains/user.te 。请先看一遍。 添加以下几行:

full_user_role(second) allow system_r second_r allow sysadm_r second_r

在文件的什么位置添加是无所谓的,在上面添加注释:

# if adding new user roles make sure you edit the in_user_role macro in # macros/user_macros.te to match

再来编辑 e tc/s elinux m acros/user_m acr os.t e 文件进行匹配。 打开此文件并找到 in_user_role (差不多在文件的结尾)这行。添加 "role second_r types $1;" 现在这部分文件应该像这样:

undefine(`in_user_role') define(`in_user_role', ` role user_r types $1; role second_r types $1; ')

回到我们编辑的第一个文件 (full_user_role(second)), 这样我们就建立了second_t 域和second_home_dir_t 类型以及 second_home_t 类型(用户主目录的类型和主目录里文件的类型)。一个 second_tmp_t 类型 ,当在/tmp 目录下建立文件时。 类型 second_tmpfs_t 是在tmpfs 中共享内存文件系统中建立文件的上下文。 最后,second_tty_device_t 和 second_devpts_t 类型分别被用来

user setest roles { user_r sysadm_r };

我们现在要让我们的设置生效,所以我们可以在sysadm_r:sysadm_t 角色:域的情况下运行以下命令:

make -C /etc/selinux load

这将花费一段时间,这段时间里会创建策略的数据文件并用gzip 压缩。如果命令成功执行并退出, 你将看到以下提示:

Success

touch tmp/load

make: Leaving directory `/usr/share/selinux/policy/current'

在默认的角色user_r 下的用户是不允许向 /etc/selinux/users 文件添加内容的。如果你想要他们可以使用 user_r 之外的一个用户角色或者让他们能够改变他们自己的密码,就要他们加入这一个文件,或在 SE Linux 的记录信息的适当部分添加他们的用户名。

现在我们来设置一个缺省的安全上下文。

5.3 给用户设置缺省的安全上下文

在向 /etc/selinux/users 文件添加完新用户之后, 缺省的安全上下文必须要再登陆的时候被指定。配置文件是/etc/security/default_context 。你将看到如下信息:

system_r:local_login_t user_r:user_t

当一个用户从本地登陆的时候 (或者说从控制台登陆), /bin/login 程序会在local_login_t 域中运行并分别地分配一个用户角色是 user_r 和域为 user_t 。 如果显示的是:

system_r:local_login_t sysadm_r:sysadm_t user_r:user_t

那么用户登录时允许进入sysadm_t 域, 那么他就将以 sysadm_t 域的身份登录进来。 如果不允许, 就会使用user_t 域。

请看这一行:

system_r:sshd_t user_r:user_t

这意味着所有铜壶 ssh 登录的用户将使用 user_r:user_t 角色:域。

5.4 重新标记用户主目录

如果你已经用 useradd 添加了一个角色为 user_r 的新用户, 那么那么你需要仔细的改变它已有的标记。 如果用户角色不是user_r, 那么你就不能重新标记,于是你必须运行以下命令:

find /home/setest -print0 | xargs -0 chcon -h system_u:object_r:user_home_t ;\

chcon -h system_u:object_r:user_home_dir_t /home/setest

例子:

如果允许一个属于 user_t 域 (无特权用户域) 的用户执行passwd 命令, 那么必需在相关的策略配置文件中进行如下设置: role user_r types user_passwd_t

这样设置了一个属于user_r 角色的用户允许进入user_passwd_t 域。也就是说他可以执行 passwd 命令。

2.2.5 安全上下文

安全上下文包括了所有事情的属性的描述,包括文件, 目录, 进程, TCP sockets 何以上所有的东西。安全上下文包括了身份,角色和域或者类型。在SE Linux 系统上你可以用id 命令来查看你当前用户的安全上下文。

一间很重要的事情是我们需要明白的是域和类型是有区别的, 雨果不明白这一点的话,将使你产生困惑。

域是为进程设置的。 当你查肯一个进程的安全上下文的时候 (举个例子,你可以查看后面"转换"中的解释), 最后一个字段的设置,例如user_passwd_t 就是这个进程的域(如果你运行了passwd 命令)。

一个像文件,目录,套接字等这样的对象会有一个类型。 当你运行了 ls --context 命令时, 最后一个字段就是类型的设置, 比如 user_home_t 这个类型就是一个有user_r 角色的用户在他的主目录下建立的文件的类型。 总的来说,域是分配给进程的,而类型是分配给除进程外其他对象的。那么在这里会有一个小小的混淆,就是/proc 文件系统。我们知道/proc 文件系统是虚拟的文件系统。并且里面的以数字命名的目录就是代表了各个进程,数字就是他们的pid。那么这里如果我们用 ls –context 显示/proc 目录下的1这个目录,它会显示:

dr-xr-xr-x root root system_u:system_r:init_t 1 那么这个安全上下文中显示的类型为init_t。在这里的含义就是pid 为1的这个进程的域也就是init_t 。(译者注:这样的区分不知道能不能说清楚?) 另一个需要说明的是 chsid 命令(改变安全 id) 和 chcon 命令(改变安全上下文) 不能在 /proc 文件系统上使用,就是说 /proc 文件系统不支持这种标记的改变。

文件的安全上下文是会根据创建这个文件的进程的域而改变的。默认情况下,一个文件或者目录的安全上下文是从它们父目录那里继承来的,当然我们可以通过策略的改变来改变这种设置。

例子:

faye 用户在他的主目录下建立了一个叫做test 的文件。 运行 ls --context test 可以看到 :

-rw-r--r-- faye faye faye:object_r:user_home_t test

他又在 /tmp 下建立了一个叫做tmptest 的文件,再次运行ls --context /tmp/tmptest 这次显示的是:

-rw-r--r-- faye faye faye:object_r:user_tmp_t /tmp/tmptest

第一个例子,安全上下文中的类型是 "user_home_t" 这是一个user_r 角色的无特权用户默认的主目录设置。 在第二次运行了ls --context 命令后, 你可以发现类型变成了 user_tmp_t ,这是由于执行建立文件命令的进程的域是user_t, 并且在/tmp 下的文件类型要继承 tmp_t 类型。

2.2.6 转换

是否发生转换,主要要根据安全上下文来判断。有两种主要的转换。 第一种, 当你执行了一个被限定了类型的程序时会发生进程域的转换。第二种, 在特殊的目录下创建文件时会发生文件类型的转换。

例子:

对于第二种转换 (文件类型的转换), 参照“安全上下文”部分中的例子。当运行了 ls --context 命令之后你会看到文件被标记成了什么样的类型(也就是上面例子中的 user_home_t 和user_tmp_t)。我们也可以看到当在/tmp 下建立一个文件时,新的文件的类型为user_tmp_t。

对于进程域的转换, 请参考以下的例子。 以无特权用户的身份运行ssh, 或者说我们就是运行了一个 user_t 域的进程 (你可以用id 命令查看你的安全上下

文)。运行 ps

ax --context 查看谁在运行 ssh。 假设是用户 faye, 他将看到: faye:user_r:user_ssh_t

这是显示的一部分。由于可执行程序的类型是 ssh_exec_t 并且我们用户的角色 user_r 允许

访问user_ssh_t 域,所以ssh 进程就运行在了 user_ssh_t 域中。

2.2.7 策略

策略就是可以设置的规则,决定了例如一个角色的用户可以访问什么; 哪个角色可以进入哪个域 and 哪个域可以访问哪个类型等这样的问题。 你可以根据你想要建立的系统的特点来决定设置什么样的策略。

3. 安装

现在来作点有意思的事情! 我们将会建立一个 SE Linux 用户并分配给他一个角色,然后为用户设定默认的安全上下文。 在旧的SE Linux 环境下, 封装程序的建立用 vipw (svipw)来设置,比如, useradd (suseradd), passwd (spasswd), chfn (schfn) 等, 在新的 SE Linux 环境下, 这些程序有其它的名称。

5.1 建立一个新的用户

我们现在建立一个新用户。我们叫它setest。

转换到 sysadm_r:sysadm_t 角色:用户。 现在用 useradd 命令添加用户setest:

root@kaos:~# id

uid=0(root) gid=0(root) groups=0(root) context=faye:sysadm_r:sysadm_t sid=398

运行id 命令检查确认你的 uid 是 0 并且你的身份是在sysadm_r:sysadm_t 角色:域中。 如果你的uid 是你其它似有用户的, 请先用 su 命令转换乘 root 身份, 然后运行newr o le -r 命令。

root@kaos:~# useradd -c "SE Linux test user" -m -d /home/setest -g users -s /bin/bash -u 1005 setest root@kaos:~# finger setest

Login: setest Name: SE Linux test user Directory: /home/setest Shell: /bin/bash Never logged in. No mail. No Plan.

root@kaos:~# passwd setest Enter new UNIX password: Retype new UNIX password:

passwd: password updated successfully

setest 用户现在已经添加完了。

5.2 给用户分配角色和申请改变

现在我们想给setest 用户设置一个角色。 我们希望他可以访问user_r 角色。 需要配置的文件是/etc/selinux/users ,你现在可以用你最喜欢的编辑器打开他,并先浏览一遍。

在文件的结尾添加如下内容: user setest roles { user_r };

这行的意思是允许 setest 用户进入user_r 角色。 如果你还希望 setest 用户还可以访问sysadm_r 角色, 你可以添加:

Permissive 模式。

在permissive 模式和enforcing 模式间转变, 你需要运行echo "1" >

/etc/selinux/enforce 以打开enforcing 模式。将1替换成0则意味着运行在permissive 模式。 旧的 SE Linux 用了在新的 SE Linux 中已经不用的

avc_toggle 指令。 用cat /etc/selinux/enforce 命令可以知道你正在哪种模式下运行。

你可以查看 "第七章:日志文件信息的说明",找到有关转变模式的信息提示的例子。

如果你编译的内核使用了development 模式 (意味着你的机器运行在了

permissive 模式,并且还没有设置成enforcing 模式), 你可以写一个启动脚本来转换成enforcing 模式, 或者在启动bootloader 的时候将内核参数设置为enforcing=1 。(编辑你的 lilo.conf 文件,添加 append="enforcing=1").

4.5 不同角色运行命令的比较

我们现在会在不同的安全上下文的环境下运行一些命令。 转换到enforcing 模式。在 user_r 角色的环境下, 运行ps ax --context 命令并观察输出信息。 别忘了 ps ax -Z 命令可以做同样的事情。 在角色为 user_r 的时候, 你可以看到那些被允许访问/proc 目录的而且运行在user_t 域中的进程。 如果哪个进程不能访问/proc 目录, 那么哪个进程不会显示在 ps ax 命令的输出中。 现在转换到sysadm_t 域中,运行 命令。这次, 你将会见到在系统里的所有的进程,不管他们是在哪个域下运行。 当在 sysadm_t 域的时候, 你可以访问到user_t 域不可以访问到的其它域的进程。 这就是问什么在 user_t 域中你不可以系统上所有的进程。想像一个恶意用户能够见到所有的系统程序。她能看到一个有安全漏洞的 daemon 在运行,于是她就可以针对这个漏洞进行攻击。 如果 user_t 域不能见到 daemon进程, 那么这样的危险会被减少。 另外一个要考虑的问题就是命令行上的密码问题。 默认的linux设置,是可以让任何人读到这样的信息的。 当 SE Linux 阻止你看见ps 输出的一个程序的信息时,它将减少这样的危险。 (当然,一个密码在命令行上显示,是一个差劲的主意)。

转换回permissive 模式。 你将又会在user_t 域下用ps ax 命令看到所有的系统进程。

5. 建立用户帐户

接下来的一章我们讲解释怎样获得软件包以及安装, 和怎样获得新的SE Linux 的软件包以及安装。 因为我运行的是Debian,所以我演示的安装过程式基于它的。 我们假定你知道该怎样在你所用的发布版上安装软件, 编译内核,并且给内核打补丁。

如果你是从旧的SE Linux 上升级的, 并且运行了 SE Linux kernel, 请进入permissive 模式 (用 avc_toggle 命令) 继续运行指令。

3.1基于Debian 的安装

对于Debian 的开发版(不稳定版):

将下面的文字写到你的 /etc/apt/sources.list 文件: deb https://www.wendangku.net/doc/9b2143757.html,.au/newselinux/ ./ 这个包是由 Russell Coker 维护的.

在写这篇文档的时候 (2003年11月末) 还没有可以Debian 上使用的稳定版的新的SE Linux 安装包。 开发版的 .deb 文件可以从上面的网站获得。请确保获得了最新版本的包。 因为包的名字一直都在变,所以我没有列出, 不过他们列出了需要的所有包的名字。

下面我们列出了对于新的 SE Linux,哪些报需要在Debian 上安装。在安装之前你不需要引导SE Linux kernel, 所以你可以安装它们了:

? libselinux1 包含了新 SE Linux 的共享库。

?

selinux-policy-default

包含了范例策略文件,这个策略文件应用到了很多一般应用程序例如postfix, sendmail, X 等等。 ? checkpolicy

包含了安全策略的编译器。

? policycoreutils

包含了核心工具如 setfiles, load_policy, newrole 等等。 ? selinux-utils

包含了例如查询策略的操作工具。 ?

selinux-doc

包括了一些帮助文档 。

Debian 系统所需的附加软件包列表:

?

kernel-patch-2.4-lsm

一个支持LSM 和SE Linux 的内核补丁。

? coreutils

包含了改进版的命令例如cp, mv, ls 。 ? procps

包含了改进版的 ps and top 命令。 ? sysvinit

是一个在引导时加载策略的补丁。

? dpkg

我们需要一个改进版的dpkg ,安装之后可以保证对文件的正确标记。 ? libpam-modules 因为一些安全原因。

? logrotate

一个改进版的 logrotate 可以保留一个新建文件的 SE Linux 安全上下文。 ?

cron

一个改进版的cron ,保证计划任务执行的脚本运行在正确的域内。

3.2基于Fedora 的安装

新SE Linux的RPM包可以在这里找到ftp://https://www.wendangku.net/doc/9b2143757.html,/dwalsh/SELinux 这些RPM 包的维护者是Dan Walsh.

我在我的Fedora 测试机上安装SE Linux 时, 我做了这些工作: * 编辑yum.conf 文件包含如下内容:

[main]

cachedir=/var/cache/yum debuglevel=2

logfile=/var/log/yum.log pkgpolicy=newest

distroverpkg=fedora-release tolerant=1 exactarch=1

[development]

name=Fedora Core $releasever - Development Tree

#baseurl=https://www.wendangku.net/doc/9b2143757.html,/pub/fedora/linux/core/deve lopment/i386

baseurl=https://www.wendangku.net/doc/9b2143757.html,/pub/fedora/linux/core/developmen t/i386

[SELinux]

name=SELinux repository

baseurl=ftp://https://www.wendangku.net/doc/9b2143757.html,/dwalsh/SELinux/Fedora

记一个新的文件,而且这个新的文件可能是删除的那个文件的类型。 这是一个严重的问题。

关于/etc/nologin 文件。 当shutdown 指令被执行的时候,这一个文件产生。 如果这一个文件在引导的时候存在,只有root 将会被允许登录。 如果你的启动脚本不能删除这个文件, 而且/etc/nologin 有错误的标记, 启动脚本就不能touch it ,于是就会产生一些小问题。 如果你的root 身份配置成在登录之后有一个 sysadm_r 的缺省角色, 那么你就能登录并且删除这一个文件,问题解决。 但是如果你已经配置你的root 身份在登录之后不能得到 sysadm_r 角色怎么办? 在这样的情况的下,你的root 身份的上下文可能是root:user_r:user_t 。但是 user_t 域不允许你删除任何在 /etc 目录下的文件。于是问题出现了,你能用root 身份登录, 但是做不了sysadm_r 角色的特权允许做的任何事。

再次想象, 这样一种情况,你有你自己的用户身份,再一次让我们使用 " faye" 身份。 身份 faye 配置成一登录就会变成 sysadm_r 角色。因此身份 faye 能执行所有的 sysadm_r 角色的事情,但是root 身份 (以user_r 角色在 user_t 域中运行) 不能。 faye 用户可能有很高的权限,但是faye 身份却不行, 因为由于事实它将由于 /etc/nologin 文件的存在而不能够登录,此文件不让非root 用户登录。 这就是为什么正确地将文件分类是至关重要的。 让我们回到进程被标记之后文件已经建立,但是还没引导SE Linux内核的情况。 为了修复这个问题, 我们必须运行

make -C /etc/selinux relabel

这一个命令将会确定在你的系统上的所有的文件正确地被标记。 执行的速度和你的机器上有多少文件有关,这可能需要一会儿。 一个粗糙的估计, 它将会像一个‘find /’指令一样的久。 这是为什么你想要使用 newrole 指令换成 sysadm_r 然后运行指令上述make command 命令——如果你在一个不能访问其他域的域中 (例如user_t), 你将会收到数以万计的"permission denied" 提示。

E

Permissive模式是指,你的 SE Linux 机器在本质上并没进入SE Linux 只显示相关信息的状态, 没有其它什么了。所以你仍然可以用root用户做相同的操作就像你在一部非 SE Linux 机器上一样。 Enforcing模式强制使你的所有安全策略生效。 就是说在这种模式下,你配置的所有SE Linux的策略已经生效。所以,你可以用Permissive模式来检查你的策略配置是否合乎要求。(通过检查 dmesg 信息)

这里需要强调的是:在启动到enforcing 模式之前请确定你做了合适的策略配置。所以你可以在Permissive 模式中运行以下来检查。 Permissive 模式标记了文件, 但是不实际上运行任何事, 除非所有事情都被确认。 一些人编译了一个没有

CONFIG_SECURITY_SELINUX_DEVELOP 支持的内核,那意味着你不能运行

context=faye:sysadm_r:sysadm_t

意味着他现在是 sysadm_r 角色。

接下来是第二个改变用户安全上下文的方法。

4.2用 new r ole -r 命令改变上下文

变更你的安全上下文的第二个方法将使用 newrole-r 的指令。语法是

newrole -r role

这里的role 替换你想要转换成什么角色。假设是sysadm_r 。那么既可以运行:

newrole -r sysadm_r

你将会被要求为你的使用者身份提供密码, 你可以运行id指令检查。 如果你没有授权进入一个新的角色, 你将会见到这样的显示(假设使用者fred 尝试运行的指令)

fred:sysadm_r:sysadm_t is not a valid context

这一个信息意味着fred 用户不能进入 sysadm_r:sysadm_t 角色:域,因为他没有被授权可以这么做。

在成功地变更角色之后, 运行id 指令检查你的安全上下文。

4.3在sysadm_t 域中执行命令

你的用户现在已经在 sysadm_r 角色,运行的程序是在 sysadm_t 域。此时我们需要把我们的安装做的稍微完善一些, 因此让我们去虚拟的控制台并用root 用户登录。 你将不被要求是否想要改变上下文。

我必须在这里说明一些事情。 我们实际上到目前为止没有在这份HOWTO 中说明怎样让root 用户允许访问 sysadm_r 角色,所以你的思路可能还停在那里,root 用户只允许访问user_r:user_t ,这样我们怎么进行系统管理? 好吧,我们正在运行的模式是permissive ,这是一种并不真正强制的执行安全策略的设置的模式。你依旧能在上面使用 newrole-r 指令换成 sysadm_r 角色。运行newrole 指令是转换的方法。 如果你试着做你不被允许的事情,你将看到一屏接一屏的错误显示信息,这并不好玩。

所以,转换成 sysadm_r 角色并且运行 id 来检查你实际的上下文是不是 sysadm_r:sysadm_t。

现在我们能在 sysadm_r 角色中得到一些乐趣。 当我们在第 3 节中安装了所有东西的时候, 当时系统上所有的文件都被标记了一个类型,但是电脑却没有在运行 SE Linux 。 因此如果一个文件在将程序分类发生之后建立的话, 并且在系统没有重新启动SE Linux 的内核之前,那么那一个文件将不属于任何一种类型。想象一些文件可能在关机期间被创建。 这些文件都没有标记类型。 于是, 考虑到这一个情况。 如果你删除一个文件,那么那个文件的 inode 号可能被用来标

* 运行的命令进行安装 yum install policy checkpolicy policycoreutils policy-sources pam passwd vixie-cron

* 在所有包安装完之后

cd /etc/security/selinux/src/policy make load make relabel

*重起机器.

4. 登录

接下来的一部分描述了系统登录, 而且解释了更多的关于用户安全上下文一些内容。 本章的最后部分讨论permissive 模式和enforcing 模式。

4.1在登录时提供用户上下文

在这一个阶段,你应该要重新启动系统并等待那个登录的提示。当你安装了 selinux 的缺省策略包后 (Fedora 上是策略的源代码包), 政策文件的安装使你能够以一个缺省用户角色登录系统。(当我们还没有没有添加一个属于我们自己的用户的时候)

以root 身份正常登录你的系统。 你的安全上下文默认情况下为 root:user_r:user_t 。 id 命令显示的类型和你的安全上下文显示应该是相同的,如下所示我们需要看安全上下文部分,所以不必关心其它字段):

uid=0(root) gid=0(root) groups=0(root) context=root:user_r:user_t 所以安全上下文是 root:user_r:user_t

现在我们假设你先前已经把你自己的帐户设置成另外的一个角色。你可以参考 第五章: 建立用户帐户.。对于角色转变有两个方法。 第一是 , 你登录的时候。假设使用者 faye 被认可进入 sysadm_t 域。 使用者 faye 在控制台登录。 在那 "Your default context is faye:user_r:user_t. Do you want to choose a different one? [n]" 这是提示, 她选择, y 并按了回车。 她将会见到如下信息:

[1] faye:user_r:user_t

[2] faye:sysadm_r:sysadm_t Enter number of choice:

在这一个例子中, 你能见到那使用者身份 " faye" 先前已经被允许访问sysadm_r 角色和 sysadm_t 域。 这里将会被显示的选项是那些你的使用者身份已经被允许访问的对象。 请注意,这在旧的 SE Linux 已经实现了, 而且将会在新的 SE Linux(在写这文档的时候是不可以的) 中被设置为可配置选项, 默认的设置为关闭(OFF)。

如果用户faye 选择了选项二 ( 变成 sysadm_r) 然后运行id 命令, 她将会见到安全上下文的内容为:

selinux学习理解

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。 默认是Enforcing 2、改变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配置实例

CentOS上的SELinux实验

SELinux实验 一、环境搭建 因为实验室的Ubuntu系统本身不带SELinux,加上没有源和网速问题,安装不上。因此建议在虚拟机中用CentOS做。 CentOS下载地址: 中国科学技术大学开源镜像站:https://www.wendangku.net/doc/9b2143757.html,/centos/6/isos/x86_64/ 网易开源镜像站:https://www.wendangku.net/doc/9b2143757.html,/centos/6/isos/x86_64/ 大家选择CentOS-6.5-x86_64-LiveCD.iso下载就好,650MB左右。 机房的电脑默认没开Intel-VT技术,开机按F12,选择System Setup,然后在Virtualization 选项下开起虚拟化支持。 最后用VMware player或者VirtualBox新建虚拟机即可。 二、实验内容 CentOS已经安装好了SELinux,而且默认开启,用sestatus命令查看SELinux状态, 然后用yum install httpd服务, 在/var/www/html/目录下建立a.html文件,内容随意写点什么。然后重启httpd服务, 在浏览器中访问127.0.0.1/a.html,结果如下:

然后在root目录下建立b.html,内容随意,建立好后把b.html文件移动到/var/www/html/目录下,重启httpd服务。 在浏览器中访问b.html,会提示没有权限,如下图所示: 在终端中用ls–Z命令查看/var/www/html/目录下的文件安全上下文:

可以看见区别,因为b.html文件是root用户创建的,因此没有权限访问。 用chcon -t 命令更改文件的上下文环境: 再次在浏览器中访问b.html,可见可以访问了: 大家可以同理完成“修改/var/www/整个目录的上下文环境,使其为httpd不允许访问的类型”,然后在浏览器中测试。

2.1.5 节点防火墙和SELinux配置.

2.1.5 节点防火墙和SELinux配置 1.防火墙设置 在控制和计算节点上分别执行以下操作进行防火墙设置。(1)停止iptables服务。 [root@controller ~]# service iptables stop iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Flushing firewall rules: [ OK ] iptables: Unloading modules: [ OK ] (2)将iptables服务配置为开机不自动启动。 [root@controller ~]# chkconfig iptables off 2.SELinux设置 在控制和计算节点上分别执行以下操作进行SELinux设置。(1)编辑SELinux的配置文件。 [root@controller ~]# vi /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=permissive # 将SELinux配置为允许模式 # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted 配置完成后,重新启动控制节点和计算节点。

什么是SELinux

SELinux(Security-Enhanced Linux) 是美国国家安全局(NAS)对于强制访问控制的实现,是 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情况下的安全策略完全控制着对所有资源的访问。这是MAC和DAC本质的区别。SELinux提供了比传统的UNIX权限更好的访问控制。 1.背景 SELinux是「Security-Enhanced Linux」的简称,是美国国家安全局「NSA=The National Security Agency」和SCC(Secure Computing Corporation)开发的 Linux的一个扩张强制访问控制安全模块。原先是在Fluke上开发的,2000年以 GNU GPL 发布。 现在以Linux作为因特网服务器是越来越普遍的事了。在我这几年作过的项目里,WEB的开发基本都是基于Linux的,这里有给大公司做的,也给政府部门做的,当然更多的是中小企业做的。这其中给政府做的,我们把SELinux作为一个卖点,接受了不少项目。 2.我们需要安全操作系统的理由 现在不论是政府还是民间企业,大家对信息安全问题是越来越关心了,因为企业的业务平台的服务器上存储着大量的商务机密,个人资料,个人资料它直接关系到个人的隐私问题。特别是我们政府的网站,作为信息公开的平台,它的安全就更显得重要了。这些连到互联网的服务器,不可避免的要受到来自世界各地的各种威胁。最坏的时候我们的服务器被入侵,主页文件被替换,机密文件被盗走。除了来自外部的威胁外,内部人员的不法访问,攻击也是不可忽视的。对于这些攻击或者说是威胁,当然有很多的办法,有防火墙,入侵检测系统,打补丁等等。因为Linux也和其他的商用UNIX一样,不断有各类的安全漏洞被发现。我们对付这些漏洞不得不花很多的人力来堵住它。在这些手段之中,提高OS系统自身的牢固性就显得非常的重要。 2.1传统的Linux OS的不足之处 虽然Linux 比起 Windows 来说,它的可靠性,稳定定要好得多,但是他也是和其他的UNIX 一样,有以下这些不足之处。 1)存在特权用户root 任何人只要得到root的权限,对于整个系统都可以为所欲为。这一点Windows也一样。2)对于文件的访问权的划分不够细

SELinux TE规则

1. 简介 SELinux策略语言主要描述policy.conf的相关语法,其相关部分如下图所示: 2. 类型强制概念 SELinux策略大部分内容都是由多条类型强制规则构成的,这些规则控制被允许的使用权,大多数默认转换标志,审核,以及固定部分的检查。 SELinux策略大部分都是一套声明和规则一起定义的类型强制(TE:Type Enforcement)策略,一个定义良好、严格的TE策略可能包括上千个TE规则,TE规则数量的巨大并不令人惊奇,因为它们表达了所有由内核暴露出的允许对资源的访问权,这就意味着每个进程对每个资源的访问尝试都必须至少要有一条允许的TE访问规则,如果我们仔细思考一下现代Linux操作系统中进程和资源的数量,就明白为什么在策略中有那么多的TE规则了。当我们添加由TE规则控制的审核配置和标志时,对于具有严格限制的SELinux策略,常常会见到它包含有上千条规则,在“创建和编写SELinux安全策略”中,我们将会讨论如何创建和管理这些大量的规则,本文旨在理解TE规则是如何工作的。 TE规则的绝对数量对理解SELinux策略是一个大的挑战,但是规则本身并不复杂,它们的分类相对较少,所有的规则基本上都属于两类范畴: ?访问向量(AV)规则 ?类型规则 我们使用AV规则允许或审核两个类型之间的访问权,我们在某些情况下使用类型规则控制默认的标记决定。 SELinux的一个重要概念是TE规则是将权限与程序的访问结合在一起,而不是结合用户。所有SELinux 策略语言特性都是处理主体(正常的运行中的进程)对客体(文件、目录和套接字等)的访问权的,主要集中于程序访问控制决策,这也是SELinux的主要益处,它允许SELinux策略编写者基于程序的功能和安

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 的工作行为和方式,策略决定具体的安全细节如文件系统,文件一致性。 二、使用设置

Selinux配置详解

Selinux配置详解 1.背景 SELinux是「Security-Enhanced Linux」的简称,是美国国家安全局「NSA=The National Security Agency」和SCC(Secure Computing Corporation)开发的Linux的一个扩张强制访问控制安全模块。原先是在Fluke上开发的,2000年以GNU GPL 发布。 现在以Linux作为因特网服务器是越来越普遍的事了。在我这几年作过的项目里,WEB的开发基本都是基于Linux的,这里有给大公司做的,也给政府部门做的,当然更多的是中小企业做的。这其中给政府做的,我们把SELinux作为一个卖点,接受了不少项目。 2.我们需要安全操作系统的理由 现在不论是政府还是民间企业,大家对信息安全问题是越来越关心了,因为企业的业务平台的服务器上存储着大量的商务机密,个人资料,个人资料它直接关系到个人的隐私问题。特别是我们政府的网站,作为信息公开的平台,它的安全就更显得重要了。这些连到互联网的服务器,不可避免的要受到来自世界各地的各种威胁。最坏的时候我们的服务器被入侵,主页文件被替换,机密文件被盗走。除了来自外部的威胁外,内部人员的不法访问,攻击也是不可忽视的。对于这些攻击或者说是威胁,当然有很多的办法,有防火墙,入侵检测系统,打补丁等等。因为Linux也和其他的商用UNIX一样,不断有各类的安全漏洞被发现。我们对付这些漏洞不得不花很多的人力来堵住它。在这些手段之中,提高OS 系统自身的牢固性就显得非常的重要。 2.1传统的Linux OS的不足之处 虽然Linux 比起Windows 来说,它的可靠性,稳定定要好得多,但是他也是和其他的UNIX 一样,有以下这些不足之处。 1)存在特权用户root 任何人只要得到root的权限,对于整个系统都可以为所欲为。这一点Windows也一样。 2)对于文件的访问权的划分不够细 在linux系统里,对于文件的操作,只有「所有者」,「所有组」,「其他」这3类的划分。 对于「其他」这一类里的用户再细细的划分的话就没有办法了。 3)SUID程序的权限升级 如果设置了SUID权限的程序有了漏洞的话,很容易被攻击者所利用。

Linux安全中阶教程之SElinux(适合有一定水平的管理员) ...

Linux安全中阶教程之SElinux(适合有一定水平的管理员) 一:SElinux(安全增强linux简介) 1:使用SElinux可以将进程放入在特定的SElinux域,同时赋予系统上的资源(如文件,网络套接字,系统调用等)SElinux上下文。装入SElinux的策略(通常作为系统启动过程的一部分),然后决定哪个进程域可以访问哪些资源上下文。 2:在红帽企业版linux 5中,有关SElinux的选择有下面几种: (1) 我是否需要启用SElinux (2) 一旦启用,我需要SElinux处于允许(permissive)还是强制(enforcing)状态。 (3) 我需要在文件上赋予什么样的SElinux上下文。 3:在实际工作中,红帽企业版linux 5支持一种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)

syslogd 4:启用SElinux /etc/sysconfig/selinux setenforce getenforce /etc/sysconfig/selinux (1) 强制(enforcing):任何违法SElinux的操作都被禁止。 (2) 允许(permissive):任何违反SElinux的操作都会受到一个警告信息。但是行动可以继续。 (3) 停用(disabled):不启用SElinux策略。 Setenforce和getenforce命令 Setenforce 0/1 0 表示允许;1 表示强制 Getenforce 查看当前SElinux的状态。 5:查看SElinux上下文 使用命令 ps –Z 和 ls –Z 每个进程都属于个SElinux域; 每个文件都被赋予一个SElinux上下文。 相关的域和上下文可以使用ls和ps命令的命令选项–Z 来显示 进程SElinux域和SElinux上下文,具有以下格式: System_u:object_r:httpd_exec:s0 说明: 上面的字段以冒号作为分隔符, 第一个字段:用户 第二个字段:角色 第三个字段:类型 第四个字段:与MLS,MCS有关 说明: SEliunx目标策略只于第三个字段有关,即类型字段(TYPE). 二:SElinux介绍 SElinux是美国国家安全局为linux系统设计的一项开放源码项目,主要是希望将其作为系统的最后一道防线,来抵御黑客的攻击和入侵系统。 1. 常见的读取控制 1.1 DAC (Discretionary Access Control)”任意式读取控制”。在DAC的架构下,每个对像都会记录一个拥有者的信息。只要是对象的拥有者,就可以获得该对象的完全控制权限。DAC 允许拥有者完全权限。其他需要读取该对象时候,必须授予适当的权限。但是每个对象仅有一组拥有者的信息,如果需要更复杂的读取控制能力,必须使用ACL。ACL的全名是“访问

SELinux服务器不关闭配置 samba的方法

SELinux服务器不关闭配置samba的方法https://www.wendangku.net/doc/9b2143757.html, 2010-03-02 10:28 佚名 CSDN 我要评论() ?摘要:点击一看,是SELinux报警,报警时间与每次客户机访问samba时间一致,估计是SELinux 太严谨的问题,将客户机的错误信息在网上搜索,查找到果然是samba与SELinux冲突的问题。 ?标签:SELinux ? 限时报名参加“甲骨文全球大会·2010·北京”及“JavaOne和甲骨文开发者大会2010” 给大家推荐一款很不错的SELinux系统很有学习价值,这里我主要讲解SELinux系统的应用,包括介绍SELinux知识等方面。前段时间在实验室的4*4核服务器上安装Samba 服务器,解决了服务器安装的硬件问题后,在服务器上配好了Samba,但在客户机访问Samba 时,显示错误。查看到主机机器上右上方有红色感叹号显示。 点击一看,是SELinux报警,报警时间与每次客户机访问samba时间一致,估计是SELinux太严谨的问题,将客户机的错误信息在网上搜索,查找到果然是samba与SELinux 冲突的问题。 PS:曹老师开始用挂载的方法配NSF时也没配成功,同样是SELinux的问题,关闭后可解决。方法一:关闭SELinux,并修改配置文件,使系统启动时不启动SELinux。(我采用的是这种方法) 1.Disable selinux 2.[root@Jie ~]# vi /etc/sysconfig/selinux 3.# This file controls the state of SELinux on the system. 4.# SELINUX= can take one of these three values: 5.# enforcing - SELinux security policy is enforced. 6.# permissive - SELinux prints warnings instead of enforcing. 7.# disabled - SELinux is fully disabled. 8.SELINUX=enforcing 9.# SELINUXTYPE= type of policy in use. Possible values are: 10.# targeted - Only targeted network daemons are protected. 11.# strict - Full SELinux protection. 12.SELINUXTYPE=targeted 把SELINUX设定为disable, 下次启动系统后将会停止SElinux。Linux核心参数(Kernel Parameter)或者可以在核心参数后加上:selinux=0 (停止)或selinux=1 (开启)参数档案/boot/grub/menu.lst 1.title Fedora Core ( 2.6.18-1.2798.fc6) 2.root (hd0,0)

selinux设置出错解决办法

1 永久方法–需要重启服务器 修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器。 2 临时方法–设置系统参数 使用命令setenforce 0 禁用SELinux时配置错误导致rhel不能够启动的一种解决方法造成此次问题的原因: 1. 2. linux版本是RHEL5,关闭SELinux时,在修改配置文件 /etc/selinux/config过程中, 3. 4.本应设置: 5.# SELINUX=enforcing 6.SELINUX=disabled 7. 8. 9.不慎设置了SELINUXTYPE参数: 10.#SELINUXTYPE=targeted 11.SELINUXTYPE=disabled 12.重启RHEL的时候,提示: 13.unable to load selinux policy. machine is in enforcing mode. ha lting now. kernel panic-not syncing:attempted to kill init! 14.解决方法: 15. 16.系统启动的时候,按下‘e’键进入grub编辑界面,编辑grub菜单,选 择“kernel /vmlinuz- 2.6.2 3.1-42.fc8 ro root=/dev/vogroup00/logvol00 rhgb quiet”一 栏,按‘e’键进入编辑,在末尾增加selinux=0,即: 17.kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/vogroup00/logvol00 rhgb quiet enforcing=0 18.按‘b’键继续引导,顺利引导

selinux 中文手册

Getting Started with SE Linux HOWTO: the new SE Linux (简体中文版)

Getting Started with SE Linux HOWTO: the new SE Linux (译者注:本文的最原始版本为2004年3月所写,此份HOWTO是作者在今年2月根据最 新的SE Linux所作的修改后的版本。新的SE Linux与以前的有比较大的变化,而且这项技 术本身也正在飞速的发展,并未最后成熟。阅读本文是需要对Linux本身有一定深度的了解 作为基础的。本文并不是Linux的初级教程,但却是SE Linux技术的初级教程。) 原著:Faye Coker, March 2004. faye@https://www.wendangku.net/doc/9b2143757.html, 中文译者:邹立巍, 2006年7月 mini.jerry@https://www.wendangku.net/doc/9b2143757.html,; 重要的提示!注意! 我正在根据最新的SE Linux来根本的升级这份文档。我用了很长时间来做这件事情,不过 看来我好像永远没有足够的时间作完它。我现在正在继续做,请相信我! Faye Coker, Feb 04, 2006 (译者注:本人技术出身,英语实在比较差。翻译如有不当之处,敬请指正!) 这份文档已经根据最新的SE Linux做了更改。旧的"Getting Started with SE Linux HOWTO" 的内容将保留在此份文档里,不过绝大多数的内容是根据最新的SE Linux的特点作了修改。新的SE Linux是基于2.6.*内核的,但是仍然支持2.4.*的内核。这份文档的大部分内容是原 来的,我在需要修改的地方做了调整。 这份文档是美国国家安全局的安全加强的Linux(NSA SE Linux)的概述性的说明。我们主 要的环境是基于Debian Linux的,而且大部分的软件包的操作命令实例都是基于Debian的。这份文档主要是针对那些想要基础了解SE Linux的人,所以这里没有对SE Linux比较进介 的介绍。你可以在附录的资源部分找到其它介绍SE Linux的资料。 这份文档已经被Ivan Pesin翻译成了俄文。你可以在 https://www.wendangku.net/doc/9b2143757.html,/rus/articles/intro_selinux.html找到俄文的版本。谢谢Ivan做了这些。 目录 1.介绍 1.1.欢迎反馈! 1.2.注意! 1.3.最新的SE Linux的特色 1.4.Fedora用户的策略(policy)源代码目录介绍 2.概览 2.1.为什么要使用SE Linux?

selinux管理和应用

1.1 SElinux概述 SELinux(Security-Enhanced Linux) 是美国国家安全局(NAS)对于强制访问控制的实现,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。大部分使用SELinux 的人使用的都是SELinux就绪的发行版,例如Fedora、Red Hat Enterprise Linux (RHEL)、Debian 或Gentoo。它们都是在内核中启用SELinux 的,并且提供一个可定制的安全策略,还提供很多用户层的库和工具,它们都可以使用 SELinux 的功能。 1.1.1 SElinux特点 1.MAC 对访问的控制彻底化,对所有的文件、目录、端口的访问都是基于策略设定的,可由管理员时行设定。 2.RBAC 对于用户只赋予最小权限。用户被划分成了一些role(角色),即使是root 用户,如果不具有sysadm_r角色的话,也不是执行相关的管理。哪里role可以执行哪些domain,也是可以修改的。 3.安全上下文 当启动selinux的时候,所有文件与对象都有安全上下文。进程的安全上下文是域,安全上下文由用户:角色:类型表示。 (1)系统根据pam子系统中的pam_selinux.so模块设定登录者运行程序的安全上下文 (2)rpm包安装会根据rpm包内记录来生成安全上下文, (3)如果是手工他建的,会根据policy中规定来设置安全上下文, (4)如果是cp,会重新生成安全上下文。 (5)如果是mv,安全上下文不变。 1.1.2 安全上下文格式 安全上下文由user:role:type三部分组成,下面分别说明其作用: https://www.wendangku.net/doc/9b2143757.html,er identity:类似linux系统中的UID,提供身份识别,安全上下文中的一部分。 三种常见的user: user_u-: 普通用户登录系统后预设; system_u-:开机过程中系统进程的预设; root-: root登录后预设; 在targeted policy中users不是很重要; 在strict policy中比较重要,的有预设的selinux users都以"_u"结尾,root除外。 2.role

SELinux概述

SELinux使用了分级的强制访问控制,是Linux核的重要安全措施。SELinux的安全策略工具可从oss.tresys./projects下载。本章分析了SELinux的安全机制,介绍了安全策略配置语言、核策略库的结构,简述了SELinux核模块的实现,还分析了用户空间的客体管理器。 3.1SELinux概述 SELinux是安全增强了的Linux,是Security-enhanced Linux的简写,SELinux改进了对核对象和服务的访问控制,改进了对进程初始化、继承和程序执行的访问控制,改进了对文件系统、目录、文件和打开文件描述的访问控制,还改进了对端口、信息和网络接口的访问控制。早期的Linux核只提供了经典的UNIX自主访问控制(root用户,用户ID,模式位安全机制),以及部分地支持了POSIX.1e标准草案中的capabilities安全机制,这对于Linux系统的安全性是不够的,NSA(the National Security Agency)和SCC(Secure Computing Corporation)共同开发了强大的基于类型加强(Type Enforcement)的强制访问控制(mandatory access control,简称MAC)机制,提供了动态的安全策略机制。 Linux核增加了一个通用的安全访问控制框架,它通过hook函数来控制程序的执行,这个框架就是Linux安全模块(LSM),在LSM上可使用各种安全控制机制(如:Flask机制)来实现对程序的控制。 SELinux应用了类型加强(Type Enforcement,TE)和基于角色访问控制(role-based access control,RBAC)技术。 TE给每个主体(进程)和系统中的客体定义了一个类型,这些类型定义在SELinux的安全策略文件中,以安全标签形式存放在文件本身的扩展属性(extended attributes,简称xattrs)里。 当一个类型与一个进程相关时,这个类型称为域(domain),例如:后台进程httpd的域为httpd_t。 主体(subject)对客体(object)的操作在SELinux中默认下是不允许的,而由策略定义允许的操作。TE使用主体的域和客体类型从策略文件中查找操作许可。例如:策略中的一条规则如下: allow httpd_t net_conf_t:file { read getattr lock ioctl }; 这条规则表示httpd_t域对net_conf_t类型客体的文件有“{}”中所表示的操作权限。SELinux的访问控制规则存放在安全策略文件中,策略文件分为二进制和源代码文件,源代码以策略配置语言的形式描述,由编程者创建和维护。源代码经策略配置工具编译后生成二进制文件。二进制策略被装载到核空间,形成在存中的策略库及缓存,核就可以使用访问控制规则了。 SELinux可以实现非常小颗粒的访问控制,这些细小颗粒的访问控制也造成了安全策略的复杂性。 Linux核的SELinux安全体系由Flask和LSM框架共同组成,LSM是由hook函数组成的安全控制框架,Flask框架将SElinux的策略规则转换成访问控制许可。 在安全策略配置语言中经常用到的名称术语说明如下。 subject 主体,常指一个进程 object 客体,常指一个文件 object class客体的类 permission 许可 context上下文 user用户 role角色 type 类型

linux-SElinux命令详解setsebool命令

配置VSFTPD时本地用户无法切换 用到命令 setsebool -P ftpd_disable_trans=1 setsebool命令查询了相关的资料 是selinux的相关设置项 这是SELinux的设置命令. 其实 man 一下setsebool也知道了: NAME setsebool– set SELinuxboolean value 在不熟悉SELnux前,把SELinux关掉也可以的。有时间研究下SELinux。 Redhat从FC3开始,就使用了SELinux来增强安全,但是使用起来有时候太繁琐,就想关闭它,但是如果安装服务器的时候开始没有图形界面,还真很难找到地方可以关闭。 正确方法如下:修改/etc/selinux/config文件中的SELINUX=”" 为 disabled ,然后重启。 2009年8。22更新 下面是一些收集来的设置命令 ===ftp=== //If you want to share files anonymously chcon -R -t public_content_t /var/ftp //If you want to setup a directory where you can upload files chcon -t public_content_rw_t /var/ftp/incoming You must also turn on the booleanallow_ftpd_anon_write setsebool -P allow_ftpd_anon_write=1 //If you are setting up this machine as a ftpd server and wish to allow users to access their home directorories

Selinux的了解

Selinux的了解 1.背景 SELinux是「Security-Enhanced Linux」的简称,是美国国家安全局「NSA=The National Security Agency」和SCC(Secure Computing Corporation)开发的Linux的一个扩张强制访问控制安全模块。原先是在Fluke上开发的,2000年以GNU GPL 发布。 现在以Linux作为因特网服务器是越来越普遍的事了。在我这几年作过的项目里,WEB的开发基本都是基于Linux的,这里有给大公司做的,也给政府部门做的,当然更多的是中小企业做的。这其中给政府做的,我们把SELinux作为一个卖点,接受了不少项目。 2.我们需要安全操作系统的理由 现在不论是政府还是民间企业,大家对信息安全问题是越来越关心了,因为企业的业务平台的服务器上存储着大量的商务机密,个人资料,个人资料它直接关系到个人的隐私问题。特别是我们政府的网站,作为信息公开的平台,它的安全就更显得重要了。这些连到互联网的服务器,不可避免的要受到来自世界各地的各种威胁。最坏的时候我们的服务器被入侵,主页文件被替换,机密文件被盗走。除了来自外部的威胁外,内部人员的不法访问,攻击也是不可忽视的。对于这些攻击或者说是威胁,当然有很多的办法,有防火墙,入侵检测系统,打补丁等等。因为Linux也和其他的商用UNIX一样,不断有各类的安全漏洞被发现。我们对付这些漏洞不得不花很多的人力来堵住它。在这些手段之中,提高OS 系统自身的牢固性就显得非常的重要。 2.1传统的Linux OS的不足之处 虽然Linux 比起Windows 来说,它的可靠性,稳定定要好得多,但是他也是和其他的UNIX 一样,有以下这些不足之处。 1)存在特权用户root 任何人只要得到root的权限,对于整个系统都可以为所欲为。这一点Windows也一样。 2)对于文件的访问权的划分不够细 在linux系统里,对于文件的操作,只有「所有者」,「所有组」,「其他」这3类的划分。 对于「其他」这一类里的用户再细细的划分的话就没有办法了。 3)SUID程序的权限升级 如果设置了SUID权限的程序有了漏洞的话,很容易被攻击者所利用。

实验11 selinux

实验11 SELinux 一、实验要求 掌握SELinux的配置方法。 掌握SELinux三种模式的切换方法。 掌握SELinux在ftp服务中的应用。 二、实验过程 1查看selinux状态 查看文件的security context值 这个就是我们文件的security context值 system_u:object_r:admin_home_t system_u指的是SElinux用户,root表示root账户身份,user_u表示普通用户无特权用户,system_u表示系统进程,通过用户可以确认身份类型,一般搭配角色使用。身份和不同的角色搭配时有权限不同,虽然可以使用su命令切换用户但对于SElinux的用户并没有发生改变,账户之间切换时此用户身份不变,在targeted策略环境下用户标识没有实质性作用。 object_r object_r一般为文件目录的角色、system_r一般为进程的角色,在targeted策略环境中用户的角色一般为system_r。用户的角色类似用户组的概念,不同的角色具有不同的身份权限,一个用户可以具备多个角色,但是同一时间只能使用一个角色。在targeted策略环境下角色没有实质作用,在targeted策略环境中所有的进程文件的角色都是system_r角色。 admin_home文件和进程都有一个类型,SElinux依据类型的相关组合来限制存取权限。 context值的类型会随着文件在不同的位置,会跟着发生变化。 大家进入到/home目录创建文件1,查看该文件的安全值,然后将该文件移动到/root目录下,再查看安全值,安全值是否发生变化。

从头开始生成 SELinux

从头开始生成SELinux 构建一个SELinux 就绪的Gentoo 系统 Serge E. Hallyn (sergeh@https://www.wendangku.net/doc/9b2143757.html,), 专职程序员, EMC Serge Hallyn 是IBM Linux Technology Center 安全团队的一名专职程序员。他从College of William and Mary 获得了计算机科学博士学位。他实现了几个安全模型(dte、bsdjail),并对其他的安全模型(seclvl) 和SELinux 贡献了自己的力量。他实现了DTE 及相应的配置文件和分析工具,并在Type Enforcement(SELinux 中的主要技术)方面具有丰富的经验。 简介: SELinux 是美国国家安全局对于强制访问控制的实现,是Linux? 上最杰出的新安全子系统。SELinux 默认安装在Fedora 和Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。本文将向您展示如何手工转换一个非SELinux 的系统,目的是展示SELinux 是如何集成到系统中的。 SELinux 是 2.6 版本的Linux 内核中提供的强制访问控制(MAC)系统。对于目前可用的Linux 安全模块来说,SELinux 是功能最全面,而且测试最充分的,它是在20 年的MAC 研究基础上建立的。SELinux 在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制概念。有关这些主题的更多信息的链接,请参见本文后面的参考资料部分。 大部分使用SELinux 的人使用的都是SELinux 就绪的发行版,例如Fedora、Red Hat Enterprise Linux (RHEL)、Debian 或Gentoo。它们

SElinux以及防火墙的关闭

SElinux以及防火墙的关闭 关闭SELinux的方法: 修改/etc/selinux/config文件中的SELINUX="" 为disabled ,然后重启。 如果不想重启系统,使用命令setenforce 0 注: setenforce 1 设置SELinux 成为enforcing模式 setenforce 0 设置SELinux 成为permissive模式 在lilo或者grub的启动参数中增加:selinux=0,也可以关闭selinux #--------------------------------------------------------------- 查看selinux状态: /usr/bin/setstatus -v 如下: SELinux status: enabled SELinuxfs mount: /selinux Current mode: permissive Mode from config file: enforcing Policy version: 21 Policy from config file: targeted getenforce/setenforce查看和设置SELinux的当前工作模式。 Linux关闭防火墙 1) 重启后永久性生效: 开启:chkconfig iptables on 关闭:chkconfig iptables off 2) 即时生效,重启后失效: 开启:service iptables start 关闭:service iptables stop 需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。 在开启了防火墙时,做如下设置,开启相关端口, 修改/etc/sysconfig/iptables 文件,添加以下内容: -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT 或者: /etc/init.d/iptables status 会得到一系列信息,说明防火墙开着。 /etc/rc.d/init.d/iptables stop 关闭防火墙 建议的关闭防火墙命令是 iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -F 注: fedora下:

相关文档