ufwのログについての基本
ufwとは
基本的なコマンド
- enable ufw
ufw enable
- status
ufw status verbose
設定
- デフォルトでは、受信に対して拒否が適用される
- /etc/ufw 内のルール ファイル (名前が .rules で終わるファイル) を読み取ることもできるらしい。
allow
ufw allow <port>/<optional: protocol>
deny
ufw deny <port>/<optional: protocol>
Logging
- logging 有効化
sudo ufw logging on
- logging 無効化
sudo ufw logging off
そのほか
- IPアドレスやレンジでも指定可能。
- デフォルトでは、UFW は ping リクエストを許可。
- ping (icmp) リクエストを無効にするには、/etc/ufw/before.rulesを編集する必要がある。
本題のログについて
- 以下のコマンドで現在の設定が確認できる
root@ttmp:~# ufw status verbose Status: inactive root@ttmp:~#
- デフォルトでは、非アクティブ。
- 有効化する。
root@ttmp:~# ufw enable Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup root@ttmp:~#
- 再度、現在の状況を確認
root@ttmp:~# ufw status verbose Status: active Logging: on (low) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip root@ttmp:~#
起動時の警告にあった通り、デフォルトでは外部からの接続については全て拒否となっているため、このままではssh接続もできなくなってしまう。
ssh接続を切断して再接続しようとすると、見事に弾かれます。
- sshを許可してみます。
root@ttmp:~# ufw allow 22 Rule updated Rule updated (v6) root@ttmp:~#
- これで接続できるようになります。
- 検証用にssh以外のポートを許可しておきます。
root@ttmp:~# ufw allow 8888 Rule added Rule added (v6) root@ttmp:~#
- 検証のために以下のようなコマンドを別のVMから打ちます。
root@ttmp-virtual-machine:~# nc -vz -w 5 192.168.11.23 8888 nc: connect to 192.168.11.23 port 8888 (tcp) failed: Connection refused root@ttmp-virtual-machine:~# nc -vz -w 5 192.168.11.23 9999 nc: connect to 192.168.11.23 port 9999 (tcp) timed out: Operation now in progress root@ttmp-virtual-machine:~#
- 現在のログはどうなっているのでしょうか。
- ログは
/var/log/syslog
と/var/log/ufw.log
に出ます。
Mar 5 15:10:15 ttmp kernel: [ 2406.404914] [UFW BLOCK] IN=ens160 OUT= MAC=00:0c:29:48:83:5c:00:0c:29:71:f5:17:08:00 SRC=192.168.11.2 DST=192.168.11.23 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=51853 DF PROTO=TCP SPT=35674 DPT=9999 WINDOW=64240 RES=0x00 SYN URGP=0 Mar 5 15:10:16 ttmp kernel: [ 2407.434874] [UFW BLOCK] IN=ens160 OUT= MAC=00:0c:29:48:83:5c:00:0c:29:71:f5:17:08:00 SRC=192.168.11.2 DST=192.168.11.23 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=51854 DF PROTO=TCP SPT=35674 DPT=9999 WINDOW=64240 RES=0x00 SYN URGP=0 Mar 5 15:10:17 ttmp kernel: [ 2408.458888] [UFW BLOCK] IN=ens160 OUT= MAC=00:0c:29:48:83:5c:00:0c:29:71:f5:17:08:00 SRC=192.168.11.2 DST=192.168.11.23 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=51855 DF PROTO=TCP SPT=35674 DPT=9999 WINDOW=64240 RES=0x00 SYN URGP=0 Mar 5 15:10:18 ttmp kernel: [ 2409.482848] [UFW BLOCK] IN=ens160 OUT= MAC=00:0c:29:48:83:5c:00:0c:29:71:f5:17:08:00 SRC=192.168.11.2 DST=192.168.11.23 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=51856 DF PROTO=TCP SPT=35674 DPT=9999 WINDOW=64240 RES=0x00 SYN URGP=0 Mar 5 15:10:19 ttmp kernel: [ 2410.506857] [UFW BLOCK] IN=ens160 OUT= MAC=00:0c:29:48:83:5c:00:0c:29:71:f5:17:08:00 SRC=192.168.11.2 DST=192.168.11.23 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=51857 DF PROTO=TCP SPT=35674 DPT=9999 WINDOW=64240 RES=0x00 SYN URGP=0
UFW BLOCK
というような接続が拒否された旨のログが出力されています。- ログレベルは以下のような感じです。
- off: 完全に無効
- low: default 以外のルールによりブロックされる通信を記録する。
- medium: allow / deny に合致する通信、不正なパケット、新しい接続を記録する。
- high: allow / deny に合致する通信、不正なパケット、新しい接続を記録する。medium よりも詳細な記録を出力する。
- full: 全てのログを記録する
- ログレベルを再設定します。
root@ttmp:~# ufw logging medium Logging enabled root@ttmp:~# root@ttmp:~# ufw status verbose Status: active Logging: on (medium) Default: deny (incoming), allow (outgoing), disabled (routed) New profiles: skip To Action From -- ------ ---- 22 ALLOW IN Anywhere 22 (v6) ALLOW IN Anywhere (v6) root@ttmp:~#
- 同じようにコマンドを打つとどうなるでしょうか。
Mar 5 15:11:26 ttmp kernel: [ 2477.120604] [UFW AUDIT] IN=ens160 OUT= MAC=00:0c:29:48:83:5c:00:0c:29:71:f5:17:08:00 SRC=192.168.11.2 DST=192.168.11.23 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=60743 DF PROTO=TCP SPT=53350 DPT=8888 WINDOW=64240 RES=0x00 SYN URGP=0 Mar 5 15:11:28 ttmp kernel: [ 2479.001243] [UFW AUDIT] IN=ens160 OUT= MAC=00:0c:29:48:83:5c:00:0c:29:71:f5:17:08:00 SRC=192.168.11.2 DST=192.168.11.23 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=40714 DF PROTO=TCP SPT=47286 DPT=9999 WINDOW=64240 RES=0x00 SYN URGP=0 Mar 5 15:11:28 ttmp kernel: [ 2479.001271] [UFW BLOCK] IN=ens160 OUT= MAC=00:0c:29:48:83:5c:00:0c:29:71:f5:17:08:00 SRC=192.168.11.2 DST=192.168.11.23 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=40714 DF PROTO=TCP SPT=47286 DPT=9999 WINDOW=64240 RES=0x00 SYN URGP=0 Mar 5 15:11:29 ttmp kernel: [ 2480.010076] [UFW AUDIT] IN=ens160 OUT= MAC=00:0c:29:48:83:5c:00:0c:29:71:f5:17:08:00 SRC=192.168.11.2 DST=192.168.11.23 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=40715 DF PROTO=TCP SPT=47286 DPT=9999 WINDOW=64240 RES=0x00 SYN URGP=0 Mar 5 15:11:29 ttmp kernel: [ 2480.010104] [UFW BLOCK] IN=ens160 OUT= MAC=00:0c:29:48:83:5c:00:0c:29:71:f5:17:08:00 SRC=192.168.11.2 DST=192.168.11.23 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=40715 DF PROTO=TCP SPT=47286 DPT=9999 WINDOW=64240 RES=0x00 SYN URGP=0 Mar 5 15:11:30 ttmp kernel: [ 2481.034053] [UFW AUDIT] IN=ens160 OUT= MAC=00:0c:29:48:83:5c:00:0c:29:71:f5:17:08:00 SRC=192.168.11.2 DST=192.168.11.23 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=40716 DF PROTO=TCP SPT=47286 DPT=9999 WINDOW=64240 RES=0x00 SYN URGP=0 Mar 5 15:11:30 ttmp kernel: [ 2481.034081] [UFW BLOCK] IN=ens160 OUT= MAC=00:0c:29:48:83:5c:00:0c:29:71:f5:17:08:00 SRC=192.168.11.2 DST=192.168.11.23 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=40716 DF PROTO=TCP SPT=47286 DPT=9999 WINDOW=64240 RES=0x00 SYN URGP=0 Mar 5 15:11:31 ttmp kernel: [ 2482.058042] [UFW AUDIT] IN=ens160 OUT= MAC=00:0c:29:48:83:5c:00:0c:29:71:f5:17:08:00 SRC=192.168.11.2 DST=192.168.11.23 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=40717 DF PROTO=TCP SPT=47286 DPT=9999 WINDOW=64240 RES=0x00 SYN URGP=0 Mar 5 15:11:31 ttmp kernel: [ 2482.058068] [UFW BLOCK] IN=ens160 OUT= MAC=00:0c:29:48:83:5c:00:0c:29:71:f5:17:08:00 SRC=192.168.11.2 DST=192.168.11.23 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=40717 DF PROTO=TCP SPT=47286 DPT=9999 WINDOW=64240 RES=0x00 SYN URGP=0 Mar 5 15:11:32 ttmp kernel: [ 2483.082029] [UFW AUDIT] IN=ens160 OUT= MAC=00:0c:29:48:83:5c:00:0c:29:71:f5:17:08:00 SRC=192.168.11.2 DST=192.168.11.23 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=40718 DF PROTO=TCP SPT=47286 DPT=9999 WINDOW=64240 RES=0x00 SYN URGP=0 Mar 5 15:11:32 ttmp kernel: [ 2483.082062] [UFW BLOCK] IN=ens160 OUT= MAC=00:0c:29:48:83:5c:00:0c:29:71:f5:17:08:00 SRC=192.168.11.2 DST=192.168.11.23 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=40718 DF PROTO=TCP SPT=47286 DPT=9999 WINDOW=64240 RES=0x00 SYN URGP=0
UFW AUDIT
というキーワードが増えています。ポートも8888なので、許可された通信と一致します。- これはufwが操作しているiptablesでログを取得するように指定したもの以外を記録したもののようです。てっきりALLOWとなる想定でしたが、異なるようです。
- ちなみにiptablesのログが出力される
/var/log/kern.log
にも同様のログが出ます。 - また、ALLOWはアウトバウンド通信の時は出力されます。これはデフォルト設定はiptable上でログが出る設定になっているためと思われます。
root@ttmp:~# cat /var/log/ufw.log | grep 'UFW ALLOW' Mar 5 14:38:46 ttmp kernel: [ 516.799737] [UFW ALLOW] IN= OUT=ens160 SRC=192.168.11.23 DST=185.125.190.57 LEN=76 TOS=0x10 PREC=0x00 TTL=64 ID=39923 DF PROTO=UDP SPT=43427 DPT=123 LEN=56 Mar 5 14:47:18 ttmp kernel: [ 1029.032850] [UFW ALLOW] IN= OUT=ens160 SRC=192.168.11.23 DST=185.125.190.57 LEN=76 TOS=0x10 PREC=0x00 TTL=64 ID=58284 DF PROTO=UDP SPT=44131 DPT=123 LEN=56 Mar 5 14:54:37 ttmp kernel: [ 1468.277685] [UFW ALLOW] IN= OUT=ens160 SRC=192.168.11.23 DST=192.168.11.1 LEN=81 TOS=0x00 PREC=0x00 TTL=64 ID=15411 PROTO=UDP SPT=49607 DPT=53 LEN=61 Mar 5 14:54:37 ttmp kernel: [ 1468.279877] [UFW ALLOW] IN= OUT=ens160 SRC=192.168.11.23 DST=192.168.11.1 LEN=85 TOS=0x00 PREC=0x00 TTL=64 ID=11838 PROTO=UDP SPT=41563 DPT=53 LEN=65 Mar 5 14:54:48 ttmp kernel: [ 1478.987495] [UFW ALLOW] IN= OUT=ens160 SRC=192.168.11.23 DST=192.168.11.1 LEN=85 TOS=0x00 PREC=0x00 TTL=64 ID=11717 PROTO=UDP SPT=47213 DPT=53 LEN=65 Mar 5 14:54:54 ttmp kernel: [ 1484.837811] [UFW ALLOW] IN= OUT=ens160 SRC=192.168.11.23 DST=192.168.11.1 LEN=85 TOS=0x00 PREC=0x00 TTL=64 ID=19735 PROTO=UDP SPT=56343 DPT=53 LEN=65 Mar 5 15:04:22 ttmp kernel: [ 2053.249653] [UFW ALLOW] IN= OUT=ens160 SRC=192.168.11.23 DST=185.125.190.57 LEN=76 TOS=0x10 PREC=0x00 TTL=64 ID=57710 DF PROTO=UDP SPT=57812 DPT=123 LEN=56 root@ttmp:~#
- おそらくiptableの箇所は、以下。
Chain ufw-after-logging-output (1 references) target prot opt source destination LOG all -- anywhere anywhere LOG level warning prefix "[UFW ALLOW] "
- 逆にいうと、ログの制御をするならば、iptablesを設定する必要があるということだと思います。
- このあたりはもう少し検証してみたいですが、今回はここまで。