一、Selinux
SELinux: Secure Enhanced Linux, 是美國國家安全局(NSA=The National Security Agency)和 SCC(Secure Computing Corporation)開發的 Linux的一個強制訪問控制的安全模塊。2000年以GNU GPL發佈,Linux內核2.6版本後集成在內核中
• DAC:Discretionary Access Control自由訪問控制
• MAC:Mandatory Access Control 強制訪問控制
• DAC環境下進程是無束縛的
• MAC環境下策略的規則決定控制的嚴格程度 •
MAC環境下進程可以被限制的
• 策略被用來定義被限制的進程能夠使用那些資源(文件和端口)
• 默認情況下,沒有被明確允許的行爲將被拒絕
二、工作類型
SELinux有四種工作類型:
– strict: centos5,每個進程都受到selinux的控制
– targeted: 用來保護常見的網絡服務,僅有限進程受到selinux控制,只監 控容易被***的進程,centos4只保護13個服務,centos5保護88個服務
– minimum:centos7,修改的targeted,只對選擇的網絡服務
– mls:提供MLS(多級安全)機制的安全性 • targeted爲默認類型,minimum和mls穩定性不足,未加以應用,strict已不再使用
三、Selinux安全上下文
3.1、實際上下文
安全上下文主要有五個元素組成:user:role:type:sensitivity:category
實際上下文存放在文件系統中:ls -Z 查看文件的上下文關係
ps -Z 查看進程的上下文關係
上下文關係是一個訪問控制屬性。在SELinux中,類型標識符是安全上下文中決定訪問的主要的部分。
爲了簡便,這裏使用一臺機器既作客戶端又作服務端來進行實驗
因爲上下文訪問機制的原因,在客服機中只能查看到cp過去的文件看不見mv過去的文件。
cp:會重新生成符合目錄本身的安全上下文
-c 複製到別目錄下,原context不變
-a 所有的權限值不不變
mv:只是單純將原有文件移動過去 不改變文件本身的屬性
3.1.2、修改Selinux安全標籤
修改context值,給文件重新打安全標籤
chcon [OPTION]... [-u USER] [-r ROLE] [-t TYPE] FILE... chcon [OPTION]... --reference=RFILE FILE...
-R:遞歸打標;
恢復目錄或文件默認的安全上下文:restorecon [-R] /path/to/somewhere
3.1.3、設置Selinux
setenforce 0|1 在線切換警告模式|強制模式 (臨時生效)
getenforce 查看模式
sestatus 查看Selinux 狀態
/etc/selinux/config 修改配置文件後重啓生效
SELINUX=enforcing
3.2、期望(默認)上下文
3.2.1、目錄期望值安全上下文查詢與修改
Semanage來自policycoreutils-python包,使用前需安裝
1、目錄期望值
查看目錄默認的安全上下文關係指令:semanage fcontext –l
添加目錄默認的安全上下文關係指令 :semanage fcontext -a (添加)-t type context path
刪除目錄默認的安全上下文關係指令 :semanage fcontext -d -t type context path
2、端口號期望值
爲指定端口設置端口的期望值,設置成功後可以用semanage port -l查看所有或者指定查看
設置成功後看是否能重啓服務,成功重啓就說明端口的期望值設置成功。
刪除某一條端口期望值:semanage port -d -t port_label -p tcp|udp PORT
3.2.2、selinux布爾值
當selinux開啓時,系統默認會設置很多功能的開關,而且默認都是關閉的
getsebool -a 查看布爾值
semanage boolean -l -C 查看已修改過的所有布爾值
這裏用ftp做示例,ftp默認開啓的服務沒有支持用戶匿名上傳文件和目錄,修改/etc/vsftpd/vsftpd.conf中的默認設置,修改過後重啓服務。這個時候再上傳文件會發現還是不能成功的上傳文件,提示由原來的權限拒絕變成了不能創建這個目錄。
重啓後還是不能上傳的原因是系統上傳時用戶爲ftp用戶且服務器中ftp目錄的權限沒有寫權限,爲了立即生效這裏把權限改爲777,sellinux 0(這樣的操作存在風險性)。
可以在不關閉selinux的,設置特殊權限的情況下實現用戶的匿名上傳。
setsebool [-P] boolean value(on,off)或 -p表永久生效
setsebool [-P] Boolean=value(0,1)
再通過ftp就可成功上傳文件