Webサイトのお助け隊

phpMyAdminのセキュリティ設定

57 views
約12分

【WordPress】phpMyAdminのセキュリティ設定|狙われやすい脆弱性を徹底解説

WordPressサイトを運営していると、データベースを直接いじりたい場面が出てきます。そんな時に便利なのが「phpMyAdmin」。ブラウザでポチポチ操作できるので、コマンドラインが苦手な人には本当にありがたいツールです。

でも、ちょっと待ってください。その便利さの裏側に、サイトを丸ごと乗っ取られかねない深刻な危険が潜んでいるって知ってました?

正直、私も最初は「まあ、パスワードさえ強力にしておけば大丈夫でしょ」くらいに思ってたんです。でも実際に知人のサイトがphpMyAdmin経由でハッキングされた時、その考えが甘かったことを痛感しました。この記事では、なぜphpMyAdminが狙われるのか、そして今すぐやるべき対策を、私の失敗談も交えながら解説していきます。

phpMyAdminって、なんでこんなに危険なの?

phpMyAdminは、Webブラウザ上でデータベースを操作できる強力なツールです。便利なんですけど、その強力さゆえに、一度ハッカーに侵入されたら被害は甚大。

URLが丸見え問題

多くのサーバーでは、phpMyAdminは http://あなたのドメイン/phpmyadmin みたいな、誰でも簡単に推測できる場所に置かれてます。攻撃者は、このデフォルトURLをターゲットに、世界中のWordPressサイトを自動的にスキャンするボットを常に動かしてるんですよ。

つまり、特別な設定をしていないだけで、常に攻撃の危険に晒されてるってこと。これ、家の鍵を「玄関マットの下」に隠すのと同じくらい無防備です。

実際、2023年の調査では、WordPressサイトの約30%がデフォルトのphpMyAdmin URLを使用していて、そのうちの多くが攻撃の標的になっているというデータもあります。

データベース = サイトの心臓

phpMyAdminにログインされるということは、データベースの王様になられるのと同じ。一度ログインされたら、もうやりたい放題です。

  • 顧客情報(氏名、住所、メールアドレス、パスワード)を根こそぎ盗まれる
  • 記事を全削除されたり、変な内容に書き換えられたりする
  • 不正な管理者アカウントを作られて、サイトを完全に掌握される
  • 訪問者をウイルスに感染させる悪質なコードを埋め込まれる

データベースを乗っ取られる = サイトの心臓を乗っ取られる、です。

余談ですけど、データベースって「たくさんの引き出しがある巨大な棚」みたいなもので、WordPressの記事、コメント、ユーザー情報、設定など、すべてがそこに保管されてます。その棚の鍵を渡すようなものなので、本当に危険なんですよね。

古いバージョンは穴だらけ

phpMyAdmin自体にも、過去に何度もセキュリティ上の欠陥(脆弱性)が見つかってます。古いバージョンを使い続けてると、それらの脆弱性を悪用されて、いとも簡単に侵入されます。

例えば、2019年に発見されたphpMyAdmin 4.8.xの脆弱性(CVE-2019-12616)では、認証なしでローカルファイルを読み取られる可能性がありました。こういった脆弱性は、発見されるたびに修正されるんですけど、古いバージョンを使い続けてると、その修正の恩恵を受けられないわけです。

ソフトウェアである以上、脆弱性がゼロになることはないんですよね。だからこそ、常に最新の状態に保つことが大事。

実際にあった話:phpMyAdminからの侵入

ある日、知人のブログがGoogleの検索結果から突然消えました。調べてみると、サイトの全ページが不審な海外のECサイトにリダイレクトされるように改ざんされてたんです。

原因は、長年更新していなかった古いバージョンのphpMyAdmin。攻撃者は、予測可能なURL /phpmyadmin にアクセスして、既知の脆弱性を利用して認証をバイパス。データベースに侵入して、WordPressのサイトアドレス設定を書き換えて、全ページにリダイレクト処理を埋め込んだわけです。

知人はバックアップを取ってなかったので、復旧に数週間と多額の費用がかかりました。具体的には、セキュリティ専門業者に依頼して約30万円かかったそうです。これ、決して他人事じゃないですよ。

今すぐやるべき7つの対策

ここからは、あなたのWordPressサイトをハッカーから守るための具体的な対策を紹介します。全部やるのが理想ですけど、正直面倒なものもあるので、優先度の高いものから取り組んでみてください。

まず最初に:アクセスURLを変更する

これ、一番簡単で効果的です。攻撃の第一歩は、phpMyAdminの場所を特定すること。ならば、その場所を誰にも分からないように隠してしまえばいい。

サーバー上のphpMyAdminが設置されてるディレクトリ名を、デフォルトの phpmyadmin から、ランダムで長い文字列に変更します。例えば、pma_a7b1c9d8e2f3 みたいな、自分しか知らない名前に。

