linux基礎學習之SElinux

1、SElinux簡介

SELinux: Secure Enhanced Linux,是美國國家安全局「NSA=The National Security Agency」和SCC(Secure Computing Corporation)開發的Linux的一個強制訪問控制的安全模塊。2000年以GNU GPL發布,Linux內核2.6版本后集成在內核中

2、SElinux和普通linux區別:

DAC:Discretionary Access Control自由訪問控制

MAC:Mandatory Access Control 強制訪問控制

?DAC環境下進程是無束縛的

?MAC環境下策略的規則決定控制的嚴格程度

?MAC環境下進程可以被限制的

?策略被用來定義被限制的進程能夠使用那些資源(文件和端口)

?默認情況下,沒有被明確允許的行為將被拒絕

沒有SElinux的linux系統就是DAC模式的,在該模式下,進程是無約束的,如以root身份運行的進程擁有一切權限

在SELinux中沒有root這個概念,安全策略是由管理員來定義的,任何軟件都無法取代它。這意味著那些潛在的惡意軟件所能造成的損害可以被控制在最小。一般情況下只有非常注重數據安全的企業級用戶才會使用SELinux。

    SELinux提供了一種靈活的強制訪問控制(MAC)系統,且內嵌于Linux Kernel中。SELinux定義了系統中每個【用戶】、【進程】、【應用】和【文件】的訪問和轉變的權限,然后它使用一個安全策略來控制這些實體(用戶、進程、應用和文件)之間的交互,安全策略指定如何嚴格或寬松地進行檢查。

    只有同時滿足了【標準Linux訪問控制】和【SELinux訪問控制】時,主體才能訪問客體。

MAC與DAC的最大區別就是:DAC只針對用戶的權限,如,root,對所有文件都有至高的權限,或者一個文件的權限是664,那么這個文件的擁有者就擁有了讀寫的權限,而在MAC的模式下,即使是root,在使用不同程序時,你所取得的權限不一定是root,而要看當時該程序的設定而定,如此來,MAC體系中,針對的就是進程而不是用戶的權限。

3、SElinux的運行機制

當一個subject(如: 一個應用)試圖訪問一個object(如:一個文件),Kernel中的策略執行服務器將檢查AVC (Access Vector Cache), 在AVC中,subject和object的權限被緩存(cached)。如果基于AVC中的數據不能做出決定,則請求安全服務器,安全服務器在一個矩陣中查找“應用+文件”的安全環境。然后根據查詢結果允許或拒絕訪問,拒絕消息細節位于/var/log/messages中。

SElinux.png

SElinux工作過程.jpg

4、selinux的配置文件:

/etc/selinux/config或者/etc/sysconfig/selinux

[10:59 root@Centos6.8/var/ftp/pub]# ll /etc/selinux/config 
-rw-r--r--. 1 root root 458 Jul 20 02:18 /etc/selinux/config
[10:59 root@Centos6.8/var/ftp/pub]# ll /etc/sysconfig/selinux 
lrwxrwxrwx. 1 root root 17 Jul 20 02:18 /etc/sysconfig/selinux -> ../selinux/config

該配置文件定義了:

1) 打開或關閉SELinux

    2) 設置系統執行哪一個策略(policy)

    3) 設置系統如何執行策略(policy)

[19:48 root@Centos6.8/usr/src/linux]# cat /etc/selinux/config 
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

5、SElinux的策略類型

SELinux有四種策略類型:

strict: centos5,每個進程都受到selinux的控制

targeted: 用來保護常見的網絡服務,僅有限進程受到selinux控制,只監控容易被入侵的進程,rhel4只保護13個服務,rhel5保護88個服務

minimum:centos7,修改過的targeted,只對選擇的網絡服務?

mls:提供MLS(多級安全)機制的安全性

minimum和mls穩定性不足,未加以應用

其中centos5,6只有targeted和strick兩種策略,一般默認是targeted策略,主要針對一些網絡服務來進行監管,如http、samba等

6、查看SElinux的安全上下文(secure context)

如果開啟了SElinux,在10為權限后面會有一個點(.)的標志

[10:59 root@Centos6.8/var/ftp/pub]# ll
total 12
drwxr-xr-x. 2 root root 4096 Sep 14 09:57 hello
-rw-r--r--. 1 root root 1192 Sep 14 09:58 ks6.cfg
-rw-r--r--. 1 root root 1368 Sep 14 10:11 mylinux-ks.cfg
[11:05 root@Centos6.8/var/ftp/pub]# ll -Z
drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 hello
-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 ks6.cfg
-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 mylinux-ks.cfg

7、安全上下文元素

所有操作系統訪問控制都是以關聯的客體和主體的某種類型的訪問控制屬性為基礎的。在SELinux中,訪問控制屬性叫做安全上下文。所有客體(文件、進程間通訊通道、套接字、網絡主機等)和主體(進程)都有與其關聯的安全上下文,一個安全上下文由三部分組成:用戶、角色和類型標識符。常常用下面的格式指定或顯示安全上下文:

安全上下文有五個元素組成:

user:role:type:sensitivity:category

