自宅サーバーでWordPressをセキュアに公開する手順

はじめに

自宅サーバーでWordPressを運用する魅力は、レンタルサーバーやクラウドに依存せず、月額費用を抑えられる点です。一方、家庭用回線は固定IPを持たないうえ、攻撃者のスキャンに晒されるため、公開前のセキュリティ対策が欠かせません。本稿では、筆者が自宅の古いPCにUbuntu 22.04 LTSを導入した構成を例に、「何を」「どうやって」「なぜ」を交えて手順を解説します。

なぜリバースプロキシを使うのか

WordPressのポート80番を直接インターネットに晒すと、ポートスキャンやブルートフォース攻撃の標的になりやすくなります。そこで、Nginxをリバースプロキシとして手前に置き、外部からの通信をNginxに集約します。この構成にすると、WordPress本体を内部ネットワークに隔離し、TLSの終端・ヘッダー付与・アクセス制御を一か所で管理できます。

手順1 サーバー構成と初期設定

全体の構成は次の通りです。

  • ルーター(開放ポートは443番のみ)
  • Nginx(リバースプロキシとして受付)
  • WordPress(内側の127.0.0.1:8080で待機)

まず、ファイアウォールで必要最小限のポートだけを許可します。Ubuntuのufwなら以下のように設定します。

“`

ufw allow 22/tcp

ufw allow 443/tcp

ufw enable

“`

80番を開けないのは、TLSを必須にし、平文通信の経路を減らすためです。

手順2 ドメインとLet’s Encrypt

固定IPがなくても、DDNSとドメインを組み合わせれば運用できます。取得したドメインexample.comをDDNSサービスに割り当て、ルーターの更新機能で名前とIPを同期させます。TLS証明書はLet’s Encryptのcertbotで取得します。

“`

certbot certonly –standalone -d example.com

“`

取得後は必ず自動更新のタイマーを設定します。証明書の有効期限が90日と短いため、手動更新では失効事故を起こしやすいからです。

手順3 Nginxの設定

サーバーブロックは次の方針で記述します。

  • server_nameにexample.comを指定する
  • 80番へのアクセスは301でhttpsへリダイレクトする
  • TLS1.2以上に限定し、古いプロトコルを無効にする
  • X-Content-Type-Optionsなどのセキュリティヘッダーを付与する

これらにより、中間者攻撃の余地を減らし、通信経路の安全性を高められます。設定後はnginx -tで構文チェックを行い、リロードして反映します。

手順4 WordPress側の対策

プラグインとテーマは常に最新版に保ちます。古いバージョンには既知の脆弱性が残ることが多いためです。さらに、管理画面のURLをデフォルトから変更し、ログイン試行回数に上限を設けるプラグインを導入します。WordPressを実行するユーザーを専用の低権限ユーザーに分けておけば、万一侵害された場合でも被害を局部にとどめられます。

最後に

公開後は、セキュリティ診断ツールでTLSの状態やレスポンスヘッダーを確認するのがおすすめです。自宅サーバーは自由に運用できる一方、責任もすべて自分に返ってきます。バックアップとアップデートを習慣づけ、安心して運用を楽しんでください。