自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

系統(tǒng)管理員的SELinux指南:這個(gè)大問題的42個(gè)答案

系統(tǒng) Linux
安全、堅(jiān)固、遵從性、策略是末世中系統(tǒng)管理員的四騎士。除了我們的日常任務(wù)之外 —— 監(jiān)控、備份、實(shí)施、調(diào)優(yōu)、更新等等 —— 我們還需要負(fù)責(zé)我們的系統(tǒng)安全。

獲取有關(guān)生活、宇宙和除了有關(guān) SELinux 的重要問題的答案

“一個(gè)重要而普遍的事實(shí)是,事情并不總是你看上去的那樣 …” ―Douglas Adams,《銀河系漫游指南》

安全、堅(jiān)固、遵從性、策略是末世中系統(tǒng)管理員的四騎士。除了我們的日常任務(wù)之外 —— 監(jiān)控、備份、實(shí)施、調(diào)優(yōu)、更新等等 —— 我們還需要負(fù)責(zé)我們的系統(tǒng)安全。即使這些系統(tǒng)是第三方提供商告訴我們該禁用增強(qiáng)安全性的系統(tǒng)。這看起來像《碟中碟》中 Ethan Hunt 的工作一樣。

面對這種窘境,一些系統(tǒng)管理員決定去服用藍(lán)色小藥丸,因?yàn)樗麄冋J(rèn)為他們永遠(yuǎn)也不會知道如生命、宇宙、以及其它一些大問題的答案。而我們都知道,它的答案就是這個(gè) 42。

