ufw のログの読み方(SPT, DPT など)
1. ufw とは
ufw は Ubuntu Firewall の略……ではなく、
Uncomplicated Firewall (複雑じゃないファイアウォール)の略です。
「昔は Ubuntu Firewall の略だったんじゃないの?」と邪推したんですが、
2008年1月24日時点の Wiki に
『Name: ufw (Uncomplicated Firewall)』と記述してあるので、開発当初からその略みたいです。
iptables の操作が複雑なので、それを簡単に操作するためのラッパーです。
2. ログの場所
/var/log/syslog と /var/log/ufw.log の両方に吐き出されます。
syslog は他のシステムログと混じるので、 ufw.log の方を見るのがわかりやすいと思います。
3. ログの読み方
読み方は、ここのサイトがわかりやすかったです。ありがとうございます。
- iptablesのログフォーマットと内容について « てっく★ゆきろぐ Rev2
- https://ubuntuforums.org/showthread.php?t=2085110&p=12361050#post12361050
Feb 10 06:30:51 the-host-name kernel: [716156.938348] [UFW BLOCK] IN=eth0 OUT= MAC=11:01:01:01:01:01:22:02:02:02:02:02:08:00 SRC=189.23.45.67 DST=123.45.67.89 LEN=40 TOS=0x00 PREC=0x00 TTL=244 ID=17582 PROTO=TCP SPT=40596 DPT=8088 WINDOW=1024 RES=0x00 SYN URGP=0
例えばこんなログが出ていました。(読みやすさのため改行を入れてます)
IPのインターフェイス(Internet Protocol Interface)について記載している
RFC791 3.3 Interfaces の項で、
各々が何を指すのかほぼ確認できます。
順番に書いていきます。
3-1. Feb 10 06:30:51
日時ですね。これはそのまんまです。
3-2. the-host-name
そのマシンのホスト名です。 echo $(hostname)
で出てくる値と同じだと思います。
3-3. kernel: [716156.938348]
brackets(角カッコ)の中身は、OSが起動してからの秒数を指しています。
716156 / 60 / 60 / 24 = 8.3 程度なので、およそ起動してから8日が経過していることがわかります。
3-4. [UFW BLOCK]
ufw が以下の通信をブロックしたことを示します。
3-5. IN=eth0 OUT=
IN が incoming interface , OUT が outgoing interface を指すようです。
……らしいんですが、ネットワークのことをわかっていなくて、それが具体的になにかわかっていないです。
こちらが参考になるかもしれません: IP マルチキャストのトラブルシューティング - Cisco
この場合は、OUT側が空白なので、 incomig (相手から自分宛てへ)の通信であったことがわかります。
3-6. MAC=11:01:01:01:01:01:22:02:02:02:02:02:08:00
これは先ほどの参考ページで本当に簡潔にまとめてくれているのですが、
先頭の 6 octet (11:01:01:01:01:01)が宛先のMACアドレス、
その後の 6 octet (22:02:02:02:02:02)が送信元のMACアドレス。
最後の 2 octet がイーサネットタイプを指すそう。(参考: RFC 1340 ETHERNET NUMBERS OF INTEREST )
0800 が DOD IP (DoD参照モデルとしてのIP)として参考先には記載がありますね。
3-7. SRC=189.23.45.67 DST=123.45.67.89
SRC が source 、送信元のIPアドレス を、
DST が destination 、 送信先のIPアドレス を指します。
3-8. LEN=40
IPパケットの長さです。
IPヘッダとIPペイロード(データ)の合計値です。
IPヘッダについてはこの記事が詳しいです: TCP/IP - IPとは
3-9. TOS=0x00
Type of Service です。
0x00 の場合は CS0 らしいです。
Howto:Calculate Values for Type of Service (ToS) from DiffServ or DSCP Values - innovaphone-wiki
これは DSCP 値としては 000 000 にあたり、
処理の優先レベルがもっとも低く、破棄レベルも低く処理されることを示します。
参考: QoS - DSCP(Differentiated Services Code Point)とは
3-10. PREC=0x00
IP Precedence の値 を指すそう。(「Precedence」は「優先度」を指す英単語らしい…)
0〜7 の 8 段階あり、この例では 0x00 なので、やっぱり優先度は低いです。
参考: QoS - IP Precedence(IPプレシデンス)とは
3-11. TTL=244
おなじみ Time to live です。パケットが破棄されるまでの時間(秒数)を指します。
知ってる風に書いたけど、「パケットが破棄される」という概念を実はよくわかっていない……。
3-12. ID=17582
IPヘッダにおける識別番号(Identifier)です。
ちなみに16bitなので、IDの最大値は 65535 のはず。
3-13. PROTO=TCP
これはそのままプロトコルですね。
TCPプロトコルの通信であることを示しています。
3-14. SPT=40596 DPT=8088
SPT は Source Port、つまり送信元のポート番号を示し、
DPT は Destination Port、送信先のポート番号を示します。
つまり相手側は、8088番ポートにアクセスしようとして、 ufw にブロックされたと言えます。
ログを見てみると、やはり 22番ポートへのアクセスが一番多く、
次に 8080番ポートへのアクセス、そして 8088番ポートや 3389番ポートへのアクセスが見られる印象でした。
3-15. WINDOW=1024
TCPヘッダにおけるウィンドウサイズを指します。
ウィンドウ制御についてはこちらを参考に: TCP/UDP - TCPウインドウ制御 - ネットワークエンジニアを目指して
3-16. RES=0x00
RES はTCPヘッダにある予約領域です。
将来的な拡張のために 6 bit 用意されていますが、今のところ使われていないので
常に 0 が入るようです。
3-17. SYN URGP=0
SYN はコントロールフラグにて「SYN(コネクションの確立を要求)」のフラグがONであることを示しています。
URGP は Urgent Pointer の略で、コントロールフラグで「URG(Urgent=緊急)」のフラグがONである場合には、
緊急データの位置を指す役目を持ちますが、そうでなければ常に 0 です。
4. まとめ
詳細に書きましたが、ファイアウォールの動作ログとしては
の 4 つがわかっていれば、困ることはなさそうですね。
すごく久しぶりに IP と TCP のことを調べて、
「マスタリングTCP/IPのことほとんど覚えていないな……」と反省しました・・・。
- 作者: 竹下隆史,村山公保,荒井透,苅田幸雄
- 出版社/メーカー: オーム社
- 発売日: 2012/02/25
- メディア: 単行本(ソフトカバー)
- 購入: 4人 クリック: 34回
- この商品を含むブログ (37件) を見る
IPヘッダやTCPヘッダに何があるかくらいは、頭に入れておくと楽そうです。