Firewall



	
	
	

7.5 NÍVEIS DE SEGURANÇA

 

Existe uma classificação de níveis de segurança fornecida pelos sistemas

operacionais. Essa classificação de níveis de segurança é originalmente

estabelecida pelo Departamento de Defesa dos EUA, que diz que ninguém pode

afirmar se um computador é seguro ou não, mas o administrador de sistema

pode estabelecer níveis de segurança. Todos estes níveis dependem da

confiança que você tem no seu sistema operacional.

Assim: DOS 0%, Windows 98 4%, Windows NT 15%, OS/2 14%, Unix 68%, e assim

por diante.

Os níveis de segurança são representados por letras que vão de A a D, e um

número pode ser usado para subdividir o nível mais adiante, como A1, A2,

etc. O DOS é um representante de nível D1 ( muito fraco ),

pois não existe sistema de propriedades de arquivos e permissões virtuais,

todos os arquivos pertencem ao usuário atual ou seja, aquele que está

usando a máquina.

Vocês devem estar se perguntando: e o nível A1?Ele existe? Caros amigos,

lá vem aquela frase mais velha do mundo: infelizmente A1 não existe, é

aquele computador que está sem usuário, não está ligado na tomada de

energia, e nunca ligado ao cabo telefônico.

Bom, mas com este documento vamos tentar suprir isso. Vamos aprender a

trabalhar com um nível próximo do C1 ou C2, que é onde está o Unix (que

inclui o Linux). Com a capacidade de evitar que certos usuários vejam

alguns arquivos e até mesmo executem certos programas. Existem alguns

sistemas operacionais que apresentam aspecto nível B, mas não atendem a

todos os seus requisitos.

Antes de pensar em um nível de segurança para o seu computador, você deve

refletir sobre a dificuldade que usuários teriam nas conexões, e que você

mesmo teria em acessar seu próprio sistema.

 

 

 

 



7.6 - FIREWALLS

 

Os Firewalls ganharam grande fama ultimamente com a Segurança para a

Internet. Um Firewall é um termo usado para representar uma parte do carro.

Nos 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

mesmo.

Um Firewall em computadores é um dispositivo que protege uma Rede privada

da parte pública (ou da Internet como um todo).

O computador de Firewall, Firewall "de agora em diante chamado", pode

acessar ambas as Redes, a privada e a pública. A rede privada não pode

alcançar a pública, e a pública não pode alcançar os protegidos desta rede.

Para alguém alcançar a rede pública de dentro da rede privada, deve

conectar-se com o Firewall, e usar a rede pública a partir de lá.

A forma mais simples de um Firewall é um sistema de home-dual. (um sistema

com duas conexões de rede). Se você pode confiar em TODOS os seus usuários,

você pode simplesmente configurar o Linux e todo o mundo irá acessar a

Rede Pública. Eles o poderão através de telnet, usar o FTP, ler e-mail, e

usar qualquer outro serviço com que você conta.

Com esta configuração, todos os computadores em sua rede privada saberão

qualquer coisa sobre o mundo externo. O sistema em sua rede protegida

precisa de uma rota padrão em cada máquina para acessar a Rede Pública.

Para o Firewall acima trabalhar você tem que confiar em TODOS os seus

funcionários! Eu não recomendo isto.

 

 



7.6.1 - DESVANTAGEM DOS FIREWALLS

 

O problema com os Firewalls é o caso de ele inibir o acesso a sua rede para

a Internet. Só serviços do sistema que tem acesso a filtros de passagem o

poderão. Como alguns usuários do servidor de Proxy/Gateway acessam o

Firewall, então possuem direito de acessar qualquer parte de sua rede

privada.

Também, há alguns tipos novos de clientes de rede que acessam diretamente

a Rede Pública. Quando eles querem acessá-la, você tem que achar um modo

novo para permitir o controle de acesso antes de que estes serviços

possam ser usados.

 

 




7.6.2 - FILTRAGEM DE IP’S 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 está contido em cada um. Este tipo de

Firewall é muito seguro mas falta utilitários. O Linux incluiu um software

que filtra pacotes em TCP/IP em versões que possuam kernel começando com a

