Segurança em Redes Prof. Rafael R. Obelheiro Semestre: 2009.1 Endereçamento IP, Sub-redes e Roteamento Endereçamento IP Endereços IP possuem 32 bits, o que possibilita 2 32 = 4.294.967.296 endereços Na prática, uma boa parte desse espaço de endereçamento é desperdiçada Um endereço é normalmente representado em base decimal, usando a notação quaternária (dotted-quad) cada um dos quatro bytes que compõem o endereço é representado por um número decimal de 0 a 255, e os números são separados por pontos. Por exemplo, o endereço 10101100 00011100 11000100 11100001 é representado na notação quaternária como 172.28.196.225: Endereço binário: 10101100. 00011100. 11000100. 11100001 Endereço decimal: 172. 28. 196. 225 Um endereço IP normalmente tem duas porções, um endereço de rede e um endereço de host: n bits endereço de rede 32 n bits endereço de host A divisão (quantos bits são usados para rede e quantos são usados para host) depende de cada rede; no total, a soma deve ser sempre 32 Originalmente, o espaço de endereçamento IP foi dividido em cinco classes: classe estrutura do endereço endereços iniciais e finais (binário) repres. decimal A 0nnnnnnn hhhhhhhh hhhhhhhh hhhhhhhh 00000000 00000000 00000000 00000000 0.0.0.0 (7 bits de rede, 24 bits de host) 01111111 11111111 11111111 11111111 127.255.255.255 B 10nnnnnn nnnnnnnn hhhhhhhh hhhhhhhh 10000000 00000000 00000000 00000000 128.0.0.0 (14 bits de rede, 16 bits de host) 10111111 11111111 11111111 11111111 191.255.255.255 C 110nnnnn nnnnnnnn nnnnnnnn hhhhhhhh 11000000 00000000 00000000 00000000 192.0.0.0 (21 bits de rede, 8 bits de host) 11011111 11111111 11111111 11111111 223.255.255.255 D 1110bbbb bbbbbbbb bbbbbbbb bbbbbbbb 11100000 00000000 00000000 00000000 224.0.0.0 (endereços de multicast) 11101111 11111111 11111111 11111111 239.255.255.255 E 1111bbbb bbbbbbbb bbbbbbbb bbbbbbbb 11110000 00000000 00000000 00000000 240.0.0.0 (endereços reservados) 11111111 11111111 11111111 11111111 255.255.255.255 Na estrutura do endereço, n indica bits de rede, h indica bits de host e b indica bits que não são nem de rede nem de host. Os bits iniciais determinam a qual classe pertence cada endereço A divisão de bits entre rede e host determina quantas redes podem existir em cada classe, e quantos hosts podem existir em cada rede 1
Endereçamento IP, Sub-redes e Roteamento 2 Classe Bits iniciais Bits de rede / N o de redes Bits de host / N o de hosts A 0 7 / 128 24 / 16.777.216 B 10 14 / 16.384 16 / 65.536 C 110 21 / 2.097.152 8 / 256 D 1110 multicast E 1111 reservado Exemplos de endereços IP no esquema de classes: O endereço 10.20.30.40 é um classe A com endereço de rede 10 e endereço de host 20.30.40 a rede 10 vai de 10.0.0.0 a 10.255.255.255 (16.777.216 endereços) O endereço 172.28.196.225 é um classe B com endereço de rede 172.28 e endereço de host 196.225 a rede 172.28 vai de 172.28.0.0 a 172.28.255.255 (65.536 endereços) O endereço 192.168.132.240 é um classe C com endereço de rede 192.168.132 e endereço de host 132 a rede 192.168.132 vai de 192.168.132.0 a 192.168.132.255 (256 endereços) Em cada rede, dois endereços de hosts são reservados: endereço de rede endereço inicial (todos os bits de host em 0) endereço de broadcast endereço final (todos os bits de host em 1) Existem também vários blocos de endereços reservados rede 0: rota default (0.0.0.0) rede 10: RFC 1918 rede 127: loopback redes 172.16 a 172.31: RFC 1918 redes 192.168.*: RFC 1918 rede 192.0.2: exemplos Um endereço IP possui uma máscara de rede, que é determinada pela classe do endereço: Para um endereço classe C, a máscara default (ou natural) tem os 24 bits iniciais ligados 255.255.255.0 Para um endereço classe B, a máscara default tem os 16 bits iniciais ligados 255.255.0.0 Para um endereço classe A, a máscara default tem os 8 bits iniciais ligados 255.0.0.0 Os bits iniciais ligados da máscara determinam quais bits pertencem ao endereço de rede: endereço IP AND máscara = endereço de rede onde AND é a operação de conjunção (E lógico).
Endereçamento IP, Sub-redes e Roteamento 3 Sub-redes As classes de endereços possuem uma certa inflexibilidade Muitas redes precisam de uma quantidade de endereços bem menor do que o tamanho da classe classe C com 2 hosts: 0,79% (= 2/254) dos endereços são aproveitados classe B com 256 hosts: 0,39% (= 256/65534) dos endereços são aproveitados Em muitos casos uma mesma organização possui várias redes internas que precisam ser roteadas separadamente A solução para isso foi subdividir a faixa de endereços de uma rede em um número de subredes Em vez de considerar um endereço IP como sendo um endereço de rede e um endereço de host, a porção correspondente ao endereço de host é dividida em um endereço de sub-rede e um endereço de host: n bits endereço de rede 32 n bits endereço de host n bits s bits 32 (n + s) bits endereço de rede endereço de sub-rede endereço de host Os bits correspondentes ao endereço de sub-rede são acrescentados à máscara de rede para formar a máscara de sub-rede ou máscara estendida A quantidade de sub-redes é dada por 2 s, sendo s o número de bits do endereço de subrede De modo genérico, uma rede com máscara de n bits é dividida em 2 s sub-redes com máscara de n + s bits. Exemplos: Uma rede classe C (máscara de 24 bits) pode ser dividida em, por exemplo, 2 sub-redes com máscara de 25 bits (255.255.255.128) 2 = 2 1, 25 = 24 + 1; 4 sub-redes com máscara de 26 bits (255.255.255.192) 4 = 2 2, 26 = 24 + 2; 32 sub-redes com máscara de 29 bits (255.255.255.248) 32 = 2 5, 29 = 24 + 5. Uma rede classe B (máscara de 16 bits) pode ser dividida em, por exemplo, 8 sub-redes com máscara de 19 bits (255.255.224.0) 8 = 2 3, 19 = 16 + 3; 256 sub-redes com máscara de 24 bits (255.255.255.0) 256 = 2 8, 24 = 16 + 8. Por conseqüência, o número de sub-redes tem de ser uma potência de 2 (2, 4, 8, 16,... ) Para um dado bloco, quanto mais sub-redes houver, menos hosts haverá em cada uma As sub-redes só são visíveis dentro da rede que as define; redes externas continuam enxergando o bloco original As razões para usar sub-redes podem ser Topológicas Contornar limitações da rede física tamanho máximo do segmento Ethernet, por exemplo Interligar redes físicas distintas Reduzir ou isolar tráfego se alguns hosts trocam muito tráfego entre si, eles podem ser colocados em uma sub-rede separada para diminuir o impacto sobre os demais hosts, por exemplo
Endereçamento IP, Sub-redes e Roteamento 4 Administrativas Facilitar a administração da rede delegação da responsabilidade sobre cada subrede Refletir a estrutura organizacional cada departamento tem sua própria sub-rede, por exemplo Segregar ou isolar tráfego colocar o departamento financeiro em uma sub-rede separada para dificultar possíveis vazamentos de informação, por exemplo Isolar segmentos ou usuários problemáticos laboratórios de ensino ou pesquisa que podem comprometer a estabilidade da rede, por exemplo CIDR O esquema de endereçamento IP com classes ameaçou esgotar os endereços disponíveis (especialmente da classe B) Além disso, as tabelas de roteamento estavam ficando muito grandes devido à forma como os blocos de endereços eram alocados (seqüencialmente) A solução foi mudar a forma de alocação (que passou a ser hierárquica) e flexibilizar as classes de endereços, que deixaram de ser fixas (CIDR, Classless Inter-Domain Routing) Cada provedor recebe um grande bloco contínuo de endereços, que é subdividido entre seus clientes Permite a agregação de rotas A porção de rede de um endereço IP passa a ser determinada não mais pela sua classe mas pela sua máscara: endereço IP AND máscara = endereço de rede onde AND é a operação de conjunção (E lógico). No CIDR, qualquer máscara pode ser aplicada a qualquer endereço IP Em vez de especificar um bloco de endereços usando o endereço de rede e a máscara na notação quaternária, é possível usar a notação abreviada endereço/prefixo, onde endereço é o endereço de rede e prefixo é o número de bits ligados da máscara. Exemplos: Bloco Faixa de endereços Máscara 192.0.2.0/24 192.0.2.0 192.0.2.255 255.255.255.0 10.0.0.0/8 ou 10/8 10.0.0.0 10.255.255.255 255.0.0.0 172.16.128.0/19 172.16.128.0 172.16.159.255 255.255.224.0 192.168.3.32/28 192.168.3.32 192.168.3.47 255.255.255.240
Endereçamento IP, Sub-redes e Roteamento 5 Caracterizando um bloco CIDR Suponhamos que desejamos caracterizar o bloco CIDR 192.0.2.0/24, ou seja, determinar os parâmetros desse bloco: máscara de rede, endereço de rede, endereço de broadcast e a faixa de endereços válidos. Os passos a serem seguidos para esta caracterização são os seguintes: 1. Exprimir o endereço de rede em binário: 192. 0. 2. 0 11000000. 00000000. 00000010. 00000000 Isso será importante para determinar o endereço de broadcast. 2. Exprimir a máscara de rede em binário. No caso, o /24 nos diz que os 24 bits iniciais são ligados, e os demais desligados. Portanto, a máscara desta rede é dada por: 24 bits ligados 11111111. 11111111. 11111111. 00000000 255. 255. 255. 0 3. Uma vez determinado o endereço de rede, é possível determinar o endereço de broadcast. Para isso, basta pegar o endereço de rede e ligar todos os bits correspondentes ao endereço de host; o endereço resultante é o endereço de broadcast. No exemplo dado, como 24 bits iniciais são usados para o endereço de rede (de acordo com a máscara), sobram os últimos 8 bits para o endereço de host; ligando esses bits, obtemos então o endereço de broadcast: 24 bits de rede 8 bits de host 11000000. 00000000. 00000010. 11111111 192. 0. 2. 255 4. Como o endereço de rede e o endereço de broadcast são reservados, o número de endereços válidos em um bloco é dado por 2 h 2, onde h é o número de bits de host. No exemplo dado, h = 8, e o número de endereços válidos é 2 8 2 = 256 2 = 254 endereços (de 192.0.2.1 até 192.0.2.254). 5. Em resumo, o bloco CIDR 192.0.2.0/24 pode ser caracterizado da seguinte forma: Máscara: 255.255.255.0 Endereço de rede: 192.0.2.0 Endereço de broadcast: 192.0.2.255 Faixa de end. válidos: 192.0.2.1 192.0.2.254 (254 endereços)
Endereçamento IP, Sub-redes e Roteamento 6 Um segundo exemplo é a caracterização do bloco CIDR 172.16.0.0/19: 1. Obtendo o endereço de rede: 2. Obtendo a máscara de rede: 3. Obtendo o endereço de broadcast: 172. 16. 0. 0 10101100. 00010000. 00000000. 00000000 11111111. 11111111. 11100000. 00000000 255. 255. 224. 0 19 bits de rede 13 bits de host 10101100. 00010000. 00011111. 11111111 172. 16. 31. 255 4. Obtendo o número de endereços válidos: h = 13 2 13 2 = 8.192 2 = 8.190 endereços (de 172.16.0.1 a 172.16.31.254). 5. Em resumo: Máscara: 255.255.224.0 Endereço de rede: 172.16.0.0 Endereço de broadcast: 172.16.31.255 Faixa de end. válidos: 172.16.0.1 172.16.31.254 (8.190 endereços)
Endereçamento IP, Sub-redes e Roteamento 7 Dividindo um Bloco de Endereços em Sub-redes A divisão de um bloco de endereços em sub-redes requer os seguintes passos: 1. Determinar o número de bits de sub-rede necessários para o número de sub-redes desejadas; 2. Obter a máscara de sub-rede correspondente; 3. Obter os dados dos blocos correspondentes a cada sub-rede. Esse processo será demonstrado através de um exemplo: dividir a rede 192.168.10.0/24 em quatro sub-redes. 1. Para obter quatro sub-redes, são necessários 2 bits de sub-rede (pois 2 2 = 4). 2. A máscara de sub-rede é obtida somando os 2 bits determinados no item anterior aos 24 bits já existentes na máscara de rede (/24); portanto, a máscara de sub-rede é /26, ou 255.255.255.192: 11111111. 11111111. 11111111. 11000000 255. 255. 255. 192 Os bits em negrito no quarto byte representam os bits do endereço de sub-rede. 3. Os dois bits de sub-rede podem representar quatro valores: 00, 01, 10 e 11. Esses valores correspondem aos endereços da primeira (00), da segunda (01), da terceira (10) e da quarta (11) sub-redes. Para obter os parâmetros dos blocos de endereços correspondentes a cada uma dessas subredes, basta variar os bits de sub-rede de acordo com as combinações possíveis e usar o método de caracterização de um bloco CIDR (pág. 5) para cada um dos endereços de sub-rede (usando a máscara de sub-rede obtida acima). Uma exceção é feita para a obtenção do endereço inicial (de sub-rede) do primeiro bloco, que usa a máscara de rede (sem os bits de sub-rede) para garantir que a primeira sub-rede coincida com o início do bloco original. Então, para a primeira sub-rede: (a) Obtendo o endereço de rede: Endereço: 192.168.10.0 = 11000000 10101000 00001010 00000000 (b) Obtendo o endereço de broadcast: Para a segunda sub-rede: 26 bits de rede+sub-rede 6b de host 11000000. 10101000. 00001010. 00111111 192. 168. 10. 63 (a) A segunda sub-rede utiliza um endereço de rede similar ao da primeira, mas com os bits de sub-rede em 01: Endereço: 11000000 10101000 00001010 01000000 = 192.168.10.64 (b) Obtendo o endereço de broadcast: 26 bits de rede+sub-rede 6b de host 11000000. 10101000. 00001010. 01111111 192. 168. 10. 127
Endereçamento IP, Sub-redes e Roteamento 8 Para a terceira sub-rede: (a) A terceira sub-rede utiliza um endereço de rede similar ao da primeira, mas com os bits de sub-rede em 10: Endereço: 11000000 10101000 00001010 10000000 = 192.168.10.128 (b) Obtendo o endereço de broadcast: Para a quarta sub-rede: 26 bits de rede+sub-rede 6b de host 11000000. 10101000. 00001010. 10111111 192. 168. 10. 191 (a) A quarta sub-rede utiliza um endereço de rede similar ao da primeira, mas com os bits de sub-rede em 11: Endereço: 11000000 10101000 00001010 11000000 = 192.168.10.192 (b) Obtendo o endereço de broadcast: 26 bits de rede+sub-rede 6b de host 11000000. 10101000. 00001010. 11111111 192. 168. 10. 255 Portanto, ao dividirmos o bloco 192.168.10.0/24 em quatro sub-redes, obtemos os seguintes blocos: Máscara Sub-rede End. sub-rede End. broadcast Faixa end. válidos /26 1 (00) 192.168.10.0 192.168.10.63 192.168.10.1 62 255.255.255.192 2 (01) 192.168.10.64 192.168.10.127 192.168.10.65 126 3 (10) 192.168.10.128 192.168.10.191 192.168.10.129 190 4 (11) 192.168.10.192 192.168.10.255 192.168.10.193 254 O número de endereços válidos em cada sub-rede é 2 6 2 = 64 2 = 62 endereços.
Endereçamento IP, Sub-redes e Roteamento 9 Um segundo exemplo é a divisão de 192.224.0.0/15 em 8 sub-redes: 1. Para dividir o bloco em 8 sub-redes, são necessários 3 bits de sub-rede (2 3 = 8). 2. A máscara de sub-rede é /18, ou 255.255.192.0: 11111111. 11111111. 11000000. 00000000 255. 255. 192. 0 3. O endereço da primeira sub-rede é o próprio endereço inicial do bloco (os bits em negrito são os bits de sub-rede): Endereço: 192.224.0.0 = 11000000 111000000 00000000 00000000 O broadcast é calculado em cima do endereço de sub-rede obtido: 18 bits de rede+sub-rede 14 bits de host 11000000. 11100000. 00111111. 11111111 192. 224. 63. 255 Repetindo o procedimento para as outras 7 sub-redes, chegamos aos seguintes blocos: Máscara Sub-rede End. sub-rede End. broadcast Faixa end. válidos /18 1 (000) 192.224.0.0 192.224.63.255 192.224.0.1 192.224.63.254 255.255.192.0 2 (001) 192.224.64.0 192.224.127.255 192.224.64.1 192.224.127.254 3 (010) 192.224.128.0 192.224.191.255 192.224.128.1 192.224.191.254 4 (011) 192.224.192.0 192.224.255.255 192.224.192.1 192.224.255.254 5 (100) 192.225.0.0 192.225.63.255 192.225.0.1 192.225.63.254 6 (101) 192.225.64.0 192.225.127.255 192.225.64.1 192.225.127.254 7 (110) 192.225.128.0 192.225.191.255 192.225.128.1 192.225.191.254 8 (111) 192.225.192.0 192.225.255.255 192.225.192.1 192.225.255.254 O número de endereços válidos em cada sub-rede é 2 14 2 = 16.384 2 = 16.382 endereços.
Endereçamento IP, Sub-redes e Roteamento 10 Roteamento IP Cada nó possui uma tabela de roteamento que é consultada a cada vez que um datagrama precisa ser enviado Quando a camada IP recebe um datagrama de uma interface de rede, ela verifica se o endereço de destino é um dos seus próprios endereços ou um endereço de broadcast Se for, o datagrama é entregue ao módulo correspondente ao protocolo indicado no cabeçalho IP (TCP, UDP, ICMP,... ) Se não for: 1. Se o nó age como um roteador, o datagrama é encaminhado (i.e., tratado como um datagrama a ser transmitido para o destino) 2. Caso contrário, o datagrama é descartado (silenciosamente) Cada entrada na tabela de roteamento contém as seguintes informações: Endereço IP de destino: pode ser um endereço de host ou um endereço de rede, com uma máscara associada; Endereço IP do próximo hop (salto): o próximo hop é para onde pacotes endereçados ao destino devem ser enviados; Flags: indicam, entre outras coisas, se o endereço de destino refere-se a um host ou uma rede, e se o endereço de próximo hop refere-se a um roteador ou a uma rede diretamente conectada; Interface de saída: por qual interface de rede os datagramas para este destino devem ser transmitidos. A tabela de roteamento não tem rotas completas para todos os destinos, só o endereço do roteador mais próximo de cada destino. O roteamento procede da seguinte forma: 1. Se existir uma rota para o host de destino, o datagrama é enviado para o roteador no próximo hop ou para a rede localmente conectada, dependendo do valor das flags caso típico de enlaces ponto a ponto 2. Se existir uma rota para a rede de destino, o datagrama é enviado para o roteador no próximo hop ou para a rede localmente conectada, dependendo do valor das flags caso típico de enlaces multiponto, como Ethernet Neste caso, a máscara de sub-rede entra em consideração. 3. Se existir uma rota default, o datagrama é enviado para o roteador indicado. 4. Caso contrário, o datagrama é descartado, e uma mensagem ICMP indicando o erro é normalmente enviada ao endereço IP de origem.
Endereçamento IP, Sub-redes e Roteamento 11 Seja a rede mostrada na figura abaixo: Exemplos de Tabelas de Rotas Rede 172.18.224.0/20 Internet Ethernet Wi Fi 172.18.226.0/26 172.18.225.128/26 srv1 225.130 226.1 rot2 226.3 226.6 mov1 mov2 est1 225.129 rot1 224.193 226.9 mov3 225.140 224.194 est2 225.141 GigEthernet 172.18.224.192/26 Ethernet 172.18.225.0/26 srv3 225.20 224.195 rot3 227.65 Ethernet 172.18.227.64/26 224.196 rot4 225.1 srv4 225.40 227.95 227.70 227.71 227.72 srv5 225.60 prt1 est3 est4 est5 A tabela de rotas para a estação est1 é a seguinte: Endereço de destino Próximo salto Interface 172.18.225.128/26 172.18.225.140 eth0 default 172.18.225.129 eth0 A primeira rota é para a sub-rede local, diretamente conectada através de um enlace Ethernet; por convenção, o endereço do gateway é o endereço da própria est1 nesta sub-rede. A interface Ethernet do host é representada, no último campo, por eth0. A segunda rota é a rota default: quando nenhuma rota mais específica for encontrada, os datagramas devem ser enviados (pela interface eth0) para o roteador rot1 (172.18.225.129), que se encarregará de fazer com o que eles cheguem até seu destino. ATENÇÃO: a interface contida na tabela de rotas é a interface de saída da rota (i.e., a interface por onde os pacotes para o destino especificado são transmitidos), e não a interface de entrada do roteador usado como gateway (mesmo porque uma estação não tem como saber em qual interface do roteador está conectada).
Endereçamento IP, Sub-redes e Roteamento 12 A tabela de rotas para o roteador rot1 é a seguinte: Endereço de destino Próximo salto Interface 172.18.225.128/26 172.18.225.129 eth3 172.18.224.192/26 172.18.224.194 eth2 172.18.227.64/26 172.18.224.195 eth2 172.18.225.0/26 172.18.224.196 eth2 default 172.18.224.193 eth2 A primeira e a segunda rotas são para as sub-redes localmente conectadas. É importante notar que o endereço de próximo hop nos dois casos é o endereço da interface do próprio rot1 em cada uma dessas sub-redes, e que cada rota usa uma interface de saída diferente. A terceira e a quarta rotas são rotas para sub-redes acessíveis por outros roteadores. É interessante observar que, neste caso, a sub-rede 172.18.226.0/26 (rede Wi-Fi) não precisa de uma rota específica, pois o roteador que dá acesso a ela é o mesmo da rota default (quinta rota na tabela). Para atribuição das interfaces do roteador, usou-se a seguinte convenção: eth0 eth3 eth1 eth2
Endereçamento IP, Sub-redes e Roteamento 13 NAT A escassez de endereços IP levou ao desenvolvimento de um mecanismo chamado NAT (Network Address Translation) A premissa básica do NAT é que hosts não precisam ter endereços públicos, eles podem ter endereços privados Endereços privados não precisam ser únicos na rede como um todo, mas apenas na rede local A RFC 1918 define as seguintes redes para atribuição de endereços privados: 10/8, 172.16/19 e 192.168/16 Endereços privados podem ser livremente alocados pelo administrador de uma determinada rede Quando um host com endereço privado precisa se comunicar com o exterior, ele faz isso através de um NAT box Internet 200.9.4.195 rot3 227.1 rot3 atua como NAT box, traduzindo os endereços da rede interna para 200.9.4.195 227.95 227.70 227.71 227.72 prt1 est3 est4 est5 Rede privada 172.18.227.0/24 O NAT box possui um endereço IP público (geralmente chamado IP válido), que é único na Internet e alocado da forma usual O NAT box realiza a tradução entre o endereço válido e os endereços privados, modificando o cabeçalho dos pacotes na transmissão e na recepção Externamente, os pacotes originados pelo host com endereço privado têm como endereço IP de origem o IP válido do NAT box Para saber qual endereço privado usar, ele mantém uma tabela que associa os hosts internos aos endereços externos que eles acessaram Dificuldades: Em geral, não é possível estabelecer conexões de fora para dentro de uma rede com NAT Diversos protocolos de camadas superiores (transporte ou aplicação) carregam o endereço IP do host no seu conteúdo, o que causa problemas em muitas aplicações