Nginxauth_basic+phpMyAdmin安全驗證

技術小牛人發表於2017-11-07

phpMyAdmin 是一個以 PHP 為基礎,以 Web-Base 方式架構在網站主機上的 MySQL 的資料庫管理工具,讓管理者可用 Web 介面管理 MySQL 資料庫。

通過 Nginx auth_basic 驗證功能,可以為 phpMyAdmin 目錄增加使用者名稱,密碼驗證機制。防止任意使用者訪問 phpMyAdmin(0day 我怕怕!)。

nginx_auth.gif

 

一,使用 htpasswd 命令生成密碼檔案,支援語法如下:

/usr/bin/htpasswd -c passwordfile username

二,舉例:生成一個 reistlin.passwd 密碼檔案,使用者名稱 admin,密碼 ***

/usr/bin/htpasswd -c /etc/nginx/conf/reistlin.passwd admin

New password: ***
Re-type new password: ***

Adding password for user admin

# 注意,密碼檔案訪問許可權
chmod 600 reistlin.passwd

三,編輯 nginx.conf,配置 auth_basic,配置 reistlin.passwd 密碼檔案路徑,配置訪問策略和請求限制

配置說明:

1,需要在 http {} 中啟用 HttpLimitReqModule,定義一個 zone(admin),session state 設定為 1M(僅用於 auth_basic 安全驗證),每分鐘 3 次(20 秒一次),“來源 IP 地址”為判斷條件。

2,需要在 location {} 中定義 auth_basic 安全驗證提示資訊,指定密碼檔案路徑。啟用 admin zone,設定安全驗證請求限制(每分鐘 20 次,每次最多接受 3 個請求,超過的請求將被 503 Service Unavailable)。

# http
limit_req_zone  $binary_remote_addr  zone=admin:1m  rate=3r/m;

# location
location /phpMyAdmin/ {
        root   /home/reistlin/htdocs;
        index  index.html  index.htm  index.php;
        auth_basic  "Administrator Login";
        auth_basic_user_file  /etc/nginx/conf/reistlin.passwd;

        limit_req  zone=admin  burst=3;
}

四,驗證配置檔案,Reload Nginx 配置


kill -HUP `cat /etc/nginx/logs/nginx.pid`

本文轉自 geekwolf 51CTO部落格,原文連結:
http://blog.51cto.com/linuxgeek/1033257


相關文章