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.