新しいVPSは、オンラインになって数分以内にスキャンされ、探りを入れられます。朗報は、順序立てた1時間のハードニングで、無差別攻撃の圧倒的多数を食い止められることです。以下が、プライバシー重視の新しいサーバーのための、重要度の順に並べたチェックリストです。
1. まずSSHをロックダウンする
sudo権限を持つ非rootユーザーを作成し、公開鍵を追加した上で、sshd_configでパスワード認証とrootログインを無効化します(PasswordAuthentication no、PermitRootLogin no)。鍵認証のみのSSHにするだけで、サーバーに届くノイズの大半を占めるパスワード推測を打ち破れます。SSHを再起動し、現在のセッションを閉じる前に、新しいセッションでログインできることを確認してください。

2. ファイアウォールを前面に置く
受信はデフォルトで拒否し、必要なものだけを許可します。ufwなら、受信を拒否、送信を許可し、その上でSSHポートと実際に運用するサービスのポートを許可します。ファイアウォールは「開いているポートすべてが標的」という状態を「自分で選んだ扉しか存在しない」状態に変え、攻撃対象領域を劇的に縮めます。
3. fail2banを追加する
fail2banをインストールして認証ログを監視させ、繰り返し失敗するIPを一時的にブロックします。鍵認証のみのSSHでも、ログのノイズを減らし、公開しているあらゆるサービスへのブルートフォース試行を鈍らせます。デフォルト設定は妥当です。sshdのjailと、運用中のサービス向けのjailを有効にしてください。
4. 自動セキュリティアップデートを有効にする
unattended-upgrades(Debian/Ubuntu)を有効にし、覚えていなくてもセキュリティパッチが当たるようにします。サーバー侵害の最も一般的な原因は、パッチが公開済みだった既知の脆弱性です——アップデートの自動化は、あなたが眠っている間にその穴を塞いでくれます。
5. 攻撃対象領域を減らす
使っていないサービスをアンインストールし、ローカル専用のデーモンは127.0.0.1にバインドし、ss -tlnpで何がリッスンしているかを確認します。リッスンしているサービスはすべて潜在的な侵入口です。動かして公開するものが少ないほど、攻撃される余地も減ります。その上でサーバー外へのバックアップを用意し、侵害されても壊滅ではなく回復可能な事態にとどめてください。
この1時間のまとめ
鍵認証のみのSSH、デフォルト拒否のファイアウォール、fail2ban、自動アップデート、そして最小限に絞ったリッスンサービス。どれも特別なものではなく、すべて短時間で済み、組み合わせれば、現実の侵害のほぼすべてを占める自動化された攻撃を食い止められます。大事なものをデプロイする前に、済ませておいてください。