NAT

Network address translation é uma tecnologia que nos permite resolver problemas de conectividade em redes que utilizam endereços não roteáveis ou que se sobrepõem a outros já existentes.
Na maioria dos casos NAT permite a utilização de endereços ipv4 não registados para a ligação á internet.
Os dispositivos que têm um nat configurado traduzem em tempo real os endereços privados da rede para um ou mais endereços públicos válidos.

Esta tradução de endereços adiciona um nível de segurança na nossa rede pois impede a divulgação de endereços internos na rede externa.

Os dispositivos NAT também podem funcionar de forma inversa, traduzindo múltiplos endereços públicos para um ou mais endereços privados.

Vantagens do NAT:
  1. Eliminação de utilização de endereços públicos (registados) por cada um dos hosts que se ligam a redes externas.
  2. Preserva os endereços utilizando a. Multiplexagem de portas para todas as comunicações com o exterior. (permite a utilização do mesmo endereço publico por vários hosts privados).
  3. Permite conectividade entre redes existentes com endereços sobrepostos.
  4. Permite a migração de endereçamento de uma forma fácil e organizada.
Desvantagens:
  1. Determinados protocolos escondem os seus endereços de ip fora do header. ( embedded ip address ) Os NAT’s dinâmicos necessitam de manter informação de estado que nem sempre está disponível.
  2. O NAT interfere com alguns sistemas de cifra e autenticação.
  3. Em alguns casos dificulta a análise de logs sendo necessário correlacionar esses logs com outros existentes.
Existem Vários tipos de NAT.
  1. NAT estático. Traduz um endereço único interno para um endereço específico externo. (ambos os endereços são fixos)
  2. NAT dinâmico. Traduz um endereço interno para um endereço externo temporariamente. (quando o endereço interno deixa de usar o publico este fica disponível para outras ligações. A relação contínua de um para um.)
  3. PAT estático – Á semelhança de um nat estático traduz múltiplos endereços internos para um externo mantendo a porta utilizada.
  4. PAT dinâmico (Overload). – Traduz múltiplos endereços internos para um ou mais endereços externos mantendo, se possível, a porta utilizada escolhendo para isso um dos endereços de ip externos disponíveis, caso não seja possível, utiliza a próxima porta disponível num qualquer endereço externo.
Formas de configuração:
Nat Estático
1
2
3
4
5
6
7
enable
configure terminal
ip nat inside source static 192.168.1.2 209.200.160.100
interface fa 0/0 Interface com ligação ao interior
ip nat inside
interface fa0/1 Interface com ligação ao exterior
ip nat outside
Nat Dinamico
1
2
3
4
5
6
7
8
9
enable
configure terminal
access list 11 permit 192.168.1.0 0.0.0.255 Criação da lista de endereços que podem ser traduzidos pelo nat
ip nat pool nomepool 209.200.160.100 209.200.160.110 prefix-lenght 24 conjunto de endereços externos que vão ser usados na tradução dos endereços internos.
ip nat inside source list 1 pool nomepool associação dos endereços internos á pool de endereços externos
int fa 0/0 interface da rede interna
ip nat inside
int fa 0/1 interface da rede externa
ip nat outside
Este nat dinâmico tem a tradução de endereços 1 para 1 ou seja só se conseguem ligar á rede externa 10 endereços internos de cada vez, visto apenas termos 10 externos na pool de endereços.
Se houver um 11 pedido este não vai ter sucesso na sua tradução para um endereço externo.
PAT estático
1
2
3
4
5
6
7
8
9
enable
configure terminal
access-list 1 permit 192.168.1.0 0.0.0.255
ip nat pool nomepool 209.200.160.100 209.200.160.100 prefix-length 24
ip nat inside source list 1 pool nomepool overload
int fa0/0
ip nat inside
int fa0/1
ip nat outside
PAT Dinamico
1
2
3
4
5
6
7
8
9
enable
configure terminal
access-list 1 permit 192.168.1.0 0.0.0.255
ip nat pool nomepool 209.200.160.100 209.200.160.110 prefix-length 24
ip nat inside source list 1 pool nomepool overload
int fa0/0
ip nat inside
int fa0/1
ip nat outside
Por defeito o equipamento guarda as tabelas nat por tipo de ligação algum tempo.

Aqui ficam os tempos por defeito que podem ser alterados:

