Fundamentos de Segurança em Redes (Parte I)

A segurança em redes é uma área cada vez mais complexa á medida que surgem por sua vez mais ameaças e a um ritmo acelerado. Daí que o objectivo da segurança em redes é ter um conjunto de medidas e soluções com o objectivo de proteger uma rede, proteger a sua integridade, proteger a informação contida nela e proteger os utilizadores contra uma vasta variedade de ameaças.

A Internet deixou de ser algo exclusivo para certas áreas (cientificas e militares) e passou a ser uma ferramenta essencial para o quotidiano da maior parte das pessoas. Algumas das aplicações mais usadas, como os Web Browser, FTP, Email, VoIP são parte essencial das redes que existem que usamos diariamente e que facilitam em muito a maneira como comunicamos e interagirmos com outros. Mas junto com estas grandes vantagens surgiu uma grande responsabilidade, a Segurança das Redes.

Como podemos tornar as nossas redes mais seguras?

Um bom esquema de segurança envolve um planeamento exaustivo para podermos determinar onde é necessário maior segurança e que soluções são as mais indicadas para a nossa rede. Esse planeamento envolve levar em conta três aspectos básicos: Confidencialidade (privacidade), Integridade (proteger os dados de modificações não autorizadas) e Acessibilidade. Assim, eis algumas coisas que devemos levar em consideração quando pensamos em proteger o melhorar a protecção da nossa rede.

Defesa em camadas

Camadas (cebola)Certamente não é preciso referir os diversos tipos de ameaças a que uma rede está sujeita sejam essas ameaças exteriores ou interiores. Ora, esta variedade de ameaças leva a uma situação em que apenas uma camada de protecção não é o suficiente para proteger uma rede. Não basta dizer, “Mas eu tenho uma firewall”. A segurança de algo não se resume apenas á instalação de determinados software e ficarmos descansados. Antes devemos encarar a segurança de uma rede, como sendo uma solução de diversas camadas, cada uma com o seu objectivo e levar em conta que é também necessário recorrer a soluções tanto baseadas em hardware como em software.

Perímetro de Defesa

Apesar de existir uma arquitectura de redes aparentemente unificada e global, certas áreas exigem que haja segmentos de redes. Segmentos esses que são estabelecidos por dispositivos capazes de regular e controlar o que entra e o que sai. Ao criarmos um bom perímetro de defesa devemos basear as nossas medidas em algumas áreas básicas. Devemo-nos preocupar com o Controlo de Acesso usando para isso um firewall que cria uma fronteira/perímetro que controla os acessos. A Autenticação também é necessária e é usada em conjunto com o Firewall, dado que o papel dela é verificar quem é que vai passar pela Firewall e verificar se essa pessoa é quem diz ser. A utilização de um Intrusion Detection, também é importante para olhar para a Firewall e ver se algo de anormal se está a passar e se tal acontecer alertar para esse problema.

Outra área é a segurança dos conteúdos a que os utilizadores podem aceder. E para isso é necessário que aliada á Firewall esteja uma outra camada que tenha como objectivo verificar onde os utilizadores vão na Internet. Terá que ser uma aplicação que tenha a capacidade de fazer análise aos ficheiros e que consiga também bloquear endereços (URL’s). Por fim, no caso de existir a necessidade de acessos remotos é também necessário que exista uma encriptação do tráfego gerado entre os dois pontos.

Mas antes de focarmos a nossa atenção, nestes componentes importantes para a protecção da nossa rede, vamos ver como podemos melhorar a segurança de uma rede através do seu “desenho”.

Subnetting

Uma forma de criarmos um bom perímetro de defesa é a utilização de técnicas usadas em arquitecturas de redes e que além de ajudarem a poupar endereços IP também têm algo a dizer no que toca a segurança. Uma dessas técnicas é o IP subnetting, o processo de dividir uma rede IP em pequenas sub-redes chamadas de subnets.

Como é que podemos criar uma subnet?

