Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Apache 目錄密碼保護完整設定:htpasswd 建立帳號、.htaccess 存取控制與 httpd.conf AllowOverride 設定

編輯:Linux 教學

核心架構

Apache 目錄級存取控制需三個要素:

  1. 密碼檔:htpasswd 產生,儲存帳號與雜湊密碼。
  2. 存取規則檔:目錄下的 .htaccess,定義驗證方式與允許名單。
  3. 主設定允許:httpd.conf 需設定 AllowOverride AuthConfig 才讀取 .htaccess。

案例一:單一使用者存取

1. 建立密碼檔

htpasswd -c /data/httpd/secr/.htpasswd user1
# 輸入密碼兩次,-c 為建立新檔(後續新增用戶勿加 -c)

2. 建立 .htaccess

vi /var/www/html/private/.htaccess
# 內容:
AuthName "My Private Area"
AuthType Basic
AuthUserFile /data/httpd/secr/.htpasswd
Require user user1

3. 設定檔案權限

chmod 644 /data/httpd/secr/.htpasswd /var/www/html/private/.htaccess
# 確保 Apache 執行身分(www-data/httpd)可讀取

4. 修改 httpd.conf

vi /etc/httpd/conf/httpd.conf
# 找到對應  區塊或新增:

    Options Indexes FollowSymLinks
    AllowOverride AuthConfig
    Require all granted

重新載入 Apache:systemctl reload httpd 或 apachectl graceful。

案例二:群組存取控制

1. 建立多用戶密碼檔

htpasswd /home/httpd/secr/.htpasswd m1   # 輸入 m1pass
htpasswd /home/httpd/secr/.htpasswd m2   # 輸入 m2pass

2. 建立群組檔 .htgroup

vi /home/httpd/secr/.htgroup
# 內容:
myfriends: m1 m2

3. 修改 .htaccess 使用群組驗證

vi /home/httpd/html/backup/.htaccess
AuthName "My Friends Only"
AuthType Basic
AuthUserFile /home/httpd/secr/.htpasswd
AuthGroupFile /home/httpd/secr/.htgroup
Require group myfriends

進階:使用 DBM/DBD 加速大量用戶

用戶超過數百時,文字檔查找緩慢。可用 htdbm 建立資料庫:

htdbm -c -T db /data/httpd/secr/users.dbm user1
# .htaccess 改用:
AuthBasicProvider dbm
AuthDBMUserFile /data/httpd/secr/users.dbm

安全強化建議

  • 密碼檔放在 DocumentRoot 之外,防止直接下載。
  • 啟用 HTTPS(SSL/TLS),避免 Basic Auth 密碼以明文傳輸(Base64 易解碼)。
  • 考慮改用 Digest Auth(AuthType Digest、htdigest),密碼不以明文/基礎編碼傳輸。
  • 限制失敗嘗試次數:搭配 mod_evasive 或 fail2ban 封鎖 IP。

常見問題

  • 500 Internal Server Error:檢查 AllowOverride 是否設定、.htaccess 語法、檔案路徑權限。
  • 驗證視窗重複彈出:密碼錯誤、AuthUserFile 路徑錯誤、Apache 無讀取權限。
  • 群組不生效:確認 AuthGroupFile 路徑、群組檔格式(冒號分隔、成員以空格分隔)。
Copyright © Windows教程網 All Rights Reserved