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


62

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

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

답변:


62

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

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

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

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

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


+1 :) 이유 움블의 대답 의견 참조
미하이 Limbăşan

2
이것은이 아이디어에 문제의 좋은 예입니다 merit.edu/mail.archives/nanog/2006-09/msg00364.html이
sucuri

퍼블릭 IP 주소를 가진 민감한 서버가 있지만 액세스를 제한하는 방화벽 뒤에있는 경우에도이 조언이 계속 적용됩니까? 퍼블릭 IP 주소의 퍼블릭 DNS가 인프라 스트럭처의 로드맵을 제공하는 경우 공격자가 일부를 사용하지 않습니까? 호스트 식별?
Kenny

@Kenny 네, 이론 상으로는 이것은 약간의 사용이 있지만, 공개 IP 주소의 범위는 어쨌든 쉽게 발견 할 수 있기 때문에 얻기 어려운 정보입니다. 나는 대답에서 이것을 해결하고 그 개념에 추가하여 어떤 종류의 방어선으로 IP 주소 또는 호스트 이름을 숨기고 있다면 이미 훨씬 더 큰 문제가 있다고 주장 할 것입니다.
Tall Jeff

1
@ 케니 (Kenny) 지금까지는 공개적으로 발견 할 수있는 정보의 양을 최소화하는 것이 바람직하며 적어도 필요하지 않거나 적어도 좋은 비용 / 혜택 거래를하지 않은 것을 공개하고 싶지 않은 경우- 그것을 고려하는 데 관여했다. 거기에 논쟁이 없습니다. 그 외에도, 요점의 핵심은 (난 우리가 동의한다고 생각하는) 난독 화는 안보의 열악한 형태이며 절대적으로 좋은 / 나쁜 것이 아니라 단지 연속적인 비용 / 혜택의 절충이라는 것입니다. 위험 허용 오차 등에 따라 사례별로 고려됩니다.
Tall Jeff

36

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

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


1
+1,이 질문에 대한 모든 FUD 응답에서 건전한 목소리가되어 주셔서 감사합니다. 내 등 하부 지역의 "보안 위험"과 라우팅 문제 및 DNS 문제가 하나의 무질서한 "하지 마라"반응으로 충돌하는 것을 보았을 때 전 세계에서 네트워크를 운영하는 사람들의 역량에 대해 궁금해졌습니다.
Mihai Limbăşan 2016

1
수정 : "라우팅 문제 및 DNS 문제 인증 / ID 문제 확인"을 확인하십시오.
Mihai Limbăşan 2016

8

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

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


1
이것들은 어떤 실제 문제입니까? 사람들은 어떤 방법으로 혼란 스러울 것입니까?
mble 울다

2
1918 주소를 퍼블릭 DNS에 넣지 않는 것이 예의 바른 일입니까? "숨겨진"및 "분할 된 수평선"DNS 영역이 야기한 많은 문제에 부딪 쳤지 만 퍼블릭 DNS의 개인 IP로 인해 발생하는 문제는 거의 없었습니다. 나는 단지 문제를 보지 못한다.
womble

2
@womble, 컴퓨터가 어떤 이유로 네트워크 외부의 호스트에 연결을 시도하면 SMTP 서버를 얻는 대신 현재 연결된 LAN의 IP 주소에 살고있는 것을 얻습니다. 심지어 원격에서 랩톱을 사용하는 직원 중 한 명이 다른 사용자의 네트워크에 192.168.1.1을 가지고 있기 때문에 다른 사용자의 네트워크에서 일반 텍스트로 사용자 이름과 암호를
뿌릴

16
내가 당신의 대답으로 가지고있는 문제는 당신이 문제를 암시하지만 세부 사항을 제공하지 않는다는 것입니다. 하지 말아야 할 이유가 있다면, 나는 그들에 대해 알고 싶기 때문에 주제에 대해 완전히 합리적인 결정을 내릴 수 있습니다.
womble

1
@Zoredache : 왜 누군가가 액세스 할 수없는 이름을 확인합니까? 어쨌든 DNS는 개인 주소를 얻을 수있는 유일한 장소가 아닙니다. HTML은 예를 들어 IP 리터럴을 사용할 수 있습니다.
womble

5

아니요, 개인 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

  • 이것을 보는 사람 은 192.168.1.2에 연결하려고 할 수 있습니다.
  • 가장 좋은 경우는 경로가 없기 때문에 튀는 것입니다.
  • 그러나 그들이 192.168.1.2를 사용하는 서버를 가지고 있다면, 메일은 잘못된 곳으로 갈 것입니다

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

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


