はじめに
自宅サーバーで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の状態やレスポンスヘッダーを確認するのがおすすめです。自宅サーバーは自由に運用できる一方、責任もすべて自分に返ってきます。バックアップとアップデートを習慣づけ、安心して運用を楽しんでください。