LinuCレベル3 303試験の例題と解説

328.1ネットワークの堅牢化

LinuCレベル3 303試験の出題範囲から「328.1 ネットワークの堅牢化」についての例題を解いてみます。
ネットワークトラフィックのキャプチャや解析を行うツールである tshark を取り上げています。

Linucレベル3 303試験 出題範囲


例題

tsharkの説明について、誤っているものを選択してください。

  1. ネットワーク通信で送受信されるパケットのキャプチャを行うことができる。
  2. キャプチャした結果をファイルに保存することができる。
  3. パケットキャプチャを保存したファイルを読み込み表示することができる。
  4. コマンドラインインタフェースとウェブユーザインターフェースを利用することができる。

※この例題は実際の試験問題とは異なります。


解答と解説

正解は、「4.コマンドラインインタフェースとウェブユーザインターフェースを利用することができる。」です。

tsharkは、ネットワーク通信で送受信されるパケットをキャプチャするためのコマンドラインツールです。

リアルタイムにネットワークのパケットをキャプチャしたり、保存されているキャプチャファイルからパケットを読み取ったりすることができます。tsharkが扱うことのできるキャプチャファイル形式はpcapng形式です。これは、wiresharkやその他の様々なパケットキャプチャツールで使用されている形式です。

tsharkの使用例を紹介します。

1)ネットワークインタフェースの一覧表示

$ tshark -D
1. enp1s0
2. enp7s0
3. any
4. lo (Loopback)
5. bluetooth-monitor
6. usbmon2
7. usbmon1
8. usbmon0
9. nflog
10. nfqueue
11. ciscodump (Cisco remote capture)
12. dpauxmon (DisplayPort AUX channel monitor capture)
13. sdjournal (systemd Journal Export)
14. sshdump (SSH remote capture)
15. udpdump (UDP Listener remote capture)

tsharkがキャプチャできるネットワークインタフェースの一覧を表示しています。

2)パケットキャプチャ(フィルタなし)

$ tshark -i enp1s0
Capturing on 'enp1s0'
    1 0.000000000 fe:54:00:6a:e0:4f → Spanning-tree-(for-bridges)_00 STP 52 Conf. Root = 32768/0/52:54:00:7e:96:a4  Cost = 0  Port = 0x8004
    2 0.712372321 172.16.99.119 → 172.16.99.1  SSH 246 Server: Encrypted packet (len=180)
    3 0.712554706  172.16.99.1 → 172.16.99.119 TCP 66 54468 → 22 [ACK] Seq=1 Ack=181 Win=501 Len=0 TSval=995189410 TSecr=152797781
    4 1.224388274 172.16.99.119 → 172.16.99.1  SSH 334 Server: Encrypted packet (len=268)
    5 1.224545305  172.16.99.1 → 172.16.99.119 TCP 66 54468 → 22 [ACK] Seq=1 Ack=449 Win=501 Len=0 TSval=995189922 TSecr=152798293
    6 1.736290831 172.16.99.119 → 172.16.99.1  SSH 334 Server: Encrypted packet (len=268)
    7 1.736448184  172.16.99.1 → 172.16.99.119 TCP 66 54468 → 22 [ACK] Seq=1 Ack=717 Win=501 Len=0 TSval=995190434 TSecr=152798804
    8 1.983970924 fe:54:00:6a:e0:4f → Spanning-tree-(for-bridges)_00 STP 52 Conf. Root = 32768/0/52:54:00:7e:96:a4  Cost = 0  Port = 0x8004
    9 2.254069903 172.16.99.119 → 172.16.99.1  SSH 478 Server: Encrypted packet (len=412)
   10 2.254224606  172.16.99.1 → 172.16.99.119 TCP 66 54468 → 22 [ACK] Seq=1 Ack=1129 Win=501 Len=0 TSval=995190952 TSecr=152799322
  :

指定したネットワークインタフェース(上記の例ではenp1s0)を通過するパケットのキャプチャを行っています。
結果は標準出力に出力されます。

3)キャプチャフィルタ

