Artigos

17 de março de 2016

Servidor DHCP no FreeBSD

Mais artigos de »
Escrito por: Leonardo Souza
Tags:,

Servidor DHCP no FreeBSD

Introdução

Todo computador para se comunicar em rede, precisa de uma identificação, isso significa ser reconhecido e identificado. Esta identificação é realizada através de um nome e um número, conhecido como endereço IP. Sendo assim basicamente todos precisam de um número de IP que o identifique, além do nome de computador. Para isto existe o DHCP e vamos aprender neste artigo como configurar o Servidor DHCP no FreeBSD.




Existe basicamente duas formas de se atribuir IP para os computadores: manualmente (IP fixo) e automaticamente (IP dinâmico). Isso significa que ao atribuir endereços manualmente, o administrador da rede precisa ir fisicamente a cada computador e configurá-lo de forma estática, ou seja, permanente. Caso a configuração seja realizada de forma automática, o administrador da rede determina e configura um dispositivo na rede que vai atribuir estes IPs de forma automática.

Neste contexto aprenderemos sobre o servidor DHCP que é uma forma prática de se atribuir IPs de forma dinâmica, economizando assim tempo e trabalho. Para isso vamos configurar o servidor DHCP no FreeBSD.

Utilizaremos neste artigo a implementação do servidor ISC-DHCP, explicaremos mais sobre ele nas próximas linhas.

DHCP (Dynamic Host Configuration Protocol)

É o protocolo responsável pela atribuição dinâmica de IPs. Através dele um computador configurado para adquirir IP dinamicamente recebe este IP e assim consegue “conversar” com os outros computadores da mesma rede. Para isso o computador cliente envia uma solicitação ao servidor e este cede um IP disponível para que ele possa utilizar. Para realizar esta solicitação o computador cliente utiliza um serviço chamado de cliente DHCP, o Dhclient.

Isso quer dizer que se não tiver instalado o Dhclient o computador cliente não conseguirá enviar esta solicitação para o servidor e consequentemente não receberá o IP solicitado. Por outro lado o servidor o computador servidor precisa ter instalado nele o servidor DHCP, responsável por responder solicitações realizadas pelos clientes.

Funcionamento do serviço

O DHCP possui a estrutura Cliente/Servidor. Sendo assim, o servidor possui o serviço instalado, configurado e ativo, enquanto o cliente, que possui suporte ao serviço, utiliza os recursos deste serviço por meio do cliente DHCP, ou seja, o dhclient. O dhclient é executado no cliente que envia a solicitação de IP, por padrão pela porta UDP 68. O servidor responde na UDP 67, enviando não só o IP que o cliente poderá usar, mas também informações como, mascara de rede, roteador e servidor DNS (resolvedor de nomes). Este endereço IP é válido somente por um determinado período (configurado previamente no servidor DHCP).

servidor-dhcp1

Veja na imagem que os computadores cliente, realizam solicitações de IP para o servidor, este por sua vez, lhes fornece segundo sua tabela de IPs disponíveis. Perceba, também, que os clientes recebem IPs na mesma faixa do IP do servidor DHCP.

Outro componente do DHCP é o agente relay, responsável por passar pedidos do DHCP de uma rede LAN para outra, evitando a necessidade de um servidor DHCP em cada LAN existente.

Na prática o cliente pergunta ao servidor qual o IP está livre na rede e que ele pode utilizar e o servidor lhe responde atribuindo o IP. Este IP adquirido pode ser utilizado por um período de tempo limitado, sendo assim os IPs atribuídos anteriormente e que não estão mais conectados à rede podem ser reaproveitados automaticamente, desde que não tenham sido reservados para computadores específicos (veremos isso logo mais).

Basicamente este processo, de concessão de IPs, utiliza quatro passos:
a) Discover: o cliente envia seu endereço MAC via broadcast, ou seja, para todos os computadores, procurando um servidor DHCP e solicitando para ele um IP válido para esta rede.

