2강 / 20강

정찰 — 공격자는 무엇부터 보나

nmap 으로 내 서버의 열린 문을 세어 본다

정찰 — 공격자는 무엇부터 보나
공격은 언제나 정찰부터 시작합니다. 방어도 같은 눈으로 내 서버를 봐야 합니다.

공격에는 순서가 있습니다. 영화처럼 곧바로 뚫고 들어오는 게 아니라, 가장 먼저 조용히 살펴봅니다. 어떤 문이 있고, 그 문 뒤에 무엇이 있는지. 이 단계를 정찰(reconnaissance)이라고 해요.

방어하는 우리가 정찰 도구를 배우는 이유는 하나입니다 — 공격자가 보는 것을 나도 봐야 무엇을 닫을지 알 수 있으니까요.

포트는 건물의 문입니다

서버는 IP 주소(건물 주소) 하나에 포트라는 문이 65535개 있습니다. 각 문 뒤에는 서로 다른 프로그램이 앉아 있어요.

  • 22 — SSH (관리자가 원격 접속하는 문)
  • 80 / 443 — 웹 (손님이 쇼핑하는 문, http / https)
  • 3306 — MySQL (데이터베이스 — 절대 밖에 열면 안 되는 문)

포트 스캔은 이 문들을 하나씩 노크해 보고, 누가 대답하는지 적는 것입니다.

각 포트의 STATE 열을 보세요.
🥷 공격자 브라우저 안에서 실행 (계산용)

open · filtered · closed — 대답의 세 가지 방식

open
문이 열려 있고 안에서 프로그램이 대답함. 공격자가 노리는 곳
filtered
방화벽이 삼킴 — 대답 자체가 없음. 공격자에게 가장 답답한 상태
closed
문은 있는데 안에 아무도 없음(RST 응답). 여기 서버가 있다는 건 들킴

방화벽(3강)을 켜면 안 쓰는 포트가 closed 에서 filtered 로 바뀝니다. 공격자 입장에서는 "여기 서버가 있긴 한데 대답을 안 하네" 가 되어, 어디를 노려야 할지조차 알기 어려워져요.

OpenSSH 9.6, nginx 1.24 처럼 버전이 보입니다.
🥷 공격자 브라우저 안에서 실행 (계산용)
포트 스캐너 — 문을 열고 닫으며 공격자 화면이 어떻게 바뀌는지
불러오는 중…

같은 명령, 다른 자리

이 강의의 핵심 습관 하나 — 같은 스캔을 세 자리에서 해 보기입니다. 셀 오른쪽 위에서 관점을 바꿔 보세요.

  • 🖥️ 서버 안(web1) — 방화벽을 지나지 않으므로 127.0.0.1 에만 붙은 것까지 다 보입니다
  • 💻 손님(client) · 🥷 공격자(attacker) — 밖에서 실제로 보이는 것만 보입니다

정말 중요한 건 밖에서 어떻게 보이느냐입니다. 서버 안에서 아무리 포트가 많아도, 방화벽이 밖에서 다 막아 준다면 공격 표면은 좁은 거예요.

서버 자신이 보는 포트. 밖에서 보이는 것과 비교해 보세요.
🖥️ 내 가상 서버 브라우저 안에서 실행 (계산용)
🤔 확인 문제
공격자가 스캔했더니 3306 포트가 filtered 로 나왔습니다. 무슨 뜻일까요?
🤔 확인 문제
내 서버를 가장 정확하게 점검하려면 어느 자리에서 스캔해야 할까요?