初識SElinux

一、SElinux(Secure Enhanced Linux):安全增強的Linux

       SElinux是一個在內核中實踐的強制訪問控制(MAC)安全性機制,由美國國家安全局NSA(The National Security Agency)和SCC(Secure

Computing Corporation的)開發的針對計算機基礎結構安全開發的一個全新的Linux安全策略機制。SELinux可以允許系統管理員更加靈活的來定義安全策略。

       SELinux是一個內核級別的安全機制,從Linux2.6內核之后就將SELinux集成在了內核當中,因為SELinux是內核級別的,所以我們對于其配置文件的修改都是需要重新啟動操作系統才能生效的。

       現在主流發現的Linux版本里面都集成了SELinux機制,CentOS/RHEL都會默認開啟SELinux機制。

二、DAC和MAC的區別  

DAC(Discretionary Access Control):自主訪問控制

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

MAC(Mandatory Access Control):強制訪問控制

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

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

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

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

三、SElinux模式

       Enforcing: 這個缺省模式會在系統上啟用并實施 SELinux 的安全性政策,拒絕訪問        及記錄行動

       Permissive: 在 Permissive 模式下,SELinux 會被啟用但不會實施安全性政策,而        只會發出警告及記錄行動。Permissive 模式在排除 SELinux 的問題時很有用

       Disabled: SELinux 已被停用

       如何查看及設定當前系統上SElinux的工作模式:

              查看:getenforce     

              設定:setenforce [0|1];0表示設置為Permissive模式,1表示設置為Enforcing模式。此設定方式當前有效,重啟系統后失效。

       blob.png

       SElinux配置文件:

       /etc/sysconfig/selinux。修改此文件后,需要重啟系統才生效。

blob.png

四、Selinux策略

       在SELinux中,我們是通過定義策略來控制哪些域可以訪問哪些上下文。SElinux策略分類:

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

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

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

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

       targeted目標型策略,僅有限個進程受到selinux的控制,只監控容易被入侵的進程。依賴保護常見的網絡服務。CentOS/RHEL中采用的默認策略。

       使用sestatus命令查看當前使用的SElinux模式及配置文件中的配置:

blob.png

五、SElinux安全上下文

       在傳統的linux中,一切皆文件,有用戶、組、權限來進行訪問控制。

       在SElinux中,一切皆對象,由存放在Inode的擴展屬性域的安全元素所控制其訪問。所有文件、資源端口和進程都具備叫做安全上下文(Security context)的標簽。

如何查看文件的安全上下文:

       ll -Z /Path/to/somefile

blob.png

如何查看進程的安全上下文:

       ps -Z

blob.png

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

       user:role:type:sensitivity:category

blob.png

       user:指的是SElinux用戶,root表示root賬戶身份,user_u表示普通用戶無特權用戶,system_u表示系統進程,通過用戶可以確認身份類型,一般搭配角色使用。身份和不同的角色搭配時有權限不同,雖然可以使用su命令切換用戶但對于SElinux的用戶并沒有發生改變,賬戶之間切換時此用戶身份不變,在targeted策略環境下用戶標識沒有實質性作用。

       role:object_r一般為文件目錄的角色、system_r一般為進程的角色,在targeted策略環境中用戶的角色一般為system_r。用戶的角色類似用戶組的概念,不同的角色具有不同的身份權限,一個用戶可以具備多個角色,但是同一時間只能使用一個角色。在targeted策略環境下角色沒有實質作用,在targeted策略環境中所有的進程文件的角色都是system_r角色。

       type:文件和進程都有一個類型,SElinux依據類型的相關組合來限制存取權限。

       Sensitivity: 限制訪問的需要,由組織定義的分層安全級別,如unclassified, secret,top,secret,一個對象有且只有一個sensitivity,分0-15 級,s0最低,Target策略默認使用s0

       Category :對于特定組織劃分不分層的分類,如FBI Secret,NSA secret,一個對象可以有多個categroy,c0-c1023共1024個分類,Targeted策略不使用cateaory

六、SElinux的配置

       1、臨時配置:setenforce

       2、永久配置:vim /etc/sysconfig/selinux

       3、給文件或目錄重新打安全標簽

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

              chcon [OPTION]… –reference=RFILE  FILE… 

                     常用選項

                            -R :遞歸打標

       例:在/var/www/html,新建了一個目錄test,目錄下的index.html文件的安全上下文類型為httpd_sys_content_t,現在修改ks.cfg、hello.txt的安全類型與index.html的類型一致。

blob.png

