Phpmyadminを見つけようとする私のウェブサイトへの奇妙なリクエストがあることに気づきました。
/phpmyadmin/
/pma/
等.
Aptを介してUbuntuにPMAをインストールしました。/phpmyadmin/とは異なるwebaddressを使用してPMAにアクセスしたいと思います。変更するにはどうすればよいですか?
ありがとう
更新
Ubuntu 9.10およびApache2の場合、対応する設定は/etc/Apache2/conf.d/phpmyadmin.conf
へのリンクである/etc/phpmyadmin/Apache.conf
ファイルにあります。ファイルには
Alias /phpmyadmin /usr/share/phpmyadmin
不要なアクティビティを回避したい場合は、最初の/phpmyadmin
を別のものに変更する必要があります。例:
Alias /secret /usr/share/phpmyadmin
最大の脅威は、攻撃者が次のような脆弱性を悪用する可能性があることです。ディレクトリトラバーサル、またはSQLインジェクションを使用してload_file()
を呼び出して構成ファイル内のプレーンテキストのユーザー名/パスワードを読み取り、phpmyadminまたはtcpポート3306を使用してログインします。システム。
Phpmyadminをロックダウンする素晴らしい方法は次のとおりです。
grant
またはfile_priv
を持たないカスタムアカウントを作成します。file_priv
権限を削除します。 file_priv
は、攻撃者がファイルを読み取ったりバックドアをアップロードしたりできるため、MySQLで最も危険な特権の1つです。Order deny,allow Deny from all allow from 199.166.210.1
http://127.0.0.1/phpmyadmin
のような予測可能なファイルの場所を持たないでください。 Nessus/Nikto/Acunetix/w3afなどの脆弱性スキャナーがこれをスキャンします。
攻撃者がアクセスできないように、tcpポート3306からファイアウォールで保護します。
PhpMyAdminに関する私の懸念の1つは、デフォルトですべてのMySQLユーザーがdbにアクセスできることです。 DBのrootパスワードが危険にさらされると、誰かがdbを破壊する可能性があります。どのMySQLユーザーがphpMyAdminにログインできるかを制限することで、それを回避する方法を見つけたかったのです。
PhpMyAdminでAllowDeny構成を使用すると非常に便利であることがわかりました。 http://wiki.phpmyadmin.net/pma/Config#AllowDeny_.28rules.29
AllowDenyを使用すると、Apacheと同様の方法でphpMyAdminへのアクセスを構成できます。 「順序」を明示的に設定すると、「ルール」セクションで定義されたユーザーにのみアクセスが許可されます。ルールのセクションでは、phpMyAdminを使用してアクセスできるMySqlユーザーを制限します。
$cfg['Servers'][$i]['AllowDeny']['order'] = 'explicit'
$cfg['Servers'][$i]['AllowDeny']['rules'] = array('pma-user from all')
MySQLでpma-userという名前のユーザーへのアクセスが制限されたので、そのユーザーに制限付きの権限を付与できます。
grant select on db_name.some_table to 'pma-user'@'app-server'
PhpMyAdminの新しいバージョンでは、phpMyAdminのconfig.inc.phpファイル内にユーザー名+ IPアドレスのアクセス許可を設定できます。これは、アクセスを制限する(Apacheのhttpd.confにURLとIPアドレスをハードコーディングする)ためのはるかに優れた、より堅牢な方法です。
すべてのユーザーをホワイトリストに登録する方法の完全な例(このリスト外のユーザーはアクセスを許可されません)、およびユーザールートをローカルシステムとネットワークのみに制限する方法を次に示します。
$cfg['Servers'][$i]['AllowDeny']['order'] = 'deny,allow';
$cfg['Servers'][$i]['AllowDeny']['rules'] = array(
'deny % from all', // deny everyone by default, then -
'allow % from 127.0.0.1', // allow all local users
'allow % from ::1',
//'allow % from SERVER_ADDRESS', // allow all from server IP
// allow user:root access from these locations (local network)
'allow root from localhost',
'allow root from 127.0.0.1',
'allow root from 10.0.0.0/8',
'allow root from 172.16.0.0/12',
'allow root from 192.168.0.0/16',
'allow root from ::1',
// add more usernames and their IP (or IP ranges) here -
);
ソース: WindowsのlocalhostにphpMyAdminをインストールして保護する方法
これにより、MySQLユーザー名レベルで、ApacheのURLパーミッションまたは.htaccessファイルが提供できるよりもはるかにきめ細かいアクセス制限が与えられます。
ログインするユーザーのMySQL Host:
フィールドが127.0.0.1
または::1
に設定されていることを確認してください。phpMyAdminとMySQLは同じシステム
別の解決策は、設定なしで構成ファイルを使用することです。初めてmysqlのルートログイン/パスワードを含めて、すべてのものをインストールしてから削除できるようにする必要がある場合があります。
$ cfg ['Servers'] [$ i] ['auth_type'] = 'cookie';
$ cfg ['Servers'] [$ i] ['Host'] = 'localhost';
$ cfg ['Servers'] [$ i] ['connect_type'] = 'tcp';
$ cfg ['Servers'] [$ i] ['compress'] = false;
$ cfg ['Servers'] [$ i] ['extension'] = 'mysql';
Apache/lighhtpdエイリアスなしでそのままにしておくと、ログイン画面が表示されます。
Rootでログインできますが、他のユーザーを作成し、ローカルアクセスのみにrootを許可することをお勧めします。また、文字列のパスワードは、短いが大文字であっても、特殊文字の数を使用することを忘れないでください。例えば !34sy2rmbr!
別名「easy 2 remember」
-編集:今日の良いパスワードは、実際には 文法的には意味がありませんが、面白いので覚えられる のような言葉のようなものです。または、キーパスを使用して強力なランダムを生成し、それらに簡単にアクセスできます
ほとんどの場合、WebサーバーのどこかにこのようなAliasディレクティブがあります。
Alias /phpmyadmin "c:/wamp/apps/phpmyadmin3.1.3.1/"
私のwampserver/localhost設定では、c:/wamp/alias/phpmyadmin.confにありました。
エイリアスディレクティブを変更するだけで準備完了です。
Linuxサーバーを実行している場合:
このシステムは、ホームサーバーにとって非常に安全で便利です(通常、すべてのポートがデフォルトでブロックされています)。 SSHポートを転送するだけで済みます(番号22は使用しないでください)。
Microsoft Terminal Serverが好きなら、SSHトンネリングをコンピューターに設定し、それを介してWebサーバーに安全に接続することさえできます。
sshトンネリングを使用すると、リモートサーバーの3306ポートをローカルポートに転送し、ローカルのphpMyAdminまたはMySQL Workbenchを使用して接続することもできます。
このオプションはやり過ぎですが、秘密鍵のアクセスと同じくらい安全であることを理解しています。
PhpMyAdminをセキュリティで保護する最良の方法は、これらすべてを組み合わせることです4:
1. Change phpMyAdmin URL
2. Restrict access to localhost only.
3. Connect through SSH and tunnel connection to a local port on your computer
4. Setup SSL to already encrypted SSH connection. (x2 security)
これらをすべて行う方法は次のとおりです:Ubuntu 16.4 + Apache 2 Setup Windows computer + PuTTY to connect and tunnel SSH connection to local port:
# Secure Web Serving of phpMyAdmin (change URL of phpMyAdmin):
Sudo nano /etc/Apache2/conf-available/phpmyadmin.conf
/etc/phpmyadmin/Apache.conf
Change: phpmyadmin URL by this line:
Alias /newphpmyadminname /usr/share/phpmyadmin
Add: AllowOverride All
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride Limit
...
Sudo systemctl restart Apache2
Sudo nano /usr/share/phpmyadmin/.htaccess
deny from all
allow from 127.0.0.1
alias phpmyadmin="Sudo nano /usr/share/phpmyadmin/.htaccess"
alias myip="echo ${SSH_CONNECTION%% *}"
# Secure Web Access to phpMyAdmin:
Make sure pma.yourdomain.com is added to Let's Encrypt SSL configuration:
https://www.digitalocean.com/community/tutorials/how-to-secure-Apache-with-let-s-encrypt-on-ubuntu-16-04
PuTTY => Source Port (local): <local_free_port> - Destination: 127.0.0.1:443 (OR localhost:443) - Local, Auto - Add
C:\Windows\System32\drivers\etc
Notepad - Run As Administrator - open: hosts
127.0.0.1 pma.yourdomain.com
https://pma.yourdomain.com:<local_free_port>/newphpmyadminname/ (HTTPS OK, SSL VPN OK)
https://localhost:<local_free_port>/newphpmyadminname/ (HTTPS ERROR, SSL VPN OK)
# Check to make sure you are on SSH Tunnel
1. Windows - CMD:
ping pma.yourdomain.com
ping www.yourdomain.com
# See PuTTY ports:
netstat -ano |find /i "listening"
2. Test live:
https://pma.yourdomain.com:<local_free_port>/newphpmyadminname/
これらすべてを正常に実行できる場合、
you now have your own url path for phpmyadmin,
you denied all access to phpmyadmin except localhost,
you connected to your server with SSH,
you tunneled that connection to a port locally,
you connected to phpmyadmin as if you are on your server,
you have additional SSL conenction (HTTPS) to phpmyadmin in case something leaks or breaks.
最も単純なアプローチは、Webサーバー(ほとんどの場合Apache2のインストール、構成)を編集し、phpmyadminに別の名前を付けることです。
2番目のアプローチは、phpmyadminにアクセスできるIPアドレスを制限することです(たとえば、ローカルLANまたはローカルホストのみ)。
次のコマンドを使用できます。
$ grep "phpmyadmin" $path_to_access.log | grep -Po "^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}" | sort | uniq | xargs -I% Sudo iptables -A INPUT -s % -j DROP
説明:
Iptablesドロップを介してパイプする前に、IPがリストされていないことを確認してください!!
これにより、最初に$ path_to_access.logでphpmyadminを含むすべての行が検索され、
次に、行の先頭からIPアドレスをgrepで出力し、
それらを並べ替えて一意にし、
次に、iptablesにドロップするルールを追加します
繰り返しますが、単にecho %
は、iptablesコマンドの代わりに、IPがそこにないことを確認します。誤ってサーバーへのアクセスを禁止しないでください!
制限
Macまたはgrep -Pを持たないシステムを使用している場合は、コマンドのgrep部分を変更する必要がある場合があります。すべてのシステムがxargsで始まるかどうかはわかりませんので、それもインストールする必要があるかもしれません。とにかく多くのbashを行う場合、それは非常に便利です。