成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SELinux入門:了解和配置SELinux

運維 系統運維
幾乎可以肯定每個人都聽說過 SELinux (更準確的說,嘗試關閉過),甚至某些過往的經驗讓您對 SELinux 產生了偏見。不過隨著日益增長的 0-day 安全漏洞,或許現在是時候去了解下這個在 Linux 內核中已經有8年歷史的強制性訪問控制系統(MAC)了。

 幾乎可以肯定每個人都聽說過 SELinux (更準確的說,嘗試關閉過),甚至某些過往的經驗讓您對 SELinux 產生了偏見。不過隨著日益增長的 0-day 安全漏洞,或許現在是時候去了解下這個在 Linux 內核中已經有8年歷史的強制性訪問控制系統(MAC)了。

SELinux 與強制訪問控制系統

SELinux 全稱 Security Enhanced Linux (安全強化 Linux),是 MAC (Mandatory Access Control,強制訪問控制系統)的一個實現,目的在于明確的指明某個進程可以訪問哪些資源(文件、網絡端口等)。

強制訪問控制系統的用途在于增強系統抵御 0-Day 攻擊(利用尚未公開的漏洞實現的攻擊行為)的能力。所以它不是網絡防火墻或 ACL 的替代品,在用途上也不重復。

舉例來說,系統上的 Apache 被發現存在一個漏洞,使得某遠程用戶可以訪問系統上的敏感文件(比如 /etc/passwd 來獲得系統已存在用戶),而修復該安全漏洞的 Apache 更新補丁尚未釋出。此時 SELinux 可以起到彌補該漏洞的緩和方案。因為 /etc/passwd 不具有 Apache 的訪問標簽,所以 Apache 對于 /etc/passwd 的訪問會被 SELinux 阻止。

相比其他強制性訪問控制系統,SELinux 有如下優勢:

●控制策略是可查詢而非程序不可見的。

●可以熱更改策略而無需重啟或者停止服務。

●可以從進程初始化、繼承和程序執行三個方面通過策略進行控制。

●控制范圍覆蓋文件系統、目錄、文件、文件啟動描述符、端口、消息接口和網絡接口。

那么 SELinux 對于系統性能有什么樣的影響呢?根據 Phoronix 在 2009 年使用 Fedora 11 所做的橫向比較來看,開啟 SELinux 僅在少數情況下導致系統性能約 5% 的降低。

SELinux 是不是會十分影響一般桌面應用及程序開發呢?原先是,因為 SELinux 的策略主要針對服務器環境。但隨著 SELinux 8年來的廣泛應用,目前 SELinux 策略在一般桌面及程序開發環境下依然可以同時滿足安全性及便利性的要求。以剛剛發布的 Fedora 15 為例,筆者在搭建完整的娛樂(包含多款第三方原生 Linux 游戲及 Wine 游戲)及開發環境(Android SDK + Eclipse)過程中,只有 Wine 程序的首次運行時受到 SELinux 默認策略的阻攔,在圖形化的“SELinux 故障排除程序”幫助下,點擊一下按鈕就解決了。

了解和配置 SELinux

1. 獲取當前 SELinux 運行狀態

getenforce

可能返回結果有三種:Enforcing、Permissive 和 Disabled。Disabled 代表 SELinux 被禁用,Permissive 代表僅記錄安全警告但不阻止可疑行為,Enforcing 代表記錄警告且阻止可疑行為。

目前常見發行版中,RHEL 和 Fedora 默認設置為 Enforcing,其余的如 openSUSE 等為 Permissive。

2. 改變 SELinux 運行狀態

setenforce [ Enforcing | Permissive | 1 | 0 ]

該命令可以立刻改變 SELinux 運行狀態,在 Enforcing 和 Permissive 之間切換,結果保持至關機。一個典型的用途是看看到底是不是 SELinux 導致某個服務或者程序無法運行。若是在 setenforce 0 之后服務或者程序依然無法運行,那么就可以肯定不是 SELinux 導致的。

若是想要永久變更系統 SELinux 運行環境,可以通過更改配置文件 /etc/sysconfig/selinux 實現。注意當從 Disabled 切換到 Permissive 或者 Enforcing 模式后需要重啟計算機并為整個文件系統重新創建安全標簽(touch /.autorelabel && reboot)。

