在架設
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>
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 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 ~ ]
$ sudo /etc/init.d/apache2 restart [Enter]
$ 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
謝謝提供!
回覆刪除