按《銀河系漫游指南》的精神,這里是關(guān)于在你的系統(tǒng)上管理和使用 SELinux 這個(gè)大問題的 42 個(gè)答案。

  1. SELinux 是一個(gè)標(biāo)簽系統(tǒng),這意味著每個(gè)進(jìn)程都有一個(gè)標(biāo)簽。每個(gè)文件、目錄、以及系統(tǒng)對象都有一個(gè)標(biāo)簽。策略規(guī)則負(fù)責(zé)控制標(biāo)簽化的進(jìn)程和標(biāo)簽化的對象之間的訪問。由內(nèi)核強(qiáng)制執(zhí)行這些規(guī)則。
  2. 兩個(gè)最重要的概念是:標(biāo)簽化(文件、進(jìn)程、端口等等)和類型強(qiáng)制(基于不同的類型隔離不同的的進(jìn)程)。
  3. 正確的標(biāo)簽格式是 user:role:type:level(可選)。
  4. 多級別安全Multi-Level Security(MLS)強(qiáng)制的目的是基于它們所使用數(shù)據(jù)的安全級別,對進(jìn)程(域)強(qiáng)制實(shí)施控制。比如,一個(gè)秘密級別的進(jìn)程是不能讀取極機(jī)密級別的數(shù)據(jù)。
  5. 多類別安全Multi-Category Security(MCS)強(qiáng)制相互保護(hù)相似的進(jìn)程(如虛擬機(jī)、OpenShift gears、SELinux 沙盒、容器等等)。
  6. 在啟動時(shí)改變 SELinux 模式的內(nèi)核參數(shù)有:
    • autorelabel=1 → 強(qiáng)制給系統(tǒng)重新標(biāo)簽化
    • selinux=0 → 內(nèi)核不加載 SELinux 基礎(chǔ)設(shè)施的任何部分
    • enforcing=0 → 以許可permissive模式啟動
  7. 如果給整個(gè)系統(tǒng)重新標(biāo)簽化:

    1. # touch /.autorelabel
    2. # reboot

    如果系統(tǒng)標(biāo)簽中有大量的錯(cuò)誤,為了能夠讓 autorelabel 成功,你可以用許可模式引導(dǎo)系統(tǒng)。

  8. 檢查 SELinux 是否啟用:# getenforce

  9. 臨時(shí)啟用/禁用 SELinux:# setenforce [1|0]

  10. SELinux 狀態(tài)工具:# sestatus

  11. 配置文件:/etc/selinux/config

  12. SELinux 是如何工作的?這是一個(gè)為 Apache Web Server 標(biāo)簽化的示例:

    • 二進(jìn)制文件:/usr/sbin/httpdhttpd_exec_t
    • 配置文件目錄:/etc/httpdhttpd_config_t
    • 日志文件目錄:/var/log/httpdhttpd_log_t
    • 內(nèi)容目錄:/var/www/htmlhttpd_sys_content_t
    • 啟動腳本:/usr/lib/systemd/system/httpd.servicehttpd_unit_file_d
    • 進(jìn)程:/usr/sbin/httpd -DFOREGROUNDhttpd_t
    • 端口:80/tcp, 443/tcphttpd_t, http_port_t

    httpd_t 安全上下文中運(yùn)行的一個(gè)進(jìn)程可以與具有 httpd_something_t 標(biāo)簽的對象交互。

  13. 許多命令都可以接收一個(gè) -Z 參數(shù)去查看、創(chuàng)建、和修改安全上下文:

    • ls -Z
    • id -Z
    • ps -Z
    • netstat -Z
    • cp -Z
    • mkdir -Z

    當(dāng)文件被創(chuàng)建時(shí),它們的安全上下文會根據(jù)它們父目錄的安全上下文來創(chuàng)建(可能有某些例外)。RPM 可以在安裝過程中設(shè)定安全上下文。

  14. 這里有導(dǎo)致 SELinux 出錯(cuò)的四個(gè)關(guān)鍵原因,它們將在下面的 15 - 21 條中展開描述:

    • 標(biāo)簽化問題
    • SELinux 需要知道一些東西
    • SELinux 策略或者應(yīng)用有 bug
    • 你的信息可能被損壞
  15. 標(biāo)簽化問題:如果在 /srv/myweb 中你的文件沒有被正確的標(biāo)簽化,訪問可能會被拒絕。這里有一些修復(fù)這類問題的方法:

    • 如果你知道標(biāo)簽:# semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
    • 如果你知道和它有相同標(biāo)簽的文件:# semanage fcontext -a -e /srv/myweb /var/www
    • 恢復(fù)安全上下文(對于以上兩種情況):# restorecon -vR /srv/myweb
  16. 標(biāo)簽化問題:如果你是移動了一個(gè)文件,而不是去復(fù)制它,那么這個(gè)文件將保持原始的環(huán)境。修復(fù)這類問題:

    • 使用標(biāo)簽來改變安全上下文:# chcon -t httpd_system_content_t /var/www/html/index.html
    • 使用參考文件的標(biāo)簽來改變安全上下文:# chcon --reference /var/www/html/ /var/www/html/index.html
    • 恢復(fù)安全上下文(對于以上兩種情況):# restorecon -vR /var/www/html/
  17. 如果 SELinux 需要知道 HTTPD 在 8585 端口上監(jiān)聽,使用下列命令告訴 SELinux:# semanage port -a -t http_port_t -p tcp 8585

  18. SELinux 需要知道是否允許在運(yùn)行時(shí)改變 SELinux 策略部分,而無需重寫 SELinux 策略。例如,如果希望 httpd 去發(fā)送郵件,輸入:# setsebool -P httpd_can_sendmail 1

  19. SELinux 需要知道 SELinux 設(shè)置的關(guān)閉或打開的一系列布爾值:

    • 查看所有的布爾值:# getsebool -a
    • 查看每個(gè)布爾值的描述:# semanage boolean -l
    • 設(shè)置某個(gè)布爾值:# setsebool [_boolean_] [1|0]
    • 將它配置為永久值,添加 -P 標(biāo)志。例如:# setsebool httpd_enable_ftp_server 1 -P
  20. SELinux 策略/應(yīng)用可能有 bug,包括:

    • 不尋常的代碼路徑
    • 配置
    • 重定向 stdout
    • 泄露的文件描述符
    • 可執(zhí)行內(nèi)存
    • 錯(cuò)誤構(gòu)建的庫

    開一個(gè)工單(但不要提交 Bugzilla 報(bào)告;使用 Bugzilla 沒有對應(yīng)的服務(wù))

  21. 你的信息可能被損壞了,假如你被限制在某個(gè)區(qū)域,嘗試這樣做:

    • 加載內(nèi)核模塊
    • 關(guān)閉 SELinux 的強(qiáng)制模式
    • 寫入 etc_t/shadow_t
    • 修改 iptables 規(guī)則
  22. 用于開發(fā)策略模塊的 SELinux 工具:# yum -y install setroubleshoot setroubleshoot-server。安裝完成之后重引導(dǎo)機(jī)器或重啟 auditd 服務(wù)。

  23. 使用 journalctl 去列出所有與 setroubleshoot 相關(guān)的日志:# journalctl -t setroubleshoot --since=14:20

  24. 使用 journalctl 去列出所有與特定 SELinux 標(biāo)簽相關(guān)的日志。例如:# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

  25. 當(dāng) SELinux 錯(cuò)誤發(fā)生時(shí),使用setroubleshoot 的日志,并嘗試找到某些可能的解決方法。例如:從 journalctl 中:

    1. Jun 14 19:41:07 web1 setroubleshoot: SELinux is preventing httpd from getattr access on the file /var/www/html/index.html. For complete message run: sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
    2.  
    3. # sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
    4. SELinux is preventing httpd from getattr access on the file /var/www/html/index.html.
    5.  
    6. ***** Plugin restorecon (99.5 confidence) suggests ************************
    7.  
    8. If you want to fix the label,
    9. /var/www/html/index.html default label should be httpd_syscontent_t.
    10. Then you can restorecon.
    11. Do
    12. # /sbin/restorecon -v /var/www/html/index.html
  26. 日志:SELinux 記錄的信息全在這些地方:

    • /var/log/messages
    • /var/log/audit/audit.log
    • /var/lib/setroubleshoot/setroubleshoot_database.xml
  27. 日志:在審計(jì)日志中查找 SELinux 錯(cuò)誤:# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today

  28. 針對特定的服務(wù),搜索 SELinux 的訪問向量緩存Access Vector Cache(AVC)信息:# ausearch -m avc -c httpd

  29. audit2allow 實(shí)用工具可以通過從日志中搜集有關(guān)被拒絕的操作,然后生成 SELinux 策略允許的規(guī)則,例如:

    • 產(chǎn)生一個(gè)人類可讀的關(guān)于為什么拒絕訪問的描述:# audit2allow -w -a
    • 查看允許被拒絕的類型強(qiáng)制規(guī)則:# audit2allow -a
    • 創(chuàng)建一個(gè)自定義模塊:# audit2allow -a -M mypolicy,其中 -M 選項(xiàng)將創(chuàng)建一個(gè)特定名稱的強(qiáng)制類型文件(.te),并編譯這個(gè)規(guī)則到一個(gè)策略包(.pp)中:mypolicy.pp mypolicy.te
    • 安裝自定義模塊:# semodule -i mypolicy.pp
  30. 配置單個(gè)進(jìn)程(域)運(yùn)行在許可模式:# semanage permissive -a httpd_t

  31. 如果不再希望一個(gè)域在許可模式中:# semanage permissive -d httpd_t

  32. 禁用所有的許可域:# semodule -d permissivedomains

  33. 啟用 SELinux MLS 策略:# yum install selinux-policy-mls。 在 /etc/selinux/config 中:

    1. SELINUX=permissive
    2. SELINUXTYPE=mls

    確保 SELinux 運(yùn)行在許可模式:# setenforce 0

    使用 fixfiles 腳本來確保在下一次重啟時(shí)文件將被重新標(biāo)簽化:# fixfiles -F onboot # reboot

  34. 創(chuàng)建一個(gè)帶有特定 MLS 范圍的用戶:# useradd -Z staff_u john

    使用 useradd 命令,映射新用戶到一個(gè)已存在的 SELinux 用戶(上面例子中是 staff_u)。

  35. 查看 SELinux 和 Linux 用戶之間的映射:# semanage login -l

  36. 為用戶定義一個(gè)指定的范圍:# semanage login --modify --range s2:c100 john

  37. 調(diào)整用戶家目錄上的標(biāo)簽(如果需要的話):# chcon -R -l s2:c100 /home/john

  38. 列出當(dāng)前類別:# chcat -L

  39. 修改類別或者創(chuàng)建你自己的分類,修改如下文件:/etc/selinux/_<selinuxtype>_/setrans.conf

  40. 以某個(gè)特定的文件、角色和用戶安全上下文來運(yùn)行一個(gè)命令或者腳本:# runcon -t initrc_t -r system_r -u user_u yourcommandhere

    • -t 是文件安全上下文
    • -r 是角色安全上下文
    • -u 是用戶安全上下文
  41. 在容器中禁用 SELinux:

    • 使用 Podman:# podman run --security-opt label=disable ...
    • 使用 Docker:# docker run --security-opt label=disable ...
  42. 如果需要給容器提供完全訪問系統(tǒng)的權(quán)限:

    • 使用 Podman:# podman run --privileged ...
    • 使用 Docker:# docker run --privileged ...

 

