Você está na página 1de 9

Captulo 7.

Firewalls
A segurana da informao comumente encarada como um processo e no como um produto. Entretanto, implementaes de segurana padronizadas geralmente utilizam alguma forma de mecanismo dedicado a controlar os privilgios de acesso e a restringir recursos de rede a usurios que so autorizados, identificveis e rastreveis. O Red Hat Enterprise Linux inclui muitas ferramentas poderosas para auxiliar administradores e engenheiros de segurana em questes de controle de acesso em nvel de rede. Juntamente s solues VPN, como CIPE ou IPSec (abordados no Captulo 6), os firewalls so um dos componentes centrais da implementao de segurana na rede. Diversos fabricantes comercializam solues de firewall para suprir todos os nichos do mercado: de usurios domsticos protegendo um PC at solues de centro de dados para proteger informaes corporativas vitais. Firewalls podem ser solues de hardware ligados intermitentemente, como as aplicaes de firewall da Cisco, Nokia e Sonicwall. Tambm h solues de software de firewall proprietrias desenvolvidas para os mercados domstico e corporativo por fabricantes como Checkpoint, McAfee e Symantec. Alm das diferenas entre hardware e software de firewall, tambm h diferenas na maneira como os firewalls funcionam, que separam uma soluo da outra. A Tabela 7-1 detalha trs tipos comuns de firewalls e como eles funcionam: Mtodo Descrio NAT Traduo do Endereo da Rede (Network Address Translation, NAT) insere subredes IP internas por trs de um ou um pequeno grupo de endereos IP pblicos, mascarando todos os pedidos para uma fonte ao invs de vrias. Vantagens Pode ser configurado transparentemente para mquinas em uma LAN A proteo de muitas mquinas e servios por trs de um ou mais endereos IP externos simplifica tarefas de administrao A restrio de acesso do usurio de e para a LAN pode ser configurada abrindo e fechando portas no firewall/gateway da NAT Desvantagens No pode evitar atividades maldosas uma vez que usurios se conectam a um servio fora do firewall

Filtro de Pacot es

Um firewall de filtragem de pacotes l cada pacote de dados que passa por dentro e por fora de uma LAN. Pode ler e processar pacotes pela informao do cabealho e filtrar o pacote baseado em conjuntos de regras

Personalizvel atravs da funcionalidade frontend iptables No requer nenhuma personalizao no lado do cliente, j que todas as atividades da rede so filtradas no nvel do roteador ao invs do nvel da

No pode filtrar pacotes para contedo similar a firewalls de proxy Processa pacotes na camada do protocolo, mas no pode filtrar pacotes numa camada de aplicao

Mtodo Descrio programveis implementadas pelo administrador do firewall. O kernel do Linux tem a funcionalidade embutida de filtragem de pacotes atravs do subsistema Netfilter do kernel.

Vantagens aplicao J que os pacotes no so transmitidos atravs de um proxy, o desempenho da rede mais rpido devido conexo direta do cliente mquina remota

Desvantagens Arquiteturas de rede complexas podem fazer com que o estabelecimento de regras de filtragem de pacotes se torne difcil, especialmente se for usado com omascaramento do IP ou sub-redes locais e redes DMZ

Proxy

Firewalls de proxy filtram todos os pedidos de um determinado protocolo ou tipo dos clientes LAN para uma mquina proxy, que ento faz estes pedidos Internet representando o cliente local. Uma mquina proxy atua como um buffer entre usurios remotos maldosos e as mquinas dos clientes internos da rede.

D aos administradores o controle de quais aplicaes e protocolos funcionam fora da LAN Alguns servidores proxy podem armazenar dados frequentemente acessados no cache localmente, ao invs de ter que usar a conexo Internet para solicit-los, o que conveniente para reduzir o consumo desnecessrio de banda Os servios proxy podem ser registrados e monitorados de perto, permitindo um controle mais restrito sobre a utilizao de recursos na rede

Proxies so frequentemente especficos s aplicaes (HTTP, Telnet, etc.) ou restritos a protocolos (a maioria dos proxies funcionam com servios conectados por TCP, somente) Servios de aplicao no podem rodar por trs de um proxy, portanto seus servidores de aplicaes devem usar uma forma separada de segurana em rede Proxies podem se tornar um gargalo na rede, j que todos os pedidos e transmisses passam atravs de uma mesma fonte ao invs de passar diretamente do cliente para um servio remoto