修改方法一:直接修改

       ]#chcon -t httpd_sys_content_t ks.cfg

blob.png

修改方法二:參考index.html文件修改hello.txt文件

       ]#chcon –reference index.html hello.txt

blob.png

將test目錄下的文件的角色都修改為system_u

       ]#chcon -R -u system_u test/

blob.png

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

              estorecon [-R] /path/to/somefile

       5、默認安全上下文查詢與修改

       使用semanager來管理。需要安裝policycoreutils-python包

查看默認的安全上下文:]#semanage fcontext -l | grep httpd

blob.png

修改默認安全上下文:

semanager fcontext -a -t type file

例:修改random.txt的默認類型為,httpd_sys_content_t,之后恢復安全類型至默認類型

blob.png

刪除默認安全上下文

semanager fcontext -d -t type file

七、Selinux端口標簽

       1、查看端口標簽

              semanage port –l

blob.png

       2、添加端口

              semanage port -a -t port_label -p tcp|udp PORT

       例:將9812端口添加為http_port_t的默認端口

              semanage port -a -t http_port_t -p tcp 9812

blob.png

       3、刪除端口

              semanage port -d -t port_label -p tcp|udp PORT

              例:將9812端口從為http_port_t的默認端口中刪除

              semanage port -d -t http_port_t -p tcp 9812

blob.png

       4、修改

              semanage port -m -t port_label -p tcp|udp PORT

       例:將http_port_t的默認端口9812改為http_port_t的默認端口

              semanage port -m -t http_port_t -p tcp 9812

blob.png

八、SElinux的布爾值

       可以通過布爾值微調 SELinux政策而不必重新編譯政策的源代碼。這些選項包括允許用戶在 Samba下分享他們的主目錄,或者允許Apache從用戶的主目錄伺服文件。否則這些都會被 SELinux 政策所拒絕。

       1、查看bool 命令:

              getsebool [-a] [boolean]

              semanage boolean –l

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

blob.png

  2、設置bool 值命令:

              setsebool [-P] boolean value

              setsebool [-P] Boolean=value

blob.png

實戰演練:

1、啟用SELinux策略并安裝httpd服務,改變網站的默認主目錄為/website,添加SELinux文件標簽規則,使網站可訪問。

查看是否啟用selinux

blob.png

創建/website目錄,并設置安全上下文

blob.png

blob.png

編輯httpd.conf文件,修改默認目錄

]#vim /etc/httpd/conf/httpd.conf

blob.png

blob.png

2、修改上述網站的http端口為9527,增加SELinux端口標簽,使網站可訪問。

       修改httpd服務監聽端口

       ]#vim /etc/httpd/conf/httpd.conf

blob.png

       將9527設置為httpd監聽端口

blob.png

3、啟用相關的SELinux布爾值,使上述網站的用戶student的家目錄可通過http訪問。

blob.png

配置完成,清空防火墻策略,做訪問測試。

blob.png

blob.png

 

 附:一些常見的布爾類型釋義   

allow_ftpd_full_accessFTP

容許 ftpd 全權訪問系統

allow_ftpd_anon_writeFTP

容許 ftpd 將文件上載到置標為 public_content_rw_t 的目錄

allow_ftpd_use_cifsFTP

容許 ftp 服務器在公開傳輸服務使用 cifs

allow_ftpd_use_nfsFTP

容許 ftp servers 在公開傳輸服務使用 nfs

allow_httpd_anon_writeHTTPD 服務)

容許 httpd 守護程序將文件寫入置標為 public_content_rw_t 的目錄

allow_httpd_mod_auth_pamHTTPD 服務)

容許 Apache 使用 mod_auth_pam.

allow_httpd_sys_script_anon_writeHTTPD 服務)

容許 httpd 腳本將文件寫入置標為 public_content_rw_t 的目錄

allow_smbd_anon_writeSamba

容許 Samba 將文件寫入置標為 public_content_rw_t 的目錄

allow_ssh_keysignSSH

容許 ssh 執行 ssh-keysign

ftp_home_dirFTP

容許 ftp 在用戶的主目錄讀/寫文件

httpd_builtin_scriptingHTTPD 服務)

容許 HTTPD 支持內置腳本

httpd_can_network_connect_dbHTTPD 服務)

容許 HTTPD 腳本及模塊通過網絡與數據庫連接

httpd_can_network_connectHTTPD 服務)

容許 HTTPD 腳本及模塊與網絡連接

httpd_can_network_relayHTTPD 服務)

容許 httpd 扮演中繼器的角色

httpd_disable_transHTTPD 服務)

