MENU

Suricata入門|オープンソースIDSでネットワーク侵入を検知する実践設定ガイド

ネットワークに何が流れているか、本当に把握できていますか?ファイアウォールやVPNでアクセス制御をしていても、許可した通信の中に攻撃が紛れ込んでいることがあります。「侵入されてから気づく」では、取り返しのつかない被害につながります。

この記事では、オープンソースのIDS/IPS(侵入検知・防御システム)「Suricata」を使って、ネットワークトラフィックをリアルタイムで監視・検知する環境を構築する方法を現場目線で解説します。インストールから基本設定、ルールの管理まで、情シス1人体制でも導入できるレベルで説明します。

目次

Suricataとは?

Suricataは、Open Information Security Foundation(OISF)が開発するオープンソースのネットワーク型IDS/IPSです。商用製品と遜色ない検知能力を持ちながら無料で利用できるため、中小企業から大規模組織まで幅広く採用されています。

主な特徴:
マルチスレッド処理: 複数のCPUコアを活用し、高速なパケット検査が可能です。高トラフィックな環境でも処理落ちしにくいのが特徴です
Snortルール互換: 既存のSnortルールをそのまま流用でき、ルール資産の再利用が可能です
EVEログ(JSON形式): 構造化ログをSIEMやElasticsearchと連携しやすい形式で出力します
ファイル抽出: 通信中に転送されるファイルを自動的に抽出・保存できます(マルウェア解析に活用可能)
Luaスクリプト対応: 複雑な検知ロジックをLuaスクリプトで記述できます

従来からのSnortと並んで、現在のオープンソースIDS/IPS市場ではSuricataが事実上のスタンダードになっています。

Suricataのアーキテクチャと3つの動作モード

Suricataは主に3つのモードで動作します。どのモードから始めるかは、運用環境とリスク許容度によって決まります。

モード 動作 用途
IDSモード 通信を監視して検知のみ。通信は遮断しない まず可視化から始めたい場合(推奨スタート)
IPSモード 検知した通信を自動的に遮断する 自動防御を有効にしたい場合(チューニング後)
パケットキャプチャ解析 保存済みのpcapファイルをオフラインで解析する インシデント調査や事後分析

Suricataはネットワークインターフェースからパケットをキャプチャし、シグネチャ(ルール)とマッチングして脅威を検知します。一致した場合はアラートをEVEログに記録し、IPSモードでは通信を即座にドロップできます。

中小企業では最初はIDSモードで運用し、誤検知の傾向を把握してからIPSモードへ移行するのが現実的です。いきなりIPSモードで動かすと、業務通信が誤って遮断されるリスクがあります。

Suricataのインストール手順

1. Ubuntu/Debian系への導入

公式のPPAリポジトリを使うのが最もシンプルです。常に最新安定版を取得できます。

# PPAリポジトリを追加 sudo add-apt-repository ppa:oisf/suricata-stable sudo apt update # Suricataをインストール sudo apt install suricata # バージョン確認 suricata --build-info | grep "Suricata version"

2. AlmaLinux/Rocky Linux系への導入

EPELリポジトリを有効にすることでインストールできます。

# EPELリポジトリを有効化 sudo dnf install epel-release # Suricataをインストール sudo dnf install suricata # バージョン確認 suricata --build-info | grep "Suricata version"

基本設定(suricata.yaml)

Suricataの設定ファイルは /etc/suricata/suricata.yaml にあります。行数は多いですが、最初に変更すべき箇所は2か所だけです。

3. 監視インターフェースの設定

まず、監視対象のネットワークインターフェース名を確認します。

# インターフェース名を確認 ip link show

suricata.yamlaf-packet セクションでインターフェースを指定します。

# /etc/suricata/suricata.yaml(変更箇所のみ抜粋) af-packet: - interface: eth0 # 実際のインターフェース名に変更(例: ens3, enp0s3など) cluster-id: 99 cluster-type: cluster_flow defrag: yes

4. HOME_NETの設定

自社ネットワークのIPアドレス帯を定義します。これにより「内部から外部への不審な通信」と「外部から内部への攻撃」を正確に区別できるようになります。

# /etc/suricata/suricata.yaml(変更箇所のみ) vars: address-groups: HOME_NET: "[192.168.1.0/24,10.0.0.0/8]" # 自社のネットワーク帯に変更 EXTERNAL_NET: "!$HOME_NET"

ルールセットの管理

Suricataの検知精度はルール(シグネチャ)の品質に依存します。ルールの取得・更新・管理には suricata-update コマンドを使います。

5. Suricata-Updateによるルール更新

# 利用可能なルールソースを確認 sudo suricata-update list-sources # ETオープンルールセット(無料・定評あり)を有効化 sudo suricata-update enable-source et/open # ルールを更新してSuricataに反映 sudo suricata-update sudo systemctl restart suricata

