日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

安全增強式 linux,即SELINUX(Security-Enhanced Linux)是一個 Linux 內核的安全模塊,其提供了訪問控制安全策略機制,包括了強制訪問控制(Mandatory Access Control,mac)。SELinux 是一組內核修改和用戶空間工具,已經被添加到各種 Linux 發行版中。其軟件架構力圖將安全決策的執行與安全策略分離,并簡化涉及執行安全策略的軟件的數量。


 

Linux安全之SELinux理解

1. SELinux 介紹

安全增強式 Linux(SELinux)是一種強制訪問控制的實現。它的作法是以最小權限原則為基礎,在 Linux 核心中使用 Linux 安全模塊。它并非一個 Linux 發行版,而是一組可以應用在類 Unix 操作系統(如 Linux、BSD 等)的修改。 SELinux 更能遵從最小權限的理念安全增強式SELinux是一個在內核中實踐的強制訪問控制安全性機制

 


 

Linux安全之SELinux理解

兩種訪問控制

 

  • DAC:自主訪問控制
  • MAC:強制訪問控制

 

SELinux有兩種工作級別

 

  • strict: 每個進程都受到 selinux 的控制
  • targeted: 僅有限個進程受到 selinux 控制,只監控容易被入侵的進程
1.1 為什么需要 SELinux

 

在未啟用 SELinux 的情況下,要控制用戶的文件訪問權,唯有通過酌情訪問控制(DAC)方法如文件權限訪問控制清單(ACL)。不論用戶或程序都可以將不安全的文件權限賦予其它人,或反過來訪問系統在正常運作下無須訪問的部份。舉個例說:

 

  • 管理員不能控制用戶:用戶可以把誰都可讀入的權限賦予敏感文件,例如 ssh 金鑰及慣常用來放置這些金鑰的目錄,~/.ssh/。
  • 進程可以更改安全性屬性:每位用戶的郵件文件應該只供該用戶讀入,但郵件客戶端軟件有能力將它們改為誰都可讀入。
  • 進程繼承用戶的權限:假若 Firefox 被木馬程序所占用,它可能會閱讀用戶的私人 ssh 金鑰,盡管它沒有理由如此做。

 

基本上在傳統 DAC 模式只在兩個權限級別,root用戶,而當中不能簡易地實施最小權限的理念。很多由 root 引導 1 的進程在后期會撇除它們的權限并以受限制的用戶身份來運行,有些則會在 chroot 的情況下執行,但這些安全措施都是酌情的。

1.2 解決方案

SELinux 更能遵從最小權限的理念。在缺省的 enforcing 情況下,一切均被拒絕,接著有一系列例外的政策來允許系統的每個元素(服務、程序、用戶)運作時所需的訪問權。當一項服務、程序或用戶嘗試訪問或修改一個它不須用的文件或資源時,它的請求會遭拒絕,而這個行動會被記錄下來。

由于 SELinux 是在內核中實踐的,應用程序無須被特別編寫或重寫便可以采用 SELinux。當然,如果一個程序特別留意稍后所提及的 SELinux 錯誤碼,它的運作可能會更暢順。

理論上,下列樣例方案可提供更高安全度:

 

  • 局限只有某些獲授權的程序可讀入用戶的 ~/.ssh/ 目錄
  • 防止派發郵件程序更改擁有群組、群組設置或其它讀檔權限
  • 阻止瀏覧器讀入用戶的主目錄
2. SELinux 的操作2.1 SELinux 的三種模式

 

SELinux 擁有三個基本的操作模式,當中 Enforcing 是缺省的模式。

 

  • Enforcing這個缺省模式會在系統上啟用并實施 SELinux 的安全性政策,拒絕訪問及記錄行動
  • Permissive在 Permissive 模式下,SELinux 會被啟用但不會實施安全性政策,而只會發出警告及記錄行動。Permissive 模式在排除 SELinux 的問題時很有用
  • DisabledSELinux 已被停用

 

SELinux 的模式可以通過 Adminstration 選單里的 SELinux 圖像管理界面、或者在命令行執行 system-config-selinux 來查看及更改(SELinux 圖像管理界面是 policycoreutils-gui 組件的一部份,缺省是不會被安裝的)。

2.2 獲取當前 SELinux 運行狀態

sestatus 命令

# sestatus SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 21 Policy from config file: targeted

getenforce 命令

 

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

 

# getenforce Disabled2.3 改變 SELinux 運行狀態

臨時修改

 

  • setenforce命令setenforce [ Enforcing | Permissive | 1 | 0 ]
  • 注意事項該命令可以立刻改變 SELinux 運行狀態,在 Enforcing 和 Permissive 之間切換,結果保持至關機。若是在 setenforce 0 之后服務或者程序依然無法運行,那么就可以肯定不是 SELinux 導致的。

 

# 強制訪問控制 setenforce 1 # 自主訪問控制 setenforce 0

