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...