Frases

sexta-feira, 21 de maio de 2010

Protocolo DHCP - Explicado pelo How2Ubuntu




Dica: O protocolo DHCP ( Dynamic Host Configuration Protocol ) é o sucessor do protocolo BOOTP ( Standard Bootstrap) (RFC 1542)
Você pode até se perguntar, mas em que casos eu poderia precisar de uma maquina rodando um servidor DHCP?

Abaixo serão mostrados alguns movitos:

1° Se você tiver uma grande rede de computadores, o DHCP oferecido por um modem, pode não lhe oferecer uma configuração completa sobre o protocolo, para isso, ter um servidor configurado manualmente em um micro pode ser a solução.
-
2° Caso você tenha uma pequena rede de 5 até 10 computadores a configuração pode ser manualmente, mas como ficaria se a rede tiver 100 ou 1.000 maquinas conectadas? Como você faria para mudar o servidor de DNS de cada maquina por exemplo? DHCP resolveria o caso.
-
3° Com um servidor de DHCP rodando, evita-se possíveis erros que ocorrem quando o processo é feito de forma manual, DNS digitado errado, um IP que já está em uso em outro computador, etc.
-
4° O DHCP foir projetado para reduzir o nível de complexidade na configuração de computadores para as redes TCP/IP.
-

Quais os riscos de segurança que um servidor DHCP mal configurado pode oferecer para a rede?

1° - Isso já não seria somente uma falha no DHCP, mas sim, também nas tabelas ARP (RFC 826), que se mal configuradas, por sua vez, o atacante poderia flodar o servidor DHCP com varias requisições de MAC's diferentes, tornando assim, impossível para um novo cliente DHCP conseguir um IP, e posteriormente obter acesso a web.

No windows um arp -s 10.0.0.200 00-10-54-CA-E1-40 , ajudaria a resolver o problema (LER +)
-
O DHCP é um protocolo não autenticado. Imagine que alguém tenha conseguido entrar na sua empresa com o objetivo de obter dados confidenciais, bastaria ela conectar um notebook na sua rede que seu DHCP lhe daria total acesso a rede. A partir daí, poderia rodar um sniffer e envenenar as tabelas arp dos outros computadores para obter todo o trafego da rede. [FAIL]
-
3° Este não seria exatamente um risco de segurança, se por exemplo o DHCP estiver definido para distribuir IP's de forma dinâmia, e você usar vários programas da qual os mesmos necessitam de portas abertas no modem, por exemplo IP 10.1.1.1 e portas: 1111 2222 3333, do que adiantaria você liberar as portas acima citadas para o IP 10.1.1.1 se ao reiniciar o computador você já teria outro IP?
-
4° O DHCP usa o UDP como protocolo de transporte, este por sua vez não oferece bons recursos de segurança.
-


* Dica: Sempre verifique se pessoas sem autorização, não terão acesso físico ou acesso sem fio na sua rede. Sempre habilite os log's e sempre confira-os para que quando receber um alto número de solicitações, você possa saber que existe algo de anormal na rede.



Veja como é fácil fazer a configuração de um servidor DHCP no modem ADSL Wireless D-Link DSL-2640T

Créditos ao site modemtutoriais.com

Depois de acessar o modem vá até DHCP settings e marque [x] DHCP Server



Depois disso é simples, basta então configurá-lô (lendo todo post você saberá como fazer isso).




DHCP quer dizer = Dynamic Host Configuration Protocol - (RFC 2131)



O Conceito de DHCP não é um dos mais difíceis de serem explicados, então, vamos lá.

O DHCP é um protocolo de configuração dinamica de host's, que serve para definir configurações de rede para todos os computadores (clientes) que se conectarem a rede via DHCP. Sendo assim, basta o computador ter a opção "obter um ip automaticamente" que quando o computador ligar, ele vai passar buscar as devidas configurações de um server DHCP.

Tipos de Alocação

O servidor DHCP oferece três tipos de alocação de IP's, dos quais podem ser:

1- Manual: Aqui o trabalho dever ser feito, como o próprio nome já diz, de forma manual .No servidor DHCP deverá ser colocado o MAC do respectivo cliente, mais o IP que ele deverá receber,. Lembrando que somente os mac's cadastrados receberão configurações do servidor DHCP.
* Existe uma forma que facilmente faça um bypass, caso você queira entrar na rede e não tiver o seu mac cadastrado, mas esse não é o propósito desse artigo.

2- Automática:
Com esta configuração o cliente que solicitar dados do servidor DHCP, receberá por sua vez, um IP permanente que está cadastrado na faixa do servidor DHCP. Aqui não existe qualquer associação de MAC com IP.

3- Dinâmica:
O cliente durante o boot requisita oservidor DHCP que"empresta" por um tempo determinado o uso de um endereço IP disponível dentro de uma faixa de IP's. Ao expirar o prazo, o cliente pode requisitar novamente outro IP.


Mas como isso funciona ?

O funcionamento do DHCP é bem interessante, quando você liga sua maquina ( cliente) , ela ainda não sabe quem ela é dentro da rede, não sabe também, quem é o servidor DHCP, para isso:

1° - Ela manda um pacote UDP em broadcast (que é direcionado para todas as maquinas da rede) "255.255.255.255" do tipo DHCPDISCOVER, que então é transmitido para todas as maquinas da rede.

2° - O servidor DHCP por sua vez, ao receber um pacote DHCPDISCOVER, irá responder usando DHCP OFFER.

3° - O Cliente recebe o DHCP OFFER e então solicita um lease (tempo de uso de determinado IP, como se fosse fazer um aluguel de IP) com um pacote DHCP REQUEST.

4° - O DHCP ao receber o DHCP REQUEST e envia o pacote DHCP ACK (acknowledgement do Inglês, reconhecimento) com o valor do lease.

5° - Se por acaso o tempo de lease for baixo e o cliente ainda estiver usando o IP quando o tempo acabar, o cliente então solicita que o tempo de lease seja estendido.

6° - O servidor DHCP envia novamente para o cliente um ACK com o prolongamento do tempo de lease.
Confira as etapas citadas acima na imagem a seguir:



Tipos de pacotes


DHCPDISCOVER



IP: ID = 0x0; Proto = UDP; Len: 328
IP: Version = 4 (0x4)
IP: Header Length = 20 (0x14)
IP: Service Type = 0 (0x0)
IP: Precedence = Routine
IP: ...0.... = Normal Delay
IP: ....0... = Normal Throughput
IP: .....0.. = Normal Reliability
IP: Total Length = 328 (0x148)
IP: Identification = 0 (0x0)
IP: Flags Summary = 0 (0x0)
IP: .......0 = Last fragment in datagram
IP: ......0. = May fragment datagram if necessary
IP: Fragment Offset = 0 (0x0) bytes
IP: Time to Live = 128 (0x80)
IP: Protocol = UDP - User Datagram
IP: Checksum = 0x39A6
IP: Source Address = 0.0.0.0 - Origem

IP: Destination Address = 255.255.255.255 - Destino

IP: Data: Number of data bytes remaining = 308 (0x0134)


DHCP: Discover (xid=21274A1D)
DHCP: Op Code (op) = 1 (0x1)
DHCP: Hardware Type (htype) = 1 (0x1) 10Mb Ethernet
DHCP: Hardware Address Length (hlen) = 6 (0x6)
DHCP: Hops (hops) = 0 (0x0)
DHCP: Transaction ID (xid) = 556223005 (0x21274A1D)
DHCP: Seconds (secs) = 0 (0x0)
DHCP: Flags (flags) = 0 (0x0)
DHCP: 0............... = No Broadcast
DHCP: Client IP Address (ciaddr) = 0.0.0.0
DHCP: Your IP Address (yiaddr) = 0.0.0.0
DHCP: Server IP Address (siaddr) = 0.0.0.0
DHCP: Relay IP Address (giaddr) = 0.0.0.0
DHCP: Client Ethernet Address (chaddr) = 08002B2ED85E

