네트워크 변경 계획에 따라 업데이트 확인하기

NmapBeginner
지금 연습하기

소개

Willow Makers는 신청 서비스를 새 포트로 옮기는 것을 승인했습니다. 카탈로그와 상태 서비스는 계속 사용할 수 있어야 하고 디버그 서비스는 계속 없어야 합니다. 업데이트 후 네트워크 변화를 검토하고 인수를 막는 문제를 포함하여 정확한 인계 검토를 제출합니다.

환경은 실제 기준 스캔을 수집한 뒤 로컬 유지보수 시나리오를 수행했습니다. 이는 교육 준비이며 어젯밤 운영 환경의 실제 이력을 주장하는 것이 아닙니다. 모든 레코드는 합성 데이터이고 실제 HTTP 서비스는 한 컨테이너를 공유합니다. 전체 과정에서 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는 쉼표로 구분된 값입니다. 첫 줄은 열 이름이고 이후 각 줄은 레코드 하나입니다. old_port와 new_port는 서비스 관계를 설명하며 스캔할 순서를 뜻하지 않습니다. 각 행은 신청을 8410에서 8420으로 옮기고 카탈로그를 8430에, 상태를 8440에 유지하며 8450의 디버그는 계속 없게 할 것을 승인합니다. 따라서 새 신청 포트의 개방은 예상된 변경이지만 다른 모든 개방이 자동 승인되는 것은 아닙니다.

준비된 before.xml은 이 교육용 업데이트 전에 얻은 실제 Nmap XML입니다. before-business.csv는 당시 얻은 완전한 신청 응답입니다. 정상 업무 샘플을 읽습니다.

cat before-business.csv

MAKERS-DAY의 registration 레코드 세 개, 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는 원시 패킷 권한이 필요 없는 TCP connect 스캔을 선택합니다. -Pn은 앞선 호스트 탐색 판단을 생략하여 선택한 모든 포트를 검사하며 이 옵션 자체가 대상의 생존을 증명하지는 않습니다. -n은 역방향 이름 조회를 생략하고 -p는 허용 포트를 선택하며 -oX는 일반 출력과 함께 구조화된 XML을 기록합니다. 포트를 누락하면 비교가 불완전해지며 해당 서비스가 사라졌다는 증거가 되지 않습니다.

Nmap Scripting Engine인 NSE는 범위를 좁힌 애플리케이션 요청을 수행할 수 있습니다. 먼저 --script-help로 선택한 스크립트 도움말을 읽습니다.

nmap --script-help http-title

http-title은 HTML 제목을 읽습니다. 이 로컬 시나리오의 모든 후보는 HTTP 엔드포인트라고 명시되어 있습니다. 앞의 +는 포트 데이터베이스가 후보를 인식하지 못해도 이 스크립트 하나를 명시적으로 실행합니다. 알려진 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는 두 Nmap XML 파일을 비교하며 승인 계획을 알지 못합니다.

셸 명령은 숫자 종료 상태를 반환합니다. $?는 바로 앞 명령의 상태이고 echo는 이를 출력합니다. 다른 명령이 상태를 덮어쓰지 않도록 각 비교의 두 줄을 함께 실행하세요. 먼저 기준을 자기 자신과 비교합니다.

ndiff before.xml before.xml
echo $?

0, 즉 의미 있는 차이가 없음을 예상합니다. Ndiff는 스캔 시각만 다른 경우를 무시합니다. 이제 전후를 비교합니다. >는 지정 파일을 명령의 표준 출력으로 대체합니다. 편집 가능한 출력 대상 changes.txt만 사용하세요.

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

1은 차이를 찾았다는 뜻이며 예상된 결과입니다. 의도한 0이 아닌 상태이지 비교 실패가 아닙니다. 입력이 없거나 읽을 수 없으면 상태 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는 두 파일을 바이트 단위로 비교합니다. 같으면 아무것도 출력하지 않고 0을 반환합니다.

cmp before-business.csv current-business.csv

원래 MAKERS-DAY 신청 레코드 세 개가 모두 있고 비교가 성공해야 합니다. URL을 잘못 입력했다면 수정하고 다운로드를 반복하세요. 비교를 통과하려고 레코드를 편집하지 마세요. 페이지 제목이 같아도 실제 업무가 다르면 인계 문제입니다.

검토 CSV에는 네 열이 있습니다. service, 이전 포트의 현재 상태, 새 포트의 현재 상태, 판정입니다. keep 또는 absent 요구를 포함하여 한 고정 포트를 사용하는 항목은 이전 포트와 새 포트가 같으므로 현재 상태가 반복됩니다. 이전 포트가 없을 때만 -를 사용하며 닫힌 포트를 뜻하지 않습니다. 판정은 approved-move, approved-addition, kept, unexpected-loss, unexpected-open을 구분합니다. 이전/새 관계가 불완전한 이전은 migration-incomplete, 승인된 추가가 없는 경우는 missing-addition, 금지된 엔드포인트가 계속 닫혀 있으면 kept-absent입니다.

따옴표가 있는 here-document는 뒤의 줄을 그대로 cat에 전달합니다. >는 자신의 검토 파일만 대체하며 마지막 CSV는 한 줄에 단독으로 있어야 합니다. 계획의 네 항목을 씁니다.

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 종료 상태를 해석했으며 이전된 전체 업무를 확인하고 모든 승인 관계를 검토했습니다. 승인된 차이, 예상 밖의 개방, 필수 서비스 손실은 서로 다른 발견입니다. 정확한 검토는 원래 현장을 보존하면서 인계 보류를 요구할 수 있습니다.