잘못된 시스템으로 메일을 배달하는 데 DNS 문제는 어떻게 발생합니까? SMTP 서버를 인증해야합니다. 이는 DNS와 전혀 관련이없는 SMTP 구성 문제입니다. 당신은 사과를 오렌지와 비교하지 않고, 방사성 버터 토스트를 막대기에 5 밀리그램의 라그랑지안 유도체와 비교하고 있습니다. 잘못된 MX 또는 A 결과를 얻는 것에 대해 걱정이된다면 책임을지지 않는 DNS를 담당하는 대신 DNSSEC를 사용해야합니다. 실수로 잘못된 RFC1918 번호로 SMTP를 전송하는 경우 네트워크가 잘못 구성되었거나 잘못 설계되었습니다.
Mihai Limbăşan 2016

(해명에 대한 재 게시 표창)
미하이 Limbăşan

네트워크상의 누군가가 IP 번호를 "만들었다면"IP 프로토콜은 보안을 염두에두고 설계된대로 정확하게 기능하는 것입니다. 당신이 묻는 것은 "내가 누구와 실제로 대화해야하는지 내가 어떻게 믿을 수 있는가?" 그 대답은 IP 및 / 또는 DNS를 통해 전달 될 수 없으며, DNSSEC 및 / 또는 SSL / TLS 및 / 또는 응용 프로그램 계층 메커니즘을 통해 전달됩니다.
Mihai Limbăşan

그냥 데이브의 게시물에 대한 의견을 읽고 - 게시물은 이제 더 의미 : 나는 아직도 전제에 동의,하지만 난 더 이상 ... 불합리한 생각하지 않습니다
미하이 Limbăşan

2
아니요, 인증에 관한 것이 아니라 연결이 잘못된 위치에 있다는 것뿐입니다. Verisign이 ~ 2001 년에 와일드 카드 * .com을 다시 사용하기로 결정했을 때 많은 것을 보았습니다 .
Alnitak

3

가능성은 희박하지만 MITM 공격에 대비할 수 있다고 생각합니다.

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


사용자가 사무실과 다른 곳에서 사용하는 랩톱을 사용하는 경우 MTA의 내부 IP를 가리 키도록 호스트 파일을 구성하거나 MUA 구성에서 IP를 직접 사용할 수 있습니다. 같은 최종 결과. IPv6과 RFC1918의 죽음을 가져 오면 확실한 유일한 방법입니다.
womble

탁월한 포인트 Zoredache. 이것은 흥미로운 공격 벡터입니다. MUA에 따라 일반적인 "성가신 일이 발생했습니다. 처음에 원하는 작업을 수행하려면 저를 클릭하십시오."대화 상자가 표시되거나 SSL 인증서가 일치하지 않으면 완전히 실패 할 수 있습니다.
Dave Cheney

유효한 네트워크의 모든 서버 (예 : 웹 / HTTPS, IMAP 및 SMTP)에 SSL / TLS 기반 클라이언트 연결이 필요한 경우이 공격 시나리오가 효과적으로 제거됩니까?
Johnny Utahh

@JohnnyUtahh, 유효한 인증서가있는 TLS를 지원하려면 모든 서버가 필요하며 인증서를 확인하도록 모든 클라이언트를 구성해야하며 비 TLS 연결을 시도하지 마십시오. 10 년 전의 가장 일반적인 기본값입니다. 그러나 비 TLS 연결을 시도 할 수있는 구식 / 멍청한 소프트웨어가 여전히 있습니다.
Zoredache

네, @Zoredache에게 감사합니다.
Johnny Utahh

3

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


1
확실히 옵션이지만 왜? 내부 리졸버를 실행하거나 BIND 뷰와 같은 것을 사용하여 훨씬 스마트하게 관리하면 관리 오버 헤드 및 유지 관리 부담 외에 무엇을 얻을 수 있습니까? 그것이 내가 이해하지 못하는 것입니다.
Mihai Limbăşan 2016

1
자신의 네임 서버를 운영하는 것은 로켓 과학이 아닙니다. 네트워크 크기가 / etc / hosts를 해킹이나 시간 소모로 사용하기에 충분한 크기이면 네트워크에 리졸버 쌍을 설정해야합니다. 부작용으로 네트워크에서 나가는 dns 트래픽의 양을 줄이고 일반적인 쿼리의 해결 속도를 높일 수 있습니다.
Dave Cheney