· UDP – 5minutos
· TCP (sessão) – 24 horas
· SYN – 1 minuto
· FIN/RST – 1 minuto
· DNS – 1 minuto
· ICMP – 1 minuto
Por fim deixo uma configuração NAT que pode ser usada quando temos redes que se sobrepõem e cujo trafego a ser feito nat é da rede externa para a rede interna…
1
2
3
4
5
6
7
8
9
enable
configure terminal
access-list 1 permit 192.168.1.0 0.0.0.255
ip nat pool nomepool 192.168.1.2 192.168.1.10 prefix-length 24
ip nat outside source list 1 pool address pool
interface fa 0/0
ip nat inside
interface fa 0/1
ip nat outside

Mais informação sore o NAT

  1. Inside Local – Endereço pertencente ao host interno
  2. Inside Global – Endereço do host interno visualizado pelos hosts externos
  3. Outside Local – Endereço externo visualizado pelos hosts internos
  4. Outside Global – Endereço do host externo

Configurar SSH sem host name e domain Name

Para configurar SSH num equipamento cisco sem hostname e sem domain name podemos recorrer aos seguintes comandos:

1
2
3
4
5
enable
configure terminal
ip ssh rsa keypair-name ciscopair
generate rsa usage-keys label ciscopair modulus 1024
ip ssh version 2

Activar um interface no linux

Para inicializar um interface especifico no linux apenas temos de escrever o seguinte comando:

ifup eth0

Podemos substituir o eth0 pelo interface que pretendemos inicializar.
Atenção que temos de garantir que ele existe na lista de interfaces configurada no nosso sistema.

Comandos Simples de um Switch

banner motd 

Configura a mensagem do dia (message of the day)

configure terminal

entra no modo de configuração de terminal

copy running-config to startup-config

Copia a configuração actual para a configuração de arranque do router.

enable

entra no modo privilegiado

enable secret password

apaga a configuração de arranque

erase startup-configuration

coloca-nos no interface indicado

interface interface

define qual o endereço de ip do interface

ip address address mask

Define qual o gateway

ip default-gateway address

Coloca-nos dentro da consola 0

line console 0

coloca-nos dentro das consolas virtuais 0 a 4

line vty 0 4

activa o pedido de identificação dos utilizadores que acedem ao equipamento via vty ou consola.

login

define a password dos utilizadores da consola. Quando feito dentro da consola.

password password

pinga um determinado ip

ping ip address

recarrega o IOS

reload

mostra os vizinhos que o CDP aprendeu

show cdp neighbours

Mostra todos os interfaces do equipamento

show interfaces

Mostra o modo em que um determinado interface está.

show port-security interface interface-if {address}

mostra a configuração que está a correr

show running-configuration

desliga e activa por exemplo um interface

shutdown / no shutdown

coloca em modo de acesso um interface

switch-port mode access

activa o modo de segurança de um interface

switch-port port-security

activa o modo de segurança de um interface pelo mac-address

switch-port port-security mac-address mac-address

define qual o numero máximo de mac-address que podem ser ligado no interface

switch-port port-security maximum value

 

Descodificar um Pacote TCP/IP (TCP apenas)

O TCP é a outra parte que vem agarrada ao protocolo IP. 🙂

O TCP é encontrado na segunda parte de uma frame TCP/IP.
No pacote anteriormente analisado no texto “Descodificar um pacote TCP/IP (IP Apenas) reparamos que o TCP é o pedaço assinalado a azul.

00 4f 4e 0e b2 45 00 1a 80 d8 43 ef 08 00 45 0000 28 5a b1 40 00 80 06 00 00 c0 a8 64 65 c0 a8 64 01 c0 43 1f 90 b0 d8 c2 30 ea 48 e1 3a 50 1040 29 49 d2 00 00

O pedaço assinalado em azul dá-nos conta de toda a informação sobre o TCP.

Os 2 primeiros bytes indicam a porta de origem (porta onde se iniciou o pedido).
c0 43 1f 90 b0 d8 c2 30 ea 48 e1 3a 50 1040 29 49 d2 00 00

c0 43 é em decimal 49219.

A porta de Destino é a:
c0 43 1f 90 b0 d8 c2 30 ea 48 e1 3a 50 1040 29 49 d2 00 00

1f90 = em decimal 8080 🙂 endereço de um proxy? 🙂

O numero sequencial que vem de seguida serve para controlar a fragmentação dos pacotes bem como a ordem porque eles são enviados…

c0 43 1f 90 b0 d8 c2 30 ea 48 e1 3a 50 1040 29 49 d2 00 00

O numero de reconhecimento, como sabem um computador quando acaba de receber uma sequência de pacotes tcp responde com um ack+1 relativamente ao pacote recebido. Este numero é indicado pelos seguintes bytes.