versão 1.3.x. Este software se chama IPFWADM, que você pode obter a

sintaxe de comando no seu próprio Linux, em outros HOWTO’s ou em

http://www.xos.nl/linux/ipfwadm



7.6.3 - EXIGÊNCIAS DE HARDWARE

 

Para o nosso exemplo, o computador é um Intel 486 DX2 66 MHz com 16Mb de

memória e uns 700Mb de partição para o Linux. Este sistema tem duas placas

de rede, uma conectada a nossa rede privada e a outra conectada a uma rede

pública através um roteador externo.

Esta é uma configuração básica para o negócio. Você poderia usar uma placa

de rede para a rede privada e um modem com PPP para a rede pública. O

detalhe é: o Firewall têm que ter dois números de IP – um da rede privada

e outro da rede pública.

 

 

Preparando o Linux para o Firewall

 

Compilando o Kernel

 

Comece com uma instalação nova de sua distribuição de Linux. (Eu usei

o Conectiva Marumbi – baseado no Red Hat 5.1 e os exemplos aqui estão

baseado nesta distribuição.)

Quanto menos software você carregar no seu sistema, menor o número de 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.35 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 Kernel HOWTO, o Ethernet HOWTO e o Net-2 HOWTO

se você não o fez antes.

Aqui está um breve relatório que você precisa configurar para o firewall.

Eu vou usar o 'make menuconfig'

 

Debaixo da configuração Geral

Networking Support: ON

 

Debaixo das Opções de Networking

Network firewalls: ON

TCP/IP Networking: ON

IP forwarding/gatewaying: ON

IP Firewalling: ON

IP firewall packet loggin: ON

IP masquerading: ON

IP accounting: ON

IP tunneling: OFF

IP aliasing: OFF

IP PC/TCP compatibility mode: OFF

IP Reverse ARP: OFF

Drop source routed frames: ON

 

Debaixo do suporte para device de network

Network device support: ON

Dummy net driver support: ON

Ethernet (10 or 100Mbit): ON

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.

 



7.6.4 - CONFIGURANDO DUAS PLACAS DE REDE

 

O método mais seguro é você compilar as placas de rede no kernel em módulo,

deixando assim que o kernel corrija uma automaticamente, e você só precise

instalar uma placa pelos módulos, com o seguinte comando:

modprobe ne io=[endereço base] irq=[n.º]

 

Você pode adicionar este comando no seu arquivo /etc/rc.d/rc.local ou

/etc/conf.modules (se for no Red Hat, leia os HOWTO’s)

 

 



7.6.5 - CONFIGURANDO OS ENDEREÇOS IP DAS REDES

 

Esta é a parte realmente interessante. Agora você tem algumas

decisões para fazer. Desde que nós não queiramos que a rede pública tenha

acesso a qualquer parte da nossa rede privada, nós não precisamos

usar endereços reais para a rede privada. Há vários endereços de INTERNET

definidos à parte para as redes privadas, porque todo mundo precisa de mais

endereços e estes endereços não podem cruzar a Internet.

Destes, usaremos a classe 192.168.1.xxx para a rede privada e

200.200.200.xxx para a rede pública como exemplos.

 

|===========|IP 200.200.200.xxx|================|IP 192.168.1.xxx|========|

Rede Pública|------------------|Firewall/Gateway|----------|Rede Privada |

|===========| |================| |========|

 

 

Se você for usar um filtro de Firewall você pode usar estes números. Você

precisará usar IP masquerading para fazer isto funcionar.

Com este processo o Firewall remeterá os pacotes da rede privada e os

traduzirá num "IP REAL" para então dirigir-se para a Internet, pois estes

IP’s não existem na Internet Você tem que nomear o IP real para a placa de

rede da rede pública (Ex. 200.200.200.1). E, nomear 192.168.1.1 para a

placa de rede da rede privada. Este será o seu endereço de IP do

proxy/gateway. Você pode nomear todas as outras máquinas na rede privada

com algum número do alcance de 192.168.1.xxx.

(192.168.1.2 até 192.168.1.254)

Você também pode usar este esquema para conectar automaticamente através de

um modem o seu provedor.

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.

Você deve configurar o resto necessário para a conexão, como

