Endereço IP privado no DNS público

62

Temos um servidor de email somente SMTP atrás de um firewall que terá um registro público A. . A única maneira de acessar esse servidor de email é de outro servidor atrás do mesmo firewall. Nós não executamos nosso próprio servidor DNS privado.

É uma boa idéia usar o endereço IP privado como um registro A em um servidor DNS público - ou é melhor manter esses registros do servidor no arquivo de hosts locais de cada servidor?

Geoff Dalgas
fonte

Respostas:

62

Algumas pessoas dirão que nenhum registro DNS público jamais deve divulgar endereços IP privados ... com o pensamento de que você está dando aos invasores em potencial uma vantagem sobre algumas informações que podem ser necessárias para explorar sistemas privados.

Pessoalmente, acho que a ofuscação é uma forma pobre de segurança, especialmente quando estamos falando de endereços IP, porque geralmente eles são fáceis de adivinhar, então não vejo isso como um comprometimento realista da segurança.

A consideração maior aqui é garantir que seus usuários públicos não obtenham esse registro DNS como parte dos serviços públicos normais do seu aplicativo hospedado. ou seja: as pesquisas de DNS externo de alguma forma começam a ser resolvidas para um endereço que não podem ser acessadas.

Além disso, não vejo nenhuma razão fundamental para colocar um registro de endereço A privado no espaço público é um problema ... especialmente quando você não tem um servidor DNS alternativo para hospedá-lo.

Se você decidir colocar esse registro no espaço DNS público, considere criar uma zona separada no mesmo servidor para armazenar todos os registros "particulares". Isso tornará mais claro que eles pretendem ser privados ... no entanto, para apenas um registro A, eu provavelmente não me incomodaria.

Tall Jeff
fonte
+1, veja comentar a resposta de womble por motivo :)
Mihai Limbăşan
2
Este é um bom exemplo de um problema com essa idéia: merit.edu/mail.archives/nanog/2006-09/msg00364.html
Sucuri
Esse conselho ainda se aplica se você tiver servidores confidenciais com endereços IP públicos, mas atrás de um firewall que restringe o acesso? Se o DNS público dos endereços IP públicos fornece um roteiro da infraestrutura, isso não serve para um invasor? Identificação do host?
Kenny
@ Kenny Sim, em teoria, isso tem alguma utilidade, mas não é difícil obter informações, porque a variedade de endereços IP públicos é facilmente detectável de qualquer maneira. Eu meio que resolvi isso na resposta e, acrescentando a essa noção, eu argumentaria que, se você está dependendo de ocultar endereços IP ou nomes de host como qualquer tipo de linha de defesa material, você já tem problemas muito maiores.
Alto Jeff
1
@Kenny No seu ponto de vista, certamente é desejável minimizar a quantidade de informações publicamente descobertas e você não gostaria de divulgar algo que não precisava ou pelo menos não tinha algum tipo de bom custo / benefício. fora envolvido para considerá-lo. Não há argumento lá. Além disso, o ponto central do meu argumento (e acho que concordamos) era simplesmente que a ofuscação é uma forma pobre de segurança e que não há absolutamente bom / ruim, mas apenas um continuum de compensações de custo / benefício. considerada numa base caso a caso, dependendo da sua tolerância ao risco, etc.
alto Jeff
36

Eu tive uma longa discussão sobre esse tópico na lista NANOG há um tempo atrás. Embora eu sempre tenha pensado que era uma má idéia, acontece que não é uma má idéia na prática. As dificuldades vêm principalmente das pesquisas de rDNS (que para endereços privados simplesmente não funcionam no mundo exterior) e, quando você está fornecendo acesso aos endereços por meio de uma VPN ou similar, é importante garantir que os clientes VPN estejam adequadamente protegidos contra "vazamento" de tráfego quando a VPN está inoperante.

Eu digo, vá em frente. Se um invasor conseguir algo significativo ao poder resolver nomes para endereços internos, você terá maiores problemas de segurança.

mulher
fonte
1
+1, obrigado por ser uma voz de sanidade em todas as respostas do FUD a esta pergunta. "Risco à segurança" em minhas regiões dorsais inferiores, e ver problemas de roteamento e problemas de DNS conluiados em uma reação "não faça", apenas me faz pensar sobre a competência das pessoas que administram redes em todo o lugar.
Mihai Limbăşan
1
Correção: faça "vendo problemas de roteamento e problemas de DNS e problemas de autenticação / identidade conspirados".
Mihai Limbăşan
8

Em geral, a introdução de endereços RFC1918 no DNS público causará confusão, se não um problema real, em algum momento no futuro. Use IPs, registros de host ou uma exibição DNS privada da sua zona para usar os endereços RFC1918 atrás do firewall, mas não os inclua na exibição pública.

