EA080 – Laboratório de Redes de Computadores Prof

Propaganda
EA080 – Laboratório de Redes de Computadores
Prof. Responsável: Mauricio Ferreira Magalhães – 2º semestre/2015
Laboratório - FIREWALL & NA
O Firewall implementa a filtragem de pacotes permitindo a realização de ações de
segurança que são usadas para gerenciamento do fluxo de dados destinados ao
roteador (input), originados no roteador (output) e que atravessam o roteador
(forward). Juntamente com o NAT (Network Address Translation), o Firewall serve como
ferramenta para prevenir acesso não autorizado a redes de uma instituição, ao próprio
roteador, assim como, a filtragem do tráfego de saída originado no roteador.
Alguns exemplos do uso do Firewall no Mikrotik:
a) Regra para descartar todos os pacotes TCP que atravessam (forward) o roteador e
destinados à porta 135:
/ip firewall filter add chain=forward dst-port=135 protocol=tcp action=drop
b) Regra para impedir o acesso ao roteador (input) através do comando Telnet
(protocolo TCP, porta 23):
/ip firewall filter add chain=input protocol=tcp dst-port=23 action=drop
c) Regra para impedir mais do que 5 conexões simultâneas:
/ip firewall filter add chain=forward protocol=tcp tcp-flags=syn connectionlimit=6 action=drop
As opções de filtragem que podem ser definidas no Mikrotik são muito variadas. Uma
consulta ao manual do roteador permitirá ao aluno uma visão das várias possibilidades.
Princípios gerais de filtragem
O Firewall opera através da definição de regras. Uma regra é uma expressão que indica
ao roteador o que fazer com um determinado pacote IP em particular. Cada regra
consiste de duas partes: a) “casamento” do fluxo de tráfego com as condições
especificadas; b) ação que define o que fazer com os pacotes que são compatíveis com
a regra especificada. As regras são organizadas através de encadeamentos (chains) para
facilitar o gerenciamento.
Além dos três encadeamentos pré-definidos (input, forward, output), novos
encadeamentos, para fins de estruturação das regras, podem ser adicionados.
Como as regras do Firewall são agrupadas em encadeamentos, isto permite que um
pacote seja associado a um critério pertencente a um encadeamento e, em seguida,
enviado para processamento associado a um outro critério de um outro encadeamento.
Por exemplo:
/ip firewall filter add src-address=1.1.1.2/32 jump-target=mychain
Caso um pacote seja compatível com a regra acima, o controle sobre o pacote é
repassado para o encadeamento mychain. Dessa forma, outras regras podem ser
adicionadas a esse encadeamento sem a necessidade de especificar novamente o
endereço IP (1.1.1.2/32). A melhor estratégia a ser adotada na estruturação das regras
do firewall é especificar as regras associadas ao tráfego seguro e descartar o resto. É
importante ainda ressaltar que as regras são processadas na sequência de cima para
baixo (from top-to-bottom).
Exemplos de aplicação de filtragem:
•
Proteção do roteador – Todos os pacotes destinados ao roteador (input)
devem ser processados pelos encadeamentos do Firewall. Deve ser
observado que o encadeamento de entrada não afeta os pacotes que
atravessam (forward) o roteador:
/ip firewall filter
add chain=input src-address=192.168.0.0/24 action=accept \
comment="Allow access to router from known network"
add chain=input action=drop comment="Drop anything else"
•
Proteção de uma rede cliente – para proteção de uma rede cliente, todo
tráfego que atravessa o roteador deve ser examinado e bloqueado o
tráfego indesejável. No caso do tráfego icmp, tcp e udp serão criados
encadeamentos que irão descartar os pacotes não desejados:
/ip firewall filter
add chain=forward src-address=0.0.0.0/8 action=drop comment=”bogons”1
add chain=forward dst-address=0.0.0.0/8 action=drop
add chain=forward src-address=127.0.0.0/8 action=drop
add chain=forward dst-address=127.0.0.0/8 action=drop
add chain=forward src-address=224.0.0.0/3 action=drop
add chain=forward dst-address=224.0.0.0/3 action=drop
•
Definição de saltos para novos encadeamentos:
add chain=forward protocol=tcp action=jump jump-target=tcp
add chain=forward protocol=udp action=jump jump-target=udp
add chain=forward protocol=icmp action=jump jump-target=icmp
•
Definição de um encadeamiento tcp com bloqueio de aiilgumas portas tcp:
add chain=tcp protocol=tcp dst-port=69 action=drop comment="deny TFTP"
add chain=tcp protocol=tcp dst-port=111 action=drop comment="deny RPC
portmapper"
1
Bogon" is an informal name for an IP packet on the public Internet that claims to be from an area of the IP address space reserved,
but not yet allocated or delegated by the Internet Assigned Numbers Authority (IANA) or a delegated Regional Internet Registry (RIR).
The areas of unallocated address space are called "bogon space".
add chain=tcp protocol=tcp dst-port=135 action=drop comment="deny RPC
portmapper"
add chain=tcp protocol=tcp dst-port=137-139 action=drop comment="deny
NBT"
•
Bloqueio de algumas portas udp no encadeamento udp:
add chain=udp protocol=udp dst-port=69 action=drop comment="deny TFTP"
add chain=udp protocol=udp dst-port=111 action=drop comment="deny PRC
portmapper"
add chain=udp protocol=udp dst-port=135 action=drop comment="deny PRC
portmapper"
NAT – Network Address Translation
O NAT é uma facilidade no roteador que tem como função substituir o endereço IP de
origem e (ou) o endereço IP de destino de um pacote à medida que ele atravessa o
roteador. O uso mais comum do NAT é permitir que múltiplos hops em uma rede
privada acessem a Internet através do uso de um único endereço IP público. Desta
forma há uma redução da demanda de endereços IPs globais já que os endereços
privados da rede não são vistos pelos roteadores na Internet pública.
O NAT, na sua visão mais geral, trata-se de um padrão Internet que permite que hosts
em uma rede local usem um conjunto de endereços IP para comunicação interna e outro
conjunto de endereços IP para comunicação externa. Uma rede privada que utiliza o
NAT é denominada de rede natted. Para que o NAT funcione, deve existir um
gateway(roteador de borda) NAT em cada rede privada (roteador NAT) que realiza a
reescrita do endereço IP. Existem 02 (dois) tipos de NAT:
1 source NAT ou srcnat. Este tipo de NAT atua sobre os pacotes originados na rede
privada (natted network). O roteador NAT substitui o endereço origem privado
em um pacote IP por um novo endereço IP público à medida que o pacote passa
pelo roteador.
2 destination NAT ou destnat. Este tipo de NAT atua sobre os pacotes destinados
à rede privada. Trata-se de um NAT cujo principal objetivo é permitir que hosts
em uma rede privada sejam acessíveis a partir da Internet. Um roteador NAT ao
realizar as suas funções substitui o endereço IP de destino no pacote IP à medida
que o pacote IP viaja através do roteador na direção de uma rede privada.
Exemplos:
•
Regra para acesso a um servidor na rede privada (192.168.0.109) por
hosts na rede pública através de um endereço IP global (10.5.8.200)
/ip firewall nat add chain=dstnat dst-address=10.5.8.200 action=dst-nat toaddresses=192.168.0.109
•
Regra para permitir que o servidor (192.168.0.109) acesse hosts na rede
pública através de um endereço IP global (10.5.8.200)
/ip firewall nat add chain=srcnat src-address=192.168.0.109 action=src-nat
to-addresses=10.5.8.200
Problemas associados ao NAT – O NAT elimina a característica fim-a-fim que é parte da
arquitetura Internet desde a sua criação. Dessa forma, alguns protocolos Internet
podem não operar neste cenário. Por exemplo, clientes que estão fora da rede privada
e que requerem o estabelecimento de uma conexão TCP com algum servidor na rede
privada. Outros tipos de protocolos incompatíveis com o NAT são aqueles que
transportam o endereço original do pacote como parte do conteúdo da sua carga. Ou
seja, ao alterar o endereço de destino, o conteúdo do pacote não é mais válido pois o
novo endereço reescrito no cabeçalho do pacote IP é diferente daquele originalmente
inserido no seu conteúdo.
Redirecionamento e Masquerede – são duas formas especiais de destination NAT
(destnat) e source NAT (srcnat), respectivamente. Redirecionamento é semelhante ao
processo de destination NAT e o Masquerade ao source NAT.
Exemplo de Masquerading (Source NAT)
Se você deseja esconder a LAN privada 192.168.0.0/24 “atrás” do endereço público
10.5.8.109 atribuído a você pelo seu ISP (Internet Service Provider), será necessário usar
a tradução de endereço de rede de origem (masquerading). O mecanismo de
masquerading irá alterar o endereço IP de origem e a porta IP de origem dos pacotes
originados na rede 192.168.0.0/24. No caso, o endereço de origem será substituído por
10.5.8.109 quando o pacote atravessar o roteador e a porta de origem receberá um
novo valor acima de 1024 (ver exemplo no Anexo). Para usar o masquereding, uma regra
de NAT (source NAT) com a ação “masquerade” deverá ser adicionada à configuração
do firewall:
/ip firewall nat add chain=srcnat action=masquerade out-interface=ether2
Todas as conexões originadas na rede 192.168.0.0/24 possuirão, na rede pública, o
endereço de origem 10.5.8.109 correspondente ao roteador e uma porta acima de
1024. Nenhum acesso a partir da Internet será possível aos endereços locais na rede
privada. Caso seja necessário permitir conexões a um servidor local na rede 192.168.0.0
será necessário introduzir uma regra de Redirecionamento (destination NAT).
Atividades
A topologia na figura 1 abaixo mostra duas redes privadas interconectadas através de
uma rede pública. Cada rede privada é conectada à rede pública através dos gateways
R2 e R4. A atividade deverá ser desenvolvida individualmente através do ambiente
virtual do laboratório. Observe que, independentemente da arquitetura de roteamento
definida para as redes privadas e a rede pública, em nenhuma hipótese os endereços
das redes privadas deverão aparecer nas tabelas de roteamento da rede pública e viceversa. No desenvolvimento da atividade o aluno deverá seguir as seguintes etapas:
1) Remover do VirtualBox as máquinas virtuais relativas aos Roteadores 1, 2, 3, 4 e
5. Na remoção escolha a opção “apagar todos os arquivos”;
2) Após a remoção dos roteadores importe a “appliance” com nome Firewall.ova
disponível na pasta Maquinas-Virtuais que se encontra abaixo da pasta EA080.
Na importação, NÃO marque a opção de “reiniciar o endereço MAC de todas as
placas de rede”;
3) Analise os endereços das interfaces dos roteadores R1, R2, R3, R4 e R5, assim
como as respectivas tabelas de roteamento e confirme se elas estão compatíveis
com a topologia da figura 1.
Como já mencionado, uma das grandes vantagens do NAT é a conservação de endereços
IP pois permite que os hosts em uma rede privada compartilhem endereços IP públicos.
Nesse caso, os endereços IP das redes privadas não são roteáveis externamente, ou seja,
não aparecem como entradas nas tabelas de roteamento na Internet. No caso desse
experimento, os roteadores R2 e R4 deverão atuar como roteadores NAT permitindo
que os nós das redes privadas acessem os endereços públicos das redes 10.0.6.0/23 e
10.0.0.0/23.
Após a instalação da topologia indicada na figura 1, utilize comandos ping entre os PCs
indicados na figura. Entretanto, como já esperado, os comandos ping não funcionarão
através dos limites entre as redes pública e privadas.
Exercício 1: Utilize os comandos de linha do Mikrotik (ou a interface Winbox) para
configurar o roteador R2 como um dispositivo NAT. Adicione uma regra em R2 de modo
que o endereço privado de PCx, 192.168.2.x, seja traduzido para o endereço público
10.0.6.22/23.
Execute o comando ping a partir do PCx na rede privada para o PCz na rede pública.
Comente o resultado. Execute o ping do PCz na rede pública para o PCx. Justifique o
resultado!
Adicione uma regra que permita que o PCx seja acessado por um host na rede pública.
Comente o resultado!
Exercício 2: suponha que você deseja que o endereço privado 192.168.1.21 também
seja visto na rede pública. Qual solução você proporia sem usar a opção do masquerade?
Teste e comente a sua solução!
Figura 1 – Topologia associada à atividade 1
Exercício 3: Utilize a ação do masquerade para permitir o compartilhamento do
endereço público 10.0.6.22 pela Rede Privada 1. Inicie o Wireshark no PCx e no PCz na
rede pública. a) Execute o ping a partir de um host na rede pública para os endereços IP
192.168.0.x (PCx) e 192.168.1.21 (R1). Comente os resultados!; b) Execute o comando
ping a partir do PCx e a partir do roteador R1 para o PCz na rede pública. Comente os
resultados!
Exercício 4: É possível executar o comando telnet a partir do Router-21 para o Router23 e vice-versa? Em caso positivo, sugira uma forma de fazê-lo e comente os resultados
obtidos. Na sequência defina uma regra no Firewall de modo que a rede privada onde
encontra-se o roteador R3 aceite comandos telnet mas não aceite comandos ftp e ssh
enviados por hosts externos.
Como mencionado anteriormente, o NAT permite a conservação dos endereços IP
através do compartilhamento de um endereço IP público pelos vários endereços IP
privados não roteáveis globalmente. O aspecto negativo introduzido pelo NAT é a
quebra da visão fim-a-fim implícita na arquitetura original da Internet. Neste caso,
aquelas aplicações que transportam endereços IP na carga (payload) do pacote terão
problemas devido à alteração do endereço origem pelo NAT na borda da rede privada.
Um exemplo deste tipo de problema ocorre com o protocolo de aplicação FTP (File
Transfer Protocol).
Exercício 5: Defina a(s) regra(s) necessária(s) para estabelecer uma sessão FTP entre PCx
e o Router-24. Inicie o Wireshark em algum host na rede 10.0.0.0/23 para capturar as
mensagens FTP. Execute o Wireshark também no PCx e em seguida execute o comando
ftp também no PCx e, após aberta a conexão, transfira dados do Router-24 para o PCx
(ex. > dir). A transferência funciona corretamente? Em caso positivo, como justificá-lo
se o FTP é um dos protocolos que é afetado negativamente pelo NAT?
Ao terminar o experimento exporte uma “appliance” formada pelos Roteadores 1, 2, 3,
4 e 5. Atribua para essa “appliance” um nome diferente de Firewall.ova e, na sequência,
remova os Roteadores 1, 2, 3, 4 e 5 do VirtualBox. Isso não deixará “rastros” da sua
atividade. Caso seja necessário continuar a atividade, você pode importar a “appliance”
gerada e continuar a atividade com a mesma configuração dos roteadores no momento
da interrupção.
Dynamic Host Configuration Protocol (DHCP)
O DHCP é utilizado para atribuir/alterar dinamicamente os parâmetros de configuração
de hosts na Internet, incluindo endereço IP, máscara de rede, roteador default e servidor
DNS. O protocolo DHCP é baseado no modelo cliente-servidor. Os clientes DHCP enviam
requisições ao servidor DHCP e o servidor responde com a atribuição do endereço IP e
outros parâmetros de configuração. A grande vantagem do uso do DHCP é liberar os
administradores de rede da tarefa de configurar manualmente estes vários parâmetros
nas máquinas que compõem a rede.
O protocolo não é seguro e deve ser usado somente em redes confiáveis. O servidor
DHCP escuta sempre na porta UDP 67 e o cliente DHCP na porta UDP 68. Na fase inicial
da negociação, a comunicação entre cliente e servidor utiliza os endereços
255.255.255.255 (broadcast) e 0.0.0.0. É importante ter noção da utilização destes
endereços na configuração de eventuais firewalls na rede.
Nessa atividade introduziremos também o agente de encaminhamento DHCP (relay
agent). Quando um cliente DHCP e o servidor DHCP não se encontram na mesma subrede, o agente DHCP atua como um “roteador” de mensagens DHCP. O agente DHCP
encaminha as requisições DHCP de um cliente para o servidor DHCP e encaminha as
mensagens de resposta (reply) do servidor DHCP para o cliente DHCP.
A configuração inicial para esta atividade encontra-se na figura a seguir:
Figura 2 – Topologia DHCP
Para carregar a configuração da Figura 2 importar a “appliance” dhcp.ova na pasta
Maquinas-Virtuais abaixo da pasta EA080. Na importação, NÃO marque a opção de
“reiniciar o endereço MAC de todas as placas de rede”. Após o carregamento, confirme
que os endereços dos roteadores estão compatíveis com a topologia da figura acima.
Os hosts PCx e PCy devem ser configurados como clientes DHCP e, inicialmente, não
terão endereços IP. No caso, mesmo considerando a hipótese de que existe outras redes
IP atrás dos outros roteadores, queremos que o serviço de DHCP esteja concentrado em
um único roteador, no caso, R1. Dessa forma, R1 será configurado como um servidor
DHCP que deve escutar as requisições DHCP em todas as suas interfaces e transmitir os
parâmetros de configuração de rede nestas mesmas interfaces. O roteador R5 deverá
atuar como um agente de encaminhamento DHCP responsável pelo encaminhamento
de mensagens DHCP entre sub-redes IP diferentes.
Neste exemplo mostraremos como configurar um servidor DHCP e um agente de
encaminhamento DHCP com o objetivo de servir 2 redes IP: 10.0.2.0/23 e 10.0.0.0/23,
sendo que esta última está posicionada atrás do agente de encaminhamento (R5).
Inicialmente, necessitamos criar 2 pools de endereços IP no servidor DHCP (R1) que
serão utilizados para responder as requisições DHCP enviadas pelos hosts situados nas
redes IP atendidas pelo servidor:
/ip pool add name=Pool-1 ranges=10.0.0.45-10.0.0.55
/ip pool add name=Pool-2 ranges=10.0.2.65-10.0.2.75
/ip pool print
Configurando as redes no servidor R1:
/ip dhcp-server network add address=10.0.0.0/23 gateway=10.0.1.25 dns-server
=10.0.6.23
/ip dhcp-server network add address=10.0.2.0/23 gateway=10.0.2.21 dns-server
=10.0.6.23
/ip dhcp-server network> print
Observe o uso hipotético de um servidor DNS nos comandos acima. Na sequência é
configurado o Servidor DHCP para atender as redes IP de onde serão recebidas as
requisições dos clientes DHCP:
/ip
dhcp-server
add
interface=ether3
relay=10.0.6.25
address-pool=Pool-1
name=DHCP1 disabled=no
/ip dhcp-server add interface=ether4 address-pool=Pool-2 name=DHCP-2 disabled=no
/ip dhcp-server> print
Desta forma, concluímos a configuração do servidor DHCP. Necessitamos agora
configurar o agente de encaminhamento DHCP em R5.
/ip dhcp-relay add name=Relay-1 interface=ether5 dhcp-server=10.0.6.21 local-address
=10.0.6.25 disabled=no
/ip dhcp-relay> print
Exercício 6: Necessitamos configurar os 2 Hosts utilizados na atividade como clientes
DHCP, ou seja, inicialmente não deverão possuir endereços IP. Por exemplo, considere
o caso do PCx:
a
é necessário que o Host não possua rota default e não possua endereço IP
associado a sua interface ether0. Caso a tabela de roteamento indique alguma
rota default, delete todas as entradas da tabela de roteamento fazendo o
endereço IP igual a 0.0.0.0, ou seja, > ifconfig ether0 0.0.0.0 up . Verifique o
conteúdo da tabela de roteamento no PCx. Repita este procedimento para o
outro Host.
b para iniciar um cliente DHCP em PCx realize as seguintes funções:
• garanta que não existe nenhuma entrada na tabela de roteamento;
• como um cliente DHCP faz o cache das informações prévias relativas ao
uso do DHCP, estas informações devem ser “deletadas”. As informações
encontram-se nos seguintes arquivos:
o /var/lib/dhcp/dhclient.leases
o /var/lib/dhcp/dhclient.leases~
c inicie o Wireshark em cada um dos PCs.
d inicie o cliente DHCP (ex: ubuntu -> sudo dhclient ethx)
Responda às seguintes questões:
• Qual endereço IP é atribuído a cada um dos PCs?
• Observe os endereços IP de origem e destino dos pacotes que são
enviados entre os clientes e o servidor DHCP.
• Como é possível que um host, antes de obter o seu endereço IP enviado
pelo servidor DHCP, envie e receba pacotes DHCP, mesmo o host não
possuindo um endereço IP?
• Você observa algum pacote ARP? Em caso positivo, explique a função ao
ARP neste contexto.
•
•
Observe e interprete os pacotes DHCP observados. Você deverá
encontrar os seguintes tipos de pacotes: DHCP Discover, DHCP Offer,
DHCP Request, DHCP ACK.
Identifique e interprete os campos de opção dos vários tipos de pacotes
DHCP que você observou.
Exercício 7: altere a atividade anterior de modo que o roteador R5 não atue mais como
agente de encaminhamento DHCP, mas sim, como um cliente DHCP na sua interface
eth1. Para tal, veja o exemplo do comando a seguir para instanciação de um cliente
DHCP no Mikrotik:
/ip dhcp-client add interface=wlan1 use-peer-dns=yes add-default-route=yes
disabled=no
Ao final, exporte uma “appliance” contendo os roteadores 21 e 25 com nome diferente de
dhcp.ova e remova os roteadores 21 e 25.
Download