Tabela 7-1. Tipos de Firewall

7.1. Netfilter e iptables


O kernel do Linux apresenta um sub-sistema de rede poderoso chamado Netfilter. O sub-sistema Netfilter oferece filtragem de pacote de estado (que guarda o estado das conexes inciadas pelos clientes) ou sem estado/'stateless' (na qual cada pacote analisado individualmente, sem levar em conta pacotes anteriores trocados na mesma conexo), assim como NAT e servios de mascaramento de IP. O Netfilter tambm tem a habilidade de danificar as informaes do

cabealho para roteamento avanado e gerenciamento do estado de conexo. O Netfilter controlado atravs da funcionalidade iptables.

7.1.1. Viso geral do iptables


O poder e flexibilidade do Netfilter implementado atravs da interface do iptables. Esta ferramenta de linha de comando similar em sintaxe ao seu predecessor, o ipchains. No entanto, iptables usa o sub-sistema do Netfilter para melhorar a conexo, inspeo e processamento de rede; enquanto o ipchains usava conjuntos de regras complexas para filtrar localidades de fonte e destino, assim como portas de conexo para ambos. O iptables inclui registro avanado, aes pr e ps-roteamento, traduo do endereo de rede e encaminhamento de porta; tudo em apenas uma interface de linha de comando. Esta seo oferece uma viso geral do iptables. Para informaes mais detalhadas sobre o iptables, consulte o Guia de Referncia do Red Hat Enterprise Linux.

7.2. Usando o iptables


O primeiro passo para usar o iptables inici-lo. Isto pode ser feito com o comando: service iptables start

Ateno

Os servios ip6tables devem ser desligados para usar o servio iptables com os seguintes comandos: service ip6tables stop chkconfig ip6tables off

Para fazer com que o iptables inicie por default sempre que a mquina for inicializada, voc deve alterar o status do nvel de execuo (runlevel) do servio usando chkconfig. chkconfig --level 345 iptables on A sintaxe do iptables separada em camadas. A camada principal a corrente (chain). Uma corrente especifica o estado no qual um pacote manipulado. O uso o seguinte: iptables -A chain -j target O -A acrescenta uma regra no fim de um conjunto de regras existente. A corrente o nome da corrente para uma regra. As trs correntes embutidas do iptables (ou seja, as correntes que afetam todos os pacotes que trafegam pela rede) so INPUT, OUTPUT e FORWARD. Estas correntes so permanentes e no podem ser apagadas. A opo -j target(alvo) especifica a localidade no conjunto de regras do iptables onde essa regra especfica deve pular. Alguns alvos embutidos so ACCEPT, DROP e REJECT.

Correntes novas (tambm chamadas de correntes definidas pelo usurio) podem ser criadas usando a opo -N. Criar uma corrente nova til para personalizar ou elaborar regras.

7.2.1. Normas Bsicas de Firewall


Estabelecer normas bsicas de firewall a base para criar outras regras detalhadas definidas pelo usurio. O iptables usa normas (-P) para criar regras default. Administradores com foco em segurana geralmente escolhem derrubar todos os pacotes como uma norma e s permitem pacotes especficos, analisando-os caso-a-caso. As seguintes regras bloqueiam todos os pacotes entrando e saindo de uma porta de comunicao (gateway) de rede: iptables -P INPUT DROP iptables -P OUTPUT DROP Adicionalmente, recomendado que qualquer pacote encaminhado trfego de rede roteado do firewall para seu ndulo de destino seja negado tambm, para restringir os clientes internos da exposio inadvertida Internet. Para fazer isso, use a seguinte regra: iptables -P FORWARD DROP Aps definir as normas de correntes, voc pode criar novas regras para a sua rede e seus requisitos de segurana em particular. As seguintes sees descrevem algumas regras que voc talvez implemente enquanto constri seu firewall iptables.

7.2.2. Salvando e Restaurando Regras do iptables


