Contents
前提条件
今回はSuricata IDS と ElasticStack を 次のサーバーにインストールします
・1台目サーバー Suricata IDS & Filebeat : Debian13.0 IPアドレス(192.168.11.83)
・2台目サーバー ElasticStack & kibana : Ubuntu24.04 IPアドレス(192.168.11.85)
root以外のsudoユーザーで実行する
1台目サーバー Suricata インストール
SURICATA IDS/IPSはネットワーク上の通信を監視し、不審なトラフィックを検知するオープンソースのIDSです。基本的な仕組みはシグネチャ型であるため、あらかじめ設定した不正な通信を検知できます。また、Suricataは検知だけでなく防御も行えることが特徴です。
1.Suricata のインストール
①必須パッケージをインストール
| 1 | # apt -y install wget curl dirmngr apt-transport-https gnupg2 ca-certificates lsb-release debian-archive-keyring unzip | 
➁Suricata のインストール
| 1 2 | # apt update # apt -y install suricata | 
バージョンの確認
| 1 2 | # suricata -V This is Suricata version 7.0.10 RELEASE | 
システムの再起動時に実行されるように suricata.service を有効にします
| 1 2 3 4 | # systemctl enable suricata.service Synchronizing state of suricata.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable suricata | 
Suricataサービスを最初に構成する必要があるため、サービスを停止します。
| 1 | # systemctl stop suricata.service | 
2.Suricataを構成
①Suricataがネットワークパケットを検査するインターフェースとIPアドレスを決定
| 1 2 3 | # ip --brief add lo               UNKNOWN        127.0.0.1/8 ::1/128 ens33            UP             192.168.11.83/24 fe80::20c:29ff:febf:c38f/64 | 
/etc/suricata/suricata.yamlファイル編集
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # vi /etc/suricata/suricata.yaml # 18行目 : 変更(自ネットワーク) HOME_NET: "[192.168.11.0/24]" # 135行目 : 変更 community-id: false → community-id: true # 621行目 : 変更 af-packet:   - interface: eth0 ↓ af-packet:   - interface: ens33 ←各自のインターフェース名に変更 | 
SURICATAはルールのライブリロードをサポートしており、実行中のSURICATAのプロセスを再起動することなく、ルールの追加、削除、編集を行うことができます。ライブリロードオプションを有効にするには、設定ファイルの一番下までスクロールし、以下の行を追加します
detect-engine:
- rule-reload: true
この設定により、実行中のプロセスにSIGUSR2システムシグナルを送ることができ、SURICATAは変更されたルールをメモリに再ロードします。以下のようなコマンドは、プロセスを再起動することなく、SURICATAプロセスにルールセットの再読み込みを通知します:
| 1 | # kill -usr2 $(pidof suricata) | 
➁ルールセットを追加
Suricata には suricata-update というツールがあり、外部プロバイダーからルールセットを取得することができます。以下のように実行すると、SURICATAサーバーの最新のルールセットをダウンロードできます
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | # suricata-update -o /etc/suricata/rules 20/8/2025 -- 10:24:06 - <Info> -- Using data-directory /var/lib/suricata. 20/8/2025 -- 10:24:06 - <Info> -- Using Suricata configuration /etc/suricata/suricata.yaml 20/8/2025 -- 10:24:06 - <Info> -- Using /etc/suricata/rules for Suricata provided rules. 20/8/2025 -- 10:24:06 - <Info> -- Found Suricata version 7.0.10 at /usr/bin/suricata. 20/8/2025 -- 10:24:06 - <Info> -- Loading /etc/suricata/suricata.yaml 20/8/2025 -- 10:24:06 - <Info> -- Disabling rules for protocol pgsql 20/8/2025 -- 10:24:06 - <Info> -- Disabling rules for protocol modbus 20/8/2025 -- 10:24:06 - <Info> -- Disabling rules for protocol dnp3 20/8/2025 -- 10:24:06 - <Info> -- Disabling rules for protocol enip 20/8/2025 -- 10:24:06 - <Info> -- No sources configured, will use Emerging Threats Open 20/8/2025 -- 10:24:06 - <Info> -- Fetching https://rules.emergingthreats.net/open/suricata-7.0.10/emerging.rules.tar.gz.  100% - 5023988/5023988 20/8/2025 -- 10:24:08 - <Info> -- Done. -----省略--------- 20/8/2025 -- 10:24:08 - <Info> -- Ignoring file f625293e2432dbf07497d06349de6f0b/rules/emerging-deleted.rules 20/8/2025 -- 10:24:11 - <Info> -- Loaded 60469 rules. 20/8/2025 -- 10:24:11 - <Info> -- Disabled 13 rules. 20/8/2025 -- 10:24:11 - <Info> -- Enabled 0 rules. 20/8/2025 -- 10:24:11 - <Info> -- Modified 0 rules. 20/8/2025 -- 10:24:11 - <Info> -- Dropped 0 rules. 20/8/2025 -- 10:24:11 - <Info> -- Enabled 136 rules for flowbit dependencies. 20/8/2025 -- 10:24:11 - <Info> -- Backing up current rules. 20/8/2025 -- 10:24:11 - <Info> -- Writing rules to /etc/suricata/rules/suricata.rules: total: 60469; enabled: 44686; added: 60469; removed 0; modified: 0 20/8/2025 -- 10:24:12 - <Info> -- Writing /etc/suricata/rules/classification.config 20/8/2025 -- 10:24:12 - <Info> -- Testing with suricata -T. 20/8/2025 -- 10:24:39 - <Info> -- Done. | 
suricata-updateが無料のEmerging Threats ET Open Rulesを取得し、Suricataの/etc/suricata/rules/suricata.rulesファイルに保存したことを示しています。また、処理されたルールの数を示し、この例では60469が追加され、そのうち44686が有効になりました。
➂ルール・セット・プロバイダーの追加
既定のプロバイダー リストを一覧表示
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | # suricata-update list-sources Name: abuse.ch/feodotracker   Vendor: Abuse.ch   Summary: Abuse.ch Feodo Tracker Botnet C2 IP ruleset   License: CC0-1.0 Name: abuse.ch/sslbl-blacklist   Vendor: Abuse.ch   Summary: Abuse.ch SSL Blacklist   License: CC0-1.0   Replaces: sslbl/ssl-fp-blacklist Name: abuse.ch/sslbl-c2   Vendor: Abuse.ch   Summary: Abuse.ch Suricata Botnet C2 IP Ruleset   License: CC0-1.0 Name: abuse.ch/sslbl-ja3   Vendor: Abuse.ch   Summary: Abuse.ch Suricata JA3 Fingerprint Ruleset   License: CC0-1.0   Replaces: sslbl/ja3-fingerprints Name: abuse.ch/urlhaus   Vendor: abuse.ch   Summary: Abuse.ch URLhaus Suricata Rules   License: CC0-1.0 Name: aleksibovellan/nmap   Vendor: aleksibovellan   Summary: Suricata IDS/IPS Detection Rules Against NMAP Scans   License: MIT Name: et/open   Vendor: Proofpoint   Summary: Emerging Threats Open Ruleset   License: MIT Name: et/pro   Vendor: Proofpoint   Summary: Emerging Threats Pro Ruleset   License: Commercial   Replaces: et/open   Parameters: secret-code   Subscription: https://www.proofpoint.com/us/threat-insight/et-pro-ruleset Name: etnetera/aggressive   Vendor: Etnetera a.s.   Summary: Etnetera aggressive IP blacklist   License: MIT Name: oisf/trafficid   Vendor: OISF   Summary: Suricata Traffic ID ruleset   License: MIT Name: pawpatrules   Vendor: pawpatrules   Summary: PAW Patrules is a collection of rules for IDPS / NSM Suricata engine   License: CC-BY-SA-4.0 Name: ptrules/open   Vendor: Positive Technologies   Summary: Positive Technologies Open Ruleset   License: Custom Name: scwx/enhanced   Vendor: Secureworks   Summary: Secureworks suricata-enhanced ruleset   License: Commercial   Parameters: secret-code   Subscription: https://www.secureworks.com/contact/ (Please reference CTU Countermeasures) Name: scwx/malware   Vendor: Secureworks   Summary: Secureworks suricata-malware ruleset   License: Commercial   Parameters: secret-code   Subscription: https://www.secureworks.com/contact/ (Please reference CTU Countermeasures) Name: scwx/security   Vendor: Secureworks   Summary: Secureworks suricata-security ruleset   License: Commercial   Parameters: secret-code   Subscription: https://www.secureworks.com/contact/ (Please reference CTU Countermeasures) Name: stamus/lateral   Vendor: Stamus Networks   Summary: Lateral movement rules   License: GPL-3.0-only Name: stamus/nrd-14-open   Vendor: Stamus Networks   Summary: Newly Registered Domains Open only - 14 day list, complete   License: Commercial   Parameters: secret-code   Subscription: https://www.stamus-networks.com/stamus-labs/subscribe-to-threat-intel-feed Name: stamus/nrd-30-open   Vendor: Stamus Networks   Summary: Newly Registered Domains Open only - 30 day list, complete   License: Commercial   Parameters: secret-code   Subscription: https://www.stamus-networks.com/stamus-labs/subscribe-to-threat-intel-feed Name: stamus/nrd-entropy-14-open   Vendor: Stamus Networks   Summary: Newly Registered Domains Open only - 14 day list, high entropy   License: Commercial   Parameters: secret-code   Subscription: https://www.stamus-networks.com/stamus-labs/subscribe-to-threat-intel-feed Name: stamus/nrd-entropy-30-open   Vendor: Stamus Networks   Summary: Newly Registered Domains Open only - 30 day list, high entropy   License: Commercial   Parameters: secret-code   Subscription: https://www.stamus-networks.com/stamus-labs/subscribe-to-threat-intel-feed Name: stamus/nrd-phishing-14-open   Vendor: Stamus Networks   Summary: Newly Registered Domains Open only - 14 day list, phishing   License: Commercial   Parameters: secret-code   Subscription: https://www.stamus-networks.com/stamus-labs/subscribe-to-threat-intel-feed Name: stamus/nrd-phishing-30-open   Vendor: Stamus Networks   Summary: Newly Registered Domains Open only - 30 day list, phishing   License: Commercial   Parameters: secret-code   Subscription: https://www.stamus-networks.com/stamus-labs/subscribe-to-threat-intel-feed Name: tgreen/hunting   Vendor: tgreen   Summary: Threat hunting rules   License: GPLv3 | 
例としてtgreen/hunting ルールセットを含める場合
| 1 2 3 4 5 6 7 8 9 10 | # suricata-update enable-source tgreen/hunting -D /etc/suricata/rules 20/8/2025 -- 10:32:45 - <Info> -- Using Suricata configuration /etc/suricata/suricata.yaml 20/8/2025 -- 10:32:45 - <Info> -- Using /etc/suricata/rules for Suricata provided rules. 20/8/2025 -- 10:32:45 - <Info> -- Found Suricata version 7.0.10 at /usr/bin/suricata. 20/8/2025 -- 10:32:45 - <Warning> -- Source index does not exist, will use bundled one. 20/8/2025 -- 10:32:45 - <Warning> -- Please run suricata-update update-sources. 20/8/2025 -- 10:32:45 - <Info> -- Creating directory /etc/suricata/rules/update/sources 20/8/2025 -- 10:32:45 - <Info> -- Enabling default source et/open 20/8/2025 -- 10:32:45 - <Info> -- Source tgreen/hunting enabled | 
アップデートを実行
| 1 | # suricata-update -o /etc/suricata/rules | 
3.Suricata 構成のテスト
①検証ツールを実行
実行する前にsuricata構成ファイルのsuricata.rulesのパスを変更する
| 1 2 3 4 5 | # vi /etc/suricata/suricata.yaml 2187行目 : コメントにし、その下に下記を追加 #default-rule-path: /var/lib/suricata/rules default-rule-path: /etc/suricata/rules | 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # suricata -T -c /etc/suricata/suricata.yaml -v Notice: suricata: This is Suricata version 7.0.10 RELEASE running in SYSTEM mode Info: cpu: CPUs/cores online: 2 Info: suricata: Running suricata under test mode Info: suricata: Setting engine mode to IDS mode by default Info: exception-policy: master exception-policy set to: auto Info: logopenfile: fast output device (regular) initialized: fast.log Info: logopenfile: eve-log output device (regular) initialized: eve.json Info: logopenfile: stats output device (regular) initialized: stats.log Info: detect: 1 rule files processed. 44686 rules successfully loaded, 0 rules failed, 0 Info: threshold-config: Threshold config parsed: 0 rule(s) found Info: detect: 44689 signatures processed. 964 are IP-only rules, 4384 are inspecting packet payload, 39119 inspect application layer, 109 are decoder event only Notice: suricata: Configuration provided was successfully loaded. Exiting. | 
Suricata service再起動
| 1 | # systemctl start suricata | 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # systemctl status suricata ● suricata.service - Suricata IDS/IDP daemon      Loaded: loaded (/usr/lib/systemd/system/suricata.service; enabled; preset: enabled)      Active: active (running) since Wed 2025-08-20 10:49:39 JST; 40s ago  Invocation: 0574b8b9b965426a8b68ceb4d6a4bbfa        Docs: man:suricata(8)              man:suricatasc(8)              https://suricata.io/documentation/     Process: 3737 ExecStart=/usr/bin/suricata -D --af-packet -c /etc/suricata/suricata.yaml --pidfile /run/suricata.pid (code=exited, status=0/SUCCESS)    Main PID: 3738 (Suricata-Main)       Tasks: 8 (limit: 4595)      Memory: 467.7M (peak: 468.2M)         CPU: 25.822s      CGroup: /system.slice/suricata.service              mq3738 /usr/bin/suricata -D --af-packet -c /etc/suricata/suricata.yaml --pidfile /run/suricata.pid Aug 20 10:49:39 Lepard systemd[1]: Starting suricata.service - Suricata IDS/IDP daemon... Aug 20 10:49:39 Lepard suricata[3737]: i: suricata: This is Suricata version 7.0.10 RELEASE running in SYSTEM mode Aug 20 10:49:39 Lepard systemd[1]: Started suricata.service - Suricata IDS/IDP daemon. | 
ログファイルを確認
| 1 2 3 4 5 6 7 8 9 10 11 12 | # tail -f /var/log/suricata/suricata.log [3738 - Suricata-Main] 2025-08-20 10:49:39 Info: logopenfile: fast output device (regular) initialized: fast.log [3738 - Suricata-Main] 2025-08-20 10:49:39 Info: logopenfile: eve-log output device (regular) initialized: eve.json [3738 - Suricata-Main] 2025-08-20 10:49:39 Info: logopenfile: stats output device (regular) initialized: stats.log [3738 - Suricata-Main] 2025-08-20 10:49:53 Info: detect: 1 rule files processed. 44686 rules successfully loaded, 0 rules failed, 0 [3738 - Suricata-Main] 2025-08-20 10:49:53 Info: threshold-config: Threshold config parsed: 0 rule(s) found [3738 - Suricata-Main] 2025-08-20 10:49:53 Info: detect: 44689 signatures processed. 964 are IP-only rules, 4384 are inspecting packet payload, 39119 inspect application layer, 109 are decoder event only [3738 - Suricata-Main] 2025-08-20 10:50:04 Warning: af-packet: ens33: AF_PACKET tpacket-v3 is recommended for non-inline operation [3738 - Suricata-Main] 2025-08-20 10:50:04 Info: runmodes: ens33: creating 2 threads [3738 - Suricata-Main] 2025-08-20 10:50:05 Info: unix-manager: unix socket '/var/run/suricata-command.socket' [3738 - Suricata-Main] 2025-08-20 10:50:05 Notice: threads: Threads created -> W: 2 FM: 1 FR: 1   Engine started. | 
4.Suricataルールのテスト
①次のコマンドを使用してET Openルール番号2100498をテストする
| 1 2 | # curl http://testmynids.org/uid/index.html uid=0(root) gid=0(root) groups=0(root) | 
②指定されたルール番号を使用してログファイルを確認する
| 1 2 3 | # grep 2100498 /var/log/suricata/fast.log 08/20/2025-10:51:30.373730  [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 143.204.80.119:80 -> 192.168.11.83:41568 | 
③/var/log/suricata/eve.log のイベント確認
jq をインストール
| 1 | # apt -y install jq | 
2100498シグネチャを検索して、EVEログのイベントをフィルタリング
2100498の値と一致するsignature_idキーを持つalertオブジェクトを表示
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | # jq 'select(.alert .signature_id==2100498)' /var/log/suricata/eve.json {   "timestamp": "2025-08-20T10:51:30.373730+0900",   "flow_id": 646171449384620,   "in_iface": "ens33",   "event_type": "alert",   "src_ip": "143.204.80.119",   "src_port": 80,   "dest_ip": "192.168.11.83",   "dest_port": 41568,   "proto": "TCP",   "pkt_src": "wire/pcap",   "community_id": "1:HIQMV6BNl507wC8/GcjRtQBp/8M=",   "tx_id": 0,   "tx_guessed": true,   "alert": {     "action": "allowed",     "gid": 1,     "signature_id": 2100498,     "rev": 7,     "signature": "GPL ATTACK_RESPONSE id check returned root",     "category": "Potentially Bad Traffic",     "severity": 2,     "metadata": {       "confidence": [         "Medium"       ],       "created_at": [         "2010_09_23"       ],       "signature_severity": [         "Informational"       ],       "updated_at": [         "2019_07_26"       ]     }   }, -------------------------------------------- -------------------------------------------- | 
④Custom Rulesの作成と適用
非SSHポートへのSSHトラフィックをスキャンするための以下のカスタム署名を作成し、/etc/suricata/rules/local.rulesというファイルにインクルードする(今回はIPv4のみ)
| 1 2 | # vi /etc/suricata/rules/local.rules alert ssh any any -> 192.168.11.83 !2244 (msg:"SSH TRAFFIC on non-SSH port"; flow:to_client, not_established; classtype: misc-attack; target: dest_ip; sid:1000000;) | 
suricata.yamlの編集
| 1 2 3 4 5 6 | # vi /etc/suricata/suricata.yaml 2191行目当たりにlocal.rulesを追加 rule-files:   - suricata.rules   - local.rules | 
SURICATAの設定を検証
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # suricata -T -c /etc/suricata/suricata.yaml -v Notice: suricata: This is Suricata version 7.0.10 RELEASE running in SYSTEM mode Info: cpu: CPUs/cores online: 2 Info: suricata: Running suricata under test mode Info: suricata: Setting engine mode to IDS mode by default Info: exception-policy: master exception-policy set to: auto Info: logopenfile: fast output device (regular) initialized: fast.log Info: logopenfile: eve-log output device (regular) initialized: eve.json Info: logopenfile: stats output device (regular) initialized: stats.log Info: detect: 2 rule files processed. 44687 rules successfully loaded, 0 rules failed, 0 Info: threshold-config: Threshold config parsed: 0 rule(s) found Info: detect: 44690 signatures processed. 964 are IP-only rules, 4384 are inspecting packet payload, 39120 inspect application layer, 109 are decoder event only Notice: suricata: Configuration provided was successfully loaded. Exiting. | 
先ほどのカスタム署名を編集し、ドロップアクションを使うように変換する
| 1 2 3 | # vi /etc/suricata/rules/local.rules drop ssh any any -> 192.168.11.83 !2244 (msg:"SSH TRAFFIC on non-SSH port"; flow:to_client, not_established; classtype: misc-attack; target: dest_ip; sid:1000000;) | 
⑤SURICATAを再設定し、IPSモードで再起動する
SURICATAはデフォルトではIDSモードで動作し、積極的にネットワークトラフィックをブロックすることはありません。IPSモードに切り替えるには、SURICATAのデフォルト設定を変更する必要がある。
systemctl edit コマンドを使って新しい systemd override ファイルを作成します:
| 1 | # systemctl edit suricata.service | 
冒頭に下記赤字部分を追加
###Editing /etc/systemd/system/suricata.service.d/override.conf
###Anything between here and the comment below will become the new contents of the file
[Service]
ExecStart=
ExecStart=/usr/bin/suricata -c /etc/suricata/suricata.yaml --pidfile /run/suricata.pid -q 0 -vvv
Type=simple
###Edits below this comment will be discarded
設定をリロードして、suricataを再起動
| 1 2 | # systemctl daemon-reload # systemctl restart suricata.service | 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | # systemctl status suricata.service ● suricata.service - Suricata IDS/IDP daemon      Loaded: loaded (/usr/lib/systemd/system/suricata.service; enabled; preset: enabled)     Drop-In: /etc/systemd/system/suricata.service.d              mqoverride.conf      Active: active (running) since Wed 2025-08-20 11:02:11 JST; 16s ago  Invocation: c0e0f6216d8c412bb56e4e9a986f60d4        Docs: man:suricata(8)              man:suricatasc(8)              https://suricata.io/documentation/    Main PID: 4046 (Suricata-Main)       Tasks: 1 (limit: 4595)      Memory: 443.5M (peak: 443.6M)         CPU: 16.819s      CGroup: /system.slice/suricata.service              mq4046 /usr/bin/suricata -c /etc/suricata/suricata.yaml --pidfile /run/suricata.pid -q 0 -vvv Aug 20 11:02:26 Lepard suricata[4046]: [4046] Perf: detect: AppLayer MPM "toserver file_data (http)": 17 Aug 20 11:02:26 Lepard suricata[4046]: [4046] Perf: detect: AppLayer MPM "toserver file_data (http)": 2 Aug 20 11:02:26 Lepard suricata[4046]: [4046] Perf: detect: AppLayer MPM "toclient file_data (http2)": 17 Aug 20 11:02:26 Lepard suricata[4046]: [4046] Perf: detect: AppLayer MPM "toclient file_data (http2)": 2 Aug 20 11:02:26 Lepard suricata[4046]: [4046] Perf: detect: AppLayer MPM "toserver file_data (http2)": 17 Aug 20 11:02:26 Lepard suricata[4046]: [4046] Perf: detect: AppLayer MPM "toserver file_data (http2)": 2 Aug 20 11:02:26 Lepard suricata[4046]: [4046] Perf: detect: AppLayer MPM "toserver file_data (smtp)": 17 Aug 20 11:02:26 Lepard suricata[4046]: [4046] Perf: detect: AppLayer MPM "toserver file_data (smtp)": 2 Aug 20 11:02:26 Lepard suricata[4046]: [4046] Perf: detect: Pkt MPM "icmpv6.hdr": 1 Aug 20 11:02:26 Lepard suricata[4046]: [4046] Perf: detect: Pkt MPM "ipv6.hdr": 1 | 
この変更で、UFWファイアウォールを使ってSuricataにトラフィックを送る準備ができました。
⑥Suricataにトラフィックを送るためのUFWの設定
Suricataに必要なルールをUFWに追加するには、/etc/ufw/before.rulesと/etc/ufw/before6.rulesのファイアウォールファイルを直接編集する必要があります。
| 1 | # vi /etc/ufw/before.rules | 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | # # rules.before # # Rules that should be run before the ufw command line added rules. Custom # rules should be added to one of these chains: #   ufw-before-input #   ufw-before-output #   ufw-before-forward # # Don't delete these required lines, otherwise there will be errors *filter :ufw-before-input - [0:0] :ufw-before-output - [0:0] :ufw-before-forward - [0:0] :ufw-not-local - [0:0] # End required lines #下記7行追加 ## Start Suricata NFQUEUE rules -I INPUT 1 -p tcp --dport 2244 -j NFQUEUE --queue-bypass -I OUTPUT 1 -p tcp --sport 2244 -j NFQUEUE --queue-bypass -I FORWARD -j NFQUEUE -I INPUT 2 -j NFQUEUE -I OUTPUT 2 -j NFQUEUE ## End Suricata NFQUEUE rules # allow all on loopback | 
同様に/etc/ufw/before6.rulesも変更する
UFWを再起動
| 1 | # systemctl restart ufw.service | 
前述のシグネチャsid:2100498に一致するパケットをドロップするようにする
| 1 2 3 4 5 | # vi /etc/suricata/rules/suricata.rules sid:2100498に一致する行を見つけalertをdropに変更 drop ip any any -> any any (msg:"GPL ATTACK_RESPONSE id check returned root"; content:"uid=0|28|root|29|"; classtype:bad-unknown; sid:2100498; rev:7; metadata:created_at 2010_09_23, updated_at 2019_07_26;) | 
シグネチャをリロード
| 1 | #  kill -usr2 $(pidof suricata) | 
curlを使ってこのルールをテストする
| 1 2 | # curl --max-time 5 http://testmynids.org/uid/index.html curl: (28) Operation timed out after 5002 milliseconds with 0 bytes received | 
jqを使ってeve.log確認 "action": "blocked"になっている
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | # jq 'select(.alert .signature_id==2100498)' /var/log/suricata/eve.json {   "timestamp": "2025-08-20T11:16:47.370226+0900",   "flow_id": 2061264724130643,   "event_type": "alert",   "src_ip": "143.204.80.46",   "src_port": 80,   "dest_ip": "192.168.11.83",   "dest_port": 48730,   "proto": "TCP",   "pkt_src": "wire/pcap",   "community_id": "1:3/y3oPBRWY4A6yp2K7OUTLkakjo=",   "tx_id": 0,   "tx_guessed": true,   "alert": {     "action": "blocked",     "gid": 1,     "signature_id": 2100498,     "rev": 7,     "signature": "GPL ATTACK_RESPONSE id check returned root",     "category": "Potentially Bad Traffic",     "severity": 2,     "metadata": {       "confidence": [         "Medium"       ],       "created_at": [         "2010_09_23"       ],       "signature_severity": [         "Informational"       ],       "updated_at": [         "2019_07_26"       ]     }   }, ---------------------------------------- ---------------------------------------- | 
Elastic stack 9.x インストール
Elastic Stackをインストール&設定して、SURICATAのログを可視化&検索できるようにする
本セクションは基本的には2台目のUbuntu24.04サーバーで行います
①Elastic stack 9.xのリポジトリ署名キーをインストール
| 1 | # apt update | 
| 1 | # apt install gnupg2 -y | 
| 1 2 | # wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | \ gpg --dearmor -o /etc/apt/trusted.gpg.d/elastic.gpg | 
➁Elastic Stack 9.xのリポジトリをインストール
| 1 | # echo "deb https://artifacts.elastic.co/packages/9.x/apt stable main" > /etc/apt/sources.list.d/elastic-9.x.list | 
update
| 1 | # apt update | 
➂Ubuntu 24.04 に Elasticsearch 9.x をインストール
| 1 | # apt install elasticsearch -y | 
インストール中、デフォルトでセキュリティ機能が有効になります;
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | The following NEW packages will be installed:   elasticsearch 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 665 MB of archives. After this operation, 1,261 MB of additional disk space will be used. Get:1 https://artifacts.elastic.co/packages/9.x/apt stable/main amd64 elasticsearch amd64 9.1.2 [665 MB] Fetched 665 MB in 34s (19.5 MB/s) Selecting previously unselected package elasticsearch. (Reading database ... 129938 files and directories currently installed.) Preparing to unpack .../elasticsearch_9.1.2_amd64.deb ... Creating elasticsearch group... OK Creating elasticsearch user... OK Unpacking elasticsearch (9.1.2) ... Setting up elasticsearch (9.1.2) ... --------------------------- Security autoconfiguration information ------------------------------ Authentication and authorization are enabled. TLS for the transport and HTTP layers is enabled and configured. The generated password for the elastic built-in superuser is : qPb8Zf1kVka5x+E53V0i If this node should join an existing cluster, you can reconfigure this with '/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token <token-here>' after creating an enrollment token on your existing cluster. You can complete the following actions at any time: Reset the password of the elastic built-in superuser with '/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic'. Generate an enrollment token for Kibana instances with  '/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana'. Generate an enrollment token for Elasticsearch nodes with '/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node'. ------------------------------------------------------------------------------------------------- ### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd  sudo systemctl daemon-reload  sudo systemctl enable elasticsearch.service ### You can start elasticsearch service by executing  sudo systemctl start elasticsearch.service Scanning processes... Scanning processor microcode... Scanning linux images... Pending kernel upgrade! Running kernel version:   6.8.0-71-generic Diagnostics:   The currently running kernel version is not the expected kernel version 6.8.0-78-generic. Restarting the system to load the new kernel will not be handled automatically, so you should consider rebooting. | 
認証と認可が有効になっている。
トランスポート層とHTTP層のTLSが有効化され、設定されます。
Elasticスーパーユーザーアカウント(elastic)とそのパスワードが作成されます。
④Ubuntu 上での Elasticsearch 9.x の設定
今回は基本的なシングルノードのクラスタなので、デフォルトの設定を使用します。
Elasticsearch の設定ファイル /etc/elasticsearch/elasticsearch.yml を確認すると、セキュリティの設定が有効になっていることがわかります
| 1 | # cat /etc/elasticsearch/elasticsearch.yml | 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #----------------------- BEGIN SECURITY AUTO CONFIGURATION ----------------------- # # The following settings, TLS certificates, and keys have been automatically     # generated to configure Elasticsearch security features on 20-08-2025 03:55:02 # # -------------------------------------------------------------------------------- # Enable security features xpack.security.enabled: true xpack.security.enrollment.enabled: true # Enable encryption for HTTP API client connections, such as Kibana, Logstash, and Agents xpack.security.http.ssl:   enabled: true   keystore.path: certs/http.p12 # Enable encryption and mutual authentication between cluster nodes xpack.security.transport.ssl:   enabled: true   verification_mode: certificate   keystore.path: certs/transport.p12   truststore.path: certs/transport.p12 # Create a new cluster with the current node only # Additional nodes can still join the cluster later cluster.initial_master_nodes: ["Lion"] # Allow HTTP API connections from anywhere # Connections are encrypted and require user authentication http.host: 0.0.0.0 # Allow other nodes to join the cluster from anywhere # Connections are encrypted and mutually authenticated #transport.host: 0.0.0.0 #----------------------- END SECURITY AUTO CONFIGURATION ------------------------- | 
⑤Elasticsearch起動
Elasticsearch を起動し、システム起動時に実行できるようにします
| 1 | # systemctl daemon-reload | 
| 1 2 | # systemctl enable --now elasticsearch # systemctl start elasticsearch | 
ステータスを確認
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # systemctl status elasticsearch ● elasticsearch.service - Elasticsearch      Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; preset: enabled)      Active: active (running) since Wed 2025-08-20 13:01:49 JST; 21s ago        Docs: https://www.elastic.co    Main PID: 8969 (java)       Tasks: 106 (limit: 9364)      Memory: 4.3G (peak: 4.3G)         CPU: 44.207s      CGroup: /system.slice/elasticsearch.service              tq8969 /usr/share/elasticsearch/jdk/bin/java -Xms4m -Xmx64m -XX:+UseSerialGC -Dcli.name=server -Dcli.script=/usr/share/elasticsearch/b>              tq9035 /usr/share/elasticsearch/jdk/bin/java -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPre>              mq9057 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller Aug 20 13:01:09 Lion systemd[1]: Starting elasticsearch.service - Elasticsearch... Aug 20 13:01:49 Lion systemd[1]: Started elasticsearch.service - Elasticsearch. | 
curlコマンドを使用してESのステータスを確認することもできます。IPは適宜置き換えてください
| 1 | # curl https://192.168.11.85:9200 --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic | 
プロンプトが表示されたら、Elasticsearchのインストール時に生成されたElasticsearchパスワードを入力します
以下のように出力される
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Enter host password for user 'elastic': {   "name" : "Lion",   "cluster_name" : "elasticsearch",   "cluster_uuid" : "WSBFzJjKTkaNIcnBcug1-Q",   "version" : {     "number" : "9.1.2",     "build_flavor" : "default",     "build_type" : "deb",     "build_hash" : "ca1a70216fbdefbef3c65b1dff04903ea5964ef5",     "build_date" : "2025-08-11T15:04:41.449624592Z",     "build_snapshot" : false,     "lucene_version" : "10.2.2",     "minimum_wire_compatibility_version" : "8.19.0",     "minimum_index_compatibility_version" : "8.0.0"   },   "tagline" : "You Know, for Search" } | 
また、HTTPポートとトランスポートポートの両方が開いていることを確認する;
| 1 2 3 4 | # ss -altnp | grep -E "9200|9300" LISTEN 0      4096                [::1]:9300         [::]:*    users:(("java",pid=9035,fd=582)) LISTEN 0      4096                    *:9200            *:*    users:(("java",pid=9035,fd=585)) LISTEN 0      4096   [::ffff:127.0.0.1]:9300            *:*    users:(("java",pid=9035,fd=583)) | 
⑥Elasticsearch パスワードのリセット
自動生成されたElasticユーザーパスワードが複雑すぎるので、/usr/share/elasticsearch/bin/elasticsearch-reset-passwordコマンドを使ってリセットする
パスワードをリセットするには、コマンドを実行する
| 1 | # /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic -i | 
| 1 2 3 4 5 6 7 8 | This tool will reset the password of the [elastic] user. You will be prompted to enter the password. Please confirm that you would like to continue [y/N]y Enter password for [elastic]:  Re-enter password for [elastic]:  Password for the [elastic] user successfully reset. | 
⑦Elasticsearch ログ
Elasticsearchは/var/log/elasticsearchパスにログを書き込みます。Elasticsearch インスタンスに問題がある場合に確認する必要があるログは /var/log/elasticsearch/CLUSTER_NAME.log です。
CLUSTER_NAME は elasticsearch.yaml ファイルの cluster.name オプションの値です。もしこの値を変更しなかった場合、デフォルトは elasticsearch となり、ログファイルは /var/log/elasticsearch/elasticsearch.log となります。
| 1 | # tail -f /var/log/elasticsearch/elasticsearch.log | 
ログ
| 1 2 3 4 5 6 7 8 9 10 | [2025-08-20T04:03:23,949][INFO ][o.e.c.m.MetadataCreateIndexService] [Lion] creating index [.ds-ilm-history-7-2025.08.20-000001] in project [default], cause [initialize_data_stream], templates [provided in request], shards [1]/[1] [2025-08-20T04:03:23,949][INFO ][o.e.c.m.MetadataCreateDataStreamService] [Lion] adding data stream [ilm-history-7] with write index [.ds-ilm-history-7-2025.08.20-000001], backing indices [], and aliases [] [2025-08-20T04:03:23,950][INFO ][o.e.c.r.a.AllocationService] [Lion] in project [default] updating number_of_replicas to [0] for indices [.ds-ilm-history-7-2025.08.20-000001] [2025-08-20T04:03:40,408][INFO ][o.e.x.s.s.QueryableBuiltInRolesSynchronizer] [Lion] Successfully synced [29] built-in roles to .security index [2025-08-20T04:03:44,830][INFO ][o.e.x.s.s.SecurityMigrationExecutor] [Lion] Security migration not needed. Setting current version to: [2] [2025-08-20T04:03:44,832][INFO ][o.e.c.r.a.AllocationService] [Lion] current.health="GREEN" message="Cluster health status changed from [YELLOW] to [GREEN] (reason: [shards started [[.ds-ilm-history-7-2025.08.20-000001][0]]])." previous.health="YELLOW" reason="shards started [[.ds-ilm-history-7-2025.08.20-000001][0]]" [2025-08-20T04:07:09,352][INFO ][o.e.x.s.a.f.FileUserPasswdStore] [Lion] users file [/etc/elasticsearch/users] changed. updating users... [2025-08-20T04:07:09,354][INFO ][o.e.x.s.a.f.FileUserRolesStore] [Lion] users roles file [/etc/elasticsearch/users_roles] changed. updating users roles... [2025-08-20T04:07:34,364][INFO ][o.e.x.s.a.f.FileUserPasswdStore] [Lion] users file [/etc/elasticsearch/users] changed. updating users... [2025-08-20T04:07:34,366][INFO ][o.e.x.s.a.f.FileUserRolesStore] [Lion] users roles file [/etc/elasticsearch/users_roles] changed. updating users roles... | 
Kibana 9.x インストール
本セクションは基本的には2台目のUbuntu24.04サーバーで行います
①インストール
| 1 | # apt install kibana | 
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | Reading package lists... Done Building dependency tree... Done Reading state information... Done The following NEW packages will be installed:   kibana 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. Need to get 362 MB of archives. After this operation, 1,122 MB of additional disk space will be used. Get:1 https://artifacts.elastic.co/packages/9.x/apt stable/main amd64 kibana amd64 9.1.2 [362 MB] Fetched 362 MB in 1min 20s (4,506 kB/s) Selecting previously unselected package kibana. (Reading database ... 131496 files and directories currently installed.) Preparing to unpack .../kibana_9.1.2_amd64.deb ... Unpacking kibana (9.1.2) ... Setting up kibana (9.1.2) ... Creating kibana group... OK Creating kibana user... OK Created Kibana keystore in /etc/kibana/kibana.keystore | 
➁Kibana 9 を設定
Kibana はデフォルトで localhost:5601 で実行されるように設定されている。外部からのアクセスを許可するには、設定ファイルを編集し、server.hostの値をインターフェイスIPに置き換える。
| 1 | # vi /etc/kibana/kibana.yml | 
以下のように書き換える
| 1 2 3 4 5 6 7 | # Kibana is served by a back end server. This setting specifies the port to use. server.port: 5601 ... # To allow connections from remote users, set this parameter to a non-loopback address. #server.host: "localhost" server.host: "192.168.11.85" | 
➂Kibana-Elasticsearch Enrollment Token の生成
Kibana インスタンスを、セキュリティ機能が有効になっている既存の Elasticsearch クラスタと通信するように設定するには、登録トークンが必要です。Kibana 用の Enrollment Token は以下のコマンドで生成できる
| 1 | # /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana | 
| 1 | eyJ2ZXIiOiI4LjE0LjAiLCJhZHIiOlsiMTkyLjE2OC4xMS44NTo5MjAwIl0sImZnciI6IjMwYzRiYWNjMjgxZDkzMGY5NzMyMzM5N2Q1ZjUxNTYzYzQyZDk1NTdmNDNlNDIwZjkxMWFjMTgzMjFmMzUwMjciLCJrZXkiOiI1ejVPWDVnQi1hWGhacW92LTR4MDp6VzJrMGNTVW03NEpBQkxSYVduTG13In0= | 
④Kibana 暗号化キーの生成
Kibana は、Kibana 関連インデックスのデータの暗号化からセッション情報の保存まで、いくつかの領域で暗号化キーを使用する。必要なキーは次のとおりです
- xpack.encryptedSavedObjects.encryptionKey:ダッシュボードやビジュアライゼーションなどの保存されたオブジェクトを暗号化するために使用されます。
- xpack.reporting.encryptionKey: 保存されたレポートの暗号化に使用
- xpack.security.encryptionKey: セッション情報の暗号化に使用
これらは以下のコマンドで生成する
| 1 | # /usr/share/kibana/bin/kibana-encryption-keys generate | 
次のように出力される
| 1 2 3 4 | Settings: xpack.encryptedSavedObjects.encryptionKey: 789e09eede8e552d877251f45e74b277 xpack.reporting.encryptionKey: c8a1d297e4bf0dbbdbb68fbee7d45b88 xpack.security.encryptionKey: 26433f15715a29f207b4cb7dd3597341 | 
上記をKibanaの設定ファイルkibana.ymlに挿入する
| 1 2 3 | # echo -e "xpack.encryptedSavedObjects.encryptionKey: 789e09eede8e552d877251f45e74b277 xpack.reporting.encryptionKey: c8a1d297e4bf0dbbdbb68fbee7d45b88 xpack.security.encryptionKey: 26433f15715a29f207b4cb7dd3597341" >> /etc/kibana/kibana.yml | 
⑤Kibana の実行
Kibana 9 を起動し、システム起動時に実行できるようにする。
| 1 2 | # systemctl enable --now kibana # systemctl start kibana | 
status
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | # systemctl status kibana ● kibana.service - Kibana      Loaded: loaded (/usr/lib/systemd/system/kibana.service; enabled; preset: enabled)      Active: active (running) since Wed 2025-08-20 13:32:01 JST; 24s ago        Docs: https://www.elastic.co    Main PID: 10203 (node)       Tasks: 11 (limit: 9364)      Memory: 268.5M (peak: 446.0M)         CPU: 13.508s      CGroup: /system.slice/kibana.service              mq10203 /usr/share/kibana/bin/../node/glibc-217/bin/node /usr/share/kibana/bin/../src/cli/dist Aug 20 13:32:02 Lion kibana[10203]: Native global console methods have been overridden in production environment. Aug 20 13:32:05 Lion kibana[10203]: [2025-08-20T13:32:05.878+09:00][INFO ][root] Kibana is starting Aug 20 13:32:05 Lion kibana[10203]: [2025-08-20T13:32:05.913+09:00][INFO ][node] Kibana process configured with roles: [background_tasks, ui] Aug 20 13:32:11 Lion kibana[10203]: [2025-08-20T13:32:11.870+09:00][INFO ][plugins-service] The following plugins are disabled: "cloudChat,cloudExperiments,cloudFullStory,dataUsage,profilingDataAccess,prof> Aug 20 13:32:11 Lion kibana[10203]: [2025-08-20T13:32:11.958+09:00][INFO ][http.server.Preboot] http server running at http://192.168.11.85:5601 Aug 20 13:32:12 Lion kibana[10203]: [2025-08-20T13:32:12.113+09:00][INFO ][plugins-system.preboot] Setting up [1] plugins: [interactiveSetup] Aug 20 13:32:12 Lion kibana[10203]: [2025-08-20T13:32:12.135+09:00][INFO ][preboot] "interactiveSetup" plugin is holding setup: Validating Elasticsearch connection configuration… Aug 20 13:32:12 Lion kibana[10203]: [2025-08-20T13:32:12.166+09:00][INFO ][root] Holding setup until preboot stage is completed. Aug 20 13:32:19 Lion kibana[10203]: i Kibana has not been configured. Aug 20 13:32:19 Lion kibana[10203]: Go to http://192.168.11.85:5601/?code=642051 to get started. | 
出力の最後のほうに以下のように表示される
| 1 2 | i Kibana has not been configured. Go to http://192.168.11.85:5601/?code=642051 to get started. | 
提供されたKibanaのURL(codeを含む)をコピーしてブラウザで使用し、Kibanaにアクセスしてセットアップを完了する。
同様に、Kibanaのログは/var/log/kibana/kibana.logと/var/log/syslogで利用できる。
⑥Kibana9 ダッシュボードにアクセスする
http://192.168.11.85:5601/?code=642051.にアクセスする
(各自の適切なアドレスをコピー)
UFWが起動している場合は、Kibanaポートを開く
| 1 2 3 4 | # ufw allow 5601/tcp Rule added # ufw reload Firewall reloaded | 
Kibana 9にアクセスすると、ウェルカムページでElasticの設定を求められます。
最初に、生成した登録トークンを入力する。
/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana, コマンドを使用して生成された Kibana トークンをコピーし、ボックスに貼り付ける
http://192.168.11.85:5601/?code=642051にアクセス

