VPS時代の
サイバー火消は
コードで戦う
VPSが普通になった今
必要なセキュリティ対策

security_measures_in_the_vps_eraのイメージ画像
Toplabo
Security Measures in the VPS Era

VPS時代のWebセキュリティ設計 ─ IP制限が通用しない理由と現代の防御戦略

 | 2026/04/08

概要

VPS時代のセキュリティ戦略

  • 現代のセキュリティ戦略の主流

    かつては有効だった「IP制限によるブラックリスト方式」は、現在のネット環境では「いたちごっこ」を通り越して、単体では実用的な防御として成立しにくくなっています。
    なぜ現在の環境でその手法が通用しなくなっているのか、その理由と現在の主流な対策を解説します。

IPブロックが限界を迎えている理由

  • VPSやクラウドによる「IPの使い捨て」

    現在はVPSサービスを使うことで、数分単位で新しいインスタンス(仮想サーバー)を立ち上げ、いつでも破棄して再度新しいIPを取得することが可能です。
    つまり、アクセスログから怪しいIPを調べ上げ、自分のサイトの.htaccessに1つのIPを書き込んでいる間に、VPSを使うハッカーはすでに短時間で多数のIPを切り替えることが可能になっています。

  • プロキシとVPNの普及

    そのVPSサービスも、今は安価で高速なVPS・VPN・プロキシなどを組み合わせることで、世界中のIPを瞬時に切り替えながらアクセスできるようになりました。

  • 踏み台(ボットネット)の存在

    ハッカーは自分のサーバーから直接来るのではなく、ウイルスに感染した世界中のIoT機器や一般家庭のルーター(ボットネット)を利用することも多いです。単純な「IP制限によるブラックリスト方式」では善良な一般ユーザーのIPをブロックしてしまうリスク(過検知)も高まっています。

  • メンテナンスコストの増大

    「IP制限によるブラックリスト方式」では.htaccessに数千行の拒否リストを書き込む必要があります。これは容易に想像できますが、サーバーがリクエストを処理するたびにその巨大なファイルを読み込むことになり、パフォーマンスを低下させる原因になります。

対策
一覧

現在の「賢い」WordPress防衛策

  • 現在の主流

    今の時代、IPを個別に追いかけるよりも、「入り口の守り方」を変えるのが主流です。偽装IPで顔を隠したハッカー達からいかにサイトを守るかが重要になります。そして、当サイトがWordPressという事もあり、WordPressのセキュリティ対策も重点的に解説します。

  • 対策一覧


    対策内容
    メリット


    WAF(クラウド型)
    CloudflareなどのWAFを導入。IPではなく「攻撃パターン」「怪しい挙動」で弾くため、IPが変わっても無効化されない。


    ログインURLの変更
    wp-login.phpの名前を変えるだけで、大半の自動化ボットを無効化できる。


    二要素認証/二段階認証 (2FA)
    万が一パスワードが漏れても、物理的なデバイスがないとログインできない最強の盾。


    国別制限
    日本国内向けのサイトなら、海外からの管理画面アクセスを丸ごと遮断する(これだけで劇的に減ります)。

  • ブラックリスト方式の結論

    .htaccessでのIPブロックは、「特定のしつこい相手」への応急処置としては意味がありますが、主軸の防御としては機能しません。
    次に上の対策リストを個別に解説します。

WAF
解説

最も重要な「怪しい挙動を止める」のがWAF

  • 主にWAFやプラグインが主流

    「怪しい挙動を止める」という対策は、サーバーの手前(ネットワークの境界)や、PHP(WordPressのコア)の階層で処理するのが一般的かつ効率的です。
    現在はWAFと呼ばれる以下のような方法でサイトを守るのが定石となっています。