永久修改

 

  • 修改配置文件/etc/sysconfig/selinux或者/etc/selinux/config
  • SELINUX=disabled為主開關,只有它打開了,設定訪問控制才有意義

 

# cat /etc/sysconfig/selinux # 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=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted2.4 布爾型規則

因為在SELinux中有些類型沒有被啟動或者你需要關閉某些類型,這個時候你就需要使用下列命令來修改SELinux的類型了

 

獲取類型狀態

 

  • getsebool命令:
  • 語法:getsebool [-a] [boolean]

 

# 獲取所以類型及其運行狀態 getsebool -a # 獲取某個類型及其運行狀態 getsebool httpd_t

修改類型狀態

 

  • setsebool命令:
  • 語法:setsebool [ -P] boolean value | bool1=val1 bool2=val2 ...

 

# 臨時修改 setsebool httpd_t 1 # 永久修改 setsebool -P httpd_t 13. SELinux 政策

配置文件 /etc/sysconfig/selinux 還包含了 SELinux 運行策略的信息,通過改變變量 SELINUXTYPE 的值實現。

兩種策略

 

  • targeted 代表僅針對預制的幾種網絡服務和訪問請求使用 SELinux 保護
  • strict 代表所有網絡服務和訪問請求都要經過 SELinux

 

注意事項

 

  • 可以在/etc/sysconfig/selinux中對其進行修改
  • RHELFedora默認設置為 targeted,包含了對幾乎所有常見網絡服務的 SELinux 策略配置,已經默認安裝并且可以無需修改直接使用。

 

# cat /etc/sysconfig/selinux # 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=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=strict4. SELinux 訪問控制4.1 三種訪問控制方法

  • 強制類型(TE)TE 是針對型政策所采用的主要訪問控制機制
  • 基于?色的訪問控制(RBAC)它以 SELinux 用戶(未必等同 Linux 用戶)為基礎,但缺省的針對型政策并未采用它
  • 多層保障(MLS)普遍不獲采用,而且經常隱藏在缺省的針對型政策內
4.2 訪問控制規則解析

 

所有進程及文件都擁有一個 SELinux 的安全性脈絡,我們這里查看 Apache 的主頁,來看看 SELinux 安全性脈絡來看看它們如何運作的。

# 查看 Apache 的主頁 # -Z 這個標旗在多數工具內都可用來顯示 SELinux 安全性脈絡(例如:ls -Z、 ps axZ 等) # ls -Z /var/www/html/index.html -rw-r--r-- username username system_u:object_r:httpd_sys_content_t /var/www/html/index.html

SELinux 脈絡欄

 

  • system_u:object_r:httpd_sys_content_t基于「用戶:角色:類型:多層保障」在上述例子里,「用戶:角色:類型」欄都有顯示,而「多層保障」是隱藏的在缺省的針對型政策里,類型是用來實施「強制類型」的重要字段,在這里它是 httpd_sys_content_t
  • httpd進程的 SELinux 安全性脈絡從類型欄可以看出 Apache 在 httpd_t 這個類型本地內運行

 

# ps axZ | grep httpd system_u:system_r:httpd_t 3234 ? Ss 0:00 /usr/sbin/httpd

SELinux 安全機制

 

  • 唯有相似的類型才可互相訪問,因此以 httpd_t 運行的 Apache 可以讀入擁有 httpd_sys_content_t 類型的 /var/www/html/index.html
  • 由于 Apache 在 httpd_t 這個本地內運行但不屬 username 這個用戶,縱使 /home/username/myfile.txt 可供任何人讀入,Apache 卻不能訪問該文件,因為它的 SELinux 安全性脈絡并不是 httpd_t 類型
  • 倘若 Apache 被人占用,又假設它仍未取得更改 SELinux 標簽至另一個脈絡的 root 權限,它將會不能引導 httpd_t 本地外的進程(藉此防止權限升級),或訪問與 httpd_t 本地不相關的文件
5. 排除 SELinux 疑難5.1 SELinux 拒接訪問原因

 

SELinux 拒絕某個文件、進程或資源被訪問的基要原因

 

  • 一個被錯誤標簽的文件
  • 一個進程在錯誤的 SELinux 安全性脈絡下運行
  • 政策出錯,某個進程要訪問一個在編寫政策時意料不到的文件,并產生錯誤信息
  • 一個入侵的企圖

 

日志分析

 

  • 日志檔是排除任何疑難的關鍵,而 SELinux 亦不例外
  • SELinux 缺省會通過 Linux 審計系統 auditd 將日志寫在 /var/log/audit/audit.log 內,而該務服缺省為啟用的
  • 假若 auditd 長駐程序并未運行,信息將會被寫進 /var/log/messages
  • SELinux 的日志都以 AVC 這個關鍵字作標簽,讓 grep 等程序可輕易地把它們從其它信息中過濾出來。

 

