소개
River Festival은 네트워크를 개방하기 전에 접근 검토가 필요합니다. 방문객과 직원은 모두 공개 일정을 읽을 수 있어야 하며, 체크인과 물품 서비스는 직원 전용입니다. 같은 서버를 두 네트워크 위치에서 관찰하고 예상하지 못한 접근과 필요한 서비스 이용 불가를 포함하는 정확한 검토를 제출합니다.
Guest Scanner와 Staff Scanner는 한 대의 교육용 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은 텍스트 파일을 표시합니다. ..는 부모 디렉터리이므로 다음 경로는 역할 디렉터리 바로 위의 공유 약정을 읽습니다.
cat ../plan.csv
CSV는 쉼표로 구분된 값입니다. 첫 행은 열 이름이고 이후 각 행은 하나의 관계입니다. 여섯 행은 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 레코드 두 개, 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
동일한 공개 레코드 두 개가 완전하게 나와야 합니다. 양쪽에서 공개 업무 대조 응답이 정상이어야 스캐너가 끊긴 것을 올바른 접근 차단으로 오해하지 않습니다. 두 public.csv는 서로 다른 역할 디렉터리에 있습니다. 파일 이름을 잘못 입력했다면 오류를 읽고 pwd로 이 터미널의 디렉터리를 확인한 뒤, 위에 나온 해당 역할의 cd를 다시 실행하고 재시도하세요. 경로를 복구하거나 서비스를 재시작하지 마세요.
각 네트워크에서 동일한 서비스 스캔하기
양쪽 출발지에서 완전한 관측을 수집합니다. 포트 상태는 이 스캐너가 관측한 결과이며 서버의 고유한 속성이 아닙니다. open은 TCP 연결을 수락했다는 뜻입니다. closed는 스캔이 거절을 받았다는 뜻이며, 수신 서비스가 없거나 필터가 거절했을 수 있습니다. filtered는 탐침이나 응답이 차단되어 Nmap이 포트의 개방 여부를 판단할 수 없었다는 뜻입니다. 상태만 보고 특정 근본 원인을 추정하지 마세요.
Nmap은 네트워크 서비스를 조사합니다. -sT는 TCP connect 스캔을 선택하며 여기서는 원시 패킷 권한이 필요하지 않습니다. -Pn은 앞선 호스트 탐색 판단을 건너뛰고 다른 탐침에 응답이 없어도 명시한 포트를 검사합니다. 이 옵션 자체가 호스트의 생존을 증명하지는 않습니다. -n은 역방향 이름 조회를 생략합니다. --reason은 응답 근거를 표시하고, -p는 허용된 전체 포트 집합을 선택하며, -oX는 일반 터미널 출력과 함께 구조화된 XML을 저장합니다. 기본 일반 포트 집합은 이번 약정을 대체하지 않습니다.
Nmap Scripting Engine인 NSE는 선택한 애플리케이션 요청을 보낼 수 있습니다. --script는 스크립트 하나를 선택하고 --script-args는 이름이 붙은 옵션을 전달합니다. http-title은 HTML 제목을 가져오며 http-title.url=/about은 설명 리소스를 선택합니다. 여기서는 세 후보 모두 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 이름만으로 애플리케이션을 증명할 수는 없습니다.
이는 실제 스캔 두 번이며 하나의 결과를 두 출발지용으로 이름만 바꾼 것이 아닙니다. 역할별 scan.xml과 기존 출발지 트래픽이 검토를 뒷받침합니다. 탭, 대상, 포트가 잘못됐다면 올바른 스캐너에서 수정한 전체 스캔을 다시 실행하세요. 중단했다면 완전한 재실행이 끝날 때까지 기다리세요. 텍스트 이름을 XML로 바꾸거나 다른 역할 파일을 복사해도 누락된 출발지 관측은 생기지 않습니다.
접근 검토를 제출하고 현장 보존하기
여섯 관측 관계를 정확한 인계 검토로 정리합니다. 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는 한 줄에 단독으로 있어야 합니다. ../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
양쪽 모두 원래 공개 레코드 두 개를 계속 제공해야 합니다. 비공개 서비스와 원래 네트워크 설정도 조사를 위해 유지해야 합니다. URL을 잘못 입력했다면 다른 쪽 다운로드를 복사하지 말고 같은 역할에서 알려진 URL을 수정하여 재시도하세요.
요약
양쪽 출발지의 정상 업무를 확인하고 별도의 Nmap 관측을 수집하여 모든 접근 관계를 검토했습니다. 예상하지 못한 접근 가능성과 필수 서비스 이용 불가는 서로 다른 발견입니다. 완성된 검토는 원래 현장을 보존하며 결론을 실제 관측한 출발지와 범위로 제한합니다.