et/open(Emerging Threats Open)はセキュリティコミュニティが継続的にメンテナンスしているルールセットで、マルウェアのC2通信・エクスプロイト・スキャン行為など幅広い脅威をカバーしています。無料で利用できるため、まずこれから始めるのが定石です。

ルール更新はcronで自動化しておきましょう。

# /etc/cron.d/suricata-update(例: 毎日午前2時に更新) 0 2 * * * root /usr/bin/suricata-update && /usr/bin/systemctl reload suricata

6. カスタムルールの書き方

自社環境固有の検知ルールを追加したい場合は、/etc/suricata/rules/local.rules に記述します。

# /etc/suricata/rules/local.rules # 例: 外部から内部への大量ポート接続試行(ポートスキャン)を検知 alert tcp $EXTERNAL_NET any -> $HOME_NET any ( msg:"LOCAL ポートスキャン検知(大量SYN)"; flags:S; threshold: type both, track by_src, count 20, seconds 10; classtype:attempted-recon; sid:9000001; rev:1; )

ルールの基本構文は「アクション プロトコル 送信元IP 送信元ポート → 宛先IP 宛先ポート (オプション)」の形式です。カスタムルールのSIDは9,000,000番以降を使うのが慣習となっています。

作成したルールファイルを設定ファイルに追記します。

# /etc/suricata/suricata.yaml に追記 rule-files: - suricata.rules - local.rules # カスタムルールを追加

起動と動作確認

# 設定ファイルのバリデーション(起動前に必ず実施) sudo suricata -T -c /etc/suricata/suricata.yaml -v # Suricataを起動・自動起動設定 sudo systemctl enable suricata sudo systemctl start suricata # アラートログをリアルタイム確認(jqが必要: sudo apt install jq) sudo tail -f /var/log/suricata/eve.json | jq 'select(.event_type == "alert")' # シンプルなテキスト形式のアラートログ sudo tail -f /var/log/suricata/fast.log

-T オプションは設定ファイルの構文チェックのみを行い、Suricataを起動しません。設定変更後は必ずこのコマンドでバリデーションしてから再起動するクセをつけましょう。

中小企業でも今日からできること

「本格的なIDSの導入はハードルが高い」と感じる方も多いですが、Suricataは段階的に始められます。

まずIDSモードで可視化から: 通信を止めずに監視するだけなので、業務への影響はゼロです。数週間ログを観察して、自社ネットワークの「通常の状態」を把握してから次のステップへ進みましょう
インターネット境界だけに配置: 最初はゲートウェイサーバーやファイアウォールの近くに1台置くだけで、外部からの攻撃トラフィックの大半を検知できます
et/openルールだけで十分: 最初から有料ルールセットを購入する必要はありません。無料の et/open でも一般的な攻撃の大半はカバーできます
アラート通知の自動化: EVEログを監視してメール通知と組み合わせるスクリプトを組むことで、24時間監視体制を人手なしで実現できます

Linuxのログ監視や権限管理については、姉妹サイトLinuxMaster.JPで詳しく解説しています。Suricataのログ分析と合わせてご活用ください。

よくある誤解と注意点

誤解1: IDSを入れれば安全になる
IDSはあくまで「検知」のツールです。攻撃が来たときに気づけるようになりますが、それ自体が攻撃を防ぐわけではありません。防御にはファイアウォール・パッチ管理・最小権限の原則などとの組み合わせが必要です。

誤解2: 大量のアラートはすべて対処が必要
導入直後は誤検知(False Positive)が大量に発生することがあります。内部スキャンツールや監視システムの通信が誤ってアラートになるケースも多いため、ホワイトリスト登録・ルール抑制のチューニングが必要です。急いでIPSモードに切り替えるのは禁物です。

誤解3: TLS暗号化通信は検知できない
TLS通信の内容そのものはデフォルトでは解析できませんが、接続先のSNI(サーバー名)や証明書のCN、接続先IPなどのメタデータは検査できます。SNIベースの検知だけでも、既知の悪性ドメインへの通信を多数検知できます。

注意: IPSモード移行は慎重に
IPSモードに切り替えると、誤検知が業務システムへの接続断に直結します。移行前にはテスト環境での検証と、十分なルールのチューニングを行ってください。

本記事のまとめ

ステップ 内容 難易度
インストール PPAまたはEPELで2コマンドで完了
基本設定 インターフェース・HOME_NET名の変更のみ
ルール管理 suricata-updateで自動更新・cron化
カスタムルール local.rulesに独自シグネチャを追記
IPSモードへの移行 十分なチューニング後に段階的に実施

Suricataはオープンソースでありながら、商用IDS/IPSと同等の検知能力を持つ優れたツールです。ファイアウォールやVPNと組み合わせることで、多層防御(ディフェンス・イン・デプス)の重要な一要素となります。まずはIDSモードで導入し、自社ネットワークの可視化から始めてみてください。

「ネットワークセキュリティ」の記事を読む

このテーマに関連する解説記事を一覧でまとめています。あわせてご覧ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次