日志分析工具

 

  • 用 SELinux排除疑難工具協助你分析日志檔,將它們轉換為供人閱讀的格式
  • SELinux 排除疑難工具是由 setroubleshoot 組件所提供的
  • 這個工具包含一個以可讀格式顯示信息及解決方案的圖像界面、一個桌面通報圖示、與及一個長駐進程,setroubleshootd,它負責查閱新的 SELinux AVC 警告并傳送至通報圖示

 

# 這個工具可以從 X 窗口圖像管理員的「系統」選單或從命令行引導 sealert -b # 不運行 X 服務器的人可以通過命令行產生供人閱讀的報告 sealert -a /var/log/audit/audit.log > /path/to/mylogfile.txt5.2 重新標簽文件

chcon: 這個指令可以用來更改一個或多個文件與目錄的 SELinux 安全性脈絡,正如 chown 或 chmod 可以用來更改一個文件的擁有者或標準權限。

 

語法

 

  • chcon [OPTION]... CONTEXT FILE...
  • chcon [OPTION]... [-u USER] [-r ROLE] [-t TYPE] FILE...
  • chcon [OPTION]... --reference=RFILE FILE...

 

選項

 

  • -R:遞歸打標

 

舉例

 

  • chcon -t httpd_sys_content_t index.html

 

實戰演示

# 就以Apache為例,假設你想修改DocumentRoot以另一個位置來伺服網頁,替換缺省的/var/www/html #目錄。譬如說我們在 /html 創建了一個目錄(又或者掛載點),然后在那里創建一個 index.html文檔: mkdir /html touch /html/index.html # 查看selinux屬性信息 # ls -Z /html/index.html -rw-r--r-- root root user_u:object_r:default_t /html/index.html # ls -Z | grep html drwxr-xr-x root root user_u:object_r:default_t html # 我們可以見到/html這個目錄以及/html/index.html這個文件都擁有缺省的default_t安全性脈絡類型。 # 如果我們打開瀏覽器并嘗試查看該頁,SELinux 將會正確地拒絕它們被訪問并記錄錯誤,因為該目錄與文 # 件擁有不正確的安全性脈絡。我們須要設置供 Apache 使用的 httpd_sys_content_t 正確安全性脈絡。 # chcon -v --type=httpd_sys_content_t /html context of /html changed to user_u:object_r:httpd_sys_content_t # chcon -v --type=httpd_sys_content_t /html/index.html context of /html/index.html changed to user_u:object_r:httpd_sys_content_t # ls -Z /html/index.html -rw-r--r-- root root user_u:object_r:httpd_sys_content_t /html/index.html # ls -Z | grep html drwxr-xr-x root root user_u:object_r:httpd_sys_content_t html # 我們同樣也可以利用 -R 這個回遞標旗同時將它們的脈絡設置: chcon -Rv --type=httpd_sys_content_t /html # 以這個方式更改安全性脈絡在系統重新開機后仍會獲保留,直至該部份文件系統被重新標簽。 # 這個動作也算頗常,因此正確的解決方法,就是于測試后編寫一條自定的規則,并把它與本地 # 的規則進行合并。它將會是原有的 200 多條規則外的一條規則。要作出永久性、能過渡文件 # 系統重新標簽的安全性脈絡改動,我們采用SELinux管理工具,或者在命令行執行semanage指令。 semanage fcontext -a -t httpd_sys_content_t "/html(/.*)?" # 如此便會將 /html 以下的一切加入 httpd_sys_content_t 這個文件脈絡類型。5.3 撤消缺省的安全性脈絡

restorecon: 這個指令可以用來撤消為文件缺省的安全性脈絡

 

語法

 

  • restorecon [-R] /path/to/somewhere

 

選項

 

  • -R:遞歸撤標

 

實戰演示

# 讓我們再次以 Apache 作為樣例。設假有位用戶在他的主目錄內編輯了一個index.html檔并將該文件 # 遷移(mv)至 DocumentRoot 的 /var/www/html 內。縱使復制(cp)這個指令普遍會沿用目標目 # 錄或文件的安全性脈絡,遷移(mv)指令則會保留源文件的安全性脈絡。我們可以利用 chcon 這個指令 # 來更改問題文件的安全性脈絡,但由于這些文件已經位于 Apache 缺省的 DocumentRoot內,我們只 # 須撤消這個目錄或文件的安全性脈絡便成了。要單單撤消 index.html 檔的脈絡,我們可以利用。 restorecon -v /var/www/html/index.html # 如果要以回遞的方式撤消整個目錄的缺省安全性脈絡 restorecon -Rv /var/www/html # 除此之外,如果我們只想檢查/var/www/html目錄內有哪些文件的安全性脈絡需要被撤消 # 我們在采用 restorecon 時可以應用 -n 這個標旗來防止重新標簽的行動 restorecon -Rv -n /var/www/html6. 參考鏈接

送人玫瑰,手有余香!
  • SELinux 入門
  • centos Selinux 講解

 

文章作者:Escape

文章鏈接:https://www.escapelife.site/posts/639ee49c.htm

分享到:
標簽:SELinux
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定