自衛のためのサイバー攻撃の仕組み講座(AI時代・エンジニア水準)
区分3 Webサイトとサーバーを狙う攻撃★★★WordPress は、次の3種類の部品でできています。
どれも、PHP というプログラムの集まりです。サーバーの上で動き、データベースに記事や設定を保存しています。
実は、破られる所はほとんど本体ではありません。 本体は多くの目に見られ、直しも早いからです。弱いのは、更新が止まった部品と、管理画面の入口です。
| レンタルサーバー(Xserverなど) | VPS(自分で借りた仮想のサーバー) | |
|---|---|---|
| OSの更新 | サーバー会社 | あなた |
| 外から見える入口の管理 | 主にサーバー会社 | あなた |
| WordPress・プラグインの更新 | あなた | あなた |
| アカウント・パスワード | あなた | あなた |
VPS は、OS(サーバーの土台のソフト)から全部自分の持ち物です。自由な代わりに、守る範囲が広くなります。 レンタルサーバーは、OS以下を任せられます。それでも、WordPress の中は自分の担当です。
WordPress が破られる流れは、入口が違っても、だいたい似ています。
一番多い入口です。 プラグインやテーマに弱点が見つかると、作者が直した版を出します。ところが、直した版を入れていないサイトは、弱点が残ったままです。
ここで厄介なのが、弱点の情報が公開された瞬間から、探す側も動き出すことです。 公開された弱点を持つサイトを、自動で見つけて試す仕組みが、すでにあります。 AIで攻撃の準備が速くなった話は、No.13 で扱います(後で出ます)。いずれにせよ、更新を後回しにできる期間は短いと考えてください。
更に困るのは、使っていないプラグインです。 画面では停止中でも、ファイルがサーバーに残っていれば、弱点のあるファイルに外から直接アクセスできてしまう場合があります。 停止ではなく、削除が基本です。
守りは、3つに絞れます。
2番目は、管理画面のログインです。 ログインの画面は誰でも開けるので、パスワードの総当たりや、他所で漏れたパスワードの使い回しを自動で試されます(No.05 の通りです)。
守りは、No.06 の強さの順に従います。
admin のような推測しやすい物にしないWordPress 公式のハードニングの文書にも、強いパスワード、2段階認証、既定の admin の改名、SFTP の利用が挙げられています。
WordPress の管理画面には、テーマやプラグインのファイルを直接編集できる機能があります。便利な反面、管理者のアカウントが乗っ取られると、そこからコード(バックドア)を書き込まれます。
次の1行を設定ファイル wp-config.php に足すと、この編集機能が止まります。
define( 'DISALLOW_FILE_EDIT', true );
公式も注意しているとおり、これは画面の編集機能を止めるだけで、ファイルのアップロードまでは止めません。 補助的な守りとして、入れておく程度で足ります。
wp-config.php には、データベースの接続情報が入っています。
控えのファイル(例:wp-config.php.bak、backup.zip、.sql)を、サイトの公開フォルダに置いたままにすると、URLを知っている人に落とされます。
これは No.08 の A02(設定)と A04(暗号化)にまたがる、典型的な事故です。
wp-config.php の権限を、所有者だけが読める程度に絞る(公式の案内は 400 か 440)VPS が借りたままの状態だと、いくつもの機能が外へ向けて開いています。 Web のためには 443 だけで足りるのに、データベース、管理画面、試しに入れたアプリの入口が、全部外から見えている。そんなことが起きます。
入口が多いほど、1つの弱点が全体の侵入口になります。守りの基本は「必要な物だけ開ける」です。
SSH は、サーバーを丸ごと操作できる入口なので、最も重く守ります。 22番は、全世界から常に試されています。ログを見ると、毎日大量の失敗が並んでいるのが普通です。
守りの要点は、次の通りです。
PasswordAuthentication no)PermitRootLogin の既定値は prohibit-password)設定を変えるときは、必ず今のログイン画面を閉じずに、別の窓で新しい設定で入れるかを確かめてからにします。 自分が入れなくなる事故が、一番多いからです。
VPS は、誰も更新してくれません。OSのセキュリティ更新、使っているソフト(Web サーバー、PHP、データベース)の更新は、すべてあなたの仕事です。
方法は2つあります。
unattended-upgrades)小さな会社なら、「セキュリティ更新は自動」にして、月1回は再起動と確認をする形が現実的です。 サーバーを再起動しないと反映されない更新があるからです。
○ よくある勘違い:「うちは小さなサイトだから狙われない」→ 攻撃は人が選ぶのではなく、弱点のあるサイトを機械が拾います。大きさは関係ありません
○ 関係する単元:No.05、No.06(ログインの守り)、No.08(A02・A03・A07)、No.12 サプライチェーン攻撃(後で出ます)
ここからは、自分のサイト・自分のサーバーだけを対象にした点検です。他人のサイトを調べることは、この講座の対象ではありません。 全部やる必要はなく、下の表から1つ選んで今日やります。
| 見る所 | やり方 | 見る物 |
|---|---|---|
| 更新 | WordPress の管理画面「ダッシュボード → 更新」 | 本体・プラグイン・テーマに更新が残っていないか |
| 使っていない部品 | 「プラグイン」の一覧。停止中の物 | 使っていなければ削除する |
| 管理者 | 「ユーザー」の一覧 | 知らない管理者がいないか。人数は最小か |
| 控えの置き場 | 公開フォルダの中をファイル一覧で見る | .bak、.zip、.sql が残っていないか |
| VPSの入口 | VPS で ss -tlnp を実行 |
外に向けて待ち受けているポートと、そのソフト |
| ファイアウォール | VPS で sudo ufw status(Ubuntu の標準の物を使っている場合) |
通す番号が必要な物だけか |
| SSH設定 | /etc/ssh/sshd_config の PasswordAuthentication の行 |
no になっているか |
ss -tlnp は、自分のサーバーが外からの通信を待っている番号の一覧を出す命令です。
出てきたポートのうち、「これは何のためか」と言えない物があれば、それが引き算の対象です。
アクセスログは、サーバーが毎日書いている、来訪者の記録です。 自分のサイトのログを見ると、公開した瞬間から、自動の探りが来ていることが分かります。
見方の例です。ログの1行は、おおよそ「時刻・来た相手の番号(IPアドレス)・呼んだURL・返事の結果の数字」でできています。結果の数字は、200 が成功、404 が「そのURLは無い」、403 が断った、などです。
wp-login.php への POST が、同じ相手から繰り返される:ログインを何度も試しているこれは、ログを見て「探りが来ている」と気づくための見方です。 同じ相手の失敗が続くなら、ファイアウォールや fail2ban で、その相手を門で止めます。管理画面を使う人が決まっているなら、接続元を限定する手もあります。
見つけた探りに慌てる必要はありません。 探りが来ていることは普通で、探られても、更新と設定で塞がっていれば何も起きないからです。
点検で見つかった物が多いときは、次の順で手を付けます。
最後に、戻せる準備を忘れないでください。 WordPress の控えは、データベースとファイルの両方が要ります。作業の前に取り、別の場所に置いて、たまに戻せるかを確かめます。 詳しい取り方は No.14 で扱います(後で出ます)。
WordPress が破られる入口は、更新が止まった部品と、管理画面のログイン。VPS は、開いた入口と SSH と更新が自分の担当。点検は、更新・引き算・2段階認証・入口の棚卸しの順。ログには探りが毎日来ているが、塞がっていれば問題ない。
問1 WordPress で、使っていないプラグインを「停止」にしたまま残しています。どう考えるのが正しいですか?
問2 VPS の SSH について、最も適切な守りはどれですか?
問3 自分のサイトのアクセスログに、存在しないURLへの404が短時間に大量に並んでいました。この状況の読み方として適切なのはどれですか?
問4 点検で複数の問題が見つかったとき、最初に手を付けるのに適切なものはどれですか?
出典:WordPress 公式「Hardening WordPress」(https://developer.wordpress.org/advanced-administration/security/hardening/)/同「WordPress Backups」(https://developer.wordpress.org/advanced-administration/security/backup/)/OpenBSD「sshd_config」(https://man.openbsd.org/sshd_config)/OWASP Top 10:2025 A02・A03(https://top10.owasp.org/2025/)/IPA「安全なウェブサイトの作り方」(https://www.ipa.go.jp/security/vuln/websecurity/about.html)