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.