소개
Northstar의 지원 웹사이트는 도움말 페이지와 허용된 다운로드를 제공합니다. 비정상적인 아카이브 다운로드가 발견되어, 내부 백업이 공개 파일과 같은 위치에 잘못 저장되었을 가능성이 있습니다. 여러분은 웹사이트 유지보수 권한을 가진 당직 엔지니어입니다.
요청을 추적하고 URL을 웹 서버 내부 파일과 연결한 다음, 백업을 비공개 저장소로 옮기고 지원 사이트가 계속 작동하는지 확인합니다. 기본적인 터미널 사용에 익숙하면 충분합니다. HTTP 상태 코드와 웹 루트의 경로 매핑은 이 실습에서 설명합니다. 모든 데이터와 트래픽은 모의로 생성되었습니다.
의심스러운 다운로드 조사
이 단계에서는 의심스러운 다운로드를 추적하고 아카이브를 가져온 뒤, 내부 데이터가 들어 있는지 확인합니다.
환경은 준비되어 있습니다. Workstation은 클라이언트 터미널이며 현재 디렉터리는 /home/labex/project입니다. Web Server는 웹사이트 서버에 이미 연결된 유지보수 터미널입니다. 안내에 따라 탭을 전환하세요. Topology는 두 환경의 관계와 현재 웹사이트의 접속 가능 여부를 보여 줍니다.
Topology를 열어 클라이언트와 서버를 확인한 뒤 Workstation으로 돌아오세요. 상태는 홈페이지가 응답하는지를 나타낼 뿐, 비공개 파일이 보호되는지를 나타내지는 않습니다.

