it-swarm-ko.tech

퍼블릭 DNS의 프라이빗 IP 주소

방화벽 뒤에 SMTP 전용 메일 서버가 있습니다.이 레코드에는 공용 A 레코드가 있습니다 ..이 메일 서버에 액세스 할 수있는 유일한 방법은 동일한 방화벽 뒤에있는 다른 서버에서입니다. 우리는 우리 자신의 개인 DNS 서버를 운영하지 않습니다.

퍼블릭 DNS 서버에서 개인 IP 주소를 A 레코드로 사용하는 것이 좋습니까? 아니면 이러한 서버 레코드를 각 서버 로컬 호스트 파일에 유지하는 것이 가장 좋습니까?

62
Geoff Dalgas

어떤 사람들은 퍼블릭 DNS 레코드에 프라이빗 IP 주소를 공개해서는 안된다고 말할 것입니다. 잠재적 인 공격자에게 프라이빗 시스템을 악용하는 데 필요한 일부 정보를 제공 할 수 있다는 생각으로 말입니다.

개인적으로, 난독 화는 보안의 열악한 형태라고 생각합니다. 특히 IP 주소에 대해서는 일반적으로 추측하기 쉽기 때문에 IP 주소에 대해 이야기 할 때이를 현실적인 보안 타협으로 보지 않습니다.

여기서 더 큰 고려 사항은 공용 사용자가 호스팅 된 응용 프로그램의 일반 공용 서비스의 일부로이 DNS 레코드를 선택하지 않도록하는 것입니다. 즉, 외부 DNS 조회는 어떻게 든 도달 할 수없는 주소로 확인되기 시작합니다.

그 외에도 개인 주소 A 레코드를 공개 공간에 배치하는 것이 문제가되는 근본적인 이유는 없습니다. 특히 호스트 할 대체 DNS 서버가없는 경우에 특히 그렇습니다.

이 레코드를 공용 DNS 공간에 배치하기로 결정한 경우, 모든 "개인"레코드를 보유하기 위해 동일한 서버에서 별도의 영역을 작성하는 것을 고려할 수 있습니다. 이것은 그들이 비공개로 의도되었다는 것을 분명히 할 것입니다 ...하지만 단 하나의 A 레코드에 대해서는 귀찮게하지 않을 것입니다.

63
Tall Jeff

나는 NANOG 목록에서이 주제에 대해 오래 전에 토론했다. 나는 그것이 항상 나쁜 생각이라고 생각했지만 실제로는 그렇게 나쁜 생각이 아니라는 것이 밝혀졌습니다. 어려움은 대부분 rDNS 조회 (개인 주소의 경우 외부에서는 작동하지 않음)에서 비롯되며 VPN 등을 통해 주소에 대한 액세스를 제공하는 경우 VPN 클라이언트가 올바르게 보호되도록하는 것이 중요합니다 VPN이 다운되었을 때 트래픽 "누설".

가자고 침입자가 이름을 내부 주소로 확인할 수있어 의미있는 것을 얻을 수 있다면 더 큰 보안 문제가있는 것입니다.

36
womble

일반적으로 RFC1918 주소를 퍼블릭 DNS에 도입하면 실제 문제는 아니지만 향후 어느 시점에서 혼동을 일으킬 수 있습니다. 방화벽 뒤의 RFC1918 주소를 사용하지만 공용보기에는 포함하지 않으려면 영역의 IP, 호스트 레코드 또는 개인 DNS보기를 사용하십시오.

제출 된 다른 응답을 기반으로 내 응답을 명확하게하기 위해 RFC1918 주소를 퍼블릭 DNS에 도입하는 것은 보안 문제가 아니라 모조품이라고 생각합니다. 누군가 문제를 해결하기 위해 전화를 걸어서 DNS의 RFC1918 주소를 우연히 발견하면 실제로 천천히 말하기 시작하여 최근에 재부팅했는지 묻습니다. 어쩌면 그것은 저의 snobbery 일지 모르겠습니다. 그러나 내가 말했듯이, 그것은 할 필요가 없으며 어느 시점에서 혼란과 오판 (컴퓨터가 아닌 인간)을 일으킬 가능성이 있습니다. 왜 위험합니까?

8
jj33