3
나는 그것이 로켓 과학이 아니라는 것을 알고 있지만 유지 관리 오버 헤드와 잠재적 인 보안 위험입니다. RFC1918 네트워크의 존재를 누설하는 것보다 확실히 더 높은 보안 위험이 있습니다. DNS 트래픽은 거의 무시할 수 있습니다. 직장에서 내 DNS에 80 개가 넘는 중대하고 바쁜 영역 파일을 80 개가 넘게 호스팅하고 있으며 주당 DNS 트래픽은 2 분 미만입니다. 쿼리 해상도를 가속화하는 것은 내가 여기에 본 적이 : Upvoted을 실제로 보통의 반사적 반응 : "오, noes, 그것은 보안 위험이다"저쪽에 약간의 생각에 대해 실제로 DNS에서 RFC1918 번호에 대한 최초의 중간 제정신 인수입니다
미하이 Limbăşan 2016

1
@Alnitak : 귀하가 어디에서 왔는지 이해하지만 여전히 DNS 문제는 아니며 DNS를 통해 다른 곳에서 발생하는 문제를 해결하려고 시도하는 것은 전혀 좋은 생각이 아닙니다. DNS 해킹으로 패치되지 않고 소스에서 문제를 해결해야합니다. 해킹은 네트워크를 취약하게 만듭니다.
Mihai Limbăşan 2016

2
글쎄요, 동의합니다. 그리고 공공 DNS에서 개인 호스트의 정보를 두는 것은 내부 DNS 서버를 가지고 있지의 문제에 대한 해킹 솔루션입니다 ... :) 문제는 상위 계층이 없다는 것입니다 알고 이 정보를 "개인"으로되어 있는지 .
Alnitak

2

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


+1 DNS 리 바인딩이 잘못되었습니다 !! medium.com/@brannondorsey/…
Ohad 슈나이더

1

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


클라우드에서 작업하면 수천 대의 개인용 컴퓨터가있을 수 있습니다. 몇 년 전, Netflix는 2,000 개 이상의 Cassandra 노드를 보유하고 있다고 말했습니다. /etc/hosts2,000 대의 모든 머신이이 IP / 이름 쌍을 관리해야하기 때문에 파일 을 사용하는 것은 실용적이지 않습니다 ...
Alexis Wilke

1

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

"내부"로 오는 "외부"에서 전자 메일을 받으려면 패킷이 방화벽을 통과해야합니다. 이 문제를 처리하기 위해 DMZ 주소를 설정하는 것이 좋습니다. 즉, 모든 라우터 / 방화벽에 의해 엄격하게 제어되는 단일 공용 IP 주소입니다. 설명하는 기존 설정은 정확히 그렇게하는 것처럼 들립니다.

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


3
그것은 모두 훌륭하고 사실이지만 DNS에 RFC1918 주소를 게시해서는 안되는 실제 이유는 없습니다. 방금 RFC1918 주소가 무엇인지 설명했고 그 중 일부에 대한 경로가 없을 수도 있습니다. 다른 IP 번호와 다른 점은 무엇입니까? 198.41.0.4로 경로를 지정하지 못할 수 있습니다. 즉, DNS에 198.41.0.4를 게시하는 것이 잘못되었음을 의미합니까? DNS는 이름 확인 시스템 입니다. 라우팅과는 아무런 관련이 없으며 둘은 직교합니다. 기본적으로 FUD에 해당하는 두 가지 범주의 문제가 충돌하고 있습니다.
Mihai Limbăşan

1
토론의 맥락은 공개 DNS 서버 에서 개인 IP 주소를 사용하는 것이 었습니다 . 게시물의 요점은 기본적으로 라우터가 개인 IP 주소를 라우팅하지 않아야 함을 나타냅니다. DNS 서버에서 개인 IP 주소를 사용할 수 없으며 해당 IP 주소를 "외부"로 제공해서는 안된다는 것을 나타내려고 시도 하지 않았습니다. 이것이 명확하지 않으면 기꺼이 게시물을 철회하겠습니다. 그렇지 않으면 게시물이 100 % 스팟에 있다는 데 동의하지 않습니다.이 사람의 효과는 그들이 할 경우 문제가 있다는 것입니다.
에이버리 페인

끄덕임 Alnitak의 게시물 아래에 귀하의 의견이 정리되었습니다 :) 감사합니다.
Mihai Limbăşan 2016

"공용 DNS 서버에 접속을 시도하는 사람은 DNS에서 사설 IP 주소를 검색하여 패킷을 .... 어디에도 보내지 않습니다." -실제로, 당신은 실제로 DNS 리 바인딩을 설명했으며 가장 안전한 라우터 중 일부에서 작동합니다 :이, 내 PepWave 서핑 SOHO 포함 밖으로 rebind.network/rebind
오핫 슈나이더

0

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

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

설정에는 두 개의 영역이 필요합니다. 선택은을 사용합니다 match-clients. 다음은 BIND9 가있는 Two-in-one 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 ...

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.