このレッスンですること
サーバーに侵入されたとき、対応する人を インシデント対応担当者(incident responder)といいます。その仕事の大半は ログ を読むことです。ログとは、マシンが「いつ、何をしたか」を書き残した行のことです。このレッスンでは、昨夜攻撃された1台のサーバーからコピーしたログとファイルを見ます。何があるか、どれくらいの量かを確かめます。事件を解くことはしません。それはラボ自身の課題です。
始める前に
メモ
このレッスンの上のバーにある ラボを起動 を押してください。このラボは、あなた専用の Ubuntu マシン まるごとです。コンテナより起動に少し時間がかかります。下の 実行 ボタンは、マシンのターミナルにコマンドを順番に入力します。「マシンはまだ起動中です」と出たら、数秒待ってからもう一度押してください。実行の様子を見たり、自分でコマンドを打ったりするときは、バーの ターミナルを開く(新しいタブ) を押します。
1. 手元にあるものを見る
証拠は、ホームフォルダの case フォルダにあります。攻撃されたサーバーから、同じフォルダ構成のままコピーしたものです。find case -type f で、中のファイルがすべて出ます。全部で8つです。SSH のログ、Web サーバーのログ、アカウントの一覧、crontab が2つ(時間を決めて動かす仕事の一覧)、鍵のファイルが2つあります。
find case -type fここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
2. どれくらいの量か
wc -l は行数を数えます。SSH のログ auth.log は 1366 行、Web サーバーの access.log は 552 行です。これだけの行を1行ずつ読む人はいません。インシデント対応担当者は検索します。やり方は、ラボの README に書いてあります。
wc -l case/var/log/auth.log case/var/log/nginx/access.logここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
3. SSH のログを数行読む
1行は、時刻、マシンの名前、書いたプログラム、起きたこと、の順に並んでいます。この5行は、SSH でのサインインに失敗した記録です。1回の試行が、Invalid user の行と Failed password の行の2行で書かれています。そこに、接続元のアドレスと、試されたユーザー名が出ています。
head -n 5 case/var/log/auth.logここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
4. パスワードの失敗を数える
grep は、指定した言葉を含む行を表示します。-c を付けると、表示する代わりに数えます。この日のパスワード失敗は 333 回です。そのうちどれが重要かは、ラボで自分で考えます。回数だけでは、誰が侵入に成功したかは分かりません。
grep -c "Failed password" case/var/log/auth.logここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
ラボに進みましょう
ヒント
証拠と、その検索のしかたが分かりました。攻撃者を見つけるのが、このラボの課題です。ターミナルで cat README.md と打って、ホームフォルダの README.md を開いてください。何を見つけて answers.txt にどう書くかが書いてありますが、答えは書いてありません。
先生へ
ヒント
このレッスンは ラボで進めるレッスン の小さな例です。手順と 実行 ボタンがレッスンで、ラボは生徒一人ひとりのコピーです。このレッスンは VM ラボで進めます。生徒それぞれが、同じ事件の資料が入った自分専用の Ubuntu マシンを持ち、実行ボタンはそのターミナルに入力して、出力を表示します。ラボには、書かれた答えを採点し、最初に間違っている箇所を示す確認があります。自分のモジュールにコピーして変更するか、レッスンビルダーの ラボ メニューから一から作ってください。