就這些了,你已經(jīng)知道了答案。因此請相信我:不用恐慌,去打開 SELinux 吧。

【責(zé)任編輯:龐桂玉 TEL:(010)68476606】

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2018-08-01 08:12:34

Linux管理員網(wǎng)絡(luò)管理

2018-08-15 14:00:18

LinuxBash系統(tǒng)管理員

2019-08-13 19:34:45

容器鏡像DockerLinux

2013-03-30 21:59:13

系統(tǒng)管理員必備工具iftop

2018-10-10 10:37:03

2010-04-12 09:33:58

系統(tǒng)管理員

2013-06-26 09:29:30

系統(tǒng)管理員

2013-09-29 09:50:21

系統(tǒng)管理員Ubuntu JujuJuju

2022-11-28 10:12:57

系統(tǒng)systemd

2019-12-16 09:43:23

系統(tǒng)管理員面試

2010-05-07 16:35:44

2011-06-16 09:35:28

系統(tǒng)管理員iPad應(yīng)用

2010-12-27 17:40:31

2010-08-10 09:13:52

Unix系統(tǒng)管理員Ubuntu

2010-05-06 18:07:33

Unix命令

2010-08-11 17:11:15

2019-09-09 14:45:29

系統(tǒng)管理員SRE

2010-05-10 18:28:11

Unix系統(tǒng)

2012-11-01 11:33:11

IBMdw

2015-07-13 14:06:00

系統(tǒng)管理容器技術(shù)Docker
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號