分类: LINUX
2009-04-18 17:51:12
Samba Hong Kong上的一篇
在网协会的网页上讲了解了几次有关 SELinux
的题目,如果大家真的有兴趣 SELinux
,其实真应该下载 gentoo 的 LiveCD 来试试,不然就安装
Fedora 来试试,而如果你使用的是 Debian
,那就要留意以下的几编文章,因我打算写几编文章来谈这事。但是你要分开一件事,就是安装和设定是两件事的!
(我想你真要试试 gentoo 的 LiveCD
,因为试过你才会知道什么是 SELinux !因为 fedora
所设定的 SELinux
,比较偏重网络保安的层面,而不是档案系统和行程控制,这些两个都是
SELinux 下的重要课题,反而 gentoo 的 LiveCD
在这些层面上也有一定的设定。)另外当你起动 LiveCD
后,又发觉你想加以学习 SELinux
的设定,你一定会考虑到找台计算机安装 SELinux
来设设它的,因为我想没有人会对对设定一只 LiveCD
有兴趣吧!因为设定了 LiveCD 后,下一次再 reboot
系统还是会失去你一切的设定,想到这里就没有多少人有兴趣再来设定
LiveCD 了。
你安装了不就等于你设定好!设定的事情还要留到以后再来讨论。但是要试试
SELinux ,最快捷就是用 Fedora 。
另外还有人会问,为什么不在 Wiki 下讨论 SELinux
。这可以说有两点︰
* 就是 Wiki
还有很多未讨论的事情,等着讨论;例如︰ LDAP 、
Python 和 Postfix ,真没有精力再开一做新题目来讨论。
* 另一个最主要的问题是我还没有能力把整个 SELinux
也弄懂,所以只有先在这里讨论,希望能大家加以指正错误;等弄得比较清楚后,再移植到
Wiki 来讨论。
说实在我并不是 fedora 的好友,但是学习安装 SELinux
的起步,我还是试试安装了 fedora 。这原因如下︰
SELinux 是一个不同形态的 Linux
系统,而不只是安装某一个程序这么简单,而现在正式支持
SELinux 的(安装即用的系统)就只有 Fedora
了,而其它的 Linux
系统都是需要透过安装系统后再进行修改使用。因此使用
Fedora
作起点是一个好的开始,因为免去了学习如何安装的问题。所以如果你只是想学习设定一个
SELinux 的系统的话,以 fedora
为起步一定没有错误的,但是对 Debian
的好友来说这方面还是有些不是滋味的。
所以我们还是要学习如何在不同的 Linux 系统下加装
SELinux 。但是要学习安装 SELinux
的话,有些东西我们还是要知道的!
首先我们要知道如何编译一个 2.6 Kernel ,使其能支持
SELinux 的运作。
以下是取自 。
gentoo 的 SELinux 文件
Under "Code maturity level options"
[* ] Prompt for development and/or incomplete code/drivers
以上的选项,我是不太喜欢选上的;而且不选它其实也可以选上重要的
SELinux 的编译选项的。
Under "General setup"
[* ] Auditing support
这是一个很重要的 SELinux
下的选项,不知有没有提过大家 SELinux
,有一个很重要的功能是容许那些网络的 Auditer
能顺利地 Audit Linux 系统。要让 SELinux
支持这功能,你就要选择这一个选项。
Under "File systems"
<* > Second extended fs support (If using ext2)
[* ] Ext2 extended attributes
[ ] Ext2 POSIX Access Control Lists
[* ] Ext2 Security Labels
要使用 SELinux ,你要留意一件事,就是要让 SELinux
能顺利地在档案
系统,档案目录和档案上加上一些我们称为 Security
content 的参数。要令到 SELinux 加上这些 Security content
,你就要在档案系统上加上这两个不同的选项。
* extended attributes
* Security Labels
如下的也是做这事情。( Ext3 、 XFS
)是我试过的档案系统,它们都支持 Security Labels 的,
ext2 我就没有试过了。
另外很多不同的网上文件也有提及 POSIX Access Control List
和 SELinux 的关系,很多人都说在选择使用 SELinux
时,不要选择 POSIX Access Control List
,但是我所使用的核心下;这两个选项也选择了,这也没有什么问题出现。
而且 SELinux 和 POSIX Access Control List
是在两个不同的层面下工作的。(当然 SELinux 和 POSIX
Access Control List
对档案权限的处理方法是完全不同的,所以给人有这样的错觉就是只能二取其一。
<* > Ext3 journalling file system support (If using ext3)
[* ] Ext3 extended attributes
[ ] Ext3 POSIX Access Control Lists
[* ] Ext3 Security labels
<* > XFS filesystem support (If using XFS)
[ ] Realtime support (EXPERIMENTAL)
[ ] Quota support
[ ] ACL support
[* ] Security Labels
[ ] /dev file system support (EXPERIMENTAL)
[* ] /dev/pts file system for Unix98 PTYs (This option does not appear
in 2.6, it is always on)
[* ] /dev/pts Extended Attributes
[* ] /dev/pts Security Labels
另外你也可以令 /dev/pts 、tmpfs、 shm fs 这些 Kernel
下的档案系统支持 Security Labels 和 Extended Labels 的。
[* ] Virtual memory file system support (former shm fs)
[* ] tmpfs Extended Attributes
[* ] tmpfs Security Labels
最后就是你核心对 SELinux 的选项。
Under "Security options"
[* ] Enable different security models
你一定要选上上面的选项,你才可以选择以下有关
SELinux 的选项。
[* ] Socket and Networking Security Hooks
SELinux
除了档案权限和行程控制外,它也可以用来选择网络连接的。
<* > Capabilities Support
[* ] NSA SELinux Support
NSA SELinux 的支持就是我们的主菜了。
[ ] NSA SELinux boot parameter
我是必定会选择以上的选项。(当然如果你的系统已作好了完整的设定,那又另作别论。)这是让你在起动
Linux 时,可以加 selinux=0 这个参数来关掉 SELinux
起动后的 SELinux 功能。
[ ] NSA SELinux runtime disable
这和刚才的设定是相同的,但是它却支持在 Linux
运行时 Disable 它。
[* ] NSA SELinux Development Support
这是另一个必须会选上的功能。但是也是那一句,如果系统已作了充份的设定后,就可以不选它了。
SELinux 有两个不同的模式的。
* enforcing 这是 SELinux
正常运作的模式。一切在核心政策下不容许的项目都会加以禁止的。
* permissive 这是 SELinux
的发展模式,在发展模式下,发展还可以有一弹性来修改
SELinux 下的核心政策。
[ ] NSA SELinux MLS policy (EXPERIMENTAL)
这功能还在发展中,所以所知不详。