OS: Ubuntu Server 18.04 LTS
ulogd2 2.0.5-5
iptablesのログだけをひとところに集めて管理するならulogdが良さそうな様子であった。aptでシュッと入るのでたいへん楽ちんである。
$ sudo apt install ulogd2
デフォルトではふんだんにプラグインを読み込み、XMLで出力したりデータベースへ登録するなど有益な機能を提供する風情であるけれどもちょっと使い熟せそうにないので必要最小限の設定だけを残す。プラグインの設定はまず最初に plugin=
の項目を記述してそのあと各々のプラグインの設定を書き記すという順番が肝要であった。順番を守らぬと決してulogdが起動しない。
$ sudo cp -av /etc/ulogd.conf /etc/ulogd.conf.orig $ sudo vi /etc/ulogd.conf [global] logfile="/var/log/ulog/ulogd.log" loglevel=3 plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_inppkt_NFLOG.so" plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_filter_IFINDEX.so" plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_filter_IP2STR.so" plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_filter_PRINTPKT.so" plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_output_LOGEMU.so" plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_output_SYSLOG.so" plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_raw2packet_BASE.so" stack=log1:NFLOG,base1:BASE,ifi1:IFINDEX,ip2str1:IP2STR,print1:PRINTPKT,emu1:LOGEMU [log1] group=0 [emu1] file="/var/log/iptables.log" sync=1
設定を終えたらulogdがいざこざ無く起動するか確認しておく。起動しなければ journalctl -xe
コマンドの出力や設定ファイルで指定したulogdのログ /var/log/ulog/ulogd.log
の内容を精査して設定を修正する。
$ sudo systemctl start ulogd.service $ sudo systemctl status ulogd.service ● ulogd2.service - Netfilter Userspace Logging Daemon (snip) Sep 24 16:10:17 server systemd[1]: Started Netfilter Userspace Logging Daemon.
滞りなく起動すればあとはiptablesの設定をする。--nflog-group
はulogd.confで設定したgroupの番号を指定し、--nflog-threshold
ではulogdが処理を開始するまでにキューへ溜め込むパケット数を2から50の間で指定する。ulogdのドキュメントには--nflog-qthreshold
と記載されている箇所もあるけれどもiptablesへ持ち込むと unknown option "--nflog-qthreshold"
と木で鼻を括ったような態度であるから書き損じではないかとおもう。
$ sudo iptables -A INPUT -j NFLOG --nflog-group 0 --nflog-prefix 'iptables:' --nflog-threshold 20 $ tail -f /var/log/iptables.log Sep 24 16:21:08 ubuntu kernel: [346292.067933] iptables: IN=eth1 OUT= MAC=00:0c:29:61:28:2a:74:03:bd:7f:5b:83:08:00 SRC=91.189.92.20 DST=192.168.0.150 LEN=40 TOS=0x08 PREC=0x00 TTL=42 ID=40114 DF PROTO=TCP SPT=443 DPT=52736 WINDOW=0 RES=0x00 RST URGP=0 (snip)
さらっぴんのiptablesへこの設定だけ放り込むと膨大な量のログで溢れ返って仕舞うから、正常に動作していることが確認できたら一旦設定を削除して改めて本番の設定をおこなうのが良さそうである。
$ sudo iptables -nvxL --line-numbers Chain INPUT (policy ACCEPT 31 packets, 1936 bytes) num pkts bytes target prot opt in out source destination 1 31 1936 NFLOG all -- * * 0.0.0.0/0 0.0.0.0/0 nflog-prefix "iptables:" nflog-threshold 20 $ sudo iptables -D INPUT 1
参考:
- /usr/share/doc/ulogd2/ulogd.html
- The netfilter.org “ulogd” project