インターネットに接続されているすべてのデバイスは、常に外部からの脅威にさらされています。
攻撃者は攻撃対象を特定するために、さまざまなツールを用いてネットワークをスキャンしています。
その中でも「Shodan」は、インターネット上のあらゆるデバイスをカタログ化している検索エンジンとして知られています。
セキュリティ担当者や個人ユーザーにとって、自社や自宅の資産がShodan上でどのように見えているかを知ることは、防御の第一歩となります。
この記事では、Shodanを活用して自組織や自宅の公開資産をスキャンし、脆弱性をセルフチェックする具体的な手法について詳しく解説します。
Shodanとは何か:インターネットの裏側を可視化する検索エンジン
Shodanは、一般的な検索エンジンとは異なり、Webページの内容ではなく「デバイスそのもの」を検索対象としています。
サーバー、ルーター、ネットワークカメラ、産業用制御システム(ICS)など、インターネットに直接つながっているあらゆる機器が対象です。
Shodanのクローラーは、世界中のIPアドレスに対して定期的に接続を試み、デバイスが返すレスポンス(バナー情報)を収集しています。
このバナー情報には、OSの種類、サービス名、ソフトウェアのバージョン、さらには設定ミスによる機密情報が含まれることもあります。
セキュリティの専門家は、これを利用してインターネット全体の脆弱性の傾向を把握したり、自組織の資産が露出していないかを確認したりします。
一方で、悪意のある攻撃者が脆弱なターゲットを探し出すために利用する側面も持っているため、防御側も同様の視点を持つことが重要です。
なぜ自社・自宅のIPアドレスを調査する必要があるのか
自社や自宅のネットワーク環境を管理しているつもりでも、管理外の資産、いわゆるシャドーITが公開されているケースは少なくありません。
例えば、一時的に検証用として立ち上げたサーバーや、自動更新によって設定が変わってしまったルーターなどが挙げられます。
もし意図しないポートが開放されていた場合、そこが侵入口として悪用されるリスクが極めて高くなります。
定期的にShodanで自社資産を検索することで、攻撃者より先にリスクを発見し、対策を講じることが可能になります。
特にテレワークの普及により、自宅のVPN機器やリモートデスクトップ(RDP)が不用意に公開されている事例が増えています。
セルフチェックを行うことで、本来クローズドであるべきネットワークが外部に露出していないかを確認し、セキュリティ水準を維持できます。
ステップ1:自身のグローバルIPアドレスを確認する
セルフチェックを始める前に、まず自身の環境が外部からどのように認識されているかを知るためのIPアドレスを確認しましょう。
社内ネットワークの場合は、IT部門に問い合わせるか、ゲートウェイの情報を確認することで判明します。
個人の自宅環境であれば、ブラウザで「IPアドレス確認」と検索することで、現在使用しているグローバルIPアドレスを簡単に知ることができます。
ただし、プロバイダによってはIPアドレスが動的に変化するため、調査時点でのアドレスを控えておくことが必要です。
また、自社で保有しているIPアドレスの範囲(IPレンジ)がわかっている場合は、その範囲全体を調査対象に含めるのが望ましいでしょう。
ステップ2:Shodanの検索機能を活用して情報を収集する
自身のIPアドレスが判明したら、実際にShodanを使って検索を実行します。
基本的な検索方法(IPアドレス直接指定)
もっとも単純な方法は、Shodanの検索窓に直接IPアドレスを入力することです。
検索結果が表示された場合、そのIPアドレスに対して外部からのアクセスが可能であり、何らかの情報が収集されていることを意味します。
検索結果画面では、検出されたポート番号、プロトコル、ホスティング情報、そして収集されたバナーデータが一覧表示されます。
高度な検索フィルタの利用
特定の範囲や条件で絞り込みたい場合は、Shodan独自の検索フィルタ(Search Query)を利用します。
以下の表は、セルフチェックでよく使われる主要なフィルタの一覧です。
| フィルタ名 | 使用例 | 説明 |
|---|---|---|
net | net:203.0.113.0/24 | 指定したサブネット範囲内を検索します。 |
hostname | hostname:example.com | 特定のドメイン名に関連する資産を検索します。 |
port | port:3389 | 特定のポートが開放されている端末を絞り込みます。 |
org | org:"Example Corp" | 特定の組織名で登録されているIPアドレスを検索します。 |
これらのフィルタを組み合わせることで、「自社のIP範囲内で、特定のポートが空いている端末」などを効率的に抽出できます。
Shodanの検索結果から読み解くリスク
検索結果が表示されたら、内容を精査して潜在的な脆弱性がないかを確認します。
オープンポートと稼働サービス
まず確認すべきは、意図しないポートが開放されていないかという点です。
例えば、Webサーバーであれば80番や443番の開放は正常ですが、データベース用の3306番(MySQL)や5432番(PostgreSQL)が外部に露出している場合は危険です。
また、SSH(22番)やRDP(3389番)などのリモートアクセス用ポートが全世界に向けて開放されている場合、ブルートフォース攻撃の標的になります。
本来はVPN経由でのみアクセスを許可すべきサービスが、直接インターネットから見える状態になっていないかを厳しくチェックしてください。
既知の脆弱性(CVE)の確認
Shodanの有料アカウントや開発者向け機能を利用している場合、スキャンされたバナー情報に基づいて、そのシステムに含まれる既知の脆弱性(CVE)が表示されることがあります。
これは、使用されているソフトウェアのバージョンが古く、修正パッチが適用されていないことを示唆しています。
「Vulnerabilities」というセクションに赤いラベルでCVE番号が表示されている場合は、早急な対応が求められます。
攻撃者はこの情報を元に、既知の脆弱性を突くエクスプロイトコードを実行する可能性が高いからです。
Shodan CLIを用いた自動監視の導入
Webインターフェースだけでなく、コマンドラインツール(CLI)を使用することで、セルフチェックを自動化することも可能です。
Pythonがインストールされている環境であれば、以下のコマンドでShodan CLIをセットアップできます。
# Shodan CLIのインストール
pip install shodan
# APIキーの初期化(公式サイトから取得したAPIキーを入力)
shodan init YOUR_API_KEY
インストール後、自身のIPアドレス情報を取得するには以下のコマンドを実行します。
# 特定のIPアドレスの情報を表示
shodan host 203.0.113.1
実行結果は、以下のような形式で出力されます。
203.0.113.1
Hostnames: static.example.com
City: Tokyo
Country: Japan
Organization: Example Corp
Number of open ports: 2
Ports:
80/tcp
443/tcp
このようにCLIを活用すれば、定期的にスクリプトを実行し、前回の調査時と比較して差分がないかを確認する監視体制を構築できます。
セルフチェック後の対策とセキュリティ強化
Shodanでの調査により問題が見つかった場合は、直ちに対策を講じる必要があります。
まず、不要なポートはファイアウォールやルーターの設定で閉鎖してください。
業務上どうしても外部からのアクセスが必要な場合は、接続元のIPアドレスを制限するか、VPNを導入して通信をカプセル化することを強く推奨します。
次に、ソフトウェアのバージョンを最新の状態にアップデートし、既知の脆弱性を解消してください。
バナー情報からソフトウェア名やバージョンが露出している場合は、設定ファイルを編集してバナー情報の出力を抑制(バナー隠蔽)することも有効な手段です。
また、デフォルトパスワードのまま運用されているデバイスがないか、認証設定を再確認することも忘れないでください。
まとめ
Shodanは攻撃者にとっても強力なツールですが、防御側が正しく活用することで、非常に強力なセキュリティ診断ツールへと変わります。
自社や自宅の公開資産を客観的な視点で把握することは、現代のサイバーセキュリティにおいて欠かせないプロセスです。
一度のチェックで満足せず、環境の変化に合わせて定期的にスキャンを実行し、資産の露出状況を常に監視するようにしましょう。
「敵を知り己を知れば百戦危うからず」という言葉通り、まずは自分の環境がインターネットからどう見えているかを知ることから始めてください。
適切な設定と迅速な対応こそが、高度化するサイバー攻撃から自らの資産を守る唯一の手段となります。