c0 43 1f 90 b0 d8 c2 30 ea 48 e1 3a 50 1040 29 49 d2 00 00

Depois vem o tamanho do cabeçalho: 5

c0 43 1f 90 b0 d8 c2 30 ea 48 e1 3a 50 1040 29 49 d2 00 00

As flags podem ser URG, ACK, PSH, RST, SYN, e FIN

c0 43 1f 90 b0 d8 c2 30 ea 48 e1 3a 50 1040 29 49 d2 00 00
Neste caso o 010 representa em binário 010000 e é uma flag tipo ACK.

O tamanho da janela vem de seguida,
c0 43 1f 90 b0 d8 c2 30 ea 48 e1 3a 50 1040 29 49 d2 00 00
Que em decimal representa cerca de 16425. Que representa o tamanho máximo que a origem consegue enviar.

O “checksun”
c0 43 1f 90 b0 d8 c2 30 ea 48 e1 3a 50 1040 29 49 d2 00 00 e por fim os 0000 que representa o ponteiro de urgência, certos pacotes podem passar á “frente da fila” e ser processados primeiro. a Flag URG indica que esses dados existem e o ponteiro indica a posição deles dentro da área de dados.

Binary "ANDing"

É o processo pelo qual é feita uma muliplicação entre dois numeros binarios. (Na numeração decimal).

Então temos

0 and 0 = 0
1 and 0 = 0
0 and 1 = 0
1 and 1 = 1

Utiliza-se o anding quando se compara ip’s com a sua subnet mask para saber qual a rede a que o ip pertence.

Ex:
Qual a rede a que pertence o IP 192.168.100.115 com subnet Mask de 255.255.255.240?

  1. Converter ambos os endereços para binario.

192.168.100.115 = 11000000.10101000.01100100.01110011

255.255.255.240 = 11111111.11111111.11111111.11110000

2. Realizar o AND

192.168.100.115 = 11000000.10101000.01100100.01110011
255.255.255.240 = 11111111 .11111111 .11111111 .11110000

Resultado = 11000000.10101000.01100100.01110000

Converter o resultado para decimal novamente:

11000000.10101000.01100100.01110000 = 192.168.100.112

O endereço de IP pertence á rede 192.168.100.112 quando uma subnet mask 255.255.255.240 é usada.

Descodificar um Pacote TCP/IP (IP apenas)

Bem aqui fica uma informação de como descodificar um pacote TCP/IP.

Vamos imaginar que com um TCPDUMP temos um pacote capturado e queremos ler a sua informação…

Este é um exemplo de uma frame que navegava na rede em exadecimal.

00 4f 4e 0e b2 45 00 1a 80 d8 43 ef 08 00 45 00
00 28 5a b1 40 00 80 06 00 00 c0 a8 64 65 c0 a8
64 01 c0 43 1f 90 b0 d8 c2 30 ea 48 e1 3a 50 10
40 29 49 d2 00 00

Ora bem o inicio da frame indica-nos qual o MAC de Destino.

00 4f 4e 0e b2 45 00 1a 80 d8 43 ef 08 00 45 00
00 28 5a b1 40 00 80 06 00 00 c0 a8 64 65 c0 a8
64 01 c0 43 1f 90 b0 d8 c2 30 ea 48 e1 3a 50 10
40 29 49 d2 00 00

O segundo indica-nos qual o MAC de Origem

00 4f 4e 0e b2 45 00 1a 80 d8 43 ef 08 00 45 00
00 28 5a b1 40 00 80 06 00 00 c0 a8 64 65 c0 a8
64 01 c0 43 1f 90 b0 d8 c2 30 ea 48 e1 3a 50 10
40 29 49 d2 00 00

O proximo valor indica-nos o tipo de pacote que vai dentro da frame.
Neste caso 0x0800 que representa o IP.

00 4f 4e 0e b2 45 00 1a 80 d8 43 ef 08 00 45 00
00 28 5a b1 40 00 80 06 00 00 c0 a8 64 65 c0 a8
64 01 c0 43 1f 90 b0 d8 c2 30 ea 48 e1 3a 50 10
40 29 49 d2 00 00

Bem agora chegamos ao protocolo ip.
O protocolo ip é representado pelo conjunto em baixo indicado.

00 4f 4e 0e b2 45 00 1a 80 d8 43 ef 08 00 45 00
00 28 5a b1 40 00 80 06 00 00 c0 a8 64 65 c0 a8
64 01
c0 43 1f 90 b0 d8 c2 30 ea 48 e1 3a 50 10
40 29 49 d2 00 00