정상 접근 확인
Workstation을 사용합니다. curl은 HTTP 요청을 보내고 응답을 출력합니다. -sS는 진행 상황을 숨기지만 연결 오류는 표시합니다. 127.0.0.1:8081은 Workstation에서 접근할 수 있는 웹사이트 엔드포인트입니다. 127.0.0.1은 로컬 컴퓨터를 뜻합니다. Web Server에서 같은 주소는 Workstation이 아니라 서버 자체를 가리킵니다.
curl -sS http://127.0.0.1:8081/
응답에는 Northstar Support와 도움말 및 제품 가이드 링크가 포함됩니다. 공개 디렉터리, 즉 웹 루트는 서버가 URL을 통해 내용을 제공하는 파일 시스템 디렉터리입니다.
제품 가이드는 의도적으로 공개되어 있습니다. 변경하기 전에 먼저 가져오세요.
curl -sS http://127.0.0.1:8081/downloads/product-guide.txt
첫 줄은 Northstar Product Guide입니다. 허용된 예제 다운로드인 /downloads/public-examples.tar도 공개 리소스이며, 이름이 아카이브처럼 보여도 계속 사용할 수 있어야 합니다.
다운로드 추적
Web Server로 전환합니다. cat은 텍스트 파일을 출력합니다.
cat /var/log/nginx/site-access.log
Nginx는 이 요청들을 처리하는 웹 서버입니다. 접근 로그의 각 줄에는 클라이언트 주소, 시간, 요청, 상태 코드, 바이트 단위 응답 크기, 사용자 에이전트가 기록됩니다. GET은 리소스를 요청하며, 사용자 에이전트는 요청을 보낸 소프트웨어를 식별합니다. 200은 서버가 성공 응답을 반환했다는 뜻이고, 404는 요청한 리소스를 찾지 못했다는 뜻입니다. 네트워크 전달 방식에 따라 기록되는 클라이언트 주소가 달라질 수 있으므로, 이 주소가 특정 개인을 식별한다고 가정하지 마세요. TopologyHealth/1.0 항목은 환경 보기 자체의 상태 확인 요청입니다.
/admin과 같은 실패한 요청 이후에 /backups/support-backup.tar에 대한 성공 요청이 있는지 찾아보세요. 지정한 텍스트와 일치하는 줄을 출력하는 grep으로 로그를 좁힙니다.
grep 'support-backup.tar' /var/log/nginx/site-access.log
일치하는 줄에는 GET /backups/support-backup.tar와 상태 200이 포함되어야 합니다. 다운로드를 시사하지만, 내부 데이터가 노출되었다고 판단하기 전에 응답을 확인해야 합니다. 관련 줄에서 일정하게 유지되는 필드는 다음과 같습니다.
... "GET /backups/support-backup.tar HTTP/1.1" 200 10240 ... "ExternalClient/1.0"
주소와 타임스탬프는 달라질 수 있습니다. 경로, 성공 응답, 아카이브 내용이 유용한 단서입니다.
백업 노출 확인
Workstation으로 돌아갑니다. -o는 응답을 출력하는 대신 지정한 파일에 저장합니다.
curl -sS -o /home/labex/project/support-backup.tar http://127.0.0.1:8081/backups/support-backup.tar
tar는 아카이브 파일을 읽습니다. -t는 아카이브에 포함된 항목을 나열하고, -f는 아카이브를 지정합니다.
tar -tf /home/labex/project/support-backup.tar
internal-customers.txt가 보여야 합니다. -x는 항목을 추출하고, -O는 추출 파일을 생성하지 않고 내용을 터미널로 보냅니다.
tar -xOf /home/labex/project/support-backup.tar internal-customers.txt
내용은 INTERNAL ONLY로 시작하며 모의 고객 레코드를 설명합니다. 이를 통해 성공 응답에 허용된 공개 아카이브가 아니라 내부 데이터가 포함되었음을 확인할 수 있습니다.
백업을 비공개 저장소로 이동
이 단계에서는 유지보수에 필요한 내용을 보존하면서 공개 웹사이트에서 내부 백업을 제거합니다. Web Server에서 공개 파일을 찾고 문제를 해결하세요.
공개 파일 찾기
Web Server로 전환해 웹사이트 설정을 읽습니다.
cat /etc/nginx/conf.d/default.conf
root /srv/site;는 /backups/support-backup.tar를 /srv/site/backups/support-backup.tar에 매핑합니다. autoindex off;는 디렉터리 목록 표시를 끄지만, 알려진 파일 이름으로 직접 접근하는 것은 차단하지 않습니다. 링크가 없는 파일도 비공개라고 할 수 없습니다.
-l 옵션은 크기, 소유자, 접근 권한을 포함한 자세한 목록을 표시합니다. 공개 파일을 확인하세요.
ls -l /srv/site/backups/support-backup.tar
표시된 경로를 통해 아카이브가 설정된 웹 루트 아래에 있음을 확인할 수 있습니다.
웹사이트 밖에 백업 보존
비공개 디렉터리 /srv/private-backups는 이미 /srv/site 밖에 있습니다. 이 대상 컨테이너 안에서는 유지보수 권한이 있습니다. mv는 내용을 유지한 채 파일을 이동합니다.
mv /srv/site/backups/support-backup.tar /srv/private-backups/support-backup.tar
웹사이트는 일반적인 공개 디렉터리 매핑으로 이 파일을 제공할 수 없게 됩니다. 파일을 삭제하는 대신 승인된 유지보수를 위해 백업을 보존할 수도 있습니다. 서버 설정이 아니라 파일 위치만 바뀌었으므로 Nginx를 다시 로드할 필요가 없습니다.
Web Server에서 비공개 복사본을 계속 읽을 수 있는지 확인합니다.
tar -xOf /srv/private-backups/support-backup.tar internal-customers.txt
동일한 내부 테스트 레코드가 보여야 합니다.
기밀성과 웹사이트 가용성 검증
이 단계에서는 최종 접근 경계를 테스트하고 정상적인 공개 리소스가 계속 작동하는지 확인합니다.
Workstation으로 돌아갑니다. -o /dev/null은 응답 본문을 버리고, -w는 지정한 응답 정보를 출력합니다. %{http_code}는 HTTP 상태를 선택하고, \n은 줄바꿈을 추가합니다.
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/backups/support-backup.tar
예상 결과는 404입니다. 이 curl 명령 자체는 성공적으로 종료됩니다. HTTP 오류 응답은 연결 실패와 다릅니다. 서버를 중지하면 과정의 가용성 검사에 실패합니다.
같은 방법으로 일반 페이지와 허용된 다운로드를 확인합니다.
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/
curl -sS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8081/help.html
curl -sS http://127.0.0.1:8081/downloads/product-guide.txt
curl -sS -o /home/labex/project/public-examples.tar http://127.0.0.1:8081/downloads/public-examples.tar
tar -xOf /home/labex/project/public-examples.tar example.txt
페이지는 200을 반환합니다. 가이드는 Northstar Product Guide로 시작하며 예제 아카이브 항목에는 Public support examples.가 들어 있습니다. Topology의 Website reachable은 홈페이지가 응답함을 확인할 뿐, 유출 문제가 해결되었음을 의미하지 않습니다. 최종 검사는 기밀성과 가용성을 각각 확인합니다.
요약
공개 다운로드를 서버의 파일까지 추적하고, 내부 데이터를 웹 루트 밖으로 옮겼습니다. 또한 비공개 파일의 다운로드는 실패하고 공개 서비스는 계속 작동하는지 검증했습니다.



