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
下一篇 2016-09-15

相關推薦

  • grep與基本正則表達式基本用法

    正則表達式:Regual Expression  REGEXP      由一類特殊字符及文本字符所編寫的模式,其中有些字符不表示其字母意義,而是用于表示控制或通配的功能;       分兩類:             &nbsp…

    Linux干貨 2016-11-03
  • 08.04 筆記總結

    1.ps axo  user,ruser,group,rgroup,cmd  //  ruser  表示程序發起的用戶,一般是指系統當前的用戶  //  user  表示程序的所有者。在大數情況下,兩個用戶都是系統當前的用戶, 之后當程序被賦予suid的時候,可能user會發生變化。 2.…

    Linux干貨 2016-08-08
  • 8-12 文件查找

    8-12 文件查找   8–1該節主要分為三部分,分別是作業,自己對德·摩根定律的了解及find常用選項   一、作業 1、查找/var目錄下屬主為root,且屬組為mail的所有文件 2、查找/var目錄下不屬于root、lp、gdm的所有文件 3、查找/var目錄下最近一周內其內容修改過,同時屬主不為root,也不是pos…

    Linux干貨 2016-08-15
  • 馬哥教育網絡班22期+第4周課程練習

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@localhost home]# cp -r /etc/skel /home/tuser1 [root@localhost skel]# ch…

    Linux干貨 2016-09-05
  • Linux系統的終端類型

    一、什么是Linux終端     終端–用戶用戶與主機交互,必然要用到的設備。     早期的大型機,想使用的用戶很多,但是主機只有一個,也不可能人手一臺,但是可以做到在主機上接一個分屏器,分屏器的每一個端子上可以接上一套鼠標鍵盤顯示器,就可以直接在主機上進行一些操作了,這就相當于每個人在獨立的操作一臺計算…

    Linux干貨 2016-10-18
  • 第四周

    第四周 1.復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其他用戶均沒有任何訪問權限。 [root@node1 ~]# cp -r /etc/skel/ /home/tuser1 [root@node1 ~]# chmod -R go= /home/tuser1 [root@node1 ~]# ls -…

    Linux干貨 2017-07-26
欧美性久久久久