it-swarm-pt.tech

Endereço IP privado no DNS público

Temos um servidor de email somente SMTP atrás de um firewall que possui 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?

62
Geoff Dalgas

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 mais importante aqui é garantir que seus usuários públicos não obtenham esse registro DNS como parte dos serviços públicos normais do 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 possui um servidor DNS alternativo para hospedá-los.

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.

63
Tall Jeff

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á ideia, 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.

36
womble

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 encontrar os 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 de computador) em algum momento. Por que arriscar?

8
jj33

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 seus registros MX apontarem para essa entrada específica do host é que qualquer pessoa que tente enviar e-mails 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 deveria, dentro da sua rede) e o remetente também, há todas as chances de que eles tentem entregar o correio para 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 a 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 email 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.

5
Alnitak

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.

3
Zoredache

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

3
Dave Cheney

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

2
Nikola Toshev

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 é - m endereço privado que deve nunca ser roteado para a Internet pública de maneira direta , que foi o que ajudou a popularidade de 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. Como a conexão deles tenta atravessar a Internet para o seu endereço privado, algum roteador (configurado com segurança) ao longo do caminho simplesmente consome o pacote vivo.

Se você deseja receber e-mails de "fora" para vir "para 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 que você tenha instalado. A configuração existente que você descreve parece exatamente como ela faz exatamente aquele.

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

1
Avery Payne

É 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?

1
sh-beta

Cheguei aqui enquanto procurava informações semelhantes e fiquei surpreso que muitos dizem que não há problema em vazar 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 recurso view, 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 de Servidor DNS dois em um 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, acessa apenas a zona interna e ainda precisa das definições de zona externa; portanto, o $include comando:

$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/interfaces e usando seus IPs DNS na opção nameserver. Algo assim:

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

Agora você deve estar pronto.

0
Alexis Wilke