限制 phpMyAdmin 存取 IP on Debian 6
在架設 LAMP 環境時,剛入門 MySQL 的凍仁都會順手裝上 phpMyAdmin,來管理資料庫,但這是個壞習慣,尤其是對已經上線的機器而言!若沒做好防護,就會敞開大門讓怪客 (cracker) 有機可乘!不過我們可以透過只允許特定 IP 連線來達到防護效果,以下將分別列出 Apache 以及 Nginx 的設定。
1. 環境設定
- 作業系統:Debian 6 stable (squeeze)。
- phpMyAdmin 路徑:/usr/share/phpmyadmin。
- 允許 IP:192.168.1.1。
- 允許 IP 範圍:192.168.2.1 ~ 192.168.2.254。
2. 設定檔修改
2.1. Apache
[ jonny@squeeze ~ ]
$ sudo vi /etc/phpmyadmin/apache.conf [Enter]
Alias /phpmyadmin/ "/usr/share/phpmyadmin/" Alias /phpMyAdmin/ "/usr/share/phpmyadmin/" <Directory "/usr/share/phpmyadmin"> Options -Indexes FollowSymLinks AllowOverride All Order deny,allow Deny from all Allow from 192.168.1.1 Allow from 192.168.2.0/24 ErrorDocument 403 ok RewriteEngine On </Directory> # Windows 上的 AppServ 預設路徑為 "C:/AppServ/www/phpMyAdmin"。
2.2. Nginx
[ jonny@squeeze ~ ]
$ sudo vi /etc/nginx/nginx.conf [Enter]
server { location /phpmyadmin { allow 192.168.1.1; allow 192.168.2.0/24; deny all; root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; #fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/$fastcgi_script_name; include /etc/nginx/fastcgi_params; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } }
3. 重啟服務
設定檔修改後需重新啟動該服務才會生效。[ jonny@squeeze ~ ]
# Apache.
$ sudo /etc/init.d/apache2 restart [Enter]
# Nginx.
$ sudo /etc/init.d/nginx restart [Enter]
相關連結:
★ phpMyAdmin.net
★ .htaccess generator to Restrict/Allow by IP address
資料來源:
★ Apache 的 Order Allow, Deny 詳解 - IT客
★ HttpAccessModule - Nginx.org
謝謝提供!
回覆刪除allow 192.168.1.1;
回覆刪除allow 192.168.2.0/24;
nginx 設定的地方,少了結束符號 ; 。
已在 Nginx 部份的這兩行後,補上;,感謝偵錯。<[_ _]>
刪除```
$ git diff
diff --git a/nginx.conf b/nginx.conf
index ec7427d..a70e055 100644
--- a/nginx.conf
+++ b/nginx.conf
@@ -1,7 +1,7 @@
server {
location /phpmyadmin {
- allow 192.168.1.1
- allow 192.168.2.0/24
+ allow 192.168.1.1;
+ allow 192.168.2.0/24;
deny all;
root /usr/share/;
index index.php index.html index.htm;
```