Para esclarecer minha resposta com base na outra resposta enviada, acho que a introdução de endereços RFC1918 no DNS público é um falso passo, não um problema de segurança. Se alguém me ligar para solucionar um problema e eu deparar com endereços RFC1918 no DNS, começo a falar bem devagar e a perguntar se eles foram reiniciados recentemente. Talvez seja esnobismo da minha parte, eu não sei. Mas, como eu disse, não é algo necessário e provavelmente causará confusão e falta de comunicação (humana, não computador) em algum momento. Por que arriscar?

jj33
fonte
1
Que problemas reais são esses? De que maneira as pessoas ficarão confusas?
womble
2
Portanto, é ... educado ... não colocar endereços de 1918 no DNS público? Eu enfrentei muitos problemas que as zonas DNS "ocultas" e "dividem o horizonte" causaram, mas não quase tantos causados ​​pelo IP privado no DNS público. Eu simplesmente não vejo o problema.
Womble
2
@womble, os computadores podem ficar confusos se, por algum motivo, tentarem se conectar a esse host fora da sua rede e, em vez de obterem o servidor SMTP, esperam que eles tenham o que quer que esteja vivendo naquele endereço IP na LAN em que estão conectados atualmente. Pode até ser que um de seus funcionários usando um laptop em um remoto pode começar a vomitar o nome de usuário e senha em texto simples em alguém rede de outra pessoa só porque eles também acontecer de ter uma 192.168.1.1
Zoredache
16
O problema que tenho com sua resposta é que você alude a problemas, mas não fornece detalhes. Se houver motivos para não fazê-lo, quero saber sobre eles, para que eu possa tomar uma decisão totalmente fundamentada sobre o assunto.
Womble
1
@Zoredache: Por que alguém está resolvendo um nome ao qual não tem acesso? DNS não é o único lugar que você pode obter endereços privados, de qualquer maneira - HTML pode usar literais IP, por exemplo ...
womble
5

Não, não coloque seus endereços IP privados no DNS público.

Em primeiro lugar, vaza informações, embora esse seja um problema relativamente menor.

O pior problema se os seus registros MX apontarem para essa entrada específica do host é que qualquer pessoa que tente enviar e-mail receberá o tempo limite de entrega.

Dependendo do software de e-mail do remetente, eles podem receber devoluções.

Pior ainda, se você estiver usando o espaço de endereço RFC1918 (o que você deveria, dentro da sua rede) e o remetente também, há todas as chances de que eles tentem entregar o correio em sua própria rede.

Por exemplo:

  • rede possui servidor de correio interno, mas nenhum DNS dividido
  • O administrador, portanto, coloca endereços IP públicos e internos no DNS
  • e registros MX apontam para ambos:

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

  • alguém vendo isso pode tentar se conectar ao 192.168.1.2
  • na melhor das hipóteses, ele salta porque não tem rota
  • mas se eles também tiverem um servidor usando 192.168.1.2, o correio irá para o lugar errado

Sim, é uma configuração quebrada, mas já vi isso (e pior) acontecer.

Não, não é culpa do DNS, está apenas fazendo o que é solicitado.

Alnitak
fonte
Como entregar o correio na máquina errada é um problema de DNS? Você deve autenticar o servidor SMTP. Esse é um problema de configuração do SMTP que não tem absolutamente nada a ver com o DNS. Você não está nem comparando maçãs com laranjas aqui, está comparando uma torrada com manteiga radioativa a cinco miligramas de derivados lagrangianos em um palito. Se você estiver preocupado em obter o resultado MX ou A errado, use o DNSSEC em vez de responsabilizar o DNS pelo que não é responsável e se estiver entregando SMTP por engano ao número RFC1918 errado, você configurou ou projetou incorretamente sua rede.
Mihai Limbăşan
(reeditado como elogio)
Mihai Limbăşan
Se alguém na sua rede "compôs" um número IP, o protocolo IP está funcionando exatamente como projetado, ou seja, sem segurança em mente. O que você está perguntando é "como posso confiar que estou realmente conversando com quem devo falar?" e a resposta para isso não pode ser fornecida por IP e / ou DNS, a resposta é fornecida por DNSSEC e / ou SSL / TLS e / ou um mecanismo de camada de aplicativo.
Mihai Limbăşan
Basta ler o seu comentário ao post de Dave - o seu post faz mais sentido agora :) Eu ainda não concordar com a premissa, mas eu não acho que é irracional mais ...
Mihai Limbăşan
2
não, não se tratava de autenticação, apenas sobre conexões que terminavam no lugar errado. Vi muito disso quando a Verisign decidiu fazer o curinga * .com em ~ 2001.
Alnitak
3

Embora a possibilidade seja remota, acho que você pode estar se preparando para um ataque MITM.

