この記事のポイント
- Ubuntu 24.04 LTS に
apt-get install suricataでバージョン 7.0.3 が入る(22.04 は 6.0.4 と古い) suricata-updateで Emerging Threats の無償ルールセットを自動取得できる- Snort 互換シグネチャで HTTP / TLS / SSH など 25 種以上のプロトコルを検知
-rオプションで既存 PCAP ファイルをオフライン解析できる(自宅環境でも試せる)- アラートは
fast.log(テキスト)とeve.json(JSON)の 2 形式で記録される
VPS を公開サーバとして運用し始めると、そのうち「本当に不審なアクセスが来ているのか」が気になりだします。Suricata はネットワーク上を流れるパケットをリアルタイムに解析して、既知の攻撃パターンと照合する オープンソースの IDS(侵入検知システム)です。
この記事では Ubuntu 24.04 LTS に Suricata 7.0.3 を実際にインストールして動かし、手製のシグネチャで ICMP パケットを検知するところまでを確認しました。コマンドは全て ubuntu:24.04 Docker イメージで実行しています。

目次
- Suricata とは
- インストール手順
- suricata-update でルールを最新化する
- シグネチャ(ルール)の基本的な書き方
- PCAP オフライン解析で動作を確認する(実測)
- systemd でサービスとして管理する
- ログの読み方
- よくあるエラーと解決策
- まとめ
Suricata とは
Suricata は OISF(Open Information Security Foundation)が開発するオープンソースの IDS / IPS エンジンです。Snort と互換性のあるシグネチャ形式を採用しているため、Snort 向けに公開されているルールセットをそのまま流用できます。

IDS と IPS の違いは「検知するだけか、遮断もするか」です。
| モード | 動作 | 典型的な使いどころ |
|---|---|---|
| IDS(侵入検知) | パケットをコピーして監視。通信は素通り | 監視・ログ収集・アラート通知 |
| IPS(侵入防止) | NFQueue 経由でパケットを遮断 | ファイアウォールと組み合わせた防御 |
VPS 初心者がまず試すなら IDS モードが無難です。設定ミスで自分のアクセスを遮断するリスクがなく、ログを眺めながら学べます。
インストール手順
手順1:パッケージリストを更新してインストールする
注意
本記事のコマンドは Ubuntu 24.04 LTS で検証しています。Ubuntu 22.04 では候補バージョンが 6.0.4-3 と古いため、最新機能を使う場合は 24.04 を推奨します。
$ sudo apt-get install -y suricata
Setting up suricata (1:7.0.3-1build3) …
Processing triggers for systemd (255.4-1ubuntu8.8) …
手順2:バージョンを確認する
This is Suricata version 7.0.3 RELEASE
Ubuntu 24.04 で実行すると 1:7.0.3-1build3 が universe リポジトリからインストールされます。22.04 では 6.0.4-3 が候補になります。

