はじめに
River Festival では、ネットワークを公開する前にアクセスレビューが必要です。来場者とスタッフの両方が公開スケジュールを読める必要があり、受付と備品サービスはスタッフ専用です。同じサーバーを2つのネットワーク位置から観察し、想定外のアクセスと必要なサービスの利用不能を含む正確なレビューを提出します。
Guest Scanner と Staff Scanner は、1台のトレーニング VM 上の異なるネットワーク名前空間にある永続的なターミナルです。経路と送信元アドレスは異なりますが、ファイルは共有しており、独立した VM ではありません。環境は準備済みで、データはすべて合成です。スキャンが許可されるのはサーバー 10.77.3.2 と TCP ポート 8311,8322,8333 だけです。クライアント、経路、フィルタールール、サービス、データ、パケット観測プロセスを維持してください。これは観察のみの作業です。正しいレビューが、まだネットワークを公開すべきでないことを示す場合もあります。
基本的なターミナル入力とパスの理解があれば十分です。必要な Nmap、HTTP、シェル構文は説明します。事前に Finding the Live Workshop Service を学ぶことをお勧めします。ファイアウォール管理やプログラミングは不要です。
両送信元から正常に動作する比較対象を確かめる
アクセス制限を判断する前に、各ネットワークから通常の公開業務を確認します。サーバーや管理用シェルではなく、指定されたラボのタブを使ってください。スキャナータブを開くと、作り直すことなく準備済みネットワークに入ります。各ターミナルのディレクトリとシェル状態は別々ですが、ファイルは同じ VM 上にあります。
Guest Scanner
Guest Scanner タブを選びます。cd はこのシェルの作業ディレクトリを変更し、以降の相対パスはそこを基準とします。
cd /home/labex/project/nmap-access/guest
cat はテキストファイルを表示します。.. は親ディレクトリを表すため、次のパスはロール別ディレクトリの1つ上にある共有要件を読みます。
cat ../plan.csv
CSV はカンマ区切りの値です。先頭行が列名を示し、それ以降は1行ごとに1つの関係を表します。6行は guest または staff をサービスと TCP ポートに対応付けています。allow は接続が機能すること、block はその送信元が接続できないことを求めます。8311 の公開スケジュールは両送信元に許可されています。8322 の受付と 8333 の備品はスタッフ専用です。
HTTP はこれらのサービスが使うリクエストとレスポンスのプロトコルです。curl は URL を取得します。組み合わせた -fsS は HTTP エラーで失敗し、進捗表示を隠しつつエラーは表示します。-o は直後のファイル名に応答を保存します。アドレスが宛先、コロンの後のポートが待ち受け口、/manifest.csv がリソースを選びます。
curl -fsS -o public.csv http://10.77.3.2:8311/manifest.csv
cat public.csv
ヘッダーと schedule/RIVER-FEST の2件、P01/Doors at 10 と P02/Talk at 11 が表示されるはずです。これは送信元アドレス 10.77.1.2 の来場者ネットワーク位置から得た実際の応答です。
Staff Scanner
Staff Scanner タブに切り替えます。送信元は 10.77.2.2 で、ロール別ディレクトリも独立しています。
cd /home/labex/project/nmap-access/staff
curl -fsS -o public.csv http://10.77.3.2:8311/manifest.csv
cat public.csv
同じ完全な公開レコード2件が表示されるはずです。両側で公開業務が正常であることを対照にすることで、スキャナーの切断を正しいアクセス遮断と誤認するのを防げます。2つの public.csv は異なるロールのディレクトリにあります。ファイル名を間違えたら、エラーを読み、pwd でこのターミナルのディレクトリを確認し、そのロールの上記 cd を再実行してからやり直してください。経路の修復やサービス再起動は行いません。
各ネットワークから同じサービスをスキャンする
両送信元から完全な観測結果を集めます。ポート状態はこのスキャナーが観測した内容であり、サーバー固有の属性ではありません。open は TCP 接続を受け入れたことを表します。closed はスキャンが拒否を受けたことを表し、待ち受けがない場合も、フィルターが拒否した場合もあります。filtered はプローブや応答が遮断され、Nmap がポートの開放を判断できなかったことを表します。状態だけから特定の根本原因を推測しないでください。
Nmap はネットワークサービスを調べます。-sT は TCP connect スキャンを選び、ここでは raw パケットの権限は不要です。-Pn は事前のホスト発見判断を省略し、他のプローブに応答がなくても指定ポートを調べます。これ自体はホストの稼働を証明しません。-n は逆引き名前解決を省略します。--reason は応答の根拠を示し、-p は許可されたポートの全範囲を選び、-oX は通常のターミナル出力に加えて構造化 XML を保存します。既定の一般的なポート集合は今回の要件の代わりになりません。
Nmap Scripting Engine、NSE は選択したアプリケーションリクエストを送れます。--script はスクリプトを1つ選び、--script-args は名前付きのオプションを渡します。http-title は HTML タイトルを取得し、http-title.url=/about は説明リソースを選びます。ここでは3候補すべてが HTTP サービスだと明示されています。先頭の + は、この既知の HTTP 範囲内で、ポートが未認識でもこのスクリプトだけを明示的に実行します。無関係なサービスで任意のスクリプトを強制実行する一般的な指示ではありません。製品バージョンの文字列は不要です。
Guest Scanner
Guest Scanner に切り替えます。引き続き /home/labex/project/nmap-access/guest にいます。まず --script-help で選択スクリプトのヘルプを読みます。
nmap --script-help http-title
nmap -sT -Pn -n --reason --script=+http-title --script-args=http-title.url=/about -p 8311,8322,8333 -oX scan.xml 10.77.3.2
Nmap done を待ちます。8311 と 8322 は open となり、実際の公開スケジュールとスタッフ受付のタイトルが返るはずです。8333 は filtered です。来場者がスタッフ専用サービスに到達できているため、公開業務の対照が成功しただけではアクセスレビューは不十分でした。
Staff Scanner
Staff Scanner に切り替えます。引き続き /home/labex/project/nmap-access/staff にいます。このネットワーク位置から同じ限定範囲の調査を実行します。
nmap -sT -Pn -n --reason --script=+http-title --script-args=http-title.url=/about -p 8311,8322,8333 -oX scan.xml 10.77.3.2
8311 と 8322 は open、8333 は closed のはずです。そのためスタッフは必要なサービスに接続できません。タイトル応答は応答する HTTP 候補を識別する手掛かりです。慣例的な SERVICE 名だけではアプリケーションを証明できません。
これは2回の実際のスキャンであり、1つの結果を2つの送信元向けに改名したものではありません。ロールごとの scan.xml と既存の送信元トラフィックがレビューを支えます。タブ、対象、ポートを間違えたら、正しいスキャナーから修正した完全なスキャンを再実行してください。中断した場合も、完全な再実行の終了を待ちます。テキストを XML に改名したり、別ロールのファイルをコピーしたりしても、不足している送信元の観測は生まれません。
アクセスレビューを提出し現場を維持する
6つの観測関係を正確な引き継ぎレビューにします。Staff Scanner の /home/labex/project/nmap-access/staff から始めます。元の現場を変更しないでください。レビューが完了しても、アクセスの修復は後で必要になる場合があります。
allow の行では open が要件を満たし、closed または filtered は unavailable です。block の行では開いているポートが unexpected-open であり、closed または filtered は観測された接続制限を満たします。結論は指定の送信元、対象、プロトコル、ポート、観測時点に限られます。すべてのネットワーク経路や拒否の正確な原因を保証するものではありません。
レポート列は source,service,port,expected,observed,verdict です。送信元とサービスを各自の証拠に結び付けてください。非開放の結果をすべて同じ単語に置き換えず、実際の状態を記録します。要件ではスタッフの備品サービスが必要なので、現状が closed でも、それは問題の発見であって正しい遮断ではありません。
引用符付き here-document は、続く行をそのまま cat に渡します。> は指定したレポートだけを上書きし、終端の CSV は1行に単独で記述します。../access-review.csv は共有レビューを親ディレクトリに保存します。
Staff Scanner
cat > ../access-review.csv <<'CSV'
source,service,port,expected,observed,verdict
guest,schedule,8311,allow,open,meets
guest,checkin,8322,block,open,unexpected-open
guest,supplies,8333,block,filtered,meets
staff,schedule,8311,allow,open,meets
staff,checkin,8322,allow,open,meets
staff,supplies,8333,allow,closed,unavailable
CSV
cat ../access-review.csv
ネットワーク公開を保留します。来場者が想定外に受付へ到達でき、スタッフの備品サービスは利用できません。レポートを簡単にするために露出サービスを止めたりフィルターを変えたりしないでください。この作業は所有者へ発見事項を渡します。同じ状態でも allow/block 関係によって意味が異なります。
Guest Scanner
Guest Scanner に切り替え、変更していない公開業務の対照をもう一度使います。
curl -fsS -o public.csv http://10.77.3.2:8311/manifest.csv
Staff Scanner
Staff Scanner に戻り、同様に確認します。
curl -fsS -o public.csv http://10.77.3.2:8311/manifest.csv
両側とも元の公開レコード2件を引き続き返す必要があります。非公開サービスと元のネットワーク設定も調査のために維持します。URL を誤入力したら、別側のダウンロードをコピーせず、同じロールから既知の URL を修正してやり直してください。
まとめ
両送信元から正常な業務を確認し、個別の Nmap 観測を集め、すべてのアクセス関係をレビューしました。想定外に到達できることと、必要なサービスを利用できないことは別の発見です。完成したレビューは元の現場を維持し、結論を実際に観測した送信元と範囲に限定します。