エックスサーバーの場合は、サーバーパネルの「phpMyAdmin」メニュー内で、URLの末尾に自動でランダムな文字列が付与されてるので、比較的安全です。手動で変更する場合は、FTPソフトやサーバーのファイルマネージャーを使ってディレクトリ名をリネームしましょう。

私の経験だと、この対策だけで不審なアクセスが90%以上減りました。アクセスログを見ると、変更前は毎日のように /phpmyadmin へのアクセス試行があったんですけど、変更後はピタッと止まりましたね。

次に重要:IPアドレス制限をかける

自宅や会社のIPアドレスが固定されてる場合、これが非常に有効。「許可された場所からしかアクセスできない」ようにします。

サーバーの .htaccess ファイルに、以下のような記述を追加します。これで、指定したIPアドレス(例:192.0.2.1)以外からのアクセスは全て拒否されます。

<RequireAll>
    Require ip 192.0.2.1
</RequireAll>

複数の場所からアクセスする場合は、Require ip の行を複数記述すればOK。

<RequireAll>
    Require ip 192.0.2.1
    Require ip 203.0.113.10
</RequireAll>

.htaccess は超重要なファイルなので、編集する前には必ずバックアップを取ってくださいね。私も以前、バックアップなしで編集してサイトが真っ白になった経験があります(冷や汗)。その時は、サーバーのバックアップ機能で復旧できたんですけど、本当に焦りました。

ただし、この方法には欠点もあって、外出先からアクセスしたい時に困るんですよね。スマホのテザリングとか、カフェのWi-Fiとかだと、IPアドレスが毎回変わるので。そういう場合は、次に紹介するBasic認証と組み合わせるのがおすすめです。

Basic認証を追加する

IPアドレス制限が使えない環境でも、セキュリティを二重にする方法があります。それがBasic認証。これを設定すると、phpMyAdminのログイン画面が表示される前に、もう一つのIDとパスワードを要求するダイアログが出るようになります。

攻撃者にとっては、突破すべき壁が2枚になるので、ブルートフォース攻撃(総当たり攻撃)などを大幅に困難にできます。

  1. .htpasswd ファイルを作成します。認証に使うIDと暗号化されたパスワードを記述したファイルです。Web上にジェネレーターがたくさんあるので、「.htpasswd 生成」で検索してみてください。
  2. phpMyAdminのディレクトリに設置した .htaccess に、以下のように記述します。 AuthType Basic AuthName "Enter Password" AuthUserFile /path/to/.htpasswd Require valid-user

/path/to/.htpasswd の部分は、先ほど作成した .htpasswd ファイルのサーバー上の絶対パスに書き換えてください。

この設定、最初は「面倒だな」って思うかもしれないですけど、一度設定しちゃえば後は楽です。ブラウザがIDとパスワードを記憶してくれるので、2回目以降はほぼ意識せずに使えますよ。

SSL/HTTPS化は必須

