SElinux
1.SElinux簡述
SELinux(Security-Enhanced Linux) 是美國國家安全局(NSA)對于強制通路控制的實作,是為了結束DAC(自主通路控制,任何程式對其資源享有完全的控制權,每個使用者或程序可以随意修改自己的檔案的權限,将其他權限授予給任何其他人而具有任意的通路機制.标準Linux通路控制、所有/組+權限标記(例如rwx)通常被稱為自主通路控制(簡稱DAC)。)而設定的,後來就有了MAC(強制通路控制,一個程序能否通路某個資源,取決于運作這個程序的使用者權限以及通路的資源的屬主屬組等屬性)控制機制,但是如果管理者把一個資源屬性的其他設定為rwx,那怎麼辦呢?于是後來有了沙箱(sandbox)的機制,對于程序隻賦予最小的權限,比如運作httpd的使用者apache,在普通情況下,apache作為一個普通的使用者,他能通路大多數資源,如/etc等,但是apache作為一個專門控制httpd的服務,我們把他的活動範圍控制在/var/www,隻給他最小的權限,而這個範圍就是沙箱。
2.selinux核心概念
2.1在Linux中,大多數的操作可以總結成主謂賓,SELinux也不例外,他把大多數操作總結成主謂賓,
Subjects:(主) processes...
Object:(賓) open, close, read, write, modify, delete, chmod, chown, ...
actions:(謂) 檔案,程序,套接字,連結,...
SELinux中通主語能對哪些賓語進行操作,靠的是标簽來限定的,SELinux為每個檔案提供了安全标簽,也同樣為程序提供了安全标簽;這些稱為SELinux的安全上下文,secure context;
user-identify:role:domain|type:sencitivity
user-identify:SELinux的使用者身份辨別,跟檔案系統的user不一樣;
role:角色
domain|type:域(程序),類型(檔案)
sencitivity:敏感度,s0
2.2作業系統有安全級别的概念:
D
C:C1,C2
B:B1,B2,B3
A:
共ABCD四類7個安全級别,D級是安全級别最低的,C類為自主保護級别,B類為強制保護級别,A類為驗證保護級别。
2.3 SELinux有兩種工作級别:
strict:對于每個檔案都要嚴格規定其類型,對于每個程序都有特定的域,程序的域和檔案的類型必須要嚴格比對,才能使程序通路此檔案;
targeted:僅有限個程序受到SELinux的管控;在RHEL系系統中為預設級别;
隻監控那些容易被入侵并且會對系統造成安全隐患的程序;
2.4 SELinux幾種工作模式:
enforcing:啟用
permissivs:警告
disabled:關閉
targeted:僅對目标程序進行保護
mls:對大多數程序進行安全保護
檢視/etc/selinux/config檔案中的配置資訊
<a href="https://s4.51cto.com/wyfs02/M01/A6/43/wKioL1nLn-ugTiOwAABHOLdBCuI945.png" target="_blank"></a>
1)凡是從enforcing或Permissive模式切換值disabled模式,或者從disabled模式切換至enforcing或Permissive模式,都必須要經過作業系統重新開機才能生效;
2)使用setenforce指令修改的模式不會永久生效,如果想要使SELinux的工作模式永久生效, 需要修改/etc/sysconfig/selinux檔案中的SELINUX=enforcing
3)enforcing到Permissive之間的模式轉換可以使用setenforce指令來完成;
setenforce {0|1}
0:Permissive
1:Enforcing
4)可以使用getenforce指令來檢視目前SELinux的工作模式;
3.常用指令
chcon:改變标簽(打标)
chcon [options]... CONTEXT FILE...
-t type 修改為指定類型
-R:遞歸修改目錄中的所有檔案
--reference=FILE:參考FILE的安全上下文,為目标檔案設定相同的安全上下文;
使用場景:
使用httpd建立虛拟主機之後,目标頁面檔案的類型與httpd程序的域不相符合,将虛拟主機伺服器根目錄中的所有檔案修改為httpd_sys_content_t即可;
可以使用restorecon指令還原某檔案或目錄的安全上下文為預設值;
restorecon
-R:遞歸
布爾型規則:
getsebool
-a:顯示所有已經生效的布爾型規則;
setsebool
-P:寫入政策檔案,使更改永久生效;
使用場景:支援二進制政策修改的系統服務
ftp的匿名使用者上傳功能:
~]# setsebool -P ftpd_full_access=1
~]# setsebool -P ftpd_anon_write=1
samba使用者通路自己的家目錄:
~]# setsebool -P samba_enable_home_dirs=1
semanage:
需要通過安裝policycoreutils-python擷取該應用程式
semanage port -a -t http_port_t -p tcp 8077
本文轉自Vincent一馬 51CTO部落格,原文連結:http://blog.51cto.com/mazhenbo/1983409,如需轉載請自行聯系原作者