通過兩個案例初步瞭解Linux下selinux的安全機制工作機制

科技小先鋒發表於2017-11-15

通過兩個案例初步瞭解Linux下selinux的安全機制工作機制

SELinux 是 2.6 版本的 Linux 核心中提供的強制訪問控制 (MAC)系統。對於目前可用的 Linux 安全模組來說,SELinux 是功能最全面,而且測試最充分的,它是在 20 年的 MAC 研究基礎上建立的。SELinux 在型別強制伺服器中合併了多級安全性或一種可選的多類策略,並採用了基於角色的訪問控制概念。

selinux預設配置在/etc/sysconfig/selinux裡

預設有三種級別

enforcing級別:Linux下selinux所設定的安全策略都會被啟用.所有與selinux安全策略有關的服務或者程式都會被策略阻止.

permissive級別:Linux下selinux所設定的安全策略都會被啟動,但是所有與selinux安全策略有關的服務或者程式不會被策略組織,但是會收到警告.

disabled級別:關閉selinux,相當於系統沒有安裝selinux一樣.

clip_image002

一般可以通過getenforce檢視selinux的執行級別.也可以通過setenforce 0 或者1 設定selinux的執行級別,級別0表示Permissive模式,級別1表示Enforcing模式. 至於disabled模式和其他模式的切換隻能修改配置檔案,命令不起作用.其次,修改完成之後,必須重啟系統才能夠生效.

clip_image004

如果想通過一些命令管理selinux,必須安裝setroubleshoot包.光碟裡有,直接安裝即可.由於存在很多依賴關係,建議建立yum源指向光碟,然後通過yum安裝.

clip_image006

clip_image008

接下來我們通過兩個案例初步連結selinux的安全機制

案例一:vsftpd在selinux的Enforcing模式下 普通使用者訪問不了的處理辦法.

安裝vsftpd包,為客戶端提供ftp服務,預設rhel6桌面安裝會自動安裝vsftpd服務,如果沒有安裝通過rpm命令或者構建yum源安裝,安裝完成之後,啟用vsftpd服務.

clip_image010

預設情況下,linux裡面普通使用者的ftp訪問目錄為使用者的宿主目錄,為了方面測試,建立幾個檔案,並且起初設定selinux模式為permissive模式。

clip_image012

在客戶機windows上通過ftp://192.168.100.101/訪問,然後輸入普通使用者的使用者名稱及密碼,即可訪問到這個使用者的宿主目錄.

clip_image014

現在我們設定selinux模式為Enforcing模式

clip_image016

再次通過普通使用者訪問,發現訪問失敗.這是為什麼呢,這是受到了selinux的布林值的影響.

clip_image018

可以看得出是selinux在作怪,我們可以通過man ftpd_selinux 檢視ftpd的selinux訪問策略.

clip_image020

通過man註釋可以看到命令 “setsebool –P ftp_home_dir 1”可以開放這個策略

clip_image022

我們也可以通過getsebool –a命令檢視所有selinux管理的所有服務訪問策略情況(布林值),ftp_home_dir預設為off關閉狀態,也就是不允許通過的意思.

clip_image024

通過setsebool –P ftp_home_dir 1開啟ftp_home_dir布林值.

clip_image026

再次訪問就可以實現了

clip_image028

案例二:在Linux selinux開啟enforcing的模式下,開啟web服務,將其他地方的網站主配置資訊index.html copy到網站的根目錄訪問不了的處理辦法.

安裝httpd軟體包,預設rhel6.3桌面版本已經安裝了apache的軟體包httpd

clip_image030

預設情況下,在/var/www/html/目錄下沒有網站的資料,訪問會顯示以下資訊.

clip_image032

我們在這個目錄下寫一個主頁index.html

clip_image034

開啟selinux到enforcing模式,可以通過web瀏覽器訪問.

clip_image036

clip_image038

我們從其它目錄比如/root目錄下寫一個index.html檔案copy到httpd的根目錄下

clip_image040

設定selinux級別為permissive模式,可以訪問.

clip_image042

設定selinux模式為Enforcing模式,卻不能訪問了,這是為什麼呢?這是受到了了selinux的context值的影響.

clip_image044

clip_image046

我們可以通過ls –Z 可以檢視檔案的context值如下.預設情況下在任何一個目錄建立文件會繼承上級目錄的context值, 可以看出來index.html的context值繼承的是/root目錄的context值,而在/var/www/html/目錄下建立檔案預設的context值為httpd_sys_content

clip_image048

我們可以通過 chcon –t命令修改index.html的context值

clip_image050

修改完成之後,即可實現訪問.

clip_image052

總計:通過以上兩個簡單案例可以看到selinux的enforcing模式是通過布林值或者context值來決定selinux的安全策略機制的.而我們可以通過setsebool –P 命令設定布林值,通過chcon –t 設定context值(必須安裝setroubleshoot包才能用以上兩個命令)

本文轉自凌激冰51CTO部落格,原文連結:http://blog.51cto.com/dreamfire/1091653,如需轉載請自行聯絡原作者


相關文章