新VPSの堅牢化
回答
新VPSの堅牢化は約20分:パスワードとroot SSHログインを無効化し、鍵のみの認証を有効にし、nftablesで受信をデフォルト拒否に設定し、セキュリティアップデートの自動適用を有効にし、fail2banをインストールします。この5ステップで実世界の侵害の大半を排除できます。
実際にサーバーを侵害するもの
ゼロデイではありません。実際は:弱い認証情報へのSSHパスワードブルートフォース、数か月パッチされずに放置されたサービス、デフォルトパスワードの管理パネル、オペレーターがインストールしたアプリの脆弱性。リストは退屈で、15年間変わっていません。
以下のチェックリストは、1分あたりに除去されるリスクの量で並べています。順番に実行し、忍耐が尽きたら停止しても、ほとんどのリスクは除去できています。
ステップ1 — SSH鍵のみ
このたった一つの変更で、最も一般的な攻撃を完全に排除できます。Ed25519キーを生成し、公開鍵をアップロードしてから、/etc/ssh/sshd_config を編集して PasswordAuthentication no、PermitRootLogin prohibit-password、KbdInteractiveAuthentication no を設定してください。
最初のターミナルを閉じる前に、別のターミナルでキーをテストしてください。自分を締め出すのは恥ずかしいことですが、コンソールアクセスがあるマシンでは完全に回復可能です。それでも、正しい順序で行ってください。
ステップ2 — デフォルト拒否のファイアウォール
最新のDebianとUbuntuではnftables、RHEL系ではfirewalldを使用します。インバウンドはデフォルト拒否、確立済みおよび関連トラフィックは許可、SSHポートは許可、ワークロードに必要なポートのみ許可し、それ以外は一切許可しません。
重要な規律は、「それ以外は一切許可しない」という点が本質であるということです。デバッグ中に追加した許可ルールが削除されずに残っているファイアウォールは、何もしていないファイアウォールです。
- デフォルトポリシー:インバウンドはドロップ、アウトバウンドは許可
- 確立済みおよび関連トラフィックは許可
- ループバックは許可
- SSHポートは許可(可能ならレート制限付き)
- ワークロードのポートは明示的に列挙して許可
- ICMPエコーは許可 — パスMTU探索を壊さない
ステップ3 — 自動セキュリティ更新
DebianとUbuntuではunattended-upgrades、RHEL系ではdnf-automaticを、セキュリティ更新のみに限定して設定します。ほとんどの侵害は、数か月前にパッチが適用された脆弱性を悪用します。
ワークロードが許すなら、メンテナンス時間帯に自動再起動を有効にしてください。カーネル更新は再起動するまで効果がなく、稼働日数400日、未適用のカーネルCVEが11件のサーバーは、誇りではありません。
ステップ4 — fail2ban、そしてその真の価値について
パスワード認証をすでに無効にしている場合、fail2banが実際の侵害を防ぐことはほとんどありません。しかし、ログのノイズを劇的に削減する効果はあります。何千もの失敗した試行で埋め尽くされたログは誰も読まず、読まれないログは、実際の侵入が何週間も気づかれずに続く原因だからです。
デフォルトのsshd監獄で十分です。その他にインターネットに公開するものがあれば、監獄を追加してください。
ステップ5 — 攻撃対象領域を減らす
ss -tlnpを実行して、何がリッスンしているかを確認してください。通常のインストールでは、知らなかったサービスや不要なサービスが含まれていることがよくあります。それらはファイアウォールで遮断するのではなく、削除してください。インストールされていないソフトウェアには脆弱性がありません。
ローカルアクセスだけでよいサービスは、0.0.0.0ではなく127.0.0.1にバインドしてください。ファイアウォールの内側で全インターフェースにリッスンしているデータベースは、設定ミス一つで公開されてしまいます。
省略してもよいもの
SSHポートの変更はログのノイズを減らしますが、標的型攻撃を防ぐことは一切ありません。必要なら行ってもよいですが、セキュリティとして数えてはいけません。ポートノッキングは、わずかな利益のために脆弱性を追加します。侵入検知システムは、単一サーバーでは誰もトリアージしないアラートを生成するだけです。
上記の5つのステップの後にさらに意味のあるステップを望むなら、それは別の管轄区域への暗号化されたオフサイトバックアップであり、実際に復元してテストすることです。復元能力は、予防のもう一つの層よりも価値があります。
よくある質問
01 SSHポートの変更には価値がありますか?
ログのノイズに関しては、はい。セキュリティに関しては、いいえ — 日和見スキャナを防ぐだけで、標的型攻撃は防げません。ログが静かになるのが好きなら変更しても構いませんが、それを制御策として数えてはいけません。
02 SSHキーを使用している場合、fail2banは必要ですか?
直接のセキュリティに関しては、ほぼ必要ありません。ログの衛生面では、はい — 何千もの失敗した試行はログを読めなくし、読まれないログは実際の侵入が気づかれないままになる原因です。
03 自動再起動を有効にすべきですか?
ワークロードが許せば、メンテナンス時間帯に有効にしてください。カーネルパッチは再起動まで効果がありません。未適用のカーネルCVEを抱えた長い稼働時間は、成果ではなく負債です。
関連