DHCP: Server Host Name (sname) =
DHCP: Boot File Name (file) =
DHCP: Magic Cookie = [OK]
DHCP: Option Field (options)
DHCP: DHCP Message Type =
DHCP Discover
DHCP: Client-identifier = (Type: 1) 08 00 2b 2e d8 5e
DHCP: Host Name = JUMBO-WS
DHCP: Parameter Request List = (Length: 7) 01 0f 03 2c 2e 2f 06
DHCP: End of this option field
 
 
DHCPOFFER 
IP: ID = 0x3C30; Proto = UDP; Len: 328   
IP: Version = 4 (0x4)
IP: Header Length = 20 (0x14)
IP: Service Type = 0 (0x0)
IP: Precedence = Routine
IP: ...0.... = Normal Delay
IP: ....0... = Normal Throughput
IP: .....0.. = Normal Reliability
IP: Total Length = 328 (0x148)
IP: Identification = 15408 (0x3C30)
IP: Flags Summary = 0 (0x0)
IP: .......0 = Last fragment in datagram
IP: ......0. = May fragment datagram if necessary
IP: Fragment Offset = 0 (0x0) bytes
IP: Time to Live = 128 (0x80)
IP: Protocol = UDP - User Datagram
IP: Checksum = 0x2FA8
IP: Source Address = 157.54.48.151 - IP Do SERVER DHCP

IP: Destination Address = 255.255.255.255 - Destino

IP: Data: Number of data bytes remaining = 308 (0x0134)

DHCP: Offer (xid=21274A1D)
DHCP: Op Code (op) = 2 (0x2)
DHCP: Hardware Type (htype) = 1 (0x1) 10Mb Ethernet
DHCP: Hardware Address Length (hlen) = 6 (0x6)
DHCP: Hops (hops) = 0 (0x0)
DHCP: Transaction ID (xid) = 556223005 (0x21274A1D)
DHCP: Seconds (secs) = 0 (0x0)
DHCP: Flags (flags) = 0 (0x0)
DHCP: 0............... = No Broadcast
DHCP: Client IP Address (ciaddr) = 0.0.0.0
DHCP: Your IP Address (yiaddr) = 157.54.50.5
- IP que está sendo oferecido
DHCP: Server IP Address (siaddr) = 0.0.0.0
DHCP: Relay IP Address (giaddr) = 0.0.0.0
DHCP: Client Ethernet Address (chaddr) = 08002B2ED85E
DHCP: Server Host Name (sname) =
DHCP: Boot File Name (file) =
DHCP: Magic Cookie = [OK]
DHCP: Option Field (options)
DHCP: DHCP Message Type =
DHCP Offer
DHCP: Subnet Mask = 255.255.240.0
DHCP: Renewal Time Value (T1) = 8 Days, 0:00:00
DHCP: Rebinding Time Value (T2) = 14 Days, 0:00:00
DHCP: IP Address Lease Time = 16 Days, 0:00:00
DHCP: Server Identifier = 157.54.48.151
DHCP: Router = 157.54.48.1
DHCP: NetBIOS Name Service = 157.54.16.154
DHCP: NetBIOS Node Type = (Length: 1) 04
DHCP: End of this option field
 
 
DHCPREQUEST  
 
IP: ID = 0x100; Proto = UDP; Len: 328   
IP: Version = 4 (0x4)
IP: Header Length = 20 (0x14)
IP: Service Type = 0 (0x0)
IP: Precedence = Routine
IP: ...0.... = Normal Delay
IP: ....0... = Normal Throughput
IP: .....0.. = Normal Reliability
IP: Total Length = 328 (0x148)
IP: Identification = 256 (0x100)
IP: Flags Summary = 0 (0x0)
IP: .......0 = Last fragment in datagram
IP: ......0. = May fragment datagram if necessary
IP: Fragment Offset = 0 (0x0) bytes
IP: Time to Live = 128 (0x80)
IP: Protocol = UDP - User Datagram
IP: Checksum = 0x38A6
IP: Source Address = 0.0.0.0
IP: Destination Address = 255.255.255.255

IP: Data: Number of data bytes remaining = 308 (0x0134)