O primeiro valor deste conjunto exadecimal indica qual a versão de IP (versão 4).
00 4f 4e 0e b2 45 00 1a 80 d8 43 ef 08 00 45 000
00 28 5a b1 40 00 80 06 00 00 c0 a8 64 65 c0 a8
64 01 c0 43 1f 90 b0 d8 c2 30 ea 48 e1 3a 50 10
40 29 49 d2 00 00

O segundo caracter indica-nos qual o IHL. (Internet Header Lenght)
Que nos indica qual o tamanho do Header do Pacote IP. Significa também que é de 20bytes e é o valor minimo para um pacote IP.

00 4f 4e 0e b2 45 00 1a 80 d8 43 ef 08 00 45 00
00 28 5a b1 40 00 80 06 00 00 c0 a8 64 65 c0 a8
64 01 c0 43 1f 90 b0 d8 c2 30 ea 48 e1 3a 50 10
40 29 49 d2 00 00

O campo 00 logo de seguida é utilizado para serviços diferenciados ou como alguem lhe gosta de chamar tipo de serviços. RFC 1349… não vou falar muito deste hoje 🙂

Depois vem o tamanho do “datagram” que é de 0028 em exadecimal que transformado para decimal é de 40bits. (Podem usar a calculadora do windows para isto).

00 4f 4e 0e b2 45 00 1a 80 d8 43 ef 08 00 45 00
00 28 5a b1 40 00 80 06 00 00 c0 a8 64 65 c0 a8
64 01 c0 43 1f 90 b0 d8 c2 30 ea 48 e1 3a 50 10
40 29 49 d2 00 00

A identificação é indicada por 5a b1 logo no conjunto seguinte. É usado para distinguir um datagram de outro.

Depois vem o indicador de “flags” o :
00 4f 4e 0e b2 45 00 1a 80 d8 43 ef 08 00 45 00
00 28 5a b1 40 00 80 06 00 00 c0 a8 64 65 c0 a8
64 01 c0 43 1f 90 b0 d8 c2 30 ea 48 e1 3a 50 10
40 29 49 d2 00 00

é utilizado para a fragmentação dos pacotes.

Agora vem o tempo de vida do datagram.
Neste caso é:

00 4f 4e 0e b2 45 00 1a 80 d8 43 ef 08 00 45 00
00 28 5a b1 40 00 80 06 00 00 c0 a8 64 65 c0 a8
64 01 c0 43 1f 90 b0 d8 c2 30 ea 48 e1 3a 50 10
40 29 49 d2 00 00

E quanto é 80 de hexa para decimal?
é 128…
Quando este valor chega a zero é descartado.

Depois vem o TCP Ou pelo menos o indicador que dentro do ip vem o protocolo TCP…

00 4f 4e 0e b2 45 00 1a 80 d8 43 ef 08 00 45 00
00 28 5a b1 40 00 80 06 00 00 c0 a8 64 65 c0 a8
64 01 c0 43 1f 90 b0 d8 c2 30 ea 48 e1 3a 50 10
40 29 49 d2 00 00

Quase no fim vem o headerCheck Sum que é representado pelos seguintes numeros:
00 00 logo a seguir ao protocolo.

E por fim o que nos faltava para isto ser válido o ip de origem…. Que é
00 4f 4e 0e b2 45 00 1a 80 d8 43 ef 08 00 45 00
00 28 5a b1 40 00 80 06 00 00 c0 a8 64 65 c0 a8
64 01 c0 43 1f 90 b0 d8 c2 30 ea 48 e1 3a 50 10
40 29 49 d2 00 00

que fazendo as contas em decimal é de 192.168.100.101

e o ip de Destino que fazendo as contas é o 192.168.100.1
00 4f 4e 0e b2 45 00 1a 80 d8 43 ef 08 00 45 00
00 28 5a b1 40 00 80 06 00 00 c0 a8 64 65 c0 a8
64 01
c0 43 1f 90 b0 d8 c2 30 ea 48 e1 3a 50 10
40 29 49 d2 00 00

E acabamos a parte do IP num proximo post vem a parte do TCP que são o resto dos numeros hexadecimais que faltam analizar.

00 4f 4e 0e b2 45 00 1a 80 d8 43 ef 08 00 45 00
00 28 5a b1 40 00 80 06 00 00 c0 a8 64 65 c0 a8
64 01 c0 43 1f 90 b0 d8 c2 30 ea 48 e1 3a 50 10
40 29 49 d2 00 00