As regras de firewall so vlidas somente enquanto o computador estiver ligado. Portanto, se o sistema for reinicializado, as regras sero automaticamente eliminadas e restauradas. Para salvar as regras de modo que elas sejam carregadas posteriormente, use o seguinte comando: /sbin/service iptables save As regras so armazenadas no arquivo /etc/sysconfig/iptables e so aplicadas sempre que o servio iniciado, reiniciado ou quando a mquina reinicializada.

7.3. Filtragem Comum do iptables


Manter atacantes remotos fora de uma LAN um aspecto importante da segurana de rede, seno o mais importante. A integridade de uma LAN deve ser protegida de usurios remotos maldosos, atravs do uso de regras rgidas de firewall. Entretanto, com uma norma default definida para bloquear todos os pacotes entrando, saindo e encaminhados, impossvel que o firewall/porta de comunicao (gateway) e usurios internos da LAN comuniquem-se entre si ou com recursos externos. Para permitir a usurios executar funes relacionadas rede e a usar aplicaes de rede, os administradores devem abrir certas portas para a comunicao. Por exemplo: para permitir o acesso porta 80 pelo firewall, adicione a seguinte regra: iptables -A INPUT -p tcp -m tcp --sport 80 -j ACCEPT iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT Isto permite a navegao Web normal atravs de sites que comunicam atravs da porta 80. Para permitir o acesso a sites seguros (como https://www.example.com/), voc deve abrir a porta 443 tambm.

iptables -A INPUT -p tcp -m tcp --sport 443 -j ACCEPT iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

Importante

Ao criar um conjunto de regras do iptables, crucial lembrar que a ordem importante. Por exemplo: se uma corrente especifica que todos os pacotes da sub-rede local 192.168.100.0/24 so derrubados e uma outra corrente adicionada ( -A) para permitir pacotes do 192.168.100.13 (que est dentro da sub-rede restrita derrubada), ento a regra adicionada ignorada. Voc deve definir uma regra para permitir 192.168.100.13 primeiro, e ento definir uma regra para derrubar na sub-rede. Para inserir uma regra arbitrariamente num conjunto de regras existentes, use -I, seguido pela corrente na qual deseja inserir a regra e o nmero da regra (1,2,3,...,n) onde voc deseja que a regra resida. Por exemplo: iptables -I INPUT 1 -i lo -p all -j ACCEPT A regra inserida como a primeira no conjunto INPUT para permitir o trfego do dispositivo loopback local. Algumas vezes voc precisa de acesso remoto LAN de fora dela. Servios seguros, como SSH, podem ser usados para conexo remota criptografada aos servios da LAN. Para administradores com recursos baseados em PPP (tais como bancos de modem ou contas ISP volumosas), o acesso discado pode ser usado para circundar as barreiras do firewall seguramente, j que conexes via modem ficam tipicamente por trs de um firewall/gateway por serem conexes diretas. Entretanto, casos especiais podem ser elaborados para usurios remotos com conexes de banda larga. Voc pode configurar o iptables para aceitar conexes de clientes SSH remotos. Por exemplo: para permitir o acesso SSH remoto, as seguintes regras podem ser usadas: iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A OUTPUT -p udp --sport 22 -j ACCEPT H outros servios para os quais voc talvez precise definir regras. Consulte o Guia de Referncia do Red Hat Enterprise Linux para informaes detalhadas sobre o iptables e suas vrias opes. Estas regras permitem o acesso de entrada e sada para um nico sistema, como um PC conectado diretamente Internet ou firewall/porta de comunicao (gateway). No entanto, no permitem que os ndulos por trs do firewall/porta de comunicao acessem estes servios. Para permitir o acesso LAN a estes servios, voc pode usar o NAT com regras de filtragem do iptables.

7.4. Regras FORWARD e NAT


A maioria das empresas designam um nmero limitado de endereos IP publicamente roteveis de seus ISPs. Devido essa permisso limitada, os administradores devem encontrar maneiras criativas de compartilhar o acesso aos servios de Internet sem dar endereos IP limitados para cada ndulo da LAN. Usar um endereo IP privado a maneira comum de permitir que todos os

ndulos de uma LAN acessem apropriadamente servios de rede internos e externos. Roteadores de borda (como firewalls) podem receber transmisses de entrada da Internet e rotear os pacotes para o ndulo pretendido na LAN. Ao mesmo tempo, o firewall/portas de comunicao (gateways) tambm podem rotear pedidos de sada de um ndulo da LAN para o servio remoto da Internet. Esse encaminhamento de trfego de rede pode se tornar perigoso s vezes, especialmente com a disponibilidade de ferramentas de cracking modernas que podem espionar endereos IP internos e fazer com que a mquina remota do atacante atue como um ndulo em sua LAN. Para evitar isso, o iptables oferece normas de roteamento e encaminhamento que podem ser implementadas para evitar o uso indevido dos recursos de rede. A norma FORWARD permite a um administrador controlar onde os pacotes podem ser roteados em uma LAN. Por exemplo: para permitir o encaminhamento para a LAN inteira (assumindo que o firewall/porta de comunicao tenha um endereo IP interno na eth 1), as seguintes regras podem ser definidas: iptables -A FORWARD -i eth1 -j ACCEPT iptables -A FORWARD -o eth1 -j ACCEPT Essa regra da acesso para a rede interna aos sistemas por trs do firewall/porta de comunicao. A porta de comuncao roteia os pacotes de um ndulo da LAN para o seu ndulo pretendido, passando todos os pacotes atravs de seu dispositivo eth1.

Nota

Por default, a norma IPV4 nos kernels do Red Hat Enterprise Linux desabilita o suporte para encaminhamento do IP, o que evita que caixas rodando o Red Hat Enterprise Linux funcionem como roteadores de borda dedicados. Para habilitar o encaminhamento do IP, execute o seguinte comando: sysctl -w net.ipv4.ip_forward=1 Se este comando for submetido em uma janela shell, a configurao no lembrada aps uma reinicializao da mquina. Voc pode definir o encaminhamento permanentemente, editando o arquivo /etc/sysctl.conf. Encontre e edite a linha a seguir, substituindo 0 por 1: net.ipv4.ip_forward = 0 Execute o seguinte comando para ativar a alterao do arquivo sysctl.conf: sysctl -p /etc/sysctl.conf

Aceitar pacotes encaminhados atravs do dispositivo IP interno do firewall permite que os ndulos da LAN comuniquem-se entre si; mas no permite que comuniquem-se externamente com a Internet. Para permitir que ndulos da LAN com endereos IP privados comuniquem-se com redes pblicas externas, configure o firewall com o mascaramento do IP, que mascara pedidos de ndulos da LAN com endereos IP do dispositivo externo do firewall (neste caso, eth0):

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE A regra usa a tabela de pacotes coincidentes da NAT (-t nat) e especifica a corrente POSTROUTING embutida para a NAT (-A POSTROUTING) no dispositivo de rede externa do firewall (-o eth0). O POSTROUTING (ps-roteamento) permite que os pacotes sejam alterados conforme deixam o dispositivo externo do firewall. O alvo -j MASQUERADE especificado para mascarar o endereo IP privado de um ndulo com o endereo IP externo do firewall/porta de comunicao. Se voc tem um servidor em sua rede interna que deseja disponibilizar externamente, pode usar o alvo -j DNAT da corrente PREROUTING na NAT para especificar um endereo IP e porta de destino para onde encaminhar os pacotes de entrada requisitando uma conexo. Por exemplo: se voc deseja encaminhar os pedidos HTTP de entrada para seu servidor Servidor HTTP Apache dedicado para 172.31.0.23, submeta o seguinte comando:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT \ --to 172.31.0.23:80

Esta regra especifica que a tabela NAT usa a corrente PREROUTING embutida para encaminhar pacotes HTTP de entrada exclusivamente para o endereo IP 172.31.0.23 listado.

Nota

Se voc tem uma norma default DROP na sua corrente FORWARD, deve adicionar uma regra para permitir o encaminhamento de pedidos HTTP de entrada para possibilitar o roteamento do destino da NAT. Para fazer isso, submeta o seguinte comando:
iptables -A FORWARD -i eth0 -p tcp --dport 80 -d 172.31.0.23 -j ACCEPT

Esta regra permite o encaminhamento de pedidos de entrada HTTP do firewall para seu destino pretendido no Servidor HTTP Apache por trs do firewall.

7.4.1. DMZs e iptables


As regras do iptables tambm podem definidas para rotear trfego para determinadas mquinas, como um servidor dedicado HTTP ou FTP, numa zona desmilitarizada (DMZ) uma sub-rede local especial dedicada a prover servios num meio pblico como a Internet. Por exemplo: para definir uma regra para rotear os pedidos HTTP externos para um servidor HTTP dedicado no endereo IP 10.0.4.2 (fora do intervalo 192.168.1.0/24 da LAN), a traduo de endereo de rede (NAT) evoca uma tabela PREROUTING para encaminhar os pacotes ao destino apropriado: iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT \ --to-destination 10.0.4.2:80 Com este comando, todas as conexes HTTP para a porta 80 de fora da LAN so roteadas ao servidor HTTP em uma rede separada do resto da rede interna. Esta forma de segmentao de rede pode ser mais segura que permitir conexes HTTP para uma mquina na rede. Se o servidor HTTP estiver configurado para aceitar conexes seguras, ento a porta 443 deve ser encaminhada tambm.

7.5. Vrus e Endereos IP Espionados (spoofed)


Outras regras elaboradas podem ser criadas para controlar o acesso a sub-redes especficas, ou at a ndulos especficos, dentro de uma LAN. Voc tambm pode restringir que determinados servios dbios, como trojans, vermes, e outros vrus de clientes/servidor, contatem seu servidor. Por exemplo: h alguns trojans que scaneam redes para servios nas portas de 31337 a 31340 (chamadas portas de elite na terminologia dos crackers). Como no h servios legtimos que comunicam atravs destas portas fora do padro, bloque-los pode diminuir efetivamente as chances de ndulos potencialmente infectados em sua rede se comunicarem independentemente com seus servidores mestres remotos. iptables -A OUTPUT -o eth0 -p tcp --dport 31337 --sport 31337 -j DROP iptables -A FORWARD -o eth0 -p tcp --dport 31337 --sport 31337 -j DROP Voc tambm pode bloquear as conexes externas que tentam espionar intervalos de endereos IP privados a fim de infiltrarem em sua LAN. Por exemplo: se uma LAN usa o intervalo 192.168.1.0/24, uma regra pode determinar que o dispositivo de rede que faz a interface com a Internet (eth0, por exemplo) derrube quaisquer pacotes parta este dispositivo com um endereo do intervalo de IP de sua LAN. Como norma default, recomendado rejeitar pacotes encaminhados, portanto qualquer outro endereo IP espionado ao dispositivo que faz a interface externa (eth0) rejeitado automaticamente. iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -j DROP

Nota

H uma distino entre DROP (derrubar) e REJECT (rejeitar) um alvo quando estamos lidando com regras adicionais. REJECT um alvo nega acesso e retorna um erroconnection refused (conexo negada) para usurios que tentarem se conectar ao servio. A ao DROP (derrubar) um alvo, como o nome sugere, derruba os pacotes sem nenhum aviso. Administradores podem usar sua prpria prudncia ao lidar com estes alvos; entretanto, para evitar a confuso do usurio e tentativas para continuar conectando, a REJECT alvo recomendada.

7.6. iptables e Registro de Conexo


O iptables inclui um mdulo que permite aos administradores inspecionar e restringir conexes a servios disponveis numa rede interna, usando um mtodo chamado registro de conexo(connection tracking). O registro de conexo armazena as conexes numa tabela, que permite aos administradores permitir ou negar acesso baseado nos seguintes estados de conexo:
NEW

(nova) Um pacote requisitando uma nova conexo, como um pedido HTTP. (estabelecida) Um pacote que parte de uma conexo existente.

ESTABLISHED

(relacionado) Um pacote solicitando uma nova conexo, mas que parte de uma conexo existente, como conexes FTP passivas, nas quais a porta de conexo 20, mas a porta de transferncia pode ser qualquer uma (de 1024 para cima) no usada.
RELATED

(invlido) Um pacote que no faz parte de nenhuma das conexes da tabela de registro das conexes.
INVALID

Voc pode usar a funcionalidade de estado do registro de conexes do iptables com qualquer protocolo de rede, mesmo que o prprio protocolo seja sem estado/'stateless' (como o UDP). O exemplo a seguir mostra uma regra que usa o registro de conexo para encaminhar somente os pacotes associados a uma conexo estabelecida: iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ALLOW

Você também pode gostar