ufwのログにおける【AUDIT】とはなにか

ufwはiptablesのように複雑な設定を行う必要がないのでとても使いやすいです。今回はそのログについてです。

先日ufwのログレベルをデバッグのためfullに引き上げると/var/log/ufw.logに以下のような行が出現するようになりました。

Jan  7 15:36:12 vm3 kernel: [ 5722.897470] [UFW AUDIT] IN=eth0 OUT= MAC=2a:e3:68:02:11:68:9a:7e:ec:2f:9b:0b:08:00 SRC=45.129.33.3 DST=15.131.104.205 LEN=40 TOS=0x00 PREC=0x00 TTL=243 ID=23472 PROTO=TCP SPT=59933 DPT=16122 WINDOW=1024 RES=0x00 SYN URGP=0 
Jan  7 15:36:12 vm3 kernel: [ 5722.897478] [UFW BLOCK] IN=eth0 OUT= MAC=2a:e3:68:02:11:68:9a:7e:ec:2f:9b:0b:08:00 SRC=45.129.33.3 DST=15.131.104.205 LEN=40 TOS=0x00 PREC=0x00 TTL=243 ID=23472 PROTO=TCP SPT=59933 DPT=16122 WINDOW=1024 RES=0x00 SYN URGP=0 
Jan  7 15:36:12 vm3 kernel: [ 5722.921513] [UFW AUDIT] IN=eth0 OUT= MAC=2a:e3:68:02:11:68:9a:7e:ec:2f:9b:0b:08:00 SRC=201.101.101.130 DST=15.131.104.205 LEN=52 TOS=0x00 PREC=0x00 TTL=49 ID=48905 DF PROTO=TCP SPT=41562 DPT=22 WINDOW=1309 RES=0x00 ACK URGP=0 

1,3行目には[UFW AUDIT]と書かれています。それまでのufwのログレベルがlow以下の場合は出力されたことはなく、[UFW ALLOW][UFW BLOCK]のみであり、少し戸惑ったため記事にしてみようと思います。

ALLOWでもBLOCKでもなく、AUDIT

この記事に来られた方はログを見てこのような疑問を持たれたのだろうと思います。結論から言いますと、AUDITはそのどちらでもありません。AUDITはiptablesがパケットを認識すると送出されます。

もう少し詳しく

そもそもufwはiptablesを操作するためのコマンドで、ufw自身がパケットを扱うわけではありません。そしてiptablesはlinuxカーネルによるレイヤー3(ip)で動作するファイヤーウォールです。

ufwがiptablesにルールを書き込んでいくとすると当然ufwによってALLOW/BLOCKとして明示的に書き込まれたフィルタに該当しないパケットが出現します。これらも含めてログとして出力する際につけられるprefixがAUDITなのです。

ここで注意してほしいのはALLOW/BLOCKされたパケットに対してもこのログは出力されることです。例えば、上にあるログの1、2行目を見ると[UFW ~]以降の属性はすべて一致していることがわかると思います。よってこの2つのパケットは実際には同一であると考えることができ、確かにBLOCKとは別に出力されていることがわかります。

もちろんAUDITのみ存在し、ALLOW/BLOCKがないパケットもありえます。ufwは直接iptablesコマンドによって変更されたルールは感知できなかったりするので、こういったっ場合は直接iptablesを確認するなどする必要があるかもしれません。

ufw的にはiptablesにパケットは確かにやってきたけど、どのように処理したかは「分からない」ということなんですね。

おまけ:ufwの吐くiptablesの設定

試しにsudo iptables -L | grep AUDITで該当する設定を探してみましょう。

~$ sudo iptables -L | grep -3 AUDIT

Chain ufw-before-logging-forward (1 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             LOG level warning prefix "[UFW AUDIT] "

Chain ufw-before-logging-input (1 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             LOG level warning prefix "[UFW AUDIT] "

Chain ufw-before-logging-output (1 references)
target     prot opt source               destination         
LOG        all  --  anywhere             anywhere             LOG level warning prefix "[UFW AUDIT] "

Chain ufw-before-output (1 references)
target     prot opt source               destination
---
(省略)

プロトコルやipによらず出力を行っていることがわかります。

Built with Hugo
Theme Stack designed by Jimmy