endereços de cada placa, rotas, etc. Se você conseguir conexão (teste

através de ping), é porque está tudo ok. Procure uma documentação mais

detalhada sobre o restante no seus HOWTO KERNEL, o HOWTO Ethernet e o

HOWTO NET-2.

 

 



7.6.6 - 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 os arquivos

/etc/inetd.conf e /etc/services. Estes arquivos controlam o que é chamado d

e "super servidor". Estes controles são um grupo de daemons (serviços)

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

<pid>", onde <pid> é o número de processo do inetd. Isto fará com que o

inetd releia o seu arquivo de configuração (inetd.conf) e reiniciá-lo.

Teste através do telnet a porta 15 do firewall, a porta do netstat. Se

você acessar a saída do netstat, você não reiniciou corretamente.

Cuidado: Tenha muito cuidado com o que você vai desligar e o que vai

deixar ligado. Só deixe ligado o estritamente necessário (ver descrição de

portas de serviço mais adiante).

 



7.6.7 - CONFIGURAÇÃO DO FILTRO PARA IP (IPFWADM)

 

Para começar, você deve ter o IP Forwarding ligado no seu kernel e o

seu sistema deve ser reiniciado e remetendo sempre o IP. Sua tabela de

rotas deve apresentar os lugares e você deve ter acesso a tudo, ambos

através da saída 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 padrão 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 eliminando qualquer registro da ultima vez que você o rodou.

Este script fará este truque.

 

? Para negar todos os serviços:

ipfwadm –F –p deny

 

? Flush (apagar) todos os comandos dados anteriormente

ipfwadm –F –f

ipfwadm –I –f

ipfwadm –O –f

Primeiramente, nós devemos partir dos filtros mais específicos para os

filtros mais genéricos. Portanto, se você quiser que todos os usuários da

rede privada tenham acesso total à rede pública e controlar o acesso a

apenas um usuário, você deve fazer primeiro o filtro do usuário específico,

e depois os filtros mais genéricos, do restante dos usuários.

 

? Habilitar os serviços de rede do usuário específico (acessar apenas ftp,

http e mail) para a rede pública, fazendo o masquerade:

ipfwadm –F –a m –b –P tcp -S 192.168.1.x 0:65535 -D 0.0/0 21 25 80 110

 

Os parâmetros usados nas linhas acima podem ser obtidos nos HOWTO’s do

próprio IPFWADM. Os propósitos deste documento são apenas fornecer algumas

dicas sobre a montagem de firewall’s, e as portas que definem os serviços

a serem utilizados podem ser obtidas na própria NET, mas eu farei uma

pequena lista no final deste documento. Se você quiser adicionar outros

filtros, adicione mais uma linha como a acima com os IP’s diferentes, com

a portas diferentes, etc.

Neste caso estamos aplicando o firewall do tipo foward (-F) , ou seja, os

serviços a serem acessados não estão na máquina firewall, nem as máquinas

que os acessarão será a máquina firewall.

? Habilitar todos os serviços de rede da rede privada para a rede pública,

fazendo o masquerade, em todos os serviços:

ipfwadm –F –a m -S 192.168.1.0/24 -D 0.0/0

 

O firewall funciona da seguinte forma: ele vai procurar

primeiramente os filtros nas suas primeiras linhas de configuração. Se ele

não encontrar nenhum registro ESPECÍFICO daquele acesso, ele vai caindo em

registros mais genéricos, mais globais, até que ele caia na primeira linha

do firewall, em que ela nega todo e qualquer tipo de acesso.

Se você inverter a ordem das linhas, ele vai encontrar um filtro genérico

já nas primeiras linhas, ignorando qualquer outro filtro específico mais

abaixo.

Com o firewall do jeito que está, temos o seguinte: a rede privada

conecta-se com a rede pública em todos os seus serviços, com exceção da

máquina 192.168.1.x, que tem apenas acesso a ftp, www e mail.

Se você tiver algum outro tipo de serviço, como roteamento

funcionando diretamente no linux (sem um router externo entre o linux e a

rede pública), você também pode controlar o acesso da rede pública para os

seus servidores (que estejam em máquinas diferentes do Firewall), seguindo