Minha preocupação seria essa. Digamos que um de seus usuários com um cliente de correio configurado para apontar para esse servidor de correio leve o laptop para outra rede. O que acontece se essa outra rede também tiver o mesmo RFC1918 em uso. Esse laptop pode tentar efetuar login no servidor smtp e oferecer as credenciais do usuário a um servidor que não deveria tê-lo. Isso seria particularmente verdadeiro desde que você disse SMTP e não mencionou que estava exigindo SSL.

Zoredache
fonte
Se o usuário tiver um laptop que eles usam no seu escritório e em qualquer outro lugar, é provável que eles tenham configurado o arquivo de hosts para apontar para o IP interno do MTA ou usado o IP diretamente na configuração do MUA. Mesmo resultado final. Traga em IPv6 ea morte de RFC1918, é a única maneira de ter certeza ...
womble
Excelente ponto Zoredache. Este é um vetor de ataque interessante. Dependendo do MUA, ele pode apresentar a caixa de diálogo usual "algo irritante aconteceu, clique em mim para fazer o que você queria que eu fizesse em primeiro lugar" ou pode falhar completamente se o certificado SSL não corresponder.
Dave Cheney
Esse cenário de ataque é efetivamente eliminado se todos os servidores (ou seja, web / HTTPS, IMAP e SMTP) na rede válida exigirem conexões de clientes baseadas em SSL / TLS?
Johnny Utahh 23/09
@JohnnyUtahh, bem, você precisa de todos os servidores para dar suporte ao TLS, com certificados válidos e de que todos os clientes estejam configurados para verificar os certificados, e nunca tente uma conexão não-TLS. Qual é o padrão mais comum agora, então há 10 anos. Mas ainda existe um software antigo / estúpido que pode tentar conexões não-tls.
Zoredache
Sim, tudo faz sentido, obrigado @Zoredache.
Johnny Utahh 23/09
3

Suas duas opções são / etc / hosts e a colocação de um endereço IP privado na sua zona pública. Eu recomendo o primeiro. Se isso representa um grande número de hosts, considere executar seu próprio resolvedor internamente, não é tão difícil.

Dave Cheney
fonte
1
Essa é certamente uma opção, mas por quê? O que a execução de um resolvedor interno ou (muito mais inteligente) usando algo como visualizações BIND leva você além da sobrecarga administrativa e da carga de manutenção? Isso é o que eu não entendo.
Mihai Limbăşan
1
A execução de seu próprio servidor de nomes não é ciência do foguete. Se sua rede tiver um tamanho suficiente para você considerar o uso do / etc / hosts como um hack ou que consome muito tempo, será necessário configurar um par de resolvedores na sua rede. Como um benefício colateral, você reduz a quantidade de tráfego DNS que sai da sua rede e acelera a resolução de consultas comuns.
Dave Cheney
3
Sei que não é ciência do foguete, mas é uma sobrecarga de manutenção e um potencial risco de segurança. Certamente, um risco de segurança mais alto do que vazar a existência de uma rede RFC1918. O tráfego DNS é totalmente desprezível - eu hospedo mais de 80 arquivos de zona moderadamente grande e ocupada no meu DNS no trabalho e o tráfego semanal de DNS é inferior a 2 minutos do YouTube. Acelerar a resolução de consultas é, na verdade, o primeiro argumento do meio caminho certo contra os números RFC1918 no DNS que eu já vi aqui :) Promovido por realmente pensar um pouco além da reação normal de "ah, não, isso é um risco à segurança" :)
Mihai Limbăşan
1
@ Alnitak: Eu entendo de onde você vem, mas isso ainda não é um problema de DNS, e afirmo que tentar corrigir problemas originados em algum outro lugar através do DNS não é uma boa idéia. Os problemas devem ser corrigidos na fonte, não corrigidos pelos hackers DNS - os hacks tornam as redes quebradiças.
Mihai Limbăşan
2
bem, sim, eu concordo. E colocar as informações do seu host privado no DNS público é uma solução de hack para o problema de não ter um servidor DNS interno ... :) O problema é que as camadas mais altas não sabem que essa informação deve ser "privada" .
Alnitak
2

Pode haver problemas sutis com ele. Uma é que soluções comuns para ataques de religação de DNS filtram entradas DNS locais resolvidas de servidores DNS públicos. Assim, você se abre para refazer ataques, ou os endereços locais não funcionam ou exigem uma configuração mais sofisticada (se o seu software / roteador permitir).

Nikola Toshev
fonte
+1 rebobinar DNS é ruim! medium.com/@brannondorsey/…
Ohad Schneider
1

É melhor mantê-lo no arquivo hosts. Se apenas uma máquina deve se conectar a ela de qualquer maneira, o que você ganha colocando-a no DNS público?

