設置防火牆、SELinux 和基本 ACL 規則
1. 第一步:安裝與設定防火牆
嗨!今天我們來點實戰,把你學到的 Linux 安全知識應用起來。我們會設定防火牆、檢查 SELinux 的運作,並了解用 ACL 管理檔案存取的便利性。這個講座是你的「練兵場」。現在是時候戴上我們的管理「安全肩章」開始行動了!
你已經知道,好的防火牆就像是門口的警衛。他決定誰可以進來,誰要被拒之門外。首先,我們會設定系統的防護,限制只有 SSH 和 HTTP 服務能被存取。
使用 UFW
檢查 UFW 狀態。 未安裝?那我們就來安裝吧!
# 檢查 UFW sudo ufw status
安裝並啟動 UFW。
# 安裝 (如果需要) sudo apt install ufw # 啟動防火牆 sudo ufw enable
設定存取權限。 我們只想允許 SSH (埠 22) 和 HTTP (埠 80),封鎖其他一切。邏輯很簡單:服務器可不是什麼三星級酒店,能讓所有人進來。
# 允許 SSH sudo ufw allow 22 # 允許 HTTP sudo ufw allow 80 # 檢查設定 sudo ufw status
檢查結果: 設定完成後,應該會看到類似以下內容:
Status: active To Action From -- ------ ---- 22 ALLOW Anywhere 80 ALLOW Anywhere
如果指令顯示「防火牆已關閉」,那就要修正這個問題。
如果你使用 iptables
,設定會稍微複雜一些,但邏輯相同:為 SSH 和 HTTP 創建規則,其他一律封鎖。
2. 第二步:使用 SELinux
SELinux 就像一個嚴格的老師,監管著伺服器上的檔案和使用者行為。它的座右銘是:「信任,但要驗證」。那我們開啟 SELinux,試試看它的效果吧。
啟用 SELinux
檢查當前狀態:
# 看看 SELinux 是否已啟用 sestatus
如果顯示的模式是
disabled
,則需要透過配置檔案來啟用它。透過配置啟用 SELinux:
SELinux 的設定檔位於
/etc/selinux/config
路徑。用文字編輯器(比如nano
)開啟它。sudo nano /etc/selinux/config
找到這行:
SELINUX=disabled
替換成:
SELINUX=enforcing
存檔,然後重新啟動系統以使更改生效:
sudo reboot
重啟後檢查。
伺服器重啟後,再次檢查 SELinux 狀態:
getenforce
如果系統返回 Enforcing,恭喜你,現在你守護著安全環境!
SELinux 與網頁伺服器的示例
假設你有一個網頁伺服器,儲存檔案在目錄 /var/www/html
。來看看 SELinux 是如何保護它的。
檢視檔案的上下文: 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
檢查網頁伺服器的運行狀況: 完成上下文設置後,檢查你的伺服器是否正常運行,並確認無存取錯誤。
3. 第三步:透過 ACL 管理權限
ACL (Access Control List) 就像是用來管理訪問的「額外鑰匙」。當標準權限 rwx
不夠時,ACL 允許你微調特定用戶的訪問權限。
創建測試目錄
我們來創建目錄 project_dir
,並為兩個用戶 user1
和 user2
設置訪問權限。
創建目錄:
sudo mkdir /project_dir
設置訪問權限:
讓我們允許
user1
擁有完整訪問權限,而user2
只能讀取:# user1 擁有完整訪問權限 sudo setfacl -m u:user1:rwx /project_dir # user2 只能讀取 sudo setfacl -m u:user2:r-- /project_dir
檢查 ACL:
# 檢查當前權限 getfacl /project_dir
輸出應顯示出你的設置:
# file: /project_dir user::rwx user:user1:rwx user:user2:r--
設置默認權限:
為了讓目錄中的所有新文件自動繼承 ACL 權限,我們設置默認權限:
sudo setfacl -d -m u:user1:rwx /project_dir sudo setfacl -d -m u:user2:r-- /project_dir
4. 檢查最終配置
防火牆:
- 確保 SSH 和 HTTP 的連接埠是開放的,其他被封鎖。試著通過 SSH 連接伺服器並在瀏覽器中打開網站。
SELinux:
- 檢查檔案的 context,確保 SELinux 正確地限制了存取權。
ACL:
- 使用
user1
和user2
登入,試著讀寫/project_dir
目錄中的檔案。
- 使用
實作練習
- 設定防火牆,只允許 SSH 和 HTTP 連接。
- 將 SELinux 啟用為
enforcing
模式,並確保 web 伺服器正常運行。 - 設定
/project_dir
的 ACL,讓user1
擁有全部權限,而user2
僅有讀取權限。 - 使用命令
who
檢查系統中活躍的使用者。
這些練習能幫助你鞏固知識並理解如何在實際中應用。同時記住:Linux 的安全性不僅是配置,而是對細節的持續關注。加油!
GO TO FULL VERSION