CodeGym /Adesua ahorow /Docker SELF /設置防火牆、SELinux 和基本 ACL 規則

設置防火牆、SELinux 和基本 ACL 規則

Docker SELF
等級 5 , 課堂 5
開放

設置防火牆、SELinux 和基本 ACL 規則

1. 第一步:安裝與設定防火牆

嗨!今天我們來點實戰,把你學到的 Linux 安全知識應用起來。我們會設定防火牆、檢查 SELinux 的運作,並了解用 ACL 管理檔案存取的便利性。這個講座是你的「練兵場」。現在是時候戴上我們的管理「安全肩章」開始行動了!

你已經知道,好的防火牆就像是門口的警衛。他決定誰可以進來,誰要被拒之門外。首先,我們會設定系統的防護,限制只有 SSH 和 HTTP 服務能被存取。

使用 UFW

  1. 檢查 UFW 狀態。 未安裝?那我們就來安裝吧!

    # 檢查 UFW
    sudo ufw status
  2. 如果指令顯示「防火牆已關閉」,那就要修正這個問題。

  3. 安裝並啟動 UFW。

    # 安裝 (如果需要)
    sudo apt install ufw
    
    # 啟動防火牆
    sudo ufw enable
  4. 設定存取權限。 我們只想允許 SSH (埠 22) 和 HTTP (埠 80),封鎖其他一切。邏輯很簡單:服務器可不是什麼三星級酒店,能讓所有人進來。

    # 允許 SSH
    sudo ufw allow 22
    
    # 允許 HTTP
    sudo ufw allow 80
    
    # 檢查設定
    sudo ufw status
  5. 檢查結果: 設定完成後,應該會看到類似以下內容:

    Status: active
    To                         Action      From
    --                         ------      ----
    22                         ALLOW       Anywhere
    80                         ALLOW       Anywhere
    

如果你使用 iptables,設定會稍微複雜一些,但邏輯相同:為 SSH 和 HTTP 創建規則,其他一律封鎖。


2. 第二步:使用 SELinux

SELinux 就像一個嚴格的老師,監管著伺服器上的檔案和使用者行為。它的座右銘是:「信任,但要驗證」。那我們開啟 SELinux,試試看它的效果吧。

啟用 SELinux

  1. 檢查當前狀態:

    # 看看 SELinux 是否已啟用
    sestatus

    如果顯示的模式是 disabled,則需要透過配置檔案來啟用它。

  2. 透過配置啟用 SELinux:

    SELinux 的設定檔位於 /etc/selinux/config 路徑。用文字編輯器(比如 nano)開啟它。

    sudo nano /etc/selinux/config
    

    找到這行:

    SELINUX=disabled
    

    替換成:

    SELINUX=enforcing
    

    存檔,然後重新啟動系統以使更改生效:

    sudo reboot
    
  3. 重啟後檢查。

    伺服器重啟後,再次檢查 SELinux 狀態:

    getenforce
    

    如果系統返回 Enforcing,恭喜你,現在你守護著安全環境!


SELinux 與網頁伺服器的示例

假設你有一個網頁伺服器,儲存檔案在目錄 /var/www/html。來看看 SELinux 是如何保護它的。

  1. 檢視檔案的上下文: SELinux 使用上下文來管理存取。我們來看一下目錄 /var/www/html 的上下文。

    ls -Z /var/www/html
    

    輸出示例:

    drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html
    

    若有什麼不對,可以暫時修改上下文:

    sudo chcon -t httpd_sys_content_t /var/www/html
    
  2. 檢查網頁伺服器的運行狀況: 完成上下文設置後,檢查你的伺服器是否正常運行,並確認無存取錯誤。


3. 第三步:透過 ACL 管理權限

ACL (Access Control List) 就像是用來管理訪問的「額外鑰匙」。當標準權限 rwx 不夠時,ACL 允許你微調特定用戶的訪問權限。

創建測試目錄

我們來創建目錄 project_dir,並為兩個用戶 user1user2 設置訪問權限。

  1. 創建目錄:

    sudo mkdir /project_dir
    
  2. 設置訪問權限:

    讓我們允許 user1 擁有完整訪問權限,而 user2 只能讀取:

    # user1 擁有完整訪問權限
    sudo setfacl -m u:user1:rwx /project_dir
    
    # user2 只能讀取
    sudo setfacl -m u:user2:r-- /project_dir
  3. 檢查 ACL:

    # 檢查當前權限
    getfacl /project_dir

    輸出應顯示出你的設置:

    # file: /project_dir
    user::rwx
    user:user1:rwx
    user:user2:r--
  4. 設置默認權限:

    為了讓目錄中的所有新文件自動繼承 ACL 權限,我們設置默認權限:

    sudo setfacl -d -m u:user1:rwx /project_dir
    sudo setfacl -d -m u:user2:r-- /project_dir
    

4. 檢查最終配置

  1. 防火牆:

    • 確保 SSH 和 HTTP 的連接埠是開放的,其他被封鎖。試著通過 SSH 連接伺服器並在瀏覽器中打開網站。
  2. SELinux:

    • 檢查檔案的 context,確保 SELinux 正確地限制了存取權。
  3. ACL:

    • 使用 user1user2 登入,試著讀寫 /project_dir 目錄中的檔案。

實作練習

  1. 設定防火牆,只允許 SSH 和 HTTP 連接。
  2. 將 SELinux 啟用為 enforcing 模式,並確保 web 伺服器正常運行。
  3. 設定 /project_dir 的 ACL,讓 user1 擁有全部權限,而 user2 僅有讀取權限。
  4. 使用命令 who 檢查系統中活躍的使用者。

這些練習能幫助你鞏固知識並理解如何在實際中應用。同時記住:Linux 的安全性不僅是配置,而是對細節的持續關注。加油!

1
Опрос
在 Linux 中管理用戶,  5 уровень,  5 лекция
недоступен
在 Linux 中管理用戶
在 Linux 中管理用戶
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION