SELinux初學者指南

2021-09-20 12:02:44 字數 4441 閱讀 9053

selinux(security enhanced linux)是美國****局2023年發布的一種高階mac(mandatory access control,強制訪問控制)機制,用來預防惡意入侵。selinux在dac(discretionary access control,自主訪問控制)的基礎上實現了強制訪問控制,比如讀、寫和執行許可權。

selinux有三種模式,分別是enforcing, permissive, disabled。

1. enforcing,強制模式。該模式下會基於policy規則拒絕某些訪問。

2. permissive寬容模式。

3. disabled,該模式下會關閉selinux。

修改模式的預設配置檔案為/etc/selinux/config。

改變selinux模式

setenforce 1 設定selinux 成為enforcing模式

setenforce 0 設定selinux 成為permissive模式

執行$ getenforce可以看到當前執行模式:

$ getenforce
執行下面的命令切換到permissive 模式

$ setenforce 0
執行下面命令從permissive模式切換到enforcing模式

$ setenforce 1
如果想要關閉selinux,可以通過配置檔案修改。

$ vi /etc/selinux/config

selinux=disabled

配置selinux

每個檔案或程序用selinux上下文環境上下文環境中含有selinux使用者、角色、型別等額外的資訊。如果第一次開啟selinux,需要配置上下文環境和標籤。配置修復label和上下文環境的過程叫做relabeling。在relabeling時,首先要切換到permissive模式。

$ vi /etc/selinux/config

selinux=permissive

模式切換到permissive時,會在目錄/directory下建立乙個隱藏的名為autorelabel的檔案。

$ touch /.autorelabel
重啟機器

$ init 6
注:選擇用permissive模式而不是enforcing模式的原因是,enforcing模式下進行relabeling可能會造成系統奔潰。

relabeling完成且系統重啟後,可以更改到enforcing模式,並執行

$ setenforce 1
這樣就成功地配置並開啟selinux了。

監控日誌

為了確保selinux的正常執行,需要對日誌進行監控。selinux的日誌檔案儲存在/var/log/audit/audit.log,日誌檔案中有很多條記錄,但是檢查錯誤資訊時不需要閱讀全部日誌,有乙個簡單的工具是audit2why,執行下面的命令

$ audit2why < /var/log/audit/audit.log
輸出檔案就是錯誤資訊。如果沒有錯誤,那麼就不會有輸出。

設定selinux策略

selinux策略是指導selinux安全引擎的規則集。策略定義了特殊上下文環境下的規則集,下面是改變策略來允許對拒絕的服務的訪問。

1. booleans

例1:

如果想要通過ftp分享使用者home目錄的讀寫許可權,我們已經分享了該目錄,但是嘗試訪問時看不到該目錄。這是因為selinux策略阻止了ftp守護程序在使用者home目錄進行讀寫。我們需要對selinux策略進行改變,這樣ftp就可以訪問home目錄了。我們利用booleans來完成這個功能。

$ semanage boolean –l
該命令會生成一系列可用的booleans和對應的實時狀態和描述。可以通過grep命令找出關於ftp的結果:

$ semanage boolean –l | grep ftp

ftp_home_dir -> off 允許ftp在使用者目錄下進行讀寫狀態

則是off的狀態,我們用setsebool來開啟

$ setsebool ftp_home_dir on
現在ftp守護程序就可以訪問使用者的home目錄了。

getsebool -a也可以獲取可用的booleans列表,但是不會顯示boolean的描述。

2. labelling &context

這是在伺服器上實施selinux策略的最常用方法。每個檔案、資料夾、程序、埠都被selinux context標記。

對於檔案和資料夾,標籤是以檔案系統的擴充套件屬性儲存的,可以通過下面的命令進行檢視

$ ls –z /etc/httpd
對於程序和埠,kernel負責管理標籤,同樣地,可以通過下面的命令檢視對應的標籤:

$ netstat –anpz | grephttpd (for port)例2:

我們有乙個web伺服器,檔案目錄是/home/dan/html而不是預設的/var/www/html,這樣selinux就會認為違反了策略,這樣就不能訪問web頁面。這是因為還沒有設定與html檔案相關的安全上下文環境。可以用下面的命令來檢查html檔案的預設安全上下文環境;

$ ls –lz /var/www/html

-rw-r—r—. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/

上面就是我們得到的html檔案的安全上下文環境httpd_sys_content_t。同時需要設定當前目錄 安全上下文環境為–rw-r—r—. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/。

另乙個檢查檔案或者目錄的安全上下文環境的命令為:

$ semanage fcontext -l | grep 『/var/www』
當我們找到正確的安全上下文環境時,semanage命令同樣可以用來改變安全上下文環境。可以用下面的semanage命令來改變/home/dan/html的安全上下文環境:

$ restorecon -rv /home/dan/html一旦semange操作改變了安全上下文環境,restorecon就會載入檔案和目錄的預設上下文環境。web伺服器就可以從/home/dan/html資料夾讀取檔案,同時,檔案的安全上下文環境就變成http_sys_content_t了。

3. 建立本地策略

如果上面的訪問不能生效,而且audit.log**現錯誤訊息。當這種情況出現的話,我們需要建立本地策略來解決那些錯誤資訊。同時,可以用上面提到的audit2why檢視錯誤資訊。當獲取錯誤後,就可以建立本地策略(local policy)來解決這些錯誤。比如,我們獲取了httpd或smbd錯誤,我們可以用grep查詢錯誤資訊,並建立安全策略。

$ grep smbd_t /var/log/audit/audit.log | audit2allow -m smb_policy (for samba)下面的http_policy和smb_policy是本地策略的名字。現在我們必須載入那些建立的本地策略到當前selinux策略中,可以用semodule命令完成這個功能。

$ semodule –i smb_policy.pp這樣本地策略就載入了,audit.log中也就不會有錯誤資訊了。

原文發布時間為:2018-05-30

初學者mysql MySQL初學者使用指南

有很多朋友雖然安裝好了mysql但卻不知如何使用它。在這篇文章中我們就從連線mysql 修改密碼 增加使用者等方面來學習一些mysql的常用命令。一 連線mysql。1 例1 連線到本機上的mysql。首先在開啟dos視窗,然後進入目錄 mysqlbin,再鍵入命令mysql uroot p,回車後...

DLL初學者指南

這裡有兩個方法來載入乙個dll 乙個方法是捷徑另乙個則相比要複雜些。捷徑是只鏈結到你.lib 檔案並將.dll檔案置入你的新專案的路徑中去。因此,建立乙個新的空的win32控制台專案並新增乙個原始檔。將你做的dll放入你的新專案相同的目錄下。include include declspec dlli...

DLL初學者指南

dll初學者指南 dll project的源 及測試專案 原文出處 codeguru 我正在學習dlls,談不上對其有什麼高屋建瓴的見解 本文只是 通過 編碼讓你看到並想知道 是如何執行的。在本文中,我假定你知道如何使用你的編譯器特性,比如設定目錄路徑等等。ifndef dll tutorial h...