b) Offer: o servidor verifica em sua lista de IPs disponíveis um que possa ceder e envia-o para o cliente.

c) Request: o cliente aceita o IP e passa a utilizá-lo.

d) Acknowledge: o endereço atribuído ao cliente passa a fazer parte da lista de IPs que não estão mais disponíveis, ou seja, não podem ser atribuído a outro host até que seja liberado pelo cliente.

Embora muito útil, deve-se ter em mente que o serviço DHCP possui algumas vulnerabilidades. É sobre isso que vamos falar na próxima parte deste artigo.

Vulnerabilidades do DHCP

Embora possua uma praticidade em sua implementação, o DHCP possui algumas particularidades relacionadas à segurança que tornam o serviço essencialmente inseguro. Essas vulnerabilidades permitem, por exemplo, que um usuário com acesso a rede, e, portanto com IP adquirido através do servidor DHCP, execute ações que acarretem problemas para outros clientes tentando obter endereços IPs. Entre estas ações estão:

a) Usar informações fornecidas pelo DHCP para configurar serviços não autorizados na rede, para fornecer informações incorretas sobre endereços de IP.

Imagine, por exemplo, um host não autorizado se passando pelo servidor DNS e seu IP sendo distribuído, como tal, pelo servidor DHCP. Se este falso servidor DNS envia solicitações de sites seguros para endereços não seguros, os prejuízos serão gigantescos. Resultados como este aconteceria ao se solicitar um site do tipo www.seubanco.com.br e o falso servidor DNS enviá-lo para www.ipdoatacante.com.br, onde haveria uma página falsa do banco e com a qual seria possível capturar dados da conta digitada pelo usuário. Como citado antes os prejuízos seriam gigantescos.

b) Executar um ataque de negação de serviço (DoS – Denial of Service), solicitando uma grande quantidade de IPs disponíveis, impedido assim que outros usuários obtenham endereços IPs.

Este tipo de ataque também causaria um enorme prejuízo. Imagine vários computadores não conseguindo um IP válido, e, por este motivo, não utilizando serviços necessários na rede. Tratando-se de ambiente corporativo este prejuízo pode ser enorme dependendo do computador sem acesso e do recurso indisponível.

c) Realizar um ataque sobre o DNS, executando várias vezes atualizações dinâmicas por meio do DHCP.
Este tipo de ataque pode tanto tornar um cliente sem acesso a internet temporariamente, como pode responder solicitações com informações falsas. Porém o intuito do ataque é basicamente congestionar e confundir o tráfego na rede.

Estes são apenas algumas das possíveis vulnerabilidades do DHCP que podem ser exploradas em uma rede que implementa este protocolo. Por isso para reduzir os riscos de ataque é necessário restringir o acesso físico à rede. Todo o acesso não autorizado deve ser dificultado, e, se possível, impossibilitado. As redes sem fio, por exemplo, devem ter suas SSIDs (Service Set Identifier – Identificador de conjunto de serviços) ocultas, de modo que um atacante não consiga visualizar e solicitar uma conexão, assim como pontos de rede não utilizados devem ser desabilitados para evitar uma conexão não autorizada.

É importante que se entenda que sempre que uma máquina não autorizada puder conectar-se à rede e receber IP do servidor DHCP, esta rede correrá riscos. É papel de um administrador de rede cuidar e zelar para que sua rede não sofra ataques bem sucedidos.

Já falamos sobre as vulnerabilidades do serviço, agora vamos tratar sobre as instalação do serviço.

Instalação do DHCP

Tanto o cliente quanto o servidor DHCP precisam ser instalados no FreeBSD, pois não são nativos no sistema.

Instalação do DHCP (Cliente)

Para que um host seja configurado com IP dinâmico o FreeBSD utiliza o “dhcliet” que utiliza os recursos do DHCP como cliente. O “dhclient” implementa recurso de cliente DHCP e está disponível desde a versão 3.2 do FreeBSD. A configuração do dhcliet pode ser feito de duas formas: durante a instalação do FreBSD ou editando o arquivo “/etc/rc.conf”.

