Snort3(起動/停止)

動作テスト

    [root]# chown -R snort:snort /usr/local/snort

    # IDS モード(トラフィックを監視・検出できるが、ブロックできない)
    [root]# /usr/local/snort/bin/snort -c /usr/local/snort/etc/snort/snort.lua
                --plugin-path /usr/local/snort/extra -i eth0 -l /var/log/snort
                -D -u snort -g snort --create-pidfile -k none

    -c                    : 設定ファイル指定
    --plugin-path       ; プラグイン検索ディレクトリ
    -i eth0              : インターフェース指定
    -l /var/log/snort   : ログ出力ディレクトリ
    -D                    : デーモンモードで起動
    -u snort -g snort   : 起動ユーザー、グループ
    --create-pidfile    : デーモンモードでなくても PID ファイル作成
    -k none              : チェックサム検証無効

    # IPS モード(トラフィックをブロックできる)
    [root]# /usr/local/snort/bin/snort -c /usr/local/snort/etc/snort/snort.lua
                --plugin-path /usr/local/snort/extra -i eth0:eth1
                -l /var/log/snort -u snort -g snort --create-pidfile -k none
                -Q --daq afpacket

    -Q       : インラインモード有効
    --daq  : パケット取得モジュール(afpacket, ipfw, pcap)

    afpacket(インラインモードをサポートする DAQ モジュール)
    afpacket モジュールをインラインで使用するには、-i オプションでインターフェースのペアを指定

    [root]# ps aux | grep snort
    [root]# killall snort

起動/停止(RedHat, Ubuntu : Systemd)

    ・ユニットファイル記述

    ユーザー設定(優先される、設定変更はこちらに対して行う)
    [root]# cp -v /etc/systemd/system/snortd.service

[Unit]
Description=Snort 3 Intrusion Detection and Prevention service
After=syslog.target network.target

[Service]
Type = simple
Environment=SYSTEMD_LOG_LEVEL=debug,console:info
ExecStart=/usr/local/snort/bin/snort -c /usr/local/snort/etc/snort/snort.lua --plugin-path /usr/local/snort/extra -i eth0 -l /var/log/snort -D -u snort -g snort --create-pidfile -k none
ExecReload=/bin/kill -SIGHUP $MAINPID
Restart = on-failure
RestartSec = 10s

SystemCallArchitectures = native
SystemCallFilter=~@clock
SystemCallFilter=~@cpu-emulation
SystemCallFilter=~@debug
SystemCallFilter=~@module
#× SystemCallFilter=~@mount
SystemCallFilter=~@obsolete
#× SystemCallFilter=~@privileged
SystemCallFilter=~@raw-io
SystemCallFilter=~@reboot
#× SystemCallFilter=~@resources
SystemCallFilter=~@swap

RestrictRealtime = yes

RemoveIPC = yes
PrivateIPC = yes

CapabilityBoundingSet =~ CAP_SYS_TIME CAP_SYS_PACCT CAP_KILL CAP_WAKE_ALARM \
    CAP_(DAC_*|FOWNER|IPC_OWNER) CAP_BPF CAP_LINUX_IMMUTABLE \
    CAP_IPC_LOCK CAP_SYS_MODULE CAP_SYS_TTY_CONFIG CAP_SYS_BOOT CAP_SYS_CHROOT \
    CAP_BLOCK_SUSPEND CAP_LEASE CAP_(CHOWN|FSETID|SETFCAP) CAP_SET(UID|GID|PCAP) \
    CAP_SYS_PTRACE CAP_SYS_(NICE|RESOURCE) CAP_SYS_RAWIO CAP_NET_ADMIN \
    CAP_NET_(BIND_SERVICE|BROADCAST|RAW) CAP_AUDIT_* CAP_SYS_ADMIN CAP_SYSLOG \
    CAP_MKNOD CAP_MAC_*
AmbientCapabilities = CAP_NET_ADMIN CAP_NET_RAW CAP_IPC_LOCK

UMask = 0077

ProtectSystem = strict
PrivateTmp = yes
PrivateMounts = yes
ProtectHome = yes
ReadWritePaths = /usr/local/snort /var/log/snort

PrivateDevices = yes
ProtectClock = yes
ProtectKernelLogs = yes
ProtectKernelModules = yes
ProtectKernelTunables = yes
ProtectControlGroups = yes

NoNewPrivileges = yes
#× MemoryDenyWriteExecute = yes
ProcSubset = pid

RestrictSUIDSGID = yes
ProtectHostname = yes
LockPersonality = yes
ProtectProc = invisible

[Install]
WantedBy=multi-user.target

    ・ユニットファイル登録/変更時

    [root]# systemctl daemon-reload

    ・systemd によるセキュリティスコア

    [root]# systemd-analyze security snortd.service

    ・起動/停止

    [root]# systemctl { start stop reload-or-restart status } snortd.service

    ・自動起動/停止

    [root]# systemctl { enable disable } snortd.service

    ・起動/自動起動を同時に行う

    [root]# systemctl enable --now snortd.service

    ・停止/自動停止を同時に行う

    [root]# systemctl disable --now snortd.service

    ・確認

    [root]# ps aux | grep snort
    [root]# systemctl -l status snortd.service