os mesmos procedimentos acima. Se houver um router (não a máquina firewall

em questão) entre sua rede pública e seus servidores, você vai ter de

controlar os acesso localmente, em cada servidor, pois o router deve ter

acesso direto aos servidores para haver conexão, fugindo do controle da

máquina firewall. Aconselho neste caso, que os servidores também sejam em

Linux, para aproveitar os recursos de firewall localmente em cada máquina.

Agora, se você tiver daemons de serviços rodando na própria máquina

firewall (arquivos /etc/services e /etc/inetd.conf), ou servidores avulsos

rodando linux, você também pode aproveitar esses recursos do IPFWADM

localmente, utilizando os parâmetros de INPUT (-I) e OUTPUT(-O), ao invés

de Fowarding (-F). a sintaxe é a mesma, só que os comandos de INPUT

controlam os acessos destinados AO seu servidor (algum usuário de algum

provedor, por exemplo) e os comandos de OUTPUT controlam os acessos vindos

DO seu servidor para a Rede pública, sempre mantendo a mesma sintaxe (leia

os HOWTO’s do linux)

 

 



7.6.8 - SERVIÇOS JÁ TESTADOS COM O IPFWADM

 

HTTP: testado e funcionando em todas as plataformas;

POP e SMTP: testado e funcionando em todas as plataformas;

Telnet: testado e funcionando em todas as plataformas;

FTP: testado e funcionando em algumas plataformas, carregando o arquivo

ip_masq_ftp.o. Alguns problemas com o WS_FTP32;

Archie: testado e funcionando em algumas plataformas;

NNTP: testado e funcionando em todas as plataformas;

VRML: testado e funcionando em todas as plataformas;

Traceroute: testado e funcionando em algumas plataformas. Algumas variações

do Unix podem não funcionar;

Ping: testado e funcionando em todas as plataformas;

IRC: testado e funcionando em todas as plataformas;

GOPHER: testado e funcionando em todas as plataformas;

WAIS: testado e funcionando em todas as plataformas;

Real Player: testado e funcionando em algumas plataformas, carregando o

arquivo ip_masq_raudio.o.

True Speech Player 1.1b: testado e funcionando sob Windows;

Internet Wave Player: testado e funcionando sob Windows;

Worlds Chat 0.9a: testado e funcionando sob Windows;

Alpha Worlds: testado e funcionando sob Windows;

Internet Phone 3.2: testado e funcionando parcialmente sob Windows: você

pode chamar alguém, mas não ser chamado;

POWWOW: testado e funcionando parcialmente sob Windows: você pode chamar

alguém, mas não ser chamado;

Cu-See-Me: testado e funcionando em todas as plataformas, carregando os

módulos apropriados. Você pode obtê-los no site IP Masquerade Resource

VDOLive: testado e funcionando em Windows, como os módulos apropriados;

PC-Anywhere for Windows: só funciona como cliente;

Socket Watch: Usa o protocolo NTP (Network Time Protocol);

 

 



7.6.9 - SERVIÇOS QUE NÃO FUNCIONAM

Intel Internet Phone: conecta, mas a voz somente funciona em uma via;

Intel Streaming Media Viewer: não conecta com o servidor.

Netscape CoolTalk: não conecta com o lado oposto;

Talk, ntalk: não funciona. Requer ainda um Kernel proxy a ser escrito;

WEBPhone: Ainda não funciona;

X: não testado ainda, mas acredito que não funcione sem algum proxy para

X, o que deve ser feito através de algum módulo para o IPFWADM.



7.6.10 - PLATAFORMAS TESTADAS

 

Linux;

Solaris;

Windows 95/98;

Windows NT (ambos workstation e server);

Windows For Workgroup 3.11 (com pacote TCP/IP);

Windows 3.1 (com pacote Chamaleon);

Novel 4.01 Server;

OS/2 (com Warp v3);

Macintosh OS (com MacTCP ou Open Transport);

DOS (com pacote NCSA Telnet, DOS Trumpet funciona parcialmente);

Amiga (com AmiTCP ou AS225-stack);

VAX Stations 3520 e 3100 com UCX (TCP/IP stack para VMS)

