SElinux是強制訪問控制(MAC)安全系統,是linux歷史上最傑出的新安全系統。對於linux安全模塊來講,SElinux的功能是最全面的,測試也是最充分的,這是一種基於內核的安全系統。linux
一、SElinux的狀態安全
命令"getenforce"能夠查看SElinux的狀態,SElinux的狀態分爲如下三種:post
Enforcing (1) 強制模式測試
Permissive (0) 警告模式spa
Disabled 關閉模式.net
"setenforce"能夠設置SElinux的狀態,可是隻能設置0和1兩種,即警告模式或者強制模式。若是須要關閉,則在配置文件"/etc/sysconfig/selinux"下將"SELINUX=enforcing"改成"SELINUX=disabled",由於SElinux是基於內核的安全系統,因此在設置完成以後須要重啓內核,即須要重啓電腦才能夠生效。rest
二、SElinux對服務的影響日誌
SElinux是最全面的安全系統,因此會對文件和服務有必定的限制,如下服務以ftp爲例。server
SElinux會在文件上作出上下文標識,例以下圖所示,在"/mnt"和"/var/ftp/pub"下分別創建文件"file",輸入"ls -Z"能夠查看文件標識。能夠看出,"/mnt/file"爲"mnt_t",而"/var/ftp/pub/file"標識爲"public_content_t",這樣會致使將"/mnt/file"移入"/var/ftp/pub"目錄下,鏈接lftp沒法看到這個文件。blog
SElinux爲了系統的安全,會禁止服務一些危險功能的使用,能夠輸入"getsebool -a | grep ftp"來查看禁止了ftp服務的哪些功能,以下圖所示,輸入"setsebool -P 功能 on|off"能夠控制這些功能的開關。
三、SElinux的上下文管理
以前提到SElinux會在目錄和文件上留下上下文標識,輸入"ls -Z"能夠查看。命令"chcon -t 上下文 文件"能夠更改文件和目錄的上下文標識,就能夠解決上述中lftp沒法看到其餘上下文標識文件的問題。例以下圖所示,現有兩個不一樣上下文標識的文件"txt"和"file"鏈接lftp後能夠看到"file",輸入"chcon -t public_content_t /var/ftp/pub/txt"後,從新鏈接lftp,就能夠看到"file"和"txt"兩個文件了。
以下圖所示,將匿名用戶登錄的家目錄改成"/westos",並將標識改成"public_content_t",鏈接lftp能夠看到這個家目錄。可是將SElinux的狀態改成"disabled"重啓後再改回"enforcing",重啓後從新鏈接lftp,發現沒法看見家目錄了。
上述狀況說明使用"chcon"命令改變目錄的上下文標識只是臨時的。永久改變目錄的上下文標識,須要作以下步驟:
a、使用命令"semanage fcontext -l | grep /westos"查看該目錄是否有上下文規則。
b、輸入"semanage fcontext -a -t public_content_t '/westos(/.*)?'"爲"/westos"添加上下文規則,並經過a步驟命令查看。
c、查看到上下文規則後,輸入命令"restorecon -RvvF /westos"將規則同步至目錄及其子目錄。
上述步驟完成後就能夠永久改變"/westos"目錄的上下文標識了,從新鏈接lftp就能夠看到目錄了。
四、SElinux的日誌
在SElinux的使用當中,會出現一些錯誤,例如鏈接lftp後沒法看到裏面的文件,或者在進行配置時某一步出現錯誤。這些錯誤出現後是能夠查出來而且解決的,這就是SElinux日誌的使用。
SElinux的日誌會記錄在"/var/log/audit/audit.log"和文件"/var/log/messages"中,前者只會說明錯誤,可是不會提供解決辦法,且閱讀複雜。"/var/log/messages"文件能夠詳細的記錄錯誤,而且提供解決方法,SElinux的記錄軟件是"setroubleshoot-server.x86_64"。下面將以lftp鏈接後沒法看到裏面的文件來具體介紹。
前面已作敘述,若是不改變下圖中的"file1"文件的上下文標識,是沒法看到這個文件的。
在沒有"setroubleshoot-server.x86_64"這個軟件的狀況下,清空日誌後,發現日誌中並不會記錄這個錯誤。
而後安裝這個軟件後,從新鏈接,再查看日誌,其中就會出現這個錯誤的具體日誌。而且會提供解決方法,根據解決方法就能夠解決這個問題了。