User:指示登錄系統的用戶類型,如root,user_u,system_u,多數本地進程都屬于自由(unconfined)進程【以XXX_u表示】
Role:定義文件,進程和用戶的用途:文件:object_r,進程和用戶:system_r【以XXX_r表示】
Type:指定數據類型,規則中定義何種進程類型訪問何種文件Target策略基于type實現,多服務共用:public_content_t【以XXX_t表示】
Sensitivity:限制訪問的需要,由組織定義的分層安全級別,如unclassified,secret,top,secret, 一個對象有且只有一個sensitivity,分0-15級,s0最低,Target策略默認使用s0
Category:對于特定組織劃分不分層的分類,如FBI Secret,NSA secret, 一個對象可以有多個categroy,c0-c1023共1024個分類,Target 策略不使用cateaory

在targeted模式下,主要的關鍵策略就是看domain/type是否符合已定的策略,所謂的domain值得就是程序本身,而type指的是file type,只有file type在domain本身可執行的范圍內,該程序才能進程訪問文件,當然就算符合了策略,還要看文件本身的權限,等于有兩層保險。

8、SElinux的相關命令操作

(1)

getenforce: 獲取selinux當前狀態

sestatus:查看selinux狀態

setenforce 0|1

0: 設置為permissive(每個受限的進程違規操作不會被禁止,但會被記錄于審計日志)

1: 設置為enforcing(強制,每個受限的進程都必然受限)

(2)

給文件重新打安全標簽:

chcon[OPTION]… [-u USER] [-r ROLE] [-t TYPE] FILE…

chcon[OPTION]… –reference=RFILE FILE…

-R:遞歸打標;

恢復目錄或文件默認的安全上下文:

restorecon [-R] /path/to/somewhere

(3)

semanage:默認安全上下文查詢與修改,semanage來自policycoreutils-python包,要使用semanage要先安裝policycoreutils-python包

查看默認的安全上下文

semanage fcontext –l

添加安全上下文

semanage fcontext -a –t httpd_sys_content_t‘/testdir(/.*)?’

restorecon –Rv /testdir

刪除安全上下文

semanage fcontext -d –t httpd_sys_content_t‘/testdir(/.*)?’

查看端口標簽

semanage port –l

添加端口

semanage port -a -t port_label-p tcp|udpPORT

semanage port -a -t http_port_t -p tcp 9527

刪除端口

semanage port -d -t port_label-p tcp|udpPORT

semanage port -d -t http_port_t -p tcp 9527

修改

semanage port -m -t port_label-p tcp|udpPORT

semanage port -m -t http_port_t-p tcp9527

(4)

布爾型規則:

getsebool

setsebool

查看bool命令:

getsebool[-a] [boolean]

semanage boolean –l

semanage boolean -l –C 查看修改過的布爾值

設置bool值命令:

setsebool [-P] booleanvalue

setsebool [-P] Boolean=value

原創文章,作者:麥德良,如若轉載,請注明出處:http://www.www58058.com/46436

(0)
麥德良麥德良
上一篇 2016-09-15 22:23
下一篇 2016-09-15 23:58

相關推薦

  • linux基礎學習-第六天

    2016-08-02 授課內容: 用戶和組管理命令 理解并設置文件權限 默認權限 特殊權限 文件ACL 用戶和組管理命令 用戶和組的配置文件:/etc/default/useradd(相當于useradd -D)、/etc/skel(創建用戶的家目錄配置文件)、/etc/login.defs(修改用戶的密碼策略配置) /etc/default/useradd…

    Linux干貨 2016-08-04
  • MySQL慢日志監控腳本實例剖析

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://nolinux.blog.51cto.com/4824967/1577326        公司線上的 MySQL 慢日志,之前一直沒有做好監控。趁著上周空閑,我就把監控腳本寫了下,…

    Linux干貨 2016-08-15
  • vim編輯器-練習題

    1 、復制/etc/profile至/tmp/目錄,用查找替換命令刪除/tmp/profile文件中的行首的空白字符 #cp /etc/profile /tmp #vim /tmp/profile :%s/^[[:space:]]\+// 2 、復制/etc/rc.d/init.d/functions 文件至/tmp 目錄,用查找替換命令為/tmp/func…

    Linux干貨 2016-08-15
  • 第八周作業

    1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;     在線的主機使用綠色顯示;     不在線的主使用紅色顯示; 2、如何給網絡接口配置多個地址,有哪些方式? 方法3:在/etc/sysconfig/netw…

    2017-04-20
  • 內核編譯

    內核編譯 程序包的編譯安裝 ./configure,make,make install./configure檢查編譯環境依賴關系,并設定參數make 執行編譯操作make install 安裝二進制庫文件幫助文檔配置文件 前提:開發環境(開發工具,開發庫),頭文件:/usr/include 開源:源代碼 發行版,就是把源代碼拿過來,組織成程序。  …

    Linux干貨 2016-09-19
  • centos 7.2 安裝pyenv多版本管理工具和虛擬環境pyenv-virtualenv

    軟件簡介: pyenv + pyenv-virtualenv pyenv,是一款特別好用的Python版本管理器,程序員可以建立不同的目錄,在不同的目錄里分別運行不同版本的Python, 并且互不影響,安裝的包也互不影響。github項目地址:https://github.com/yyuu/pyenv pyenv-virtualenv, 是pyenv的一個p…

    Linux干貨 2016-07-04
欧美性久久久久