아니요, 개인 IP 주소를 퍼블릭 DNS에 넣지 마십시오.

첫째, 정보가 유출되지만 이는 비교적 사소한 문제입니다.

MX 레코드가 특정 호스트 항목을 가리키는 경우 더 나쁜 문제는 메일을 보내려고 시도하는 사람은 누구나 메일 배달 시간이 초과되는 것입니다.

발신자의 메일 소프트웨어에 따라 반송 될 수 있습니다.

더 나쁜 것은, RFC1918 주소 공간 (네트워크 내부에 있어야 함)을 사용하고 발신자가 너무 많으면 대신 자신의 네트워크로 메일을 전달하려고 시도 할 가능성이 있습니다.

예를 들면 다음과 같습니다.

  • 네트워크에 내부 메일 서버가 있지만 분할 DNS가 없습니다
  • 따라서 관리자는 공개 및 내부 IP 주소를 모두 DNS에 넣습니다.
  • mX 레코드는 다음을 모두 가리 킵니다.

 $Origin example.com
 @        IN   MX    mail.example.com
 mail     IN   A     192.168.1.2
          IN   A     some_public_IP

  • 누군가 이것을 본다면 might 192.168.1.2에 연결을 시도하십시오
  • 가장 좋은 경우는 경로가 없기 때문에 튀는 것입니다.
  • 그러나 그들이 192.168.1.2를 사용하는 서버를 가지고 있다면, 메일은 잘못된 곳으로 갈 것입니다

예, 구성이 손상되었지만이 (그리고 더 나쁜) 일이 발생했습니다.

아니요, 그것은 DNS의 결함이 아니며, 단지 그것이 지시 한 것을 수행하는 것입니다.

5
Alnitak

가능성은 원격이지만 MITM 공격의 일부가 될 수 있다고 생각합니다.

내 관심사는 이것입니다. 해당 메일 서버를 가리 키도록 구성된 메일 클라이언트를 가진 사용자 중 한 명이 랩탑을 다른 네트워크로 가져갑니다. 다른 네트워크에서도 동일한 RFC1918을 사용하면 어떻게됩니까? 해당 랩톱은 smtp 서버에 로그인을 시도하고이를 가져서는 안되는 서버에 사용자의 자격 증명을 제공 할 수 있습니다. SMTP라고 말하고 SSL이 필요한 곳은 언급하지 않았기 때문에 특히 그렇습니다.

3
Zoredache

두 가지 옵션은/etc/hosts이며 공개 영역에 개인 IP 주소를 넣는 것입니다. 나는 전자를 추천합니다. 이것이 많은 호스트를 나타내는 경우 자체 리졸버를 내부적으로 실행하는 것을 고려해야합니다. 그렇게 어렵지는 않습니다.

3
Dave Cheney

미묘한 문제가있을 수 있습니다. 하나는 DNS 리 바인드 공격에 대한 일반적인 솔루션이 퍼블릭 DNS 서버에서 해결 된 로컬 DNS 항목을 필터링한다는 것입니다. 따라서 공격을 리 바인드하기 위해 자신을 열거 나 로컬 주소가 작동하지 않거나보다 정교한 구성이 필요합니다 (소프트웨어/라우터가 허용하는 경우).

2
Nikola Toshev

비공개로 10.0.0.0/8, 192.168.0.0/16 또는 172.16.0.0/12를 의미하는 경우 하지 말아야합니다 . 대부분의 인터넷 라우터는 그것이 무엇인지 인식합니다- 개인 주소 never 직접 인터넷으로 퍼블릭 인터넷에 라우팅되어야합니다 NAT. 퍼블릭 DNS 서버에 접속을 시도하는 사람은 DNS에서 프라이빗 IP 주소를 검색하여 패킷을 .... 그들의 연결이 인터넷을 당신의 개인 주소로 이동 시키려고 시도함에 따라, 길을 따라 일부 (잘 구성된) 라우터는 단순히 패킷을 살아있게 먹을 것입니다.

"내부"로 오는 "외부"에서 전자 메일을 받으려면 패킷이 방화벽을 통과해야합니다. 이 주소를 처리하기 위해 DMZ 주소)를 설정하는 것이 좋습니다. 현재 사용중인 라우터/방화벽에 의해 엄격하게 제어되는 단일 공용 IP 주소입니다. 그.