DHCP: Request (xid=21274A1D)
DHCP: Op Code (op) = 1 (0x1)
DHCP: Hardware Type (htype) = 1 (0x1) 10Mb Ethernet
DHCP: Hardware Address Length (hlen) = 6 (0x6)
DHCP: Hops (hops) = 0 (0x0)
DHCP: Transaction ID (xid) = 556223005 (0x21274A1D)
DHCP: Seconds (secs) = 0 (0x0)
DHCP: Flags (flags) = 0 (0x0)
DHCP: 0............... = No Broadcast
DHCP: Client IP Address (ciaddr) = 0.0.0.0
DHCP: Your IP Address (yiaddr) = 0.0.0.0
DHCP: Server IP Address (siaddr) = 0.0.0.0
DHCP: Relay IP Address (giaddr) = 0.0.0.0
DHCP: Client Ethernet Address (chaddr) = 08002B2ED85E
DHCP: Server Host Name (sname) =
DHCP: Boot File Name (file) =
DHCP: Magic Cookie = [OK]
DHCP: Option Field (options)
DHCP: DHCP Message Type =
DHCP Request
DHCP: Client-identifier = (Type: 1) 08 00 2b 2e d8 5e

DHCP: Requested Address = 157.54.50.5
DHCP: Server Identifier = 157.54.48.151
DHCP: Host Name = JUMBO-WS
DHCP: Parameter Request List = (Length: 7) 01 0f 03 2c 2e 2f 06
DHCP: End of this option field
 
 
DHCPACK  
 
IP: ID = 0x3D30; Proto = UDP; Len: 328   
IP: Version = 4 (0x4)
IP: Header Length = 20 (0x14)
IP: Service Type = 0 (0x0)
IP: Precedence = Routine
IP: ...0.... = Normal Delay
IP: ....0... = Normal Throughput
IP: .....0.. = Normal Reliability
IP: Total Length = 328 (0x148)
IP: Identification = 15664 (0x3D30)
IP: Flags Summary = 0 (0x0)
IP: .......0 = Last fragment in datagram
IP: ......0. = May fragment datagram if necessary
IP: Fragment Offset = 0 (0x0) bytes
IP: Time to Live = 128 (0x80)
IP: Protocol = UDP - User Datagram
IP: Checksum = 0x2EA8
IP: Source Address = 157.54.48.151

IP: Destination Address = 255.255.255.255

IP: Data: Number of data bytes remaining = 308 (0x0134)

DHCP: ACK (xid=21274A1D)
DHCP: Op Code (op) = 2 (0x2)
DHCP: Hardware Type (htype) = 1 (0x1) 10Mb Ethernet
DHCP: Hardware Address Length (hlen) = 6 (0x6)
DHCP: Hops (hops) = 0 (0x0)
DHCP: Transaction ID (xid) = 556223005 (0x21274A1D)
DHCP: Seconds (secs) = 0 (0x0)
DHCP: Flags (flags) = 0 (0x0)
DHCP: 0............... = No Broadcast
DHCP: Client IP Address (ciaddr) = 0.0.0.0
DHCP: Your IP Address (yiaddr) = 157.54.50.5
DHCP: Server IP Address (siaddr) = 0.0.0.0
DHCP: Relay IP Address (giaddr) = 0.0.0.0
DHCP: Client Ethernet Address (chaddr) = 08002B2ED85E

DHCP: Server Host Name (sname) =
DHCP: Boot File Name (file) =
DHCP: Magic Cookie = [OK]
DHCP: Option Field (options)
DHCP: DHCP Message Type = DHCP ACK
DHCP: Renewal Time Value (T1) = 8 Days, 0:00:00
DHCP: Rebinding Time Value (T2) = 14 Days, 0:00:00
DHCP: IP Address Lease Time = 16 Days, 0:00:00
DHCP: Server Identifier = 157.54.48.151
DHCP: Subnet Mask = 255.255.240.0
DHCP: Router = 157.54.48.1
DHCP: NetBIOS Name Service = 157.54.16.154
DHCP: NetBIOS Node Type = (Length: 1) 04
DHCP: End of this option field



