Professor: Macêdo Firmino Disciplina: Sistemas Operacionais de Rede Podemos utilizá-lo um sistema operacional para interligar computadores em uma rede interna. Os orgãos padronizadores da Internet criaram faixas de endereçamento IP exclusivas para redes internas, a fim de prevenir que um conflito de endereço IP posso ocorrer quando um PC interno tente acessar a Internet, por exemplo. Dessa forma, tais endereços IP para redes internas não podem ser registrados, ou seja, nenhum computador na Internet obterá um endereço IP que esteja incluso nesta faixa de IPs livres: 10.0.0.0 – 10.255.255.255 172.16.0.0 – 172.31.255.255 192.168.0.0 – 192.168.255.255 O Compartilhamento da conexão de Internet fornece aos computadores a capacidade de compartilhar uma única conexão para a Internet. Desta forma, o servidor de acesso precisa de duas placas de rede, uma para a rede interna e outra para a rede externa. Também são necessários dois endereços IPs diferentes, um para a rede interna (endereços mostrados anteriormente) e outro para a rede externa (que é fornecido pelo provedor de acesso). O computador com acesso a Internet deve ser configurado para funcionar como Internet gateway. Os outros computadores da rede acessa a Internet indiretamente via o gateway. Os demais computadores da rede utilizam a Internet como se estivessem diretamente conectados. Ou seja, para os usuários o uso da conexão compartilhada é transparente. Aula de hoje descreve este recurso no Ubuntu/Linux. I - Compartilhamento de Conexão com a Internet A conversão de endereços internos e externos é feito através do servidor utilizando o mecanismo de NAT. Como visto anteriormente, na comunicação através de um servidor NAT, este servidor troca os endereços dos clientes pelo seu endereço IP quando envia uma mensagem para a rede externa e desfaz quando recebe as respostas. 1. Configure a sua interface de erro externa. Para isso, obtenha os dados de configuração do seu provedor de Internet; 2. Configure a dua interface de rede interna com um dos endereços das faixas de IPs livres. Por exemplo: 192.168.0.1. 3. Configure o seu firewall para permitir o NAT. modprobe iptable_nat echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE No Linux o NAT é feito pelo iptables, o firewall padrão do sistema, que incorpora a função de compartilhamento através do módulo “iptable nat”. Para ativar o compartilhamento, precisamos apenas carregar o módulo, ativar o roteamento de pacotes e em seguida executar o comando que ativa o compartilhamento propriamente dito. Explicando assim pode parecer difı́cil, mas na prática isso é feito usando apenas 3 comandos (como usuário root ). O “eth1” no terceiro comando indica a placa onde está a conexão com a Internet. Não se esqueça de indicar a interface apropriada ao executar o comando (na dúvida você pode checar a configuração da rede usando o ifconfig). Masquerade é um alvo utilizado também para alterar a origem de um pacote, permitindo que as máquinas da rede interna possam estar acessando a internet. Ele é utilizado nos casos em que não se possui um ip fixo. Ele verifica o endereço ip da interface de saı́da e utiliza ele para alterar o pacote. Após isso o seu Linux já está configurado. Agora os clientes da rede precisarão ser configurados para usar o endereço IP do servidor Linux como gateway e informe o servidor DNS de rede. II - Firewall Muitas empresas têm grandes quantidades de informações confidenciais, segredos comerciais, planos de desenvolvimento de produtos, estratégias de marketing, análises financeiras e etc. A revelação dessas informações para um concorrente poderia ter terrı́veis consequências. No entanto, estas empresas precisam ter acesso a Internet. Em consequência disso, foi criado um dispositivo de centraliza a entrada e a saı́da de dados da empresa, ou seja, quando o tráfego que entra/sai de uma rede é registrado, descartado e/ou retransmitido. A entidade que faz isso é um dispositivo conhecido como firewall. Rede Privada Firewall Internet Figura 1: Localização de um firewall entre a rede administrada e o mundo exterior O firewall é uma combinação de hardware e software que isola a rede interna de uma organização da Internet, permitindo que alguns pacotes passem e bloqueando outros. II.1 - Netfilter O netfilter é um módulo que fornece ao sistema operacional Linux as funções de firewall, NAT e log de utilização de rede de computadores. Para administrar e inspecionar as regras do netfilter é utilizado uma ferramenta chamada iptables. Esta ferramenta esta presente em todas as distribuições Linux atuais. As principais funções do iptables são: Listar as regras de filtragem dos pacotes; Adicionar, remover ou modificar as regras de filtragem dos pacotes; Listar, apagar por regras os contadores das regras de filtragem dos pacotes. Há muitas ferramentas disponı́veis para ajudá-lo a construir um firewall com GUI (Interfaces Gráficas), por exemplo, o Firestarter e o fwbuilder. Na aula de hoje utilizaremos apenas o iptables. O firewall funciona mediante tabelas e regras pré-estabelecidas. São definidas tabelas. Cada tabela contém um número de chains. As chains são as situações possı́veis (por exemplo, entrada, saı́da, retransmissão). Cada chain contém uma lista de regras que irão determinar como um pacote deverá ser tratado (por exemplo, aceito e rejeitado). No Linux as tabelas são: Filter : tabela padrão. Nesta tabela estarão as regras de filtragem e controle dos pacotes. As chains da tabela Filter são: – INPUT : regras responsáveis pelo controle das conexão que chegam com destino à máquina servidora; – OUTPUT : regras responsáveis pelo controle das conexões que saem (são gerados) da máquina servidora; – FORWARD : regras responsáveis pelo controle das conexões que são redirecionadas pela máquina servidora (pacote que atravessa o firewall, oriundo de uma máquina e direcionado a outra); NAT: tabela que contém regras que irão modificar conexões. Regras que gerarão outras conexões através de masquerading, source nat, destination nat, port forwarding. As regras contidas nesta tabela serão verificadas antes da tabela filter. – PREROUTING: consulta os dados que deverão ser modificados antes de serem enviados para a chain. – OUTPUT : consulta os dados gerados localmente e que necessitam ser modificados antes de serem roteados. Este chain somente é consultado por conexões que se originam pela interfaces da máquina firewall ; – POSTROUTING: verificando os dados que precisam ser modificados após as verificações das regras. Mangle: esta tabela ser para modificações especiais no cabeçalho dos pacotes. As regras contidas nas chains desta tabela serão verificadas antes das regras de outras tabelas. Como exemplo de utilização de uma regra na tabela mangle seria a alteração a alteração do TOS (Type of Service) do pacote. Regras são comando passados ao iptables para configurá-lo para o tratamento dos pacotes. Por exemplo, Liberá-los, bloqueá-los ou registrar log da sua passagem. O iptables nos permite criar regras complexas, com várias condicionais para tratamento dos pacotes. As regras do iptables, geralmente, são compostas assim: sudo iptables [tabela] [chain] [opç~ ao] -j [aç~ ao] As opções divididas em: -P : define uma regra padrão; -A : acrescenta uma nova regra às existentes; Liberando acesso acesso de uma determinada rede (192.168.5.0/24) ao servidor de email (pop3 e smtp). iptables -A INPUT -p tcp -m multiport --dport 25,110 -s 192.168.5.0/24 -j ACCEPT Utilizando a tabela nat para realizar um redirecionamento da porta 80 (http) para a porta 3128. -D : apaga uma regra; -L : lista as regras existentes; -F : apaga todas as regras; -I : insere uma nova regra; -h : mostra a ajuda; -R : substitui uma regra; -C : chega as regras existentes; -Z : zera uma regra especifica; -N : cria uma nova regra com um nome; -X : exclui uma regra especı́fica pelo seu nome. As principais ações são: ACCEPT : aceitar, permite a passagem do pacote. DROP : abandonar, não permite a passagem do pacote, descartando-o. Não avisa a origem sobre o ocorrido. REJECT : igual ao DROP, mas avisa a origem sobre o ocorrido (envia pacote icmp unreachable). LOG : cria um log referente à regra, em “/var/log/messages“. II.2 - Exemplos de Regras Vejamos alguns exemplos de regras: Adicionar a tabela filter, na chain INPUT a informação que os dados que entrarem na rede na porta 80 (http) serão bloqueados. iptables -A INPUT -p tcp --dport 80 -j DROP Adicionar a tabela filter, na chain INPUT a informação para liberar acesso a porta 53 (DNS) iptables -A INPUT -p udp --dport 53 -j ACCEPT iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128 Definindo que a conexão que for proveniente do host 200.200.200.200 e que esteja sendo originada na porta 25 (smtp) seja aceita. iptables -A INPUTs 200.200.200.200 -p tcp --sport 25 -j ACCEPT Nesta regra definimos que todas as conexões com destino a portas altas (de 1024 até 65535) sejam bloqueadas. Caso não seja definido a porta de inicial (:1024) ele assumirá como porta inicial a 0, e caso não seja definido a porta final (1024:) será assumido como porta final a 65535. iptables -A INPUT -p tcp --dport 1024:65535 -j DROP Todos os pacotes oriundos de qualquer sub-rede e destinados a qualquer sub-rede deverão ser aceitos. iptables -A FORWARD -j ACCEPT Os pacotes oriundos da sub-rede 10.0.0.0/8 e destinados ao host www.chat.com.br deverão ser descartados. Deverá ser enviado um ICMP avisando à origem. iptables -A FORWARD -s 10.0.0.0/8 -d www.chat.com.br -j REJECT Os pacotes destinados oriundo do host www.orkut.com deverão ser descartados. iptables -A FORWARD -s www.orkut.com. -j DROP Caso tenha uma máquina suspeita com esta regra, todo o tráfego de pacotes TCP oriundos da porta 80 do host 10.0.0.5 e destinados a qualquer lugar deverá ser gravado em log. No caso, ”/var/log/messages”. iptables -A FORWARD -s 10.0.0.5 -p tcp --sport 80 -j LOG Exemplos de regras para bloquear o MSN. iptables -A FORWARD -p tcp --dport 1863 -j REJECT iptables -A FORWARD -d loginnet.passport .com -j REJECT Regra para bloquear uma máquina de acordo com o seu endereço MAC. iptables -A INPUT -m mac --mac-source XX:XX:XX:XX:XX:XX -j DROP As regras são processadas na ordem em que aparecem. Deste modo, se houver conflito entre regras, sempre valerá a primeira. Assim, entre as regras: iptables -A FORWARD -p icmp -j DROP iptables -A FORWARD -p icmp -j ACCEPT Valerá a primeira (DROP). Exercı́cio 1. Pesquisar e implemente um controle sobre os serviços P2P, impedindo o uso desse recurso na sua Intranet. 2. Mostre as regras necessárias para Configurar de modo a bloquear as conexões ICMP, TELNET e FTP de entrada. 3. Permitir as conexões ao serviço SSH de seu servidor e bloquear as demais conexões da sua rede interna. 4. Descreve uma regra que bloquei o site www. 4share.com para um IP (192.168.0.134) da sua rede. 5. Qual a regra para um computador (192.168.0.12) da rede interna possa se comunicar via RDESKTOP (porta 3389).