panorama atual na área de segurança de redes
- crescimento no número de usuários
- usuários domésticos com acesso rápido
- comércio eletrônico continua crescendo
- vídeo conferência e demais aplicações multimídia são uma realidade
- ataques terroristas e guerras criam um clima tenso e alertam para
brincadeiras de mal gosto enviadas via email; aumentar preocupação com
segurança em sites governamentais...
- problemas que persistiram em 2001 causando incidentes de segurança:
- atualização do software
- instalação de novos hosts e implantação de novos serviços feita
descuidadamente (sistema vulnerável)
- atualização de anti-vírus tardia
- tratamento de emails por parte dos usuários (propagação de vírus e
worms)
- falta de informação e treinamento de profissionais na área de
segurança
- são comuns os casos de servidores e redes abandonadas
- sofisticação dos ataques X conhecimento técnico para atacantes
Principais incidentes de segurança em 2001 [top]
- os principais incidentes de segurança segundo informações do CAIS ( www.rnp.br/cais
) - 2001
- smurf
- ataques de reconhecimento (varredura de portas)
- worms
- troca de páginas (WEB)
- SPAM e relay
- Negação de serviços
- ataques contra sistemas windows foram mais freqüentes do que ataques
contra sistemas unix/linux
Principais vulnerabilidades de segurança na internet [top]
- uma lista com as 20 vulnerabilidades mais críticas de segurança na
Internet está disponível em www.sans.org -
com uma versão em português -
- a lista é atualizada constantemente, sendo a versão mais nova de
janeiro/2002
- vamos explorar algumas medidas de segurança para redes no sentido de
conter as seguintes vulnerabilidades:
- instalação default de sistemas operacionais/aplicativos
- contas sem senhas ou senhas fracas
- backups incompletos ou inexistentes
- grande número de portas abertas
- ausência de filtros de pacotes de entrada e saída que garanta o uso de
endereços válidos
- sistema de log inexistente ou incompleto
controle de usuários [top]
Controle de contas/senhas
- a forma mais comum de autenticação de usuários numa rede, ou de prover
acesso a uma rede, é através de uma conta
- criar uma conta de usuário requer definir login/senha para aquele usuário
- o esquema de senhas para autenticação de usuário numa rede pode gerar
problemas de segurança pelo fato de que ainda existe muito descaso em
relação a escolha das senhas
- contas com senhas fáceis ou sem senhas
- é importante impor restrições à definição de senhas de usuários para
acesso à rede
- restrições quanto às senhas:
- especificar a quantidade mínima de caracteres (melhor incluir também a
quantidade máxima); boa escolha, 5(min) e 7 (max) caracteres
- exigir o uso de caracteres diversos
(alfabéticos/numéricos/pontuação)
- exigir a troca regular de senhas; boa escolha, a cada 6 meses
- impedir reuso de senhas; período mínimo de 3 meses
- usar softwares para quebrar senhas e, assim, descobrir senhas fáceis; ex.
Crack
- como fazer???????
- buscar os arquivos de configuração de login (etc/login.defs; nos
sistemas unix/linux)
Controle de contas inativas
- é importante revisar contas de usuários regularmente, o que engloba:
- remover ou alterar senha das contas padrão do sistema (guest, root,
administrator, postmaster, webmaster, etc.)
- remover contas inativas (sem uso regular)
- bloquear contas de usuários afastados temporariamente
Outros mecanismos para controle de usuários (no que se
refere à autenticação)
- detectores de impressões digitais, reconhecedores de voz e identificadores
de padrões de retina; estes dispositivos alternativos usam meios que não
podem ser forjados para identificação dos usuários (muito discutido
atualmente!!)
- especificação das máquinas nas quais o usuário pode efetuar login
- especificação dos horários que o usuário pode efetuar login no
sistema
controle do software [top]
- o que consideramos como software?
- sistema operacional
- aplicativos - serviços de rede, outros programas...
- dicas essenciais:
- na instalação/configuração, usar os procedimentos padrões sugeridos
- remover todo o software não mais utilizado
- manter o software atualizado (instalar os patches de segurança)
- buscar as atualizações de software em fontes confiáveis
- atenção para a configuração dos aplicativos
- softwares mal configurados tornam-se vulneráveis
- utilizar arquivos de logs para detectar problemas com a utilização de
aplicativos (ex. sistema de BD da empresa)
- exemplos de arquivos de log de aplicações: UNIX - xferlog (wu-ftpd);
acess_log (httpd) WINDOWS NT - WINNT\system32\LogFiles (IIS)
Cuidados com os serviços de rede
- os serviços de rede podem ser classificados em duas categorias (de acordo
com a forma como são inicializados):
- serviços perenes - são inicializados no momento do boot (quando
as máquinas servidoras são ligadas)
- serviços sob demanda - são inicializados a medida que chega uma
requisição (chamada ao programa que oferece o serviço)
- após instalar uma máquina na rede, se esta não vai ser servidora de
algum serviço, então, deve-se desabilitar o respectivo serviço.
- de que maneira? isto vai depender do SO instalado, vejamos como fazer no
Linux Slackware
- no Slackware os servidores perenes são inicializados através de
scripts, os quais estão localizados no diretório:
/etc/rc.d/
- por exemplo, se eu não quero disponibilizar o serviço de correio
eletrônico, então, devo comentar as linhas do arquivo /etc/rc.d/rc.*
correspondentes à inicialização deste serviço
- a inicialização dos serviços ditos sob demanda é feita através do daemon
inetd (servidor perene em redes TCP/IP)
- o inetd consulta dois arquivos para inicializar um servidor sob
demanda, quais sejam:
/etc/inetd.conf
/etc/servicos
- o arquivo inetd.conf é constituído de várias linhas, onde cada
uma identifica um serviço e seu respectivo servidor (programa que fornece
o serviço)
exemplo:
telnet ... /usr/sbin/in.telnetd
- as linhas do arquivo servicos, por sua vez, identificam um
serviço e sua respectiva porta/protocolo de transporte
exemplo:
telnet ... 23/tcp
- se algum serviço sob demanda não deve ser disponibilizado através de
uma determinada máquina, então, comenta-se a respectiva linha no arquivo inetd.conf
exemplo: indisponibilizando o telnet
#telnet ... /usr/sbin/in.telnetd
- não é necessário mexer no arquivo servicos
|
=====> atividade prática 1
Controle de SPAM
- uma vulnerabilidade dos serviços de correio eletrônico que tem sido
explorada, corresponde ao relay aberto
- esta vulnerabilidade favorece o uso do seu servidor de correio eletrônico
para fins de SPAM
- essencialmente, o servidor de correio eletrônico deve processar (enviar)
mensagens cuja origem é uma máquina da rede local ou de uma rede de
usuários a que ele também serve
- qualquer requisição de serviço para envio de mensagem, proveniente de
outra origem, deve ser negada
- como resolver?
- nos sistema Unix, deve-se utilizar um servidor de correio eletrônico
mais novo e que implemente proteção contra relay aberto por default
(as versões do sendmail a partir do sendmail 8.9);
Configurando o sendmail contra relay aberto no Slackware
(passos)
- criar um arquivo /etc/mail/relayTo onde serão inseridas as regras de
relay do serviço de correio eletrônico
- em outras versões de Linux os procedimentos podem mudar um pouco...
Configurando o qmail contra relay aberto no Slackware (passos)
- criar um script etc/rc.d/rc.qmail para ativação do serviço
- mudar um dos arquivos de inicialização de serviços perenes (ex. etc/rc.d/inet2)
inserindo uma linha que dispare o rc.qmail
- criar um arquivo /etc/tcp.smtp contendo as regras de relay
Configurando o serviço de correio eletrônico para WindowsNT contra
relay aberto
- Servidor de email considerado: Microsoft Exchange Administrator 5.5 (
Service
Pack 2 )
Escolher as seguintes opções :
CONNECTIONS ( Ctrl+Shif+n) > INTERNET MAIL SERVICE > ROUTING > ROUTING
RESTRICTION
Em seguida habilitar a opção :
HOSTS AND CLIENTS WITH THESE IP_ADDRESSES
Adicionar o(s) IP da(s) sub-redes e máscara(s) de rede(s)
Exemplo: 150.165.92.0 (sub-rede), 255.255.255.0 (máscara)
|
=====> atividade prática 2
segurança dos dados [top]
- duas preocupações pertinentes em relação aos dados locais da rede:
- permissões de acesso
- backup
proteção de arquivos nos sistemas Unix
- cada arquivo/diretório tem associado um conjunto de bits que expressam as
permissões de acesso àquele arquivo
exemplo:
(retirado de www.linuxsecurity.com/docs/Security-HOWTO/Security-HOWTO-5.html
)
-rw-r--r-- 1 kevin users 114 Aug 28 1997 .zlogin
1st bit - directory? (no)
2nd bit - read by owner? (yes, by kevin)
3rd bit - write by owner? (yes, by kevin)
4th bit - execute by owner? (no)
5th bit - read by group? (yes, by users)
6th bit - write by group? (no)
7th bit - execute by group? (no)
8th bit - read by everyone? (yes, by everyone)
9th bit - write by everyone? (no)
10th bit - execute by everyone? (no)
#find / -perm -2 ! -type l -ls
- atenção para arquivos sem proprietários; como achar tais arquivos
#find / -nouser -o -nogroup -print
- proíba a existência de arquivos .rhosts; como achar
#find /home -name .rhosts -print
- atenção para a troca de permissão de arquivos; que seja uma decisão
bem fundamentada
Uso de backups
- por que realizar backups?
- erros do usuário
- erros administrativos
- falhas de hardware/software
- recuperação de incidentes de segurança maliciosos
- tipos de backup
- backup dia-zero
- backup completo
- backup incremental
- diretivas de backup
- rodízios de múltiplas fitas (ou outra mídia) de backup
- armazenar mídia em local adequado, seguro
- testar integridade das cópias periodicamente
- combinar ciclos de backups completos e incrementais, além de
períodos de armazenamento: turno, dia, semana, mês, ano etc.
- para fazer backups em sistemas unix/linux
- backup / restore (comandos mais sofisticados; não vem instalado por
default)
- cp (comando tradicional para cópia de arquivos)
#cp -R <origem> <destino>
onde, destino pode ser um dispositivo de fita/floppy/hd -> /dev/md0, /dev/fd0,
/dev/hda
a ativação do backup pode ser feita através do daemon crontabd
=====> atividade prática 3
controle de portas abertas [top]
- os sistemas são acessados através de portas abertas ; quanto maior o
número de portas abertas, maior a possibilidade de alguém se conectar ao
sistema
- as portas têm associado um número que identifica uma aplicação
(serviço da rede) acessível
- a melhor forma de saber quais portas estão abertas é através de uma
ferramenta de scan de portas
- ferramenta mais popular: Nmap
- versão para unix/linux: www.insecure.org/nmap/
- versão para windows NT: www.eeye.com/html/Research/Tools/nmapnt.html
- as ferramentas devem ser configuradas para varrer portas TCP/UDP entre
1-65535
- para verificar as portas usadas no sistema (localmente) pode-se também
usar o comando: netstat - este comando está disponível tanto para
unix/linux quanto para windows
- para fechar uma porta desabilite ou remova o serviço associado a mesma
- outra ferramenta interessante que permite analisar uma rede e detectar
vulnerabilidades é o analisador de protocolos (ver
Analyzer - um
software analisador de protocolos de domínio público).
controle de acesso em redes (uso de firewalls) [top]
- o uso de firewalls numa rede tem por objetivo controlar o acesso em redes
tanto no sentido Internet -> rede interna quanto rede interna
-> Internet
- os firewalls desempenham duas funcionalidades importantes:
- filtragem de pacotes
- proxy de serviços
- um firewall legítimo provê vários níveis de proteção para uma rede,
sendo assim bastante eficiente em termos de segurança (age em todos os
níveis da pilha de protocolos TCP/IP)
- no entanto, um firewall legítimo é bastante caro :(
- soluções alternativas incluem os filtros de pacotes e wrappers
- filtro IP simples: localiza-se na camada de rede, inspeciona
FROM-TO-PROTOCOL dos pacotes
- filtro IP mais sofisticado: localiza-se nas camadas de rede/transporte,
inspeciona FROM-TO-PROTOCOL-PORT dos pacotes
- tcp/wrapper: localiza-se nas camadas de transporte/aplicação,
aceita FROM-SERVIDOR
- as regras básicas para filtragem de pacotes numa rede incluem:
- nenhum pacote que entra em sua rede pode ter como endereço de origem
qualquer IP da sua rede interna.
- todo pacote que entra em sua rede deve ter como endereço de destino
algum endereço pertencente à sua rede interna
- qualquer pacote que sai da sua rede deve ter como endereço de origem
algum IP que pertença à sua rede interna.
- nenhum pacote que sai da sua rede deve ter como endereço de destino
algum IP de sua rede interna.
- nenhum pacote que entra ou sai de sua rede deve conter como endereço de
origem ou destino qualquer endereço privado ou endereço reservado segundo
descrito na RFC 1918 ( www.ietf.org/rfc.html
). Estão incluídos neste espaço de endereçamento as redes 10.x.x.x/8,
172.16.x.x/12 ou 192.168.x.x/16, e a rede 127.0.0.0/8, correspondente a loopback.
- bloqueie qualquer pacote que tenha a opção 'source routing' ativada
- bloqueie qualquer pacote que entra na sua rede e tem como endereço
destino o endereço de broadcast da rede
- em relação a funcionalidade de proxy de serviços...
- a idéia é controlar o acesso aos serviços da rede interna (por parte
da rede não confiável - Internet), assim como, controlar o uso da Internet
por parte dos usuários da rede interna.
- um proxy de serviços pode oferecer flexibilidades no que se
refere a configuração do serviço provido
- por exemplo, um proxy web pode oferecer recursos para definir
sites proibidos
- regra geral: fechar portas vulneráveis
=====> atividade prática 4
Segurança na transmissão da informação [top]
- o tráfego de uma rede pode ser monitorado de forma maliciosa, revelando
informações sensíveis, como senhas de usuários, este procedimento
caracteriza um ataque por interceptação (passiva) de pacotes - grampo
- uma prática bastante apreciada é usar criptografia para transmitir
informações sensíveis, através de serviços de correio eletrônico,
serviços que requisitam senhas de usuários (telnet, ftp, ...), etc.
- para acesso remoto e transferência de arquivos remota seguros tem-se
utilizado soluções baseadas no protocolo SSH (secure shell)
- a idéia do protocolo SSH é permitir que um usuário se conecte a um
host remote via um canal de comunicação seguro (baseado em criptografia) -
padrão Internet (certificado, ou em vias de certificação IETF)
- como começar a usar um servidor SSH
- outros protocolos para transmissão de informação segura (baseados em
criptografia)
- PGP (Pretty Good Privacy) - segurança na transmissão de
mensagens via correio eletrônico - www.pgpi.org/
- SSL (Secure Sockets Layer) - segurança no acesso a páginas WEB
- www.openssl.org
©2002 - Lívia Maria Rodrigues Sampaio - livia@dsc.ufpb.br