Skip to content

DHCPのIPを元に suricata.yaml を自動で更新するスクリプトを作る #30

@01rabbit

Description

@01rabbit

✅ ステップ 1:現在のIPを取得するコマンド

例えば wlan0 にDHCPで割り当てられてるIPを確認するには:

ip -4 addr show dev wlan0 | grep inet | awk '{print $2}'

これで 192.168.1.100/24 みたいなCIDR形式が取れます。


✅ ステップ 2:これを HOME_NET に自動反映するスクリプト

#!/bin/bash

IFACE=wlan0
YAML_PATH=/etc/suricata/suricata.yaml

# 現在のIPアドレスを取得
HOME_NET=$(ip -4 addr show dev "$IFACE" | grep inet | awk '{print $2}')

# バックアップ
cp "$YAML_PATH" "$YAML_PATH.bak.$(date +%Y%m%d_%H%M%S)"

# HOME_NETを書き換え(Python使うのが安全)
python3 - <<EOF
import yaml

with open("$YAML_PATH", 'r') as f:
    config = yaml.safe_load(f)

config['vars']['address-groups']['HOME_NET'] = f"[{HOME_NET}]"

with open("$YAML_PATH", 'w') as f:
    yaml.dump(config, f, default_flow_style=False)
EOF

echo "HOME_NET updated to $HOME_NET in $YAML_PATH"

💡 このスクリプトを update_home_net.sh とかで保存して、Suricataを起動する前に実行するようにすればOK!


✅ ステップ 3:Suricata起動時に使う

sudo ./update_home_net.sh
sudo suricata -i wlan1 -c /etc/suricata/suricata.yaml -vv

🔁 オプション:常時動的にしたい場合(ちょっと上級)

  • systemdのUnitファイルに組み込む
  • DHCP取得後の dhclient-exit-hooks.d スクリプトに組み込む
  • Suricataをコンテナで動かしているなら、エントリポイントで書き換え

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions