課程大綱:
一、操作系統中訪問控制模型的演化
1、訪問控制模型的概念(Reference Monitor)
2、DAC(Discretionary Access Control)的致命傷
3、MAC(Mandatory Access Control)的起源
4、SELinux 的 TE(Type Enforcement)模型
二、SELinux 的概念
1、SELinux 的“物質基礎”-安全上下文(SecurityContext)
2、LSM(Linux Security Module)
3、Type Enforcement 的概念
4、Domain Transition 的概念
5、Role 的作用
6、Domain Transition 和 role 規則舉例
7、MLS 對 SC 的擴展
三、SELinux 的語法
1、Object Class and Permissions
2、Type, alias and Attribute
3、Access Vector Rules
4、Type Transition Rule
5、神奇的 type_change 規則
6、RBAC
7、Constraints and MLS constraints
8、Boolean, Tunable and OptionalPolicy
9、Range Transition
10、Role Transition
11、使用 setools 工具包分析 policy.X
12、在 Host 上使用 Checkpolicy 訪問用戶態 Security Server
四、Reference Policy
1、Reference Policy 代碼樹的主要結構
2、Policy Package 的源代碼文件
五、SELinux 的用戶態設施
1、/etc/selinux/config
2、/etc/selinux/$SELINUXTYPE/
3、Policy Store
4、selinuxfs 目錄樹
5、/proc/pid/attr/目錄樹
六、SELinux 的安裝
1、Ubuntu 上 SELinux 的安裝
2、SELinux 的啟動過程(Revisited)
七、為應用程序開發新的 PP
1、Object 的標簽由誰決定
2、何時需要為應用程序開發 pp?
3、設計 pp 的一般過程
4、為 vlock 程序編寫 vlock.pp
5、為 samhain 程序編寫 samhain.pp
6、使用 SLIDE 來開發 pp,分析 SELinux 源代碼
7、編寫 pp 時的注意事項
八、SELinux 問題分析
1、排除 DAC 權限的問題
2、檢查用戶當前所扮演的角色
3、分析 AVC Denied Message:Target 的標簽正確嗎?
4、在系統啟動過程中適時地修復錯誤的文件標簽
5、應用程序的實際行為要和其 pp 的假設相一致
6、明確相應 domain 所缺少的權限
7、SELinux 問題分析過程和方法舉例
九、SELinux 開發
1、使能對/dev/console 的支持
2、Socket Labeling 開發
3、給 role_transition 規則添加 class 的支持
4、增加 role attribute 的支持(new)
5、區分 tunable 和 boolean(new)
6、在策略中指定 newcontext 的缺省設置方法(todo)
十、SELinux 內核驅動分析
1、LSM 核心數據結構及相應回調函數
2、SELinux 核心數據結構
3、情景分析:打開文件時的相關函數調用鏈
4、通過 SELinuxfs 訪問內核 Security Server
5、情景分析:Domain transition 的實現
6、情景分析:文件系統的掛載和新文件的創建
7、Context 數據結構和 u32 sid 之間的映射
8、Class Mapping
9、和文件操作相關的回調函數
10、和 AF_UNIX socket 相關的回調函數(todo)
11、和程序執行相關的操作(todo)
十一、用戶態應用程序對 SELinux 的支持
1、libselinux 相關文件分析
2、newrole 源代碼分析
3、PAM 模塊分析
十二、refpolicy 的編譯,鏈接,擴展
1、描述標識符的數據結構
2、描述規則的數據結構
3、用戶態 policydb_t 數據結構分析
4、module 的編譯 - checkmodule
5、module 的鏈接 - semodule_link
6、module 的擴展 - semodule_expand
7、link 和 expand 過程的圖解(new)
8、規則中的 m4 宏定義(new)
十三、SELinux 的應用 -- Labeled Networking (half-baked)
1、IPsec 簡介
2、SELinux 對本地網絡的控制(compat-net)
3、用 Labeled IPsec 實現分布式網絡控制
4、Linux 內核 XFM 相關數據結構
5、和 IPsec 相關的類,權限和接口
6、LSM 中和 Labeled Ipsec 相關的回調函數
7、Labeled IPsec 環境的搭建
8、觀察 Labeled IPsec 的行為
9、和 Labeled IPsec 相關的 SELinux 規則