sh-beta
fonte
Trabalhando na nuvem, você pode ter milhares de máquinas particulares. Alguns anos atrás, a Netflix disse que tinha mais de 2.000 nós Cassandra. Não é prático usar o /etc/hostsarquivo, porque todas as 2.000 máquinas precisam gerenciar esses pares de IP / nome ...
Alexis Wilke
1

Se por privado você quer dizer 10.0.0.0/8, 192.168.0.0/16 ou 172.16.0.0/12, então não . A maioria dos roteadores da Internet o reconhece pelo que é - um endereço privado que nunca deve ser roteado para a Internet pública de maneira direta , o que ajudou a popularidade do NAT. Qualquer pessoa que tente entrar em contato com o servidor DNS público recuperará o endereço IP privado do DNS, apenas para enviar um pacote para .... nenhum lugar. À medida que a conexão deles tenta atravessar a Internet para o seu endereço privado, algum roteador (configurado com segurança) pelo caminho simplesmente consome o pacote vivo.

Se você deseja receber e-mails de "fora" para vir "dentro", em algum momento, o pacote precisa atravessar seu firewall. Eu sugeriria a configuração de um endereço DMZ para lidar com isso - um único endereço IP público que é rigidamente controlado por qualquer roteador / firewall existente. A configuração existente que você descreve parece exatamente isso.

EDIT: esclarecimento da intenção ... (ver comentários abaixo). Se isso não fizer sentido, votarei para remover minha própria postagem.

Avery Payne
fonte
3
Tudo isso é bom e verdadeiro, mas você não deu um motivo real para não publicar endereços RFC1918 no DNS. Você acabou de descrever o que são os endereços RFC1918 e que é possível não ter uma rota para alguns deles. Como isso é diferente de qualquer outro número IP? É possível não ter uma rota para 198.41.0.4 - isso significa que é errado publicar 198.41.0.4 no DNS? DNS é um sistema de resolução de nomes . Não tem nada a ver com roteamento, os dois são ortogonais. Você está conspirando em duas categorias de problemas, o que basicamente equivale a FUD.
Mihai Limbăşan 5/05/09
1
O contexto da discussão foi o uso de endereços IP privados em um servidor DNS público . O objetivo da postagem era indicar que, por padrão, os roteadores não devem rotear endereços IP privados. Eu não estava tentando indicar que você não pode usar endereços IP privados em um servidor DNS, apenas que você não deve fornecer esses endereços "para o exterior". Se isso não estiver claro o suficiente, retirarei o post com prazer. Caso contrário, eu discordo, o post é 100% imediato - o efeito líquido dessa pessoa é que / eles terão problemas / se o fizerem.
Avery Payne
acena com a cabeça Seu comentário no post de Alnitak esclareceu :) Obrigado.
Mihai Limbăşan
"Qualquer pessoa que tentar entrar em contato com o servidor DNS público recuperará o endereço IP privado do DNS, apenas para enviar um pacote para ... lugar nenhum" - não, você acabou de descrever a religação do DNS e funciona em alguns dos roteadores mais seguros lá fora, incluindo o meu PepWave Surf SOHO: rebind.network/rebind
Ohad Schneider
0

Cheguei aqui enquanto procurava informações semelhantes e fiquei surpreso ao saber que muitos estão vazando seus endereços IP privados. Eu acho que em termos de hackers, não faz muita diferença se você estiver em uma rede segura. No entanto, o DigitalOcean teve todo o tráfego de rede local exatamente nos mesmos cabos, com todos realmente tendo acesso ao tráfego de todos os outros (provavelmente possível com um ataque do tipo Man in the Middle.) Se você tivesse um computador no mesmo data center, teria as informações certamente lhe dão um passo mais perto de invadir meu tráfego. Agora, cada cliente tem sua própria rede privada reservada, como acontece com outros serviços em nuvem, como a AWS.

Dito isto, com o seu próprio serviço BIND9, você pode definir facilmente seus IPs públicos e privados. Isso é feito usando o viewrecurso, que inclui uma condicional. Isso permite que você consulte um DNS e obtenha uma resposta sobre IPs internos apenas se você estiver solicitando seu endereço IP interno.

A configuração requer duas zonas. A seleção usa o match-clients. Aqui está um exemplo de configuração do servidor DNS Two-in-one com BIND9 :

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; };
    };
};

Aqui está a zona externa e podemos ver os IPs não são privados

; 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.

Quanto à zona interna, primeiro incluímos a zona externa, que é assim que funciona. ou seja, se você é um computador interno, você acessa apenas a zona interna e ainda precisa das definições de zona externa, daí o $includecomando:

$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

Finalmente, você precisa garantir que todos os seus computadores agora usem esse DNS e seus escravos. Supondo uma rede estática, isso significaria editar seu /etc/network/interfacesarquivo e usar seus IPs DNS na nameserveropção. Algo assim:

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

Agora você deve estar pronto.

Alexis Wilke
fonte