포트 스캐너
잘 알려진 포트 약 스무 개, 각 포트마다 TCP 연결 한 번, sysosx 서버에서 — 그리고 두 개가 아니라 세 개의 정직한 답입니다. 포트는 열려 있을 수도 있고(무언가가 응답함), 닫혀 있을 수도 있고(호스트가 적극적으로 거부함), 필터링되어 있을 수도 있습니다(침묵 — 대개 방화벽이 패킷을 버리는 것이지, 거기에 아무것도 없다는 증거가 아닙니다). 기본 대상은 scanme.nmap.org로, nmap 프로젝트가 사람들이 스캔을 배울 수 있도록 바로 그 목적으로 운영하는 공개 호스트입니다. 다른 어떤 호스트에 대해서는 자신의 서버나 테스트할 권한이 있는 서버를 스캔하세요.
이것을 계속 감시하고 싶으신가요? myeventwatch로 무료로 모니터링 — 만료 및 다운타임 알림, 카드 불필요.
스캔이 측정하는 것
포트 스캔은 흔히 “어떤 문이 열려 있는지 확인하는 것”이라고 설명되며, 그 비유는 한 가지 교정이 필요한 것을 빼면 쓸 만할 만큼 정확합니다. 문은 열려 있을 수도, 잠겨 있을 수도, 아니면 그저 응답이 없을 수도 있습니다. 두드리고 아무 소리도 듣지 못하는 것은 문이 잠긴 것을 발견하는 것과 같지 않으며, 열림과 닫힘만 보고하는 스캐너는 세 번째 경우를 숨기고 있습니다. 그래서 이 스캐너는 열림, 닫힘, 필터링됨을 세 가지 서로 다른 상태로 보고합니다. 열림은 연결이 성공했다는 뜻으로, 서비스가 수신 대기 중이며 연결을 받아들이고 있습니다. 닫힘은 호스트가 리셋을 보냈다는 뜻입니다 — 호스트는 살아 있고 그 포트에는 아무것도 없습니다. 필터링됨은 1초의 전체 대기 시간이 침묵 속에 지나갔다는 뜻으로, 패킷을 버리는 방화벽이 밖에서 보이는 모습입니다. 그 포트는 그 방화벽 뒤에 서비스를 가지고 있을 수 있으며, 스캔은 그렇지 않다고 말할 수 없습니다. 필터링됨을 따로 유지하는 것이 행동할 수 있는 결과와 조용히 오도하는 결과의 차이입니다.
스캔은 의도적으로 좁습니다. 웹(80, 8080, 8443, 443), 메일(25, 110, 143, 993, 995), DNS(53), 원격 접속(22, 23, 3389, 5900), 파일 공유(445), 데이터베이스(3306, 5432, 27017) 및 몇 가지 다른 포트로 이루어진 약 스무 개 포트의 고정 목록을 단순한 TCP 연결만으로 탐지하고 그 외에는 아무것도 하지 않습니다. 배너 읽기가 없으므로 스캔은 서비스 버전을 절대 알지 못하고(누설하지도 않습니다). “필터링됨” 응답이 훨씬 더 시끄러운 UDP도 없습니다. 그리고 자신의 포트를 제공할 방법도 없습니다. 임의의 포트 입력은 첫눈용 도구를 범용 매핑 서비스로 바꾸기 때문입니다. 대상 자체는 한 번만 해석되며 모든 연결은 그 고정된 하나의 주소로 가므로, 스캔 도중에 바뀌는 이름이 탐지를 다른 곳으로 돌릴 수 없습니다. 내부적으로 이 페이지는 sysosx 서버의 GET /api/check/port-scan을 호출하고, 그것은 스무 번의 연결을 병렬로 실행하며 결과를 10분간 캐시합니다.
결과 읽는 법
열린 포트부터 시작하세요 — 그것이 실제 공격 표면, 인터넷이 닿을 수 있는 서비스입니다. 22나 3389가 열려 있다는 것은 원격 접속이 어디서든 닿을 수 있다는 뜻이며, 의도한 것(자신이 관리하는 서버)일 수도 있고, 자신의 주소로 가장 먼저 제한해야 할 것일 수도 있습니다. 인터넷을 향한 열린 데이터베이스 포트(3306, 5432, 27017)는 거의 결코 의도한 것이 아니며 즉각적인 주의가 필요합니다. 데이터베이스는 인터넷 전체가 아니라 애플리케이션이 닿아야 하는 것입니다. 열린 80과 443은 웹 서버에서 정상입니다. 열린 메일 포트는 메일 서버에서 정상입니다. 그 밖에 열린 것은 무엇이든 스스로 설명할 수 있어야 합니다. 닫힌 포트는 아무것도 필요 없습니다. 호스트는 살아 있고 거부하고 있으며, 그것이 대부분의 서버에서 목록의 대부분에 대해 기대되는 상태입니다. 필터링된 포트는 거기에 무언가가 있을 것으로 기대했을 때만 다시 볼 가치가 있습니다 — 자신이 운영하는데 스캔이 볼 수 없는 서비스는 대개 방화벽 규칙이 제 일을 하고 있는 것이거나, 서비스가 잘못된 인터페이스에 바인딩된 것이며, 스캔만으로는 그 둘을 구별할 수 없습니다. 열린 포트가 전혀 없는 결과는 정상적인 결과이지 오류가 아닙니다. 이 서버의 관점에서 스무 가지 일반 서비스 중 어느 것에도 닿을 수 없다는 뜻이며, 그것이 바로 강화된 호스트의 모습입니다.
관련 도구: 443이 열려 있는 것을 알게 되면 그 TLS 설정에는 SSL 등급 평가기를, 도달 가능성과 레코드를 함께 보려면 웹사이트 상태 검사를, 질문이 이름이 어디를 가리키는지가 아니라 그 위에서 무엇이 응답하는지일 때는 DNS 전파 검사기를 사용하세요.
더 읽어보기: 열린 포트가 서버에 대해 말해 주는 것 — 운영자처럼 스캔을 읽는 법, 어떤 열린 포트가 정상이고 어떤 것이 새벽 3시의 호출이 일어나기를 기다리고 있는 것인지.
자주 묻는 질문
이것은 nmap을 실행하는 것과 어떻게 다른가요?
nmap은 모든 것을 모든 방식으로 스캔합니다. 전체 포트 범위, UDP, 버전 탐지, 운영 체제 지문. 이 도구는 sysosx 서버에서 좁은 한 가지 일만 합니다 — 약 스무 개의 잘 알려진 포트로 이루어진 고정 목록에 대한 TCP 연결, 그 외에는 아무것도 없습니다. 배너 읽기가 없고, 버전 탐지가 없고, UDP가 없고, 사용자 지정 포트가 없습니다. 그 좁음이 핵심입니다. 누구나 무엇에든 겨눌 수 있는 범용 스캐너가 되지 않고 “일반 포트에서 무엇이 수신 대기 중인가?”에 답합니다.
열림, 닫힘, 필터링됨은 실제로 무엇을 뜻하나요?
열림은 TCP 연결이 성공했다는 뜻입니다 — 무언가가 그 포트에서 수신 대기 중이며 연결을 받아들이고 있습니다. 닫힘은 호스트가 연결을 적극적으로 거부했다는 뜻(리셋 패킷)으로, 그 포트에 아무것도 없는 살아 있는 호스트가 응답하는 방식입니다. 필터링됨은 그 포트가 1초 안에 전혀 응답하지 않았다는 뜻입니다 — 전형적으로 방화벽이 조용히 패킷을 버리는 경우입니다. 필터링됨은 닫힘이 아닙니다. 필터링된 포트는 방화벽 뒤에 서비스를 가지고 있을 수 있으며, 유일하게 정직한 진술은 “응답 없음”입니다. 결과 표가 세 가지 상태를 모두 따로 유지하는 이유가 바로 그것입니다.
왜 스무 개 포트뿐이며, 왜 제 포트를 추가할 수 없나요?
임의의 포트 입력을 가진 포트 스캐너는 인터넷의 어떤 호스트든 매핑하기 위한 도구이고, 이 사이트는 그렇게 되지 않을 것이기 때문입니다. 목록은 첫눈에 중요한 포트 — 웹, 메일, DNS, 데이터베이스, 원격 접속, 파일 공유 — 를 다루며, 서버는 그 밖의 모든 것을 거부합니다. 자신이 소유한 호스트의 전체 스캔이 필요하다면, 범위와 결과를 자신이 통제하는 자신의 컴퓨터에서 nmap을 실행하세요.
왜 기본값이 scanme.nmap.org인가요?
바로 그 목적으로 존재하기 때문입니다. nmap 프로젝트는 스캔이 어떻게 작동하는지 배울 수 있도록 누구나 스캔할 수 있는 공개 대상으로 그것을 운영합니다. 스캔에 허가 논의가 필요 없는 인터넷상의 유일한 호스트입니다. 다른 어떤 호스트에 대해서도 규칙은 간단합니다. 자신의 서버, 테스트할 권한이 있는 서버, 또는 공개 테스트 대상을 스캔하세요 — 낯선 사람의 인프라는 절대 안 됩니다.
왜 결과가 10분간 캐시되고, 시간당 새 스캔이 다섯 번뿐인가요?
한 번의 스캔은 한 번의 핸드셰이크가 아니라 스무 번의 병렬 TCP 연결이므로, 다른 검사보다 비용이 더 들고 대량 탐지에 악용되기 쉽습니다. 10분 캐시는 같은 호스트를 반복 검사하는 비용이 0이라는 뜻이며, 더 엄격한 신규 제한(방문객당 시간당 다섯 번, 최대 분당 두 번)은 이 도구를 자신의 서버를 확인하는 사람에게 쓸 만하게 유지하면서 탐지 서비스가 되지 않게 합니다. 캐시된 결과에는 그렇게 표시됩니다. 호스트의 열린 포트는 분 단위로 바뀌는 일이 거의 없습니다.