SELinux 停止保護 httpd 守護程序

httpd_enable_cgiHTTPD 服務)

容許 HTTPD 支持 cgi

httpd_enable_ftp_serverHTTPD 服務)

容許 HTTPD ftp 服務器的身份去執行

httpd_enable_homedirsHTTPD 服務)

容許 HTTPD 閱讀用戶的主目錄

httpd_rotatelogs_disable_transSELinux 服務保護)

SELinux 停止保護 httpd rotatelogs

httpd_ssi_execHTTPD 服務)

容許 HTTPD 在系統 CGI 腳本的同一本地里執行 SSI 執行檔

httpd_suexec_disable_transHTTPD 服務)

SELinux 停止保護 http suexec

httpd_tty_commHTTPD 服務)

統一 HTTPD 與終端機的溝通。處理憑證時需用

httpd_unifiedHTTPD 服務)

統一 HTTPD 處理所有內容文件

原創文章,作者:M20-1鐘明波,如若轉載,請注明出處:http://www.www58058.com/46670

(0)
M20-1鐘明波M20-1鐘明波
上一篇 2016-09-15
下一篇 2016-09-15

相關推薦

  • 基礎命令

    1,對于Linux的實驗環境我們要用到虛擬機,往往每次上線都要登錄,這時候如果把用戶設為自動登錄就會方便許多,接下來就介紹下設置虛擬機的自動登錄 , /etc/gdm/custom.conf 這個就是設置自動登錄的一個配置文件,我們先來使用nano打開這個文件,如下 # GDM configuration storage 這是GDM的一個配置存儲 [daem…

    2017-11-19
  • 馬哥教育網絡班21期+第4周課程練習

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 # cp -a /etc/skel /home/tuser1 # chmod -R g-rwx,o-rwx /home/tuser1/ 2、編輯…

    Linux干貨 2016-07-16
  • 高級文件系統管理之邏輯卷管理

    一,概述 邏輯卷管理器(LVM)     LVM: Logical Volume Manager, Version:2          dm:device mapper (設備映射),將一個或多個底層塊設備組織成一個邏輯設備的模塊 &nb…

    Linux干貨 2016-09-10
  • 2016 10 19 第5天作業

    20161019第5天作業 軟鏈接和硬鏈接的區別 硬鏈接 ①硬鏈接文件不能跨分區創建 ②一個硬鏈接文件的刪除不影響其他鏈接的訪問 ③鏈接文件指向的源文件被刪除后,鏈接文件還能正常訪問源文件的數據 ④硬鏈接的文件類型是 –  普通文件 ⑤硬鏈接和源文件的屬性(大小,權限,時間戳,Inode號)相同 ⑥硬鏈接不能對目錄創建 ⑦創建硬鏈接會增…

    Linux干貨 2016-10-20
  • Quota和RAID

    高級文件系統管理 磁盤配額 quota 限制用戶在某個分區的容量,創建數目的多少!一般實施在家目錄 /home 下來限制用戶的占用空間 限制某一群組所能使用的最大磁盤配額  (使用群組限制): 限制某一用戶的最大磁盤配額  (使用用戶限制):它僅能針對整個文件系統來進行設計,無法針對某個單一的目錄來設計它的磁盤配額。 限制某一目錄 &nb…

    Linux干貨 2016-09-01
  • 文件權限

     本篇博客是對文件權限的簡單介紹,將會簡述下權限的數字表現形式,還有字母表現形式,還有一些特殊的suid、sgid、sticky的權限介紹,還有對ACL權限的簡述。  一、權限的定義     關于權限,百度百科的解釋如下:權限(privilege)是指某個特定的用戶具有特定的系統資源使用權力,像是文…

    Linux干貨 2017-07-29

評論列表(4條)

  • 馬哥教育
    馬哥教育 2016-09-20 10:47

    文章內容很完整,但是圖片都是損壞的文件,我已經幫你打回草稿了,你自己重新整理一下。

    • M20-1鐘明波
      M20-1鐘明波 2016-09-20 21:07

      @馬哥教育試了幾次,我預覽都能看見圖片,但是用手機看不了。
      放棄。

    • 馬哥教育
      馬哥教育 2016-09-23 09:53

      @M20-1鐘明波你這個問題是這樣的,你是從為知筆記復制過來的圖片吧?而這些鏈接我們的網站是禁止訪問的所以你這邊需要重新傳一下

    • M20-1鐘明波
      M20-1鐘明波 2016-09-23 11:33

      @馬哥教育老師,此篇博文及其他有錯誤的文章都已修改。

欧美性久久久久