セキュリティに関するニュース記事を読んでいて、ふと考えた。自分のホームラボは本当に安全なのだろうか?インターネットに公開しているサーバーがいくつかあるが、正直どれくらい脆弱なのか分かっていなかった。そこで、自分でテストする方法を探すことにした。
最初は Claude にスキャンを頼んでみたが、Claude はサンドボックス環境で動作しているため、スキャンしようとした通信は自分のサーバーに直接届くのではなく、Anthropic 自身のネットワークゲートウェイを経由することが分かった。それでは結果が信頼できない。だから自分自身でテストするしかなかった。私はセキュリティテストの経験が特にあるわけではない。自分の2台のサーバーのネットワークを構築した程度で、監査した経験はほとんどない。
構成の概要
全体の配線はざっとこんな感じだ。ネットワークの経路は Cloudflare、次に DDNSホスト名を持つ MikroTik ルーター(実際のアドレスは非公開にしておく)、その次に Ubuntu Server マシン、そして Unraid ボックスへと続く。Ubuntu Server は両方のマシンのプロキシを担当していて、Traefik もそこで動いている。そもそも外部からアクセス可能にするために、ISPのPLDTからグローバルIPを申請する必要があった。それが構成の概要だ。
nmapの実行
実際のテストでは、仕事用ノートPCのWSL経由でnmapを使い、DDNSホスト名に対してフルポートスキャンを実行した。
nmap -Pn -T4 -p- your-ddns-hostname.example.com
正直なところ、結果は問題なかった。開いていたのはポート80と443だけ。それ以外は一切応答しなかった。心から安堵した。少なくともネットワークレベルでは、サーバー側はきちんとロックダウンされていた。
そしてSSL
SSLは私が深いレベルまでは理解していない部分だ。Traefikがすでに Let's Encrypt を通じて証明書を自動的に処理しているので、その部分はカバーされていると思っていた。確認のため Qualys SSL Labs ですべてチェックしてみたところ、結果には驚かされた。Traefikで TLS 1.2 と 1.3 をきちんと設定していた(元々構築した際にAIの助けも借りていた)にもかかわらず、すべてBランクという評価だった。
調べてみると、Bランクの原因はTraefikの問題ではまったくなかった。Cloudflareがそれらのドメインの前段に立ち、自分のオリジンサーバーの代わりにエッジでTLSハンドシェイクを処理していたことが原因だった。そこでCloudflareを経由していない別のサービスをテストしたところ、そちらはAランクで、全体的に強力な暗号化がなされていた。
で、自分の構成は大丈夫なのか?
少なくともテストした部分については、大丈夫だと思う。サーバーやネットワーキング面での露出した脆弱性はなかった。もし本当に弱点が残っているとすれば、それはおそらく境界そのものではなく、その裏で動いている個々のサービスのロジックの部分だろう。自分のインフラを一晩かけて突いてみた後としては、それは安心できる着地点だ。
あなたのサーバー運用の道のりはどんな感じだっただろうか?