이전에는 아무도 이 질문을 한 적이 없는 것 같습니다(대부분 호스트 기반 방화벽과 관련이 있음).
포트 스캐닝 도구(예: nmap)에 익숙한 사람은 SYN 스캐닝, FIN 스캐닝 등에 대해 모두 알고 호스트 시스템에서 열려 있는 포트를 확인합니다. 하지만 질문은 방화벽 자체에서 열려 있는 포트를 어떻게 결정하느냐는 것입니다(방화벽 뒤에 연결하려는 호스트에 특정 포트가 열려 있는지 또는 닫혀 있는지 여부는 무시하십시오). 이는 방화벽이 IP 연결을 차단하고 있다고 가정합니다.
예: 우리는 모두 포트 80(웹 트래픽)을 통해 serverfault.com과 통신합니다. 호스트를 스캔하면 포트 80이 열려 있음이 나타납니다. serverfault.com이 방화벽 뒤에 있고 여전히 이 트래픽을 허용하는 경우 방화벽에 포트 80도 열려 있다고 가정할 수 있습니다. 이제 방화벽이 사용자를 차단하고 있다고 가정해 보겠습니다(예: IP 주소가 거부 목록에 있거나 허용 목록에 없음). 포트 80이 열려 있어야 한다는 것을 알고 있지만(적절한 IP 주소에 대해 작동함) 사용자(허용되지 않은 IP)가 스캔을 시도하면 방화벽에 대한 모든 포트 스캔 시도는 패킷을 삭제합니다(우리가 열려 있는 것으로 알고 있는 포트 80 포함). ). 그렇다면 허용되지 않는 IP를 계속 사용하면서 방화벽 자체의 열려 있거나 닫힌 포트를 표시하기 위해 직접 방화벽 검색을 수행하려면 어떻게 해야 할까요?
답변1
당신은 그렇지 않습니다. 패킷 필터링 관점에서 볼 때 호스트가 표시하는 것과 방화벽이 표시하는 것 사이에는 차이가 없습니다. 방화벽의 IP 주소 자체를 검색하는 경우(IP 주소가 있다고 가정) 뒤에 있는 호스트로 바인딩되는 트래픽과 동일한 규칙을 사용하지 않을 것입니다.
그러나 일부 구성에서는 방화벽이 허용하는 내용이 실수로 표시될 수 있습니다.
RST
거부( 일반적인 TCP 동작인 패킷) 로 수신하지 않는 포트의 트래픽에 응답하는 호스트와 트래픽을 자동으로 삭제하는 방화벽을 예로 들어 보겠습니다 . 호스트는 80만 수신하지만 방화벽은 80과 25를 허용한다고 가정해 보겠습니다. 방화벽은 호스트가 거부하는 포트 25 트래픽과 호스트가 연결하는 포트 80을 통과시키고 다른 모든 트래픽을 차단합니다.
nmap은 해당 호스트가 포트 80을 열고 포트 25를 닫고 다른 모든 포트를 필터링한 것으로 표시합니다. nmap은 이러한 종류의 차이가 있을 때 표시하여 현재 보고 있는 호스트의 동작을 결정하는 데 도움을 주기 위해 만들어졌습니다.
답변2
웹 서비스를 사용하여 포트 스캔을 수행하거나 외부 위치에서 외부 IP 주소에 대해 포트 스캔을 실행하는 경우 방화벽에서 열려 있는 포트를 확인할 수 있습니다.
이것은 Google 검색을 통해 찾은 첫 번째 웹 서비스입니다. 아마도 다른 사람들도 있을 것입니다:http://www.hackerwatch.org/probe/
답변3
방화벽을 소유하고 있고 그에 대한 기능 테스트를 수행하려는 경우 스캔 전에 DMZ 인터페이스에 연결된 스위치의 스팬 포트에 스니퍼를 설정할 수 있습니다. 이렇게 하면 대상 호스트가 다운되거나 특정 포트에서 응답하지 않는 경우에도 통과한 모든 패킷을 포착할 수 있습니다. 이는 스캔을 수행하는 도구가 제공할 수 있는 것보다 더 많은 가시성을 제공합니다.