とあるシステムの中の人

プログラミング、育児、武道、3Dグラフィック、ゲーム開発

ufwのログについての基本

ufwのログについての基本

ufwとは

  • ubuntuのファイアーウォール構成ツール
  • iptablesの構成を容易にする。確かにかなり簡単に設定できる。

基本的なコマンド

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アドレスやレンジでも指定可能。
  • デフォルトでは、UFWping リクエストを許可。
  • 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を設定する必要があるということだと思います。
  • このあたりはもう少し検証してみたいですが、今回はここまで。