두 개의 IP 주소가 동일한 서버에 속하는지 여부를 알 수 있습니까? (예 : 다른 국가)에서 하나 또는

두 개의 공용 IP 주소와 동일한 / 27 네트워크에있는 지식이 있다면 원격 위치 (예 : 다른 국가)에서 하나 또는 두 개의 서버에 속하는지 확인할 수 있습니까?



답변

아니요, 일반적인 경우는 아닙니다.


SO의 손님을 행복하게하기위한 추가 사항 :

  • 기본 TCP / IP 프로토콜 (예 : IP / TCP / UDP, ICMP)에는 질문에서 구별을 요구하기위한 것이 없습니다.
  • HTTP와 같은 많은 고급 프로토콜의 경우에도 마찬가지입니다.
  • 실제로 시스템에 대해 추측 하기 위해 응답 패턴에서 다소 미묘한 차이를 사용할 수 있습니다. Linux와 Windows 서버와 같이 매우 다른 두 시스템이있는 경우 두 개의 호스트를 갖는 것으로 충분할 수 있습니다.
  • 시스템이 비슷할수록 더 어려워집니다. 하드웨어와 OS가 동일한 HA 웹 클러스터의 두 노드는 이러한 방식으로 분리 할 수 ​​없습니다. 나는 오늘날 대부분의 시나리오에서 이것이 일반적인 경우라고 생각합니다.
  • 마지막 : 두 개의 가상 머신이 동일한 물리적 박스에 하나 또는 두 개의 서버입니까? 처음부터 차별화를 시도하는 이유에 따라 이것이 중요 할 수 있으며 네트워킹 수준에 대해 이야기하는 것은 완전히 불가능합니다.

답변

“왜”에 대해 궁금합니다. 듀얼 홈 머신에 대한 우려는 일반적으로 이름이 지정되지 않은 sysadmin의 두통으로 국한됩니다. 세부 사항은 OSI 모델에 의해 숨겨져 있습니다.

리눅스 중심의 대답.

지문을 생성하고 교육적인 추측을하는 몇 가지 방법이 있습니다.

  1. 적절한 포트 스캔이있는 nmap -o 및 nmap. 서버가 항상 두 NIC에 바인딩되는 것은 아닙니다. 그러나 많은 시간을 할애합니다.

  2. MAC 주소. MAC 주소를 얻을 수있는 방법이 있다면 제조업체는 통합 하드웨어에 연속 주소를 사용하는 것을 좋아합니다. 거의 동일한 두 MAC 주소가 동일한 마더 보드 일 가능성이 높습니다. 물론 애프터 마켓 카드에는 적용되지 않습니다.

  3. 인사말. Telnet, ftp, smtp 등은 모두 식별 정보를 제공합니다. 이러한 서비스가 실행 중인지 확인하고 충분한 고유 정보를 제공하십시오. 배너는 오늘날 드물지만 여전히 가치가 있습니다.

  4. NIC 독립 동작을 테스트하십시오. 예를 들어, 수십 번 ssh에 가짜 인증을 제공하여 거부 호스트를 트립하십시오. 거부 된 호스트가 트립되면 다음 시도에서 소켓이 즉시 닫힙니다. 다른 IP에서도 이러한 상황이 발생하는지 확인하십시오.

/ 27 그물은 … 29 호스트? 높은 신뢰도로 듀얼 홈 머신을 식별 할 가능성은 매우 얇고 5 % 정도라고합니다. 그러나 호스트가 너무 적 으면 교육받은 추측을 할 수 있습니다.

인터뷰에 대한 재미있는 질문. 실제로 훔칠 수도 있습니다.


답변

이론적으로는 대부분의 경우 의미있는 신뢰 수준을 제공 할 수 있습니다. 그러나 실제로는 훨씬 어려워지는 몇 가지주의 사항이 있습니다.

나는 다른 답변을 겹치게 될 것이고 아마도 물건을 놓쳤을 것입니다. 그러나 이것은 왜이 특정 비트가 중요한지 또는 그렇지 않은지에 대한 상세한 추론입니다.

먼저 MAC 주소에 대한 생각은 잊어 버리십시오. 네트워크 세그먼트에 직접 액세스하지 않으면 네트워크 세그먼트를 볼 수 없습니다.

