Linux中的SELinux

來源:互聯網
上載者:User

SElinux的前身是NSA(美國國家安全域)發起的一個項目。它的目的是將系統加固到可以達到軍方層級。

為什麼NSA選擇Linux呢?

在目前市面上大多數作業系統都是商用閉源的,只有Linux是開源的,這樣修改並加入這項功能就方便許多,而且沒有著作權糾紛。所以,現在selinux就成為了Linux核心的一部分。

 

在瞭解selinux之間,我們需要知道DAC和CS的概念,它們是linux系統本身的安全機制。

DAC:自主存取控制

每一個使用者為了能夠實現和其他使用者共用檔案,在使用ACL之前,只能通過改變這個檔案其他使用者的許可權,但是這中方法給系統安全帶來了無窮的隱患。

 

CS(安全上下文):取決於發起使用者的許可權和文本本身的許可權

 

CS+DAC給系統的安全機制帶來了漏洞,事想apache使用者可以查看/etc/passwd,如果它有寫入權限,就可能被利用進而就修改passwd檔案,危害系統安全。

 

所有才又了MAC強制存取控制的概念

MAC: Mandatory Access Control  強制存取控制,它是selinux實現存取控制的基礎

還通過httpd服務來說明它的原理:

SELINUX通過type enforce (TE)強制類型策略將httpd的工作目錄定義在一個特定的目錄/var/www使用者如果在定義其他目錄,將不允許訪問,從而實現mac的強制存取控制。

 

 

selinux是怎麼工作的

它通過operation (操作)的主和賓打一個“標籤”,在一個“類型”裡只能由特定的目錄或使用者執行。這樣可以限定一個進程的執行範圍只能在一個“沙箱”(sandbox)內了(最小許可權法則)

 

###operation: 讀,寫,執行,等。其實是一個主謂賓的結構 Subject Operation Object

###最小許可權法則:例如定義Sbjiect httpd   的目錄/var/www 為public_content_t類型,

這樣,httpd只能訪問有這個特定類型的檔案或目錄,這些檔案就叫沙箱“sendbox”

                   使用selinx,必須精心設計一套訪問法則

 

給不同的進程打上不同的“域”,給不同的目錄打上不同的”類型“通過定義“類型”和“域”的對應規則,來實現。selinx需要域和標籤的對應關係,一對一對應     。但是系統上有上千個進程,實現起來很麻煩,所以一般情況下,並不是用selinx作為安全防範

                                                                                                       

selinux的實現機制有兩種

strict:       任何進程都受selinux的控制,一般不用,太難設定

targeted:   紅帽開發,指定選定的進程來受SELINUX,這種機制使得selinx更加容易受到控制

 

policy: 規則群組合起來就叫策略

規則通常是以二進位檔案存在的(編輯完轉換成二進位),這樣可以降低系統資源佔用

ll /etc/selinxu/policy

MLS  muiti level scurity

selinxu把一些規則裡面可以方便控制的功能設定為on或者off,這些都成為布爾類型

getsebool -a   可以顯示這些布爾型的內容

 

fcontext 規定目錄屬於哪個進程的範圍

 

啟動使用selinux

1.啟用selinux

vim /etc/sysconfig/selinuxSELINUX=enforcing      #任何進程都受selinux控制                                     permissive    #仍然受控制,但是進程進入了別的目錄會記錄到日誌                                     disable           #乾淨徹底的關閉setenforcegenenforce

2.顯示標籤

ls -Z           顯示檔案的標籤                   一共五段     角色:selinux裡另外定義的使用者                                                          object_r: 有點類似於組                                                          user_home_t: 域或者類型(最重要)通過改變它可以控制訪問。類型強制的機制就是通過它實現的ps -Z          顯示進程的標籤所有顯示unconfined_t都表示不受selinux控制ps auxZ | grep httpdls -dZ

在不同的目錄建立的檔案類型是不一樣的,歸不同的進程管理。

 

3.改變一個類型的標籤

chcon     chage contex  改變上下文chcon -t    改類型,指定為特定類型                -u                   -R   遞迴修改,可以改變目錄下所有目錄                      --reference=   以某個檔案的標籤為參照改變成一樣的標籤chcon -R --reference=/var/www/html /wwwchcon -t default_t /www/index.html

4.恢複預設安全上下文及修改

restorecon                   -R                   遞迴                   -F                                           強制                   -v                                           顯示詳細資料   restorecon -R -v -F /www             # 顯示/www目錄的詳細CS資訊                     semange                   -d                  刪除                   -m                 修改                   -r                  -a                   附加                   -t                    類型 

6.開啟布爾類型

getsebool -a  | grep httpd                   #查看某個對應的布爾類型的值setsebool httpd_enable_cgi=on          # 加上-p選項永久有效

下面通過添加一個samba目錄來測試selinux控制

1.添加tools檔案夾

vim /etc/samba/smb.conf[tools]       path = /share                        #沒有的話事前建立一個       public = yes        write list = @mygrp                 #只允許mygrp組具有建立檔案的許可權       browseable = yesservice smb start

2.添加使用者gentoo,並設定samba密碼,允許器登陸samba伺服器在tools下建立檔案


groupadd mygrpuseradd gentoo -g mygrp[root@station32 var]# smbpasswd -a gentooNew SMB password:Retype new SMB password:Added user gentoo.smbclient -L 192.168.0.32 -U gentoo          # 查看samba伺服器的內容

3.我們查看下/shared目錄的CS,並且開啟selinux

ls -dZ /share/drwxrwxr-x root mygrp root:object_r:default_t          /share/setenforce 1

4.開啟selinux後,再使用smbclient命令就會報錯,我們看下設定檔裡面有這樣一行 # To set a label use the following: chcon-t samba_share_t /path ,所以我們必須把/shared檔案夾的CS修改後才能正常使用samba

chcon -t samba_share_t  /share

 

5.我們關閉samba裡關於訪問家目錄的布爾類型

setsebool samba_enable_home_dirs off

 

這個時候使用win近端分享,以使用者gentoo登陸後,就不能進入gentoo家目錄了

6.我們將它開啟就又能訪問了,命令如下:

setsebool samba_enable_home_dirs on

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.