在網協會的網頁上講了解了幾次有關 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)
這功能還在發展中,所以所知不詳。