또한 포트 스캔을 신뢰하지 마십시오. 특정 IP에 대해서만 방화벽 포트를 사용하는 것은 쉽지 않으며, 특정 IP에서만 소프트웨어를 수신하거나 스캔이 탐지 될 때 필터링을 적용하는 IDS / IPS 시스템이 있습니다. 이 모든 것이 테스트를 방해합니다.

자, 당신이 말할 수있는 방법은 간단합니다 : 두 개의 상자가 정확하게 관련되어 있지 않는 한 정확히 동일한 두 상자의 확률은 낮습니다. 그래서 당신이 실제로하고있는 것은 그것들이 서로 다른 상자임을 증명하려고 노력하는 것입니다.

  1. 핑. 동시에 두 가지를 테스트하고 많은 테스트를 수행해야합니다. 네트워크 시간에 지터가있는 동안 상당히 고품질의 의사 랜덤 노이즈입니다. 작은 시간 프레임에 충분한 샘플이 있으면 노이즈가 평균화되어 정확한 비교를 제공 할 수 있습니다.

    네트워크의 각 계층 2 홉은 약간의 대기 시간을 추가하고 혼잡 수준에 따라 대기 시간 값이 달라집니다. 두 IP의 동시 대기 시간이 크게 다른 경우 IP 주소가 같지 않다고 가정 할 수 있습니다.

    주의 사항 1 : 두 개의 업 링크 (본드되지 않음)가 있고 각 업 링크에서 다른 IP로 구성된 단일 서버는이를 버릴 수있는 업 링크 불균형이 충분할 수 있습니다.

  2. 포트 스캔. 대상 포트는 수신, 폐쇄, 필터링의 세 가지 상태 중 하나 일 수 있습니다. 그들이있는 것은 실제로 위에서 언급 한대로 많이 사용되지는 않지만 여전히 유용한 정보가 있습니다.

    1. 여러 IP에서 포트가 열린 상자는 대부분의 IP에서 동일한 소프트웨어를 실행합니다. 예를 들어 한 IP에서는 nginx를 실행하고 다른 IP에서는 아파치를 실행할 수 있지만 대부분의 사람들은 귀찮게하지 않습니다. 유사성을 찾기 위해 실행중인 서비스를 지문으로 표시합니다. 광고하는 소프트웨어 및 버전, 지원하는 옵션, 광고되는 호스트 이름 (있는 경우), 소프트웨어의 동작에 문제가있는 경우 그와 같은 것들을 찾으십시오.

      웹 서비스는 가장 유용하지 않으며 SMTP (Sendmail 지원으로 인해 혼합 및 일치하기 어렵고 많은 정보가 유출 됨), SNMP (정보 금광), SSH (여러 SSH 데몬을 실행하는 사람) 등이 훨씬 더 유용합니다. ) 및 HTTPS (행운하고 동일한 소프트웨어를 실행하는 경우 SSL 구성의 차이점을 확인할 수 있지만 동일하지만 비정상적인 구성이 좋은 지표입니다). NTP는 좋은 테스트 였지만 DoS 앰프로 많이 사용되어 지금 막히고 있습니다. SNTP는 같은 방식으로 흡연 총에 대해 충분히 정확하지 않습니다.

    2. 레이어 3 지문. OS를 원격으로 핑거 프린팅하는 주요 방법은 TCP / IP 구현의 단점입니다. 정확한 세부 사항은 여기까지 가기에는 너무 길지만 본질적으로 패킷 메타 데이터는 닫힌 또는 필터링 된 포트가 연결에 응답하는 방식과 조작 된 패킷을 수신 할 때 호스트의 동작 방식과 같이 많은 정보를 유출합니다. 이러한 특성은 무엇이 실행되고 있는지를 알려주는 것은 아니지만 특정 TCP / IP 스택에 바인딩 된 모든 IP에 대해 거의 동일하게 보장됩니다. 상당히 다른 시스템은 상당히 다른 특성을 가져야합니다.

    주의 사항 2 : 정확히 동일한 OS 및 공급 업체 패치를 실행하는 두 개의 상자가 동일하게 보일 것입니다. Windows에서 자동 업데이트를 실행하는 동일한 Windows 버전의 두 복사본은 다른 방화벽을 실행하지 않는 한 구분할 수 없습니다. Linux에서는 차이점이 주로 제공되는 커널 버전 및 옵션과 주로 관련이 있습니다. 이 테스트는 두 개의 IP가 동일한 OS에 있지 않을 가능성이 높습니다.

  3. 공격을 재생하십시오. 두 IP 모두에서 포트 목록을 연 상태에서 각 IP에 대해 동일한 작업을 수행하고 동작의 불일치를 찾으십시오. 시간 초과, 오류 메시지, 재시도 제한 등과 같은 사항. 일부 소프트웨어는 IP에 따라 다르게 구성되는 경우가 거의 없습니다. 한 IP가 특정 도메인의 메일을 수락한다는 것을 알고 있다면 다른 IP도 해당 도메인의 메일을 수락하는지 확인하십시오.

    주의 사항 3 :이 테스트는 테스트 2의 서비스 핑거 프린팅 부분보다 품질이 낮은 데이터입니다.이 항목은 다른 IP에서 다르게 구성하기 쉽고 모든 종류의이면 상호 작용이 가능하기 때문입니다. 잘못된 결과 가능성은 그 결과에 대한 확신이 거의 없습니다.