Para calcularmos uma subnet e também para entender com funciona este cálculo temos de em primeiro lugar levar identificar a classe em que se insere o IP. Ora existem 5 classes, mas apenas 3 são usadas, vamos então ver quais é que são:

  • Network Address Range Class A
    Os desenhadores do esquema de endereços IP definiram que o primeiro bit do primeiro byte da classe A tem que estar sempre off ou seja 0. Significa então que a Classe A tem valores compreendidos entre 0 e 127, inclusive. Ou seja de:
    00000000 = 0 a 01111111 = 127
  • Network Address Range Class B
    Numa classe B foi definido que o primeiro bit do primeiro byte deve estar sempre on ou 1, mas que o segundo bit deve estar sempre off. Portanto teremos valores de 128 a 191.
    10000000 = 128 a 10111111 = 191
  • Network Address Range Class C
    Numa classe C, foi definido que os primeiros 2 bits do primeiro byte devem estar sempre on, mas o terceiro bit deve estar sempre off. Teremos assim valores de 192 a 223.
    11000000 = 192 a 11011111 = 223
  • Existem ainda mais duas classes, a classe D que vai do 224 a 239 que é usada como multicast address e portanto são endereços reservados. E a classe E que vai dos valores 240 a 255 que são usados para propósitos científicos.

Mas ainda existem alguns endereços reservados:

  • 0.0.0.0
  • 1.1.1.1
  • 127.0.0.1
  • 255.255.255.255

Outro caso em que temos endereços reservados é por exemplo, quando temos o endereço 127.2.0.0 e 127.2.255.255 estes dois endereços estão reservados, os únicos endereços que poderiam ser usados são do 127.2.0.1 a 127.2.255.254. Ou seja quando os “nodes” são todos 0 ou quando os “nodes” são todos 1 não se pode usar esses endereços. Na tabela em baixo podem ver quais são os “nodes” de cada classe.

 8 bits8 bits8 bits8 bits
Classe ANetworkNodeNodeNode
Classe BNetworkNetworkNodeNode
Classe CNetworkNetworkNetworkNode

Subnet Masks

Para que o esquema de subnet address funcione é necessário que cada máquina na rede saiba qual a parte do hostnode address irá ser usada como subnet address. E faz isso por designar uma subnet mask a cada máquina. Uma subnet mask tem um valor de 32 bit e que permite ao host quando recebe um pacote IP distinguir qual é a parte de network ID e qual é a parte de host ID. Mas nem todas as redes necessitam de subnets o que significa que usam as subnet mask por defeito e são elas:

 FormatoSubnet Mask
Classe Anetwork.node.node.node255.0.0.0
Classe Bnetwork.network.node.node255.255.0.0
Classe Cnetwork.network.network.node255.255.255.0

Vamos pegar num pequeno exemplo de como se calcula as subnets para um determinado endereço IP da classe C.

Estas são as masks disponíveis para a Classe C.

255.255.255.128/2511111111.11111111.11111111.10000000
255.255.255.192/2611111111.11111111.11111111.11000000
255.255.255.224/2711111111.11111111.11111111.11100000
255.255.255.240/2811111111.11111111.11111111.11110000
255.255.255.248/2911111111.11111111.11111111.11111000
255.255.255.252/3011111111.11111111.11111111.11111100

Começamos então pela Classe C, porque é mais fácil de se entender ao fazermos um cálculo. Usando a maneira mais rápida existem 5 perguntas que devem ser respondidas e quando todas elas forem respondidas temos então o subnetting feito.

Por exemplo no 192.168.10.0 /26

  1. Quantas subnets é possível ter com a subnet masks escolhida?
    Ora a subnet mask é a /26: 11111111.11111111.11111111.110000000 (255.255.255.192)
    Lembrem-se que o endereço 192.168.10.0 pertence à classe C. Na classe C o node address é que interessa, por isso do 11111111.11111111.11111111.110000000 apenas nos interessa o último byte, 11000000.
    Pegando neste valor 11000000, quantos bits é que temos on? Temos 2.
    Quanto é que é 22? É 4, por isso temos 4 subnets.
  2. Quantos hosts temos por subnet?
    Bem pegando novamente no 11000000, quantos bits temos off? Temos 6, portanto: 26 – 2 = 64
    Temos então 62 hosts por cada subnet.
  3. Quais são as subnets válidas?
    Bem para fazermos o cálculo existe uma constante que é o 256. O 11000000 dá o valor de 192 e este valor que vamos precisar para responder á pergunta.
    256 – 192 = 64.
    Começamos do 0 a contar por isso 0, 64, 128 e 192 ou seja 0 + 64 = 64, 64 + 64 = 128, 128 + 64 = 192 e pára no 192 em virtude de ser esse o valor da nossa subnet.
  4. Qual é o broadcast address de cada subnet e quais são os hosts válidos?
    Para respondermos a esta pergunta o quadro que se segue vai ajudar-nos. Primeiro começamos por preencher o campo das subnets. E gira tudo á volta disso, reparem:
    Subnet192.168.10.0192.168.10.64192.168.10.128192.168.10.192
    Primeiro host192.168.10.1192.168.10.65192.168.10.129192.168.10.193
    Último host192.168.10.62192.168.10.126192.168.10.190192.168.10.254
    Broadcast address192.168.10.63192.168.10.127192.168.10.191192.168.10.255

