1. 導入:なぜ今、ASMが重要なのか
近年、サプライチェーン攻撃の増加により、リソースの限られた中小企業であってもサイバー攻撃の標的となるリスクが急増しています。攻撃者は、インターネット上に公開されている「把握できていないIT資産」を入り口として侵入を試みます。本稿では、IPAが公開した「ASM診断および事例集作成業務」報告書の内容を紐解き、自社のセキュリティ対策を効率的に進めるためのASM活用の重要性を解説します。
2. 基礎知識:ASM(Attack Surface Management)とは
ASM(Attack Surface Management)とは、インターネットからアクセス可能な自社のIT資産を網羅的に把握し、脆弱性や不適切な設定を継続的にモニタリングする手法です。
従来の手法(ペネトレーションテスト等)が「特定のシステム」に焦点を当てるのに対し、ASMは「攻撃者から見える自社の全資産」を客観的に可視化します。これにより、「存在すら忘れていた古いサーバ」や「管理外のIoT機器」が引き起こすリスクを特定できるのが最大の特徴です。
3. 実装/解決策:ASM的な発想を自社運用に取り入れる
ASMツールを導入するのが理想ですが、まずは「自社の公開資産を棚卸しする」という意識を持つことが第一歩です。具体的には以下の手順でリスクを低減させます。
1. 資産の洗い出し: 公開しているドメイン、IPアドレス、社外からアクセス可能なVPN機器、リモートデスクトップ設定を確認する。
2. 脆弱性の特定: 公開資産に古いソフトウェアや、認証が甘いサービスが残っていないか確認する。
3. 運用ルールの策定: 外部公開サーバのライフサイクル管理と、不要なポートの閉鎖を徹底する。
4. サンプルプログラム:公開ポートを簡易チェックするスクリプト
Pythonを使用して、自社のサーバーで公開されている主要なポート(HTTP/HTTPS/SSH等)が開いていないかを確認する簡易チェックツールです。運用環境の棚卸しにご活用ください。
import socket
チェック対象のIPアドレスとポートリスト
target_ip = “192.168.1.1” # ここを自社の公開IPに変更してください
target_ports = [22, 80, 443, 3389] # SSH, HTTP, HTTPS, RDP
def check_open_ports(ip, ports):
print(f”— {ip} のポートスキャンを開始します —“)
for port in ports:
# ソケットを作成して接続を試みる
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.settimeout(1) # 1秒でタイムアウト
result = s.connect_ex((ip, port))
if result == 0:
print(f”[警告] ポート {port} は開いています。不要なら閉鎖を検討してください。”)
else:
print(f”[OK] ポート {port} は閉じられています。”)
if __name__ == “__main__”:
# 実行環境に合わせて適宜調整してください
check_open_ports(target_ip, target_ports)
5. 応用・注意点:現場で陥りやすいバグの回避策
ASMの運用で最も陥りやすいのは「一度診断して満足してしまうこと」です。IT環境はクラウド利用やテレワークの導入により常に変化しています。
- 継続性の維持: 一度限りの調査ではなく、四半期に一度など「定期的な棚卸し」をルーチン化してください。
- 情報の断捨離: 使っていないサービスは即座に停止することが、最も効果的な防御策です。
- 事例集の活用: IPAが公開した「中小企業のための実例で学ぶサイバーセキュリティリスク事例集」には、他社の被害事例と改善策が具体的に載っています。自社の状況に近い事例を参考に、経営層へ対策予算を説明する際の根拠資料として活用することをお勧めします。
適切なASMの実践は、限られたリソースの中で「優先すべき対策」を明確にするための最短ルートです。まずは自社の公開資産の可視化から始めてみてください。

コメント