내가 말했듯이, 기본 이론은 다른 호스트가 다른 구성이 될 것이고 정보를 유출한다는 것입니다.

이것이 설명하지 않는 것은 두 개의 IP에서 실행되는 동일한 사이트가 중복을 위해 구성된 동일한 서버인지 또는 두 대의 서버인지 확인하기가 훨씬 어렵다는 것입니다. 또한 구성 관리를 실행하는 시스템 관리자가 시스템을 매우 유사하게 유지하는 것을 설명하지 않습니다. 또한 다른 호스트에서 실행되는 여러 서비스를 단일 IP 주소로 DNAT하는 호스트도 고려하지 않습니다.

가상화 기술은 작업에 이상한 스패너를 던졌습니다. Docker와 같은 컨테이너 시스템은 스택을 충분히 공유하여 별도의 컨테이너를 실제보다 비슷하게 보이게합니다. 물리적 nic에 브리지 된 가상 nics는 물리적으로 분리 된 하드웨어와 구별하기가 불가능하지만, 브리지가 소프트웨어라는 사실에서 비롯된 것이 아니므로 패킷은 호스트 IP 스택을 통과해야합니다.

반복성을 테스트하려는 사람들을 혼동하는 방법에는 여러 가지가 있습니다. 당신이 기대할 수있는 최선의 방법은 의심의 여지가 적은 패턴입니다.

서버를 실행하는 사람들에게이 방법의 도덕은 가능한 적은 정보를 유출하도록 서버를 구성해야한다는 것입니다.

  1. 배너 정보를 최대한 줄이십시오. 공격에 대한 설정이 적을수록 구성이 더 좋습니다.

  2. 소프트웨어가 서비스를 제공해야하는 IP의 연결 만 허용하고 필요한 경우에만 사용하십시오. 외부에서 액세스 할 필요가 없으면 localhost에만 바인드하십시오. 공격면을 줄이는 것이 항상 좋습니다.

  3. 듣고있는 것이 있어야하고 두 IP 간의 상관 관계를 피하려면 비정상적인 옵션을 최소한으로 유지하십시오. 블렌드하기를 원합니다.

  4. 기본 삭제 정책으로 방화벽을 실행하십시오. 임의의 응답으로 공격자에게 응답하는 IDS 설정에는 가치가 있다고 생각합니다. 소음은 공격자가 결과를 신뢰하기 어렵지만 결과적으로 눈에 띄게 만듭니다.

  5. 임의 지연 모듈은 타이밍 공격을 방지하는 데 가치가 없습니다. 아뇨 임의의 숫자를 선택한 다음 주사위를 여러 번 굴려 결과와 시작시 선택한 숫자를 기록하십시오. 당신이 끝내는 것은 고정 오프셋이있는 범위입니다. 난수가 대체되면 범위가 이동합니다. 범위가 변경되면 오프셋은 동일하게 유지되며 샘플링 프로세스를 반복하여 새로운 기준선을 얻는 것입니다.

  6. IP 스택 노멀 라이저는 존재하지만 지난 번 보았을 때 보안 연구에서 무시한 부분이었습니다. 보안 공급 업체에 투자하는 것이 좋은 시장 일 것입니다.