基本SELINUX安全性概念
(1)SELinux概念
SELINUX(安全增強型Linux)是可保護系統安全性的額外機制。在某種程度上,它可以被看作是與标準權限系統并行的權限系統。
在正常模式中,以使用者身份運作程序,并且系統上的檔案和其他資源都設定了權限(控制哪些使用者對哪些檔案具有哪些通路權 SELINUX的另一個不同之處在于,若要通路檔案,你必須具有普通通路權限和SELINUX通路權限。是以,即使以超級使用者身份root運作程序,根據程序以及檔案或資源的SELINUX安全性上下文可能拒絕通路檔案或資源限)标簽。
作用:
(1)針對檔案,會對系統中每個檔案添加安全上下文(context)
(2)針對程序,會對系統中的每個程序添加全上下文(context)
(3)會在系統服務上設定sebool開關
(4)當程序安全上下文和檔案的安全上下文不比對時,那麼程序無法通路此檔案
(5)sebool會限制服務的不安全功能,如果需要用此功能,必須調整sebool值
示例:
在無selinux保護時,惡意人員可以嘗試利用web伺服器中的安全漏洞強行進入系統。如果成功,将會控制以使用者apache身份運作的程序,這時再由一個本地安全漏洞就可能使攻擊者獲得超級使用者的通路權限。
(2)SELINUX安全上下文通路規則:
WEB伺服器的HTTPD程序設定了SELINUX上下文system_u:system_r:httpd_t标簽。該上下文的重要部分是第三個用冒号分隔的字段SELINUX類型:httpd_t
系統上的檔案和資源也設定了SELINUX上下文标簽,并且重要的部分是SELINUX類型。例如,/var/www/html中的檔案具有類型httpd_sys_content_t。/tmp和/var/tmp中的檔案通常具有類型tmp_t
SELINUX政策具有允許以httpd_t身份運作的程序通路标記為httpd_sys_content_t的檔案的規則。沒有規則允許這些程序通路标記有tmp_t的檔案,是以将拒絕這些通路,即使正常權限指出應該允許這些通路。
(3)SELInux服務有三種配置模式:
- enforcing:強制啟用安全政策模式,将攔截服務的不合法請求
- premissive:遇到服務越權通路時,隻發出警告而不強制攔截
- disabled:對于越權的行為不攔截也不警告
從許可/強制模式切換為關閉狀态,或反之,必須修改配置檔案/etc/sysconfig/selinux 然後重新開機
許可模式和強制模式可以用setenforce 進行切換不用關機
SELinux域對服務程式的功能進行限制(確定服務程式做不了出格的事)
SELinux安全上下文對檔案資源限制(確定檔案資源隻能被其所屬的服務程式進行通路)
selinux會給與系統中的每個檔案一個安全上下文(CONTEXT),同時給予每個程式一個CONTEXT,若此程式的安全上下文與檔案的安全上下文不比對,則檔案不能被系統通路,若比對,則可以通路,而檔案的安全上下文,與此檔案所在的目錄有關。
顯示檔案和服務的安全上下文
以ftp服務為例:
pa auxZ | grep ftp 顯示ftp的安全上下文
ls -Z /var/ftp/ 顯示ftp預設釋出目錄的安全上下文,ftpd_t隻能通路标簽為public_content_t的檔案
SELinux安全上下文通路規則
(1)關閉模式
(2)許可模式
該模式下不會攔截檔案通路與權限,但在日志中會有警告資訊
(3)強制模式
a.對檔案的影響
b.對服務的影響
修改檔案的selinux安全上下文
1.臨時修改上下文
1.1 目錄的安全上下文已與服務比對
chcon -t public_content_t file|dir 更改檔案或目錄的安全上下文為public_content_t
chcon -t public_content_t file|dir -R 若是目錄,-R表示遞歸更改,包括目錄本身 /var/ftp的預設上下文為public_content_t,當修改完下屬的子檔案的上下文與該目錄上下文一緻,則為永久修改
1.2當目錄的安全上下文與服務不比對時
2.永久更改檔案的安全上下文
semanage是永久在核心中修改目錄的上下文 必須需要重新整理
semanage fcontext -l | grep /var/ftp 檢視/var/ftp的永久上下文設定
semanage fcontext -l | grep /ftppdir
semanage fcontext -a -t public_context_t '/ftpdir(/.*)?' 添加永久上下文,-a:add, -t:類型, (/.*)?表示ftpdir目錄下的所有内容
restorecon -RvvF /ftpdir/ 必須重新整理才會生效,把該目錄下的檔案永久重新整理成與該目錄一緻的上下文
管理服務的bool值
如何在enforce 的情況下開啟某種服務?
當為強制模式時,服務的某些功能被關閉。必須當普通服務和SELINUX的權限同時都打開時,該服務才可用。
我們以開啟ftp中匿名使用者上傳的功能為例說明:
vim /etc/vsftpd/vsftpd.conf 在主配置檔案中開啟匿名使用者上傳的功能
chgrp ftp /var/ftp/pub
chmod 775 /var/ftp/pub
chcon -t public_content_rw_t /var/ftp/pub 将該目錄的權限改為可讀可寫
getsebool -a | grep ftp 顯示ftp功能的布爾值
setsebool -P ftpd_anon_write 1 修改匿名使用者寫的功能的布爾值為1
SELiunx的日志分析
/var/log/audit/audit.log 該檔案存放seliunx的日志資訊,存在selinux的報錯,但不會有解決方案
/var/log/messages 存在selinux的日志以及解決方案
setroubleshoot 采集/var/log/audit/audit.log中的日志并進行分析提出解決方案,存入/var/log/messages中,若是不安裝 此 軟體,/var/log/messages就沒有selinux的解決方案與日志存在
(1)有問題解決軟體時
(2)删除問題解決軟體後