動作テスト
[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