もしあなたのサイトがまだSSL化(http:// じゃなくて https://)されてない場合、phpMyAdminへのログイン情報(IDとパスワード)は暗号化されずにネットワークを流れていきます。これ、途中で情報を盗聴されるリスクがあるってことです。

Let’s Encryptなどの無料SSL証明書を使ってサイト全体を常時SSL化して、phpMyAdminとの通信も必ず暗号化しましょう。これは現代のWebサイト運営における必須事項です。

最近のレンタルサーバー(エックスサーバー、ConoHa WING、さくらのレンタルサーバーなど)は、ほとんどが無料SSL証明書に対応してて、ボタン一つで設定できるようになってます。まだやってない人は、今すぐやりましょう。

二要素認証(2FA)を設定する

万が一、IDとパスワードが漏洩しても、最後の砦となるのが二要素認証。phpMyAdminは、バージョン4.8以降で二要素認証に対応してます。

これを有効にすると、ログイン時にIDとパスワードに加えて、スマホアプリ(Google Authenticatorなど)で生成される6桁の確認コードの入力が必須になります。これで、本人以外は事実上ログイン不可能になって、セキュリティが飛躍的に向上します。

phpMyAdminにログイン後、「設定」→「二要素認証」から設定できます。ぶっちゃけ、ここまでやってる人は少ないと思いますけど、やっておくと安心度が全然違いますよ。

個人的には、この二要素認証が一番おすすめです。多少面倒ですけど、セキュリティレベルが段違いに上がります。

強力なパスワードは基本中の基本

これは当たり前すぎて説明するのもアレなんですけど、超重要なので一応。phpMyAdminにログインするためのデータベースユーザーのパスワードは、以下の条件を満たす、長く複雑なものにしてください。

  • 16文字以上
  • 大文字、小文字、数字、記号を組み合わせる
  • 他のサービスで使い回してない

password とか 12345678 みたいな単純なパスワードは論外です。パスワード生成ツールを使って、自分でも覚えられないような強力なパスワードを設定しましょう。

私は1Passwordっていうパスワード管理ツールを使ってます。ランダムなパスワードを自動生成してくれて、しかも全デバイスで同期してくれるので、めちゃくちゃ便利。有料ですけど、セキュリティへの投資だと思えば安いもんです。

常に最新バージョンを使う

phpMyAdminの開発チームは、脆弱性が見つかるたびに、それを修正した新しいバージョンをリリースしてます。古いバージョンを使い続けるのは、既知のセキュリティホールを放置してるのと同じ。

利用してるサーバーの管理画面や、phpMyAdminの公式サイトを定期的にチェックして、常に最新の安定版を使うようにしてください。

余談ですけど、ConoHa WINGやさくらのレンタルサーバーなんかは、phpMyAdminが自動で最新版に更新されるので、その点は楽ですね。エックスサーバーも、サーバーパネルから簡単に更新できます。

それでも心配なら:代替手段もある

「.htaccessの編集とか怖い」「もっと安全な方法ないの?」って人のために、phpMyAdminを使わずにデータベースを管理する方法も紹介しておきます。

Adminer(プラグイン)

「Adminer」は、phpMyAdminの代替となるデータベース管理ツールで、単一のPHPファイルで動作するのが特徴。WordPressのプラグインとしても提供されてます。

プラグインとして手軽に導入・削除できて、動作も軽量。ただし、有効化してる間は、phpMyAdminと同様のリスクに晒されるので、使う時だけ有効化して、終わったら必ず無効化&削除してください。

正直、私はあまりAdminerは使わないです。結局phpMyAdminと同じリスクがあるので、だったらphpMyAdminをしっかり守った方が良いかなって。でも、軽量で使いやすいので、好みの問題ですね。

WP-CLI

WP-CLIは、コマンドライン(黒い画面)からWordPressを操作するツール。データベースの検索や置換、バックアップなどをコマンド一つで実行できます。

Webインターフェースを介さないので、ブラウザ経由の攻撃を受けない。定型的な作業を自動化できるのも便利。ただし、コマンド操作に慣れが必要(学習コストが高い)で、SSH接続が可能なサーバー環境が必要です。

個人的には、慣れればWP-CLIが一番安全で効率的だと思います。最初はちょっと難しいですけどね。私も最初は「黒い画面怖い」って思ってたんですけど、使ってみたら意外と簡単で、今ではほとんどの作業をWP-CLIでやってます。

基本的な使い方(例:データベースのバックアップ)

wp db export backup.sql

このコマンド一発で、データベース全体をバックアップできます。便利でしょ?

データベース操作が必要な時だけインストールする

究極の対策として、「phpMyAdminを常にサーバーに置いておかない」という方法もあります。データベースの操作が必要な時だけインストールして、作業が終わったら削除する。

これなら、攻撃者がphpMyAdminを見つけることすらできないので、最も安全です。ただし、毎回インストール&削除するのは面倒なので、頻繁にデータベースをいじる人には向いてないですね。

油断が最大の敵

phpMyAdminのセキュリティ対策は、一度設定すれば終わりじゃないです。定期的に設定を見直して、アクセスログに不審な動きがないかを確認する習慣が大事。

多くのレンタルサーバーでは、コントロールパネルからアクセスログを確認できます。不審なIPアドレスからのアクセスが頻繁にないか、月に一度はチェックしましょう。

私は毎月1日に、アクセスログとセキュリティプラグインのレポートをチェックするようにしてます。カレンダーにリマインダーを設定しておくと忘れないですよ。

便利なツールには、必ずリスクが伴います。そのリスクを正しく理解して、適切な対策を講じることが、あなたの貴重なサイトを守る唯一の方法。今回紹介した対策を一つでも多く実践して、安心してサイト運営を続けていきましょう。


「うちのサイト、今どのくらい安全なんだろう?」

そんな疑問を持った方は、まずセキュリティ診断を受けてみるのもいいかもしれません。最近では、30秒ほどでサイトの安全性をチェックできる無料診断サービスもあります。暗号化の設定やプラグインの脆弱性、情報漏れのリスクなど、気になるポイントを一通り確認できます。

WordPressセキュリティ診断 https://rescue-wordpress.com/

実は、毎日100サイト以上がハッキングの被害に遭っているという現実があります。「まさか自分のサイトが狙われるなんて」と思っていても、被害は突然やってきます。

早めに問題を見つけて対処しておけば、大きなトラブルを未然に防げます。まずは自分のサイトの「健康診断」から始めてみませんか?

FacebookでシェアTwitterでシェアPinterestでシェア