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])


Imprimir Topo>>>
Hosted by www.Geocities.ws

1