ネットワーク変更計画に沿って更新を確認する

NmapBeginner
オンラインで実践に進む

はじめに

Willow Makers は申込サービスを新しいポートへ移すことを承認しました。カタログと状態サービスは利用可能なまま、デバッグサービスは存在しないままでなければなりません。更新後のネットワーク変更を調べ、受け入れを妨げる点を含めた正確な引き渡しレビューを提出します。

環境は実際の基準スキャンを取得した後、ローカルの保守シナリオを実行しました。これはトレーニング準備であり、昨夜の本番履歴を主張するものではありません。全レコードは合成で、実際の HTTP サービスは1つのコンテナーを共有します。全体を通して Terminal を使います。対象範囲は 127.0.0.4 と TCP ポート 8410,8420,8430,8440,8450 のみです。基準、計画、サービスコード、データ、元の現在稼働中プロセスを維持してください。スキャン、ダウンロード、レビューを作成し、この観察用現場を修復はしません。

基本的なターミナル入力とパスが分かれば十分です。必要な Nmap、Ndiff、HTTP、シェル構文は説明します。Finding the Live Workshop Service が事前学習に役立ちますが、プログラミングは不要です。

計画と正常なサービスを読む

変化を解釈する前に、承認された内容と通常の応答を確認します。Terminal から始めます。cd はこのシェルの作業ディレクトリを変え、以降の相対ファイル名はそこを基準にします。別のターミナルを開いたら再度このコマンドを実行してください。

cd /home/labex/project/nmap-change

cat はテキストファイルを表示します。承認計画を読みます。

cat plan.csv

CSV はカンマ区切りの値です。先頭行は列名で、後続は1行ごとに1レコードです。old_port と new_port はサービスの関係を示し、スキャンすべき順番ではありません。各行は申込を 8410 から 8420 に移すこと、カタログを 8430、状態を 8440 に維持すること、8450 のデバッグを不在のままにすることを承認しています。新しい申込ポートの開放は期待する変化ですが、それ以外の開放が自動的に承認されるわけではありません。

準備済みの before.xml はこのトレーニング更新前の実際の Nmap XML です。before-business.csv はその時に取得した完全な申込応答です。通常の業務サンプルを読みます。

cat before-business.csv

MAKERS-DAY の registration レコード3件、R01/Clay session、R02/Print session、R03/Wood session が出るはずです。移行後も同じ完全な業務が必要です。

HTTP はこれらのサービスが使うリクエストとレスポンスのプロトコルです。curl は URL を取得します。組み合わせた -fsS は HTTP エラーで失敗し、進捗表示を隠しながらエラーは表示します。-o は直後のファイル名に応答を保存します。アドレスは宛先、コロンの後のポートは待ち受け口、/manifest.csv はリソースを選びます。変更していない状態サービスを取得します。

curl -fsS -o status.csv http://127.0.0.4:8440/manifest.csv
cat status.csv

ヘッダーの下に status/MAKERS-DAY/S01/Ready が出るはずです。この成功応答は対照であり、計画内の全サービスが残った証明ではありません。ファイル名を誤入力したら、エラーを読み、pwd で現在のディレクトリを確認し、最初の cd を繰り返してから修正コマンドを試してください。準備済みファイルやサーバーを編集しないでください。

比較可能な現在のスキャンを収集する

基準と同じ対象、同じ完全なポート集合をスキャンします。Terminal の /home/labex/project/nmap-change に留まります。TCP ポートは待ち受けエンドポイントを識別します。open は接続が受け入れられたこと、closed はスキャンが拒否を受けたことです。観測はこの送信元、対象、プロトコル、時点に属します。

Nmap はネットワークサービスを発見して調査します。既定のポート集合は今回の承認計画ではありません。-sT は raw パケット権限不要の TCP connect スキャンを選びます。-Pn は事前のホスト発見判断を省き、選択した各ポートを調べますが、それ自体は対象の稼働を証明しません。-n は逆引き名前解決を省略し、-p は許可ポートを選び、-oX は通常出力とともに構造化 XML を書きます。ポートを省くと比較が不完全になり、そのサービスが消えた証明にはなりません。

Nmap Scripting Engine、NSE は対象を絞ったアプリケーションリクエストを行えます。まず --script-help で選んだスクリプトのヘルプを読みます。

nmap --script-help http-title

http-title は HTML タイトルを読みます。このローカルシナリオの候補はすべて HTTP エンドポイントだと明示されています。先頭の + はポートデータベースが候補を認識しなくてもこの1つのスクリプトを明示的に実行します。既知の HTTP 範囲では適切ですが、無関係なサービスで任意のスクリプトを強制する理由にはなりません。--script-args は名前付き引数を渡し、http-title.url=/about は説明ページを選びます。

nmap -sT -Pn -n --script=+http-title --script-args=http-title.url=/about -p 8410,8420,8430,8440,8450 -oX after.xml 127.0.0.4

