SElinux解析
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文件中的配置信息
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
本文出自 “12657170” 博客,請務必保留此出處http://12667170.blog.51cto.com/12657170/1969262
SElinux解析