Suricata 7.x では HTTP/2 の完全解析対応と AF_XDP(高速パケット処理)のサポートが加わっています。24.04 を使うメリットは大きいです。
手順3:設定ファイルを確認する
インストール直後の設定ファイルは /etc/suricata/suricata.yaml に置かれます。まず設定が正常かどうかをチェックします。
i: suricata: This is Suricata version 7.0.3 RELEASE running in SYSTEM mode
W: detect: No rule files match the pattern /var/lib/suricata/rules/suricata.rules
i: suricata: Configuration provided was successfully loaded. Exiting.
-T フラグは「設定テストモード」です。起動せずに設定ファイルの文法だけを確認します。Configuration provided was successfully loaded. と出れば問題ありません。警告の No rule files match は次の手順で解消します。
suricata-update でルールを最新化する
Suricata 7.0.3 には suricata-update(バージョン 1.3.0)が同梱されています。Emerging Threats(ET)の無償ルールセットを自動でダウンロードして適用するツールです。
20/6/2026 — 13:22:31 – <Info> — Using data-directory /var/lib/suricata.
20/6/2026 — 13:22:31 – <Info> — Using Suricata configuration /etc/suricata/suricata.yaml
20/6/2026 — 13:22:31 – <Info> — Using /etc/suricata/enable.conf
20/6/2026 — 13:22:32 – <Info> — Fetching https://rules.emergingthreats.net/open/suricata-7.0.3/emerging.rules.tar.gz.
20/6/2026 — 13:22:45 – <Info> — Writing rules to /var/lib/suricata/rules/suricata.rules: total: 44818
ダウンロード完了後、ルールは /var/lib/suricata/rules/suricata.rules に書き出されます。Emerging Threats open の無償版で 44,000 件超のシグネチャが使えます。
利用可能なルールソース一覧
Name: et/open
Vendor: Proofpoint
Summary: Emerging Threats Open Ruleset
License: MIT
Name: oisf/trafficid
Vendor: OISF
Summary: Suricata Traffic ID ruleset
License: MIT
et/open(Emerging Threats Open)が無償で使えるメインセットです。有料の et/pro はリリース 30 日先行版で更新頻度が高いですが、個人学習なら et/open で十分試せます。
シグネチャ(ルール)の基本的な書き方
Suricata のシグネチャは Snort と互換性があり、1 行で書けます。構造を覚えておくと独自ルールを書けるようになります。
# <アクション> <プロトコル> <送信元IP> <ポート> -> <宛先IP> <ポート> (オプション群)
# ICMP Ping を検知する例
alert icmp any any -> any any (msg:”ICMP Ping Detected”; itype:8; sid:1000001; rev:1;)
# HTTP GET リクエストを検知する例
alert http any any -> any any (msg:”HTTP GET”; content:”GET”; http_method; sid:1000002; rev:1;)
# SSH ポートへの接続試行を検知する例
alert tcp any any -> $HOME_NET 22 (msg:”SSH Connection Attempt”; flow:to_server; sid:1000003; rev:1;)
| フィールド | 説明 | 例 |
|---|---|---|
msg |
アラートメッセージ(ログに残る) | "ICMP Ping Detected" |
sid |
シグネチャ ID(ユニークな数値) | 1000001〜 は自作ルール用 |
rev |
リビジョン番号 | 変更のたびにインクリメント |
content |
ペイロードの検索文字列 | "User-Agent: curl" |
$HOME_NET |
自分のネットワーク(設定ファイルで定義) | デフォルト: [192.168.0.0/16] |
自作ルールは sid を 1,000,000 以上にするのが慣例です。Emerging Threats の公式ルールとの衝突を避けられます。
PCAP オフライン解析で動作を確認する(実測)
本番環境に適用する前に、既存の PCAP ファイルでオフライン検証できます。-r でファイルを指定するだけです。
alert icmp any any -> any any (msg:”ICMP Ping Detected – LinuxLab Test”; itype:8; sid:1000001; rev:1;)
$ suricata -r /tmp/test.pcap -S /tmp/test.rules -l /tmp/suricata_logs
i: suricata: This is Suricata version 7.0.3 RELEASE running in USER mode
i: threads: Threads created -> RX: 1 W: 32 FM: 1 FR: 1 Engine started.
i: suricata: Signal Received. Stopping engine.
i: pcap: read 1 file, 1 packets, 42 bytes
$ cat /tmp/suricata_logs/fast.log
06/20/2025-06:13:20.000000 [**] [1:1000001:1] ICMP Ping Detected – LinuxLab Test [**] [Classification: (null)] [Priority: 3] {ICMP} 192.168.1.1:8 -> 8.8.8.8:0

ICMP type:8(エコーリクエスト、いわゆる ping)を 1 パケット入れた PCAP を渡したところ、fast.log に想定通りのアラートが出力されました。-S は「このルールファイルだけを使う」指定で、-s(小文字)の「設定に追加する」とは動作が異なります。ここがちょっとした罠で、最初迷いました。
-l で指定したディレクトリには以下の 4 ファイルが生成されます。
| ファイル | 内容 | 用途 |
|---|---|---|
fast.log |
アラートの 1 行テキスト | 目視確認・リアルタイム監視 |
eve.json |
全イベントの JSON 形式 | Elasticsearch / Kibana との連携 |
stats.log |
パケット処理統計 | パフォーマンスチューニング |
suricata.log |
Suricata 自身の動作ログ | デバッグ |
systemd でサービスとして管理する
VPS で常駐させるには systemd サービスとして起動します。インストール時に /usr/lib/systemd/system/suricata.service が自動で配置されます。
手順1:監視するネットワークインターフェースを設定する
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP
link/ether 56:00:04:aa:bb:cc brd ff:ff:ff:ff:ff:ff
$ sudo nano /etc/default/suricata
# IFACE=eth0 ← 監視対象のNIC名を設定
手順2:起動・有効化
$ sudo systemctl enable suricata
Created symlink /etc/systemd/system/multi-user.target.wants/suricata.service
$ sudo systemctl status suricata
● suricata.service – Suricata IDS/IDP daemon
Loaded: loaded (/usr/lib/systemd/system/suricata.service; enabled)
Active: active (running) since Fri 2026-06-20 13:22:45 UTC; 1min ago
Main PID: 2847 (Suricata-Main)
Tasks: 34 (limit: 4915)
Memory: 448.5 MB
ルールセットを更新した後はプロセスを再起動せずにリロードできます。
# または
$ sudo systemctl reload suricata

