前言熄浓,這篇文章是操作系統(tǒng)安全的大作業(yè),分享是一種美德
SELinux分析報告
一.SELinux的基礎(chǔ)理論
SELinux是一種Linux的內(nèi)核模塊,本質(zhì)是Linux的一個安全子系統(tǒng)宾娜,本質(zhì)是改進了對內(nèi)核對象的服務(wù)的訪問控制锉走,改進了對進程初始化,繼承和程序執(zhí)行的訪問控制术徊,改進了對文件系統(tǒng)本刽,目錄和打開文件描述的訪問控制還改進了對端口,信息和網(wǎng)絡(luò)接口的訪問控制,總而言之就是最大限度減少系統(tǒng)中服務(wù)進程可以訪問的資源子寓,通過政策和規(guī)則規(guī)定 訪問資源對象暗挑,通過安全上下文來決定主體進程是否有權(quán)利進行訪問。SELinux的基本原則是MAC機制斜友,其主要采用的手段是RBAC(基于角色的訪問控制機制)和TE(類型加強),MLS(多級安全)炸裆,基于標(biāo)識的訪問控制(IBAC),在SELinux當(dāng)中每一條訪問都要經(jīng)過訪問規(guī)則的允許鲜屏,而訪問規(guī)則存儲在訪問策略當(dāng)中烹看,訪問策略又是由源代碼(用戶配置文件)進行編譯之后生成的二進制文件存放到內(nèi)存當(dāng)中,內(nèi)核通過在內(nèi)存中的策略庫進行使用
SELinux內(nèi)核的體系主要是兩個體系組成墙歪,一個是LSM听系,其作用是通過HOOK函數(shù)組成安全控制框架,一個是FLASK其作用是安全策略到訪問控制的轉(zhuǎn)換
在實際情況下虹菲,一個操作首先是通過DAC的ACL驗證靠胜,接著通過SELinux權(quán)限認證
過程如下首先策略強制服務(wù)會檢查AVC當(dāng)中是否有策略的決策緩存,如果有就直接得到結(jié)果毕源,如果沒有那么收集主體和客體手機安全上下文浪漠,然后將安全上下文發(fā)送給安全服務(wù)器,安全服務(wù)器負責(zé)決策霎褐,決策返回給AVC進行緩存并返回給策略強制服務(wù)器址愿。
判斷途徑如下:
下面說一說FLASK的主要組成,其分為兩個服務(wù) 一個是客體管理負責(zé)客體安全上下文和執(zhí)行實施策略決定冻璃,另外一個是安全服務(wù)器响谓,用來產(chǎn)生策略決定
安全服務(wù)必須滿足RBAC(基于角色的訪問控制機制)和TE(類型加強),MLS(多級安全),基于標(biāo)識的訪問控制(IBAC)策略
其中RBAC和IBAC不用說省艳,是兩種訪問控制的方法娘纷,其中TE是將主體和客體定義一個類型,詳細說說MLS
MLS給用戶提供了不同等級安全水平來訪問系統(tǒng)跋炕,采用的安全模型是BLP模型(組織低級別讀取高級別的安全數(shù)據(jù))赖晶,
安全上下文有安全標(biāo)識(SID)和用戶ID,角色辐烂,MLS分級等
SELinux 的工作圖
二.探尋SELinux其中的配置
查看是否開啟SELinux
默認是沒有開啟的
從SELinux的工作模式說起
Enforcing:強制模式遏插。違反SELinux 規(guī)則的行為將被阻止,無法繼續(xù)操作并記錄到日志中纠修。
permissive:寬容模式胳嘲。違反 SELinux 規(guī)則的行為只會記錄到日志中。還可以繼續(xù)操作
disabled:關(guān)閉 SELinux扣草。
SELinux 工作模式可以在?/etc/selinux/config?中設(shè)定了牛。
這其中提到了日志吁系,日志的服務(wù)進程是auditd.service ,這個服務(wù)將保存所產(chǎn)生的日志文件白魂,所以不關(guān)閉
打開selinux
查看SELinux的配置狀態(tài)
查看SELinux當(dāng)中的規(guī)則
查看進程中的安全上下文
其中system_u 是USER字段用來記錄身份
system_r 是程序的ROLE字段
再后面的字段是程序的TYPE字段,表示這個程序?qū)儆谀欠N字段的
最后的s0是安全級別
SELinux的接口配置文件
Avc的代碼在avc.c當(dāng)中上岗,與服務(wù)器接口定義 avc_ss.h當(dāng)中福荸,hook函數(shù)定義avc.h當(dāng)中
查看一個策略中的文件結(jié)構(gòu)
查看proc當(dāng)中的安全上下文
Current代表的是當(dāng)前安全上下文,prev代表的是上次執(zhí)行前是的上下文肴掷,exec代表的是下一次的安全上下文
查看默認的安全上下文
查看一個安全策略的源代碼
查看SELinux的日志
這樣查看太麻煩了使用工具進行查看
三.探究SELinux實際對系統(tǒng)的影響
1.修改上下文對文件訪問的影響
修改上下文
因為這兩個文件的類型不同敬锐,所以在執(zhí)行服務(wù)的時候會造成進程和文件之間的上下文不匹配的情況造成a.html不能訪問
為了讓我們的a.html能夠訪問,在這里修改a.html的上下文和b的上下文一樣
使用chcon進行修改之后再進行訪問
訪問成功
[if !supportLists]2.?[endif]通過配置SELinux來配置對FTP服務(wù)器的影響
查看SELinux策略
getsebool -a 發(fā)現(xiàn)是關(guān)閉的
匿名登錄ftp發(fā)現(xiàn)在ftp設(shè)置好的情況下是不能創(chuàng)建新的文件夾
這個時候的vsftp.conf當(dāng)中的內(nèi)容
關(guān)閉SELinux并修改目錄權(quán)限可以成功
證明和SELinux有關(guān)
那么如何在開啟SELinux的情況下開啟ftp匿名創(chuàng)建文件夾呢呆瞻?
此時不能匿名上傳的根本原因是/var/ftp/pub 文件夾沒有寫入的功能
修改此時的文件夾的上下文
發(fā)現(xiàn)成功可以成功寫入新的文件
四.參考文獻
鳥哥的Linux私房菜:基礎(chǔ)學(xué)習(xí)篇 第四版 —— SELinux 初探
Linux安全體系分析與編程