3. SELinux 運行策略

配置文件 /etc/sysconfig/selinux 還包含了 SELinux 運行策略的信息,通過改變變量 SELINUXTYPE 的值實現,該值有兩種可能:targeted 代表僅針對預制的幾種網絡服務和訪問請求使用 SELinux 保護,strict 代表所有網絡服務和訪問請求都要經過 SELinux。

RHEL 和 Fedora 默認設置為 targeted,包含了對幾乎所有常見網絡服務的 SELinux 策略配置,已經默認安裝并且可以無需修改直接使用。

若是想自己編輯 SELinux 策略,也提供了命令行下的策略編輯器 seedit 以及 Eclipse 下的編輯插件 eclipse-slide 。

4. coreutils 工具的 SELinux 模式

常見的屬于 coreutils 的工具如 ps、ls 等等,可以通過增加 Z 選項的方式獲知 SELinux 方面的信息。

ps auxZ | grep lldpad
system_u:system_r:initrc_t:s0 root 1000 8.9 0.0 3040 668 ? Ss 21:01 6:08 /usr/sbin/lldpad -d

ls -Z /usr/lib/xulrunner-2/libmozjs.so
-rwxr-xr-x. root root system_u:object_r:lib_t:s0 /usr/lib/xulrunner-2/libmozjs.so

以此類推,Z 選項可以應用在幾乎全部 coreutils 工具里。

Apache SELinux 配置實例

1. 讓 Apache 可以訪問位于非默認目錄下的網站文件

首先,用 semanage fcontext -l | grep '/var/www' 獲知默認 /var/www 目錄的 SELinux 上下文:

/var/www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0

從中可以看到 Apache 只能訪問包含 httpdsyscontent_t 標簽的文件。

假設希望 Apache 使用 /srv/www 作為網站文件目錄,那么就需要給這個目錄下的文件增加 httpdsyscontent_t 標簽,分兩步實現。

首先為 /srv/www 這個目錄下的文件添加默認標簽類型:semanage fcontext -a -t httpd_sys_content_t '/srv/www(/.*)?' 然后用新的標簽類型標注已有文件:restorecon -Rv /srv/www 之后 Apache 就可以使用該目錄下的文件構建網站了。

其中 restorecon 在 SELinux 管理中很常見,起到恢復文件默認標簽的作用。比如當從用戶主目錄下將某個文件復制到 Apache 網站目錄下時,Apache 默認是無法訪問,因為用戶主目錄的下的文件標簽是 userhomet。此時就需要 restorecon 將其恢復為可被 Apache 訪問的httpdsyscontent_t 類型:

restorecon reset /srv/www/foo.com/html/file.html context unconfined_u:object_r:user_home_t:s0->system_u:object_r:httpd_sys_content_t:s0

2. 讓 Apache 偵聽非標準端口

默認情況下 Apache 只偵聽 80 和 443 兩個端口,若是直接指定其偵聽 888 端口的話,會在 service httpd restart 的時候報錯:

Starting httpd: (13)Permission denied: make_sock: could not bind to address [::]:888
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:888
no listening sockets available, shutting down
Unable to open logs

這個時候,若是在桌面環境下 SELinux 故障排除工具應該已經彈出來報錯了。若是在終端下,可以通過查看 /var/log/messages 日志然后用sealert -l 加編號的方式查看,或者直接使用 sealert -b 瀏覽。無論哪種方式,內容和以下會比較類似:

SELinux is preventing /usr/sbin/httpd from name_bind access on the tcp_socket port 888.
***** Plugin bind_ports (92.2 confidence) suggests *************************
If you want to allow /usr/sbin/httpd to bind to network port 888
Then you need to modify the port type.
Do
# semanage port -a -t PORT_TYPE -p tcp 888
`where PORT_TYPE is one of the following: ntop_port_t, http_cache_port_t, http_port_t.`
***** Plugin catchall_boolean (7.83 confidence) suggests *******************
If you want to allow system to run with NIS
Then you must tell SELinux about this by enabling the 'allow_ypbind' boolean.
Do
setsebool -P allow_ypbind 1
***** Plugin catchall (1.41 confidence) suggests ***************************
If you believe that httpd should be allowed name_bind access on the port 888 tcp_socket by default.
Then you should report this as a bug.
You can generate a local policy module to allow this access.
Do
allow this access for now by executing:
# grep httpd /var/log/audit/audit.log | audit2allow -M mypol
# semodule -i mypol.pp

