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文件中的配置信息

wKioL1nLn-ugTiOwAABHOLdBCuI945.png

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章