편집 : 의도 설명 ... (아래 의견 참조). 이해가되지 않으면 본인의 게시물을 삭제하기 위해 투표합니다.

1
Avery Payne

Hosts 파일에 보관하는 것이 가장 좋습니다. 어쨌든 한 대의 컴퓨터 만 연결해야한다면 퍼블릭 DNS에 넣어서 무엇을 얻을 수 있습니까?

1
sh-beta

비슷한 정보를 찾고 있는데 여기에 도착했으며 많은 사람들이 개인 IP 주소를 유출하는 것이 좋다고 놀랐습니다. 해킹당하는 것으로 생각하면 안전한 네트워크에 있다면 큰 차이가 없습니다. 그러나 DigitalOcean은 모든 사람이 다른 사람의 트래픽에 실제로 액세스 할 수있는 동일한 케이블로 모든 로컬 네트워크 트래픽을 가졌습니다 (아마도 Man in the Middle 공격으로 가능할 수 있습니다). 동일한 데이터 센터에 컴퓨터를 설치하려는 경우 정보는 확실히 내 트래픽 해킹에 한 걸음 더 다가갑니다. 이제 각 클라이언트에는 AWS와 같은 다른 클라우드 서비스와 마찬가지로 자체 예약 된 개인 네트워크가 있습니다.

BIND9 서비스를 사용하면 퍼블릭 및 프라이빗 IP를 쉽게 정의 할 수 있습니다. 이것은 조건을 포함하는 view 기능을 사용하여 수행됩니다. 이를 통해 하나의 DNS를 쿼리하고 자신의 내부 IP 주소 중 하나에서 요청하는 경우에만 내부 IP에 대한 답변을 얻을 수 있습니다.

설정에는 두 개의 영역이 필요합니다. 선택은 match-clients. 다음은 BIND9를 사용하는 2 대 1 DNS 서버 의 설정 예입니다.

acl slaves {
    195.234.42.0/24;    // XName
    193.218.105.144/28; // XName
    193.24.212.232/29;  // XName
};

acl internals {
    127.0.0.0/8;
    10.0.0.0/24;
};

view "internal" {
    match-clients { internals; };
    recursion yes;
    zone "example.com" {
        type master;
        file "/etc/bind/internals/db.example.com";
    };
};
view "external" {
    match-clients { any; };
    recursion no;
    zone "example.com" {
        type master;
        file "/etc/bind/externals/db.example.com";
        allow-transfer { slaves; };
    };
};

여기에 외부 영역이 있으며 IP가 비공개가 아닌 것을 볼 수 있습니다

; example.com
$TTL    604800
@       IN      SOA     ns1.example.com. root.example.com. (
                     2006020201 ; Serial
                         604800 ; Refresh
                          86400 ; Retry
                        2419200 ; Expire
                         604800); Negative Cache TTL
;
@       IN      NS      ns1
        IN      MX      10 mail
        IN      A       192.0.2.1
ns1     IN      A       192.0.2.1
mail    IN      A       192.0.2.128 ; We have our mail server somewhere else.
www     IN      A       192.0.2.1
client1 IN      A       192.0.2.201 ; We connect to client1 very often.

내부 영역에 대해서는 먼저 외부 영역을 포함시킵니다. 이것이 작동 방식입니다. 즉, 내부 컴퓨터 인 경우 내부 영역에만 액세스하므로 외부 영역 정의가 여전히 필요하므로 $include 명령 :

$include "/etc/bind/external/db.example.com"
@       IN      A       10.0.0.1
boss    IN      A       10.0.0.100
printer IN      A       10.0.0.101
scrtry  IN      A       10.0.0.102
sip01   IN      A       10.0.0.201
lab     IN      A       10.0.0.103

마지막으로, 모든 컴퓨터가 이제 해당 DNS와 해당 슬레이브를 사용하는지 확인해야합니다. 정적 네트워크라고 가정하면 /etc/network/interfaces 파일 및 nameserver 옵션에서 DNS IP 사용. 이 같은:

iface eth0 inet static
    ...
    nameserver 10.0.0.1 10.0.0.103 ...

이제 모든 준비가 완료되었습니다.

0
Alexis Wilke