$ tshark -i enp1s0 -f "port 80"
Capturing on 'enp1s0'
    1 0.000000000  172.16.99.1 → 172.16.99.119 TCP 74 37474 → 80 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM=1 TSval=995553753 TSecr=0 WS=128
    2 0.000073582 172.16.99.119 → 172.16.99.1  TCP 74 80 → 37474 [SYN, ACK] Seq=0 Ack=1 Win=65160 Len=0 MSS=1460 SACK_PERM=1 TSval=153162123 TSecr=995553753 WS=128
    3 0.000187103  172.16.99.1 → 172.16.99.119 TCP 66 37474 → 80 [ACK] Seq=1 Ack=1 Win=64256 Len=0 TSval=995553753 TSecr=153162123
    4 0.000300995  172.16.99.1 → 172.16.99.119 HTTP 143 GET / HTTP/1.1
    5 0.000350460 172.16.99.119 → 172.16.99.1  TCP 66 80 → 37474 [ACK] Seq=1 Ack=78 Win=65152 Len=0 TSval=153162124 TSecr=995553753
    6 0.001984192 172.16.99.119 → 172.16.99.1  HTTP 329 HTTP/1.1 200 OK  (text/html)
    7 0.002124885  172.16.99.1 → 172.16.99.119 TCP 66 37474 → 80 [ACK] Seq=78 Ack=264 Win=64128 Len=0 TSval=995553755 TSecr=153162125
    8 0.002257038  172.16.99.1 → 172.16.99.119 TCP 66 37474 → 80 [FIN, ACK] Seq=78 Ack=264 Win=64128 Len=0 TSval=995553755 TSecr=153162125
    9 0.002628789 172.16.99.119 → 172.16.99.1  TCP 66 80 → 37474 [FIN, ACK] Seq=264 Ack=79 Win=65152 Len=0 TSval=153162126 TSecr=995553755
   10 0.002768131  172.16.99.1 → 172.16.99.119 TCP 66 37474 → 80 [ACK] Seq=79 Ack=265 Win=64128 Len=0 TSval=995553756 TSecr=153162126
 :

enp1s0インタフェースにキャプチャフィルタを設定しており、80番ポートのパケットのみキャプチャするようにしています。

4)キャプチャデータをファイルに保存

$ tshark -i enp1s0 -f "port 80" -w http.cap
Capturing on 'enp1s0'
30

キャプチャしたデータをhttp.capファイルに保存しています。

5)キャプチャファイルの参照

$ tshark -r http.cap 
    1 0.000000000  172.16.99.1 → 172.16.99.119 TCP 74 40876 → 80 [SYN] Seq=0 Win=64240 Len=0 MSS=1460 SACK_PERM=1 TSval=995919059 TSecr=0 WS=128
    2 0.000055548 172.16.99.119 → 172.16.99.1  TCP 74 80 → 40876 [SYN, ACK] Seq=0 Ack=1 Win=65160 Len=0 MSS=1460 SACK_PERM=1 TSval=153527430 TSecr=995919059 WS=128
    3 0.000172464  172.16.99.1 → 172.16.99.119 TCP 66 40876 → 80 [ACK] Seq=1 Ack=1 Win=64256 Len=0 TSval=995919059 TSecr=153527430
    4 0.000273848  172.16.99.1 → 172.16.99.119 HTTP 143 GET / HTTP/1.1 
    5 0.000309923 172.16.99.119 → 172.16.99.1  TCP 66 80 → 40876 [ACK] Seq=1 Ack=78 Win=65152 Len=0 TSval=153527430 TSecr=995919059
    6 0.000946131 172.16.99.119 → 172.16.99.1  HTTP 329 HTTP/1.1 200 OK  (text/html)
  :

http.capファイルに保存されているキャプチャデータを読み込み、その内容を標準出力に出力しています。

6)キャプチャファイルの切り替え
キャプチャしたデータをファイルに保存する際、保存ファイルを自動的に切り替えることができます。
例えば、

  • 1時間毎に保存ファイルを切り替える
  • ファイル保存数は最大10個とする

のような設定を行うことができます。

$ tshark -i enp1s0 -f "port 80" -w http.cap -b interval:3600 -b files:10
Capturing on 'enp1s0'
740

キャプチャデータの保存ファイル名は

http_000001_20230710092300.cap
http_000002_20230710102300.cap
http_000003_20230710112300.cap
  :

のように保存されます。
ファイル数が最大値(本例では10)に達した場合、一番古いファイルが削除されます。

例題の選択肢を確認してみましょう。

1.ネットワーク通信で送受信されるパケットのキャプチャを行うことができる。
正しい説明です。

2.キャプチャした結果をファイルに保存することができる。
正しい説明です。

キャプチャした結果をファイルに保存する場合、-wオプションを指定します。

3.パケットキャプチャを保存したファイルを読み込み表示することができる。
正しい説明です。

パケットキャプチャを保存したファイルを読み込む場合、-rオプションを指定します。

4.コマンドラインインタフェースとウェブユーザインターフェースを利用することができる。
誤った説明です。

tsharkはコマンドラインツールであり、ウェブユーザインタフェースを利用することはできません。wiresharkを使用すれば、ウェブユーザインタフェースを利用することができます。

tsharkは、ここで説明した以外にも多くのオプションを指定することができます。他のオプションの使用方法も把握して、適切にパケットキャプチャを行えるようになりましょう。


例題作成者

株式会社デージーネット OSS研究室 大野 公善

ページトップへ