selinux:secure ehanced linux
它的作用就是將每個檔案的許可權更加細分,這樣使使用者訪問的時候就像經過多道安檢一樣,只有全部通過才可以順利的讀取檔案。
其實很多錯誤及安全問題都是人為造成的,使用selinux可以防止這種現象產生。
selinux的運作模式 mac:委任式訪問控制
主體:就相當於程序
目標:要訪問的檔案
政策:針對怎樣的主體可以訪問哪些目標,這就是政策所定義的東西;
政策主要有targeted和strict兩種,第一種針對網路服務限制較多,第二種對本機及網路都有嚴格限制。
安全性本文:安全性本文有三個引數,分別是身份鑑定、角色以及型別,其中最重要的是型別這個引數。型別這個引數有type和domin兩種,其中文件是type,程式是domin。安全性本文與檔案系統中的每乙個檔案都相當於繫結在一起的,每乙個檔案都有安全性本文,它在文件的inode中。
簡單來說在selinux下我們來讀取目標檔案的主要步驟,由於政策是targeted,主要限制的是網路服務,所以就以www伺服器(http協議)來演示:
在selinux中規定www伺服器的網頁存放範圍只能夠在/var/www/html目錄下,不允許存放到其它目錄下,否則www伺服器訪問不到其它目錄(沒有許可權)。
當我們在/var/www/html目錄下寫完乙個指令碼index.html後,用瀏覽器可以開啟此網頁檔案。
當我們在自己的家目錄下寫完乙個指令碼index.html後,將這個檔案複製到/var/www/html目錄後(刪除原來那個),再用瀏覽器可以開啟此網頁檔案就會顯示forbidden。
這種情況產生的原因主要是許可權不符合,就是因為selinux的原因。一旦我們開啟了selinux,它就會對我們整個檔案系統裡的每乙個檔案和目錄加上另外一層的訪問控制,也就是寫入inode中的安全性本文資料。每當我們建立乙個檔案或者是目錄的時候selinux都會按照預設規定(下文會提到)給這個新建立的檔案或目錄乙個安全性本文引數。所以說當我們在家目錄和其他目錄建立的同名檔案即使內容和許可權相同,但他們的安全性本文卻是不同的。
接著介紹一下我們的主體程式是怎麼一步步訪問到目標的,用瀏覽器開啟/var/www/html中的程式第一步是瀏覽器通過www伺服器觸發乙個叫/usr/sbin/httpd的程式,然後程式執行起來在記憶體中生成乙個程序httpd,這個程序會有乙個安全性本文,而且他的型別引數會是domin,名字叫httpd_t,通過這個名為httpd_t的domin,系統就去檔案中查詢政策,發現這個domin可以訪問安全性本文類別引數為type中的httpd_sys_content_t這樣的文件,而我們在/var/www/html中建立的文件預設的安全性本文type都是httpd_sys_content_t這樣的,所以可以訪問。也就是說在呼叫任何乙個程式時,會根據產生的程序的domin去查閱政策檔案,可以知道可以訪問的文件的type型別,接著才可以去進行最後一步——驗證程序的屬主究竟對文件有怎樣的許可權。
所以說我們在家目錄下建立的檔案的安全性本文中的type並不是httpd程序的domin可以匹配的,即使將檔案mv過去也不會改變屬性,所以httpd打不開那個index.html。
selinux在啟動時就會對每乙個目錄下新建的目錄或檔案給予怎樣的安全性本文都有預設的引數,這個可以用命令檢視和修改。
命令:getenforce:檢視selinux的模式(enforcing、permissive、disable)
sestatus:檢視selinux模式以及政策 /etc/selinux/config檔案可配置模式及政策。
setenforce [0|1]:修改模式
seinfo [-atrub] :政策查閱,
sesearch :查閱更加詳細的規則,
其實政策最底層的是規則,規則的意思就是哪個domin可以訪問哪個type。然而這些
規則是由布林值控制的,每乙個布林值都會控制幾十個規則。所以說布林值的on、off才是最底層的。
getsebool 布林值查詢
SELinux的知識技巧
我們在使用伺服器的時候可能會因為selinux導致安裝php錯誤,那麼這是怎麼一回事呢?接下來就讓小編為大家介紹selinux的知識技巧,希望對你有所幫助。selinux導致安裝php錯誤解決 如果提示 usr local php 5.2.5 sapi cli php error while loa...
防火牆和SELinux相關
臨時關閉防火牆 systemctl stop firewalld 永久防火牆開機自動關閉 systemctl disable firewalld 臨時開啟防火牆 systemctl start firewalld 防火牆開機啟動 systemctl enable firewalld 檢視防火牆狀態 ...
SELinux策略下的相關命令chcon
chcon命令selinux chcon命令是修改物件 檔案 的安全上下文,比如 使用者 角色 型別 安全級別。也就是將每個檔案的安全環境變更至指定環境。使用 reference選項時,把指定檔案的安全環境設定為與參考檔案相同。chcon命令位於 usr bin chcon。語法chcon 選項 環...