4. Protocolos do TCP/IP
Organização dos protocolos TCP/IP
Fonte: TCP/IP Illustrated Volume 1, Richard Stevens
5. Encapsulamento do TCP/IP
Pelo menos 58 bytes de overhead, sendo que o frame mínimo é de
64 bytes
Fonte: TCP/IP Illustrated Volume 1, Richard Stevens
6. Multiplexação no TCP/IP
E existência de tipo na ethernet e no IP permitiram que protocolos
como SCTP (transporte) e IPv6 pudessem ser agregados
normalmente
Fonte: TCP/IP Illustrated Volume 1, Richard Stevens
7. Multiplexação no TCP/IP
Uma aplicação é identificada unicamente num computador através
de três informações:
o endereço IP da máquina
a sua porta
o protocolo de transporte utilizado (TCP/UDP)
Desta forma, é possível possuir uma mesma máquina provendo
vários serviços de rede (multiplexação)
... Aplicações
Camada de aplicação
Portas
Camada de transporte Multiplexação
TCP ou UDP
Camada de rede IP
8. Multiplexação no TCP/IP
Cada processo deve ter um número de porta, um IP e um
protocolo de transporte (TCP/UDP) para identificálo
A notação é IP:Porta, por exemplo, 200.210.10.20:80
Cliente Servidor
Aplicação
Porta Porta
TCP ou TCP ou
Transporte
UDP UDP
IP IP
Rede
Enlace
Física
9. Multiplexação no TCP/IP
Porta: um inteiro de 16 bits
O IANA (Internet Assigned Numbers Authority) mantém
uma lista de números de portas
De 0 a 1023: Portas conhecidas, reservadas para vários
protocolos do diaadia pelo IANA
De 1024 a 49151: Portas registradas, não controladas pelo
IANA, mas listadas como conveniência
De 49152 a 65535: Portas efêmeras, não controladas pelo IANA
(¼ do total)
Servidores: portas conhecidas
Clientes: portas efêmeras
10. Hosts na mesma rede local
Não é necessário gateway default ou roteadores, tudo se
resolve somente com o ARP
Fonte: TCP/IP Illustrated Volume 1, Richard Stevens
13. Protocolo ARP
A rede física só conhece MACs
Através do ARP ela determina o endereço MAC do IP de
destino para que o envio do pacote seja realizado
IP 1 IP 2
MAC 1 MAC 2
14. Protocolo ARP
Mensagem Arp Request enviada para todos os nós da
rede (broadcast), procurando pelo “dono” do IP
Quem responde pelo IP a.b.c.d ?
15. Protocolo ARP
Mensagem Arp Replay enviada como resposta, caso o
“dono” do IP seja encontrado
Eu respondo !
16. Protocolo ARP
A resposta positiva permite que os campos do
endereçamento do enlace sejam preenchidos
O resultado é mantido em tabela por um tempo
Para endereços fora das subredes locais, o default
gateway é usado, se estiver configurado
O MAC precisa ser único dentro da rede física
Vendo a tabela arp: arp a
17. Quadro ethernet (RFC 894)
É o mais comum e todos devem poder receber e enviar
Fonte: TCP/IP Illustrated Volume 1, Richard Stevens
18. Quadro IEEE802 (RFC 1042)
Menos comum e todos devem pelo menos ser capazes de
receber
Fonte: TCP/IP Illustrated Volume 1, Richard Stevens
19. Ethernet
Broadcast limitado:
IP: 255.255.255.255
MAC DST: FF:FF:FF:FF:FF:FF
Nunca é repassado por um roteador, sendo confinado na LAN
Broadcast direcionados a redes ou subredes:
Ex: 10.255.255.255, 192.168.255.255
Pode ser repassado pelo roteador
MTU: Maximum Transmission Unit
1500 para frames ethernet
1492 para frames IEEE 802
20. IP Addressing
Classes de endereçamento
Fonte: TCP/IP Illustrated Volume 1, Richard Stevens
21. Multicast e MAC Address
Multicasts: MACs de 01:00:5e:00:00:00 a 01:00:5e:7f:ff:ff
Fonte: TCP/IP Illustrated Volume 1, Richard Stevens
22. IP Header
Fonte: TCP/IP Illustrated Volume 1, Richard Stevens
23. IP Header
The current protocol version is 4, so IP is sometimes called
IPv4.
The header length is the number of 32bit words in the header,
including any options. Since this is a 4bit field, it limits the
header to 60 bytes.
The typeofservice field (TOS) is composed of a 3bit
precedence field (which is ignored today), 4 TOS bits, and an
unused bit that must be 0. The 4 TOS bits are: minimize delay,
maximize throughput, maximize reliability, and minimize
monetary cost. Only 1 of these 4 bits can be turned on. If all 4
bits are 0 it implies normal service.
Fonte: TCP/IP Illustrated Volume 1, Richard Stevens
24. IP Header
The total length field is the total length of the IP datagram in
bytes. Since this is a 16bit field, the maximum size of an IP
datagram is 65535 bytes
The identification field uniquely identifies each datagram sent
by a host. It normally increments by one each time a datagram
is sent.
Flags field and the fragmentation offset field are related to
frame fragmentation.
The timetolive field (TTL) sets an upper limit on the number of
routers through which a datagram can pass. It is initialized by
the sender (often 32 or 64) and decremented by one by every
router that handles the datagram.
Fonte: TCP/IP Illustrated Volume 1, Richard Stevens
25. IP Header
The protocol field identifies which protocol gave the data for IP
to send and it is used by IP to demultiplex incoming datagrams.
Header checksum (calculated over the IP header only).
Every IP datagram contains the source IP address and the
destination IP address. These are 32bit values addresses
used in IPv4.
The final field, the options, is a variablelength list of optional
information for the datagram, like timestamp, record route, and
so on. These options are rarely used.
Fonte: TCP/IP Illustrated Volume 1, Richard Stevens
26. TCP Header
Fonte: TCP/IP Illustrated Volume 1, Richard Stevens
27. TCP Header
Each TCP segment contains the source and destination port
number to identify the sending and receiving application. These
two values, along with the source and destination IP addresses
in the IP header, uniquely identify each connection.
The sequence number identifies the byte in the stream of data
from the sending TCP to the receiving TCP that the first byte of
data in this segment represents.
The header length gives the length of the header in 32bit
words. This is required because the length of the options field
is variable. With a 4bit field, TCP is limited to a 60byte
header.
Fonte: TCP/IP Illustrated Volume 1, Richard Stevens
28. TCP Header
There are six flag bits in the TCP header. One or more of them
can be turned on at the same time.
URG: The urgent pointer is valid.
ACK: The acknowledgment number is valid.
PSH: The receiver should pass this data to the application
as soon as possible.
RST: Reset the connection.
SYN: Synchronize sequence numbers to initiate a
connection.
FIN: The sender is finished sending data.
Fonte: TCP/IP Illustrated Volume 1, Richard Stevens
29. TCP Header
TCP's flow control is provided by each end advertising a window
size. This is the number of bytes, starting with the one specified by
the acknowledgment number field, that the receiver is willing to
accept. This is a 16bit field, limiting the window to 65535 bytes.
The checksum covers the TCP segment: the TCP header and the
TCP data. This is a mandatory field that must be calculated and
stored by the sender, and then verified by the receiver.
The urgent pointer is valid only if the URG flag is set. This pointer is
a positive offset that must be added to the sequence number field of
the segment to yield the sequence number of the last byte of urgent
data.
The most common option field is the maximum segment size option,
called the MSS.
Fonte: TCP/IP Illustrated Volume 1, Richard Stevens
30. Controle de congestionamento e controle de
fluxo
A janela de transmissão é um mecanismo que implementa o
controle de fluxo entre transmissor e receptor. Basicamente, a
janela muda de tamanho proporcionalmente à capacidade de
recepção.
RTT (Round Trip Time): tempo de viagem do pacote, sendo
medido quando o reconhecimento para um determinado
segmento chega. Muito importante no cálculo do tempo de
retransmissão (RTO Retransmission Timeout)
O RTO ajuda a contornar situações de congestionamento na
rede.
31. TCP Connection Establishment
A criação de uma conexão TCP envolve 3 passos
Fonte: TCP/IP Illustrated Volume 1, Richard Stevens
32. TCP Connection Termination
A finalização da conexão TCP envolve quatros passos
Fonte: TCP/IP Illustrated Volume 1, Richard Stevens
34. UDP Header
Cabeçalho mais simples já que o UDP não precisa
garantir a entrega nem tem controle de fluxo
35. ICMP (Internet Control Message Protocol)
O ICMP ajuda no diagnóstico da
rede através de várias mensagens
de erro
Alguns tipos:
0: echo reply (usada no ping)
3: destination unreacheable
5: redirect
8: echo request
11: time exceed
13: time stamp request
14: time stamp reply
Fonte: TCP/IP Illustrated Volume 1, Richard Stevens
36. Origem do SNMP
SNMP:
Simple Network Management Protocol
Conjunto de operações simples que permite o gerenciamento de
dispositivos IP
Criado em 1988 pelo IETF:
Necessidade de gerenciamento e monitorização
Necessidade de diagnóstico
Inicialmente voltado para roteadores mas difundido
rapidamente (computadores, fontes, impressoras, racks,
etc)
37. Versões do SNMP
SNMPv1 (1988):
RFC 1157
Pouco segura mas ainda usada
SNMPv2 (1993):
RFC 3416, RFC 3417, RFC 3418
Melhoria na segurança, novos tipos de dados, desempenho,
operações adicionais
SNMPv3 (1999):
RFC 34113418, RFC 2576
Forte segurança (criptografia)
38. Organização da Informação em MIBs
MIB (Management
Information Base
Especifica quais variáveis
(objetos) o elemento de rede
mantém, é a base de dados de
informação do dispositivo
Representada em forma de
árvore
É padronizada, mas pode ser
personalizada em
determinadas áreas (private)
MIB II: RFC 1213
39. Organização da Informação: OIDs
OID (Object Identifiers)
São representados numericamente ou
de forma textual:
iso.org.dod.internet.private
1.3.6.1.4
iso.org.dod.internet.mgmt.mib
1.3.6.1.2.1
iso.org.dod.internet.private.enterprises
1.3.6.1.4.1
40. Funcionamento do SNMP
Ações básicas de pergunta/resposta
Ações de notificação préconfiguradas (traps)
SNMP Manager SNMP Agent
Requests (set/get)
UDP port 161
Responses
Traps
UDP port 162
41. Funcionamento do SNMP
Operações encontrados no SNMPv1:
get / get next request ↔ get response: lê valores
set request ↔ set response: configura valores
trap: alarmes assíncronos do agente
Operações encontradas no SNMPv2 e v3
getbulk: como o get, mas respeita limites do agente
notification: uma espécie de trap padronizado
inform: confirmações para trap/notification
report: não implementado
42. Funcionamento do SNMP
Especifica formas de autenticação entre agentes e
gerentes
Significam 'plain passwords' para v1 e v2
Comunidades no SNMPv1 e v2 (precisam de definição de
'passwords')
readonly
readwrite
trap
SNMP v3 prevê formas mais securas de autenticação e
criptografia
44. Wireshark: Go deep
Analisador de rede multiplataforma
Suporta centenas de protocolos
Análises offline e online
Filtros poderosos e inspeção detalhada
Análise gráfica
Ferramenta essencial para qualquer administrador e que
requer um bom conhecimento de TCP/IP
http://www.wireshark.org/
45. tcpdump
Permite realizar capturas no terminal aplicando filtros
personalizados, salvando em arquivos .cap
Também pode ler arquivos .cap e analisar segundo filtros
especificados
Apesar da sintaxe complexa dos filtros, é uma ferramenta
bastante poderosa
http://www.tcpdump.org/
46. tcpdump
Capturando o tráfego relacionado à porta TCP 6881 e salvando no arquivo
teste.pcap
tcpdump w test.pcap i eth1 tcp port 6881
Capturando tráfego relacionado à porta TCP 6881 e UDP 33210 ou 33220
tcpdump w test.pcap i eth1 tcp port 6881 or udp ( 33210 or 33220 )
Especificando um host de destino e SSH:
tcpdump w test.pcap dst 10.168.28.22 and tcp port 22
Salvando agora todo o pacote e não somente os primeiros 68 bytes
tcpdump w test.pcap s 0 dst 10.168.28.22 and tcp port 22
Procurando por IPs de destino no format 10.x.y.100 (x e y não importam):
tcpdump "ip[16] = 10 and ip[19] = 100"
Exemplo onde apenas pacotes de início e fim de conexão são apresentados:
tcpdump i eth0 "tcp[tcpflags] & (tcpsyn|tcpfin) != 0"
47. tcpflow
Permite salvar os fluxos de comunicação TCP em
arquivos independentes, com seguinte notação:
a.b.c.d.porta1x.y.z.w.porta2
Excelente para recuperação de conteúdo
Não trata fragmentação na camada IP
Suporte ao formato .cap
O wireshark possui função similar, mas o tcpflow roda no
terminal e opera sobre toda a captura de uma só vez
http://www.circlemud.org/~jelson/software/tcpflow/
tcpflow r <arquivo.cap>
48. Pausa para o exercício
Com o Wireshark, capture um tráfego (crie conexões TCP, faça
downloads), salve e depois explore:
o encapsulamento dos protocolos
a resolução de nomes
a multiplexação no TCP/IP
o processo de abertura e fechamento de conexão
o funcionamento do ARP (limpe o cache antes) e o repasse para o default
gateway
os pares IP:Porta que identificam a conexão
os gráficos de uso de banda, fluxo e estatísticas de rede gerados pelo
Wireshark
as opções de seguir conexões do wireshark
Realize uma captura com o tcpdump, salve em arquivo e depois o arquivo no
Wireshark
49. Pausa para o exercício
Experimente usar o tcpflow no arquivo de
captura salvo no exercício anterior.
Tente identicar ou mesmo separar o
conteúdo dos vários fluxos.
50. IPTraf
Excelente monitor de conexões para terminal
Permite identificar problemas e taxas facilmente
http://iptraf.seul.org/
51. iftop
Similar ao top, mas como foco em tráfego de rede
Interessante para análise rápida do uso da rede e
conexões
http://exparrot.com/~pdw/iftop/
52. kismet
Ferramenta de terminal para análise de tráfego de rede
wireless
http://www.kismetwireless.net/
53. nmap
Ferramenta multiplataforma para análise e exploração de
rede, bastante útil na avaliação da segurança.
Permite avaliar vários hosts em uma rede de forma rápida
e concisa.
Pode ter interface gráfica através do zenmap.
http://nmap.org/
54. nmap
Verifica toda uma subrede, detectando portas TCP abertas e o sistema
operacional usando o flag SYN do TCP
nmap sS O 10.0.0.0/24
Similar, mas verificando portas UDP
nmap sU O 10.0.0.0/24
Assume que o host está online (PN) e usa 4ms de tempo entre frames
nmap sS PN O T4 10.0.0.10
55. Pausa para o exercício
Instale e use o iptraf e o iftop
Use o nmap para levantar serviços
disponíveis em outros hosts na rede
Caso esteja rodando nativamente e não
em VM, experimente usar o kismet. Não
deixe de configurar no arquivo /etc/kismet/
kismet.conf a sua placa de rede sem fio e
o driver, na linha indicada por ”source”.
Por exemplo, para uma placa IPW2200:
source=ipw2200,eth0,WiFi
56. ntop
Permite acessar estatísticas completas do tráfego de rede
através de uma interface web e excelentes gráficos
http://www.ntop.org/
Top Tools:
top
ntop
atop
iftop
htop
apachetop
mtop
57. ntop
Instruções no Ubuntu:
Instale o pacote ntop e suas dependências
Configure a senha do administrador (usuário admin) do ntop:
sudo ntop –setadminpassword
Reinicie o serviço:
sudo ntop u ntop d
O ntop estará disponível na porta 3000:
http://localhost:3000
59. Cacti
Similar ao ntop, mas usando uma base de dados
em banco MySQL e interfaces para SNMP.
É uma opção mais fácil de configurar do que o
MRTG, bastante flexível e capaz de integrar o
gerenciamento de vários ativos como hosts,
switches, roteadores, impressoras, etc.
Suporte a personalização e outros sistemas
operacionais
http://www.cacti.net/
60. Instalando o Cacti no Ubuntu
Instale o pacote mysqlserver e defina uma senha para o
administrador do banco de dados. Instale também o snmpd:
aptget install mysqlserver snmpd
Em /etc/snmp/snmpd.conf, libere o acesso ao snmp através da
comunidade ”public”. Use outro nome, caso prefira.
com2sec readonly default public
Garanta que o snmpd está funcionando:
snmpwalk Os c public v 1 localhost system
Verfique os parâmetros de partida do snmpd em /etc/default/snmpd.
Remova o IP ao final para disponibilizar o SNMP server em outras
interfaces também.
SNMPDRUN=yes
SNMPDOPTS='Lsd Lf /dev/null u snmp I smux p /var/run/snmpd.pid 127.0.0.1'
61. Instalando o Cacti no Ubuntu
Instale o pacote cacti e suas dependências (várias, mas
apache, php, snmp e mysql são as principais). Siga os
diálogos de configuração (escolha apache2 como servidor
web):
aptget install cacti
Em caso de erro, reconfigure o pacote com:
dpkgreconfigure cacti
Aponte para http://localhost/cacti/install/ e prossiga a
instalação. Ao final, logue com usr/pwd como
admin/admin.
Existem atualmente alguns problemas no uso via Firefox
3, fique atento.
62. Instalando o Cacti no Ubuntu
Basicamente será necessário criar novos hosts SNMP
(devices), atribuir gráficos a eles e organizar estes
gráficos em trees.
Entre na aba de ”Console”, entre em ”create devices”
Escolha ”ucd/net SNMP host” como tipo e adicione o device,
configurando o SNMP corretamente (versão 1 e ”public” como
comunidade)
Adicione gráficos para este host
Adicione depois o host num ”Graph tree” e veja o resultado na
aba de gráficos
Uma boa referência é:
http://www.debuntu.org/howtomonitoryourserverswithsnmpandcacti