1. WAF(ウェブアプリケーションファイアウォール)

  • WAFは、「攻撃コードを止める」主役

    WAFは、「攻撃コードを止める」主役です。
    ウェブサイトへのリクエストを解析し、不正なアクセスを遮断する仕組みです。
    サーバーとユーザーの間に立ち、通信の中身をリアルタイムでスキャンします。

  • クラウドベースのWAF

    サーバーの外部に設置されるファイアウォール。DNS設定を変更して導入します。
    多くのクラウド型WAF(Cloudflareなど)は、高速な専用エンジンで動作しています。
    SELECT * FROM ...(SQLコマンド)、<script>alert(1)</script>(スクリプト)などが通信に含まれていたら、WordPressに届く前に遮断します。
    無料から月額数万円以上の有料サービスなどがあります。
    代表的なサービス:
    Cloudflare: 無料プランでも基本的なWAFを提供。不審なトラフィックを自動ブロック。
    Sucuri Website Firewall: WordPress専用のWAFで、SQLインジェクションやXSS攻撃を防ぎます。
    AWS WAF: Amazonのクラウド環境で動作する強力なWAF。

  • プラグイン型WAF(PHP)

    サイト内部に設置するファイアウォール。
    WordPress内で簡単に設定可能なPHPプラグインです。。
    代表的なプラグイン:
    Wordfence Security: アクセスログ解析やリアルタイムで攻撃遮断が可能。二段階認証も無料で利用可。
    All In One WP Security & Firewall: ユーザーフレンドリーなインターフェースで、WAF機能を簡単に設定可能。
    他にSiteGuard WP Pluginなど。
    ログイン試行制限やアクセス監視など、アプリケーションレベルでの防御機能を提供します。

2. サーバー設定(Webサーバーソフト)

  • VPS/専用サーバーが必要

    サーバーそのものにセキュリティ対策を施す方法です。そのためVPSや専用サーバーの必要があります。
    ApacheやNginxといったサーバーソフト自体で制限をかけます。
    ModSecurityなどが代表です。ルールセットを調整し運用する必要があります。
    ModSecurityの場合、ルールセットの調整どのルールをオフにすればよいかなどの作業・設定が重要になります。

3.ネットワークレベルのファイアウォール

  • レンタルサーバーのWAF

    ホスティングプロバイダやクラウドサービスが提供するネットワークレベルのファイアウォールを活用します。

    Google Cloud Armor: Google Cloud上のサイトを保護するDDoS対策付きファイアウォール。
    AWS Shield: DDoS保護付きのWAF機能を提供。
    DigitalOcean Firewall: サーバーレベルでアクセスを制御する簡易的な設定。
    WAFが中身を精査するのに対し、こちらは中身を見ないで通信の入り口(国やIP、ポート、通信量など)をチェックします。

タイプ別対策

サイトタイプによっても防御策は大きく変わります。

  • サイトの種類

    サイトタイプもCMSを使わない、HTMLだけの場合、サーバー侵害などによる改ざんリスクは残りますが、動的処理がないため攻撃対象は大幅に減ります。それ以外のサイトの場合、サイト改ざんのもっとも大きな入り口は外部入力です。WordPressサイトであっても外部入力を無くすだけでセキュリティリスクは大幅に減ります。
    特にxmlrpc.php・restAPIなどの外部入力の対策が重要になります。最も高リスクのECサイトなどは、専用のECサービスを利用していない独自サイトの場合、VPS/専用サーバーは必須で、月額数万円以上の有料WAFを検討する必要があります。

  • ハッカーの動機

    またハッカーの動機を考えると、利益率、サイト規模や世の中に影響するサイト知名度、も関係します。大きく分けるとハッキングは個別にターゲットを絞ったものと、総当たりと二種類があります。
    ターゲットを絞る場合、ハッカーも何の利益にもならないハッキングはしません。名も知れない個人サイトをコストを掛けてハッキングなどしません。
    そういうわけで、小規模サイトが気を付けるのは総当たり攻撃の対策がメインとなります。
    ただし、最近はもう一つのタイプ『サプライチェーン攻撃』が増えています。これは取引先をハックしてから本丸の情報を盗むやり方です。
    これは本丸同様、小規模サイトであってもターゲット絞り込みハッキングの対策が必要です。
    大手のサイトとの取引があるような小規模サイトはVPS/専用サーバーは当然ですが、多少コストを掛けてでも有料WAFが必要かもしれません。

  • 必要性が高いのはWordPressなどの小規模サイトのセキュリティ戦略。

    今最も必要とされるのは、WordPressなどのCMSで構築した小規模サイトのセキュリティ対策と考えられます。
    小規模サイトなので、共用サーバー。高価な月額数万円のWAFは難しい、他のセキュリティ対策も難しい。
    こういったサイトは個別ターゲットより総当たり対策を想定するのが効率もいいです。
    小規模サイトといっても、外部入力があるのかないのかでも対応策は違ってきます。
    次よりこのような小規模サイトの総当たり対策に絞って解説します。