Durante a instalação do FreeBSD, o sistema identifica a interface de rede e pergunta se deseja configurá-la como cliente DHCP, ou seja, se deseja utilizar IP dinâmico nela. Caso deseje clique em “YES” neste momento e o sistema já vai instalar o dhcliet e iniciar o serviço para iniciar no boot do sistema. Para mais detalhes sobre a instalação do FreeBSD leia nosso artigo sobre a instalação do sistema. O que acontece na prática é que, neste momento, a interface de rede é configurada no arquivo /etc/rc.conf como cliente DHCP. Isso pode ser confirmado ao acessar o /etc/rc.conf e checando a linha referente a interface configurada durante a instalação do sistema. Encontrará uma linha semelhante a esta:

# ifconfig_em0=”DHCP”

Isso significa que se configurar a interface como DHCP durante a instalação do FreeBSD, este arquivo é alterado automaticamente, mas se desejar configurá-lo manualmente é possível acessando o arquivo citado. Para isso abra o arquivo de configuração e digite a linha mostrada acima.

Instalando o Cliente DHCP

Se o dhcliet não for instalado durante a instalação do FreeBSD, ele poderá ser instalado em qualquer outro momento, basta para isso utilizar o port “isc-dhcp43-client” e depois alterar o arquivo de configuração /etc/rc.conf. Para mais detalhes sobre instalação de ports leia nosso artigo sobre a instalação de aplicativos no FreeBSD.

Para instalar o port dhcliet acesse o diretório do port:

# cd /usr/ports/net/isc-dhcp43-client/

Dentro do diretório digite o comando:

# make install clean

Este comando vai baixar, compilar e instalar o pacote referente ao dhclient.
Caso deseje habilitar a interface para utilizar o “dhclient” como padrão, ou seja, utilizar IP dinâmico cedido pelo servidor DHCP da rede, deverá editar o arquivo /etc/rc.conf:
O editor de texto padrão do FreeBSD é o “ee”.

# ee /etc/rc.confg

Insira a seguinte linha:

ifconfig_em0=”DHCP”

Obs: lembre-se de substituir em0 pelo nome da interface que deseja configurar como cliente DHCP.

Instalação do DHCP (Servidor)

O servidor DHCP que vamos abordar é o ISC-DHCP Server, este é o servidor DHCP mais utilizado e conhecido e é desenvolvido pela “Internet Systems Consortium”, organização sem fins lucrativos que desenvolve e distribui softwares no formato Open Source. Entre os softwares disponibilizados pela ISC estão o NTP, INN, BIND, etc.

Para configurar o servidor DHCP no FreeBSD vamos utilizar o “isc-dhcp43-server” disponível por meio do port de mesmo nome e que pode ser acessado pelo caminho /usr/ports/net/isc-dhcp-server. Este port contém a distribuição completa do DHCP da ISC, contendo o cliente, servidor, agente de relay e documentação.

Instalação do servidor DHCP

Para instalar o port do servidor DHCP navegue até o diretório do port “dhcp43-server”:

# cd /usr/ports/net/isc-dhcp-43-server

Dentro do diretório digite:

# make install clean

O FreeBSD vai realizar o download do fonte, compilar e instalar o DHCPD.

Pressione ENTER, vamos utilizar a instalação default. Concluída a instalação você verá uma tela semelhante a esta:

dhcp-ok
Pronto, agora temos o serviço instalado. Aprenderemos na próxima parte como configurar o servidor e colocá-lo em produção.

Configuração DHCP

Para realizar a configuração DHCP, precisaremos acessar o arquivo/usr/local/etc/dhcpd.conf e configurá-lo. Segue logo a abaixo as principais opções de configuração:

default-lease-time: responsável pelo tempo de renovação dos endereços IP. O servidor vai verificar a cada intervalo de tempo configurado neste parâmetro se as estações estão ativas.