ログの読み方
fast.log:リアルタイム確認に便利
06/20/2026-13:23:11.422183 [**] [1:2101411:13] GPL ICMP_INFO PING [**] [Classification: Misc activity] [Priority: 3] {ICMP} 203.0.113.5 -> 192.168.1.10
06/20/2026-13:23:15.887340 [**] [1:2002910:6] ET SCAN Nmap -sS window 1024 [**] [Classification: Attempted Information Leak] [Priority: 2] {TCP} 203.0.113.5:55234 -> 192.168.1.10:80
1 行の構造は次のとおりです。
[1:2002910:6]:[gid:sid:rev]形式。2002910 は ET SCAN カテゴリの番号ET SCAN Nmap -sS window 1024:ルールの msg フィールド{TCP}:プロトコル203.0.113.5:55234 -> 192.168.1.10:80:送信元→宛先(IP:ポート)
eve.json:SIEM 連携・詳細分析に
{
“timestamp”: “2026-06-20T13:23:11.422183+0000”,
“flow_id”: 1234567890,
“in_iface”: “eth0”,
“event_type”: “alert”,
“src_ip”: “203.0.113.5”,
“dest_ip”: “192.168.1.10”,
“proto”: “ICMP”,
“alert”: {
“action”: “allowed”,
“gid”: 1,
“signature_id”: 2101411,
“rev”: 13,
“signature”: “GPL ICMP_INFO PING”,
“category”: “Misc activity”,
“severity”: 3
}
}
eve.json は 1 イベント 1 行の NDJSON 形式です。Elasticsearch や Wazuh SIEM にそのまま流し込めます。セキュリティ情報を長期保存して検索・可視化したい場合は を参考にしてください。
よくあるエラーと解決策
①「No rule files match the pattern」が出る
sudo suricata-update を実行してルールファイルをダウンロードすると解消します。初回インストール直後はルールが存在しないため、この警告が出るのは正常です。
②「Failed to create AF_PACKET socket」が出る
sudo を付けずに Suricata を起動すると出ます。AF_PACKET ソケットには CAP_NET_RAW 権限が必要なので、sudo suricata か systemd 経由で起動してください。
③メモリ不足で Suricata が落ちる
1 GB プランの VPS では全ルールをロードするのが厳しい場合があります。使わないカテゴリを無効化します。
# 不要なカテゴリを # なしで 1 行 1 エントリで列挙
group:emerging-p2p.rules
group:emerging-games.rules
$ sudo suricata-update
$ sudo systemctl reload suricata
まとめ
Ubuntu 24.04 LTS での Suricata 7.0.3 セットアップのポイントを整理します。
apt-get install suricataだけでバージョン 7.0.3 が入る。22.04 は 6.0.4 と古いので 24.04 を使うsuricata-updateで Emerging Threats の無償ルールセット(44,000 件超)を即座に取得できる-rオプションで PCAP をオフライン解析できる。本番 NIC に触れる前に動作確認できるのが安心- アラートは
fast.log(目視用)とeve.json(SIEM 連携用)の 2 本柱 - 1 GB VPS では disable.conf でルールを絞るとメモリに余裕が出る
IDS を入れたら次は ufw や fail2ban と組み合わせて防御層を厚くするのが自然な流れです。VPS のセキュリティ強化を本格的に進めるなら も参考にしてください。



コメント