クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

ログから攻撃を見つける方法

このレッスンのあとで: ログの並びから、ポートスキャンなどの攻撃の跡を見つけられる。

55分のレッスンコマンド4件NAT ゲートウェイのラボ:nftables でマスカレードとポート転送をブラウザーで学ぶ

攻撃の跡はログに残る

ネットワークへの攻撃は、ログや通信の記録に、たいてい何かの跡を残します。跡を見つけるコツは、ふだんの姿を知ったうえで、そこから外れた動きに気づくことです。

例えば、一つの送信元が、数秒のうちに何十ものポートを順に叩いていたら、それはポートスキャンの跡です。今日は、その見分け方を学びます。

このレッスンのゴール

メモ

ログの並びから、ポートスキャンなどの攻撃の跡を見つけられる。

重要な言葉

ことばいみ
ログ起きたことを時刻つきで残した記録
基準ふだんの通信の量や形
シグネチャ既に知られた攻撃の型の目印
異常検知基準から外れた動きに気づくこと
しきい値これを超えたら警告する、境目の数
誤検知攻撃でないのに、攻撃と判断すること

学生が入力するセルは、このプレビューでは空白です。

まずふだんの姿を知る

攻撃かどうかは、ふだんとの違いで決まります。ふだんは一日に何件の接続があり、どの送信元が多いかを、先に知っておきます。

ふだんを知らなければ、異常に気づけません。ログの最初の用途は、基準を作ることです。

例: 攻撃の跡の見え方

攻撃ログに見える跡見分けの手がかり
ポートスキャン一つの送信元が、多くのポートを叩く違うポートの数
総当たり一つの送信元が、同じ入口を何度も叩く同じ入口への回数
大量の送信一つの送信元からの量が、急に増える基準との差

学生が入力するセルは、このプレビューでは空白です。

ログのファイルを見る

コマンド
ls -1 /var/log/netlab

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

ログの一行の形

ラボの三つのウェブサービスは、受けた要求を一行ずつ、ログに残します。ls は、lan-private.log、lan-web.log、outside-server.log の三つを並べます。

一行は、時刻、送信元のアドレス、要求の道筋の順です。自分で一件出して、確かめましょう。

一件の要求を出す

コマンド
sudo ip netns exec gw curl --noproxy '*' -s -m 3 http://10.0.0.2/login-test

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

ログの最後の行を読む

コマンド
tail -n 1 /var/log/netlab/lan-web.log | awk '{print $2, $3}'

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

二つの出力が言うこと

要求の答えは lan-web: you are 10.0.0.1 です。サーバーは、見えた送信元のアドレスを答えます。

ログの最後の行を取り出すと、10.0.0.1 /login-test と出ます。誰が、何を求めたかが、そのまま残っています。

シグネチャは既知の型を探す

攻撃には、よく知られた型があります。型の目印を探すのがシグネチャです。例えば「login を一秒に十回叩く」は、総当たりの型です。

数えるには、送信元ごとに行を数えます。下の実行で、数える練習をしましょう。

送信元ごとに行を数える

コマンド
printf '203.0.113.9\n198.51.100.4\n203.0.113.9\n203.0.113.9\n' | sort | uniq -c | sort -rn

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

しきい値で異常を拾う

数が分かったら、しきい値を決めます。「一分間に違うポートを十個以上叩いた送信元は、スキャンの疑い」のように書きます。

しきい値が低すぎると、ふつうの利用者まで引っかかります。高すぎると、攻撃を見逃します。基準を見ながら決めます。

例: しきい値を5にしたとき

送信元叩いたポートの数判断
203.0.113.97疑いあり(スキャン)
198.51.100.42ふつう
192.0.2.771(同じ入口を30回)ポート数ではふつう。回数で別に見る

学生が入力するセルは、このプレビューでは空白です。

よくある間違い

注意

「警告が出なければ安全」「警告が出れば攻撃」と思う人が多いです。誤検知もあれば、見逃しもあります。警告は調べるきっかけで、結論ではありません。調べるのは、人の仕事です。

発展: 自分の基準を作る

ラボの lan に、gw から数件の要求を出し、lan-web.log を読みます。送信元ごとの数と、道筋ごとの数を、それぞれ数えましょう。

その結果から、「この数を超えたら警告」というしきい値を一つ決め、理由を一文で書きます。

このラボとソースについて: NAT ゲートウェイのラボ:nftables でマスカレードとポート転送をブラウザーで学ぶ

授業で使いますか?このモジュールを学生に割り当てると、教員用ガイド、自動採点つきの課題、学生ごとのラボを使えます。