Mas o qual é o objectivo de uma subnet em concreto?

Uma subnet tem como objectivo reduzir o tráfego numa rede, optimizando o desempenho de uma rede e simplificando a sua gestão e de certa forma aumentando a sua segurança.

Ao usarmos subnets estamos a organizar os hosts em grupos lógicos, estamos a dividir uma rede em diversas partes e usamos router’s para conecta-las aumentando assim a segurança. Usando um router podemos também recorrer ás access-list.

O que é uma access-list?

É algo do género:

RouterCisco(config)#access-list 10 deny 172.16.40.0 0.0.0.255
RouterCisco(config)#access-list 10 permit any

E qual é o objectivo?

Bem, ao usarmos access-list ganhamos o controlo sobre o tráfego que passa pela nossa rede, podendo implementar políticas de segurança assim como obter estatísticas básicas do fluxo dos pacotes podendo até mesmo permitir ou proibir que certos pacotes passem pelo router. Podemos assim proteger dispositivos ou redes sensíveis a acessos não autorizados. O exemplo acima é apenas um pequeno exemplo do que poderá ser uma access-list. Como podemos ver é uma lista usada para filtrar o tráfego na rede por examinar o endereço de origem no pacote.

Uma access-list poderá ser usada para filtrar o tráfego de saída, permitindo apenas a saída de pacotes que sejam endereçados a IP’s que nós escolhemos como sendo válidos. Mas estas talvez sejam já opções mais avançadas para quando a nossa rede atinge um tamanho considerável e é necessária uma maior segurança.

Mas uma access-list quando bem usada e implementada é uma ferramenta bastante poderosa.

Switching e VLANs

Switching usando a camada 2 do modelo OSI, consiste no processo de segmentar uma rede usando para isso diversas características dos switches e dessa camada do modelo OSI. Baixa latência, baixo custo, maior velocidade e bridging baseado em ASIC são alguns dos benefícios que podemos usufruir ao usarmos switches na nossa rede. Outra vantagem da utilização de switch’s é que não existe modificação dos pacotes como acontece em router, apenas é lida a frame o que acelera o processo de switching e evita erros, mas esse é um outro assunto á parte.

Com switches também é possível a utilização de um conceito de arquitectura chamada de VLAN – Virtual Local Area Network.

Em termos de segurança o que é que podemos dizer? Bem, numa rede dita normal, qualquer pessoa que se conecte fisicamente á rede consegue ter acesso á rede e aos seus recursos, consegue ligar um network analyzer e consegue verificar o tráfego da rede.

Mas ao usarmos VLAN, criamos diversos broadcast groups, controlando cada porta junto com os recursos disponíveis assim como a cada utilizador.

Por defeito membros numa VLAN não consegue comunicar com uma outra VLAN, no entanto é possível fazer isso. Recorrendo a um router podemos ter comunicação entre diversas VLANS e podemos implementar restrições no que toca a protocolos, endereços MAC e aplicações.

VLAN

Através desta imagem, podemos verificar que os membros de uma VLAN não precisam de estar necessariamente ligados ao mesmo switch. Assim por exemplo os membros da VLAN3 podem sem problemas aceder ao servidor que se encontra ligado a um outro switch e neste caso o membro da VLAN2 apesar de estar ligado ao mesmo switch, não consegue ter acesso ao servidor. A menos que exista alguma permissão da parte do router. Como podemos ver a utilização de VLANs aumenta em muito a segurança de uma rede.

Referências / Links de apoio

Sybex CCNA Cisco Certified Network Associate Study Guide

Publicado na edição 16 (PDF) da Revista PROGRAMAR.