PACOTES DHCP:
  1. DHCPDISCOVER - É usado para localizar os servidores DHCP's que estão disponíveis na rede.
  2. DHCPOFFER - Resposta do servidor DHCP a um pacote DHCPDISCOVER, na qual contem os primeiros parametros para concessão do IP.
  3. DHCPREQUEST -
  4. DHCPACK - Resposta do servidor na qual contem parametros e o indereço de IP
  5. DHCPNAK - Resposta que o servidor DHCP envia ao cliente, aqui pode ser que o lease time acabou, ou pode ser que o cliente
  6. DHCPDECLINE - Cliente avisa ao servidor DHCP que determinado IP já esta sendo utilizado.
  7. DHCPRELEASE - Cliente libera o endereço de IP
  8. DHCPINFORM - Cliente solicita os parâmetros de rede locais.
Campos da mensagem DHCP

op - Tipo de mensagem
htype - Tipo de endereço de hardware
hlen - Tamanhho do endereço de hardware
hops - Por padrão o cliente define como zero, este campo é usado pelos roteadores.
xid - Aqui a transação é identificada
secs - Tempo em segundos da duração da transação desde o processo de boot.
flags -
ciaddr - Endereço de IP do clioente preenchido usando DHCPREQUEST
yiaddr -


siaddr - Endereço IP do servidor DHCP
giaddr - Enderço IP do relay agent
chaddr - MAC do cliente
sname - Nome do servidor
file - Nome do arquivod e boot
options - Este campo é opcional para parâmetros

    Processo de instalação de um servidor DHCP no ubuntu:
    --Etapas de instalação obtida da página do help.ubuntu.com--

    1° : No terminal digite:
    sudo apt-get install dhcp3-server
    depois de instalado, vá até os arquivos/etc/dhcp3/dhcpd.confe/etc/default/dhcp3-servere edite-os de acordo com as suas necessidadesDica:Com o pacote instalado, você pode ativar e desativar o serviço usando oscomandos:# /etc/init.d/dhcp3-server start# /etc/init.d/dhcp3-server stop2° Logo após a instalação será mostrado um "erro" que pode ser confuso para você,mas com as etapasmostradas você verá que o processo não é muito difícil, e o que você precisa fazer para contornaresse erro é atribuir um endereço de IP randonômico.As etapas de atribuição de IP randonômico são as seguintes:sudo gedit /etc/dhcp3/dhcpd.conf
    # Sample /etc/dhcpd.conf # (add your comments here)
    default-lease-time 600;
    max-lease-time 7200;
    option subnet-mask 255.255.255.0;
    option broadcast-address 192.168.1.255;
    option routers 192.168.1.254;
    option domain-name-servers 192.168.1.1, 192.168.1.2;
    option domain-name "mydomain.example";
    subnet 192.168.1.0 netmask 255.255.255.0 {range 192.168.1.10 192.168.1.100;
    range 192.168.1.150 192.168.1.200;range 192.168.1.150 192.168.1.200;} 
     
    - A configuração acima vai  dar ao cliente um IP entre a faixa de 192.168.1.10-192.168.1.100ou 192.168.1.150 192.168.1.200 
     
    - Vai liberar também um tempo de 600 segundos para o IP docliente, caso ele não solicite um tempode "lease" específico. 
     
    - A linha max-lease-time 7200; diz ao cliente que o tempo máximo para um cliente ficar com umIPserá de 7200 segundos. 
     
    - A mascara de sub rede a ser usada será 255.255.255.0 ; 
     
    - 192.168.1.255 IP de broadcast;192.168.1.254 será o gateway 
     
    -Os IP's 192.168.1.1 e 192.168.1.2 serão seus servidores de DNS.Outros parametros podem aida serem inclusos no arquivo acima como:- option ip-forwarding off; aqui define se o roteamente está ou não 
    habilitado.
    - option nntp-server 192.168.0.102; Indica o IP do Servidor (relógio) da rede
    - option netbios-name-servers 192.168.0.103; Aqui é indicado o servidor de nomes NetBIOS da rede.
    www.support.microsoft.com |
    www.ppgia.pucpr.br/

    Este post NÃO pode ser copiado alterado e ou divulgado em outro blog.



    Espero que os leitores do blog façam bom proveito desse post, e qualquer duvida e ou possível erro pesso, que seja postado nos comentários.

    Um comentário:

    Anônimo disse...

    Voce nao falou sobre escopos, mas o resto está ok.

    Parabéns.