1. 程式人生 > >SElinux解析

SElinux解析

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解析