外部入力がない小規模サイト

  • 外部入力がないサイトの取るべき道

    このStudio-Happyvalleyサイトのように問合せフォーム以外の外部入力がないサイトは、改ざんのリスクは最も少ないと考えられます。
    このタイプのサイト特にWordpressサイトで考えられるリスクとしては、
    WordPress本体やプラグインの脆弱性: プログラム自体に欠陥がある場合、入力フォームがなくても「URLのパラメータ」などを通じて攻撃コードを送り込まれることがあります(この攻撃コードを防ぐのがWAFの役割です)。
    認証突破: 管理画面へのブルートフォース(総当たり)攻撃です。
    この対策として以下の3つが最も簡単で効果が高い対策となります。
    1.特定ディレクトリのIP制限。2.ベーシック認証。3.二段階認証
    WordPressサイトの場合は上の3つに追加として、REST APIを(不要であれば)制限・停止することも有効です。。
    そして、WAFについては運用や設定の難易度を考慮し、他の対策を優先する選択も現実的です。

  • 1. IP制限の「現在の限界」

    効果の高い特定ディレクトリ(/wp-admin/ など)のIP制限ですが、非常に特殊な状況ですが、以下のケースで「突破」ではなく「無効化」されることがあります。
    プロキシ経由の攻撃: 攻撃者がサイトの許可しているIPと同じネットワーク(同じVPS業者など)から攻撃を仕掛けてきた場合、すり抜ける可能性があります。
    ゼロデイ攻撃: IP制限がかかっていない「表側のページ」の表示処理自体に脆弱性が見つかった場合、管理画面に入られずともサイトを改ざんされるリスクがあります。
    そのためIP制限単独の対策ではなく他の二つとの併用が重要になります。

  • 2. ベーシック認証の圧倒的なコスパ

    WordPressのログイン画面(wp-login.php)の前にベーシック認証を置くのは、非常に有効です。もちろんHTTPS環境での利用が前提です。。
    PHPを動かさない: 攻撃者がパスワード総当たり(ブルートフォース)を仕掛けても、WordPress(PHP)が起動する前にWebサーバー(Apache/Nginx)の階層で弾くため、サーバー負荷がほぼゼロです。
    脆弱性からの隔離: ログイン画面自体に脆弱性が見つかっても、ベーシック認証を突破されない限り、その脆弱性を突くことすらできません。

  • 3. 二段階認証

    現在はWordfence Security、(重いと感じる場合はTwo Factor、WP 2FA)などで無料で利用できます。これは導入しない理由はほぼ無いです。ただ、更新時に毎回の手続きを許容できるかどうかと、スマホの管理さえ問題なければですが、💦。その対策として必ずバックアップを取ることが重要です。

  • WAFは誤検知が多いのか

    WAFが嫌われる最大の理由は「誤検知(False Positive)」です。
    適切に設定しないと、正常な更新作業(記事の保存など)に含まれるHTMLタグを「攻撃コード」と判断しブロックすることがあります。

  • WAFのメリット

    WAFのメリットは「サーバーに届く前に拒否」です。大量のアクセスが来た際、サーバーがダウンするのを防げるのはWAFの大きな役割の一つです。
    WAFについてはまずは一度試してみるのが良いかと思われます。無料のものもあります。
    そうはいっても誤検知が多い、設定が面倒、と感じたなら無理に使う必要性は少ないです。
    それより、対策を管理画面のセキュリティに絞って、二段階認証、枯れた技術のベーシック認証導入やREST APIなどのセキュリティリスクを塞ぐ方が重要になります。

  • REST API停止のメリット

    最近のWordPressへの一部の攻撃ではこのAPIが悪用されるケースがあります。ユーザー情報を抜いたり、不正アクセスの足がかりになるケースがあります。これを使わないのであれば、入り口を物理的に塞いでいるのと同じで、リスクは激減します。ただしブロックエディタなどを使用している場合は、例えばログイン時だけ許可するなどに設定する必要があります。

  • ここまでで残っているリスク

    さて、小規模サイトのセキュリティ対策としていろいろ上げてきましたが、あと足りないものを上げると。

    リスク
    内容
    対策のヒント


    xmlrpc.php
    ピンバック機能などを使うためのファイルですが、ここも攻撃の標的になりやすいです。
    .htaccess でアクセスを完全に禁止する。


    プラグインの更新忘れ
    フォームがなくても、インストール済みのプラグイン自体に脆弱性がある場合、細工されたURLを叩かれるだけで被害に遭うことがあります。
    不要なプラグインは削除し、残りは自動更新をONにする。


    ベーシック認証の盗聴
    HTTP(非SSL)環境だと、ベーシック認証のID/PWは平文に近い状態で流れます。
    SSL(https)化は必須です。


    そのほか、wp-config.php の保護、サイト自体を静的ファイルを書き出すシステムに変えるなど。
    特にwp-config.phpはドメインの階層の上に置くと直接アクセスされるリスクを大きく下げられます。(WPがドメインのルートにデプロイされていることが条件になりますが。)
    問合せフォームについては、Google reCAPTCHA v3は当然ですが、ファイル添付機能の場合、拡張子制限・サイズ制限などが必要です。

