Howto - Firewall
1. Introdução
O Firewall-HOWTO original foi escrito por David Rudder, [email protected].
Eu gostaria de agradecer-lhe por permitir a atualização
do seu trabalho.
Os Firewalls ganharam grande fama últimamente com a Segurança
para a Internet. Como a maioria das coisas que ganham fama, com
a fama veio uma péssima divulgação. Este
HOWTO revisará os fundamentos do que é um firewall,
e o que é um servidor proxy, como configurar um servidor
proxy, e as aplicações desta tecnologia fora da
segurança real.
1.1. Realimentação
Qualquer realimentação é muito bem-vinda.
POR FAVOR INFORME QUALQUER INEXATIDÃO NESTE DOCUMENTO!!!
Eu sou humano, e propenso a cometer enganos. Se você achar
qualquer erro, e os corrigir é do meu maior interesse.
Eu tentarei responder há todos e-mails, mas eu estou ocupado,
assim não se sinta insultado se eu não responder.
Meu endereço de email é [email protected].
1.2. Retratação
EU NÃO RESPONSABELIZO-ME POR QUALQUER DANO OCORRIDO DEVIDO
A AÇÕES BASEADAS NESTE DOCUMENTO. Este documento
é como uma introdução para trabalhar com
firewalls e servidores proxy. Eu não sou, e nem pretendo
ser um perito em segurança. Eu sou um simples sujeito que
leu muito e que gosta de computadores mais do que a maioria das
pessoas. Por favor, eu estou escrevendo isto para pessoas que
peçam help em subject, e Eu não irei ler aposto
a minha vida na precisão do que está aqui.
1.3. Direitos autorais
A menos que seja contrário, Os documentos HOWTO do Linux
são registrados pelos proprios autores respectivos. Os
documentos HOWTO do Linux podem ser reproduzidos e distribuído
em todo ou em parte, em qualquer meio físico ou eletrônico,
contanto que esta advertência de direitos autorais seja
mantida em todas as cópias. A redistribuição
comercial é permitido e é encorajada; porém,
o autor iria gostar de ser notificado de qualquer forma de distribuição.
Todas as traduções, trabalhos derivados, ou trabalhos
incorporando agregados a qualquer Linux devem ser informados nos
documentos de HOWTO debaixo desta advertência de direito
autorais.
Quer dizer, você pode não produzir um trabalho derivado
de um HOWTO e pode impor restrições adicionais em
sua distribuição. Exceções para estas
regras pode ser concedido debaixo de certas condições;
por favor contate o Coordenador de HOWTO para o Linux.
Em resumo, nós desejamos promover a disseminação
desta informação por tantos canais quanto possível.
Porém, nós desejamos reter os direito autorais nos
documentos de HOWTO, e gostaria-mos de ser notificado de qualquer
plano para redistribuição dos HOWTOs.
Se você tem qualquer pergunta, por favor contacte Mark
Grennan em.
1.4. Minhas Razões por escrever
Embora houvesse muitas discussões em comp.os.linux.* em
cima do último ano sobre firewalling, eu achei difícil
achar informações da qual eu precisava para o setup
do firewall. A versão original deste HOWTO era útil
mas ainda faltava muito. Eu espero que esta versão do HOWTO
Firewall de David Rudder de a todo mundo informação
que elas precisam para criar um firewall em horas, não
em semanas.
Eu também sintia que devia devolver algo à comunidade
do Linux.
1.5. TODO
· Algumas instruções para configuração
de clientes
· Achando um servidor de Proxy UDP bom que trabalhe com
o Linux
1.6. Mais Leituras adiante
· O NET-2 HOWTO
· O Ethernet HOWTO
· O Multiple Ethernet Mini HOWTO
· Networking with Linux
· O PPP HOWTO
· O Guia de TCP/IP Network Administrator's por O'Reilly
and Associates
· A Documentação para o TIS Firewall Toolkit
O Sistema confiado em Informação (TIS) no web sites
tem uma coleção grande de documentação
de firewalls e material relacionado. http://www.tis.com / Também,
estou trabalhando num projeto de segurança que estou chamando
de Linux Secure. No Web site do Linux Secure estou juntando todas
as informações, documentações e programas
que você precisa para criar um Sistema de Linux confiável.
Envie-me email se você gosta deste tipo de informação.
2. Compreendendo Firewalls
Um firewall é um termo usado para uma parte do carro.
Em carros, os firewalls são objetos físicos que
separam a máquina dos passageiros. O significado deles
é proteger o passageiro no caso de fogo no motor do carro
enquanto ainda o motorista têm acesso aos controles do carro.
Um firewall em computadores é um dispositivo que protege
uma network privada da parte pública (ou internet como
um todo). O computador de firewall, firewall "de agora em
diante chamado", pode alcançar ambas network protegida
e a internet. A network protegida não pode alcançar
a internet, e a internet não pode alcançar os protegidos
desta network.
Para alguém alcançar a internet de dentro da network
protegida, deve dar um telnet para o firewall, e usar a internet
de lá.
A forma mais simples de um firewall é um sistema de homed-dual.
(um sistema com duas conexões de network) Se você
pode CONFIAR EM TODOS os seus usuários, você pode
simplesmente configurar o Linux (compile com forwarding/gatewaying
de IP DESLIGADO!) e todo o mundo ira acessar. Eles poderão
usar o login neste sistema através de telnet, usar o FTP,
ler email, e usa qualquer outro serviço com que você
conta. Com esta configuração, o único computador
em sua network privada saberá qualquer coisa sobre o mundo
externo é o firewall. O outro sistema em sua network protegida
precisa de uma rota default.
Isto precisa de redeclarações. Para o firewall
acima trabalhar VOCÊ TÊM QUE CONFIAR EM TODOS OS SEUS
USUÁRIOS! Eu não recomendo isto.
2.1. Desvantagens com os Firewalls
O problema com a filtração de firewalls é
dele inibir o acesso a sua network através da internet.
Só serviços do sistema que tem acesso a filtros
de passagem o poderão. Como alguns usuários do servidor
de proxy acessão o login no firewall e então acessãor
qualquer parte de sua network privada.
Também, alguns tipos novos de clientes de network que
acessam diariamente. Quando eles querem você tem que achar
um modo novo para permitir o acesso de controle antes de que estes
serviços possam ser usados.
2.2. Tipos de Firewalls
Há dois tipos de firewalls.
1. IP ou Filtro de Firewalls - aquele bloco todo menos a network
selecionada no tráfico.
2. Servidores de proxy - faz as conexões da network para
você.
2.2.1. Flitrando IP em Firewalls
Um firewall que filtra trabalhos de IP ao nível de pacote.
É projetado para o controle do fluxo de pacotes baseado
no destino, porta e informação do tipo de pacote
que contem em cada pacote.
Este tipo de firewall é muito seguro mas falta utilidades.
Pode bloquear as pessoas de ter acesso ao sistema privado mas
vai vetar o acesso a seus sistemas públicos ou a quem tem
acesso do interior.
Filtros para firewalls são filtros absolutos. Até
mesmo se você quer que alguém acesse de fora os seus
servidores privados você não pode sem dar para todo
o mundo o acesso para os servidores.
O Linux incluiu um pacote de software que filtra software no
kernel começando com a versão 1.3.x.
2.2.2. Servidores de proxy
Servidores de proxy permitem o acesso há internet indiretamente
pelo acesso ao firewall. O melhor exemplo de como trabalha é
um telnet a um sistema e então um telnet de lá para
outro. Só com um servidor de proxy o processo é
automático. Quando você conecta a um servidor de
proxy com o seu software de cliente, o servidor de proxy começa
e o software cliente (proxy) passa os dados para você.
Servidores de proxy duplicam todas as comunicações
que eles podem fazer e anota tudo o que fazemos.
A grande coisa sobre servidores de proxy é que eles são
completamente seguros, quando configurados corretamente. Eles
não permitem acessa-lo. Não há uma rota de
IP direto.
3. Configurando um Firewall
3.1. Exigências de hardware
Para o nosso exemplo, o computador é um 486-DX66 com 16
meg de memória e uns 500 meg de partição
para o Linux. Este sistema tem duas placas de rede uma conectada
a nossa LAN privada e a outra conectada a uma LAN chamada de zona
desmilitarizada (DMZ). O DMZ tem um roteador conectado a uma conexão
para a internet.
Esta é uma configuração basica para um negócio.
Você poderia usar uma placa de rede e um modem com PPP para
a internet. O ponto é, o firewall têm que ter dois
números de IP na network.
Eu sei que muitas pessoas têm LANs pequenas em casa com
dois ou três computadores. Algo que você poderia considerar
era por todos os seus modems num Linux encaixotado (talvez num
velho 386) e conectando todos eles para a internet com balanceamento
de linha. Com esta configuração quando uma única
pessoa pede dados os modems dobram o processamento :-)
4. Software de Firewalling
4.1. Pacotes disponíveis
Se tudo o que você deseja é um filtro de firewall,
você só precisa do Linux e do pacotes básicos
de networking. Um pacote com o que poderia não vir na sua
distribuição é a Ferramente de Administração
de IP Firewall.
(IPFWADM) Vem de http://www.xos.nl/linux/ipfwadm/
Se você quer configurar um servidor de proxy você
precisará destes pacotes.
1. SOCKS
2. TIS Firewall Toolkit (FWTK)
4.2. O TIS Firewall Toolkit vs SOCKS
O Sistema confiado em Informação (http://www.tis.com)
publicou uma coleção de programas projetados para
a facilitação de firewalling. Os programas fazem
a mesma coisa basica que os pacotes de SOCKS, mas com uma estratégia
diferente. Onde os SOCKS têm um programa que cobre todas
as transações da internet, o TIS tem um programa
para cada utilidade que deseja usar o firewall.
Para contrastar os dois, usaremos o exemplo para world wide web
e de acesso por Telnet. Com o SOCKS, você monta um arquivo
de configuração e um daemon. Por este arquivo de
daemon, telnet e WWW são habilitados, como também
qualquer outro serviço que você não incapacitou.
Com o toolkit de TIS, você monta um daemon para cada WWW
e telnet, como também configura cada arquivo. Depois que
você fizer isto, outro acesso de internet ainda é
proibido explicitamente até que seja configurado. Se um
daemon para uma utilidade específica não foi configurado
(como o talk), há um daemon "plug-in", mas não
é flexível, nem fácil de configurar, como
as outras ferramentas.
Isto poderia parecer secundário, mas faz uma grande diferença.
O SOCKS permite que você use algo malfeito. Como uma configuração
pobre para o servidor de SOCKS, alguém de dentro poderia
ganhar mais acesso para a internet que era originalmente pretendido.
Com o toolkit da TIS, tanto o lado de dentro como o de fora somente
as pessoas que o administrador permiti o acesso irão os
ter.
SOCKS são mais fáceis de montar, mais fácil
de compilar e permitem uma maior flexibilidade. O toolkit da TIS
está mais seguro se você quer regular os usuários
de dentro da sua network protegida. Ambos provêem absoluta
proteção do exterior.
Eu cobrirei a instalação e a configuração
de ambos.
5. Preparando o sistema do Linux
5.1. Compilando o Kernel
Comece com uma instalação nova de sua distribuição
de Linux. (Eu usei RedHat 3.0.3 e os exemplos aqui estão
baseado nesta distribuição).
Menos os software que você carregou para o seu sistema,
e/ou os bugs de backdoors que podem introduzir problemas de segurança
em seu sistema, assim carregue só um conjunto mínimo
de aplicações.
Escolha um kernel estável. Eu usei o Kernel 2.0.14 do
Linux para o meu sistema.
Assim esta documentação está baseado nestas
condições.
Você precisa recompilar o kernel do Linux com as opções
necessárias. Neste momento, você deveria ler o HOWTO
KERNEL, o HOWTO Ethernet e o HOWTO NET-2 se você não
o fez isto antes.
Aqui está o relatório que você precisa configurar
para a network Eu vou usar o 'make config'
1. Debaixo da configuração Geral
a. Turn Networking Support ON
2. Debaixo das Opções de Networking
a. Turn Network firewalls ON
b. Turn TCP/IP Networking ON
c. Turn IP forwarding/gatewaying OFF (A MENOS QUE você deseje
usar filtro de IP)
d. Turn IP Firewalling ON
e. Turn IP firewall packet loggin ON (isto não é
requerido mas é uma idéia boa)
f. Turn IP: masquerading OFF (eu não estou cobrindo este
assunto aqui.)
g. Turn IP: accounting ON
h. Turn IP: tunneling OFF
i. Turn IP: aliasing OFF
j. Turn IP: PC/TCP compatibility mode OFF
k. Turn IP: Reverse ARP OFF
l. Turn Drop source routed frames ON
3. Debaixo do suporte para device de network
a. Turn Network device support ON
b. Turn Dummy net driver support ON
c. Turn Ethernet (10 or 100Mbit) ON
d. Selecione a sua placa de rede
Agora você deve recompilar, reinstalar o kernel e reiniciar.
Sua placa de rede devem mostrar as informações caso
o seu boot tenha ocorrido com sucesso. Se não, revise os
outros HOWTOs novamente até que esteja funcionando.
5.2. Configurando duas placas de redes
Se você tem duas placas de rede no seu computador, você
provável irá precisar colocar uma declaração
no append no seu arquivo de /etc/lilo.conf para reconhecimento
do IRQ e endereço de ambas placas de rede. No meu lilo
anexei a seguinte declaração:
append="ether=12,0x300,eth0 ether=15,0x340,eth1"
5.3. Configurando os Endereços da rede
Esta é a parte realmente interessante. Agora você
tem algumas decisões para fazer. Desde que nós não
queremos a internet para ter acesso a qualquer parte da nossa
network privada, nós não precisamos usar endereços
reais. Há vários endereços de internet definidos
aparte para networks privadas. Porque todo mundo precisa demais
endereços e porque estes endereços não podem
cruzar a Internet eles são uma ótima escolha.
Destes, 192.168.2.xxx, serão configurados e nós
os usaremos em nossos exemplos.
Seu firewall de proxy será um sócio de networks
e assim pode passar os dados por ele para a network privada.
199.1.2.10 __________ 192.168.2.1
_ __ _ \ | | / _______________
| \/ \/ | \| Sistema |/ | |
/ Internet \--------| Firewall |------------| Workstation/s |
\_/\_/\_/\_/ |__________| |_______________|
Se você for usar um flitro de firewall você ainda
podm usar estes números. Você precisará usar
IP mascarading para fazer isto funcionar.
Com este processo o firewall remeterá os pacotes e os
traduzira num IP "REAL" para dirigir-se então
para a Internet.
Você tem que nomear o IP real para a placa de rede da network
do lado da Internet (fora). E, nomear 192.168.2.1 para a placa
de rede do lado de dentro. Este será o seu endereço
de IP do proxy/gateway. Você pode nomear todas as outras
máquinas na network protegida com algum número do
alcance de 192.168.2.xxx. (192.168.2.2 até 192.168.2.254)
Desde que eu uso o Linux RedHat (Ei sujeitos, queiram me dar
uma cópia de plugs? ;-) para configurar a network no momento
do boot eu somei um arquivo 'ifcfg-eth1' no diretório de
/etc/sysconfig/network-scripts. Este arquivo é lido durante
o processo de boot para configurar a sua network e a tabela de
rotas. Aqui esta o meu ifcfg-eth1 olhe ele;
#!/bin/sh
#>>>Device type: ethernet
#>>>Variable declarations:
DEVICE=eth1
IPADDR=192.168.2.1
NETMASK=255.255.255.0
NETWORK=192.168.2.0
BROADCAST=192.168.2.255
GATEWAY=199.1.2.10
ONBOOT=yes
#>>>End variable declarations
Você também pode usar este script para conectar
automaticamente através de um modem o seu provedor. Olhe
o script ipup-ppp.
Se você vai usar um modem para a sua conexão com
a internet o seu endereço de IP de fora será nomeado
pelo seu provedor ao se conectar-se.
5.4. Testando a sua network
Comece conferindo o ifconfig e o route. Se você tem duas
placas de network seu ifconfig deve parecer-se com algo assim:
#ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.0 Bcast:127.255.255.255 Mask:255.0.0.0
UP BROADCAST LOOPBACK RUNNING MTU:3584 Metric:1
RX packets:1620 errors:0 dropped:0 overruns:0
TX packets:1620 errors:0 dropped:0 overruns:0
eth0 Link encap:10Mbps Ethernet HWaddr 00:00:09:85:AC:55
inet addr:199.1.2.10 Bcast:199.1.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0
TX packets:0 errors:0 dropped:0 overruns:0
Interrupt:12 Base address:0x310
eth1 Link encap:10Mbps Ethernet HWaddr 00:00:09:80:1E:D7
inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0
TX packets:0 errors:0 dropped:0 overruns:0
Interrupt:15 Base address:0x350
e sua tabela de rotas deve ser assim:
#route -n
Kernel routing table
Destination Gateway Genmask Flags MSS Window Use Iface
199.1.2.0 * 255.255.255.0 U 1500 0 15 eth0
192.168.2.0 * 255.255.255.0 U 1500 0 0 eth1
127.0.0.0 * 255.0.0.0 U 3584 0 2 lo
default 199.1.2.10 * UG 1500 0 72 eth0
Nota: 199.1.2.0 é o lado de Internet deste firewall e
192.168.2.0 é o lado privado. Agora tente pingar a internet
do firewall. Eu usava nic.ddn.mil como meu ponto de teste. Ainda
é um bom teste, mas provou ser menos fidedigno do que eu
tinha esperado. Se não funcionar no princípio, tente
pingar outros lugares que não são conectados a sua
LAN. Se isto não funcionar, então a sua configuração
de PPP esta incorreta. Re-leia o HOWTO Net-2, e tente novamente.
Logo, tente pingar um host de dentro da network protegida do
firewall. Todos os computadores devem ser capazes de pingar um
ao outro. Se não, revise o HOWTO NET-2 novamente e trabalhe
na network um pouco mais.
Então, tente o ping no endereço externo de firewall
de dentro da network protegida. (NOTA: isto é nem todos
os números IP 192.168.2.xxx.) Se você pode, então
você não desligou o IP Forwarding. Tenha certeza
que este é o modo que você quer. Se você deixou
ligado você deve passar pela seção de Filtração
de IP desde documento.
Agora tente pingar a internet por detrás do seu firewall.
Use o mesmo endereço antes que usamos. (I.E. nic.ddn.mil)
Novamente, se você tem o IP Forwarding desligado, isto não
deve acontecer. Mas, se você tem o IP Forwarding, deve ocorrer.
Se o IP Forwarding estiver ligago e você estiver usando
o endereço do IP "REAL" (não o 192.168.2.*)
para a sua network privada, e você não puder pingar
para a internet mas você puder pingar da internet ao seu
firewall, cheque, se o seu sistema de roteamento não está
removendo os pacotes do seu endereço da network privada.
(Seu provedor pode ter que fazer isto para você).
Se você criou a sua network protegida em 192.168.2.*, então
não podem ser removidos os pacotes de qualquer maneira.
Se você saltou à frente e você já tem
IP masquerading ligado, este teste deve funcionar.
Agora, você tem a sua configuração básica
do sistema.
5.5. Segurança no Firewall
O firewall não é muito bom se permanecer aberto
a ataques por um serviço novo. Um "sujeito" ruim
poderia ganhar acesso para o firewall e modificar para as suas
próprias necessidades.
Comece desligando qualquer serviço desnecessário.
Olhe o arquivo /etc/inetd.conf. Este arquivo controla o que é
chamado de "super servidor" super. Estes controles são
um grupo de daemons do servidor e os começa quando eles
são pedidos.
Definitivamente desligue o netstat, systat, tftp, bootp, e o
finger. Para desligar um serviço, ponha # como o primeiro
caráter da linha do serviço. Quando acabado, envie
um SIG-HUP ao processo digitando "kill -HUP ", onde
é o número de processo do inetd. Isto fará
com que o inetd releia o seu arquivo de configuração
(inetd.conf) e reinicia-lo.
Teste através do telnet a porta 15 do firewall, a porta
do netstat. Se você acessar a saida do netstat, você
não reiniou corretamente.
6. Configuração do filtro para IP (IPFWADM)
Para começar, você deveria ter o IP Forwarding ligado
no seu kernel e o seu sistema deve ser reinicado e remetendo sempre
o IP. Sua tabela de rotas deve apresentar os lugares e você
deve ter acesso a tudo, ambos atráves da saida e pela entrada.
Mas, nós estamos construindo um firewall e assim nós
precisamos começar desligado para que todo o mundo tem
acesso.
No meu sistema eu criei várias scripts para configurar
o firewall policiando o forwarding e contando o policiamento.
Eu chamo os scripts dentro do /etc/rc.d assim o meu sistema é
configurado no momento do boot.
Através do default do IP Forwarding o sistema no kernel
do Linux remete tudo. Por causa disto, seu script de firewall
deve começar negando acesso para tudo e enxaguando qualquer
registro de da ultima vez que você redou. Este script fará
este truque.
#
# setup para pacote IP Accounting and Forwarding
#
# Remetendo(Forwarding)
#
# O default é negando todos os serviços
ipfwadm -F -p deny
# Flush all commands
ipfwadm -F -f
ipfwadm -I -f
ipfwadm -O -f
Agora nós temos o último firewall. Nothing can
get through. Você não deve ter alguma dúvida
sobre os serviços que você precisa remeter estão
aqui alguns exemplos que devem ser úteis.
# Forward email para o seu servidor
ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 192.1.2.10
25
# Forward email de conexões para a saída do servidor
de email
ipfwadm -F -a accept -b -P tcp -S 196.1.2.10 25 -D 0.0.0.0/0 1024:65535
# Forward Web de conexões do seu Servidor de Web
/sbin/ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D
196.1.2.11 80
# Forward Web de conexões para a saída do seu Servidor
de Web
/sbin/ipfwadm -F -a accept -b -P tcp -S 196.1.2.* 80 -D 0.0.0.0/0
1024:65535
# Forward Trafico do DNS
/sbin/ipfwadm -F -a accept -b -P udp -S 0.0.0.0/0 53 -D 196.1.2.0/24
Você também poderia se interessar pela resposta
do tráfico que vai para o seu firewall. Este script conta
os pacote. Você pode somar uma linha ou responder por pacotes
que vão para um único sistema.
# Flush the current accounting rules
ipfwadm -A -f
# Considerando os Accounting
/sbin/ipfwadm -A -f
/sbin/ipfwadm -A out -i -S 196.1.2.0/24 -D 0.0.0.0/0
/sbin/ipfwadm -A out -i -S 0.0.0.0/0 -D 196.1.2.0/24
/sbin/ipfwadm -A in -i -S 196.1.2.0/24 -D 0.0.0.0/0
/sbin/ipfwadm -A in -i -S 0.0.0.0/0 -D 196.1.2.0/24
Se tudo o que você quis era um filtro para o firewall você
pode parar aqui. Desfrute :-)
Autor: Mark Grennan - ([email protected]); Traduzido por: Bruno
H. Collovini - ([email protected])
|