可以看出 SELinux 根據三種不同情況分別給出了對應的解決方法。在這里,第一種情況是我們想要的,于是按照其建議輸入:

semanage port -a -t http_port_t -p tcp 888

之后再次啟動 Apache 服務就不會有問題了。

這里又可以見到 semanage 這個 SELinux 管理配置工具。它第一個選項代表要更改的類型,然后緊跟所要進行操作。詳細內容參考 Man 手冊

3. 允許 Apache 訪問創建私人網站

若是希望用戶可以通過在 ~/public_html/ 放置文件的方式創建自己的個人網站的話,那么需要在 Apache 策略中允許該操作執行。使用:

setsebool httpd_enable_homedirs 1

setsebool 是用來切換由布爾值控制的 SELinux 策略的,當前布爾值策略的狀態可以通過 getsebool 來獲知。

默認情況下 setsebool 的設置只保留到下一次重啟之前,若是想永久生效的話,需要添加 -P 參數,比如:

setsebool -P httpd_enable_homedirs 1

總結

希望通過這一個簡短的教程,掃除您對 SELinux 的誤解甚至恐懼,個人感覺它并不比 iptables 策略復雜。如果希望您的服務器能有效抵擋 0-day 攻擊時,那么 SELinux 或許就是一個值得考慮的緩和方案。

原文:http://linuxtoy.org/archives/selinux-introduction.html

【編輯推薦】

  1. SELinux教程:命令與管理
  2. RHEL 5上的SELinux配置
  3. SELinux簡介:Linux內核安全
責任編輯:黃丹 來源: LinuxTOY
相關推薦

2013-05-06 16:36:55

SELinuxSELinux故障

2023-11-09 08:22:38

2011-02-15 10:09:40

SELinuxRHEL5Web服務器

2021-01-29 08:00:00

服務器安全SELinux

2021-03-30 08:00:00

semanageSELinux工具

2011-01-10 16:45:45

2013-08-26 14:18:12

SELinux

2011-02-18 10:19:47

SELinux命令管理

2012-09-05 11:09:15

SELinux操作系統

2010-03-02 10:28:06

SELinux

2012-07-04 15:07:19

ibmdw

2012-05-17 15:15:11

Linux

2011-09-20 09:51:13

2022-03-02 10:13:01

SELinux開源

2012-12-31 10:01:34

SELinuxSELinux安全

2010-02-24 14:02:24

Fedora vsFT

2010-01-07 15:00:39

Redhat Ente

2010-04-12 16:01:15

2020-07-04 11:08:34

SELinuxLinux操作系統

2017-03-23 10:24:33

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线观看成人小视频 | 黄a免费网络 | 久久精品国产99国产 | 国产69精品久久99不卡免费版 | 中文字幕在线观看精品 | 日美女逼逼 | 日本不卡一区二区三区在线观看 | 91社影院在线观看 | 久久久久久亚洲欧洲 | 狠狠操狠狠操 | 99久久精品免费看国产高清 | 成人小视频在线观看 | 中文字幕视频在线观看 | 精品在线观看一区 | 视频三区 | 成人在线视频免费观看 | 日韩精品一区二区三区中文在线 | 91综合网| 亚洲自拍偷拍视频 | 精品av久久久久电影 | 亚洲欧美一区在线 | 成人性视频在线 | 在线免费av观看 | 黄网站在线观看 | 日韩福利在线 | 美女爽到呻吟久久久久 | 中文字幕亚洲一区 | 欧美一级淫片免费视频黄 | 日本成人午夜影院 | av在线黄| 自拍在线 | 久久成人一区 | 日韩午夜电影在线观看 | 亚洲一区视频 | 九九久久精品 | 亚洲欧美日韩成人在线 | 国产色网站| 91综合在线观看 | 麻豆精品一区二区三区在线观看 | 综合久久综合久久 | 国产精品一区二区久久久久 |