(M)  s i s t e m a   o p e r a c i o n a l   m a g n u x   l i n u x ~/ · documentação · suporte · sobre

  Página seguinte Página anterior Índice

337. FIREWALLING

337.1 Software e Leitura

É recomendada a leitura do COMO FAZER COMO FAZER Firewall.

Ele descreverá como obter o programa ipfwadm, caso ele ainda não esteja disponível. Existem outras duas ferramentas que podem ser utilizadas, mas não fiz nenhum progresso até tentar o ipfwadm. Ele é bom, além de se poder visualizar exatamente o que ele está fazendo.

337.2 Verificações preliminares

Caso o kernel esteja compilado com as opções IP-forwarding e masquerading, então é desejável que a proteção esteja em seu estado padrão (aceitando) através do comando:

ipfwadm -I -l ipfwadm -O -l ipfwadm -F -l 

Isso mostra respectivamente, "as regras que afetam o " tráfego que entra, sai ou reenviado "pelo firewall". O parâmetro "-l" significa "listar".

Caso se tenha compilado com a opção de contabilização pode ser utilizando ainda o comando:

ipfwadm -A -l 

Neste caso pode-se verificar que não existem regras definidas e que o padrão indica que todos os pacotes transitados serão aceitos. Pode-se retornar para o modo normal de operação a qualquer momento através dos comandos:

ipfwadm -I -f
ipfwadm -O -f
ipfwadm -F -f 

O parâmetro "-f" significa "atualizar".

337.3 Regra padrão

Caso se deseje evitar qualquer tráfego externo em relação à rede interna, pode-se informar uma única regra (padrão) onde o firewall deve ignorar qualquer pacote vindo da rede interna destinado ao mundo exterior. As regras podem ser colocadas (nesta ordem) no arquivo /etc/rc.d/rc.firewall e executadas pelo /etc/rc.d/rc.local durante a inicialização do sistema.

ipfwadm -I -a reject -S 192.168.2.0/255.255.255.128 -D 0.0.0.0/0.0.0.0 

O parâmetro "-S" indica o endereço e a máscara da origem do pacote. O parâmetro "-D" define o endereço e a máscara do destino do pacote.

Este formato é denominado longo. O Ipfwadm reconhece nomes de redes e algumas abreviações comuns. Por favor verifique as páginas de manual on-line para maiores informações.

É possivelmente mais conveniente e óbvio colocar algumas ou todas estas regras somente na metade de saída do firewall usando "-O" ao invés de "-I", porém para tornar os exemplos mais claros, apresentamos aqui as regras no seu formato completo.

337.4 Regras por endereço

Antes da regra padrão, há que se colocar algumas regras que servem como exceções para esta recusa geral de serviços externos para clientes internos.

Deve-se tratar o endereço da máquinas de firewall de forma especial na rede interna. No nosso exemplo é a máquina de endereço final igual a .100 . Vamos interromper o acesso de pessoas ao firewall, a não ser que elas tenham permissão especial, porém uma vez que elas tenham acesso, terão permissão de se comunicar com o mundo.

ipfwadm -I -i accept -S 192.168.2.100/255.255.255.255 \
 -D 0.0.0.0/0.0.0.0 

Pode-se desejar ainda que os clientes internos estejam capacitados a falar com firewall. Talvez para eles possam persuadi-lo a deixá-los sair.

ipfwadm -I -i accept -S 192.168.2.0/255.255.255.128 \
 -D 192.168.2.100/255.255.255.255 

Neste ponto, pode-se verificar que a rede admite clientes de fora do firewall, utilizando por exemplo telnet, mas não se pode sair da rede local. Isto significa que é possível somente fazer o primeiro contato, mas os clientes externos não podem receber qualquer linha de comando. É possível entrar em todos os caminhos ao usar o firewall como um posto de verificação. Tente executar o comando rlogin e ping e verifique como o tcpdump opera com uma ou com a outra placa.

337.5 Regras por protocolo

Aqui continuamos a relatar as regras protocolo a protocolo. Neste caso queremos permitir que "pings" externos possam receber o eco do comando, por exemplo. Neste caso devemos inserir a seguinte regra:

ipfwadm -I -i accept -P icmp -S 192.168.2.0/255.255.255.128 \
 -D 0.0.0.0/0.0.0.0 

O parâmetro "-P icmp" funciona no protocolo especificado magicamente.

Até que seja instalado um proxy ftp, queremos permitir ainda chamadas ftp em portas específicas. A seguinte regra permite que as portas 20, 21 e 115 sejam acessadas por máquinas externas.

ipfwadm -I -i accept -P tcp -S 192.168.2.0/255.255.255.128 \
 -D 0.0.0.0/0.0.0.0 20 21 115 

Não foi possível conseguir com que o servidor de correio sendmail funcionasse com clientes locais sem um servidor de nomes. Melhor que configurar um servidor de nomes é configurá-lo no firewall, basta apenas aceitar através do firewall as solicitações do serviço de domínio de tcp destinadas ao servidor de nomes mais próximo e colocar seu endereço no arquivo /etc/resolv.conf dos clientes ("nameserver 123.456.789.31" em uma linha separada).

ipfwadm -I -i accept -P tcp -S 192.168.2.0/255.255.255.128 \
 -D 123.456.789.31/255.255.255.255 54 

Pode-se descobrir qual o número da porta e o protocolo requisitados por um serviço utilizando o tcpdump. Para tanto deve-se iniciar o serviço com o comando ftp ou telnet ou qualquer outro a partir de uma máquina interna e após pesquisá-lo nas portas de entrada e saída do firewall com o utilitário tcpdump:

tcpdump -i eth1 -e host cliente04 

por exemplo. O arquivo /etc/services é uma outra fonte importante de informações nestes casos. Para permitir o uso de telnet e ftp de DENTRO para fora do firewall, é necessário permitir que os clientes locais acessem externamente uma porta específico. Entendo porque isto é necessário para o protocolo ftp - é o servidor que estabelece o fluxo de dados - mas não estou certo porque isso se faz necessário também para o programa telnet.

ipfwadm -I -i accept -P tcp -S 192.168.2.0/255.255.255.128 ftp telnet \
-D 0.0.0.0/0.0.0.0 

Há um problema particular com alguns programas servidores que pesquisam pelo nome da máquina de firewall para decidir qual é o seu endereço de rede. Rpc.yppasswdd é um dos que apresentam problemas. Ele insiste em transmitir informações dizendo que ele se encontra fora do firewall (na segunda placa). Isto significa que os clientes internos não podem contactá-la.

Melhor que utilizar IPs alternativos ou mudar o código do servidor, é indicado mapear o nome do programa para o endereço da placa interna no arquivo /etc/hosts.

337.6 Verificações

Deve-se testar a configuração através de telnet, rlogin e ping a partir de uma rede externa. Internamente deve ser possível executar o comando ping para uma máquina externa à rede. Deve ainda ser possível a execução de telnet para a máquina de firewall a partir da rede interna e o firewall deve poder executar qualquer ação.

É isto. Neste ponto provavelmente deve ser necessário conhecer um pouco mais sobre rpc, Páginas Amarelas e a interação com o arquivo de senhas. A rede protegida pode querer ainda que seus usuários sem privilégios possam se conectar ao firewall - e assim acessarem as redes externas. Bons temas para outros documentos COMO FAZER!


Página seguinte Página anterior Índice