トークンをペーストすると、Kibana が自動的に Elasticsearch に接続します。
Configure Elastic をクリックします。設定が保存され、Elasticsearch が設定、再起動されます。

ログインページに移動します。生成されたElasticユーザー認証情報を使用してログインします。
Username : elastic
Password : わかりやすく再生成したパスワード 

ウェルカムページで、「Explore on my own」をクリックしてKibana 9.xダッシュボードに進む。

Filebeat 9のインストール
ELKスタックを使用してDebian13.0からログを収集して監視するには、Filebeatをインストールする必要があります。
本作業は1台目サーバー Debian13.0 IPアドレス(192.168.11.83)で行います。
①Elastic Reposをインストールする
Filebeat 9をインストールするには、Elastic 9.xリポジトリをインストールする必要があります。
| 1 2 | # wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | \ gpg --dearmor > /etc/apt/trusted.gpg.d/elk.gpg | 
| 1 2 | # echo "deb https://artifacts.elastic.co/packages/9.x/apt stable main" \ > /etc/apt/sources.list.d/elastic-9.list | 
update
| 1 | # apt update | 
Filebeat 9をインストール
| 1 | # apt install filebeat | 
➁Filebeat Loggingの設定
デフォルトのfilebeat設定ファイルは/etc/filebeat/filebeat.ymlです
Filebeatがログを独自のログファイルに書き込むようにするには、設定ファイルに以下の設定を入力する
| 1 2 3 4 5 6 7 8 9 | # cat >> /etc/filebeat/filebeat.yml << 'EOL' logging.level: info logging.to_files: true logging.files:   path: /var/log/filebeat   name: filebeat   keepfiles: 7   permissions: 0640 EOL | 
➂Filebeatをデータ処理系に接続する
Filebeatをデータ処理系に接続するように設定します。今回はElasticsearchです。
ログを直接Elasticsearchに送信するには、Filebeat設定ファイルを編集し、出力設定セクションを更新します。
Elasticsearch 9への接続にはSSLと認証が必要です。
Elasticsearchのポート9200/tcpに接続できることを確認する(事前に2台目サーバーの9200ポートを開放しておく)
| 1 2 3 4 5 | # telnet 192.168.11.85 9200 Trying 192.168.11.85... Connected to 192.168.11.85. Escape character is '^]'. | 
④Elasticsearch CA証明書作成
Elasticsearch CA証明書をダウンロードし、任意のディレクトリに保存します(今回は/etc/filebeat/elastic-ca.crtとして保存します)
| 1 2 3 | # openssl s_client -connect 192.168.11.85:9200 \ -showcerts </dev/null 2>/dev/null | \ openssl x509 -outform PEM > /etc/filebeat/elastic-ca.crt | 
FilebeatがElasticsearchの認証に使用する認証情報を取得します。今回は、デフォルトのスーパー管理者、Elasticユーザの認証情報を使用します。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | # vi /etc/filebeat/filebeat.yml 127行目当たり Kibanaセクションを下記のように変更 #host: "localhost:5601" host: "192.168.11.85:5601" 161行目当たり  Elasticsearch Output セクションを下記のように変更 output.elasticsearch:   # Array of hosts to connect to.   #hosts: ["localhost:9200"]   hosts: ["192.168.11.85:9200"]   # Performance preset - one of "balanced", "throughput", "scale",   # "latency", or "custom".   preset: balanced   # Protocol - either `http` (default) or `https`.   protocol: "https"   ssl.certificate_authorities: ["/etc/filebeat/elastic-ca.crt"]   # Authentication credentials - either API key or username/password.   #api_key: "id:api_key"   username: "elastic"   password: "Password"   ←2台目サーバーで作成したelasticのパスワード | 
⑤設定ファイルテスト
| 1 2 | # filebeat test config Config OK | 
⑥Filebeatの出力接続をテスト
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # filebeat test output elasticsearch: https://192.168.11.85:9200...   parse url... OK   connection...     parse host... OK     dns lookup... OK     addresses: 192.168.11.85     dial up... OK   TLS...     security: server's certificate chain verification is enabled     handshake... OK     TLS version: TLSv1.3     dial up... OK   talk to server... OK   version: 9.1.2 | 
⑦FilebeatのSuricataモジュールを有効にする
modules.d/suricata.ymlを下記のように変更する
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # cp /etc/filebeat/modules.d/suricata.yml.disabled /etc/filebeat/modules.d/suricata.yml # vi /etc/filebeat/modules.d/suricata.yml # Module: suricata # Docs: https://www.elastic.co/guide/en/beats/filebeat/main/filebeat-module-suricata.html - module: suricata   # All logs   eve:     enabled: true     var.paths: ["/var/log/suricata/eve.json"]     # Set custom paths for the log files. If left empty,     # Filebeat will choose the paths depending on your OS.     #var.paths: | 
FilebeatのSuricataモジュールを有効にします
| 1 | # filebeat modules enable suricata | 
⑧初期環境をセットアップ
SIEMダッシュボードとパイプラインをElasticsearchにロードします
filebeat setupコマンドを実行
| 1 | # filebeat setup -e | 
⑨Filebeatサービスを開始
| 1 | # systemctl start filebeat.service | 
⑩Kibanaで確認
Kibanaにログインし直します。http://192.168.11.85:5601にアクセスします。
一番上の検索フィールドに「Suricata Events Overview」と入力し、[Filebeat Suricata]Events Overviewをクリック

過去 15 分間のすべての Suricata イベントが表示されます

悪質なトラフィックのアラートを表示するにはSuricataロゴの横にあるAlertsテキストをクリック

elasticスーパーユーザーアカウントを使う必要がないように、新しいユーザーアカウントを作成します。
左上三本線マークをクリックし、[Management]の[Stack Management] を選択

「security」「Users」選択

右上の"Create user"ボタンをクリック

新規ユーザー情報を入力し、Privilegesでkibana_admin、kibana_system、monitoring_user、editorのロールを割り当て、最後に[Create user]をクリック

現在のプロファイルからログアウトし、新しく作成したユーザーアカウントでログインできることを確認する。

