二十9、SELinux簡介

1、基礎html

1)訪問模型linux

Linux原有訪問模型:自主訪問控制 DAC安全

    安全隱患: 進程所能訪問資源的範圍 爲用戶所能訪問的資源範圍dom

後門: rootkit程序
進程被脅持:
    基於進程做爲跳板,就有了進程屬主的權限 
        root
        普通用戶--> 查看其餘文件 --> 找到漏洞,提權操做

SELinux:Secure Enhanced Linux 工做於Linux內核中spa

SELinux訪問模型: 強制訪問機制 MAC3d

    相似sandbox機制:進程啓動在一個沙箱內部,rest

    爲進程運行,啓用一個專用的沙箱日誌

sandbox 沙箱: 最小資源集合
進程脫離控制時,不能訪問用戶全部能訪問的文件

 

2)、SELinux有兩種工做模式 code

  strict :嚴格級別  每一個進程都受到SELinux的控制htm

  targetted  : 僅有限個進程受SELinux控制,只監控容易被入侵的進程

 

3)SELinux工做方式

subject(主語) operation(謂) object(賓)

        subject: 進程

        operation: 取決於被操做對象支持的模式 及 操做者是否在有效區域內

        object: 進程、文件、用戶

              文件: operation: open, read, write, close, chown, chmod

活動範圍(域):

    subject: domain 

    object:  type   操做者稱爲域(活動的發出者),被操做者稱爲類型

 

4)SELinux安全標籤顯示

SELinux爲每一個文件、進程提供安全標籤

查看:

  進程:ps axuZ

    - 沒有激活SELinux(SELinux必須在內核啓動時激活才能生效)

例如:-   root     26238  3.0  0.4   4936  1076 pts/0    R+   21:24   0:00 ps axuZ

  文件: ls -Z 顯示SELinux的安全上下文

例如:-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg

 前三段 user:role:type

  user: SELinux的user

  role: 角色,相似linux的組

  type: 類型, 沙箱的範圍

  subject: domain

  object: type

  object能被subject操做只有:type是domain的子集:domain == type 或 domain包含type

    

2、激活SELinux

1)配置文件位置:

wKioL1mz7FvQCZUuAAAcFRya6Cg261.png

 

2)SELinux狀態

獲取SELinux當前狀態

getenforce

設定狀態:當前有效,重啓失效

setenforce #
    0 設定爲permissive
    1 設定爲enforce

wKiom1mz7VDR3iMBAAATLYWfOQs953.png

  enforcing   強制:每一個受限的進程必然受限,不受限的進程不受限。

  permissive  容許:每一個受限的進程違規操做不會禁止,但會被記錄於審計日誌中。 日誌位置:/var/log/audit.log

  disabled   關閉

 

3)激活或關閉SELinux

    開啓selinux: disabled --> enforcing/permissive

sed -i 's,SELINUX=disabled,SELINUX=enforcing,' /etc/selinux/config

    開啓SELinux必須重啓,在/從新掛載後,從新對全部文件打標才能夠對selinux操做

    關閉selinux:enforcing/permissive --> disabled

sed -i -r 's@(SELINUX=)(enforcing|permissive)@\1disabled@' /etc/sysconfig/selinux

 

4)、激活SELinux後

 進程訪問文件的安全上下文

    a)、進程的屬主對文件的權限,經過

    b)、文件的type是不是進程domain的子集

         進程查看規則庫,查看進程所屬的domain是否被受權了可以訪問文件所屬type

            是:能訪問

            否:被SELinux規則所拒絕,並記錄至日誌文件中 /var/log/audit.log,審計:在合理的使用範圍內,進程對文件可執行的合理的操做

SELinux的規則庫:
    規則:哪一種域能訪問哪一種或哪些和類型內文件
        法無受權即禁止 --> 在SELinux規則庫中沒有定義的規則,均被禁止
進程如何訪問非本域domain的文件?
    修改文件的type 屬於進程domain便可

wKiom1mz_6CxLnfxAAAdbqmsdmY478.png

    c)、設定某些布爾型特性

  [root@localhost /]# getsebool -a

 

5)改變文件所屬的域

  chcon   [-u USER] [-r ROLE]  [-t TYPE] FILE...

       -R :遞歸打標

 

使用示例

wKiom1mz_DTwQUgKAAAeYlq1EjQ343.png

[root@localhost conf.d]#cd /etc/httpd/conf.d

[root@localhost conf.d]# mv welcome.conf welcome.conf.bak

wKioL1mz_DSis3ydAABBWOIy1ss324.png

 

6)還原標籤

  restorecon  [-R]  /path/to/somewhere

   -R :還原一個目錄下的全部標籤

e.g   restorecon  /www/html/index.html

 

使用示例

wKioL1mz_KbRnxK7AAB1UB72zBI888.png

 

7)設定程序功能開啓或關閉

 默認對於某些程序的功能,相對安全級別較低的功能,將被SELinux自動被禁止,例如ftp的匿名用戶:任何用戶能夠上傳文件

 

布爾型規則:

獲取程序功能sebool

  getsebool -a   [boolean] 全部程序功能 

   getsebool ftp_home_dir

 

設置程序功能

  setsebool [-P] sebool=value

    -P 永久有效,將修改的結果保存至策略庫中 (須要必定時間:找到規則庫,設定,轉換爲binary格式 ) 

  例如:
    setsebool ftp_home_dir 1
    setsebool ftp_home_dir 0

    setsebool ftp_home_dir on
    setsebool ftp_home_dir off

 

參考:https://blog.51cto.com/sonlich/1964022

相關文章
相關標籤/搜索