Nmap done を待ちます。8420、8440、8450 は開き、8410、8430 は閉じているはずです。実際のタイトル応答から、申込は移行し、状態は残り、デバッグに到達できることを読み取ります。慣例的な SERVICE 名だけでは業務を識別できません。正確な製品バージョンは不要です。

スキャンを中断したり範囲を誤ったりしたら、修正した完全なコマンドを再実行して after.xml を置き換えます。プレーンテキストを XML に改名しても構造化された証拠にはなりません。

差分と実行エラーを区別する

Ndiff で変化を読み、すべての差分を不具合と見なさないようにします。Terminal に留まります。Ndiff は2つの Nmap XML を比較しますが、承認計画は知りません。

シェルコマンドは数値の終了ステータスを返します。$? は直前のコマンドの値で、echo はそれを表示します。別のコマンドに値を上書きされないよう、各比較の2行を続けて実行してください。まず基準を自分自身と比較します。

ndiff before.xml before.xml
echo $?

0、つまり意味のある差分なしが期待されます。Ndiff はスキャン時刻だけの差を無視します。次に前後を比較します。> は指定ファイルをコマンドの標準出力で置き換えます。編集可能な出力先 changes.txt だけを使います。

ndiff before.xml after.xml > changes.txt
echo $?

1 は差分が見つかったことを意味し、期待する結果です。意図した非ゼロ値であり、比較失敗ではありません。入力が存在しない、または読めない場合は 2 となり、これは実行エラーです。パスを直して再実行し、レポートがないことを変化なしと解釈しないでください。

cat changes.txt

- 行は以前の観測、+ 行は以後の観測を示します。次の対を読みます。

-8410/tcp open
+8410/tcp closed
-8420/tcp closed
+8420/tcp open
-8430/tcp open
+8430/tcp closed
-8450/tcp closed
+8450/tcp open

実際の出力には見出し、サービス名、タイトルもあります。8440 の状態サービスは変化がないため、既定の差分表示では通常省略されます。それでも維持要件をレビューする必要があります。申込の旧/新ポート対が承認されていても、カタログの喪失とデバッグ露出は引き渡しを妨げます。

業務と変更のレビューを提出する

実際に移行した業務を確認し、完全なレビューを提出します。Terminal に留まります。タイトルや開いているポートだけでは元のレコードが残ったことは分かりません。新エンドポイントから完全な応答を取得します。

curl -fsS -o current-business.csv http://127.0.0.4:8420/manifest.csv
cat current-business.csv

cmp は2ファイルをバイト単位で比較します。一致すれば何も表示せずゼロを返します。

cmp before-business.csv current-business.csv

元の MAKERS-DAY 申込3件がすべてあり、比較が成功するはずです。URL を誤入力したら修正して再取得します。比較に合格するためにレコードを編集しないでください。ページタイトルが一致していても、実際の業務が異なれば引き渡し上の問題です。

レビュー CSV は4列です。service、旧ポートの現在の状態、新ポートの現在の状態、判定です。keep または absent 要件を含め、項目が固定の1ポートを使う場合は旧/新ポートが同じなので現在状態を繰り返します。旧ポートがなかった場合だけ - を使い、閉じたポートを表すことはありません。判定は approved-move、approved-addition、kept、unexpected-loss、unexpected-open を区別します。旧/新関係が不完全な移行は migration-incomplete、承認済み追加の欠落は missing-addition、禁止エンドポイントが閉じたままなら kept-absent です。

引用符付き here-document は後続の行をそのまま cat に渡します。> は自分のレビューファイルだけを上書きし、末尾の CSV は1行に単独で書きます。計画の4項目を書きます。

cat > change-review.csv <<'CSV'
service,old_port_now,new_port_now,decision
registration,closed,open,approved-move
catalog,closed,closed,unexpected-loss
status,open,open,kept
debug,open,open,unexpected-open
CSV
cat change-review.csv

このレビューは引き渡し保留を示します。承認済み移行は動作しますが、必要なカタログがなく、デバッグが想定外に露出しています。所有者による後の修復が必要でも、レビューは完了しています。証拠を維持し、この作業ではデバッグ停止やカタログ復元をしないでください。

最後に元の状態サービスを再び使います。

curl -fsS -o status.csv http://127.0.0.4:8440/manifest.csv

同じ Ready レコードを引き続き提供する必要があります。before.xml、before-business.csv、plan.csv と、元の現在稼働中サービスをすべて変更せず維持してください。

まとめ

比較可能な Nmap 証拠を集め、Ndiff 終了ステータスを解釈し、移行した完全な業務を確認して、全承認関係をレビューしました。承認済み差分、想定外の開放、必須サービスの喪失は別の発見です。正確なレビューでは、元の現場を維持しながら引き渡し保留を求める場合があります。