「フォームの入力値バリデーション(特にメール送信周り)」の確認

  • 1. メールヘッダ・インジェクションの確認

    SQLインジェクション対策ができていても、メール送信機能(mail()関数など)に「改行コード」を送り込まれると、攻撃者が任意のアドレスにメールを転送できてしまいます。

    【確認するコードのポイント】
    名前や件名の入力欄に対して、以下のような処理が入っているか確認してください。

    【テスト手順】
    自分のフォームの「名前」や「件名」の欄に、以下のような文字列を入力して送信してみてください。
    test_user\nCc: spam-target@example.com\nSubject: Spammed!

    【確認ポイント】
    届いたメール本文で『test_user\nCc: spam-target@example.com\nSubject: Spammed! 』がそのまま表示されていれば安全です。
    もし「Cc」や「Subject」にそのアドレスが入っていたり、メールヘッダとして追加されている場合は、改行コードが解釈され、メールヘッダインジェクションの脆弱性があります。

    【コードについて】
    基本的にプラグインを使っていればコードの問題はありません。
    自作の場合は使ってるCMSの機能を使うのが最善です。WordPressは念のため下記を参考に。
    _wp-nonce(WordPressの場合)などのCSRFトークンを使っているか。
    入力時: sanitize_text_field() や is_email() を通しているか。
    DB保存時: $wpdb->prepare() を使っているか(SQLi対策)。
    出力時: esc_html() でエスケープしているか(XSS対策)。

  • 「ボットによる連投」への耐性テスト

    これもプラグインを使っていれば問題ありません。
    自作の場合はcURLコマンドを使って連続投稿して、防げるかどうかを確認してください。

  • ファイルアップロードテスト

    添付ファイル機能がある場合は、phpファイルやjsファイルをアップロードしてもきちんと弾けるか。
    phpファイルの拡張子をjpgと偽装してアップしても問題なく弾けるかなど。
    可能であれば、pdfと画像ファイルに制限するのが望ましいと思います。
    サイズも3MB前後か。

結論

ECサイト、大規模サイトであれば有料WAFを、小規模サイトは内容に応じて

  • 外部入力のない小規模サイト

    小規模サイトであれば、WAFを採用しなくとも、SSL化、ベーシック認証、二段階認証、管理ディレクトリのIP制限、フォームの対策、rest-api/xmlrpc.php機能停止、wp-config.php拒否・階層移動、ディレクトリ一覧禁止、ログインURL変更、reCAPTCHA導入。
    これらを対策することで、実用上非常に高い防御レベルのサイト保護が完成します。

  • 外部入力のある小規模サイトは内容に応じてWAFを採用

    ユーザーや会員などの外部入力があると、改ざんリスクは急激に跳ね上がります。海外も対象にするとさらに高まります。
    とはいえ、基本は外部入力のない小規模サイトと同様です。ユーザービリティは低下しますが、ユーザー書き込みにも二段階認証を導入する、これにプラスとしてVPS/専用サーバー、WAFの導入を検討すればリスクを大幅に減らすことが可能です。あとはコストをどのくらいまで許容できるかになります。

  • ソフトウェア更新の重要性

    最も多くの侵入経路は「既知の脆弱性」です。
    WordPress本体・プラグイン・テーマの更新を怠ると、どれだけ他の対策をしていても突破される可能性があります。

  • 多重防護の重要性

    どの対策も単体ではなく、複数を組み合わせることで効果を発揮します(多層防御)。

  • 最も重要なのは迅速に復旧できるバックアップ

    そして、一番重要なのは定期的なバックアップです。特に外部入力のあるサイトは更新頻度とのすり合わせが大事になります。これを少ないスパンで定期的に保存することで何か問題があったとしても、迅速に復旧することが可能になります。

『VPS時代のサイバー火消はコードで戦う』関連のお薦め

このサイトで紹介しているコード、プログラムなどは個人の学習目的で作成されたものであり、いかなる保証も行いません。
利用はすべて自己責任でお願いします。
ただし、このページで紹介しているプログラムやビジュアルなどはご依頼いただければ実装を賜ります。
お問い合わせはこちら