Alpha/AXP com Linux/Red Hat

SCO Openserver (v3.2.4.2 e 5)

IBM RS/6000 rodando AIX

(alguém testou alguma plataforma a mais?)

 

 

7.6.11 - PORTAS TCP

 

Enfim, um resumo das portas utilizadas pelos serviços de TCP/IP

Os números das portas estão divididos em três categorias: As portas

conhecidas (0 a 1023), as portas registradas (1024 a 49151) e as portas

dinâmicas ou privadas (49152 a 65535).

 

Porta Protocolo Serviço/Descrição

 

0 TCP/UDP Reservada

1 TCP/UDP TCPMUX - TCP Port Service Multiplexer

2 TCP/UDP Compressnet - Management Utility

3 TCP/UDP Compressnet - Compression Process

4 TCP/UDP Desabilitada

5 TCP/UDP RJE - Remote Job Entry

6 TCP/UDP Desabilitada

7 TCP/UDP Echo

8 TCP/UDP Desabilitada

9 TCP/UDP Discard

10 TCP/UDP Desabilitada

11 TCP/UDP SYSTAT – Active Users

12 TCP/UDP Desabilitada

13 TCP/UDP Daytime – RFC 867

14 TCP/UDP Desabilitada

15 TCP/UDP Desabilitada

16 TCP/UDP Desabilitada

17 TCP/UDP QOTD – Quote Of The Day

18 TCP/UDP MSP – Message Send Protocol

19 TCP/UDP CHARGEN – Character Generator

20 TCP/UDP FTP-Data – File Transfer Protocol (Default Data)

21 TCP/UDP FTP – File Transfer Protocol (Control)

22 TCP/UDP SSH – SSH Remote Login Protocol

23 TCP/UDP Telnet

24 TCP/UDP Algum sistema de mail privado

25 TCP/UDP SMTP – Simple Mail Transfer Protocol

26 TCP/UDP Desabilitada

27 TCP/UDP NSW-FE – NSW User System FE

28 TCP/UDP Desabilitada

29 TCP/UDP MSG-ICP

30 TCP/UDP Desabilitada

31 TCP/UDP MSG-AUTH – MSG Authentication

32 TCP/UDP Desabilitada

33 TCP/UDP DSP – Display Support Protocol

34 TCP/UDP Desabilitada

35 TCP/UDP Algum sistema de servidor de impressão

36 TCP/UDP Desabilitada

37 TCP/UDP Time

38 TCP/UDP RAP – Route Access Protocol

39 TCP/UDP RLP – Resource Location Protocol

40 TCP/UDP Desabilitada

41 TCP/UDP Graphics

42 TCP/UDP Nameserver – Host Name Server

43 TCP/UDP Nicname – Who Is

44 TCP/UDP MPM-Flags – MPM Flags Protocol

45 TCP/UDP MPM – Message Processing Module (recepção)

46 TCP/UDP MPM-SND – MPM (envio padrão)

47 TCP/UDP NI-FTP

48 TCP/UDP AUDITD – Digital Audit Daemon

49 TCP/UDP TACACS – Login Host Protocol

50 TCP/UDP RE-MAIL-CK – Remote Mail Checking Protocol

53 UDP DNS – Domain Name Server

66 TCP/UDP SQL*NET – Oracle SQL*NET

67 TCP/UDP BOOTPS – Bootstrap Protocol Client

69 TCP/UDP TFTP – Trivial File Tranfer Protocol

70 TCP/UDP Gopher

79 TCP/UDP Finger

80 TCP/UDP HTTP – World Wide Web

92 TCP/UDP NPP – Network Printing Protocol

110 TCP/UDP POP3 – Post Office Protocol – Version 3

118 TCP/UDP SQLSERV – SQL Services

119 TCP/UDP NNTP – Network News Transfer Protocol

2600 TCP/UDP Quake

4000 TCP/UDP ICQ – Mirabilis

31337 TCP/UDP BO – Back Orifice

 

 

E por aí vai... se você quiser uma listagem completa das portas TCP

ou qualquer outra informação, correção ou sugestão sobre qualquer conteúdo

deste documento, mande-me um e-mail.