selinux(security-enhanced linux) 是美國****局(nsa)對於強制訪問控制的實現,是 linux歷史上最傑出的新安全子系統。nsa是在linux社群的幫助下開發了一種訪問控制體系,在這種訪問控制體系的限制下,程序只能訪問那些在他的任務中所需要檔案。
selinux特點:
1.mac
對訪問的控制徹底化,對所有的檔案、目錄、埠的訪問都是基於策略設定的,可由管理員時行設定。
2. rbac
對於使用者只賦予最小許可權。使用者被劃分成了一些role(角色),即使是root使用者,如果不具有sysadm_r角色的話,也不是執行相關的管理。**role可以執行哪些domain,也是可以修改的。
3.安全上下文
所有的作業系統訪問控制都是主體和客體的相關訪問控制屬性,在selinux,訪問控制屬性稱為安全上下文,安全上下文是乙個簡單的、一致的訪問控制屬性,所有客體(檔案,程序間通訊,通訊管道,套接字,網路主機等)和主體(程序)有乙個和客體和他們相關的單一安全上下文,乙個程序的型別通常稱為域,域和域型別都一樣,即都是安全上下文的』type』,乙個安全上下文是由角色,使用者和型別識別符號。
getenfore ###檢視selinux當前狀態
selinux有三種模式:
模式作用
enforcing
強制模式。代表selinux在執行中,且已經開始限制domain/type之間的驗證關係
permissive
寬容模式。代表selinux在執行中,不過不會限制domain/type之間的驗證關係,即使驗證不正確,程序仍可以對檔案進行操作。不過如果驗證不正確會發出警告
disabled
關閉模式。selinux並沒有實際執行
如果是enforcing和permissive模式之間的轉化,利用命令即可生效:
setenforce 0 (寬容模式)| 1 (強制模式)
而這兩種模式想切換到disbaled,需在:
vim /etc/sysconfig/selinux 中修改:
selinux=disabled
且修改後重啟才能生效。
當selinux開啟時,每個程式每個檔案都有特定的安全上下文。特定安全上下文的程式只能訪問特定安全上下文的檔案。如果我們可以改變安全上下文,使得程式可以訪問目標檔案。
1.建立檔案的安全上下文
touch /mnt/file ###在mnt目錄下建立file檔案
mv /mnt/file /var/ftp/pub
touch /var/ftp/pub/file1
ls -z /var/ftp/pub ###檢視安全上下文
lftp 172.25.70.251 檢視,因為安全上下文不一樣的原因,無法檢視到從mnt目錄移動的檔案。
2.臨時修改安全上下文
chcon -t public_content_t /var/ftp/pub/file ###修改檔案的安全上下文
修改完成後,lftp就可以檢視到那個移動過來的檔案了。
但是注意:這種修改方式是臨時的。在selinux模式更換為disabled再啟用enforcing後,更改失效
3.永久修改安全上下文
1. mkdir /westos ###建立新目錄
2. touch /westos/file
###建立新目錄下的檔案
3. semanage fcontext -l |
grep /var/ftp ###檢視有關/var/ft的安全上下文
4. semanage fcontext -a -t public_content_t '/westos(/.*)?'
###將目錄裡的所有檔案修改為指定的安全上下文
這樣即可將目錄裡的所有檔案修改為指定的安全上下文。
並且這樣的檔案,移動後ltfp也可檢視到。
當seliuinx開啟enforcing模式時,所有程式都會被加上乙個開關,這個開關就是bool值。當bool值為0時,程式關閉;bool值為1時,程式開啟。
1.修改bool值
getsebool -a |grep ftp ###檢視有關ftp服務的程式的bool值
==setsebool -p ftp_home_dir ==###開啟進入家目錄功能
2.開啟匿名使用者上傳功能
selinux enforcing模式時,匿名使用者不能上傳檔案。這也是因為程式bool值為0,被關閉的原因。
修改配置檔案:
vim /etc/vsftpd/vsftpd.conf
修改:anon_upload_enable=yes
修改bool值:
setsebool ftpd_anon_write on###開啟匿名使用者上傳程式
/var/ftp/pub是唯讀的,修改其安全上下文:
semanage fcontext -a -t public_content_rw_t 『/var/ftp/pub(/.*)?』
restorecon -rvvf /var/ftp/pub
selinux的日誌檔案儲存在/var/log/audit/audit.log檔案中
selinux的問題解決方案在/var/log/messages檔案中
模擬問題:
1.touch /mnt/file10086
2.mv /mnt/file10086 /var/ftp/pub
在mnt目錄下建立檔案並將其移動到ftp的預設發布目錄。
3. > /var/log/audit/audit.log
4. > /var/log/messages
情況日誌
3.lftp 172.25.70.251
進入pub目錄無法看到移動的file10086檔案
此時,檢視日誌。
1. cat /var/log/audit/audit.log ###檢視出現的問題
2. cat /var/log/messages ###檢視解決方法
它會列出解決辦法
而這個解決辦法其實是由setroubshoot-server軟體提供的。
解除安裝setroubshoot-server軟體後,清空日誌。
再進入/var/ftp/pub目錄檢視檔案,看不見那個移動的檔案。
再次檢視日誌:
發現沒有解決辦法了。
再次安裝,發現又有解決辦法了。
這說明了,selinux報錯的解決方案,由setroubleshoot-server軟體提供。
selinux 核心級加強型防火牆
3.監控selinux導致的錯誤資訊 舉例 修改檔案標籤從而在apache通過檔案訪問本地目錄 背景 setenforce 1 開啟selinux 步驟 hostname var www html hello.html date f mnt scq.html mv mnt scq.html var ...
Linux 核心級加強型火牆
檢視 getenforce 開啟後給每個檔案和程式新增標籤 安全上下文 匹配則可以訪問 檔案是功能標籤 程式是加了波爾開關 修改狀態檔案 狀態 enforcing 強制 拒絕訪問,有警告資訊 permissive 警告 可以訪問,有警告資訊 disabled 關閉 切換 setenforce 0 切...
linux中核心級加強型火牆管理
安全上下文的作用 特定安全上下文的程式只能訪問特定安全上下文的檔案,否則訪問失敗,會被selinux拒絕 selinux的狀態及管理 開啟vim etc selinux config selinux disabled selinux關閉 selinux enforcing selinux開機設定為強...