max-lease-time: determina o tempo máximo que uma estação pode usar um determinado endereço IP.

authoritative: Indica que o servidor DHCP será autoritário em todo o seguimento da rede;

subnet/netmask: rede e subrede respectivamente.

range: determina a faixa de endereços IP que será usada pelo servidor.

option routers: determina o gateway cedido para os clientes, ou seja, o roteador da rede;

option domain-name-servers: especifica os servidores DNS que o cliente deve utilizar. Caso utilize mais de um, eles deverão ser separados por vírgulas.

option domain-name: especifica qual o domínio que será fornecido aos clientes.

Segue, abaixo, uma cópia de uma arquivo dhcpd.conf contendo configurações básicas.

Modelo de arquivo de configuração

 Um modelo básico de arquivo de configuração seria:

ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.199;
option routers 192.168.1.1;
option domain-name-servers 208.67.222.222,208.67.220.220;
option broadcast-address 192.168.1.255;
}

Desta forma o servidor funcionará implementando IPs aleatórios para as máquinas que solicitarem, porém existem casos que desejamos atribuir IPs dedicados, ou seja, fixos para máquinas específicas. Neste caso utilizamos a cláusula “host”. Basta inserir o nome do computador após a cláusula e “amarrar” o IP ao MAC, por exemplo:

host caixa {
hardware ethernet 10:0D:B0:55:EF:18;
fixed-address 172.16.0.180;
}

Host é o nome do dispositivo da rede que receberá o IP especificado.

hardware ethernet: identificação da placa de rede do host.
fixed-address: IP fixo atribuído ao host.

Segundo esta configuração o computador de nome “caixa” e que possui o MAC “10:0D:B0:55:EF:18” terá o IP 172.16.0.180 reservado para ele e sempre que solicitar este um IP, receberá este como resposta.
Como visto o servidor DHCP é bem simples de ser implementado, e a implementação do servidor DHCP no FreeBSD é mais fácil ainda, porém sua importância é primordial.

Administrando o Serviço

Para que o serviço funcione de forma mais autônoma, vamos configurá-lo para iniciar junto com o sistema. Sendo assim, para configurar o servidor DHCP no FreeBSD para iniciar no momento da inicialização do sistema acesse o arquivo /etc/rc.conf e digite:

# dhcpd_enable=”YES”

A administração dos daemons no FreeBSD é muito semelhante a do GNU/Linux, partindo deste princípio é muito simples parar ou inicar o servidor DHCP no FreeBSD.

Para iniciar o serviço digite:

# /usr/local/etc/rc.d/isc/dhcpd start

Para parar o serviço digite:

# /usr/local/etc/rc.d/isc/dhcpd stop

Para reiniciar o serviço digite:

# /usr/local/etc/rc.d/isc/dhcpd restart

Vimos nesta parte como administrar o servidor DHCP no FreeBSD.

Conclusão

Sem dúvidas seria muito trabalhoso configurar manualmente o IP de todas as máquinas de uma rede que possui muitos computadores e para isso a melhor solução é mesmo o serviço DHCP e vimos neste artigo como é fácil implementar o servidor DHCP no FreeBSD. Porém não se deve ignorar as falhas presentes no serviço principalmente por ele trabalhar de mãos dadas com o protocolo ARP. Por este motivo é vital consultar sempre as listas de vulnerabilidades descobertas não só do DCHP, mas de todos os serviços implementados na sua rede, só assim terá uma rede menos suscetível a invasão.

Concluímos aqui o artigo: servidor DHCP no FreeBSD, espero que o conteúdo tenha sido útil e caso existam dúvidas sobre o tema fique a vontade para perguntar nos comentários.






Sobre o Autor

Foto de perfil de Leonardo Souza
Leonardo Souza
Bacharel em Informática, pós graduado em Segurança de Redes de Computadores e analista de Segurança da Informação. Entusiasta de Segurança da Informação e usuário FreeBSD, porém sem xiismo.






You must be logged in to post a comment.