Apostila3 TCP Ip 2
Apostila3 TCP Ip 2
Apostila3 TCP Ip 2
TCP/IP Parte 2
Objetivo: Conhecer mais de TCP/IP, mais sobre os arquivos de configuração e configuração de subredes.
Aprender ARP e monitoração de tráfego com iptraf e usar o tcpdump.
Antes de vermos novos comandos, vamos começar estudando vários arquivos de configuração do sistema.
Todo computador tem um nome, chamado de hostname. Para configuramos o nome de nosso hostname,
temos que editar o arquivo /etc/hostname.
ping nome-da-sua-maquina
ebl:~# ping -c4 ebl
PING ebl.debian (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.052 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.050 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.054 ms
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.047 ms
Curiosidade:
Repare que o nome da sua máquina foi convertido para 127.0.0.1. Essa conversão é feita pelo arquivo
/etc/hosts.
127.0.0.1 teste
1
Linux Network Servers
E depois pingue o nome teste:
Nós podemos trocar o nosso hostname. Para trocar, basta abrir o arquivo com o vim, editar e salvar. O
nome não vai ser trocado imediatamente, para isso faça o seguinte:
O campo TTL mostrado na saída do comando ping significa Time To Live, que significa o número de
saltos entre máquinas que os pacotes podem demorar numa rede de computadores antes de serem
descartados (máx. 255). Diferentes sistemas operacionais usam diferentes valores para o TTL. Se o TTL
apresentado por 128, provavelmente é uma máquina Windows. Se for 64, provavelmente é Linux.
O TTL evita que os pacotes ao serem enviados fiquem em loop infinito, isto é, evita que a banda
seja consumida de forma não necessária.
Roteamento é um processo que visa encaminhar pacotes de uma rede para outra. Quando o pacote
deve passar de uma sub-rede para outra, o responsável por esse repasse é o roteador. O roteador pode ser
via software ou hardware. O repasse de pacotes ocorre segundo o modelo hop-by-hop (salto-por-salto).
O roteador recebe o pacote e verifica qual é o destino através do cabeçalho IP e calcula o próximo
salto. Este processo se repete até que o pacote seja entregue ao destinatário. Com o comando traceroute
no Linux é possível verificar o número de roteadores envolvidos em uma comunicação.
2
Linux Network Servers
Mas como o número de saltos pode ser observado?
Exemplo:
$ traceroute www.google.com
Executei o ping para pegar o valor de ttl (time to live) do destinatário: 246.
Para cada roteador que um pacote percorrer, é decrementado em "1" o valor do campo TTL do
destinatário.
Cada sistema operacional tem ser valor de TTL, segue uma tabela padrão:
Windows XP = 255
Linux = 64
Linux com firewall = 255
Observação: O administrador do sistema pode modificar o TTL para dificultar ataques de fingerprint
(determinar o sistema operacional da máquina-alvo para estruturar ataque cracker).
255 - X = 246
X=9
Logo, o pacote percorreu 9 roteadores.
3
Linux Network Servers
Verificar o valor de TTL é um dos passos para determinar o sistema operacional (fingerprint) em um pen-
test (teste de penetração) na máquina-alvo. Mas só a análise do TTL não garante a identidade do SO, por
isso outras técnicas são utilizadas.
Se você for alterar o ttl, não coloque um valor muito pequeno como, por exemplo, 10, isso irá atrapalhar
o acesso a redes muito distantes geograficamente. Mantenha o padrão!
Pessoal, vimos como funciona o /etc/hosts. Mas e se eu precisar converter um nome que não está
nele, como isso é feito?
nameserver 192.168.12.1
O nameserver é o IP do servidor de DNS que irá resolver os nomes na rede para nós.
Na aula passado usamos o ifconfig para ver nossas interfaces de rede. Agora onde no sistema essas
configurações ficam salvas?
Vamos ver a cara desse arquivo, essa é uma configuração para um IP estático:
auto eth0
iface eth0 inet static
address 192.168.2.10
netmask 255.255.255.0
broadcast 192.168.2.255
gateway 192.168.2.1
auto eth0
iface eth0 inet dhcp
Veja como está sua configuração:
4
Linux Network Servers
Dica:
Bom, agora que já conhecemos melhor nosso sistema, vamos dar uma olhada na rede com o comando arp.
Lembra que nossa placa de rede tem um identificador chamado endereço MAC? Veja qual é o MAC da sua
placa:
Bem, quando todos estamos ligados em um switch, cada placa tem seu MAC. Para uma máquina
conversar com a outra, o sistema tem que associar um MAC a um IP, pra saber onde mandar os pacotes.
Esse é protocolo ARP. Address Resolution Protocol ou ARP é um protocolo usado para encontrar um
endereço Ethernet (MAC) a partir do endereço IP. O ARP atua na camada 3 do modelo OSI. O emissor
difunde em broadcast um pacote ARP contendo o endereço IP de outro host e espera uma resposta com um
endereço MAC respectivo. Devido aos pacotes broadcast terem um alto custo em termos de banda de
rede, cada host guarda um cache com os endereços conhecidos.
ebl:~# arp -a
? (192.168.1.103) at 00:13:72:02:0b:a8 [ether] on eth0
? (192.168.1.1) at 00:13:10:d5:48:f8 [ether] on eth0
O RARP (reverse ARP) faz o contrário do ARP. O objetivo do RARP é comunicar a partir do endereço
MAC. O RARP é usando quando um host precisa obter sua configuração via DHCP.
O comando arping é um software que utiliza o ARP ao invés do ping para descobrir se outras
máquinas da rede estão ativas.
Mesmo máquinas protegidas por firewall ou configuradas para não responder a ping respondem a pacotes
ARP. Isso é muito útil na hora de detectar problemas na rede.
O arping só funciona na rede local, pois quando ele é usando em um endereço externo (internet), ao
passar no roteador, os campos com endereço ARP são removidos.
Faça um teste!
# arping www.uol.com.br
Dica de segurança!
Use o arpwatch para monitorar sua rede. Ele irá te alertar você caso alguém ligue um novo computador
em sua rede, ou troque o endereço MAC. Vamos imaginar a seguinte situação: Um funcionário espertinho
leva um laptop e conecta ele na rede, afim de levar arquivos da empresa embora. O arpwatch estará
monitorando a rede.
5
Linux Network Servers
Porém, seria possível clonar o endereço MAC de uma máquina?
É possível sim! E é muito fácil!
Para acrescentarmos um IP a uma interface, usamos a sintaxe eth0:X, onde X é numero que representa o
alias.
Segmentar uma rede em sub-redes é interessante quando é necessário otimizar o tráfego de rede e possuir
um controle maior sobre ela.
Exemplo:
Considere o seguinte endereço de rede 192.168.1.0/24.
24 é a máscara de rede = 255.255.255.0
24 é no modo octal
Essa rede será dividida em dois segmentos.
Para isso, é necessário trabalhar apenas com o último octeto da máscara de rede.
Regra:
Número de redes = 2 elevado ao número de bits em 1 = 2 elevado 1 = 2
Número de hosts = 2 elevado ao número de bits em 0 - 2 = 2 elevado 7 - 2 = 128 - 2 = 126
6
Linux Network Servers
Então, precisa-se de 1 bit setado no último octeto.
Subrede 1
Endereço de rede: 192.168.1.0
Broadcast: 192.168.1.127
Hosts variando de 1 a 126
Máscara: 192.168.1.0/25
Subrede 2
Endereço de rede: 192.168.1.128
Broadcast: 192.168.1.255
Hosts variando de 129 a 254
Máscara: 192.168.1.128/25
Caso se tenha apenas uma interface, podemos usar o ip virtual e configurar dois endereços para essa
interface, conforme exemplo abaixo:
Lembrando que o comando ifconfig só mantem as configurações na placa enquanto o sistema estiver
ligado, se você reiniciar a máquina as configurações são perdidas.
No Debian, você pode armazenar as configurações como ip, máscara de rede etc em
/etc/network/interfaces.
Consulte se seu sistema permite repasse entre as interfaces de rede. Para isso, o valor da diretriz
ip_forward deve ser 1:
# sysctl -a | grep ip_forward
Visualize se alterou:
# cat /proc/sys/net/ipv4/ip_forward
7
Linux Network Servers
Será que é possível fazer que isso fique de forma permamente?
# sysctl -p /etc/sysctl.conf
# cat /proc/sys/net/ipv4/ip_forward
8
Linux Network Servers
Agora que já aprendemos mais sobre rede, vamos aprender mais comandos.
Execute o comando:
# iptraf
Ilustração 2: Monitorar o
tráfego
9
Linux Network Servers
Ilustração 3: Escolhendo a
interface
Ilustração 4: iptraf
monitorando a rede
Nós vimos no iptraf as conexões que estão ativas, temos como ver mais a fundo e observar o que está
sendo enviado/recebido?
# tcpdump -X -i eth0
O tcpdump vai jogar tela todo o tráfico que estiver passando por sua interface de rede. Repare que não
existe criptrografia!
Conexões de origem podem ser monitoradas utilizando o parâmetro src host, um exemplo simples seria
monitorarmos o tráfego que vem de 192.168.1.5 para nosso computador, com o ip 192.168.1.3. A linha de
comando ficaria da seguinte forma:
10
Linux Network Servers
Se quisermos monitorar as conexões especificando um host de destino, poderíamos fazê-lo com o
parâmetro dst host, o exemplo abaixo mostra todo o tráfego do host 192.168.1.3 com 192.168.1.1, no
caso, 192.168.1.1 é nosso gateway.
No tcpdump podemos também especificar portas de origem e destino com os comandos src port e dst port,
um exemplo seria monitorarmos o tráfego destinado à porta 80 (http), para isso utilizaríamos a linha de
comandos abaixo e navegaríamos em um site qualquer:
Se em uma rede local é possível usar o tcpdump, seria possível utilizá-lo em uma rede Wi-Fi?
Perfeitamente! Por padrão o tráfego de uma rede sem fio é totalmente desprotegido!
A primeira linha de defesa de uma rede Wi-Fi é a adoção de criptografia. Com ela, os dados que
trafegam entre o computador e o roteador wireless são codificados.
A criptografia WPA (Wireless Protected Access) e a mais recente WPA2 já são mais usadas do que a
tecnologia WEP (Wireless Encryptation Protocol). Por isso, opte pela WPA ou WPA2 se possível – o protocolo
WEP é relativamente fácil de ser quebrado.
Mas lembre-se: utilize o mesmo protocolo em todos os dispositivos da rede; não é possível misturá-
los. As chaves utilizadas pelo WPA e WPA2 são mudadas dinamicamente, o que as torna praticamente
impossível de serem quebradas. Apesar disso, utilize uma senha difícil de ser descoberta como chave de
criptografia, em uma combinação de letras e números com pelo menos 14 caracteres. Se o roteador
utilizado é de um modelo mais antigo que suporte apenas o protocolo WEP, a alternativa é utiliza uma
chave WEP de 128 bits ou trocar o hardware.
11