【phpMyAdmin】の導入手順とセキュリティ対策 in【お名前.comの共用サーバーSD】
2015/09/22
先日、当ブログ「はぴすぷ」のWordPressのデータベースをバックアップしようと、MySQLクライアントソフトから接続しようとした時のことです。
接続情報を正しく入力しているはずだけど、繋がらない(;・∀・)
どういうことなんだろうと、SSHでサーバーに入ってMySQLの状態調べようとしたら「mysql」コマンドが「not found」。
当サイト「はぴすぷ」は、現在「お名前.com」の「共用サーバーSD」を使っているので、ヘルプとかQ&Aを見てみる
【共用サーバーSD】データベースサーバーに直接アクセスすることは可能ですか?
セキュリティー上の観点から、Webサーバー経由のアクセスに限定させていただいております。
※お客様にてWEBアプリケーションツールをインストールし、アクセスいただくことは可能です。共用サーバーSDではPHPで動作する無料のMySQL操作ツール「 phpMyAdmin 」のインストール
および動作確認をおこなっております。
セキュリティの関係上、直接触らせて貰えないらしいのでphpMyAdminを入れることにしました!
スポンサーリンク
phpMyAdminのインストール
phpMyAdmin公式ページで最新版をダウンロード。
解凍して出来たディレクトリの名前を変更します。
ここで変更する名前ですが、「pma」「phpMyAdmin」「phpmyadmin」など誰もが使いそうな名前は絶対に止めましょう!
よく初心者向けのサイトで、こういった名前に変更させていますが、セキュリティ上最悪です。
「phpMyAdmin セキュリティ」「phpMyAdmin 脆弱性」とかで検索してみたらよく分かります。
完全に別名とまでは言いませんが、適当な文字をくっつけて攻撃される対象にならないようにしましょう。
名前を変更したら、FTPクライアントソフトでレンタルサーバーに転送します。
「phpMyAdmin」はphpファイルの権限を「700」に設定する必要があるので、FTPクライアントに拡張子に対して権限を設定して転送出来る機能があれば、先に設定しておきます。
WinSCPでは拡張子に対してということは出来ないので、次に説明する方法で設定します。
WinSCPで特定の拡張子のファイルを一括で権限変更する(SSHでchmod)
私の今使っているFTPクライアントはWinSCPで、過去に紹介記事を書いて、同じように使ってくれている人もいるかもしれないので、サポートしておきます(・∀・)
紹介記事:レンタルサーバと簡単にファイル転送する方法【WinSCPでSFTP・FTPS通信】
SSHクライアントを使っていたり、ターミナルから操作出来るならWinSCPの部分はスルーして下さい。
WinSCPでは、擬似的なSSHコンソールが付属しているのでこの機能を使います。
サーバーにSFTPで接続して「phpMyAdmin」のディレクトリに移動してから、「コンソールを開く」ボタンをクリックします。
確認ダイアログが出てきます。「OK」で続けます。
鬱陶しければ次回は表示しないにチェックいれておきます。
「例の黒い画面」が表示されます(^q^)
ここで「コマンドを入力」して「実行」ボタンからちょっとしたことなら出来ます。
今回は「phpMyAdmin」の中のphpファイルの権限を「700」にするのが目的なので、phpファイルを探し出します。
find . -name "*.php"
今いるディレクトリ以下にいるphpファイルがズラーっと表示されます。
権限も表示して欲しいので先ほどのコマンドに、ちょっと追加します。
find . -name "*.php" | xargs ls -l
権限も表示されました。全て「644」(-rw-r–r–)になっています。
コマンドの説明をちょっとすると、|(パイプ)で繋げたxargsで、後ろのlsコマンドの引数に、findの結果を渡しています。同じようにfindのオプションexecでも出来ますが、linuxコマンド講座ではないので深くは説明しません。
次は同じように、権限を変更します。xargsの後ろのコマンドを権限変更するchmodに変えて実行します。
find . -name "*.php" | xargs chmod 700
特に何も表示するものがないのでそのまま終わりますが、権限は変更されています。
もう一度確認コマンドを履歴から実行してみましょう。
find . -name "*.php" | xargs ls -l
全て権限が「700」(-rwx——)に変更されています。
これでphpとmysqlが使えるサーバーであれば、「phpmyadmin」が動くようになります。
phpMyAdminの初期設定
動くようになったのはいいけど、今のままの状態で置いておくとセキュリティ対策をなにも行っていないので非常に危険です。
早速、初期設定とセキュリティ対策を行います。
自分のレンタルサーバーが、https接続できるならhttpsで接続しましょう。
https接続出来る人・共有サーバーSD向けの話
お名前.comの共有サーバーSDは共有SSLが使えるので、一応繋がるのですが、毎回Chromeさんが「この接続ではプライバシーが保護されていません」と怒ります(・ω・`)
毎回「詳細情報を表示する」→「アクセスする」というのは手間です。
それに何かこの表示は嫌ですよね。
というわけで、バーチャルURL使いました。こういう感じになります。
レンタルサーバーのドメイン経由になりますが、証明書は正規のものになるので怒られることはなくなります。
共用サーバーSDのコントロールパネルにメニューがあります。
最初は使わないになっているので、「使う」に変更します。
「表示する」のリンクで、バーチャルURLを適用した自分のドメインに移動します。
これで、httpsでいい感じにアクセス出来るようになりました。
設定ファイルの作成
手動で設定ファイルを作れるという人は、トップディレクトリにある「config.sample.inc.php」を元に「config.inc.php」を作成するといいでしょう。
Webページから作成する方法で設定した内容を載せておくので、分かる人はこっちの方が早いです。
<?php /* Servers configuration */ $i = 0; /* Server: WordPress用(sddb******.cgidb) [1] */ $i++; $cfg['Servers'][$i]['verbose'] = 'WordPress用(sddb*********.cgidb)'; $cfg['Servers'][$i]['host'] = 'sddb*********.cgidb'; $cfg['Servers'][$i]['port'] = ''; $cfg['Servers'][$i]['socket'] = ''; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['auth_type'] = 'cookie'; $cfg['Servers'][$i]['user'] = ''; $cfg['Servers'][$i]['password'] = ''; $cfg['Servers'][$i]['only_db'] = array('sddb*********'); /* End of servers configuration */ $cfg['UploadDir'] = ''; $cfg['SaveDir'] = ''; $cfg['ForceSSL'] = true; $cfg['blowfish_secret'] = '*********************'; $cfg['DefaultLang'] = 'ja'; $cfg['ServerDefault'] = 1; ?>
Webページから設定ファイルを作成する
ブラウザ上からでも、簡単に設定ファイルを作ることが出来ます。
サンプルの設定ファイル見てもなんのこっちゃ分からんという人は、この方法で作成しましょう。
configディレクトリを用意
まず、設定ファイルが保存される「config」ディレクトリを「phpMyAdmin」の中に作成しておきます。
ブラウザで設定画面を表示
次に、「http[s]://[自分のドメイン]/[phpMyAdminを置いた場所]/setup/」にアクセスします。
例)https://v13.rentalserver.jp/hapisupu.com/phpMyAdmin_****/setup/
こういう画面が表示されます。
SSL通信に限定する
https接続が可能な人は「SSL接続の推奨」の「オプション」をクリック。
SSL接続の推奨(SSL接続でしかアクセス出来ない)をチェックして「適用」をクリックします。
新しいサーバの追加
まだ接続先のサーバの設定がないので、「新しいサーバ」を選択して追加します。
※設定はあくまでも私の環境(主に共有サーバーSD)に合わせて行った例なので、自身の環境に合うように適宜変更して下さい。
まずは、「基本設定」タブから入力していきます。
このサーバーの詳細な名前:ホスト名だけだと何のサーバーか分からい場合は分かりやすくしておくと良いでしょう。
サーバのホスト名:レンタルサーバーから連絡のあったMySQLのホスト名を入力。
お名前.comの共有サーバーSDだと、コントロールパネルの「データベース設定」から確認できます。
他の項目はサーバ側の都合に合わせて必要であれば入力します。
次に「認証」タブ。ユーザが「root」になっていたので消しました。
最後に「サーバ設定」タブ。
リスト化したデータベースだけを表示する:自分で作ってないデータベース以外見えても鬱陶しいだけなので見えなくしています。
rootログインの許可:許可していたので外しました。
他の設定はデフォルトで良いと思ったので変更していません。「適用」をクリックして完了させます。
新しいサーバが追加されました。
設定ファイルの保存
デフォルト言語を日本語に変更して「保存する」をクリック。
これで設定ファイルが「config」ディレクトリに作成されます。
設定ファイルの調整と適用
「644」と余計な権限が付いているので「プロパティ」から「600」に変更します。
「config」ディレクトリは、あくまでもsetupの機能で使うものなので、トップディレクトリに「config.inc.php」を移動しないと「phpMyAdmin」本体に影響がありません。
なので、ドラッグアンドドロップで一つ上の階層である「..」に渡すか、一度手元にダウンロードしてからトップディレクトリにアップロードして下さい。
セキュリティ対策
設定ファイルを作成するのに必要だった「config」と「setup」ディレクトリを削除します。
セキュリティ上、そのまま残しておくと危険です。
設定変更する時にまた使う可能性があるから残しておきたい場合でも、最低限権限を全て落としておきましょう。名前も変更しておくことをオススメします。
恐らくトップディレクトリの名前をいじっているので、見つかることはまず無いと思いますが、もし見つかったとしても、他のところまでいじっていれば、諦めて他の攻撃対象を探しに行ってくれるでしょう…。恐らく(゚Д゚)
権限落としてるだけだと表示はされないんですが、403なんですよね。
やっぱり404の方が(・д・)チッってなるはず。もういいやってきっとなる!
とりあえず、これだけでも対策しておきましょう。
phpMyAdminの動作確認
ここまでの手順で一通りは設定したので、「phpMyAdmin」がちゃんと動くか確認します。
「http[s]://[自分のドメイン]/[phpMyAdminを置いた場所]」にアクセスします。
例)https://v13.rentalserver.jp/hapisupu.com/phpMyAdmin_****
「ユーザ名」と「パスワード」を入力して「実行」します。
※レンタルサーバーで発行されたものを入力します。
問題なく、入れればうまく設定出来ていると思います(^q^)
画面下の方に危険そうなアラート出てないか確認しておきましょう。
大した警告でないなら無視してしまっていいと思いますが、出来る限り対処しましょう。
終わりに
サクッと終わらせるつもりが、結構なボリュームになってしまってました(;・∀・)
でもこれで、本番環境のWordPressのDBに接続できるようになったので、しっかりバックアップ取れそうです。良かった良かった。
そもそも価格.comの共用サーバーSD利用してる人が釣られてるかもしれませんが、そうでない人でレンタルサーバー検討中の方にオススメしておきます。
期間限定って書いてるけど、恐らくずっとやってるキャンペーンで「初期費用と最大2ヶ月分無料」が美味しいので、半年くらい使ってみるのをおすすめします。
ついでに1年分のドメインも無料でついてきました\(^o^)/
長くなりそうなので今度オススメ記事書きます。それでは!