Red Hat Enterprise Linux 3 Guia de Segurança

Transcrição

Red Hat Enterprise Linux 3 Guia de Segurança
Red Hat Enterprise Linux 3
Guia de Segurança
Red Hat Enterprise Linux 3: Guia de Segurança
Copyright © 2003 por Red Hat, Inc.
Red Hat, Inc.
1801 Varsity Drive Raleigh NC 27606-2072 USA Telefone: +1 919 754 3700 Telefone: 888 733 4281 Fax: +1 919 754 3701 PO Box 13588 Research Triangle Park NC 27709 USA
rhel-sg(PT_BR)-3-Print-RHI (2003-07-25T17:12)
Copyright © 2003 Red Hat, Inc. Este material pode ser distribuído somente sob os termos e condições definidos na ’Open
Publication License’, versão 1.0 ou mais recente (a versão mais recente está disponível em
http://www.opencontent.org/openpub/).
É proibida a distribuição de versões substancialmente modificadas deste documento sem a permissão explícita do titular dos
direitos autorais.
É proibida a distribuição total ou parcial do trabalho envolvido neste manual, em qualquer formato de livro (papel), para fins
comerciais, sem a autorização prévia do titular dos direitos autorais.
Red Hat, Red Hat Network, o logo "Shadow Man" da Red Hat, RPM, Maximum RPM, o logo RPM, Linux Library,
PowerTools, Linux Undercover, RHmember, RHmember More, Rough Cuts, Rawhide e todas as marcas baseadas na Red Hat
e logos são marcas registradas ou marcas registradas da Red Hat, Inc. nos Estados Unidos da América e em outros países.
Linux é uma marca registrada de Linus Torvalds.
Motif e UNIX são marcas registradas do The Open Group.
Intel e Pentium são marcas registradas da Intel Corporation. Itanium e Celeron são marcas da Intel Corporation.
AMD, Opteron, Athlon, Duron e K6 são marcas registradas da Advanced Micro Devices, Inc.
Netscape é uma marca registrada da Netscape Communications Corporation nos Estados Unidos da América e em outros
países.
Windows é uma marca registrada da Microsoft Corporation.
SSH e Secure Shell são marcas da SSH Communications Security, Inc.
FireWire é uma marca da Apple Computer Corporation.
IBM, AS/400, OS/400, RS/6000, S/390 e zSeries são marcas registradas da International Business Machines Corporation.
eServer, iSeries e pSeries são marcas da International Business Machines Corporation.
Todas as outras marcas e direitos autorais referidos neste são de propriedade de seus respectivos titulares.
O número do código de segurança GPG em [email protected] é:
CA 20 86 86 2B D6 9D FC 65 F6 EC C4 21 91 80 CD DB 42 A6 0E
Índice
Introdução ............................................................................................................................................ i
1. Convenções de Documentos ................................................................................................. ii
2. Mais por vir.......................................................................................................................... iv
2.1. Envie-nos Seu Feedback ........................................................................................ v
I. Uma Introdução Genérica à Segurança ......................................................................................... i
1. Visão Geral de Segurança ..................................................................................................... 1
1.1. O que é Segurança em Computadores? ................................................................. 1
1.2. Controles de Segurança.......................................................................................... 5
1.3. Conclusão............................................................................................................... 6
2. Atacantes e Vulnerabilidades ................................................................................................ 7
2.1. Uma Breve História sobre Hackers........................................................................ 7
2.2. Ameaças à Segurança da Rede .............................................................................. 8
2.3. Ameaças à Segurança do Servidor......................................................................... 8
2.4. Ameaças à Segurança da Estação de Trabalho e PC Pessoal............................... 10
II. Configurando o Red Hat Enterprise Linux para Segurança................................................... 13
3. Atualizações de Segurança ................................................................................................. 15
3.1. Atualizando Pacotes............................................................................................. 15
4. Segurança da Estação de Trabalho...................................................................................... 21
4.1. Avaliando a Segurança da Estação de Trabalho................................................... 21
4.2. Segurança do BIOS e do Gestor de Início ........................................................... 21
4.3. Segurança da Senha ............................................................................................. 24
4.4. Controles Administrativos ................................................................................... 29
4.5. Serviços de Rede Disponíveis.............................................................................. 35
4.6. Firewalls Pessoais ................................................................................................ 37
4.7. Ferramentas de Comunicação de Segurança Melhorada ..................................... 38
5. Segurança do Servidor ........................................................................................................ 39
5.1. Protegendo Serviços com TCP Wrappers e xinetd ........................................... 39
5.2. Protegendo o Portmap.......................................................................................... 42
5.3. Protegendo o NIS ................................................................................................. 43
5.4. Protegendo o NFS ................................................................................................ 45
5.5. Protegendo o Servidor HTTP Apache ................................................................. 46
5.6. Protegendo o FTP ................................................................................................ 47
5.7. Protegendo o Sendmail ........................................................................................ 49
5.8. Verificando Quais Portas estão Escutando........................................................... 50
6. Redes Privadas Virtuais (Virtual Private Networks) ........................................................... 53
6.1. VPNs e Red Hat Enterprise Linux ....................................................................... 53
6.2. CIPE (Crypto IP Encapsulation).......................................................................... 53
6.3. Por que usar o CIPE? ........................................................................................... 54
6.4. Instalação do CIPE............................................................................................... 55
6.5. Configuração do Servidor CIPE........................................................................... 55
6.6. Configurando Clientes para o CIPE..................................................................... 56
6.7. Personalizando o CIPE ........................................................................................ 58
6.8. Gerenciamento da Chave do CIPE....................................................................... 59
6.9. IPsec..................................................................................................................... 60
6.10. Instalação do IPsec............................................................................................. 60
6.11. Configuração Máquina-a-Máquina do IPsec ..................................................... 61
6.12. Configuração Rede-a-Rede do IPsec ................................................................. 62
7. Firewalls.............................................................................................................................. 67
7.1. Netfilter e IPTables .............................................................................................. 68
7.2. Usando o IPTables ............................................................................................... 69
7.3. Filtragem Comum do iptables ......................................................................... 70
7.4. Regras FORWARD e NAT ....................................................................................... 71
7.5. DMZs e iptables .............................................................................................. 72
7.6. Vírus e Endereços IP Espionados (spoofed)........................................................ 73
7.7. IP6Tables.............................................................................................................. 73
7.8. Recursos Adicionais............................................................................................. 74
III. Avaliando Sua Segurança .......................................................................................................... 75
8. Avaliação de Vulnerabilidade ............................................................................................. 77
8.1. Pensando Como o Inimigo................................................................................... 77
8.2. Definindo Avaliação e Testes ............................................................................... 78
8.3. Avaliando as Ferramentas .................................................................................... 79
IV. Intrusões e Resposta a Incidentes ............................................................................................. 83
9. Detecção de Invasão............................................................................................................ 85
9.1. Definindo Sistemas de Detecção de Intrusão....................................................... 85
9.2. IDS baseado no servidor ...................................................................................... 85
9.3. IDS baseado em rede ........................................................................................... 88
10. Resposta ao Incidente ....................................................................................................... 91
10.1. Definindo Resposta ao Incidente ....................................................................... 91
10.2. Criando um Plano de Resposta ao Incidente...................................................... 91
10.3. Implementando o Plano de Resposta ao Incidente ............................................ 93
10.4. Investigando o Incidente .................................................................................... 93
10.5. Restaurando e Recuperando Recursos ............................................................... 96
10.6. Reportando o Incidente ...................................................................................... 97
V. Apêndices ...................................................................................................................................... 99
A. Proteção ao Hardware e à Rede ....................................................................................... 101
A.1. Topologias de Rede Segura............................................................................... 101
A.2. Segurança de Hardware..................................................................................... 104
B. Exploits Comuns e Ataques ............................................................................................. 107
C. Portas Comuns ................................................................................................................. 111
Índice Remissivo.............................................................................................................................. 125
Considerações finais........................................................................................................................ 131
Introdução
Bem-vindo ao Guia de Segurança do Red Hat Enterprise Linux!
O Guia de Segurança do Red Hat Enterprise Linux é desenvolvido para auxiliar usuários do Red
Hat Enterprise Linux a aprender os processos e práticas para proteger estações de trabalho e servidores de intrusões locais e remotas, exploits e atividades maldosas. O Guia de Segurança do Red
Hat Enterprise Linux detalha o planejamento e as ferramentas envolvidas na criação de um ambiente
computacional seguro para o centro de dados (data center), ambiente de trabalho e doméstico. Com o
conhecimento, vigilância e ferramentas apropriados, os sistemas rodando o Red Hat Enterprise Linux
podem ser totalmente funcionais e protegidos contra os métodos de intrusão e exploit mais comuns.
Este manual aborda detalhadamente diversos tópicos relacionados a segurança, incluindo:
•
Firewalls
•
Criptografia
•
Protegendo Serviços Críticos
•
Redes Privadas Virtuais (Virtual Private Networks)
•
Detecção de Intrusão
O manual é dividido nas partes seguintes:
•
Introdução Genérica à Segurança
•
Configurando o Red Hat Enterprise Linux para Segurança
•
Avaliando Sua Segurança
•
Intrusões e Resposta a Incidentes
•
Apêndice
Nós gostaríamos de agradecer Thomas Rude por suas generosas contribuições a este manual. Ele
escreveu os capítulos Avaliações de Vulnerabilidade e Resposta ao Incidente. Muito obrigado!
Este manual assume que você tem um conhecimento avançado do Red Hat Enterprise Linux. Se você
for um novo usuário ou tiver conhecimento básico a intermediário do Red Hat Enterprise Linux e
deseja mais informações sobre como utilizar o sistema, por favor consulte os seguintes manuais, que
abordam os aspectos fundamentais do Red Hat Enterprise Linux de forma mais detalhada que o Guia
de Segurança do Red Hat Enterprise Linux:
•
O Guia de Instalação do Red Hat Enterprise Linux traz informações sobre a instalação.
•
O Introdução à Administração de Sistemas Red Hat Enterprise Linux contém informações introdutórias para novos administradores de sistemas Red Hat Enterprise Linux.
•
O Guia de Administração do Sistema do Red Hat Enterprise Linux oferece informações detalhadas
sobre como configurar o Red Hat Enterprise Linux para servir suas necessidades particulares como
usuário. Este manual inclui alguns serviços que são abordados (sob o ponto de vista de segurança)
no Guia de Segurança do Red Hat Enterprise Linux.
•
Guia de Referência do Red Hat Enterprise Linux traz informações detalhadas para a consulta dos
usuários mais experientes quando necessária, ao contrário das instruções passo-a-passo.
As versões HTML, PDF e RPM dos manuais estão disponíveis no CD de Documentação do Red Hat
Enterprise Linux e online: http://www.redhat.com/docs/.
ii
Introdução
Nota
Apesar deste manual refletir as informações mais recentes possíveis, leia as Notas da Versão do Red
Hat Enterprise Linux para acessar as informações que não estavam disponíveis antes da finalização
de nossa documentação. Elas podem ser encontradas no CD 1 do Red Hat Enterprise Linux e online:
http://www.redhat.com/docs/.
1. Convenções de Documentos
Ao ler este manual, determinadas palavras estão representadas com fontes, tipos, tamanhos e pesos
diferentes. Este destaque é sistemático; palavras diferentes são representadas no mesmo estilo para
indicar sua inclusão em uma categoria específica. Os tipos de palavras representadas desta maneira
incluem as seguintes:
comando
Os comandos do Linux (e comandos de outros sistemas operacionais, quando usados) são representados desta maneira. Este estilo indica que você pode digitar a palavra ou frase na linha de
comandos e pressionar [Enter] para invocar um comando. Às vezes o comando contém palavras
que serão exibidas em um estilo diferente por si só (como nomes de arquivos). Nestes casos,
estas são consideradas parte do comando, e então a frase inteira será exibida como um comando.
Por exemplo:
Use o comando cat testfile para visualizar o conteúdo de um arquivo chamado testfile,
no diretório de trabalho atual.
nome do arquivo
Nomes de arquivos, diretórios, localidades de arquivos e nomes de pacotes RPM são representados desta maneira. Este estilo indica que existe um determinado arquivo ou diretório com aquele
nome no seu sistema. Exemplos:
O arquivo .bashrc do seu diretório ’home’ contém definições da janela de comandos tipo bash
e apelidos para seu uso pessoal.
O arquivo /etc/fstab contém informações sobre os dispositivos e sistemas de arquivo diferentes do sistema.
Instale o RPM webalizer se você quiser usar um programa de análise do arquivo de registro do
servidor Web.
aplicação
Este estilo indica que o programa é uma aplicação direcionada ao usuário final (ao contrário do
software do sistema). Por exemplo:
Use o Mozilla para navegar na Web.
[tecla]
Uma tecla do teclado é exibida neste estilo. Por exemplo:
Para usar a tecla complementar [Tab], digite um caracter e então pressione a tecla [Tab]. Seu
terminal exibe uma lista dos arquivos contidos no diretório que começam com esta letra.
[tecla]-[combinação]
Uma combinação de sequência de teclas é representada desta maneira. Por exemplo:
A combinação de teclas [Ctrl]-[Alt]-[Espaço] termina sua sessão gráfica, retornando à tela ou ao
console da autenticação gráfica.
Introdução
iii
texto exibido em uma interface GUI (gráfica)
Um título, palavra ou frase na tela ou janela da interface GUI é exibida neste estilo. O texto
exibido neste estilo é usado na identificação de uma tela GUI específica ou um elemento de uma
tela GUI (como o texto associado a uma caixa de verificação ou campo). Exemplo:
Selecione a caixa de verificação Solicitar Senha se você deseja que seu protetor de tela solicite
uma senha antes de ser desbloqueado.
nível superior de um menu em uma tela ou janela GUI
Uma palavra neste estilo indica que a palavra está no nível superior de um menu suspenso (pulldown menu). Se você clicar na palavra na tela GUI, o resto do menu deverá aparecer. Por exemplo:
Abaixo de Arquivo em um terminal do GNOME, você verá a opção Nova Aba, que permite a
você abrir diversos prompts de comando na mesma janela.
Se você precisar digitar uma sequência de comandos a partir de um menu GUI, eles são exibidos
como o exemplo a seguir:
Vá para Botão do Menu Principal (no Painel) => Programação => Emacs para iniciar o editor
de texto Emacs.
botão em uma tela ou janela GUI
Este estilo indica que o texto pode ser encontrado em um botão clicável de uma tela GUI. Por
exemplo:
Clique no botão Voltar para retornar à última página web que você visitou.
output do computador
Texto neste estilo indica o texto exibido em uma janela de comandos, como mensagens de erro e
respostas a comandos. Por exemplo:
O comando ls exibe o conteúdo de um diretório:
Desktop
Mail
about.html
backupfiles
logs
mail
paulwesterberg.png
reports
O output exibido em resposta ao comando (neste caso, o conteúdo do diretório) é apresentado
neste estilo.
prompt
Um prompt (ou janela de comandos), uma forma computacional de dizer que o computador está
pronto para você inserir algo (input), será exibido desta maneira. Exemplos:
$
#
[stephen@maturin stephen]$
leopard login:
input do usuário
O texto que o usuário precisa digitar, na linha de comandos ou em uma caixa de texto em uma
tela GUI, é apresentado neste estilo. No exemplo a seguir, text é exibido neste estilo:
Para inicializar seu sistema no programa de instalação em modo texto, você deve digitar o comando text no prompt boot:.
iv
Introdução
substituível
Texto usado para exemplos que devem ser subtituídos com dados providos pelo usuário são
apresentados neste estilo. No exemplo a seguir, version-number é exibido neste estilo:
O
diretório da fonte do kernel é /usr/src/ version-number /,
version-number é a versão do kernel instalado neste sistema.
onde
Adicionalmente, nós utilizamos diversas estratégias diferentes para chamar sua atenção a determinadas partes da informação. De acordo com o quão crucial as informações são para seu sistema, elas são
apresentadas como uma nota (lembrete), dica, importante, atenção ou um aviso. Por exemplo:
Nota
Lembre-se que o Linux é sensível a maiúsculas e minúsculas. Em outras palavras, uma rosa não é
uma ROSA nem uma rOsA.
Dica
O diretório /usr/share/doc/ contém documentação adicional para os pacotes instalados em seu
sistema.
Importante
Se você modificar o arquivo de configuração do DHCP, as alterações não tomarão efeito até que
você reinicie o daemon do DHCP.
Atenção
Não execute tarefas de rotina como root — use uma conta de usuário comum, a não ser que você
precise usar a conta root para tarefas de administração do sistema.
Aviso
Cuidado para remover somente as partições necessárias do Red Hat Enterprise Linux. Remover
outras partições pode resultar na perda de dados ou num ambiente de sistema corrompido.
Introdução
v
2. Mais por vir
O Guia de Segurança do Red Hat Enterprise Linux é parte do crescente comprometimento da Red
Hat em prover suporte e informações úteis e oportunos para usuários do Red Hat Enterprise Linux.
Conforme novas ferramentas e metodologias de segurança são criadas, este guia será expandido para
incluí-las.
2.1. Envie-nos Seu Feedback
Se você encontrar um erro de digitação no Guia de Segurança do Red Hat Enterprise Linux ou se
pensar numa maneira de aprimorar este manual, nós gostaríamos de saber! Por favor, submeta um
relatório ao Bugzilla (http://bugzilla.redhat.com/bugzilla/) sobre o componente rhelsg.
Certifique-se de mencionar o identificador do manual:
rhel-sg(PT_BR)-3-Print-RHI (2003-07-25T17:12)
Ao mencionar o identificador, nós saberemos exatamente qual versão do manual você possui.
Se você tiver alguma sugestão para melhorar a documentação, tente ser o mais específico possível.
Se encontrou um erro, por favor inclua o número da seção e trechos de texto próximo ao erro para
podermos encontrá-lo facilmente.
vi
Introdução
I. Uma Introdução Genérica à Segurança
Esta parte traz a definição de segurança da informação, sua história e o setor que foi desenvolvido em
torno desta questão. Também aborda alguns dos riscos enfrentados por usuários e administradores de
computadores.
Índice
1. Visão Geral de Segurança .............................................................................................................. 1
2. Atacantes e Vulnerabilidades......................................................................................................... 7
Capítulo 1.
Visão Geral de Segurança
Devido ao crescente suporte de computadores de rede poderosos para fazer negócios e manter controle
de nossas informações pessoais, as indústrias têm sido constituídas com a prática de segurança nos
computadores e nas redes. Empreendimentos têm solicitado o conhecimento e habilidades de peritos
em segurança para auditar sistemas apropriadamente e customizar soluções para os requerimentos
operacionais das organizações. Já que a maioria das organizações são dinâmicas por natureza, com
funcionários acessando os recursos de IT da empresa localmente e remotamente, a necessidade de
ambientes de rede seguros se tornou ainda mais acentuada.
Infelizmente, a maioria das empresas (assim como usuários individuais) encaram a segurança como
uma preocupação em segundo plano, um processo visto em favor de questões de aumento de poder, produtividade e orçamentárias. Implementações de segurança apropriadas são frequentemente
executadas postmortem — após uma intrusão não autorizada já ter ocorrido. Peritos em segurança
concordam que as medidas corretas, tomadas antes de conectar um site a uma rede não confiável como a Internet - é um meio efetivo de impedir a maioria das tentaivas de intrusão.
1.1. O que é Segurança em Computadores?
Segurança em computadores é um termo geral que abrange uma grande área da computação e processamento de dados. Setores que dependem de sistemas de computador e redes para conduzir transações
diárias de negócios e acessar informações cruciais, encaram em seus dados como uma parte importante de seus recursos. Diversos termos e medidas foram inseridos em nosso cotidiano, tais como custo
total de propriedade (total cost of ownership - TCO) e qualidade de serviço (quality of service - QoS).
Nestas medidas, setores calculam aspectos como integridade de dados e alta disponibilidade como
parte de seus custos de planejamento e gerenciamento de processos. Em alguns setores, tal como comércio eletrônico, a disponibilidade e confiabilidade de dados pode ser a diferença entre sucesso e
fracasso.
1.1.1. Como surgiu a Segurança em Computadores?
Muitos leitores talvez lembrem do filme "Jogos de Guerra," com Matthew Broderick no papel de um
estudante colegial que invade o supercomputador do Departamento de Defesa dos EUA (Department
of Defense - DoD), e inadvertidamente causa uma ameaça nuclear. Neste filme, Broderick usa seu
modem para discar ao computador do DoD (chamado WOPR) e brinca de jogos com o software artificialmente inteligente controlando todos os armazéns de mísseis nucleares. O filme foi lançado durante
a "guerra fria" entre a ex União Soviética e os EUA e foi considerado um sucesso em seu lançamento
em 1983. A popularidade do filme inspirou muitas pessoas e grupos a começar a implementar alguns
dos métodos que o jovem protagonista utilizou para violar sistemas restritos, inclusive o que é conhecido como war dialing — um método de busca de números de telefone para conexões de modem
analógicos em uma combinação de determinado prefixo de área e prefixo de telefone.
Mais de 10 anos depois, após uma busca multi-jurisdição de quatro anos envolvendo o FBI (Federal
Bureau of Investigation) e a ajuda de profissionais de computação em todo o país, o notório cracker
Kevin Mitnick foi preso e processado por 25 fraudes de contas de computador e acesso a dispositivos,
que resultaram em perdas de propriedade intelectual e código-fonte da Nokia, NEC, Sun Microsystems, Novell, Fujitsu e Motorola estimadas em US$80 milhões. Na época, o FBI considerou-o como
o maior crime relacionado a computadores na história dos EUA. Ele foi condenado e sentenciado a
68 meses de prisão por seus crimes, dos quais serviu 60 meses antes de sua condicional em 21 de
Janeiro de 2000. Ele foi proibido de usar computadores ou prestar qualquer consultoria relacionada a
computadores até 2003. Investigadores dizem que Mitnick era perito em engenharia social — utilizar
indivíduos para ganhar acesso a senhas e sistemas usando credenciais falsificadas.
2
Capítulo 1. Visão Geral de Segurança
A segurança da informação evoluiu através dos anos devido à crescente dependência de redes públicas
para expor informações pessoais, financeiras e outras informações restritas. Há diversos casos como
o de Mitnick e o de Vladamir Levin (consulte a Seção 1.1.2 para mais informações) que surgiram em
empresas de todos os setores para repensar a maneira com que lidam com a transmissão e exposição de
informações. A popularidade da Internet foi um dos aspectos mais importantes que exigiu um esforço
intenso em segurança de dados.
Um número cada vez maior de pessoas está utilizando seu computador pessoal para acessar os recursos
que a Internet oferece. De pesquisas e recuperação de informações a correspondência eletrônica e
transações comerciais, a Internet é considerada um dos desenvolvimentos mais importantes do século
XX.
A Internet e seus protocolos mais antigos, no entanto, foram desenvolvidos como um sistema baseado
em confiança. Ou seja, o Protocolo de Internet (IP) não foi desenvolvido para ser intrinsicamente seguro. Não há padrões de segurança aprovados dentro do esquema de comunicação TCP/IP, deixando-o
aberto a usuários maldosos e processos através da rede. O desenvolvimento de modems tornou a comunicação via Internet mais segura, mas ainda há diversos incidentes que ganham atenção nacional e
nos alertam para o fato de que nada é completamente seguro.
1.1.2. Cronologia da Segurança em Computadores
Diversos eventos-chave contribuíram para o nascimento e crescimento da segurança em computadores. Veja a seguir uma lista de alguns dos eventos mais importantes na história da computação e
segurança da informação e sua importância hoje.
1.1.2.1. Os Anos 60
•
Estudantes do Massachusetts Institute of Technology (MIT) formaram o Tech Model Railroad Club
(TMRC), que começou a explorar e programar o sistema de computadores de grande porte PDP-1
da escola. O grupo evetualmente usa o termo "hacker" no contexto em que é conhecido hoje.
•
O DoD (Departamento de Defesa dos EUA) cria a Rede da Agência de Projetos de Pesquisa
Avançada (Advanced Research Projects Agency Network - ARPANet), que ganha popularidade
em pesquisas e círculos acadêmicos como um condutor do intercâmbio eletrônico de informações
e dados. Isto pavimentou o caminho para a criação da rede de transporte conhecida hoje como
Internet.
•
Ken Thompson desenvolve o sistema operacional UNIX, amplamente aclamado como o sistema
operacional mais "hacker-friendly" devido às suas ferramentas acessíveis a desenvolvedores e compiladores e também à sua comunidade de usuários colaborativos. Quase ao amesmo tempo, Dennis
Ritchie desenvolve a linguagem de programação C, discutivelmente a linguagem hacking mais popular da história dos computadores.
1.1.2.2. Os Anos 70
•
Bolt, Beranek e Newman, uma empresa de pesquisa e desenvolvimento em computadores para o
governo e indústria, desenvolve o protocolo telnet, uma extensão pública da ARPANet. Isto abre
portas para o uso público de redes de dados antes restrito a empresas do governo e pesquisadores
acadêmicos. O Telnet, no entanto, também é discutivelmente o protocolo mais inseguro para redes
públicas, de acordo com diversos pesquisadores em segurança.
•
Steve Jobs e Steve Wozniak fundaram a Apple Computer e começaram a comercializar o computador pessoal (Personal Computer - PC). O PC é o trampolim para diversos usuários maldosos
aprenderem a arte do cracking remoto em sistemas, usando hardware de comunicação comum de
PC, como modems analógicos e war dialers.
Capítulo 1. Visão Geral de Segurança
•
3
Jim Ellis e Tom Truscott criam o USENET, sistema de estilo mural (bulletin-board) para comunicação eletrônica entre usuários díspares. O USENET rapidamente se torna um dos meios mais
populares de intercâmbio de idéias em computação, redes, e, obviamente, cracking.
1.1.2.3. Os Anos 80
•
A IBM desenvolve e comercializa PCs baseados no microprocessador Intel 8086, uma arquitetura
relativamente barata que trouxe a computação do escritório para casa. Isto serve para transformar o
PC numa ferramenta comum e acessível, que era relativamente poderosa e fácil de usar, ajudando a
proliferação deste tipo de hardware nos lares e escritórios de usuários maldosos.
•
O Protocolo de Controle de Transmissão (Transmission Control Protocol), desenvolvido por Vint
Cerf, é dividido em duas partes distintas. O Protocolo de Internet (IP) surge desta divisão, e o
protocolo combinado TCP/IP torna-se o padrão para toda a comunicação via Internet de hoje.
•
Baseada em desenvolvimentos na área de phreaking, ou explorando e hackeando o sitema de telefonia, a revista 2600: The Hacker Quarterly é criada e começa a abordar temas como o cracking e
redes de computadores para uma grande audiência.
•
A gang 414 (assim nomeada em função do código de área de onde ela hackeava) é surpreendida
pelas autoridades após nove dias de cracking no qual a gang violou os sistemas de uma localização
altamente secreta, o Los Alamos National Laboratory, um local de pesquisas de armas nucleares.
•
’The Legion of Doom’ e o ’Chaos Computer Club’ são dois grupos pioneiros de crackers que
começam a explorar as vulnearbilidades em computadores e redes eletrônicas de dados.
•
O Ato de Fraude e Abuso de Computador de 1986 (Computer Fraud and Abuse Act) foi votado
e transformado em lei pelo congresso americano baseado nos exploits de Ian Murphy, também
conhecido com Capitão Zap, que violou computadores militares, roubou informações de bancos
de dados de pedidos de mercadorias e utilizou os quadros restritos de distribuição de telefone do
governo para efetuar ligações telefônicas.
•
Baseado no Ato de Fraude e Abuso de Computador, a côrte pôde condenar Robert Morris, um graduando, por distribuir o vírus Morris Worm para mais de 6.000 computadores conectados à Internet.
O próximo caso mais proeminente julgado sob este ato foi o de Herbert Zinn, um colegial que abandonou os estudos, que crackeou e fez mal-uso dos sistemas da AT&T e do DoD (Departamento de
Defesa dos EUA).
•
Baseado na preocupação de que a órdea do Morris Worm pudesse ser replicada, é criada a Equipe
de Resposta a Emergências de Computador (Computer Emergency Response Team - CERT) para
alertar usuários das questões de segurança em redes.
•
Clifford Stoll escreve The Cuckoo’s Egg, o resultado de sua investigação sobre crackers que exploraram seu sistema.
1.1.2.4. Os Anos 90
•
A ARPANet é desativada. O tráfego desta rede é transferido para a Internet.
•
Linus Torvalds desenvolve o kernel do Linux para utilização com o sistema operacional GNU. O
amplo desenvolvimento e adoção do Linux se deve, em grande parte, à colaboração e comunicação
de usuários e desenvolvedores via Internet. Devido às suas raízes no Unix, o Linux é mais popular
entre hackers e administradores que o consideram muito útil para elaborar alternativas seguras para
servidores legados que rodam sistemas operacionais proprietários (com código fechado).
•
O navegador (browser) gráfico é criado e estimula uma demanda exponencialmente alta por acesso
público à Internet.
4
Capítulo 1. Visão Geral de Segurança
•
Vladimir Levin é cúmplice da transfência ilegal de US$10 milhões em fundos para diversas contas
crackeando o banco de dados central do CitiBank. Levin é preso pela Interpol e quase todo o
dinheiro é recuperado.
•
Possivelmente, o precursor de todos os crackers é Kevin Mitnick, que hackeou diversos sistemas
corporativos roubando tudo - de informações pessoais de celebridades a mais de 20.000 números
de cartões de crédito e código fonte de software proprietário. Ele é preso, condenado por fraude e
fica 5 anos na prisão.
•
Kevin Poulsen e um cúmplice desconhecido manipulam sistemas de telefonia de uma estação de
rádio para ganhar carros e prêmios em dinheiro. Ele é condenado por fraude e sentenciado a 5 anos
de prisão.
•
As histórias de cracking e phreaking se tornam lendas; e muitos crackers em potencial se reúnem
na convenção anual DefCon para celebrar o cracking e trocar idéias entre seus pares.
•
Um estudante israelense de 19 anos é preso e condenado por coordenar várias violações aos sistemas do governo americano durante o conflito no Golfo Pérsico. Oficiais militares o chamam de
"o ataque mais organizado e sistemático" a sistemas de governo na história dos EUA.
•
A Procuradora dos EUA Janet Reno, em resposta às crescentes violações de segurança aos sistemas
do governo, estabelece o Centro de Proteção à Infraestrutura Nacional (National Infrastructure Protection Center).
•
Satélites de comunicação ingleses são tomados e controlados por criminosos desconhecidos. O
governo britânico eventualmente se apropria do controle dos satélites.
1.1.3. A Segurança Hoje
Em Fevereiro de 2000, um ataque Distribuído Denial of Service (Distributed Denial of Service DDoS) foi espalhado a vários servidores de sites de maior tráfego na Internet. O ataque tomou controle do yahoo.com, cnn.com, amazon.com, fbi.gov e vários outros sites completamente inacessíveis
para usuários normais, pois bloqueou roteadores por várias horas com transferências de grandes pacotes ICMP, também chamados de ping flood. O ataque foi de autoria desconhecida usando programas
criados especialmente e amplamente disponíveis , que sannearam servidores de rede vulneráveis, instalaram aplicações cliente chamadas trojans nos servidores e marcaram um ataque com todos os servidores infectados inundando os sites vítimas e tornando-os indisponíveis. Muitos culparam o ataque
à obsolescência da maneira como roteadores e protocolos usados são estruturados para aceitar todos
os dados externos, não importando de onde ou para qual propósito os pacotes são enviados.
Isso nos traz ao novo milênio, um tempo em que aproximadamente 400 milhões de pessoas usam ou
usaram a Internet no mundo. Ao mesmo tempo:
•
Em dia qualquer, são estimados 225 grandes incidentes de exploração de vulnerabilidade reportados
ao Centro de Coordenação da CERT na Universidade Carnegie Mellon [fonte: http://www.cert.org]
•
Em 2002, o número de incidentes reportados à CERT pulou para 82.094, de 52.658 em 2001. No
momento da elaboração deste manual, o número de incidentes reportados apenas no primeiro quarto
de 2003 é de 42.586. [fonte: http://www.cert.org]
•
O impacto econômico em nível mundial dos três vírus mais perigosos da Internet nos últimos dois
anos foi estimado em US$13.2 bilhões. [fonte: http://www.newsfactor.com/perl/story/16407.html]
A segurança em computadores se tornou uma despesa quantificável e justificável em todos os orçamentos de IT. Empresas que requerem iontegridade de dados e alta disponibilidade, evocam as habilidades de administradores de sistemas, desenvolvedores e engenheiros para garantir confiabilidade de
seus sistemas, serviços e informações. Cair nas mãos de usuários, processos ou ataques coordenados
maldosos é uma ameaça direta ao sucesso da empresa.
Capítulo 1. Visão Geral de Segurança
5
Infelizmente, a segurança de sistemas e redes pode ser uma tarefa difícil, que requer o conhecimento
complexo de como a empresa encara, usa, manipula e transmite suas informações. Entender a maneira
como a empresa (e as pessoas que a constituem) conduz os negócios é primordial para a implementação de um plano de segurança apropriado.
1.1.4. Padronizando a Segurança
Empresas de todos os setores dependem de regulamentações e padrões definidos por associações como a Associação Médica Americana (American Medical Association - AMA) ou o Instituto de Engenheiros Elétricos e Eletrônicos (Institute of Electrical and Electronics Engineers - IEEE). As mesmas
idéias valem para a segurança da informação. Muitas consultorias e fabricantes da área de segurança
concordam com o modelo de segurança padrão conhecido como CIA, ou Confidentiality, Integrity,
and Availability (Confidencialidade, Intergridade e Disponibilidade). Esse modelo de três pilares é
um componente geralmente aceito para avaliar riscos às informações delicadas e para estabelecer
uma política de segurança. A explicação a seguir detalha o modelo CIA:
•
Confidencialidade — Informações delicadas devem estar disponíveis apenas para um conjunto prédefinido de indivíduos. A transmissão ou o uso não autorizado de informações devem ser restritos.
Por exemplo: a confidencialidade da informação garante que as informações pessoais ou financeiras
de um cliente não seja obtida por um indivíduo não autorizado para propósitos maldosos como
roubo de identidade ou fraude de crédito.
•
Integridade — As informações não devem ser alteradas de modo a torná-las incompletas ou incorretas. Usuários não autorizados devem ter restrições para modificar ou destruir informações
delicadas.
•
Disponibilidade — As informações devem estar acessíveis a usuários autorizados sempre que precisarem. Disponibilidade é a garantia de que aquela informação pode ser obtida com uma frequencia
e periodicidade pré-definidas. Isto é frequentemente medido em termos de porcentagens e definido
formalmente nos Acordos de Nível de Serviço (Service Level Agreements - SLAs) usados por
provedores de serviços de rede e seus clientes corporativos.
1.2. Controles de Segurança
A segurança em computadores é frequentemente dividida em três categorias principais, comumente
referidas como controles:
•
Física
•
Técnica
•
Administrativa
Estas três categorias abrangentes definem os objetivos principais de uma implementação de segurança
apropriada. Dentre estes controles há sub-categorias que detalham minuciosamente os controles e
como implementá-los.
1.2.1. Controles Físicos
O controle físico é a implementação de medidas de segurança em uma estrutura definida usada para
deter ou evitar acesso não autorizado a material delicado. Alguns exemplos de controles físicos:
•
Câmeras de vigilância de circuito fechado
•
Sistemas de alarme térmicos ou de movimento
6
Capítulo 1. Visão Geral de Segurança
•
Guardas de segurança
•
Identidades com foto
•
Portas de aço trancadas com fechaduras ’dead-bolt’
1.2.2. Controles Técnicos
O controle técnico uitilizam a tecnologia como base para controlar o acesso e o uso de dados delicados
através de uma estrutura física e através de uma rede. Os controles técnicos têm um escopo de grande
alcance e incluem tecnologias como:
•
Criptografia
•
Cartões inteligentes
•
Autenticação de rede
•
Listas de controle de acesso (Access control lists - ACLs)
•
Software de auditoria de integridade de arquivos
1.2.3. Controles Administrativos
Os controles administrativos definem os fatores humanos da segurança. Envolvem todos os níveis de
pessoal em uma empresa e determinam quais usuários têm acesso a quais recursos e informações,
através dos seguintes meios:
•
Treinamento e conscientização
•
Preparação para desastres e planos de recuperação
•
Recrutamento de pessoal e estratégias de separação
•
Registro e avaliação de pessoal
1.3. Conclusão
Agora que você aprendeu um pouco sobre as origens, razões e aspectos da segurança, pode determinar
o curso de ações apropriado em relação ao Red Hat Enterprise Linux. É importante saber quais fatores
e condições compoem a segurança para planejar e implementar uma estratégia apropriada. Com estas
informacões em mente, o processo pode ser formalizado e o caminho torna-se mais claro conforme
você aprofunda nas especificidades do processo de segurança.
Capítulo 2.
Atacantes e Vulnerabilidades
Para planejar e implementar uma boa estratégia de segurança, primeiramente saiba de algumas das
razões que motivaram atacantes a explorar e comprometer sistemas. Mas antes de detalhar estas questões, precisamos definir a terminologia utilizada ao identificar um atacante.
2.1. Uma Breve História sobre Hackers
O significado moderno da palavra hacker tem origem nos anos 60 e no ’Tech Model Railroad Club’
do Instituto de Tecnologia de Massachusetts (MIT), que desenvolveu locomotivas de grande escala e
detalhes complexos. Hacker era o nome usado para os membros do clube que descobriram um novo
truque ou uma nova forma de resolver um problema.
Desde então o termo hacker descreve de tudo, de viciados em computador a programadores talentosos.
Um aspecto comum dentre a maioria dos hackers é a vontade de explorar detalhadamente as funções
dos sistemas e redes de computador com pouco ou nenhum estímulo exterior. Desenvolvedores de
software open source geralmente consideram seus colegas e a si próprios como hackers e utilizam
esta palavra como um termo respeitável.
Tipicamente, os hackers seguem uma espécie de ética do hacker, que dita que a missão por conhecimento e informação é essencial, e compartilhar este conhecimento é dever dos hackers para com a
comunidade. Durante esta missão por conhecimento, alguns hackers se divertem com desafios acadêmicos em furar controles de segurança em sistemas de computadores. Por esta razão, a imprensa
comumente usa o termo hacker para descrever aqueles que acessam sistemas e redes ilicitamente com
intenções inescrupulosas, maléficas ou criminosas. O termo mais correto para este tipo de hacker de
computador é cracker — um termo criado por hackers em meados dos anos 80 para diferenciar as
duas comunidades.
2.1.1. Tonalidades de Cinza
Há diversos grupos distintos de indivíduos que encontram e exploram vulnerabilidades em redes e
sistemas. Eles são descritos pela tonalidade do chapéu que "vestem" ao realizar suas investigações em
segurança, e essa tonalidade indica suas intenções.
O hacker de chapéu branco é aquele que testa redes e sistemas para examinar sua performance e
determinar o quão vulneráveis são às intrusões. Geralmente, hackers de chapéu branco violam seus
próprios sistemas ou sistemas de um cliente que o empregou especificamente para auditar a segurança.
Pesquisadores acadêmicos e consultores profissionais de segurança são dois exemplos de hackers de
chapéu branco.
Um hacker de chapéu preto é sinônimo de um cracker. Em geral, crackers são menos focados em
programação e no lado acadêmico de violar sistemas. Eles comumente confiam em programas de
cracking e exploram vulnerabilidades conhecidas em sistemas para descobrir informações importantes
para ganho pessoal ou para danificar a rede ou sistema alvo.
O hacker de chapéu cinza, por outro lado, tem as habilidades e intenções de um hacker de chapéu
branco na maioria dos casos, mas por vezes utiliza seu conhecimento para propósitos menos nobres.
Um hacker de chapéu cinza pode ser descrito como um hacker de chapéu branco que às vezes veste
um chapéu preto para cumprir sua própria agenda.
Hackers de chapéu cinza tipicamente se enquadram em outro tipo de ética, que diz ser aceitável violar
sistemas desde que o hacker não cometa roubo ou infrinja a confidencialidade. Alguns argumentam,
no entanto, que o ato de violar um sistema por si só já é anti-ético.
8
Capítulo 2. Atacantes e Vulnerabilidades
Independentemente da intenção do intruso, é importante saber das fraquezas que um cracker geralmente tentará explorar. O restante do capítulo foca nestas questões.
2.2. Ameaças à Segurança da Rede
Práticas ruins ao configurar os seguintes aspectos de uma rede podem aumentar os riscos de um ataque.
2.2.1. Arquiteturas Inseguras
Uma rede mal configurada é um ponto de entrada básico para usuários não autorizados. Deixar uma
rede local aberta baseada na confiança e vulnerável à Internet, altamente insegura, é o mesmo que
deixar uma porta entreaberta em uma vizinhança perigosa — talvez nada aconteça por um período,
mas eventualmente alguém explorará a oportunidade.
2.2.1.1. Redes de Transmissão
Administradores de sistemas frequentemente falham em preceber a importância do hardware de rede
em seus esquemas de segurança. Componentes de hardware simples como hubs e roteadores baseiamse no princípio da transmissão ou ’non-switched’, ou seja, sempre que um nódulo transmitir dados
através da rede para um nódulo receptor, o hub ou roteador envia uma transmissão dos pacotes de
dados até que o nódulo receptor receba e processe os dados. Este método é o mais vulnerável para
lidar com protocolo de resolução (arp) ou controle de acesso à mídia (media access control - MAC), e
lidar com spoofing de endereços de ambos - intrusos externos e usuários não autorizados em nódulos
locais.
2.2.1.2. Servidores Centralizados
Outra armadilha de rede em potencial é o uso da computação centralizada. Uma forma comum de
corte de gastos em muitas empresas é consolidar todos os serviços em apenas uma máquina poderosa.
Isto pode ser conveniente, pois é mais fácil de gerenciar e custa bem menos que configurações de
servidores múltiplos. No entanto, um servidor centralizado apresenta apenas um ponto único de falha
na rede. Se o servidor central for comprometido, pode danificar a rede ou inutilizá-la, um cenário
propício para a manipulação ou roubo de dados. Nestas situações um servidor central torna-se uma
porta aberta, permitindo acesso à toda rede.
2.3. Ameaças à Segurança do Servidor
A segurança do servidor é tão importante quanto a segurança da rede porque os servidores frequentemente armazenam grande parte das informações vitais de uma empresa. Se um servidor for comprometido, todo o seu conteúdo pode ficar disponível para o cracker roubar ou manipular como quiser.
As seções a seguir detalham algumas das principais questões.
2.3.1. Serviços Não Usados e Portas Abertas
Uma instalação completa do Red Hat Linux contém até 1200 aplicações e pacotes de bibliotecas.
No entanto, a maioria dos adminstradores de servidor não optam por instalar todos os pacotes da
distribuição; preferem, ao invés disso, instalar os pacotes básicos, incluindo diversas aplicações para
servidor.
Uma ocorrência comum dentre administradores de sistemas é instalar o sistema operacional sem prestar atenção em quais pacotes realmente estão sendo instalados. Isto pode ser problemático, pois servi-
Capítulo 2. Atacantes e Vulnerabilidades
9
ços desnecessários podem ser instalados, configurados com opções default e possivelmente acionados.
Isto pode fazer com que serviços não quistos, como Telnet, DHCP ou DNS, sejam executados em um
servidor ou estação de trabalho sem que o adminstrador perceba, o que pode causar tráfego indesejado no servidor, ou até mesmo uma via potencial para crackers ao sistema. Veja Capítulo 5 para
informações sobre fechar portas e desativar serviços não utilizados.
2.3.2. Serviços Não Consertados (unpatched)
A maioria das aplicações de servidor inclusas em uma instalação default são sólidas, partes de software
testadas exaustivamente. Sendo utilizadas em ambientes de produção por muitos anos, seus códigos
têm sido constantemente refinados e muitos dos erros (bugs) foram encontrados e consertados.
Entretanto, não existe software perfeito e sempre há espaço para mais aprimoramentos. Além disso,
softwares mais novos frequentemente não são rigorosamente testados como se esperaria, porque chegaram recentemente a ambientes de produção ou porque talvez não sejam tão populares quanto outros
softwares de servidor.
Desenvolvedores e administradores de sistemas frequentemente encontram erros exploráveis em aplicações de servidor e publicam a informação em sites de rastreamento de erros e relacionados a segurança, como a lista de discussão ’Bugtraq’ (http://www.securityfocus.com) ou o site do ’Computer
Emergency Response Team’ (CERT) - (http://www.cert.org). Apesar destes mecanismos serem maneiras efetivas de alertar a comunidade sobre vulnerabilidades de segurança, é responsabilidade dos
adminsitradores consertarem seus sistemas prontamente. Isto requer uma atenção especial pois os
crackers têm acesso aos mesmos serviços de rastreamento de vulnerabilidades e utilizarão as informações para violar sistemas não consertados sempre que puderem. Uma boa administração de sistemas
requer vigilância, constante rastreamento de erros e manutenção apropriada do sistema para assegurar
um ambiente computacional mais seguro.
Consulte o Capítulo 3 para mais informações sobre como manter um sistema atualizado.
2.3.3. Administração Desatenta
Administradores que não consertam seus sistemas apropriadamente são grandes ameaças à segurança
de servidores. De acordo com o ’System Administration Network and Security Institute’ (SANS), a causa fundamental da vulnerabilidade na segurança de computadores é "delegar pessoas não treinadas para manter a segurança e não prover nem treinamento nem tempo para que o trabalho seja executado." 1
Isto se aplica tanto para administradores inexperientes quanto para administradores super-confiantes
ou desmotivados.
Alguns administradores falham em consertar seus servidores e estações de trabalho, enquanto outros
falham em monitorar as mensagens de registro do kernel do sistema ou tráfego de rede. Outro erro
comum é deixar senhas ou chaves default de serviços inalteradas. Por exemplo: alguns bancos de
dados têm senhas de administração default porque seus desenvolvedores assumem que o adminstrador
de sistemas irá alterá-las imediatamente após a instalação. Se um administrador de banco de dados
deixar de alterar esta senha, mesmo um cracker inexperiente pode utilizar uma senha default conhecida
para obter privilégios administrativos ao banco de dados. Estes são apenas alguns dos exemplos de
como uma administração desatenta pode desencadear no comprometimento de servidores.
2.3.4. Serviços Essencialmente Inseguros
Até a empresa mais atenta pode ser vítima de vulnerabilidades se os serviços de rede forem essencialmente inseguros. Por exemplo, há muitos serviços desenvolvidos sob a suposição de que são utilizados
através de redes confiáveis, mas essa suposição deixa de ser verdadeira a partir do momento em que o
serviço for disponibilizado através da Internet — que por si só é essencialmente não confiável.
1.
Fonte: http://www.sans.org/newlook/resources/errors.html
10
Capítulo 2. Atacantes e Vulnerabilidades
Um tipo de serviço de rede inseguro são aqueles que requerem nomes de usuário e senha não criptografados para autenticação. Telnet e FTP são dois serviços deste tipo. Se um software de ’sniffing’
de pacotes está monitorando o tráfego entre o usuário remoto e um servidor deste tipo, os nomes de
usuário e senhas podem ser interceptadas facilmente.
Tais serviços tmbém podem ser facilmente enquadrados no que a indústria da segurança chama de ataque ’man-in-the-middle’. Neste tipo de ataque um cracker redireciona o tráfego de rede, enganando
um servidor de nomes crackeado na rede, apontando-o para sua máquina ao invés do servidor pretendido. Quando alguém abrir uma sessão remota para este servidor, a máquina do atacante age como
um condutor invisível, situado discretamente entre o serviço remoto e o crédulo usuário, capturando
informações. Desta maneira um cracker consegue obter senhas administrativas e dados sem que o
servidor ou o usuário perceba.
Outra categoria de serviços inseguros são sistemas de arquivos de rede e serviços de informação, como
NFS ou NIS, desenvolvidos explicitamente para uso em LANs, mas que, infelizmente, têm seu uso
extendido para WANs (para usuários remotos). O NFS não tem, por default, nenhuma autenticação
ou mecanismos de segurança configurados para prevenir um cracker de montar o compartilhamento
do NFS e acessar qualquer coisa contida nele. O NIS também tem informações vitais que devem
ser conhecidas por qualquer computador ou rede, incluindo senhas e permissões de arquivo, em um
banco de dados ACSII ou DBM (derivado do ASCII) somente-texto. Um cracker que obtém acesso
a este banco de dados poderá acessar qualquer conta de usuário de uma rede, inclusive a conta do
administrador.
Por default, a Red Hat desliga tais serviços. No entanto, como administradores frequentemente são
forçados a usá-los, é essencial configurá-los cuidadosamente. Consulte o Capítulo 5 para mais informações sobre como configurar serviços de maneira segura.
2.4. Ameaças à Segurança da Estação de Trabalho e PC Pessoal
Estações de trabalho e PCs pessoais podem não ser tão propensos a ataques quanto redes ou servidores, mas já que estes comumente contêm informações delicadas, tais como dados de cartões de crédito,
também são alvos de crackers de sistemas. Estações de trabalho também podem ser violadas sem o
conhecimento do usuário e utilizadas por atacantes como máquinas "escravas" em ataques coordenados. Por estas razões, saber das vulnerabilidades de uma estação de trabalho pode poupar os usuários
da dor de cabeça de reinstalar o sistema operacional, ou pior, de recuperar-se do roubo de dados.
2.4.1. Senhas Ruins
Senhas ruins são uma das maneiras mais fáceis para um atacante obter acesso a um sistema. Para saber
mais sobre como evitar armadilhas comuns ao criar uma senha, veja a Seção 4.3.
2.4.2. Aplicações Cliente Vulneráveis
Apesar de um administrador poder ter um servidor completamente seguro e consertado, isto não significa que usuários remotos estão seguros ao acessá-lo. Por exemplo, se o servidor oferece os serviços
Telnet e FTP através de uma rede pública, um atacante pode capturar os nomes de usuário e senhas
(somente-texto) ao longo da rede, e então usar as informações da conta para acessar a estação de
trabalho do usuário remoto.
Mesmo ao utilizar protocolos seguros, como o SSH, um usuário remoto pode estar vulnerável a determinados ataques se ele não mantiver suas aplicações cliente atualizadas. Por exemplo, clientes da
versão 1 do SSH são vulneráveis a um ataque ’X-forwarding’ de servidores SSH maléficos. Uma vez
conectado ao servidor, o atacante pode capturar discretamente quaisquer teclas pressionadas e cliques
de mouse efetuados pelo cliente através da rede. Este problema foi consertado na segunda versão do
Capítulo 2. Atacantes e Vulnerabilidades
11
protocolo SSH, mas depende do usuário monitorar aplicações com tais vulnerabilidades e atualizá-las
quando necessário.
Capítulo 4 aborda mais detalhadamente os passos que administradores e usuários domésticos devem
seguir para limitar a vulnerabilidade de estações de trabalho.
12
Capítulo 2. Atacantes e Vulnerabilidades
II. Configurando o Red Hat Enterprise Linux para
Segurança
Esta parte informa e instrui os administradores sobre as técnicas e ferramentas apropriadas a usar para
proteger estações de trabalho e servidores do Red Hat Enterprise Linux e recursos de rede. Também
aborda como criar conexões seguras, bloquear portas e serviços, e como implementar a filtragem ativa
para evitar a intrusão na rede.
Índice
3. Atualizações de Segurança ........................................................................................................... 15
4. Segurança da Estação de Trabalho ............................................................................................. 21
5. Segurança do Servidor ................................................................................................................. 39
6. Redes Privadas Virtuais (Virtual Private Networks)................................................................. 53
7. Firewalls......................................................................................................................................... 67
Capítulo 3.
Atualizações de Segurança
Conforme as vulnerabilidades de segurança são descobertas, o software deve ser atualizado para limitar os riscos de segurança em potencial. Se o software é parte de um pacote de uma distribuição do
Red Hat Linux atualmente suportada, a Red Hat, Inc. está comprometida em lançar pacotes atualizados que consertem as vulnerabilidades assim que possível. Frequentemente, os comunicados de um
exploit de segurança são acompanhados de um conserto (ou código-fonte que conserte o problema).
Este conserto é então aplicado ao pacote do Red Hat Linux, testado pela equipe de controle de qualidade da Red Hat e lançado como uma atualização de errata. Entretanto, se o comunicado não inclui um
conserto, um desenvolvedor da Red Hat Linux trabalhará juntamente ao mantenedor do software para
consertar o problema. Após consertar o problema, o pacote é testado e lançado como uma atualização
de errata.
Se for lançada uma atualização de errata para um software utilizado em seu sistema, é altamente
recomendável que você atualize os pacotes afetados assim que possível, para mininmizar o tempo em
que seu sistema está potencialmente vulnerável.
3.1. Atualizando Pacotes
Ao atualizar o software de um sistema, é importante fazer o download da atualização de uma fonte confiável. Um atacante pode reconstruir facilmente um pacote com a mesma versão daquele que
supostamente resolverá o problema, mas com um exploit de segurança diferente no pacote, e depois
lançá-lo na Internet. Se isto acontecer, usar medidas de segurança, como checar os arquivos com o
RPM original, não detectará o exploit. Portanto, é muito importante que você apenas faça o download
de RPMs de fontes confiáveis, tais como Red Hat, Inc., e cheque a assinatura do pacote para verificar
sua integridade.
A Red Hat oferece duas maneiras de recuperar atualizações de erratas de segurança:
1. Fazer o download pela Red Hat Network.
2. Fazer o download do site de Erratas da Red Hat.
3.1.1. Usando a Red Hat Network
A Red Hat Network permite que você automatize a maior parte do processo de atualização. Ela determina quais pacotes são necessários para seu sistema, faz o download destes a partir de uma fonte
segura, verifica a assinatura RPM, para assegurar que os pacotes não foram corrompidos, e os atualiza.
A instalação do pacote pode ser feita imediatamente ou pode ser agendada durante um determinado
período de tempo.
A Red Hat Network requer um Perfil do Sistema para cada máquina a ser atualizada. O Perfil do
Sistema contém informações de hardware e software do sistema. Essa informação é mantida confidencialmente e não é distribuída para ninguém. É usada somente para determinar quais atualizações
de errata são aplicáveis para cada sistema. Sem o perfil, a Red Hat Network não pode determinar se
seu sistema precisa de atualizações. Quando uma errata de segurança (ou qualquer tipo de errata) é
lançada, a Red Hat Network envia um email com a descrição da errata assim como quais sistemas são
afetados por ela. Para aplicar a atualização, você pode usar o Agente de Atualizações Red Hat ou
agendar a atualização do pacote pelo site http://rhn.redhat.com.
16
Capítulo 3. Atualizações de Segurança
Dica
O Red Hat Enterprise Linux inclui o Ferramenta de Notificação de Alerta da Red Hat Network,
um ícone conveniente do painel que exibe alertas quando há uma atualização para um sistema
Red Hat Enterprise Linux. Consulte a seguinte URL para mais informações sobre o applet:
http://rhn.redhat.com/help/basic/applet.html
Para saber mais sobre os benefícios da Red Hat Network, consulte o Guia de
Referência da Red Hat Network (Red Hat Network Reference Guide) disponível em
http://www.redhat.com/docs/manuals/RHNetwork/ ou visite http://rhn.redhat.com.
Importante
Antes de instalar qualquer errata de segurança, certifique-se de ler todas as instruções especiais
contidas no relatório da errata e executá-las. Consulte a Seção 3.1.3 para instruções gerais sobre
como aplicar as alterações feitas por uma atualização de errata.
3.1.2. Usando o Site de Erratas da Red Hat
Quando relatórios de erratas de segurança são lançados, são publicados no site de Erratas da Red
Hat Linux http://www.redhat.com/apps/support/errata/. A partir desta página, selecione o produto e
versão de seu sistema e então selecione security no topo da página para exibir apenas os Relatórios
de Segurança da Red Hat Enterprise Linux. Se a sinopse de um dos relatórios descreve um pacote
usado em seu sistema, clique na sinopse para ver mais detalhes.
A página de detalhes descreve o exploit de segurança e quaisquer instruções especiais que devem ser
executadas para atualizar o pacote e consertar o buraco na segurança.
Para fazer o download do(s) pacote(s) atualizado(s), clique no(s) nome(s) do(s) pacote(s) e salve-os no
disco rígido. É altamente recomendável que você crie um novo diretório como /tmp/atualizações
e salve todos os pacotes do download ali.
Todos os pacotes do Red Hat Enterprise Linux são assinados com a chave GPG da Red Hat, Inc.. O
utilitário RPM do Red Hat Enterprise Linux tenta automaticamente verificar a assinatura GPG de um
pacote RPM antes de instalá-lo. Se a chave GPG da Red Hat, Inc. não está instalada, instale-a a partir
de uma localidade segura e estática, como um CD-ROM do Red Hat Enterprise Linux.
Assumindo que o CD-ROM esteja montado em /mnt/cdrom, use o seguinte comando para importá-la
para o chaveiro:
rpm --import /mnt/cdrom/RPM-GPG-KEY
Para exibir uma lista com todas as chaves instaladas para verificação de RPM, execute o seguinte
comando:
rpm -qa gpg-pubkey*
Para a chave da Red Hat, Inc., o output inclui o seguinte:
gpg-pubkey-db42a60e-37ea5438
Para exibir detalhes sobre uma chave específica, use o comando rpm -qi seguido do output do comando anterior, conforme o exemplo:
rpm -qi gpg-pubkey-db42a60e-37ea5438
Capítulo 3. Atualizações de Segurança
17
É extremamente importante verificar a assinatura dos arquivos RPM antes de instalá-los. Este passo
assegura que eles não foram alterados depois do lançamento dos pacotes pela Red Hat, Inc.. Para
verificar todos os pacotes do download de uma só vez, submeta o seguinte comando:
rpm -K /tmp/updates/*.rpm
Se a verificação da chave GPG for bem-sucedida, o comando retorna o output gpg OK.
Após verificar as chaves GPG e fazer o download de todos os pacotes associados ao relatório da errata,
instale os pacotes como root em uma janela de comandos.
Isto pode ser feito com segurança para a maioria dos pacotes (exceto pacotes do kernel), submetendo
o seguinte comando:
rpm -Uvh /tmp/updates/*.rpm
Para pacotes do kernel, é recomendado usar o seguinte comando:
rpm -ivh /tmp/updates/ kernel-package
No exemplo anterior, substitua
kernel-package
pelo nome do RPM do kernel.
Após reinicializar a máquina com segurança usando o novo kernel, o kernel antigo deve ser removido
usando o seguinte comando:
rpm -e
old-kernel-package
No exemplo anterior, substitua
old-kernel-package
pelo nome do RPM do kernel antigo.
Nota
Não é um requisito remover o kernel antigo.
Importante
Antes de instalar qualquer errata de segurança, certifique-se de ler todas as instruções especiais
contidas no relatório da errata e executá-las. Consulte a Seção 3.1.3 para instruções gerais sobre
como aplicar as alterações feitas por uma atualização de errata.
3.1.3. Aplicando as Alterações
Após fazer o download e instalar as erratas de segurança através da Red Hat Network ou do site de
erratas da Red Hat, é importante parar de usar o software antigo e passar a usar o novo. O modo como
isso é feito depende do tipo de software que foi atualizado. A lista a seguir aponta as categorias gerais
de software e oferece instruções para usar as versões atualizadas após uma atualização de pacotes.
18
Capítulo 3. Atualizações de Segurança
Nota
Em geral, reinicializar o sistema é a maneira mais certa de garantir que a versão mais recente de um
pacote de software é usada; entretanto, esta opção nem sempre está disponível ao administrador
de sistemas.
Aplicações
Aplicações em espaço de usuário (user-space) são quaisquer programas que podem ser iniciados
por um usuário do sistema. Geralmente, estas aplicações são usadas somente quando um usuário,
um script ou uma funcionalidade de tarefa automatizada as lança, e não persistem por longos
períodos.
Após uma aplicação em espaço de usuário ser atualizada, pare todas as instâncias da aplicação
no sistema e lance o programa novamente a fim de usar a versão atualizada.
Kernel
O kernel é o componente central do software do sistema operacional Red Hat Enterprise Linux.
Ele gerencia o acesso à memória, ao processador e periféricos e também agenda todas as tarefas.
Devido sua função central, o kernel não pode ser reiniciado sem também parar o computador.
Portanto, uma versão atualizada do kernel não pode ser usada até que o sistema seja reinicializado.
Bibliotecas Compartilhadas
Bibliotecas compartilhadas são unidades de código, como a glibc, que são usadas por diversas
aplicações e serviços. As aplicações que utilizam uma biblioteca compartilhada geralmente carregam o código compartilhado quando a aplicação é iniciada, portanto todas as aplicações que
usam a biblioteca compartilhada devem ser paradas e relançadas.
Para determinar quais aplicações estão relacionadas a uma biblioteca, use o comando lsof,
conforme o exemplo a seguir:
lsof /usr/lib/libwrap.so*
Este comando retorna uma lista de todos os programas sendo executados, que usam TCP wrappers para controle de acesso à máquina. Portanto, quaisquer programas listados devem ser parados e relançados se o pacote tcp_wrappers for atualizado.
Serviços SysV
Serviços SysV são programas de servidor persistentes lançados durante o processo de inicialização. Exemplos de serviços SysV incluem sshd, vsftpd e xinetd.
Como estes programas geralmente persistem na memória enquanto a máquina é reinicializada,
cada serviço SysV atualizado deve ser parado e relançado após o upgrade do pacote. Isto pode
ser feito usando a Ferramenta de Configuração dos Serviços ou se autenticando a uma janela
de comandos root e submetendo o comando /sbin/service como no exemplo seguinte:
/sbin/service
service-name
No exemplo anterior, substitua
restart
service-name
pelo nome do serviço, como sshd.
Consulte o capítulo intitulado Controlando Acesso aos Serviços no Guia de Administração do
Sistema do Red Hat Enterprise Linux para mais informações sobre a Ferramenta de Configuração dos Serviços.
Capítulo 3. Atualizações de Segurança
19
Serviços xinetd
Os serviços controlados pelo super serviço xinetd rodam somente quando há uma conexão
ativa. Exemplos de serviços controlados pelo xinetd incluem Telnet, IMAP ePOP3.
Como novas instâncias destes serviços são lançadas pelo xinetd cada vez que um novo pedido é
recebido, as conexões que ocorrem depois de um upgrade são feitas pelo software atualizado. No
entanto, se há conexões ativas no momento em que o serviço controlado xinetd é atualizado,
elas são feitas pela versão antiga do software.
Para eliminar instâncias antigas de um serviço controlado xinetd em particular, faça o upgrade
do pacote do serviço e então pare todos os processos sendo executados. Primeiro, determine se
o processo está rodando, usando o comando ps e então use o comando kill ou killall para
parar as instâncias atuais do serviço.
Por exemplo: se os pacotes da errata de segurança imap são lançados, faça o upgrade dos pacotes
e então digite o seguinte comando como root em uma janela de comandos:
ps -aux | grep imap
Este comando retorna todas as sessões IMAP ativas. As sessões individiuais podem então ser
terminadas com o seguinte comando:
kill -9
PID
No exemplo anterioor, substitua
são IMAP.
PID
pelo número de identificação do processo de uma ses-
Para terminar todas as sessões IMAP ativas, submeta o seguinte comando:
killall imapd
Consulte o capítulo intitulado TCP Wrappers e xinetd no Guia de Referência do Red Hat
Enterprise Linux para informações gerais sobre o xinetd.
20
Capítulo 3. Atualizações de Segurança
Capítulo 4.
Segurança da Estação de Trabalho
Proteger um ambiente Linux começa pela estação de trabalho. Na proteção de sua máquina pessoal
ou sistema corporativo, uma boa política de segurança começa pelo computador individual. Afinal de
contas, uma rede de computadores é tão segura quanto seu nódulo mais vulnerável.
4.1. Avaliando a Segurança da Estação de Trabalho
Ao avaliar a segurança de uma estação de trabalho Red Hat Enterprise Linux, considere o seguinte:
•
Segurança do BIOS e Gestor de Início — Um usuário não autorizado pode acessar fisicamente a
máquina e inicializá-la como um usuário simples ou no modo de recuperação sem uma senha?
•
Segurança da Senha — Quão seguras são as senhas de conta de usuário na máquina?
•
Controles Administrativos — Quem tem uma conta no sistema e quanto controle admisnitrativo
eles têm?
•
Serviços Disponíveis na Rede — Quais serviços estão escutando por pedidos da rede? Eles realmente devem estar rodando?
•
Firewalls Pessoais — Qual o tipo de firewall necessário (caso haja)?
•
Ferramentas de Comunicação para Segurança Melhorada — Quais ferramentas devem ser usadas
para a comunicação entre estações de trabalho e quais devem ser evitadas?
4.2. Segurança do BIOS e do Gestor de Início
A proteção da senha para o BIOS (ou componente equivalente) e para o gestor de início pode impedir
usuários não autorizados, que tenham acesso físico aos seus sistemas, de inicializar a máquina com
mídia removível ou acessar root através do modo de usuário simples. Mas as medidas de segurança a
tomar para proteger o sistema de ataques deste tipo dependem da sensibilidade das informações que a
estação de trabalho armazena e da localização da máquina.
Por exemplo: se uma máquina é usada em uma exposição ou feira e não contém informações delicadas,
então não deve ser crítico impedir tais ataques. Entretanto, se um laptop de um funcionário com chaves
SSH da rede corporativa for deixado nesta mesma feira sem a proteção de senhas, pode ocasionar uma
violação de segurança severa com consequências para a empresa inteira.
Por outro lado, se a estação de trabalho estiver localizada em um lugar onde somente pessoas confiáveis e autorizadas têm acesso, então proteger o BIOS ou o gestor de início pode não ser necessário.
4.2.1. Senhas do BIOS
Veja a seguir as duas razões principais para proteger o BIOS de um computador com senhas 1:
1. Impedindo Alterações na Configuração do BIOS — Se um intruso tem acesso ao BIOS, pode
configurá-lo para ser desligado a partir de um disquete ou CD-ROM. Isto possibilita que ele
entre em modo de recuperação ou de usuário simples, que por sua vez permite a ele semear
programas corruptos no sistema ou copiar dados sensíveis.
1.
Como BIOSes de sistemas diferem entre fabricantes, alguns talvez não suportem proteção de senhas de
nenhum tipo, enquanto outros podem suportar um tipo e outro não.
22
Capítulo 4. Segurança da Estação de Trabalho
2. Impedindo a Inicialização do Sistema — Alguns BIOSes permitem que você proteja o processo
de inicialização da máquina com senha. Quando ativado, um atacante é forçado a inserir uma
senha antes do BIOS lançar o gestor de início.
Como os métodos para definir uma senha para o BIOS variam de acordo com o fabricante do computador, consulte o manual de seu computador para obter instruções específicas.
Se você esquecer a senha do BIOS, ela pode ser restaurada com jumpers na placa-mãe ou desligando
a bateria CMOS. Por esta razão, é aconselhável trancar o compartimento do computador, se possível.
Não obstante, consulte o manual do computador ou da placa-mãe antes de tentar este procedimento.
4.2.1.1. Protegendo Plataformas Não-x86
Outras arquiteturas usam programas diferentes para executar tarefas de nível baixo, parecidas àquelas
do BIOS em sistemas x86. Por exemplo: computadores baseados no Intel® Itanium™ usam a shell
EFI (Extensible Firmware Interface).
Para instruções sobre a proteção através de senha a programas parecidos com o BIOS em outras
arquiteturas, consulte as instruções do fabricante.
4.2.2. Senhas do gestor de Início
Veja a seguir as principais razões para proteger um gestor de início Linux com senha:
1. Impedindo Acesso ao Modo de Usuário Simples — Se um atacante puder iniciar em modo de
usuário simples, ele se torna o usuário root.
2. Impedindo Acesso ao Console do GRUB — Se a máquina utiliza GRUB como seu gestor de
início, um atacante pode usar a interface de edição do GRUB para alterar sua configuração ou
para coletar informações usando o comando cat.
3. Impedindo Acesso a Sistemas Operacionais Não-Seguros — Se for um sistema de boot duplo,
um atacante pode selecionar um sistema operacional na hora da inicialização, tal como o DOS,
que ignora controles de acesso e permissões de arquivo.
Há dois gestores de início distribuídos com o Red Hat Enterprise Linux para a plataforma x86, GRUB
e LILO. Para uma visão detalhada de cada um destes gestores de início, consulte o capítulo entitulado
Gestores de Início (Boot Loaders) no Guia de Referência do Red Hat Enterprise Linux.
4.2.2.1. Senha Protegendo o GRUB
Você pode configurar o GRUB para resolver as primeiras duas questões listadas na Seção 4.2.2 adicionando uma diretiva de senha ao seu arquivo de configuração. Para fazer isso, primeiro decida a senha,
abra uma janela de comandos, logue-se como root e digite:
/sbin/grub-md5-crypt
Quando solicitada, digite a senha do GRUB e pressione [Enter]. Isto retornará um hash MD5 da senha.
Em seguida, edite o arquivo de configuração do GRUB /boot/grub/grub.conf. Abra o arquivo e,
abaixo da linha timeout na seção principal do documento, adicione a seguinte linha:
password --md5
Substitua
2.
password-hash
password-hash
pelo valor retornado pelo /sbin/grub-md5-crypt2.
O GRUB também aceita senhas não-criptografadas, mas é recomendado usar a versão md5 para segurança
adicional.
Capítulo 4. Segurança da Estação de Trabalho
23
Na próxima vez que inicializar o sistema, o menu do GRUB não deixará você acessar o editor ou a
interface de comando sem que pressione [p] seguida da senha do GRUB.
Infelizmente, esta solução não impede que um atacante inicialize em um sistema operacional nãoseguro em um ambiente de boot duplo. Para isso, você precisa editar uma parte diferente do arquivo
/boot/grub/grub.conf.
Procure pela linha title do sistema operacional não-seguro e adicione uma linha contendo lock
logo abaixo dela.
Para um sistema DOS, a estrofe deve começar similarmente a:
title DOS
lock
Atenção
Você deve ter uma linha password na seção principal do arquivo /boot/grub/grub.conf para que
este método funcione apropriadamente. Caso contrário, um atacante poderá acessar a interface de
edição do GRUB e remover a linha lock.
Para criar uma senha diferente para um kernel ou sistema operacional específico, adicione uma linha
lock na estrofe, seguida de uma linha para senha.
Cada estrofe que você proteger com uma senha única deve começar com linhas similares ao exemplo
seguinte:
title DOS
lock
password --md5
password-hash
4.2.2.2. Senha Protegendo o LILO
O LILO é um gestor de início bem mais simples que o GRUB e não oferece uma interface de comando,
portanto um atacante não pode obter acesso interativo ao sistema antes do kernel ser carregado. No
entanto, ainda há perigo de um atacante inicializar em modo de usuário simples ou iniciar em um
sistema operacional não-seguro.
A proteção de senha para o LILO pode ser feita adicionando uma diretiva de senha na seção global de
seu arquivo de configuração. Para fazer isso, abra uma janela de comando, logue-se como root e edite
/etc/lilo.conf. Antes da primeira estrofe image adicione uma diretiva de senha similar a:
password= password
Na diretiva acima, substitua
password
pela senha do LILO.
Importante
Quando editar o arquivo /etc/lilo.conf, você deve executar o comando /sbin/lilo -v -v para
que as alterações tenham efeito. Se você configurou uma senha e ninguém, a não ser root, pode
ler o arquivo, o LILO será instalado corretamente, mas o alertará que as permissões do arquivo de
configuração estão incorretas.
24
Capítulo 4. Segurança da Estação de Trabalho
Se você não quer uma senha global, pode adicionar a diretiva de senha a qualquer estrofe correspondente a qualquer kernel ou sistema operacional. Para fazer isso, adicione a diretiva da senha logo
abaixo da linha image. Ao terminar, o início da estrofe protegida por senha se assemelhará a:
image=/boot/vmlinuz- version
password= password
No exemplo anterior, substitua
LILO para este kernel.
version
pela versão do kernel e
password
pela senha do
É possível permitir a inicialização de um kernel ou sistema operacional sem verificação de senha,
enquanto impedir que usuários especifiquem argumentos sem uma senha. Para fazer isso, adicione a
diretiva restricted na linha abaixo da linha da senha, dentro da estrofe. Esta estrofe começa similar
a:
image=/boot/vmlinuz- version
password= password
restricted
Substitua
version
pela versão do kernel e
password
pela senha do LILO para este kernel.
Se você usar a diretiva restricted, deve também ter uma linha de senha dentro da estrofe.
Atenção
O arquivo /etc/lilo.conf é legível por todos. Se você estiver protegendo o LILO com senha, é
essencial permitir somente a root ler e editar o arquivo, já que todas as senhas são somente-texto.
Para fazer isso, digite o seguinte comando como root:
chmod 600
/etc/lilo.conf
4.3. Segurança da Senha
Senhas são o método principal usado pelo Red Hat Enterprise Linux para verificar a identidade de
usuários. É por isso que a segurança da senha é tão importante para a proteção do usuário, da estação
de trabalho e da rede.
Por motivos de segurança, o programa de instalação configura o sistema para usar o Algoritmo
Message-Digest (MD5) e senhas shadow. É altamente recomendável que você não altere estas
configurações.
Se você desselecionar as senhas MD5 durante a instalação, o antigo formato Padrão de Criptografia
de Dados (DES - Data Encryption Standard) é utilizado. Este formato limita as senhas a oito caracteres
alfa-numéricos (impedindo o uso de pontuação e outros caracteres especiais) e oferece um nível de
criptografia modesto a 56 bits.
Se você desselecionar as senhas shadow durante a instalação, todas as senhas são armazenadas como
’one-way hash’ em um arquivo /etc/passwd legível por todos, o que torna o sistema vulnerável a
ataques de cracking offline. Se um intruso puder obter acesso a uma máquina como um usuário comum, ele pode copiar o arquivo /etc/passwd para sua própria máquina e rodar inúmeros programas
de cracking neste arquivo. Se houver uma senha desprotegida no arquivo, é apenas uma questão de
tempo para o cracker descobrí-la.
Capítulo 4. Segurança da Estação de Trabalho
25
Senhas shadow eliminam a ameaça deste tipo de ataque, armazenando as senhas hash (misturadas)
em um arquivo /etc/shadow, legível somente pelo usuário root.
Isto força um atacante potencial a tentar crackear a senha remotamente se autenticando em um serviço de rede na máquina, como SSH ou FTP. Este tipo de ataque de força bruta é bem mais lento e
deixa rastros óbvios, já que centenas de tentativas de autenticação mal-sucedidas são registradas nos
arquivos do sistema. Claro que, se o cracker começar um ataque no meio da noite em um sistema com
senhas fracas, ele pode obter acesso e editar os arquivos de registro para apagar seus rastros antes da
luz do dia.
Além das questões de formato e armazenamento, há também a questão de conteúdo. A única coisa
mais importante que um usuário pode fazer para proteger sua conta de cracking de senha é criar uma
senha forte.
4.3.1. Criando Senhas Fortes
Ao criar uma senha segura, é uma boa idéia seguir estas instruções:
Não faça o seguinte:
•
Não Use Apenas Palavras ou Números — Nunca use somente palavras ou números em uma
senha.
Alguns exemplos de senhas inseguras:
•
•
8675309
•
juan
•
hackme
Não Use Palavras Reconhecíveis — Palavras como nomes próprios, palavras de dicionário ou
até termos de shows de televisão ou novelas devem ser evitados, mesmo que sejam finalizados
com números.
Alguns exemplos de senhas inseguras:
•
•
john1
•
DS-9
•
mentat123
Não Use Palavras em Idiomas Estrangeiros — Programas de cracking de senhas frequentemente checam listas de palavras que incluem dicionários de muitos idiomas. Basear senhas
seguras em idiomas estrangeiros não é eficiente.
Alguns exemplos de senhas inseguras:
•
•
cheguevara
•
bienvenido1
•
1dumbKopf
Não Use Terminologia de Hacker — Se você se acha parte de uma elite por utilizar terminologia de hacker — também chamada l337 (LEET) speak — em sua senha, repense. Muitas listas
de palavras incluem LEET speak.
Alguns exemplos de senhas inseguras:
26
Capítulo 4. Segurança da Estação de Trabalho
•
•
H4X0R
•
1337
Não Use Informações Pessoais — Fique longe das informações pessoais. Se o atacante souber
quem você é, ele terá facilidade em descobrir sua senha. A seguir, veja uma lista de tipos de
informação a evitar na criação de uma senha:
Alguns exemplos de senhas inseguras:
•
•
Seu nome
•
O nome de animais de estimação
•
O nome de familiares
•
Quaisquer datas de aniversário
•
Seu número de telefone ou código postal
Não Inverta Palavras Reconhecíveis — Bons verificadores de senha sempre revertem palavras
comuns, portanto reverter uma senha ruim não a torna mais segura.
Alguns exemplos de senhas inseguras:
•
R0X4H
•
nauj
•
9-DS
•
Não Anote Sua Senha — Nunca guarde uma senha em um papel. É bem mais seguro
memorizá-la.
•
Não Use a Mesma Senha Para Todas as Máquinas — É importante criar senhas separadas para
cada máquina. Desta maneira, se um sistema for comprometido, todas as outras máquinas não
estarão em risco imediato.
Faça o seguinte:
•
Crie uma Senha de no Mínimo Oito Caracteres — Quanto mais longa a senha, melhor. Se você
estiver usando senhas MD5, deve ter 15 ou mais caracteres. Para senhas DES, use o tamanho
máximo (oito caracteres).
•
Misture Letras em Caixa Alta e Baixa — O Red Hat Enterprise Linux é sensível a maiúsculas
e minúsculas, portanto misture-as para criar uma senha mais forte.
•
Misture Letras e Números — Adicionar números a senhas, especialmente no meio delas (não
apenas no começo e fim), pode aumentar a força da senha.
•
Inclua Caracteres Não Alfa-numéricos — Caracteres especiais como &, $ e
tar bastante a força de uma senha (isto não é possível se usar senhas DES).
•
Escolha uma Senha que Você Possa Lembrar — A melhor senha do mundo de nada adianta se
você não conseguir lembrá-la. Então use acrônimos ou outros dispositivos mneumônicos para
ajudá-lo a memorizar senhas.
podem aumen-
Capítulo 4. Segurança da Estação de Trabalho
27
Com todas estas regras, parece difícil criar uma senha que siga todos os critérios e evitar as características de um senha ruim. Felizmente, há alguns passos simples a seguir para gerar uma senha
memorizável e segura.
4.3.1.1. Metodologia de Criação de Senha Segura
Há muitos métodos usados para criar senhas seguras. Um dos mais conhecidos envolve acrônimos.
Por exemplo:
•
Pense em uma frase memorável, como:
•
Em seguida, transforme-a num acrônimo (incluindo a pontuação).
•
Adicione complexidade substituindo letras por números e símbolos no acrônimo. Por exemplo:
substitua n por 9 e a letra d pelo símbolo arrouba (@):
•
Adicione mais complexidade colocando pelo menos uma das letras em caixa alta, como F.
•
Finalmente, nunca use o exemplo acima em nenhum de seus sistemas.
"o sol da liberdade em raios fúlgidos brilhou no céu da pátria neste instante."
osdlerfbncdpni.
o7r@77w,7ghwg.
o7r@77w,7gHwg.
Criar senhas seguras é imperativo, mas gerenciá-las apropriadamente também é importante, especialmente para administradores de sistemas em empresas maiores. A próxima seção detalha as boas
prárticas para criar e gerenciar senhas de usuários em uma empresa.
4.3.2. Criando Senhas de Usuários Dentro de uma Empresa
Se houver um número significativo de usuários em uma empresa, os adminsitradores de sistemas têm
duas opções básicas para forçar o uso de boas senhas. Eles podem criar senhas para os usuários,
ou podem deixar que os usuários criem suas próprias senhas, enquanto verificam se as senhas têm
qualidade aceitável.
Criar senhas para os usuários garante que as senhas sejam boas, mas se torna uma tarefa complicada
conforme a empresa cresce. Também aumenta o risco dos usuários anotarem suas senhas.
Por estas razões, os administradores de sistema preferm que os usuários criem suas próprias senhas,
mas ativamente verificam se as senhas são boas e, em alguns casos, forçam os usuários a trocarem
suas senhas periodicamente conforme sua idade.
4.3.2.1. Forçando Senhas Fortes
Para proteger a rede de intrusões é uma boa idéia administradores de sistema verificarem se as senhas
usadas na empresa são fortes. Quando for pedido aos usuários criarem ou alterarem senhas, eles
podem utilizar a aplicação de linha de comando passwd, que é ciente do Gerenciador Plugável de
Autenticação (Pluggable Authentication Manager - PAM) e então checará se a senha é fácil de crackear
ou se é muito curta através do módulo PAM pam_cracklib.so. Como PAM é personalizável, é
possível adicionar outros verificadores de integridade de senhas, como pam_passwdqc (disponível
em http://www.openwall.com/passwdqc/) ou escrever um módulo novo. Para visualizar uma lista dos
módulos PAM disponíveis, veja http://www.kernel.org/pub/linux/libs/pam/modules.html. Para mais
informações sobre o PAM, veja o capítulo enitulado Módulos Plugáveis de Autenticação (PAM) no
Guia de Referência do Red Hat Enterprise Linux.
28
Capítulo 4. Segurança da Estação de Trabalho
Perceba, no entanto, que a verificação executada nas senhas no momento de sua criação não descobre
senhas ruins tão efetivamente quanto rodar um programa de cracking de senhas nas senhas da empresa
inteira.
Há muitos programas de cracking de senhas que rodam no Red Hat Enterprise Linux, porém nenhum
é distribuído junto ao sistema operacional. Abaixo há uma breve lista de alguns dos programas de
cracking de senhas mais conhecidos:
Nota
Nenhuma destas ferramentas é distribuída com o Red Hat Enterprise Linux, portanto não são suportadas pela Red Hat, Inc. de maneira alguma.
•
John The Ripper — Um programa de cracking rápido e flexível. Permite o uso de listas de
palavras múltiplas e é capaz de crackear senhas com força bruta. Está disponível online em
http://www.openwall.com/john/.
•
Crack — Talvez o programa de cracking mais conhecido, o Crack também é muito rápido,
porém não tão fácil de usar quanto o John The Ripper. Pode ser encontrado online:
http://www.crypticide.org/users/alecm/.
•
Slurpie — O Slurpie é similar ao John The Ripper e ao Crack, mas é desenvolvido para rodar
em computadores múltiplos simultaneamente, criando um ataque de cracking de senha distribuído.
Pode ser encontrado online juntamente a outras ferramentas de avaliação de segurança contras
ataques distribuídos em http://www.ussrback.com/distributed.htm.
Atenção
Sempre pegue autorizações escritas antes de tentar crackear senhas dentro de uma empresa.
4.3.2.2. Idade da Senha
Idade da senha é uma outra técnica usada por administradores de sistema para defender uma empresa
contra senhas ruins. Idade da senha significa que depois de um determinado tempo (geralmente 90
dias) é solicitado ao usuário criar uma nova senha. A teoria por trás disso é se o usuário é forçado a
trocar sua senha periodicamente, uma senha crackeada por um intruso será útil somente por um tempo
limitado. A desvantagem desta técnica, no entanto, é que usuários tendem a anotar suas senhas.
Há dois programas principais usados para especificar a idade da senha sob o Red Hat Enterprise Linux:
o comando chage ou a aplicação gráfica Administrador de Usuários (redhat-config-users).
A opção -M do comando chage especifica o número máximo de dias em que a senha é válida. Portanto, se um usuário quer que sua senha expire em 90 dias, deve digitar o seguinte comando:
chage -M 90
username
No comando acima, substitua username pelo nome do usuário. Para desabilitar a expiração da
senha, é comum usar o valor 99999 depois da opção -M (isso equivale a um pouco mais de 273 anos).
A aplicação gráfica Administrador de Usuários também pode ser uasada para criar políticas de
validade de senhas. Para acessar esta aplicação, vá para o Botão do Menu Principal (no Painel) =>
Capítulo 4. Segurança da Estação de Trabalho
29
Configurações do Sistema => Usuários & Grupos ou digite o comando redhat-config-users
em uma janela de comandos (em um XTerm ou um terminal GNOME, por exemplo). Clique na aba
Usuários, selecione o usuário da lista e clique em Propriedades no botão do menu (ou selecione
Arquivo => Propriedades no menu suspenso).
Então clique na aba Informações de Senha e insira o número de dias antes da senha expirar, conforme
mostra a figura Figura 4-1.
Figura 4-1. Aba Informações de Senha
Para mais informaçõe sobre a configuração do usuário e grupo (inclusive instruções sobre como forçar
as primeiras senhas), veja o capítulo Configuração de Usuário e Grupo do Guia de Administração do
Sistema do Red Hat Enterprise Linux. Para uma visão geral da administração de usuários e recursos,
consulte o capítulo Gerenciando Contas de Usuário e Acesso a Recursos (Managing User Accounts
and Resource Access) no Introdução à Administração de Sistemas Red Hat Enterprise Linux.
4.4. Controles Administrativos
Ao adminsitrar um computador caseiro, o usuário deve executar algumas tarefas como usuário root
ou adquirindo privilégios efetivos de root através de um programa setuid, como o sudo ou o su.
Um programa setuid opera com o ID do usuário (UID) do proprietário do programa ao invés do
usuário operando o programa. Tais programas são caracterizados por um s em caixa baixa na seção
do proprietário de uma lista longa, conforme o exemplo a seguir:
-rwsr-xr-x
1 root
root
47324 May
1 08:09 /bin/su
Para os adminsitradores de sistema de uma empresa, no entanto, as escolhas devem ser feitas de acordo com o nível de acesso adminsitrativo que os usuários, dentro da organização, devem ter em suas
máquinas. Através de um módulo PAM chamado pam_console.so, algumas atividades reservadas
somente ao usuário root, como reinicializar e montar mídia removível, são permitidas ao primeiro
usuário que se autenticar no console físico (veja o capítulo entitulado Módulos Plugáveis de Autenticação (PAM) do Guia de Referência do Red Hat Enterprise Linux para saber mais sobre o módulo
pam_console.so). Entretanto, outras tarefas importantes da administração de sistemas, como alterar configurações da rede ou do mouse, ou montar dispositivos de rede, são impossíveis sem o acesso
30
Capítulo 4. Segurança da Estação de Trabalho
administrativo. Consequentemente, os administradores devem decidir o grau de acesso administrativo
que os ususários de sua rede devem ter.
4.4.1. Permitindo Acesso Root
Se os usuários de uma empresa são um grupo confiável e experiente em computadores, permití-los
acesso root talvez não seja má idéia. Permitir acesso root a usuários significa que questões menores,
como adicionar serviços ou configurar interfaces de rede, podem ser executadas pelos usuários individuais, deixando os adminsitradores de sistema livres para lidar com a segurança da rede e outras
questões importantes.
Por outro lado, permitir acesso root a usuários individuais pode acarretar nas questões a seguir (para
nomear apenas algumas):
•
Má Configuração da Máquina — Usuários com acesso root podem mal-configurar suas máquinas
e pedir assistência ou pior, abrir buracos na segurança sem saber.
•
Rodar Serviços Inseguros — Usuários com acesso root podem rodar serviços inseguros, como FTP
ou Telnet, em suas máquinas, potencialmente arriscando nomes de usuários e senhas conforme
trafegam sem criptografia pela rede.
•
Anexando Arquivos em Emails como Root — Apesar de raros, existem vírus de e-mail que afetam
o Linux. A única hora em que eles representam uma ameaça, no entanto, é quando são executados
pelo usuário root.
4.4.2. Impedindo Acesso Root
Se o adminsitrador não estiver confortável em permitir que usuários se autentiquem como root por
estas ou por outras razões, a senha de root deve ser guardada secretamente, e o acesso ao nível de
execução um ou ao modo de usuário simples deve ser impedido através da proteção de senha do
gestor de início (veja a Seção 4.2.2 para mais informações sobre este tópico).
Tabela 4-1 mostra as maneiras de um administrador garantir que autenticações root estão impedidas:
Método
Descrição
Alterar a Edite o arquivo
shell root. /etc/passwd e altere a
shell de /bin/bash para
/sbin/nologin.
Efeitos
Não Afeta
Impede acesso à shell root
e registra a tentativa.
Os seguintes programas
são impedidos de acessar
a conta root:
Programas que não
requerem uma shell, como
clientes FTP, clientes de
mail e muitos programas
setuid.
Os seguintes programas
não são impedidos de
acessar a conta root:
!!
!!
!!
!!
login
gdm
kdm
xdm
su
ssh
scp
sftp
!
!!
sudo
clientes FTP
clientes de Email
Capítulo 4. Segurança da Estação de Trabalho
31
Método
Descrição
Efeitos
Não Afeta
Desativar
acesso
root
através de
qualquer
dispositivo de
console
(tty).
Um arquivo
Impede o acesso à conta
root através do console ou
rede. Os seguintes
programas são impedidos
de acessar a conta root:
Programas que não se
logam como root, mas
executam tarefas
administrativas através de
mecanismos setuid ou
outros.
Os seguintes programas
não são impedidops de
acessar a conta root:
/etc/securetty vazio
impede a autenticação de
root a quaisquer
dispositivos atachados ao
computador.
""
""
login
gdm
kdm
xdm
"
Outros serviços de rede
que abrem uma tty
"
Desativar
autenticações
root SSH.
Edite o arquivo
Impede o acesso root
através do conjunto de
ferramentas OpenSSH. Os
programas a seguir são
impedidos de acessar a
conta root:
/etc/ssh/sshd_config
e defina o parâmetro
PermitRootLogin para
no.
""
Edite o arquivo para o
serviço em questão no
diretório /etc/pam.d/.
Assegure que
pam_listfile.so é
necessário para a
autenticação. Veja a Seção
4.4.2.4 para detalhes.
su
sudo
ssh
scp
sftp
Isto impede somente o
acesso root ao conjunto de
ferramentas do OpenSSH.
ssh
scp
sftp
"
Utilizar o
PAM
para
limitar o
acesso
root aos
serviços.
""
""
Impede o acesso root para
serviços de rede
notificados pelo PAM.
Os seguintes serviços são
impedidos de acessar a
conta root:
clientes FTP
clientes de Email
""
""
""
""
""
Programas e serviços que
não são notificados pelo
PAM.
login
gdm
kdm
xdm
ssh
scp
sftp
Quaisquer serviços
notificados pelo PAM
Tabela 4-1. Métodos para Desativar a Conta Root
4.4.2.1. Desativar a Shell Root
Para impedir os usuários de se autenticar diretamente como root, o administrador de sistema pode
configurar a shell da conta root para /sbin/nologin no arquivo /etc/passwd. Isto impede o acesso
à conta root através de comandos que requerem uma shell, como os comandos su e ssh.
Importante
Programas que não requerem acesso à shell, como clientes de email ou o comando sudo, ainda
podem acessar a conta root.
32
Capítulo 4. Segurança da Estação de Trabalho
4.4.2.2. Impossibilitando Autenticações Root
Para limitar acesso à conta root, administradores podem desativar autenticações root no console editando o arquivo /etc/securetty. Este arquivo lista todos os dispositivos nos quais o usuário root
pode se autenticar. Se o arquivo não existir, o usuário root pode se autenticar através de qualquer
dispositivo de comunicação no sistema, através do console ou de uma interface de rede bruta. Isto é
perigoso pois um usuário pode acessar o Telnet em sua máquina como root, enviando sua senha em
formato texto através da rede. Por default, o arquivo /etc/securetty do Red Hat Enterprise Linux
permite somente ao usuário root se autenticar no console fisicamente anexo à máquina. Para impedir
que root se logue, remova o conteúdo deste arquivo digitando o seguinte comando:
echo > /etc/securetty
Atenção
Um arquivo /etc/securetty em branco não impede o usuário root de se autenticar remotamente
usando o conjunto de ferramentas OpenSSH porque o console não é aberto antes da autenticação.
4.4.2.3. Impossibilitando Autenticações Root SSH
Para impedir autenticações do root através do protocolo SSH, edite o arquivo de configuração do
daemon SSH (/etc/ssh/sshd_config). Altere a linha que apresenta:
# PermitRootLogin yes
para o seguinte:
PermitRootLogin no
4.4.2.4. Impossibilitar Root de Usar PAM
O PAM, através do módulo /lib/security/pam_listfile.so, permite grande flexibilidade em
negar contas específicas. Isto permite que o administrador aponte o módulo para uma lista de usuários
que não são permitidos de autenticar. O exemplo abaixo mostra como o módulo é usado para o servidor
FTP vsftpd no arquivo de configuração do PAM /etc/pam.d/vsftpd (o caracter \ no final da
primeira linha no exemplo a seguir não é necessário se a diretiva estiver em apenas uma linha):
auth
required
/lib/security/pam_listfile.so
item=user \
sense=deny file=/etc/vsftpd.ftpusers onerr=succeed
Isto diz ao PAM para consultar o arquivo /etc/vsftpd.ftpusers e negar a qualquer usuário listado
acessar o serviço. O adminsitrador é livre para alterar o nome deste arquivo e pode guardar listas
separadas para cada serviço ou usar uma lista geral para negar acesso a múltiplos serviços.
Se o adminsitrador quer negar acesso a múltiplos serviços, uma linha similar pode ser adicionada aos
serviços de configuração do PAM, como /etc/pam.d/pop e /etc/pam.d/imap para clientes de
mail ou /etc/pam.d/ssh para clientes SSH.
Capítulo 4. Segurança da Estação de Trabalho
33
Para mais informações sobre o PAM, veja o capítulo Módulos Plugáveis de Autenticação (PAM) no
Guia de Referência do Red Hat Enterprise Linux.
4.4.3. Limitar Acesso Root
Ao invés de negar completamante acesso ao usuário root, o administrador pode permitir acesso apenas
através de programas setuid, como o su ou o sudo.
4.4.3.1. O Comando su
Ao digitar o comando su, é pedida a senha root ao usuário e, após a autenticação, é dada uma janela
de comandos.
Uma vez autenticado através do comando su, o usuário é o usuário root e tem acesso administrativo
absoluto ao sistema. Além disso, uma vez que o usuário obteve aceeso root, é possível que ele use o
comando su para alterar qualquer outro usuário no sistema sem precisar inserir uma senha.
Como este programa é tão poderoso, administradores dentro de uma empresa talvez queiram limitar
quem tem acesso ao comando.
Uma das maneiras mais simples de fazer isso é adicionar usuários ao grupo administrativo especial
chamado wheel. Para fazer isso, digite o seguinte comando como root:
usermod -G wheel
#
username
No comando anterior, substitua
wheel.
$
%
username
&
pelo nome do usuário sendo adicionado ao grupo
Para usar a Administrador de Usuários para este propósito, vá ao Botão do Menu Principal (no Painel) => Configurações do Sistema => Grupos & Usuários ou digite o comando redhat-configusers em uma janela de comandos. Selecione a aba Users, selecione o usuário e clique em Propriedades a partir do menu do botão (ou selecione Arquivo => Propriedades a partir do menu suspenso).
Então selecione a aba Grupos e clique no grupo wheel, conforme mostra Figura 4-2.
Figura 4-2. Aba Grupos
34
Capítulo 4. Segurança da Estação de Trabalho
Em seguida, abra o arquivo de configuração do PAM para su (/etc/pam.d/su) em um editor de
texto e remova o comentário [#] da seguinte linha:
auth
required /lib/security/pam_wheel.so use_uid
Fazer isso permitirá que somente membros do grupo administrativo wheel usem o programa.
Nota
O usuário root é parte do grupo wheel por default.
4.4.3.2. O Comando sudo
O comando sudo oferece uma outra maneira de dar acesso administrativo a usuários. Quando um
usuário confiável precede um comando administrativo com sudo, ele precisa inserir sua senha. Então,
uma vez autenticado e assumindo que o comando é permitido, o comando administrativo é executado
como se fosse pelo usuário root.
O formato básico do comando sudo é o seguinte:
sudo
'
command
(
)
*
No exemplo acima, command será substituído por um comando normalmente reservado para o
usuário root, como o comando mount.
Importante
Usuários do comando sudo devem tomar cuidado extra para fazer logout antes de deixarem suas
máquinas, já que eles podem usar o comando novamente, sem precisar indicar a senha, por um
período de cinco minutos. Esta configuração pode ser alterada através do arquivo de configuração
/etc/sudoers.
O comando sudo permite um grau de flexibilidade maior. Por exemplo: somente os usuários listados
no arquivo de configuração /etc/sudoers são permitidos a usar o comando sudo e o comando é
executado na shell do usuário, não numa shell root. Isto significa que a shell root pode ser completamente impossibilitada, conforme mostrado em Seção 4.4.2.1.
O comando sudo também oferece um registro compreensivo da sequência de eventos. Cada autenticação bem-sucedida é registrada no arquivo /var/log/messages e o comando submetido junto ao
nome do usuário é registrado no arquivo /var/log/secure.
Outra vantagem do comando sudo é que um administrador pode permitir a diferentes usuários acesso
a comandos específicos baseado em suas necessidades.
Adminsitradores que queiram editar o arquivo de configuração do sudo, o /etc/sudoers, devem
usar o comando visudo.
Para dar privilégios administrativos totais a alguém, digite visudo e adicione uma linha similar à
seguinte na seção de especificação de privilégios do usuário:
juan ALL=(ALL) ALL
Este exemplo estabelece que o usuário juan pode usar o sudo em qualquer máquina e executar
qualquer comando.
Capítulo 4. Segurança da Estação de Trabalho
35
O exemplo abaixo ilustra a granularidade possível ao configurar o sudo:
%users
localhost=/sbin/shutdown -h now
Este exemplo estabelece que qualquer usuário pode submeter o comando /sbin/shutdown -h now
desde que o faça pelo console.
A página man de sudoers tem uma lista detalhada das opções para este arquivo.
4.5. Serviços de Rede Disponíveis
Enquanto o acessso a controles administrativos é uma questão importante para administradores de
sistema dentro de uma empresa, manter controle de quais serviços de rede estão ativos é de suma
importância para qualquer um que instalar e operar um sistema Linux.
Muitos serviços comportam-se como servidores de rede sob o Red Hat Enterprise Linux. Se um serviço de rede estiver rodando em uma máquina, então uma aplicação de servidor chamada daemon está
escutando conexões em uma ou mais portas de rede. Cada um destes servidores deve ser tratado como
uma via potencial de ataque.
4.5.1. Riscos aos Serviços
Serviços de rede podem apresentar muitos riscos a sistemas Linux. Veja abaixo uma lista com as
principais questões:
•
Ataques de Sobrecarregamento do Buffer (Buffer Overflow) — Serviços que se conectam a portas
numeradas de 0 a 1023 devem ser executados por um usuário administrativo. Se a aplicação tiver um
sobrecarregamento explorável do buffer, um atacante pode obter acesso ao sistema como o usuário
rodando o daemon. Devido à existência de sobrecarregamento explorável do buffer, os crackers
usam ferramentas automatizadas para identificar sistemas com vulnerabilidades, e após obterem
acesso ao sistema, utilizam rootkits automatizados para mantê-lo.
•
Ataques de Denial of Service (DoS) — Ao inundar um serviço com pedidos, um ataque de denial
of service pode trazer ao sistema uma parada terrível ao tentar registrar e responder à cada pedido.
•
Ataques à Vulnerabilidade do Script — Se um servidor estiver usando scripts para executar ações
no lado do servidor, como servidores Web geralmente fazem, um cracker pode montar um ataque
com scripts escritos inapropriadamente. Estes ataques à vulnerabilidade do script podem acarretar
na condição de sobrecarregamento do buffer ou permitir que o atacante altere arquivos no sistema.
Para limitar a exposição a ataques através da rede, todos os serviços não utilizados devem ser desligados.
4.5.2. Identificando e Configurando Serviços
Para aumentar a segurança, a maioria dos serviços instalados com o Red Hat Enterprise Linux são
desligados por default. No entanto, há algumas exceções notáveis:
• cupsd
• lpd
— O servidor de impressão default do Red Hat Enterprise Linux.
— Um servidor de impressão alternativo.
• portmap
— Um componente necessário para o NFS, NIS e outros protocolos.
— Um super servidor que controla as conexões para uma máquina de servidores subordinados, como vsftpd, telnet e sgi-fam (necessário para o gerenciador de arquivos Nautilus).
• xinetd
36
Capítulo 4. Segurança da Estação de Trabalho
— O agente de transporte Sendmail é ativado por default, mas escuta apenas conexões
a partir do localhost.
• sendmail
• sshd
— O servidor OpenSSH, um substituto seguro para o Telnet.
Ao determinar se estes serviços devem ou não ser deixados rodando, é melhor usar bom senso e pecar
pela precaução. Por exemplo: se uma impressora não está disponível, não deixe o cupsd rodando. O
mesmo vale para o portmap. Se você não monta volumes NFS ou usa o NIS (o serviço ypbind),
então o portmap deve ser desativado.
O Red Hat Enterprise Linux é distribuído com três programas desenvolvidos para ligar e desligar serviços. Eles são: Ferramenta de Configuração dos Serviços (redhat-config-services), ntsysv
e chkconfig. Para informações sobre o uso destas ferramentas, consulte o capítulo Controlando
Acesso aos Serviços do Guia de Administração do Sistema do Red Hat Enterprise Linux.
Figura 4-3. Ferramenta de Configuração dos Serviços
Se você não está certo sobre o propósito de um serviço específico, a Ferramenta de Configuração
dos Serviços tem um campo de descrição, ilustrado na Figura 4-3, que pode lhe ser útil.
Mas verificar quais serviços de rede estão disponíveis para iniciar no momento de ligar a máquina
(boot) não é suficiente. Bons administradores de sistema também devem verificar quais portas estão
abertas e escutando. Veja a Seção 5.8 para mais detalhes sobre o assunto.
4.5.3. Serviços Inseguros
Potencialmente, qualquer rede é insegura. Por este motivo, desligar serviços não usados é tão importante. Exploits de serviços são revelados e consertados rotineiramente. Portanto é importante manter
atualizados os pacotes associados a qualquer serviço de rede. Veja o Capítulo 3 para mais detalhes
sobre este assunto.
Alguns protocolos de rede são essencialmente mais inseguros que outros. Estes incluem quaisquer
serviços que façam o seguinte:
•
Passem Nomes de Usuário e Senha Não Criptografados por uma Rede — Muitos protocolos antigos, como Telnet e FTP, não criptografam a seção de autenticação e devem ser evitados sempre que
possível.
Capítulo 4. Segurança da Estação de Trabalho
•
37
Passar Dados Importantes por uma Rede Não-Criptografada — Muitos protocolos passam dados
através da rede não-criptografada. Estes protocolos incluem o Telnet, FTP, HTTP e o SMTP. Muitos
sistemas de arquivo de rede, como o NFS e o SMB, também passam informações através da rede
não-criptografada. É responsabilidade do usuário limitar o tipo de dados transmitidos ao utilizar
estes protocolos.
Serviços dump de memória remota, como o netdump, passam o conteúdo da memória não criptografado através da rede. Dumps de memória podem conter senhas ou pior, informações de banco
de dados ou outras informações delicadas.
Outros serviços como finger e rwhod revelam informações sobre os usuários do sistema.
Exemplos de serviços essencialmente inseguros incluem os seguintes:
• rlogin
• rsh
• telnet
• vsftpd
Todos os programas de login e shell (rlogin, rsh e telnet) devem ser evitados em favor do SSH.
(Veja a Seção 4.7 para mais informações sobre o sshd).
O FTP não é essencialmente tão perigoso à segurança do sistema quanto janelas de comando (shells)
remotas, mas os servidores FTP devem ser configurados e monitorados cuidadosamente para evitar
problemas. Veja a Seção 5.6 para mais informações sobre a proteção de servidores FTP.
Serviços que devem ser implementados cuidadosamente e por trás de um firewall incluem os seguintes:
• finger
• identd
• netdump
• netdump-server
• nfs
• portmap
• rwhod
• sendmail
• smb
(Samba)
• yppasswdd
• ypserv
• ypxfrd
Você pode consultar mais informações sobre a proteção de serviços de rede em Capítulo 5.
A próxima seção aborda as ferramentas disponíveis para configurar um firewall simples.
4.6. Firewalls Pessoais
Uma vez configurados os serviços de rede necessários, é importante implementar um firewall.
Firewalls evitam que pacotes de rede acessem a interface de rede do sistema. Se for feito um pedido a
uma porta sendo bloqueada pelo firewall, este será ignorado. Se o serviço estiver escutando em uma
38
Capítulo 4. Segurança da Estação de Trabalho
destas portas bloqueadas, não receberá os pacotes e será efetivamente desabilitado. Por este motivo,
tome cuidado ao configurar um firewall para bloquear acesso a portas não usadas, para não bloquear
acesso a portas usadas por serviços configurados.
Para a maioria dos usuários, a melhor ferramenta para configurar um firewall simples é a ferramenta
de configuração gráfica distribuída com o Red Hat Enterprise Linux: a Ferramenta de Configuração
do Nível de Segurança (redhat-config-securitylevel). Esta ferramenta cria regras iptables
abrangentes para um firewall com propósitos genéricos usando uma interface de painel de controle.
Para mais informações sobre o uso desta aplicação e quais opções ela oferece, consulte o capítulo entitulado Configuração Básica do Firewall no Guia de Administração do Sistema do Red Hat Enterprise
Linux.
Para usuários avançados e administradores de servidores, configurar manualmente um firewall com
iptables é provavelmente a melhor opção. Consulte o Capítulo 7 para mais informações. Para acessar um guia compreensivo sobre o comando iptables, consulte o capítulo iptables no Guia de
Referência do Red Hat Enterprise Linux.
4.7. Ferramentas de Comunicação de Segurança Melhorada
Na mesma proporção em que o tamanho e a popularidade da Internet tem crescido, cresceu também
a ameaça da intercepção de comunicações. Através do anos, ferramentas foram desenvolvidas para
criptografar comunicações ao longo de sua transferência pela rede.
O Red Hat Enterprise Linux é distribuído com duas ferramentas básicas que usam algoritmos de alto
nível e baseados em criptografia de chave pública para proteger as informações conforme trafegam
pela rede.
•
OpenSSH — Uma implementação livre do protocolo SSH para criptografar comunicações de rede.
•
Gnu Privacy Guard (GPG) — Uma implementação livre da aplicação de criptografia PGP (Pretty
Good Privacy) para criptografar dados.
OpenSSh é uma maneira mais segura de acessar uma máquina remota e substitui serviços não criptografados como telnet e rsh. OpenSSH inclui um serviço de rede, chamado sshd, e três aplicações
cliente de linha de comandos:
• ssh
— Um cliente de acesso seguro ao console remoto.
• scp
— Um comando seguro de cópia remota.
• sftp
— Um cliente pseudo-ftp seguro que permite seções interativas de transferência de arquivo.
É altamente recomendado que qualquer comunicação remota com sistemas Linux ocorra usando o
protocolo SSH. Para mais informaçõe sobre o OpenSSH, veja o capítulo OpenSSH do Guia de Administração do Sistema do Red Hat Enterprise Linux. Para mais informações sobre o Protocolo SSH,
veja o capítulo Protocolo SSH no Guia de Referência do Red Hat Enterprise Linux.
Importante
Apesar do serviço sshd ser essencialmente seguro, ele deve ser mantido atualizado para evitar
ameaças de segurança. Veja o Capítulo 3 para mais informações sobre esta questão.
GPG é uma excelente maneira de manter a privacidade de dados delicados. Pode ser usado para enviar
email com dados delicados através de redes públicas e para proteger dados sensíveis em discos rígidos.
Para mais informações sobre o uso do GPG, consulte o apêndice entitulado Guia de Iniciação do Gnu
Privacy Guard do Guia de Administração do Sistema do Red Hat Enterprise Linux.
Capítulo 5.
Segurança do Servidor
Quando um sistema é usado com um servidor em um rede pública, torna-se um alvo de ataques. Por
esta razão solidificar e trancar os serviços é de suma importância para o administrador de sistemas.
Antes de aprofundar em questões específicas, você deve revisar as seguintes dicas gerais para aumentar
a segurança do servidor:
•
Mantenha todos os serviços atualizados para protegê-los contra as ameaças recentes.
•
Use protocolos seguros sempre que possível.
•
Ofereça apenas um tipo de serviço de rede por máquina sempre que possível.
•
Monitore todos os servidores cuidadosamente e atente para atividades suspeitas.
5.1. Protegendo Serviços com TCP Wrappers e xinetd
TCP wrappers oferecem controle de acesso a vários serviços. A maioria dos serviços de rede modernos, como SSH, Telnet e FTP, fazem uso dos TCP wrappers, que fica de guarda entre a entrada de um
pedido e o serviço requisitado.
Os benefícios oferecidos pelos TCP wrappers aumentam quando este é usado junto ao xinetd, um
super serviço que oferece acesso adicional, registro, vinculação, redirecionamento e controle de utilização de recursos.
Dica
É uma boa idéia usar regras de firewall do IPTables juntamente ao TCP wrappers e xinetd para
criar redundância nos controles de acesso do serviço. Consulte o Capítulo 7para mais informações
sobre a implementação de firewalls com comandos do IPTables.
Mais informações sobre a configuração do TCP wrappers e xinetd podem ser encontradas no capítulo entitulado TCP Wrappers e xinetd do Guia de Referência do Red Hat Enterprise Linux;.
As sub-seções seguintes assumem um conhecimento básico de cada tópico e focam nas opções de
segurança específicas.
5.1.1. Aumentando a Segurança com TCP Wrappers
TCP wrappers são capazes de muito mais que negar acesso aos serviços. Esta seção ilustra como
eles podem ser utilizados para enviar banners de conexão, alertar ataques em máquinas específicas e
aumentar a funcionalidade de registro. Consulte a página man hosts_options para obter uma lista
completa das funcionalidades e controle de idioma do TCP wrapper.
5.1.1.1. TCP Wrappers e Banners de Conexão
Enviar um banner intimidador para clientes conectando a um serviço é uma boa maneira de disfarçar
em qual sistema o servidor está rodando enquanto informa um atacante potencial que o administrador
de sistemas está vigiando. Para implementar um banner do TCP wrappers para um serviço, use a
opção banner.
40
Capítulo 5. Segurança do Servidor
Este exemplo implementa um banner para vsftpd. Para começar, crie um arquivo de banner. Pode
estar em qualquer lugar do sistema, mas deve levar o mesmo nome que o daemon. Neste exemplo, o
arquivo é chamado /etc/banners/vsftpd.
O conteúdo do arquivo é parecido com o seguinte:
220-Hello, %c
220-All activity on ftp.example.com is logged.
220-Act up and you will be banned.
A expressão %c oferece uma gama de informações do cliente, tais como nome de usuário e nome da
máquina ou nome de usuário e endereço IP, para intimar ainda mais a conexão. O Guia de Referência
do Red Hat Enterprise Linux tem uma lista de outras expressões disponíveis para TCP wrappers.
Para que este banner seja apresentado em futuras conexões, adicione a seguinte linha ao arquivo
/etc/hosts.allow:
vsftpd : ALL : banners /etc/banners/
5.1.1.2. TCP Wrappers e Alertas de Ataque
Se uma determinada máquina ou rede for flagrada atacando o servidor, o TCP wrappers pode ser usado
para alertar o administrador sobre ataques subsequentes desta máquina ou rede através da diretiva
spawn.
Neste exemplo, assuma que um cracker da rede 206.182.68.0/24 foi pêgo tentando atacar o servidor. Ao inserir a seguinte linha no arquivo /etc/hosts.deny, a tentativa de conexão é negada e
registrada em um arquivo especial:
ALL : 206.182.68.0 : spawn /bin/ ’date’ %c %d >> /var/log/intruder_alert
A expressão %d traz o nome do serviço que o atacante estava tentando acessar.
Para permitir a conexão e registrá-la, insira o informativo spawn no arquivo /etc/hosts.allow.
Nota
Já que a diretiva spawn executa qualquer comando de linha, crie um script especial para notificar o
administrador ou para executar uma série de comandos na ocasião em que um determinado cliente
tenta conectar ao servidor.
5.1.1.3. TCP Wrappers e Registro Melhorado
Se determinados tipos de conexões são mais preocupantes que outras, o nível de registro pode ser
elevado para estes serviços através da opção severity.
Neste exemplo, assuma que qualquer um tentando conectar à porta 23 (a porta do Telnet) em um
servidor FTP é um cracker. Para denotar isso, insira um sinal emerg nos arquivos de registro ao invés
do sinal default, info, e negue a conexão.
Para fazer isso, insira a seguinte linha no arquivo /etc/hosts.deny:
in.telnetd : ALL : severity emerg
Capítulo 5. Segurança do Servidor
41
Isto usa a facilidade de registro authpriv default, mas eleva a prioridade do valor default do info
para emerg, que envia mensagens de registro diretamente ao console.
5.1.2. Aumentando a Segurança com o xinetd
O super servidor xinetd é uma outra ferramenta útil para controlar o acesso a seus serviços subordinados. Esta seção foca em como o xinetd pode ser usado para montar um serviço-armadilha e
controlar a quantidade de recursos que qualquer serviço xinetd pode usar para arruinar ataques ’denial of service’. Para obter uma lista mais completa das opções disponíveis, consulte as páginas man
do xinetd e do xinetd.conf.
5.1.2.1. Montando uma Armadilha
Uma importante característica do xinetd é sua habilidade em adicionar máquinas (hosts) a uma
lista de no_access. Às máquinas desta lista são negadas as conexões subsequentes aos serviços
gerenciados pelo xinetd por um determinado período ou até o xinetd ser reiniciado. Isto é feito
usando o atributo SENSOR. Esta técnica e uma maneira fácil de bloquear máquinas que tentarem
scanear o servidor.
O primeiro passo para definir um SENSOR é escolher um serviço que você não planeja utilizar. Neste
exemplo, usamos o Telnet.
Edite o arquivo /etc/xinetd.d/telnet e altere a linha flags para:
flags
= SENSOR
Adicione as seguintes linhas entre os colchetes:
deny_time
= 30
Isto nega a máquina que tentou conectar à porta por 30 minutos. Outros valores aceitáveis para o
atributo deny_time são FOREVER (sempre), que mantém o banimento efetivo até que o xinetd
seja reiniciado, e NEVER (nunca), que permite a conexão e a registra.
Finalmente, na última linha deve-se ler:
disable
= no
Apesar de usar o SENSOR ser uma boa maneira de detectar e parar conexões de máquinas periogosas,
há duas desvantagens:
•
Não funciona contra scans secretos.
•
Um atacante ciente de que você está rodando o SENSOR pode montar um ataque ’denial of service’
contra determinadas máquinas forjando seus endereços IP e conectando à porta proibida.
5.1.2.2. Controlando Recursos de Servidor
Outra característica importante do xinetd é sua habilidade em controlar a quantidade de recursos
que os serviços sob seu controle podem utilizar.
Ele o faz através das seguintes diretivas:
+
,-+
,
number_of_connections
wait_period — Determina as conexões permitidas
ao serviço por segundo. Esta diretiva aceita apenas valores inteiros.
• cps =
42
Capítulo 5. Segurança do Servidor
.
/
number_of_connections Determina o número total de conexões permitidas
a um serviço. Esta diretiva aceita tanto um valor inteiro como UNLIMITED.
• instances =
.
/
number_of_connections — Determina as conexões permitidas a um
serviço por cada máquina. Esta diretiva aceita tanto um valor inteiro como UNLIMITED.
• per_source =
.
/
number[K|M] — Determina a quantidade de memory address space que o
serviço pode ocupar em kilobytes ou megabytes. Esta diretiva aceita tanto um valor inteiro como
UNLIMITED.
• rlimit_as =
.
/
number_of_seconds — Determina o tempo em segundos durante o qual
um serviço pode ocupar a CPU. Esta diretiva aceita tanto um valor inteiro como UNLIMITED.
• rlimit_cpu =
Usando estas diretivas pode ajudar a prevenir que qualquer serviço xinetd sobrecarregue o sistema,
resultando em recusa de serviço (denial of service).
5.2. Protegendo o Portmap
O serviço portmap é um daemon de porta dinâmica para serviços RPS, como o NIS e o NFS. Tem
mecanismos de autenticação fracos e tem habilidade para delegar uma enorme gama de portas para os
serviços que controla. Por estas razões, é difcícil de proteger.
Se você está rodando serviços RPC, siga estas regras básicas.
5.2.1. Proteja o portmap com TCP Wrappers
É importante usar o TCP wrappers para limitar quais redes ou máquinas têm acesso ao serviço portmap já que este não possue uma forma de autenticação própria (built-in).
Futuramente, use somente endereços IP ao limitar acesso para o serviço. Evite usar estes nomes de
máquinas (hostnames), já que eles podem ser forjados através do ’poisoning’ do DNS e outros métodos.
5.2.2. Proteja o portmap Com IPTables
Para restringir acesso ao serviço portmap futuramente, é uma boa idéia adicionar regras do IPTables
ao servidor, restringindo o acesso a redes específicas.
Abaixo há dois exemplos de comandos do IPTables que permitem conexões TCP ao serviço portmap
(escutando na porta 111) a partir da rede 192.168.0/24 e da máquina local (que é necessária para o
serviço sgi_fam usado pelo Nautilus). Todos os outros pacotes são derrubados.
iptables -A INPUT -p tcp -s! 192.168.0.0/24 --dport 111 -j DROP
iptables -A INPUT -p tcp -s 127.0.0.1 --dport 111 -j ACCEPT
Para limitar o tráfego UDP similarmente, use o seguinte comando.
iptables -A INPUT -p udp -s! 192.168.0.0/24
--dport 111 -j DROP
Dica
Consulte o Capítulo 7 para mais informações sobre a implementação de firewalls com comandos do
IPTables.
Capítulo 5. Segurança do Servidor
43
5.3. Protegendo o NIS
NIS significa Serviço de Informações de Rede (Network Information Service). É um serviço RPC chamado ypserv que é usado em conjunto com o portmap e outros serviços relacionados, para distribuir
mapas de nomes de usuário, senhas e outras informações importantes para qualquer computador que
queira estar em seu domínio.
Um servidor NIS é composto de diversas aplicações. Elas incluem as seguintes:
• /usr/sbin/rpc.yppasswdd — Também chamado
a usuários alterarem suas senhas NIS.
de serviço yppasswdd, esse daemon permite
— Também chamado de serviço ypxfrd, esse daemon é responsável
pelas transfências de mapa NIS através da rede.
• /usr/sbin/rpc.ypxfrd
• /usr/sbin/yppush —
Essa aplicação amplia bancos de dados NIS alterados para servidores NIS
• /usr/sbin/ypserv —
Este é o servidor daemon do NIS.
múltiplos.
NIS é bastante inseguro para os padrões de hoje. Não tem mecanismo de autenticação da máquina e
passa toda a sua informação sem criptografia através da rede, incluindo uma gama de senhas. Como
resultado, tenha muito cuidado ao configurar uma rede que usa NIS. Para complicar ainda mais, a
configuração default do NIS é essencialmente insegura.
É recomendado a qualquer um planejando implementar um servidor NIS, primeiro proteger o serviço
portmap conforme descrito na Seção 5.2, e então resolver as seguintes questões.
5.3.1. Planejar Cuidadosamente a Rede
Como o NIS passa informações delicadas sem criptografia através da rede, é importante que o serviço
seja executado por trás de um firewall e numa rede segmentada e segura. Toda vez que informações
do NIS são passadas através de uma rede insegura, seus riscos estão sendo interceptados. Um planejamento cuidadoso da rede neste aspecto pode ajudar a prevenir sérias violações à segurança.
5.3.2. Use um Nome de Domínio e Nome da Máquina (hostname) do NIS
Parecido com uma Senha
Qualquer máquina com um domínio NIS pode usar comandos para extrair informações do servidor
sem autenticação, desde que o usuário saiba o o nome da máquina DNS e o nome de domínio NIS do
servidor.
Por exemplo: se alguém conectar um laptop a uma rede ou violar a rede por fora (e conseguir roubar
um endereço IP), o seguinte comando revela o mapa de /etc/passwd:
0
1
NIS_domain
ypcat -d
0
-h
1
DNS_hostname
passwd
Se este atacante for um usuário root, poderá obter o arquivo /etc/shadow digitando o seguinte
comando:
ypcat -d
0
NIS_domain
1
-h
0
DNS_hostname
1
shadow
Nota
Se o Kerberos for usado, o arquivo /etc/shadow não estará armazenado em um mapa NIS.
44
Capítulo 5. Segurança do Servidor
Para dificultar o acesso aos mapas NIS a um atacante, crie uma série randômica de caracteres para o nome da máquina DNS, tal como o7hfawtgmhwg.domain.com. Similarmente, crie um nome
diferente de domínio NIS randomizado . Isto dificulta bastante um atacante de acessar o servidor NIS.
5.3.3. Edite o Arquivo /var/yp/securenets
O NIS escuta todas as redes caso o arquivo /var/yp/securenets esteja em branco ou não exista
(como é o caso após uma instalação default). Uma das primeiras coisas a fazer é colocar uma máscara de rede/’network pairs’ no arquivo de modo que ypserv somente responda aos pedidos da rede
apropriada.
Veja abaixo um exemplo de entrada de um arquivo /var/yp/securenets:
255.255.255.0
192.168.0.0
Alerta
Nunca inicie um servidor NIS pela primeira vez sem criar o arquivo /var/yp/securenets.
Essa técnica não oferece proteção contra ataque de spoofing de IP, mas pelo menos impõe limites a
quais redes o servidor NIS serve.
5.3.4. Determinar Portas Estáticas e Usar Regras do IPTables
Todos os servidores relacionados ao NIS podem ter portas específicas, exceto o rpc.yppasswdd —
o daemon que permite a usuários alterarem suas senhas de autenticação (login). Determinar portas
para os outros dois daemons do servidor NIS, rpc.ypxfrd e ypserv, permite criar regras de firewall
para proteger futuramente os daemons do servidor NIS contra intrusos.
Para fazer isto, adicione as seguintes linhas a /etc/sysconfig/network:
YPSERV_ARGS="-p 834"
YPXFRD_ARGS="-p 835"
As seguintes regras do IPTables podem ser determinadas para reforçar a qual rede o servidor escuta
para estas portas:
iptables -A INPUT -p ALL -s! 192.168.0.0/24
iptables -A INPUT -p ALL -s! 192.168.0.0/24
--dport 834 -j DROP
--dport 835 -j DROP
Dica
Consulte o Capítulo 7 para mais informações sobre a implementação de firewalls com comandos do
IPTables.
Capítulo 5. Segurança do Servidor
45
5.3.5. Use Autenticação do Kerberos
Uma das desvantagens mais gritantes ao usar NIS para autenticação é que sempre que um usuário
se autentica (log in) em uma máquina, uma senha com caracteres misturados é enviada do mapa
/etc/shadow através da rede. Se um intruso obtiver acesso a um domínio NIS e bisbilhotar o tráfego
de rede, essas misturas de nomes de usuários e senhas podem ser discretamente coletadas. Com tempo
suficiente, um programa de cracking de senha pode adivinhar senhas fáceis e um atacante pode obter
acesso a uma conta válida na rede.
Como o Kerberos usa criptografia de chave secreta, as misturas de senha nunca são enviadas através
da rede, tornando o sistema bem mais seguro. Para saber mais sobre o Kerberos, consulte o capítulo
entitulado Kerberos no Guia de Referência do Red Hat Enterprise Linux.
5.4. Protegendo o NFS
O Sistema de Arquivo de Rede (Network File System ou NFS) é um serviço RPC, usado em conjunto com o portmap e outros serviços relacionados, para oferecer sistemas de arquivo acessíveis para
máquinas-cliente. Para mais informações sobre o funcionamento do NFS, consulte o capítulo entitulado Sistema de Arquivo de Rede (NFS) no Guia de Referência do Red Hat Enterprise Linux. Para
mais informações sobre o NFS, consulte o Guia de Administração do Sistema do Red Hat Enterprise
Linux. As sub-seções a seguir assumem um conhecimento básico do NFS.
Importante
É recomendado que qualquer um planejando implementar um servidor NFS, primeiramente proteja
o serviço portmap, como descrito em Seção 5.2, antes de resolver as seguintes questões.
5.4.1. Planejar Cuidadosamente a Rede
Como o NFS passa todas as informações sem criptografia através da rede, é importante que o serviço
seja executado por trás de um firewall e numa rede segmentada e segura. Toda vez que informações
são passadas através do NFS em uma rede insegura, seus riscos estão sendo interceptados. Um planejamento cuidadoso da rede neste aspecto pode ajudar a prevenir violações à segurança.
5.4.2. Cuidado com Erros de Sintaxe
O servidor NFS determina quais sistemas de arquivo e quais máquinas exportar para estes diretórios
através do arquivo /etc/exports. Cuidado para não adicionar espaços extras ao editar este arquivo.
Por exemplo: a linha a seguir no arquivo /etc/exports compartilha o diretório /tmp/nfs/ com a
máquina bob.example.com com permissões leitura e escrita.
/tmp/nfs/
bob.example.com(rw)
Por outro lado, esta linha do arquivo /etc/exports compartilha o mesmo diretório com a máquina
bob.example.com com permissão somente-leitura, e o compartilha com o mundo com permissões
leitura e escrita devido um único caracter de espaço após o nome da máquina (hostname).
/tmp/nfs/
bob.example.com (rw)
É bom praticar a verificação de todos os compartilhamentos do NFS usando o comando showmount
para checar o que foi compartilhado.
46
showmount -e
2
Capítulo 5. Segurança do Servidor
hostname
3
5.4.3. Não Use a Opção no_root_squash
Por default, as partilhas do NFS alteram o usuário root para o usuário nfsnobody, uma conta de
usuário sem privilégios. Desta maneira, todos os arquivos criados por root são de propriedade (owner)
do usuário nfsnobody, o que previne o upload de programas com as informações do conjunto de ids
do usuário.
Se no_root_squash é usado, os usuários root remotos poderão alterar qualquer arquivo do sistema de arquivo compartilhado e deixar aplicações infectadas pelo trojan, para que outros usuários as
executem inadvertidamente.
5.5. Protegendo o Servidor HTTP Apache
O Servidor HTTP Apache é um dos serviços mais estáveis e seguros distribuídos com o Red Hat
Enterprise Linux. Há um número exorbitante de opções e técnicas disponíveis para proteger o Servidor
HTTP Apache — muito numerosos para serem explorados em detalhes aqui.
Ao configurar o Servidor HTTP Apache é importante ler a documentação disponível para a
aplicação. Isto inclui o capítulo entitulado Servidor HTTP Apache do Guia de Referência do Red Hat
Enterprise Linux, o capítulo Configuração do Servidor HTTP Apache do Guia de Administração
do Sistema do Red Hat Enterprise Linux e os manuais do Stronghold, disponíveis online:
http://www.redhat.com/docs/manuals/stronghold/.
Veja abaixo uma lista de opções de configuração para as quais administradores devem ser muito
cuidadosos.
5.5.1. FollowSymLinks
Esta diretiva é habilitada por default, portanto cuidado ao criar os links simbólicos no documento root
do servidor Web. Por exemplo: é uma má idéia prover um link simbólico para /.
5.5.2. A Diretiva Indexes
Esta diretiva é habilitada por default, mas pode não ser desejável. Para prevenir que visitantes naveguem pelos arquivos no servidor, remova esta diretiva.
5.5.3. A Diretiva UserDir
A diretiva UserDir é desabilitada por default porque esta pode confirmar a presença de uma conta
de usuário no sistema. Para possibilitar a navegação pelos diretórios do usuário no servidor, use as
seguintes diretivas:
UserDir enabled
UserDir disabled root
Estas diretivas ativam a navegação em todos os diretórios de usuário, exceto no /root. Para adicionar
usuários à lista de contas desativadas, adicione uma lista de usuários delimitada por espaço na linha
UserDir disabled.
Capítulo 5. Segurança do Servidor
47
5.5.4. Não Remova a Diretiva IncludesNoExec
Por default, o lado do servidor inclui módulos que não podem executar comandos. Não é recomendado
alterar esta configuração a não ser que seja absolutamente necessário, já que pode, potencialmente,
possibilitar que um atacante execute comandos no sistema.
5.5.5. Permissões Restritas para Diretórios Executáveis
Certifique-se de conceder permissões de gravação (write) para o usuário root em todos os diretórios
contendo scripts ou CGIs. Isto pode ser feito digitando os seguintes comandos:
44
55
chown root
directory_name
chmod 755
directory_name
Também verifique sempre se todos os scripts rodando no sistema funcionam como planejado antes de
colocá-los em produção.
5.6. Protegendo o FTP
O Protocolo de Transporte de Arquivo (File Transport Protocol - FTP) é um protocolo TCP antigo
desenvolvido para transferir arquivos pela rede. Já que todas as transações com o servidor (inclusive
a autenticação de usuário) são criptografadas, FTP é considerado um protocolo inseguro e deve ser
configurado cuidadosamente.
O Red Hat Enterprise Linux oferece três servidores FTP.
— Um FTP daemon ’kerberizado’ baseado no xinetd que não passa informações de
autenticação através da rede.
• gssftpd
•
Acelerador de Conteúdo Red Hat (tux) — Um servidor Web com capacidades de FTP no espaço
do kernel.
• vsftpd
— Uma implementação auto-suficiente do serviço FTP orientada à segurança.
As orientações de segurança a seguir se referem à configuração do serviço FTP vsftpd.
5.6.1. Banner de Saudação do FTP
Antes de submeter um nome de usuário e senha, é apresentado um banner de saudação a todos os
usuários. Por default, este banner inclui informações da versão úteis para crackers tentando identificar
fraquezas em um sistema.
Para alterar o banner de saudação para o vsftpd, adicione a seguinte diretiva a
/etc/vsftpd/vsftpd.conf:
4
ftpd_banner= insert_greeting_here
Substitua
ção.
6
5
insert_greeting_here
7
na diretiva acima pelo texto de sua mensagem de sauda-
Para banners com muitas linhas, é melhor usar um arquivo de banner. Para simplificar o gerenciamento
de banners múltiplos, coloque todos os banners em um novo diretório chamado /etc/banners/.
O arquivo de banners para conexões FTP, neste exemplo, é /etc/banners/ftp.msg. O exemplo
abaixo mostra como este arquivo se parece:
####################################################
# Hello, all activity on ftp.example.com is logged.#
48
Capítulo 5. Segurança do Servidor
####################################################
Nota
Não é necessário começar cada linha do arquivo com 220, conforme especificado na Seção 5.1.1.1.
Para referenciar este arquivo de banners para o vsftpd, adicione a seguinte diretiva a
/etc/vsftpd/vsftpd.conf:
banner_file=/etc/banners/ftp.msg
Também é possível enviar banners adicionais para conexões entrantes usando TCP wrappers conforme
descrito na Seção 5.1.1.1.
5.6.2. Acesso Anônimo
A presença do diretório /var/ftp/ ativa a conta anônima.
A maneira mais fácil de criar este diretório é instalar o pacote vsftpd. Este pacote define uma árvore
de diretório para usuários anônimos e configura as permissões dos diretórios para somente-leitura para
usuários anônimos.
Por default, a conta do usuário anônimo não pode escrever em nenhum diretório.
Atenção
Se você possibilitar o acesso anônimo a um servidor FTP, tome cuidado onde armazena os dados
importantes.
5.6.2.1. Upload Anônimo
Para permitir que usuários anônimos façam upload, é recomendado criar um diretório
somente-gravação (write-only) em /var/ftp/pub/.
Para fazer isso, digite:
mkdir /var/ftp/pub/upload
Depois altere as permissões para que usuários anônimos não possam ver o que está no diretório,
digitando:
chmod 730 /var/ftp/pub/upload
Uma lista do diretório em formato longo deve se parecer com o seguinte:
drwx-wx---
2 root
ftp
4096 Feb 13 20:05 upload
Capítulo 5. Segurança do Servidor
49
Alerta
Administradores que permitem a usuários anônimos ler e gravar em diretórios, frequentemente percebem que seu servidor se torna um depósito de software roubado.
Adicionalmente, abaixo de vsftpd, adicione a seguinte linha a /etc/vsftpd/vsftpd.conf:
anon_upload_enable=YES
5.6.3. Contas de Usuário
Já que o FTP passa nomes de usuário e senhas não criptografados através de redes inseguras para
autenticação, é uma boa idéia proibir usuários do sistema acessarem o servidor através de suas contas
de usuário.
Para
desativar
contas
de
/etc/vsftpd/vsftpd.conf:
usuário
em
vsftpd,
adicione
a
seguinte
diretiva
a
local_enable=NO
5.6.3.1. Restringindo Contas de Usuário
A maneira mais fácil de desabilitar um grupo específico de contas, como o usuário root e aqueles com
privilégios sudo, a acessar um servidor FTP, é usar um arquivo de lista PAM conforme descrito na
Seção 4.4.2.4. O arquivo de configuração PAM para o vsftpd é /etc/pam.d/vsftpd.
Também é possível desativar contas de usuário dentro de cada serviço diretamente.
Para desativar contas de usuário específicas em vsftpd, adicione o nome do usuário a
/etc/vsftpd.ftpusers.
5.6.4. Use TCP Wrappers para Controlar Acesso
Use TCP wrappers para controlar o acesso a qualquer daemon do FTP, conforme descrito na Seção
5.1.1.
5.7. Protegendo o Sendmail
Sendmail é um Agente de Transporte de Correspondência (Mail Transport Agent - MTA) que utiliza
o Protocolo de Transporte de Correspondência Simples (Simple Mail Transport Protocol - SMTP)
para entregar mensagens eletrônicas entre outros MTAs e para enviar emails a clientes ou agentes de
entrega. Apesar de muitos MTAs serem capazes de criptografar tráfego entre eles, a maioria não o
faz, portanto enviar email através de qualquer rede pública é considerado uma forma de comunicação
essencialmente insegura.
Para mais informações sobre o funcionamento do e-mail e uma visão geral dos ajustes de configuração comuns, veja o capítulo Email no Guia de Referência do Red Hat Enterprise Linux. Esta seção
assume um conhecimento básico de como gerar um /etc/mail/sendmail.cf válido, editando o
/etc/mail/sendmail.mc e executando o comando m4, conforme explicado no Guia de Referência
do Red Hat Enterprise Linux.
50
Capítulo 5. Segurança do Servidor
É recomendado a qualquer um planejando implementar um servidor Sendmail, resolver as seguintes
questões.
5.7.1. Limitar Ataque de Proibição de Serviço (Denial of Service Attack)
Devido à natureza do email, um determinado atacante pode facilmente lotar o servidor com correspondência e causar um ataque ’denial of service’. Ao determinar limites para as diretivas a seguir em
/etc/mail/sendmail.mc, a efetividade de ataques deste tipo é limitada.
— O número de conexões que o servidor pode receber por
segundo. Por default, o Sendmail não limita o número de conexões. Se um limite for definido e
alcançado, conexões futuras terão demora.
• confCONNECTION_RATE_THROTTLE
— O número máximo de processos-filho que podem ser gerados
pelo servidor. Por default, o Sendmail não determina um número limite de processos-filho. Se um
limite for definido e alcançado, conexões futuras terão demora.
• confMAX_DAEMON_CHILDREN
— O número mínimo de blocos livres que devem estar disponíveis para
que o servidor aceite correspondência. O default são 100 blocos.
• confMIN_FREE_BLOCKS
• confMAX_HEADERS_LENGTH — O tamanho
mensagem.
• confMAX_MESSAGE_SIZE —
máximo aceitável (em bytes) para o cabeçalho de uma
O tamanho máximo aceitável (em bytes) para qualquer mensagem.
5.7.2. NFS e Sendmail
Nunca coloque o diretório spool de correspondência, /var/spool/mail/, em um volume NFS compartilhado.
Já que o NFS não mantém controle sobre IDs de usuário e grupo, dois ou mais usuários podem ter o
mesmo UID e portanto receber e ler a correspondência do outro.
5.7.3. Usuários Mail-only
Para ajudar a prevenir exploits locais no servidor Sendmail, é melhor que usuários de mail acessem o
Sendmail usando apenas um programa de email. Contas shell não devem ser permitidas no servidor de
mail e todos os usuários shell do arquivo /etc/passwd devem ser definidos para /sbin/nologin
(com a possível exceção do usuário root).
5.8. Verificando Quais Portas estão Escutando
Após configurar os serviços de rede, é importante atentar para quais portas estão escutando as interfaces de rede do sistema. Quaisquer portas abertas podem ser evidências de uma intrusão.
Há duas formas básicas de listar as portas que estão escutando a rede. A menos confiável é questionar
a lista da rede ao digitar comandos como netstat -an ou lsof -i. Este método é menos confiável
já que estes programas não conectam à máquina pela rede, mas checam o que está sendo executado
no sistema. Por esta razão, estas aplicações são alvos frequentes de substituição por atacantes. Desta
maneira, os crackers tentam cobrir seus passos se abrirem portas de rede não autorizadas.
Uma forma mais confiável de listar quais portas estão escutando a rede é usar um scanner de portas
como o nmap.
O comando a seguir, submetido em um console, determina quais portas estão escutando conexões FTP
pela rede:
Capítulo 5. Segurança do Servidor
51
nmap -sT -O localhost
O output deste comando se parece com o seguinte:
Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Interesting ports on localhost.localdomain (127.0.0.1):
(The 1596 ports scanned but not shown below are in state: closed)
Port
State
Service
22/tcp
open
ssh
111/tcp
open
sunrpc
515/tcp
open
printer
834/tcp
open
unknown
6000/tcp
open
X11
Remote OS guesses: Linux Kernel 2.4.0 or Gentoo 1.2 Linux 2.4.19 rc1-rc7)
Nmap run completed -- 1 IP address (1 host up) scanned in 5 seconds
Este output mostra que o sistema está rodando o portmap devido à presença do serviço sunrpc. No
entanto, também há um serviço misterioso na porta 834. Para verificar se a porta está associada à lista
oficial de serviços conhecidos, digite:
cat /etc/services | grep 834
Este comando não retorna nenhum output. Isto indica que enquanto a porta está no intervalo reservado
(de 0 a 1023) e requer acesso root para abrir, não está associada a um serviço conhecido.
Em seguida, verifique as informações sobre a porta usando netstat ou lsof. Para verificar a porta
834 usando netstat, use o seguinte comando:
netstat -anp | grep 834
O comando retorna o seguinte output:
tcp
0
0 0.0.0.0:834
0.0.0.0:*
LISTEN
653/ypbind
A presença da porta aberta em netstat afirma que um cracker que abra clandestinamente uma porta
em um sistema hackeado provavelmente não permitirá que esta seja revelada através deste comando.
A opção [p] também revela o id do processo (PID) do serviço que abriu a porta. Neste caso, a
porta aberta pertence ao ypbind (NIS), que é um serviço RPC administrado juntamente ao serviço
portmap.
O comando lsof revela informações similares já que é capaz de ligar portas abertas a serviços:
lsof -i | grep 834
Veja abaixo a parte relevante do output deste comando:
ypbind
ypbind
ypbind
ypbind
653
655
656
657
0
0
0
0
7u
7u
7u
7u
IPv4
IPv4
IPv4
IPv4
1319
1319
1319
1319
TCP
TCP
TCP
TCP
*:834
*:834
*:834
*:834
(LISTEN)
(LISTEN)
(LISTEN)
(LISTEN)
Estas ferramentas podem revelar muitas informações sobre o estado dos serviços rodando em uma
máquina. Estas ferramentas são flexíveis e podem prover uma riqueza de informações sobre os serviços e configurações da rede. Portanto, recomendamos fortemente que você consulte as páginas man
do lsof, netstat, nmap e services.
52
Capítulo 5. Segurança do Servidor
Capítulo 6.
Redes Privadas Virtuais (Virtual Private
Networks)
Empresas com diversos escirtórios frequentemente se conectam através de linhas dedicadas por motivos de eficiência e proteção de dados sensíveis transitando entre as diferentes localidades. Por exemplo: muitas empresas usam frame relay ou linhas Asynchronous Transfer Mode (ATM) como uma
solução de rede end-to-end para ligar um escritório aos outros. Esta poder ser uma alternativa cara,
especialmente para pequenas e médias empresas que queiram expandir sem arcar com os altos custos
associados a circuitos digitais dedicados, de nível corporativo.
Engenheiros desenvolveram uma solução de baixo custo para este problema na forma de Redes Privadas Virtuais (Virtual Private Networks - VPNs). Seguindo os mesmos princípios funcionais dos
circuitos dedicados, as VPNs permitem a comunicação digital protegida entre duas partes (ou redes),
criando uma Ampla Área de Rede (Wide Area Network - WAN) a partir de LANs (Áreas Locais de
Rede) existentes. Ela difere do frame relay ou do ATM em seu meio de transporte. As VPNs transmitem através de IP usando datagramas (UDP) como a camada de transporte, tornando-o um condutor
seguro através da Internet, para um determinado destino. A maioria das implementações VPN de software livre incorporam o padrão aberto e criptografia open source para mascarar futuramente os dados
em trânsito.
Algumas empresas aplicam soluções VPN de hardware para aumentar a segurança, enquanto outras
usam software ou implementações baseadas em protocolos. Há diversos fabricantes de soluções VPN
de hardware como Cisco, Nortel, IBM e Checkpoint. Existe uma solução VPN baseada em software
gratuito para Linux chamada FreeS/Wan, que utiliza uma implementação padronizada do IPSec (ou
Internet Protocol Security). Estas soluções VPN atuam como roteadores especializados situados entre
as conexões IP de dois escritórios.
Quando um pacote é transmitido de um cliente, é enviado através do roteador ou porta de comunicação (gateway), que então adiciona informações de cabeçalho para roteamento e autenticação, chamado
Cabeçalho de Autenticação (Authentication Header, AH). Os dados são criptografados e agrupados
com instruções para resolução e descriptografia, chamadas Encapsulating Security Payload (ESP). O
roteador VPN receptor depura as informações de cabeçalho e as roteia ao destino pretendido (uma
estação de trabalho ou um nódulo em uma rede). Usando uma conexão rede-a-rede, o nódulo receptor
da rede local recebe os pacotes descriptografados e prontos para processar. O processo de criptografia/descriptografia em uma conexão VPN rede-a-rede é transparente para o nódulo local.
Com um nível tão alto de segurança, não basta ao cracker interceptar o pacote, mas também descriptografar o pacote (a maioria das VPNs geralmente aplica a cifra tripla ’Data Encryption Standard’
[3DES] de 168 bits). Intrusos que aplicarem o ataque man-in-the-middle entre um servidor e o cliente
também devem ter acesso às chaves trocadas para sessões de autenticação. VPNs são um meio seguro
e efetivo para conectar múltiplos nódulos remotos para atuar como uma intranet unificada.
6.1. VPNs e Red Hat Enterprise Linux
Usuários e administradores do Red Hat Enterprise Linux têm várias opções em termos de implementação de soluções de software para conectar e proteger sua WAN. Há, no entanto, dois métodos de
implementação de conexões VPN equivalentes atualmente suportadas pelo Red Hat Enterprise Linux.
Uma solução equivalente, que pode ser usada como um substituto seguro ao uso de um VPN, envolve rodar o OpenSSH como um túnel entre dois nódulos remotos. Esta solução é uma boa alternativa
ao Telnet, rsh e outros métodos de comunicação remota, mas não atende completamente às necessidades de usabilidade de todos os telecomutadores e filiais corporativas. Duas soluções suportadas
inclusas no Red Hat Enterprise Linux mais próximas da definição de uma VPN são CIPE (Crypto IP
Encapsulation) e IPSEC (Internet Protocol Security).
54
Capítulo 6. Redes Privadas Virtuais (Virtual Private Networks)
6.2. CIPE (Crypto IP Encapsulation)
CIPE é uma implementação do VPN desenvolvida primariamente para o Linux. CIPE utiliza pacotes
IP criptografados que são encapsulados, ou embrulhados, em pacotes de datagrama (UDP). Pacotes
CIPE recebem informações de destino no cabeçalho e são criptografados utilizando o mecanismo
default de criptografia do CIPE. Os pacotes são então transferidos pelo IP como pacotes UDP através
do dispositivo virtual de rede do CIPE (cipcbx) por uma rede de transporte a um nódulo remoto
pretendido. A Figura 6-1 mostra uma configuração típica do CIPE conectando duas redes baseadas no
Linux:
Figura 6-1. Uma Rede e um Cliente Remoto Conectados pelo CIPE
Esse diagrama mostra uma rede rodando CIPE no firewall e uma máquina cliente remota atuando
como um nódulo habilitado pelo CIPE. A conexão CIPE atua como um túnel através do qual todos
os dados da Intranet são roteados entre nódulos remotos. Todos os dados são criptografados usando
chaves de 128 bits geradas dinamicamente, e podem ser comprimidos para transferências de arquivos
grandes ou para enviar aplicações do X para uma máquina remota. CIPE pode ser configurado para
comunicação entre duas ou mais máquinas Linux habilitadas pelo CIPE, e tem drivers de rede para
sistemas operacionais baseados no Win32.
6.3. Por que usar o CIPE?
Há muitas razões para o CIPE ser uma escolha inteligente para administradores de sistemas e de
segurança:
•
O Red Hat Enterprise Linux é distribuído com o CIPE, portanto está disponível para todas
as máquinas Red Hat Enterprise Linux de borda (por exemplo: firewalls ou portas de
comunicação/gateways) e clientes individuais que você queira conectar à sua Intranet. O Red Hat
Enterprise Linux também inclui cifras de criptografia suportadas pelo CIPE.
•
CIPE suporta criptografia usando o Blowfish padrão ou algoritmos de criptografia IDEA. Dependendo da regulamentação de exportação de criptografia em seu país, você deve usar o default (Blowfish) para criptografar todo o tráfego do CIPE em sua Intranet.
Capítulo 6. Redes Privadas Virtuais (Virtual Private Networks)
55
•
Já que o CIPE é baseado em software, qualquer máquina mais antiga ou redundante capaz de rodar o
Red Hat Enterprise Linux, pode se tornar uma porta de comunicação do CIPE, poupando a empresa
do alto custo de aquisição de hardware dedicado a VPN, para conectar duas LANs seguramente.
•
O CIPE é ativamente desenvolvido para trabalhar em conjunto com iptables, ipchains e outros firewalls baseados em regras. A aceitação da entrada de pacotes CIPE UDP é a única coisa
necessária para coexistir com regras de firewall existentes.
•
A configuração do CIPE é feita através de arquivos texto, permitindo a administradores configurar
seus servidores e clientes CIPE remotamente, sem a necessidade de ferramentas gráficas pesadas
que podem não funcionar bem através de uma rede. CIPE também pode ser configurado através da
Ferramenta de Administração de Rede.
6.4. Instalação do CIPE
A instalação do CIPE equivale a instalar uma interface de rede sob o Linux. O pacote RPM do
cipe contém arquivos de configuração encontrados em /etc/cipe/, o daemon do CIPE
(/usr/sbin/ciped-cb), scripts de rede que carregam o módulo do kernel e ativam/desativam a
interface do CIPE (if*-cipcb), e amostras de arquivos de configuração encontrados em
/usr/share/doc/cipe- version /samples/. Há também uma página com informações
detalhadas sobre o protocolo do CIPE e vários detalhes de implementação.
8
9
O guia a seguir detalha uma amostra de configuração envolvendo uma estação de trabalho cliente que
deseja se conectar seguramente a uma LAN remota com uma porta de comunicação CIPE. A estação
de trabalho usa um endereço IP dinâmico de uma conexão cable modem, enquanto a máquina da porta
de comunicação (gateway) ativada pelo CIPE emprega o intervalo 192.168.1.0/24. Isto é conhecido
como uma configuração CIPE "típica". Figura 6-1 ilustra a configuração típica do CIPE.
Instalar o CIPE entre o cliente e o servidor CIPE permite uma conexão par-a-par protegida usando a
Internet como um meio de transmissão do tráfego WAN. A estação de trabalho cliente então transfere
um arquivo através da Internet para o firewall habilitado pelo CIPE, onde cada pacote terá sua data
e hora registrados e lhes serão dados os endereços-par do firewall receptor habilitado pelo CIPE. O
firewall destino então lê as informações de cabeçalho, despe-as, e as envia para o roteador LAN remoto
para serem roteadas para o nódulo de destino. Este processo é simples e completamente transparente
a usuários finais. A maioria das transações são feitas entre pares habilitados pelo CIPE.
6.5. Configuração do Servidor CIPE
Para configurar o servidor CIPE, instale o pacote RPM cipe pelo CD-ROM do Red Hat Enterprise
Linux ou através da Red Hat Network.
Importante
Se você estiver usando uma versão antiga do Red Hat Enterprise Linux e/ou tem uma versão antiga
do CIPE, deve atualizar para a versão mais recente.
O
próximo
passo
é
copiar
as
amostras
de
arquivos
de
configuração
de
/usr/share/doc/cipe-version/samples/ (onde version é a versão do CIPE instalado
em seu sistema) para /etc/cipe/. Uma vez copiados, você precisa editar o arquivo
/etc/cipe/options.cipcbx (x é crescente começando do 0, para aqueles que quiserem ter mais
de uma conexão CIPE no servidor CIPE) para incluir os endereços da sub-rede de sua LAN e
endereços IP do firewall publicamente roteável. Veja a seguir o arquivo options incluso
no RPM cipe do Red Hat Enterprise Linux que, para este exemplo, foi renomeado como
options.cipbcb0:
56
Capítulo 6. Redes Privadas Virtuais (Virtual Private Networks)
# Surprise, this file allows comments (but only on a line by themselves)
# This is probably the minimal set of options that has to be set
# Without a "device" line, the device is picked dynamically
# the peer’s IP address
ptpaddr
6.5.4.3
# our CIPE device’s IP address
ipaddr
6.7.8.9
# my UDP address. Note: if you set port 0 here, the system will pick
# one and tell it to you via the ip-up script. Same holds for IP 0.0.0.0.
me
bigred.inka.de:6789
# ...and the UDP address we connect to. Of course no wildcards here.
peer
blackforest.inka.de:6543
# The static key. Keep this file secret!
# The key is 128 bits in hexadecimal notation.
key
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
O ptpaddr é o endereço do CIPE da LAN remota. O ipaddr é o endereço IP do CIPE da estação
de trabalho. O me é o endereço IP publicamente roteável do cliente que envia os pacotes UDP através
da Internet, e peer é o endereço IP publicamente roteável do servidor CIPE. Note que o endereço
IP da estação de trabalho do cliente é 0.0.0.0 porque utiliza uma conexão dinâmica. O cliente CIPE
manipulará a conexão para a máquina do servidor CIPE. O campo key (representado por x’s; a chave
deve ser secreta) é a chave estática compartilhada. Esta chave deve ser a mesma para ambos os pares
ou a conexão não será possível. Veja a Seção 6.8 para informações sobre como gerar uma chave
estática compartilhada para suas máquinas CIPE.
Aqui está o /etc/cipe/options.cipcb0 editado que a estação de trabalho utilizará:
ptpaddr
ipaddr
me
peer
key
10.0.1.2
10.0.1.1
0.0.0.0
LAN.EXAMPLE.COM:6969
123456ourlittlesecret7890shhhh
Aqui está o arquivo /etc/cipe/options.cipcb0 para o servidor CIPE:
ptpaddr
ipaddr
me
peer
key
10.0.1.1
10.0.1.2
LAN.EXAMPLE.COM:6969
0.0.0.0
123456ourlittlesecret7890shhhh
6.6. Configurando Clientes para o CIPE
Após configurar o servidor CIPE apropriadamente e testar as funcionalidades, você pode extender a
conexão para a máquina cliente.
O cliente CIPE deve poder conectar e desconectar a conexão CIPE de maneira automatizada. Consequentemente, CIPE contém mecanismos próprios para personalizar configurações para usos individuais. Por exemplo: um funcionário remoto pode conectar-se a um dispositivo CIPE na LAN digitando
o seguinte:
/sbin/ifup cipcb0
Capítulo 6. Redes Privadas Virtuais (Virtual Private Networks)
57
O dispositivo deve aparecer automaticamente. As informações de roteamento e regras de firewall
também devem ser configuradas ao longo da conexão. O funcionário remoto deve poder terminar a
conexão com o seguinte:
/sbin/ifdown cipcb0
Configurar clientes requer a criação de scripts localizados que são executados após o dispositivo ser
carregado. A configuração do dispositivo pode ser feita localmente através de um arquivo, criado pelo usuário, chamado /etc/sysconfig/network-scripts/ifcfg-cipcb0. Este arquivo contém
parâmetros que determinam se a conexão CIPE ocorre no momento de ligar a máquina (boot-time), o
nome do dispositivo do CIPE, entre outras informações. Veja a seguir o arquivo ifcfg-cipcb0 para
um cliente remoto conectando a um servidor CIPE:
DEVICE=cipcb0
ONBOOT=yes
BOOTPROTO=none
USERCTL=no
# This is the device for which we add a host route to our CIPE peer through.
# You may hard code this, but if left blank, we will try to guess from
# the routing table in the /etc/cipe/ip-up.local file.
PEERROUTEDEV=
# We need to use internal DNS when connected via cipe.
DNS=192.168.1.254
O dispositivo do CIPE é chamado cipcb0. Este dispositivo é carregado no momento de inicializar
(configurado através do campo ONBOOT) e não utiliza um protocolo boot (DHCP, por exemplo) para
receber um endereço IP para o dispositivo. O campo PEERROUTEDEV determina o nome do dispositivo
do servidor CIPE que conecta ao cliente. Se não for especificado nenhum dispositivo neste campo,
algum será determinado após o dispositivo ser carregado.
Se suas redes internas estiverem atrás de um firewall, defina regras para permitir que a interface CIPE
na máquina do cliente envie e receba pacotes UDP. Consulte o Capítulo 7 para informações sobre a
configuração do firewall. Neste exemplo de configuração, as regras iptables são implementadas.
Nota
Clientes devem ser configurados de maneira que todos os parâmetros locais sejam inseridos em um
arquivo, criado pelo usuário, chamado /etc/cipe/ip-up.local. Os parâmetros locais devem ser
revertidos quando a sessão CIPE for finalizada, usando o /etc/cipe/ip-down.local.
Firewalls devem ser configurados nas máquinas cliente para aceitar pacotes CIPE UDP encapsulados.
As regras podem variar amplamente, mas a aceitação trivial de pacotes UDP é necessária para a
conectividade do CIPE. As regras seguintes permitem transmissões UDP CIPE na máquina do cliente
remoto conectando à LAN. A regra final adiciona o ’mascaramento’ do IP para permitir que o cliente
remoto se comunique à LAN e à Internet.
/sbin/modprobe iptables
/sbin/service iptables stop
/sbin/iptables -P INPUT DROP
/sbin/iptables -F INPUT
/sbin/iptables -A INPUT -j ACCEPT -p
/sbin/iptables -A INPUT -j ACCEPT -i
/sbin/iptables -A INPUT -j ACCEPT -i
/sbin/iptables -t nat -A POSTROUTING
udp -s 10.0.1.1
cipcb0
lo
-s 192.168.1.0/24 -o eth0 -j MASQUERADE
58
Capítulo 6. Redes Privadas Virtuais (Virtual Private Networks)
Adicione regras de roteamento para que a máquina cliente acesse os nódulos por trás da conexão CIPE
como se estivessem na rede local. Isto pode ser feito rodando o comando route. Neste exemplo, a
estação de trabalho do cliente precisa ter a seguinte rota de rede:
route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.0.1.2
Veja a seguir o script final /etc/cipe/ip-up.local para a estação de trabalho do cliente:
#!/bin/bash -v
if [ -f /etc/sysconfig/network-scripts/ifcfg-$1 ] ; then
. /etc/sysconfig/network-scripts/ifcfg-$1
else
cat
EOT | logger
Cannot find config file ifcfg-$1. Exiting.
EOF
exit 1
fi
:;:
:;:
if [ -n ${PEERROUTEDEV} ]; then
EOT | logger
cat
Cannot find a default route to send cipe packets through!
Punting and hoping for the best.
EOT
# Use routing table to determine peer gateway
export PEERROUTEDEV=‘/sbin/route -n | grep ^0.0.0.0 | head -n 1 \
| awk ’{ print $NF }’‘
fi
####################################################
# Add The routes for the remote local area network #
####################################################
route add -host 10.0.1.2 dev $PEERROUTEDEV
route add -net 192.168.1.0 netmask 255.255.255.0 dev $1
####################################################
# IP TABLES Rules to restrict traffic
#
####################################################
/sbin/modprobe iptables
/sbin/service iptables stop
/sbin/iptables -P INPUT DROP
/sbin/iptables -F INPUT
/sbin/iptables -A INPUT -j ACCEPT -p
/sbin/iptables -A INPUT -j ACCEPT -i
/sbin/iptables -A INPUT -j ACCEPT -i
/sbin/iptables -t nat -A POSTROUTING
udp -s 10.0.1.2
$1
lo
-s 192.168.1.0/24 -o eth0 -j MASQUERADE
6.7. Personalizando o CIPE
O CIPE pode ser configurado de inúmeras maneiras, desde passar parâmetros como argumentos de
linhas de comando ao iniciar o ciped até gerar novas chaves estáticas compartilhadas. Isto proporciona ao adminstrador de segurança a flexibilidade de personalizar as sessões do CIPE para garantir a
segurança assim como para aumentar a produtividade.
Capítulo 6. Redes Privadas Virtuais (Virtual Private Networks)
59
Nota
Os parâmetros mais comuns devem ser inseridos no arquivo /etc/cipe/options.cipcbx para o
carregamento automático no momento da execução (runtime).
Esteja ciente de que todos os parâmetros passados como opções na linha de comandos
sobrescreverão os respectivos parâmetros definidos no arquivo de configuração
/etc/cipe/options.cipcbx .
A Tabela 6-1 detalha alguns dos parâmetros de linha de comandos ao rodar o daemon do ciped.
Parâmetros
Descrição
arg
Passa argumentos ao script de inicialização /etc/cipe/ip-up
cttl
Define o valor do TTL (Carrier Time To Live). O valor recomendado é 64
debug
Valor boleano para permitir o depuramento de erros
device
Nomeia o dispositivo do CIPE
ipaddr
Endereço IP publicamente roteável da máquina CIPE
ipdown
Escolha um script alternativo ip-down e então o default
ipup
Escolha um script ip-up alternativo e então o /etc/cipe/ip-up
default
/etc/cipe/ip-down
key
Especifica uma chave estática compartilhada para a conexão CIPE
maxerr
Número de erros permitidos antes de terminar o daemon do CIPE
me
Endereço UDP da máquina CIPE
mtu
Define a unidade máxima de transferência do dispositivo
nokey
Não use criptografia
peer
O endereço UDP do par do CIPE
ping
Define o intervalo ping ’keepalive’ específico do CIPE (não ICMP)
socks
Endereço IP e número da porta do servidor SOCKS para conexões do
proxy
tokey
Define o tempo de vida chave dinâmico. O default são 10 minutos (600
segundos)
tokxc
Valor do tempo limite para intercâmbio de chave compartilhada. Default
são 10 segundos
tokxts
Valor do tempo limite para registro de data e hora do intercâmbio de
chave compartilhada. Default é 0 (sem registro de data e
hora/timestamps)
toping
Valor do tempo limite para pings ’keepalive’. Default é 0
Tabela 6-1. Parâmetros do CIPE
60
Capítulo 6. Redes Privadas Virtuais (Virtual Private Networks)
6.8. Gerenciamento da Chave do CIPE
Como mencionado anteriormente, o CIPE incorpora uma combinação segura de chaves de ligação
estáticas e tráfego criptografado para criar um túnel seguro através de redes de transporte como a
Internet. O uso de chaves de ligação estáticas provém um ponto de referência comum para que duas
redes ativadas pelo CIPE passem informações de forma segura. Portanto, é imperativo que as duas
portas de comunicação (gateways) de rede ativadas pelo CIPE compartilhem exatamente a mesma
chave, caso contrário a comunicação pelo CIPE não será possível.
Gerar chaves do CIPE requer o conhecimento de quais tipos de chaves são compatíveis. Geradores
alfa-numéricos randômicos não funcionam. As chaves estáticas devem ter conjuntos de 32 caracteres
e 128 bits. Isto pode ser criado executando o seguinte comando, que usa od para criar uma chave
hexadecimal usando o dispositivo de número randômico /dev/random:
od -N 16 /dev/random -t x4 | awk ’{print $2 $3 $4 $5}’
Insira o output no arquivo /etc/cipe/options.cipcb0 para todos os servidores e clientes CIPE.
6.9. IPsec
O Red Hat Enterprise Linux suporta um protocolo para conectar máquinas e redes remotas entre si
usando um túnel seguro em uma rede de transporte comum, como a Internet. O protocolo, chamado
IPSEC, pode ser implementado usando conexões máquina-a-máquina (uma estação de trabalho conectada a outra) ou rede-a-rede (uma LAN/WAN conectada a outra). A implementação do IPSEC no
Red Hat Enterprise Linux usa IKE (Internet Key Exchange), um protocolo implementado pelo IETF
para ser usado para autenticação mútua e proteger associações entre sistemas conectados.
A implementação do IPsec usa IKE para compartilhar chaves entre máquinas ao longo da Internet. O
deamon do chaveiro racoon é responsável pela distribuição e troca de chaves IKE.
6.10. Instalação do IPsec
A implementação do IPsec requer a instalação do pacote RPM ipsec-tools em todas as máquinas
IPsec (se usar uma configuração máquina-a-máquina) ou roteadores IPsec (se usar uma configuração
rede-a-rede). O pacote RPM contém bibliotecas, daemons e arquivos de configuração essenciais para
auxiliar na configuração da conexão IPsec.
— biblioteca que contém a interface socket de gerenciamento da chave de
confiança PF_KEY entre o kernel do Linux e a implementação do IPsec usada no Red Hat Enterprise Linux.
• /lib/libipsec.so
— manipula o gerenciamento da chave e atributos de segurança do IPsec no kernel. Este executável é controlado pelo daemon de gerenciamento da chave racoon. Para mais
informações sobre o setkey, consulte a página man (8) do setkey.
• /sbin/setkey
— o daemon de gerenciamento da chave IKE, usado para administrar e controlar
as associações de segurança e compartilhamento de chaves entre sistemas conectados pelo IPsec.
Este daemon pode ser configurado editando o arquivo /etc/racoon/racoon.conf. Para mais
informações sobre o racoon, consulte a página man (8) do racoon.
• /sbin/racoon
— o arquivo de configuração do daemon do racoon usado para
configurar vários aspectos da conexão IPsec, incluindo métodos de autenticação e algoritmos de
criptografia usados na conexão. Para uma lista completa das diretivas disponíveis, consulte a página
man (5) do racoon.conf.
• /etc/racoon/racoon.conf
A configuração do IPsec no Red Hat Enterprise Linux pode ser feita pela Ferramenta de Administração de Rede ou manualmente editando os arquivos de configuração de rede e do IPsec. Para mais
Capítulo 6. Redes Privadas Virtuais (Virtual Private Networks)
61
informaçõe sobre o uso da Ferramenta de Administração de Rede, consulte o Guia de Administração do Sistema do Red Hat Enterprise Linux.
Para conectar duas máquinas em rede através do IPsec, consulte a Seção 6.11. Para conectar uma
LAN/WAN a outra através do IPsec, consulte a Seção 6.12.
6.11. Configuração Máquina-a-Máquina do IPsec
O IPsec pode ser configurado para conectar um computador pessoal ou estação de trabalho a outra
através de uma conexão máquina-a-máquina. Este tipo de conexão utiliza a rede à qual cada máquina
está conectada para criar o túnel seguro entre elas. Os requisitos de uma conexão máquina-a-máquina
são mínimos, já que é a configuração do IPsec em cada máquina. As máquinas precisam somente de
uma conexão dedicada a uma rede de transporte (como a Internet) e do Red Hat Enterprise Linux para
criar a conexão do IPsec.
O primeiro passo para criar uma conexão é coletar as informações de sistemas e de rede de cada
estação de trabalho (workstation). Para uma conexão máquina-a-máquina, você precisa das seguintes
informações:
•
O endereço IP das duas máquinas
•
Um nome único para identificar a conexão IPsec e distinguí-la de outros dispositivos e conexões
(ex.: ipsec0)
•
Uma chave fixa de criptografia ou uma gerada automaticamente pelo racoon
•
Uma chave de autenticação pré-compartilhada, usada para iniciar a conexão e trocar chaves de
criptografia durante a sessão
Por exemplo: suponha que as estações de trabalho A e B queiram se interconectar através de um
túnel IPsec. Pretendem se conectar usando uma chave pré-compartilhada com o valor foobarbaz
e os usuários concordam em deixar que o racoon gere automaticamente e compartilhe uma chave
de autenticação entre cada máquina. Ambos usuários das máquinas decidem nomear suas conexões
como ipsec0.
Veja a seguir o arquivo ifcfg para a conexão IPsec máquina-a-máquina da estação de trabalho A.
O nome único para identificar a conexão neste exemplo é ipsec0, portanto o arquivo resultante é
nomeado como /etc/sysconfig/network-scripts/ifcfg-ipsec0.
DST=X.X.X.X
TYPE=IPsec
ONBOOT=yes
IKE_METHOD=PSK
A estação de trabalho A substituirá X.X.X.X pelo endereço IP da estação de trabalho B, enquanto
esta substitui X.X.X.X pelo endereço IP da estação de trabalho A. A conexão é definida para iniciar
na inicialização (boot-up) (ONBOOT=yes) e usa o método de autenticação de chave pré-compartilhada
(IKE_METHOD=PSK).
A seguir, veja o arquivo da chave pré-compartilhada (chamado /etc/sysconfig/networkscripts/keys-ipsec0) que ambas máquinas usam para autenticarem-se entre si. O conteúdo
deste arquivo deve ser idêntico nas duas estações de trabalho, e somente o usuário root deve ser
capaz de acessar ou gravar (read or write) este arquivo.
IKE_PSK=foobarbaz
62
Capítulo 6. Redes Privadas Virtuais (Virtual Private Networks)
Importante
Para alterar o arquivo keys-ipsec0 para que somente o usuário root possa acessá-lo ou editá-lo,
execute o seguinte comando após criar o arquivo:
chmod 600 /etc/sysconfig/network-scripts/keys-ipsec0
Para alterar a chave de autenticação a qualquer momento, edite o arquivo keys-ipsec0 nas duas estações de trabalho. As duas chaves devem ser identicas para que a conexão funcione apropriadamente.
O arquivo /etc/racoon/racoon.conf deve ser idêntico, exceto pela indicação include
"/etc/racoon/X.X.X.X.conf". Esta indicação (e o arquivo que referencia) é gerada quando o
túnel IPsec é ativado. Para a estação de trabalho A, X.X.X.X na indicação include é o dendereço
IP da estação de trabalho B. O oposto vale para a estação de trabalho B. Veja a seguir um arquivo
racoon.conf típico quando a conexão IPsec é ativada.
# Racoon IKE daemon configuration file.
# See ’man racoon.conf’ for a description of the format and entries.
path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";
sainfo anonymous
{
pfs_group 2;
lifetime time 1 hour ;
encryption_algorithm 3des, blowfish 448, rijndael ;
authentication_algorithm hmac_sha1, hmac_md5 ;
compression_algorithm deflate ;
}
include "/etc/racoon/X.X.X.X.conf"
Para iniciar a conexão, reinicialize a estação de trabalho ou execute o seguinte comando, como root,
em cada máquina:
/sbin/ifup ipsec0
Para testar a conexão IPsec, execute o utilitário tcpdump para visualizar os pacotes de rede sendo
transferidos entre as máquinas (ou redes) e verificar se estão criptografadas via IPsec. O pacote deve
incluir um cabeçalho AH e deve ser exibido como pacotes ESP. ESP significa que está criptografado.
Por exemplo:
17:13:20.617872 pinky.example.com > ijin.example.com: \
AH(spi=0x0aaa749f,seq=0x335): ESP(spi=0x0ec0441e,seq=0x335) (DF)
6.12. Configuração Rede-a-Rede do IPsec
O IPsec também pode ser configurado para conectar uma rede inteira (como uma LAN ou WAN) a
uma rede remota através de uma conexão rede-a-rede. Este tipo de conexão requer a configuração
de roteadores IPsec em cada lado das redes conectadas para processar e rotear informações de um
nódulo de uma rede para outro nódulo de uma rede remota. O Figura 6-2 mostra uma conexão IPsec
rede-a-rede passando por um túnel.
Capítulo 6. Redes Privadas Virtuais (Virtual Private Networks)
63
Figura 6-2. Uma conexão IPSec Rede-a-rede passando por um túnel
O diagrama mostra duas LANs (lan0 e lan1) separadas pela Internet. Estas redes usam roteadores
IPSEC para autenticar e iniciar uma conexão, usando um túnel seguro através da Internet. Os pacotes
interceptados em trânsito requerem descriptografia muito forte para crackear a cifra protegendo os pacotes entre estas LANs. O processo de comunicação entre um nódulo no intervalo IP 192.168.1.0/24
e outro no 192.168.2.0/24 é completamente transparente aos nódulos, já que o processamento, criptografia/descriptografia e roteamento dos pacotes IPSEC são executados inteiramente pelo roteador
IPSEC.
As informações necessárias para uma conexão rede-a-rede incluem:
•
Os endereços IP externamente acessíveis dos roteadores IPsec dedicados
•
Os intervalos de endereços de rede da LAN/WAN servida pelos roteadores IPsec tal como
192.168.0.0/24 ou 10.0.1.0/24)
•
Os endereços IP dos dispositivos da porta de comunicação (gateway) que roteia os dados dos nódulos da rede para a Internet
•
Um nome único para identificar a conexão IPsec e distinguí-la de outros dispositivos e conexões
(ex.: ipsec0)
•
Uma chave fixa de criptografia ou uma gerada automaticamente pelo racoon
•
Uma chave de autenticação pré-compartilhada, usada para iniciar a conexão e trocar chaves de
criptografia durante a sessão
Por exemplo: suponha que a LAN A (lana.example.com) e LAN B (lanb.example.com) queiram se interconectar através de um túnel IPsec. O endereço de rede da LAN A está no intervalo 192.168.1.0/24,
enquanto a LAN B usa o intervalo 192.168.2.0/24. O endereço IP da porta de comunicação (gateway)
é 192.168.1.254 para a LAN A e 192.168.2.254 para a LAN B. Os roteadores IPSEC estão separados
de cada porta de comunicação da LAN e usam dois dispositivos de rede: à eth0 é atribuído um endereço IP estático acessível externamente, que acessa à Internet, enquanto eth1 atua como um ponto
de roteamento para processar e transmitir pacotes da LAN de um nódulo da rede a outros nódulos da
rede remota.
A conexão IPsec entre as redes usa uma chave pré-compartilhada com o valor r3dh4tl1nux, e os
administradores de A e B concordam em deixar que o racoon gere automaticamente e compartilhe
uma chave de autenticação entre os roteadores IPsec. O administrador da LAN A decide nomear a
conexão IPSEC como ipsec0, enquanto o administrador da LAN B nomeia a conexão IPSEC como
ipsec1.
Veja seguir o arquivo ifcfg para uma conexão IPsec rede-a-rede da LAN A. O nome único para identificar a conexão neste exemplo é ipsec1, portanto o arquivo resultante é nomeado como
/etc/sysconfig/network-scripts/ifcfg-ipsec1.
TYPE=IPsec
ONBOOT=yes
IKE_METHOD=PSK
64
Capítulo 6. Redes Privadas Virtuais (Virtual Private Networks)
SRCGW=192.168.1.254
DSTGW=192.168.2.254
SRCNET=192.168.1.0/24
DSTNET=192.168.2.0/24
DST=X.X.X.X
A conexão é configurada para iniciar na inicialização da máquina (ONBOOT=yes) e usa o método de autenticação de chave pré-compartilhada (IKE_METHOD=PSK). O administrador da LAN A
indica a porta de comunicação (gateway) de destino, que é a porta de comunicação da LAN B
(DSTGW=192.168.2.254) e também a porta de comunicação de origem, que é o endereço IP da
porta de comunicação da LAN A (SRCGW=192.168.1.254). O administrador então indica a rede de
destino, que é o intervalo de rede da LAN B (DSTNET=192.168.2.0/24) e também a rede de origem
(SRCNET=192.168.1.0/24). Finalmente, o administrador indica o endereço IP de destino, que é o
endereço IP externamente acessível da LAN B (X.X.X.X).
Veja a seguir o arquivo da chave pré-compartilhada (chamado /etc/sysconfig/networkscripts/keys-ipsecX onde X é 0 para a LAN A e 1 para a LAN B) que as duas redes usam para
autenticarem-se entre si. O conteúdos deste arquivo devem ser idênticos e somente o usuário root
pode ser capaz de acessar ou gravar este arquivo.
IKE_PSK=r3dh4tl1nux
Importante
Para alterar o arquivo keys-ipsec0 para que somente o usuário root possa acessá-lo ou editá-lo,
execute o seguinte comando após criar o arquivo:
chmod 600 /etc/sysconfig/network-scripts/keys-ipsec1
Para alterar a chave de autenticação a qualquer momento, edite o arquivo keys-ipsecX nos dois
roteadores IPsec. As duas chaves devem ser idênticas para que a conexão funcione apropriadamente.
Veja a seguir o arquivo de configuração /etc/racoon/racoon.conf da conexão IPsec. Note que
a linha include na parte inferior do arquivo aparece somente se estiver conectada ao túnel IPsec no
momento, porque é automaticamente gerada cada vez que a conexão IPsec é ativada.
# Racoon IKE daemon configuration file.
# See ’man racoon.conf’ for a description of the format and entries.
path include "/etc/racoon";
path pre_shared_key "/etc/racoon/psk.txt";
path certificate "/etc/racoon/certs";
sainfo anonymous
{
pfs_group 2;
lifetime time 1 hour ;
encryption_algorithm 3des, blowfish 448, rijndael ;
authentication_algorithm hmac_sha1, hmac_md5 ;
compression_algorithm deflate ;
}
include "/etc/racoon/X.X.X.X.conf"
Veja a seguir o arquivo de configuração específico da conexão à rede remota. O arquivo é nomeado como X.X.X.X.conf (substitua X.X.X.X pelo endereço IP do roteador IPsec remoto). Note que este
arquivo é gerado automaticamente quando o túnel IPsec é ativado e não deve ser editado diretamente.
Capítulo 6. Redes Privadas Virtuais (Virtual Private Networks)
65
;
remote X.X.X.X
{
exchange_mode aggressive, main;
my_identifier address;
proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group 2 ;
}
}
Antes de iniciar a conexão IPsec, o encaminhamento de IP deve ser habilitado no kernel. Como root,
habilite o encaminhamento de IP numa janela de comandos:
1. Edite /etc/sysctl.conf e defina net.ipv4.ip_forward para 1.
2. Execute o seguinte comando para habilitar a alteração:
sysctl -p /etc/sysctl.conf
Para iniciar a conexão IPsec, reinicialize os roteadores IPsec ou execute o seguinte comando como
root em cada roteador:
/sbin/ifup ipsec0
As conexões são ativadas e as duas LANs, A e B, são capazes de se comunicarem. As rotas são criadas
automaticamente através do script de início invocado pela execução do ifup na conexão IPsec. Para
exibir uma lista de rotas da rede, execute o seguinte comando:
/sbin/ip route list
Para testar a conexão IPsec, execute o utilitário tcpdump no dispositivo externamente roteável (eth0
neste exemplo) para visualizar os pacotes de rede sendo transferidos entre as máquinas (ou redes) e
para verificar se estão criptografados com IPsec. Por exemplo: para verificar a conectividade da LAN
A, digite o seguinte:
tcpdump -n -i eth0 host lana.example.com
O pacote deve incluir um cabeçalho AH e deve ser exibido como um pacote ESP. ESP significa que
está criptografado. Por exemplo (barras invertidas denotam a continuação de uma linha):
12:24:26.155529 lanb.example.com > lana.example.com: AH(spi=0x021c9834,seq=0x358): \
lanb.example.com > lana.example.com: ESP(spi=0x00c887ad,seq=0x358) (DF) \
(ipip-proto-4)
66
Capítulo 6. Redes Privadas Virtuais (Virtual Private Networks)
Capítulo 7.
Firewalls
A segurança da informação é comumente encarada como um processo e não como um produto. Entretanto, implementações de segurança padronizadas geralmente utilizam alguma forma de mecanismo
dedicado a controlar os privilégios de acesso e a restringir recursos de rede a usuários que são autorizados, identificáveis e rastreáveis. O Red Hat Enterprise Linux inclui muitas ferramentas poderosas
para auxiliar administradores e engenheiros de segurança em questões de controle de acesso em nível
de rede.
Além das soluções VPN, como CIPE ou IPSec (abordados em Capítulo 6), os firewalls são um dos
componentes centrais da implementação de segurança na rede. Diversos fabricantes comercializam
soluções de firewall para suprir todos os nichos do mercado: de usuários domésticos protegendo um
PC até soluções de centro de dados para proteger informações corporativas vitais. Firewalls podem ser
soluções de hardware ligados intermitentemente, como as aplicações de firewall da Cisco, Nokia, e
Sonicwall. Também há soluções de software de firewall proprietárias desenvolvidas para os mercados
doméstico e corporativo por fabricantes como Checkpoint, McAfee e Symantec.
Além das diferenças entre firewalls de hardware e de sotfware, também há diferenças na maneira como
os firewalls funcionam, que separam uma solução da outra. Tabela 7-1 detalha três tipos comuns de
firewalls e como eles funcionam:
Método Descrição
Vantagens
Desvantagens
NAT
Pode ser configurado
transparentemente para
máquinas em uma LAN
Proteção de muitas
máquinas e serviços por
trás de um ou mais
endereços IP externos,
simplificando tarefas de
administração
Restrição de acesso do
usuário de e para a LAN
pode ser configurado
abrindo e fechando portas
no firewall/gateway NAT
Não pode evitar atividades
maldosas uma vez que
usuários se conectam a um
serviço fora do firewall
Tradução do Endereço da
Rede (NAT) insere
sub-redes IP internas
através de um ou um
pequeno grupo de endereços
IP externos, mascarando
todos os pedidos para uma
fonte ao invés de várias
<
<
<
<
68
Capítulo 7. Firewalls
Método Descrição
Vantagens
Desvantagens
Filtro
de
Pacotes
Personalizável através da
funcionalidade front-end
Não pode filtrar pacotes
para conteúdo similar a
firewalls de proxy
Processa pacotes na
camada do protocolo, mas
não pode filtrar pacotes
numa camada de aplicação
Arquiteturas de rede
complexas podem fazer
com que o estabelecimento
de regras de filtragem de
pacotes se torne difícil,
especialmente se for usado
com o mascaramento do IP
ou sub-redes locais e redes
DMZ
Proxy
A filtragem de pacotes lê
cada pacote de dados que
passa dentro e fora de uma
LAN. Pode ler e processar
pacotes pela informação do
cabeçalho e filtra o pacote
baseado em conjuntos de
regras programáveis
implementadas pelo
administrador do firewall. O
kernel do Linux tem a
funcionalidade embutida de
filtragem de pacotes através
do sub-sistema netfilter do
kernel.
Firewalls de proxy filtram
todos os pedidos de um
determinado protocolo ou
tipo dos clientes LAN para
uma máquina proxy, que
então faz estes pedidos à
Internet representando o
cliente local. Uma máquina
proxy atua como um buffer
entre usuários remotos
maldosos e as máquinas dos
clientes internos da rede.
=
=
iptables
Não requer nenhuma
personalização no lado do
cliente, já que todas as
atividades da rede são
filtradas no nível do
roteador ao invés do nível
da aplicação
Já que os pacotes não são
transmitidos através de um
proxy, a performance da
rede é mais rápida devido à
conexão direta do cliente ‘a
máquina remota
=
=
Dá aos administradores o
controle de quais
aplicações e protocolos
funcionam fora da LAN
Alguns servidores proxy
podem armazenar dados
no cache para que clientes
possam acessar dados
frequentemente
requisitados no cache local
ao invés de ter que usar a
conexão Internet para
solicitá-los. Isto é
conveniente para reduzir o
consumo desnecessário de
banda
Serviços proxy podem ser
registrados e monitorados
de perto, permitindo um
controle mais restrito sobre
a utilização de recursos na
rede
=
=
=
=
=
=
Proxies são
frequentemente específicos
às aplicações (HTTP,
telnet, etc.) ou restritos a
protocolos (a maioria dos
proxies funcionam com
serviços conectados por
TCP, somente)
Serviços de aplicação não
podem rodar por trás de
um proxy, portanto seus
servidores de aplicações
devem usar uma forma
separada de segurança em
rede
Proxies podem se tornar um
gargalo na rede, já que
todos os pedidos e
transmissões passam através
de uma mesma fonte ao
invés de passar diretamente
do cliente para as conexões
remotas de serviço
=
Tabela 7-1. Tipos de Firewall
7.1. Netfilter e IPTables
O kernel do Linux apresenta um sub-sistema de rede poderoso chamado netfilter. O sub-sistema netfilter oferece filtragem de pacote ’stateful’ (que guarda o estado das conexões inciadas pelos clientes)
ou ’stateless’ (na qual cada pacote é analisado individualmente, sem levar em conta pacotes anteriores
trocados na mesma conexão), assim como NAT e serviços de mascaramento de IP. Netfilter também
tem a habilidade de danificar as informações do cabeçalho para roteamento avançado e gerenciamento
do estado de conexão. O Netfilter é controlado através da funcionalidade IPTables.
Capítulo 7. Firewalls
69
7.1.1. Visão geral do IPTables
O poder e flexibilidade do netfilter é implementado através da interface IPTables. Esta ferramenta de
linha de comando é similar em sintaxe ao seu predecessor, o IPChains. No entanto, IPTables usa o
sub-sistema netfilter para melhorar a conexão, inspeção e processamento de rede; enquanto o IPChains
usava conjuntos de regras complexas para filtrar localidades de fonte e destino, assim como portas
de conexão para ambos. IPTables inclui registro avançado, ações pré e pós-roteamento, tradução do
endereço de rede e encaminhamento de porta; tudo em apenas uma interface de linha de comando.
Esta seção oferece uma visão geral do IPTables. Para informações mais detalhadas sobre IPTables,
consulte o Guia de Referência do Red Hat Enterprise Linux.
7.2. Usando o IPTables
O primeiro passo para usar o serviço IPTables é iniciá-lo. Isto pode ser feito com o comando:
service iptables start
Atenção
Os serviços IP6Tables devem ser desligados para usar o serviço IPTables, com os seguintes comandos:
service ip6tables stop
chkconfig ip6tables off
Para fazer com que o IPTables inicie por default sempre que a máquina for iniciada, você deve alterar
o status do nível de execução (runlevel) do serviço, usando chkconfig.
chkconfig --level 345 iptables on
A sintaxe do IPTables é separada em camadas. A camada principal é a corrente (chain). Uma corrente
especifica o estado no qual um pacote será manipulado. O uso é o seguinte:
iptables -A chain -j target
O -A acrescenta uma regra no fim de um conjunto de regras existentes. A chain é o nome da corrente
para uma regra. As três correntes embutidas do IPTables (ou seja, as correntes que afetam todos os
pacotes que trafegam pela rede) são INPUT, OUTPUT e FORWARD. Estas correntes são permanentes
e não podem ser deletadas.
Importante
Ao criar um conjunto de regras do IPTables, é crucial lembrar que a ordem é importante. Por exemplo: uma corrente especifica que todos os pacotes da sub-rede local 192.168.100.0/24 sejam
derrubados. E então a corrente é adicionada (-A), o que permite pacotes do 192.168.100.13 (que
está dentro da sub-rede restrita derrubada); então a regra adicionada é ignorada. Você deve definir
uma regra para permitir 192.168.100.13 primeiro, e então definir uma regra para derrubar na subrede.
Para inserir uma regra arbitrariamente em um conjunto de regras existentes, use -I, seguido pelo
conjunto no qual deseja inserir a regra e pelo número da regra (1,2,3,...,n) onde você deseja que a
regra resida. Por exemplo:
70
Capítulo 7. Firewalls
iptables -I INPUT 1 -i lo -p all -j ACCEPT
A regra é inserida como a primeira no conjunto INPUT para permitir o tráfego do dispositivo loopback
local.
7.2.1. Normas Básicas de Firewall
Algumas normas básicas estabelecidas desde o começo podem auxiliar na construção de regras detalhadas definidas pelo usuário. O IPTables usa normas (-P) para criar regras default. Administradores
com foco na segurança geralmente escolhem derrubar todos os pacotes como uma norma e só permitem pacotes específicos, analisando-os caso-a-caso. As seguintes regras bloqueiam todos os pacotes
entrando e saindo de uma porta de comunicação (gateway) de rede:
iptables -P INPUT DROP
iptables -P OUTPUT DROP
Adicionalmente, é recomendado que qualquer pacote encaminhado — tráfego de rede roteado do
firewall para seu nódulo de destino — seja negado também, para restringir clientes internos de exposição inadvertida à Internet. Para fazer isso, use a seguinte regra:
iptables -P FORWARD DROP
Nota
Há uma distinção entre as ações REJECT (rejeitar) e DROP (derrubar) um alvo quando estamos lidando
com regras adicionais. REJECT um alvo nega acesso e retorna um erro conexão negada (conexão
negada) para usuários que tentarem se conectar ao serviço. A DROP, como o nome sugere, derruba
os pacotes sem nenhum aviso para usuários do telnet. Administradores podem usar sua própria
prudência ao lidar com estes alvos; entretanto, para evitar a confusão do usuário e tentativas para
continuar a conexão, a REJECT alvo é recomendada.
Após definir os cojuntos de normas, crie novas regras para a sua rede e seu requisitos de segurança
em particular. As seguintes seções descrevem algumas regras que você talvez queira implementar
enquanto constrói seu firewall IPTables.
7.2.2. Salvando e Restaurando Regras IPTables
Regras de firewall são válidas somente enquanto o computador estiver ligado. Se o sistema for reinicializado, as regras serão automaticamente eliminadas e restauradas. Para salvar as regras de modo
que elas sejam carregadas posteriormente, use o seguinte comando:
/sbin/service iptables save
As regras são armazenadas no arquivo /etc/sysconfig/iptables e são aplicadas sempre que o
serviço é iniciado, reiniciado ou quando a máquina é reinicializada.
Capítulo 7. Firewalls
71
7.3. Filtragem Comum do iptables
Manter atacantes remotos fora de uma LAN é um aspecto importante da segurança de rede, se não o
mais importante. A integridade de uma LAN deve ser protegida de usuários remotos maldosos, através do uso de regras rígidas de firewall. Entretanto, com uma norma default definida para bloquear
todos os pacotes entrando, saindo e encaminhados, é impossível que o firewall/porta de comunicação
(gateway) e usuários internos da LAN se comuniquem entre si ou externamente. Para permitir a usuários executar funções relacionadas à rede e a usar aplicações de rede, os administradores devem abrir
certas portas para a comunicação.
Por exemplo: para permitir o acesso à porta 80 pelo firewall, adicione a seguinte regra:
iptables -A INPUT -p tcp -m tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT
Isto permite a navegação Web normal através de sites que comunicam através da porta 80. Para permitir o acesso a sites seguros (como https://www.example.com/), você deve abrir a porta 443 também.
iptables -A INPUT -p tcp -m tcp --sport 443 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT
Algumas vezes você precisa de acesso remoto à LAN de fora dela. Serviços seguros, tais como SSH
e CIPE, podem ser usados para conexão remota criptografada aos serviços da LAN. Para administradores com recursos baseados em PPP (tais como bancos modernos ou contas ISP volumosas), o
acesso discado pode ser usado para circundar as barreiras do firewall seguramente, já que conexões
via modem ficam tipicamente por trás de um firewall/gateway por serem conexões diretas. Entretanto, casos especiais podem ser elaborados para usuários remotos com conexões de banda larga. Você
pode configurar o IPTables para aceitar conexões de clientes SSH e CIPE remotos. Por exemplo: para
permitir o acesso remoto SSH, as seguintes regras podem ser usadas:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p udp --sport 22 -j ACCEPT
Pedidos de conexão CIPE feitas de fora podem ser aceitas com o seguinte comando (substituindo x
pelo número de seu dispositivo):
iptables -A INPUT -p udp -i cipcbx -j ACCEPT
iptables -A OUTPUT -p udp -o cipcbx -j ACCEPT
Já que o CIPE usa seu próprio dispositivo virtual que transmite pacotes de datagramas (UDP), a regra
permite a interface cipcb para conexões de fora, ao invés de portas de recurso ou de destino (apesar
de poderem ser usadas no lugar das opções de dispositivos). Para informações sobre o uso do CIPE,
consulte o Capítulo 6.
Há outros serviços para os quais você talvez precise definir regras. Consulte o Guia de Referência do
Red Hat Enterprise Linux para informações detalhadas sobre IPTables e suas várias opções.
Estas regras permitem o acesso a serviços regulares e seguros pelo firewall; entretanto, não permitem
que os nódulos por trás do firewall acessem estes serviços. Para permitir o acesso LAN a estes serviços,
você pode usar o NAT com regras de filtragem do IPTables.
7.4. Regras FORWARD e NAT
A maioria das empresas designam um número limitado de endereços IP publicamente roteáveis de
seus ISPs. Devido essa permissão limitada, os administradores devem encontrar maneiras criativas
de compartilhar o acesso aos serviços de Internet sem dar poucos endereços IP para cada nódulo da
LAN. Usar um endereço IP privado é a maneira comum de permitir que todos os nódulos de uma LAN
acessem apropriadamente serviços de rede internamente e externamente. Roteadores de borda (como
72
Capítulo 7. Firewalls
firewalls) podem receber transmissões de entrada da Internet e rotear os pacotes para o nódulo pretendido na LAN. Ao mesmo tempo, firewall/portasde comunicação (gateways) também podem rotear
pedidos de saída de um nódulo da LAN para o serviço remoto da Internet. Esse encaminhamento de
tráfego de rede pode se tornar perigoso às vezes, especialmente com a disponibilidade de ferramentas
de cracking modernas que podem espionar endereços IP internos e fazer com que a máquina remota
do atacante atue como um nódulo em sua LAN. Para evitar isso, o iptables oferece normas de roteamento e encaminhamento que podem ser implementadas para evitar o uso indevido dos recursos de
rede.
A norma FORWARD permite a um administrador controlar onde os pacotes podem ser roteados em uma
LAN. Por exemplo: para permitir o encaminhamento da LAN inteira (assumindo que o firewall/porta
de comunicação (gateway) tenha um endereço IP interno na eth 1), as seguintes regras podem ser
definidas:
iptables -A FORWARD -i eth1 -j ACCEPT
iptables -A FORWARD -o eth1 -j ACCEPT
Nota
Por default, a norma IPV4 nos kernels do Red Hat Enterprise Linux desabilita o suporte para encaminhamento do IP, o que evita que caixas rodando o Red Hat Enterprise Linux funcionem como
roteadores de borda dedicados. Para habilitar o encaminhamento do IP, execute o seguinte comando:
sysctl -w net.ipv4.ip_forward=1
Se este comando for submetido em uma janela shell, a configuração não é lembrada após uma reinicialização da máquina. Você pode definir o encaminhamento permanentemente, editando o arquivo
/etc/sysctl.conf. Encontre e edite a linha a seguir, substituindo 0 por 1:
net.ipv4.ip_forward = 0
Execute o seguinte comando para ativar a alteração do arquivo sysctl.conf:
sysctl -p /etc/sysctl.conf
isto permite que os nódulos da LAN se comuniquem entre si; mas não permite que se comuniquem
externamente (por exemplo: com a Internet). Para permitir que nódulos da LAN com endereços IP
privados se comuniquem com redes públicas externas, configure o firewall com o mascaramento do
IP, que mascara pedidos de nódulos da LAN com endereços IP do dispositivo externo do firewall
(neste caso, eth0):
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
7.5. DMZs e iptables
Regras também podem definidas para determinadas máquinas, como um servidor dedicado HTTP
ou FTP, preferencialmente um que esteja isolado da rede interna em uma zona desmilitarizada (demilitarized zone - DMZ). Para definir uma regra para rotear todos os pedidos HTTP externos para
um servidor HTTP dedicado no endereço IP 10.0.4.2 e porta 80 (fora do intervalo 192.168.1.0/24 da
LAN), a tradução de endereço de rede (NAT) evoca a tabela PREROUTING para encaminhar os pacotes
para o destino apropriado:
Capítulo 7. Firewalls
73
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT \
--to-destination 10.0.4.2:80
Com este comando, todas as conexões HTTP para a porta 80 de fora da LAN são roteadas ao servidor
HTTP em uma rede separada do resto da rede interna. Esta forma de segmentação de rede pode ser
mais segura que permitir conexões HTTP para uma máquina na rede. Se o servidor HTTP estiver
configurado para aceitar conexões seguras, então a porta 443 deve ser encaminhada também.
7.6. Vírus e Endereços IP Espionados (spoofed)
Outras regras elaboradas podem ser criadas para controlar o acesso a sub-redes específicas, ou até a
nódulos específicos, dentro de uma LAN. Você também pode restringir que determinados serviços
dúbios, como trojans, vermes, e outros vírus de clientes/servidor, contatem seu servidor. Por exemplo:
há alguns trojans que scaneam redes para serviços nas portas de 31337 a 31340 (chamadas portas
de elite na linguagem dos crackers). Como não há serviços legítimos que comunicam através destas
portas fora do padrão, bloqueá-los pode diminuir efetivamente as chances de nódulos potencialmente
infectados em sua rede se comunicarem independentemente com seus servidores mestres remotos.
iptables -A OUTPUT -o eth0 -p tcp --dport 31337 --sport 31337 -j DROP
iptables -A FORWARD -o eth0 -p tcp --dport 31337 --sport 31337 -j DROP
Você também pode bloquear as conexões externas que tentam espionar intervalos de endereços IP
privados a fim de infiltrarem em sua LAN. Por exemplo: se uma LAN usa o intervalo 192.168.1.0/24,
uma regra pode determinar que o dispositivo de rede que faz a interface com a Internet (eth0, por
exemplo) derrube quaisquer pacotes parta este dispositivo com um endereço do intervalo de IP de sua
LAN. Como norma default, é recomendado rejeitar pacotes encaminhados, portanto qualquer outro
endereço IP espionado ao dispositivo que faz a interface externa (eth0) será rejeitado automaticamente.
iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -j DROP
7.7. IP6Tables
A introdução do Protocolo de Internet de última geração chamado IPv6, vai além do limite de endereços de 32 bits do IPv4 (ou IP). IPv6 suporta endereços de 128 bits e, como tal, redes de transporte
cientes do IPv6 são capazes de lidar com um número maior de endereços roteáveis que o IPv4.
O Red Hat Enterprise Linux suporta regras de firewall IPv6 usando o sub-sistema Netfilter 6 e o
comando IP6Tables. O primeiro passo para usar o IP6Tables é iniciar o serviço IP6Tables. Isto pode
ser feito com o comando:
service ip6tables start
Atenção
Os serviços IPTables devem ser desligados para usar o serviço IP6Tables exclusivamente:
service iptables stop
chkconfig iptables off
Para fazer com que o IP6Tables inicie por default sempre que o sistema for inicializado, altere o status
do nível de execução (runlevel) do serviço usando chkconfig.
74
Capítulo 7. Firewalls
chkconfig --level 345 ip6tables on
A sintaxe é idêntica à do IPTables em todos os aspectos, exceto pelo fato do IP6Tables suportar
endereços de 128 bits. Por exemplo: conexões SSH em um servidor de rede ciente do IPv6 pode ser
possibilitada pela seguinte regra:
ip6tables -A INPUT -i eth0 -p tcp -s 3ffe:ffff:100::1/128 --dport 22 -j ACCEPT
Para mais informações sobre redes com IPv6, consulte a página de informações sobre o IPv6:
http://www.ipv6.org/.
7.8. Recursos Adicionais
Há diversos aspectos do firewall e do sub-sistema Netfilter do Linux que não foram abordados aqui.
Para mais informações, consulte os seguintes recursos.
7.8.1. Documentação Instalada
•
O Guia de Referência do Red Hat Enterprise Linux inclui um capítulo detalhado sobre o IPTables,
incluindo as definições de todas as opções de comandos.
•
A página do manual sobre IPTables também contém um breve resumo das várias opções.
•
Uma lista dos serviços mais comuns e seus números de porta pode ser encontrada no Apêndice C e
no arquivo /etc/services.
7.8.2. Websites Úteis
•
http://www.netfilter.org/ — a homepage oficial do projeto Netfilter/IPTables.
•
http://www.tldp.org/ — O Projeto de Documentação do Linux contém diversos guias úteis relacionados à criação e administração do firewall.
•
http://www.iana.org/assignments/port-numbers — A lista oficial de portas de serviços comuns conforme definição da ’Internet Assigned Numbers Authority’.
7.8.3. Documentação Relacionada
•
Linux Firewalls, de Robert Ziegler; New Riders Press. — contém muitas informações sobre a construção de firewalls usando ambos - IPChains do kernel 2.2 assim como o Netfilter e IPTables.
Tópicos adicionais de segurança, como questões de acesso remoto e Sistemas de Detecção de Intrusão também são abordados.
III. Avaliando Sua Segurança
Esta parte oferece uma visão geral da teoria e prática da avaliação de segurança. De monitores de rede
a ferramentas de cracking, um administrador pode aprender mais sobre a proteção de um sistema e de
uma rede, crackeando-os.
Índice
8. Avaliação de Vulnerabilidade....................................................................................................... 77
Capítulo 8.
Avaliação de Vulnerabilidade
Dados o tempo, os recursos e a motivação, um cracker pode violar praticamente qualquer sistema.
No final das contas, todos os procedimentos e tecnologias de segurança atualmente disponíveis não
podem garantir que seus sistemas estão seguros contra uma intrusão. Roteadores podem ajudar a proteger suas portas de comunicação (gateways) com a Internet. Firewalls ajudam a proteger a fronteira da
rede. Redes Privadas Virtuais (Virtual Private Networks - VPNs) podem transferir dados seguramente
através de informações criptografadas. Sistemas de detecção de intrusão podem alertá-lo sobre atividades maléficas. No entanto, o sucesso de cada uma destas tecnologias depende de diversas variáveis,
incluindo:
•
O conhecimento dos funcionários responsáveis pela configuração, monitoramento e manutenção
das tecnologias
•
A habilidade em consertar e atualizar eficiente e rapidamente os serviços e os kernels.
•
A habilidade dos responsáveis em manter vigília constante sobre a rede.
Dado o dinamismo de sistemas e tecnologias de dados, proteger recursos corporativos pode ser bastante complexo. Devido essa complexidade, geralmente é difícil encontrar peritos para todos os seus
sistemas. Enquanto é possível ter pessoal com conhecimento em muitas áreas de segurança da informação em um alto nível, é difícil reter funcionários que são peritos em mais do que algumas áreas.
Isto ocorre principalmente porque cada área da Segurança da Informação requer constante atenção e
foco. A segurança da informação não pára.
8.1. Pensando Como o Inimigo
Suponha que você administre uma rede corporativa. Essas redes são comumente compostas de sistemas operacionais, aplicações, servidores, monitores de rede, firewalls, sistemas de detecção de intrusão e outros. Agora imagine tentar manter-se atualizado com cada um destes. Dada a complexidade
dos softwares e ambientes de rede atuais, exploits e erros são uma certeza. Manter-se informado sobre consertos e atualizações para uma rede inteira pode ser uma tarefa perturbadora em uma grande
empresa com sistemas heterogêneos.
Mesmo combinando os requerimentos de conhecimento com a tarefa de manter-se atual, é inevitável que incidentes adversos ocorram, sistemas sejam violados, dados corrompidos e serviços sejam
interrompidos.
Para aprimorar as tecnologias de segurança e auxiliar na proteção de sistemas, redes e dados, pense
como um cracker e meça a segurança dos sistemas verificando suas fraquezas. Avaliações preventivas
de vulnerabilidade em seus prórprios sistemas e recursos de rede podem revelar questões potenciais a
serem consideradas antes de um cracker explorá-las.
Uma avaliação de vulnerabilidade é uma auditoria interna da segurança de sua rede e sistemas, cujos
resultados indicam a confidencialidade, integridade e disponibilidade de sua rede (conforme explanado na Seção 1.1.4). Uma avaliação de vulnerabilidade tipicamente começará com uma fase de reconhecimento, durante a qual são coletados dados importantes referentes à rede e aos sistemas alvo. Esta
fase levará à fase de prontidão do sistema, onde o alvo é checado em todas as suas vulnerabilidades
conhecidas. A fase de prontidão culmina na fase do relatório, na qual os resultados são classificados
em alto, médio e baixo risco, e métodos são discutidos para melhorar a segurança (ou para minimizar
o risco de vulnerabilidade) do alvo.
Se tivesse que executar uma avaliação de vulnerabilidade da sua casa, você provavelmente verificaria
cada uma das portas para certificar-se de que elas estão fechadas e trancadas. Você também checaria
todas as janelas, assegurando que estão completamente fechadas e corretamente travadas. O mesmo
78
Capítulo 8. Avaliação de Vulnerabilidade
conceito se aplica aos sistemas, redes e dados eletrônicos. Usuários maldosos são os ladrões e vândalos de seus dados. Foque em suas ferramentas, mentalidade e motivações, e você poderá reagir
rapidamente às suas ações.
8.2. Definindo Avaliação e Testes
As avaliações de vulnerabilidade podem ser divididas em dois tipos: Olhando de fora para dentro e
olhando de dentro ao redor.
Ao executar uma avaliação de vulnerabilidade olhando de fora para dentro, você está tentando comprometer seus sistemas de fora. Estando fora de sua empresa lhe proporciona ter o ponto de vista de
um cracker. Você vê o que o cracker vê — endereços IP publicamente roteáveis, sistemas em seu
DMZ, interfaces externas de seu firewall e mais.
Ao executar uma avaliação de vulnerabilidade de dentro olhando ao redor, você está, de certa maneira,
em vantagem já que você é interno e seu status é elevado a confiável. Esse é o ponto de vista que você
e seus colegas de trabalho têm ao se autenticarem em seus sistemas. Você vê servidores de impressão,
servidores de arquivos, bancos de dados e outros recursos.
Há diferenças notáveis entre estes dois tipos de avaliação de vulnerabilidade. Ser interno em sua
empresa lhe proporciona privilégios — mais elevados que qualquer externo. Ainda hoje em algumas
empresas, a segurança é configurada de modo a manter os intrusos de fora. Muito pouco é feito para
proteger os internos da empresa (tais como firewalls departamentais, controles de acesso em nível de
usuário, procedimentos de autenticação para recursos internos e outros). Geralmente, há muito mais
recursos quando olhamos de dentro ao redor dado que a maioria dos sistemas são internos a uma
empresa. Uma vez que você se coloca fora da empresa, imediatamente terá o status não confiável. Os
sistemas e recursos disponíveis a você externamente são tipicamente mais limitados.
Considere a diferença entre as avaliações de vulnerabilidade e testes de penetração. Pense em uma
avaliação de vulnerabilidade como o primeiro passo de um teste de penetração. As informações obtidas na avaliação serão utilizadas nos testes. Enquanto a avaliação verifica buracos e potenciais vulnerabilidades, os testes de penetração tentam explorar os resultados.
Avaliar a instra-estrutura da rede é um processo dinâmico. A segurança de ambos, da informação e
física, é dinâmica. Executar uma avaliação traz uma visão geral, que pode incluir falsos positivos e
falsos negativos.
Administradores de segurança são tão bons quanto as ferramentas que usam e o conhecimento que
possuem. Pegue qualquer uma das ferramentas de avaliação disponíveis, execute-as em seu sistema, e
é quase certeza que haja pelo menos alguns falsos positivos. O resultado é o mesmo, seja por erro no
programa ou do usuário. A ferramenta pode encontrar vulnerabilidades que na realidade não existem
(falsos positivos) ou, ainda pior, ela pode não detectar vulnerabilidades que realmente existem (falsos
negativos).
Agora que a diferença entre avaliação de vulnerabilidade e teste de penetração está definida, é recomendável revisar os resultados da avaliação cuidadosamente antes de conduzir um teste de penetração.
Atenção
Tentar explorar vulnerabilidades dos recursos de produção pode resultar em efeitos adversos na
produtividade e eficiência de seus sistemas e rede.
A lista a seguir examina alguns dos benefícios em executar avaliações de vulnerabilidade.
•
Foco pró-ativo em segurança da informação
•
Encontrar exploits potenciais antes que crackers as encontrem
Capítulo 8. Avaliação de Vulnerabilidade
•
Tipicamente resulta em sistemas sendo mantidos atualizados e consertados
•
Promove o crescimento e ajuda a desenvolver as habilidades dos funcionários
•
Redução nas perdas financeiras e publicidade negativa
79
8.2.1. Estabelece uma Metodologia
Para auxiliar na selação de ferramentas para a avaliação de vulnerabilidade, é útil estabelecer uma metodologia de avaliação de vulnerabilidade. Infelizmente, não há nenhuma metodologia pré-definida ou
aprovada pela indústria no momento, porém bom senso e as melhores práticas podem agir suficientemente como guias.
Qual é o alvo? Nós estamos checando um servidor, ou nossa rede inteira e tudo que há nesta rede?
Somos internos ou externos à empresa? As respostas a estas questões são importantes, pois te ajudarão
a determinar não apenas quais ferramentas selecionar, mas também a maneira como utilizá-las.
Para aprender mais sobre o estabelecimento de metodologias, consulte os seguintes websites:
•
http://www.isecom.org/projects/osstmm.htm — The Open Source Security Testing Methodology
Manual (O Manual de Metodologia de Testes de Segurança Open Source) - OSSTMM
•
http://www.owasp.org/ — The Open Web Application Security Project (O Projeto Livre de Segurança de Aplicações Web)
8.3. Avaliando as Ferramentas
Uma avaliação típica pode começar com o uso de alguma forma de ferramenta de coleta de informações. Ao acessar a rede inteira, primeiramente mapeie o layout para encontrar máquinas que estejam
rodando. Após localizá-las, examine cada máquina separadamente. Focar nestas máquinas requer um
outro conjunto de ferramentas. Saber quais ferramentas utilizar deve ser o passo mais crucial para
achar vulnerabilidades.
Assim como em qualquer aspecto do cotidiano, há muitas ferramentas que desempenham a mesma
função. Este conceito também se aplica à execução das avaliações de vulnerabilidade. Há ferramentas
específicas para sistemas operacionais, para aplicações e até mesmo para redes (baseadas nos protocolos utilizados). Algumas ferramentas são grátis e outras não. Algumas ferramentas são intuitivas e
fáceis de utiulizar, enquanto outras são obscuras e mal documentadas, mas possuem funcionalidades
que outras não possuem.
Encontrar as ferramnentas corretas pode ser uma tarefa difícil. No final das contas a experiênca conta.
Se possível, monte um laboratório de testes e experimente quantas ferramentas puder, anotando os
pontos fortes e fracos de cada uma. Reveja o arquivo README ou a página man da ferramenta.
Adicionalmente, procure na Internet por mais informações, como artigos, manuais passo-a-passo ou
até mesmo listas de discussão específicas da ferramenta.
As ferramentas explanadas abaixo são apenas uma pequena amostra das ferramentas disponíveis.
8.3.1. Scaneando Máquinas com Nmap
Nmap é uma ferramenta conhecida no Red Hat Enterprise Linux que pode ser usada para determinar
o layout de uma rede. O Nmap está disponível por muitos anos e provavelmente é a ferramenta mais
utilizada na coleta de informações. Foi inclusa uma página man excelente, que oferece uma descrição
detalhada de suas opções e usos. Administradores podem usar o Nmap em uma rede para encontrar
sistemas hospedeiros e portas abertas nestes sistemas.
O Nmap é um primeiro passo eficaz na avalização de vulnerabilidade. Você pode mapear todas as
máquinas dentro de uma rede, e inclusive passar uma opção que a permite tentar identificar o sistema
80
Capítulo 8. Avaliação de Vulnerabilidade
operacional rodando em determinada máquina. O Nmap é uma boa base para estabelecer normas de
uso de serviços seguros e para parar serviços não usados.
8.3.1.1. Usando o Nmap
O Nmap pode ser executado a partir de uma janela de comandos. Em uma janela de comandos, digite
nmap seguido do nome da máquina ou endereço IP da máquina que você deseja scanear.
nmap foo.example.com
Os resultados do scan (que podem levar até alguns minutos, dependendo de onde a m’aquina está
localizada) devem se parecer com o seguinte:
Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Interesting ports on localhost.localdomain (127.0.0.1):
(The 1591 ports scanned but not shown below are in state: closed)
Port
State
Service
22/tcp
open
ssh
25/tcp
open
smtp
111/tcp
open
sunrpc
515/tcp
open
printer
950/tcp
open
oftep-rpc
6000/tcp
open
X11
Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds
O Nmap testa as portas de comunicação mais comuns em uma rede para escutar ou esperar serviços.
Esse conhecimento pode ser útil a um administrador que deseja encerrar serviços desnecessários.
Para mais informações sobre o uso do Nmap, consulte o site oficial no endereço:
http://www.insecure.org/
8.3.2. Nessus
Nessus é um scanner de segurança ’full-service’. A arquitetura plug-in do Nessus permite que usuários personalizem-no para seus sistemas e redes. Assim como qualquer scanner, Nessus é tão bom
quanto a assinatura do banco de dados no qual ele se baseia. Felizmente, Nessus é frequentemente
atualizado. Suas funcionalidades incluem relatório completo, scanning da máquina e busca de vulnerabilidades em tempo real. Lembre-se que pode haver falsos positivos e falsos negativos, mesmo com
uma ferramenta tão poderosa e atualizada como o Nessus.
Nota
Nessus não está incluso no Red Hat Enterprise Linux e não é suportado. Foi incluso neste documento como uma referência para usuários que possam se interessar por esta aplicação tão conhecida.
Para mais informações sobre o Nessus, consulte o site oficial no seguinte endereço:
http://www.nessus.org/
Capítulo 8. Avaliação de Vulnerabilidade
81
8.3.3. Nikto
O Nikto é um scanner CGI excelente. Nikto não tem apenas a capacidade de verificar vulnerabilidades
CGI, mas também de fazê-lo de maneira evasiva, para enganar sistemas de detecção de intrusão.
Acompanha uma documentação excelente que dever ser revisada cuidadosamente antes de executar
o programa. Quando você encontrar seus servidores Web servindo scripts CGI, o Nikto pode ser um
excelente recurso para checar a segurança destes servidores.
Nota
O Nikto não está incluso no Red Hat Enterprise Linux e não é suportado. Foi incluso neste documento como uma referência para usuários que possam se interessar por esta aplicação tão conhecida.
Mais informações sobre o Nikto podem ser encontradas na seguinte URL:
http://www.cirt.net/code/nikto.shtml
8.3.4. VLAD the Scanner
O VLAD é um scanner desenvolvido pela equipe RAZOR da Bindview, Inc., que pode ser usado
para checar vulnerabilidades. Ele procura pela lista das dez questões mais comuns de segurança da
SANS (questões do SNMP, questões de compartilhamento de arquivo, etc). Apesar de não ter tantas
funcionalidades quanto o Nessus, vale a pena investigar o VLAD.
Nota
O VLAD não está incluso no Red Hat Enterprise Linux e não é suportado. Foi incluso neste documento como uma referência para usuários que possam se interessar por esta aplicação tão conhecida.
Mais informações sobre o VLAD podem ser encontradas no site da equipe RAZOR na seguinte URL:
http://razor.bindview.com/tools/vlad/index.shtml
8.3.5. Antecipando Suas Necessidades Futuras
Dependendo do seu alvo e recursos, há muitas ferramentas disponíveis. Há ferramentas para redes
sem fio, redes Novell, sistemas Windows, sistemas Linux e outros. Outra parte essencial ao executar
avaliações deve incluir a revisão da segurança física, cobertura de pessoal ou avaliação de rede por
voz/PABX. Conceitos emergentes como o war walking — scanning do perímetro das estruturas físicas
de sua empresa para vulnerabilidades de rede sem fio — podem ser investigados e incorporados às
suas avaliações, se necessário. Imaginação e exposição são os únicos limites para planejar e conduzir
avaliações de vulnerabilidade.
82
Capítulo 8. Avaliação de Vulnerabilidade
IV. Intrusões e Resposta a Incidentes
É inevitável uma rede sofrer intrusões ou o uso maléfico de seus recursos. Esta parte aborda algumas
medidas pró-ativas que um administrador pode tomar para evitar quebras na segurança, tais como
formar uma equipe de resposta a emergências, capaz de responder rápida e efetivamente a questões
de segurança. Além disso, esta parte também detalha os passos a tomar para agupar e analisar as
evidências de uma quebra na segurança após o fato ter ocorrido.
Índice
9. Detecção de Invasão ...................................................................................................................... 85
10. Resposta ao Incidente ................................................................................................................. 91
Capítulo 9.
Detecção de Invasão
Uma propriedade de valor necessita de proteção contra ações de roubo e destruição. Algumas casas
são equipadas com sistemas de alarme capazes de deter ladrões, notificar as autoridades na ocasião de
uma invasão e inclusive alertar o proprietário quando sua casa estiver sendo incendiada. Tais medidas
são necessárias para assegurar a integridade das casas e a segurança de seus proprietários.
A mesma garantia de integridade e segurança também deve ser aplicada a sistemas de dados e computadores. A Internet facilitou o fluxo de informações, tanto pessoais como financeiras. Ao mesmo
tempo, também deu margem a muitos perigos. Usuários maléficos e crackers procuram alvos vulneráveis como sistemas não seguros, sistemas infectados com vírus trojans e redes rodando serviços não
seguros. São necessários alarmes para notificar os administradores e membros da equipe de segurança
que uma intrusão ocorreu para que eles possam agir em tempo real contra tal intrusão. Sistemas de
detecção de intrusão foram elaborados para agirem como este sistema de alerta.
9.1. Definindo Sistemas de Detecção de Intrusão
Um sistema de detecção de intrusão (intrusion detection system, IDS) é um processo ou dispositivo
ativo que analisa as atividades do sistema e da rede e identifica entradas não autorizadas e/ou atividades maléficas. A maneira como um IDS detecta anomalias pode variar amplamente; no entanto, o
objetivo final de qualquer IDS é capturar os infratores na ação antes de realmente danificarem seus
recursos.
Um IDS protege um sistema de ataques, mal-uso e danos. Também pode monitorar as atividades da
rede, auditorar as configurações da rede e do sistema para detectar vulnerabilidades, analisar integridade de dados e muito mais. Dependendo dos métodos de detecção que você escolher aplicar, há
diversos benefícios diretos e casuais em utilizar um IDS.
9.1.1. Tipos de IDS
Entender o que é um IDS e as funçionalidades que ele oferece é essencial para determinar qual será
o tipo apropriado para incluir em suas normas de segurança em informática. Esta seção aborda os
conceitos por trás dos IDSs, as funcionalidades de cada tipo de IDS e a emergência de IDSs híbridos
que aplicam diversas técnicas de detecção e ferramentas em um pacote.
Alguns IDSs são baseados no conhecimento, que alertam prioritariamente os administradores de segurança antes de uma intrusão ocorrer utilizando um banco de dados de ataques comuns. Alternativamente, há alguns IDS comportamentais que rastreiam todos os usos de recursos para encontrar
anomalias, que normalmente são sinais positivos de atividades de maléficas. Alguns IDSs são serviços isolados que trabalham por trás do cenário e monitoram passivamente as atividades, registrando
quaisquer pacotes suspeitos vindos de fora. Outros IDSs combinam ferramentas de sistema padrão,
configurações alteradas e registro verbal, juntamente à intuição do administrador e sua experiência em
criar um kit de detecção de intrusão poderoso. Avaliar as diferentes técnicas de detecção pode ajudar
a encontrar uma que seja correta para sua organização.
9.2. IDS baseado no servidor
Um IDS baseado na máquina analisa diversas áreas para determinar o mal-uso (atividades maléficas
ou truculentas dentro da rede) ou intrusão (incursões de fora). IDSs baseados na máquina consultam
diversos tipos de arquivos de registro (kernel, sistema, servidor, rede, firewall e outros) e comparam
os registros a um banco de dados interno com assinaturas comuns de ataques conhecidos. IDSs UNIX
86
Capítulo 9. Detecção de Invasão
e Linux baseados na máquina fazem uso constante do syslog e sua habiliadade em separar eventos
registrados por sua severidade (por exemplo: pequenas mensagens de impressão versus sérios alertas
do kernel). O IDS baseado na máquina filtra os registros (que, no caso de alguns eventos da rede e
do kernel, podem ser bastante verbalizados), analisa-os, renomeia as mensagens anômalas com sua
própria classificação de severidade e os agrupa em seu próprio registro especializado para análise do
adminstrador.
IDSs baseados na máquina também podem verificar a integridade dos dados de arquivos importantes
e executáveis. Checam um banco de dados de arquivos importantes (e quaisquer arquivos adicionados
pelo administrador) e criam um checksum de cada arquivo com uma utilidade de verificação de consistência de arquivo de mensagem como a md5sum (algoritmo de 128 bits) ou a sha1sum (algoritmo
de 160bits). Então, o IDS baseado na máquina armazena as consistências em um arquivo somente
texto e compara periodicamente a verificação de consistência aos valores do arquivo texto. Se alguma das consistências não bater, o IDS alerta o administrador via e-mail ou pager do celular. Este é o
procedimento utilizado pelo Tripwire, explanado na Seção 9.2.1.
9.2.1. Tripwire
O Tripwire é o IDS do Linux baseado na máquina mais conhecido. A Tripwire, Inc., empresa dos
desenvolvedores do Tripwire, recentemente divulgou o código-fonte do software para a versão Linux
e o licenciou sob os termos da GNU General Public License. O Tripwire está disponível no site
http://www.tripwire.org/.
Nota
O Tripwire não está incluso no Red Hat Enterprise Linux e não é suportado. Foi incluso neste documento como uma referência para usuários que possam se interessar pelo uso desta aplicação
conhecida.
9.2.2. RPM como um IDS
O Gestor de Pacotes RPM (RPM) é outro programa que pode ser utilizado como um IDS baseado
no servidor. O RPM contém várias opções para investigar pacotes e seus conteúdos. Estas opções de
verificação podem ser muito preciosas para um administrador ao suspeitar que arquivos críticos do
sistema e executáveis foram modificados.
A lista seguinte traz algumas opções para RPMs que podem verificar a integridade de arquivos em
um sistema Red Hat Enterprise Linux. Consulte o Guia de Administração do Sistema do Red Hat
Enterprise Linux para informações completas sobre o uso do RPM.
Importante
Alguns dos comandos da lista seguinte requerem a importação da chave pública GPG da Red Hat
para o chaveiro RPM do sistema. Esta chave verifica se os pacotes instalados em seu sistema
contêm uma assinatura de pacote da Red Hat, o que assegura que seus pacotes foram originados
da Red Hat. A chave pode ser importada atribuindo o seguinte comando como root (substituindo
versão pela versão do RPM instalado no sistema):
>
?
rpm --import /usr/share/doc/rpm-
@
version
A
/RPM-GPG-KEY
Capítulo 9. Detecção de Invasão
87
rpm -V nome_do_pacote
A opção -V verifica os arquivos do pacote instalado chamado nome_do_pacote. Se não exibir
nenhum output e fechar, isto significa que nenhum dos arquivos foi modificado de maneira alguma desde a última vez em que o banco de dados RPM foi atualizado. Se houver algum erro,
como
S.5....T c /bin/ps
então o arquivo foi modificado de alguma maneira e você deve decidir entre guardar o arquivo
(como é o caso de arquivos de configuração modificados no diretório /etc/) ou apagar o arquivo e reinstalar o pacote que o contém. A lista a seguir define os elementos do conjunto de 8
caracteres (S.5....T no exemplo acima) que notifica uma falha de verificação.
• .
— O teste passou esta fase da verificação
— O teste encontrou um arquivo que não pôde ser lido, o que provavelmente é uma questão
de permissão do arquivo
• ?
— O teste encontrou um arquivo menor ou maior do que era ao ser originalmente instalado
no sistema
• S
— O teste encontrou um arquivo cuja verificação de consistência (checksum) md5 não coincide com a consistência original do arquivo instalado pela primeira vez
• 5
• M
— O teste detectou um erro na permissão ou no tipo do arquivo
• D
— O teste encontrou um conflito em número maior/menor no arquivo de dispositivo
• L
— O teste encontrou um link simbólico que foi alterado para outra localização de arquivo
• U
— O teste encontrou um arquivo que teve sua propriedade de usuário alterada
• G
— O teste encontrou um arquivo que teve sua propriedade de grupo alterada
• T
— O teste encontrou erros de verificação mtime no arquivo
rpm -Va
A opção -Va verifica todos os pacotes instalados e procura qualquer falha em seus testes de verificação (parecida com a opção -V, só que seu output é mais verbalizado já que está verificando
cada pacote instalado).
rpm -Vf /bin/ls
A opção -Vf verifica arquivos individualmente em um pacote instalado. Ela pode ser útil ao
desempenhar uma verificação rápida em um arquivo suspeito.
rpm -K aplicação-1.0.i386.rpm
A opção -K é útil para checar a consistência (md5 checksum) e a assinatura GPG de um arquivo
de pacote RPM. Pode ser utilizada para verificar se um pacote prestes a ser instalado é assinado
pela Red Hat ou por qualquer organização para a qual você tenha a chave pública GPG importada
para um chaveiro GPG. Um pacote que não tenha sido assinado apropriadamente emitirá uma
mensagem de erro similar à seguinte:
application-1.0.i386.rpm (SHA1) DSA sha1 md5 (GPG) NOT OK
(MISSING KEYS: GPG#897da07a)
Tenha cuidado ao instalar pacotes não assinados já que não são aprovados pela Red Hat, Inc. e
podem conter código maléfico.
O RPM pode ser uma ferramenta poderosa, como evidenciado por suas diversas ferramentas de verificação de pacotes instalados e arquivos de pacotes RPM. É altamente recomendado que você faça backup dos conteúdos do diretório do banco de dados RPM (/var/lib/rpm/) para uma mídia
88
Capítulo 9. Detecção de Invasão
somente-leitura (como um CD-ROM) após instalar o Red Hat Enterprise Linux. Ao fazê-lo é possível verificar arquivos e pacotes com o banco de dados somente-leitura, ao invés do banco de dados
do sistema, já que usuários mal-intencionados podem corromper o banco de dados e desviar seus
resultados.
9.2.3. IDSs baseados em outros servidores
A lista a seguir aborda alguns dos outros sistemas de detecção de intrusão baseados na máquina.
Consulte os sites dos respectivos utilitários para mais informações sobre sua instalação e configuração.
Nota
Estas aplicações não estão inclusas no Red Hat Enterprise Linux e não são suportadas. Elas foram
inclusas neste documento como referência para usuários interessados em avaliá-las.
•
SWATCH http://www.stanford.edu/~atkins/swatch/ — O WATCHer Simples (SWATCH) utiliza arquivos de registro gerados pelo syslog para alertar administradores sobre anomalias baseado em
arquivos de configuração do usuário. SWATCH foi desenvolvido para registrar qualquer evento que
o usuário queira adicionar ao arquivo de configuração; no entanto, tem sido amplamente adotado
como um IDS baseado em servidor.
•
LIDS http://www.lids.org — O Sistema de Detecção de Intrusão Linux (Linux Intrusion Detection
System), LIDS, é um conserto do kernel e uma ferramenta de administração também capaz de
controlar modificações de arquivo com listas de controle de acesso (access control lists), ACLs, e
proteger processos e arquivos, inclusive do usuário root.
9.3. IDS baseado em rede
Sistemas de detecção de intrusão baseados em rede operam de maneira diferente aos IDSs baseados
em servidor. A filosofia de desenvolvimento de um IDS baseado em rede é scanear os pacotes da
rede no nível do servidor ou roteador, auditorando informações de pacotes e registrando quaisquer
pacotes suspeitos em um arquivo de registro especial com informações extras. Baseado nestes pacotes
suspeitos, um IDS baseado em rede pode scanear seu próprio banco de dados de assinaturas de ataques
de rede conhecidas e determinar um nível de severidade para cada pacote. Se os níveis de severidade
forem suficientemente altos, um email de alerta ou mensagem de celular será enviada aos membros
da equipe de segurança para que eles possam investigar a natureza da anomalia.
IDSs baseados em rede tornaram-se populares com o crescimento da Internet em tamanho e tráfego.
IDSs que podem scanear a volumosa quantidade de atividade de rede e nomear com êxito as transmissões suspeitas são bem recebidos na indústria da segurança. Devido à insegurança inerente de
protocolos TCP/IP, tornou-se obrigatório o desenvolvimento de scanners, sniffers e outras ferramentas de auditoria e detecção de rede para prevenir brechas de segurança devido às maléficas ativiidades
de rede como:
•
Spoofing do IP (alteração do endereço IP para parecer como outra máquna)
•
Ataques Denial-of-service
•
arp cache poisoning (danificação do protocolo)
•
Corrupção do domínio DNS
Capítulo 9. Detecção de Invasão
•
89
Ataques ’man-in-the-middle’
A maioria dos IDSs baseados em rede requerem que o dispositivo de rede do servidor do sistema
seja configurado para o modo promíscuo, que permite o dispositivo a capturar todos os pacotes que
passam na rede. O modo promíscuo pode ser configurado através do comando ifconfig, conforme
o seguinte:
ifconfig eth0 promisc
Executando ifconfig sem opções revela que eth0 agora está no modo promíscuo (PROMISC).
eth0
Link encap:Ethernet HWaddr 00:00:D0:0D:00:01
inet addr:192.168.1.50 Bcast:192.168.1.255 Mask:255.255.252.0
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:6222015 errors:0 dropped:0 overruns:138 frame:0
TX packets:5370458 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:2505498554 (2389.4 Mb) TX bytes:1521375170 (1450.8 Mb)
Interrupt:9 Base address:0xec80
lo
Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:21621 errors:0 dropped:0 overruns:0 frame:0
TX packets:21621 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1070918 (1.0 Mb) TX bytes:1070918 (1.0 Mb)
Ao utilizar uma ferramenta como o tcpdump (incluso no Red Hat Enterprise Linux), é possível visualizar o tráfego intenso fluindo por uma rede:
tcpdump: listening on eth0
02:05:53.702142 pinky.example.com.ha-cluster > \
heavenly.example.com.860: udp 92 (DF)
02:05:53.702294 heavenly.example.com.860 > \
pinky.example.com.ha-cluster: udp 32 (DF)
02:05:53.702360 pinky.example.com.55828 > dns1.example.com.domain: \
PTR? 192.35.168.192.in-addr.arpa. (45) (DF)
02:05:53.702706 ns1.example.com.domain > pinky.example.com.55828: \
6077 NXDomain* 0/1/0 (103) (DF)
02:05:53.886395 shadowman.example.com.netbios-ns > \
172.16.59.255.netbios-ns: NBT UDP PACKET(137): QUERY; BROADCAST
02:05:54.103355 802.1d config c000.00:05:74:8c:a1:2b.8043 root \
0001.00:d0:01:23:a5:2b pathcost 3004 age 1 max 20 hello 2 fdelay 15
02:05:54.636436 konsole.example.com.netbios-ns > 172.16.59.255.netbios-ns:\
NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
02:05:56.323715 pinky.example.com.1013 > heavenly.example.com.860:\
udp 56 (DF)
02:05:56.323882 heavenly.example.com.860 > pinky.example.com.1013:\
udp 28 (DF)
Note que pacotes não intencionados para a nossa máquina (pinky.example.com) ainda estão sendo
scaneados e registrados pelo tcpdump.
90
Capítulo 9. Detecção de Invasão
9.3.1. Snort
Apesar do tcpdump ser uma ferramenta de auditoria importante, não é considerado um IDS verdadeiro porque não analisa e aponta anomalias nos pacotes. Ao invés disso, o tcpdump exibe todas
as informações dos pacotes na tela de output ou em um arquivo de registro sem análise nenhuma.
Um IDS apropriado analisa os pacotes, aponta ransmissões de pacotes potencialmente maléficas e as
armazena em um registro formatado.
O Snort é um IDS desenvolvido para ser compreensivo e correto em registrar com êxito as atividades
maléficas da rede e notificar os administradores quando potenciais brechas ocorrerem. Snort utiliza a
biblioteca padrão libcap e o tcpdump como um registro especializado de pacotes.
A característica mais premiada do Snort, somada à sua funcionalidade, é o seu sub-sistema flexível
de assinaturas de ataque. Snort tem um banco de dados de ataques constantemente atualizado
que pode ser adicionado à ou atualizado via Internet. Os usuários podem criar assinaturas
baseadas em novos ataques de rede e enviá-las às listas de discussão de assinaturas do Snort
(http://www.snort.org/lists.html), para beneficiar todos os usuários do Snort. Essa ética comunitária
em compartilhar elevou o Snort a um dos IDSs mais atualizados e robustos disponíveis no mercado.
Nota
O Snort não esta incluso no Red Hat Enterprise Linux e não é suportado. Ele foi incluso neste
documento como referência para usuários interessados em avaliá-lo.
Para mais informações sobre o uso do Snort, consulte o site oficial: http://www.snort.org.
Capítulo 10.
Resposta ao Incidente
No caso da segurança de um sistema ter sido comprometida, uma resposta ao incidente se faz necessária. É responsabilidade da equipe de segurança responder ao problema rapida e efetivamente.
10.1. Definindo Resposta ao Incidente
A resposta ao incidente é uma reação expedida a uma questão ou ocorrência de segurança. Pertinente
à segurança da informação, um exemplo seria as ações da equipe de segurança contra um hacker que
penetrou um firewall e está bisbilhotando o tráfego da rede interna. O incidente é uma infração da
segurança. A resposta depende de como a equipe de segurança reage, o que ela faz para mininmizar
os danos e quando recupera os recursos; tudo isso enquanto tenta garantir a integridade dos dados.
Pense na sua empresa e em como quase todos os aspectos dela dependem de tecnologia e sistemas
de computador. Se houver um comprometimento, imagine os resultados potencialmente devastadores.
Além do tempo em que o sistema ficará fora do ar e o roubo de dados, pode haver corrupção de dados,
roubo de identidade (a partir de registros pessoais online), má publicidade, ou até mesmo resultados
financeiros devastadores enquanto clientes e empresas aprendem a reagir negativamente na ocorrência
de comprometimento.
Pesquisas sobre as infrações anteriores na segurança (tanto internas quanto externas) mostram que
algumas empresas podem até ser fechadas como resultado de uma grave infração de segurança. Uma
infração pode tornar recursos indisponíveis e roubar ou corromper dados. Mas é muito difícil estimar
financeiramente os danos como má publicidade. Para ter uma idéia exata do quão importante é uma
resposta eficiente a um incidente, uma empresa deve calcular o custo de uma infração e também os
efeitos financeiros da publicidade negativa, a curto e longo prazo.
10.2. Criando um Plano de Resposta ao Incidente
É importante que um plano de resposta ao incidente seja formulado, apoiado através da empresa e
regularmente testado. Um bom plano de resposta ao incidente pode minimizar não somente os efeitos
de uma infração na segurança, mais também reduzir a publicidade negativa.
Da perspectiva de uma equipe de segurança, não importa se a infração ocorre (como parte das eventuais transações usando um meio de rede não confiável, como a Internet), mas sim, quando uma infração
ocorre. Não pense em um sistema como fraco e vulnerável; é importante perceber que quando há tempo e recursos suficientes alguém violará até mesmo o sistema ou rede mais super-protegido. Não é
necessário consultar nada além do site Security Focus em http://www.securityfocus.com para obter informações detalhadas e atualizadas sobre as recentes infrações e vulnerabilidades de segurança, desde
a destruição frequente de páginas web corporativas até os ataques aos servidores DNS em 2002 1.
O aspecto positivo de perceber a inevitabilidade de uma infração do sistema é que ela permite à equipe
de segurança desenvolver um curso das ações que minimizem qualquer dano potencial. Combinar o
curso das ações com habilidades permite à equipe responder a condições adversas de uma maneira
formal e responsável.
O plano de resposta ao incidente pode ser dividido em quatro fases:
•
Ação imediata para interromper ou minimizar o incidente
•
Investigação do Incidente
1.
http://www.gcn.com/21_32/web/20404-1.html
92
Capítulo 10. Resposta ao Incidente
•
Restauração dos recursos afetados
•
Reportando o indicente aos canais apropriados
Uma resposta a um incidente deve ser decisiva e executada rapidamente. Como há pouco espaço para
erros, é essencial que as práticas de emergência sejam ensaiadas e os tempos de resposta medidos.
Desta maneira, é possível desenvolver uma metodologia que estimule a velocidade e a acuracidade,
minimizando o impacto da indisponibilidade de recursos e os potenciais danos causados pelo comprometimento do sistema.
Um plano de resposta ao incidente tem diversos requisitos, inclusive:
•
Um time de peritos internos (uma Equipe de Resposta às Emergências de Computador)
•
Um estratégia aprovada e juridicamente revista
•
Suporte financeiro da empresa
•
Suporte executivo da diretoria
•
Um plano de ação factível e testado
•
Recursos físicos, como armazenamento redundante, sistemas de standby e serviços de backup
10.2.1. A Equipe de Resposta a Emergências de Computador (The Computer
Emergency Response Team - CERT)
O termo Equipe de Resposta às Emergências de Computador (Computer Emergency Response Team
- CERT) refere-se a um grupo de peritos internos preparados para agir rapidamente no caso de uma
situação catastrófica com computadores. Encontrar as competências cruciais para uma CERT pode ser
um desafio. O conceito de pessoal apropriado vai além das habilidades técnicas e inclui questões de
logística, como localização, disponibilidade e desejo de colocar a empresa à frente da vida pessoal
quando uma emergência ocorre. Uma emergência nunca é um evento planejado; pode acontecer a
qualquer momento e todos os membros da CERT devem aceitar a responsabilidade de responder a
uma emergência a qualquer hora.
Os típicos integrantes de uma CERT incluem adminsitradores de sistemas e de rede, assim como
peritos em segurança das informações. Os administradores de sistema proverão o conhecimento e
habilidades dos recursos do sistema, inclusive backups de dados, backup de hardware disponível para
uso e outros. Administradores de rede proverão seu conhecimento de protocolos de rede e a habilidade
em redirecionar o tráfego de rede dinamicamente. O pessoal de segurança da informação é útil para
rastrear e investigar detalhadamente as questões de segurança assim como para analisar os sistemas
comprometidos após a ocorrência.
Nem sempre é possível, mas deve haver redundância no pessoal de uma CERT. Se não for viável
ter uma área especializada na empresa, então deve haver treinamento para outras áreas sempre que
possível. Lembre-se que se somente uma pessoa tiver as informações cruciais para a segurança e
integridade dos dados, então a organização inteira ficará desamparada na ausência desta pessoa.
10.2.2. Considerações Legais
Alguns aspectos importantes da resposta ao incidente a considerar são as questões legais. Planos
de segurança devem ser desenvolvidos juntamente aos membros da área jurídica ou algum tipo de
conselho geral. Assim como toda empresa deve ter sua própria política de segurança corporativa, toda
empresa tem sua própria maneira de lidar com incidentes sob a perspectiva legal. Questões regulatórias
em nível local, estadual e federal vão além do escopo deste documento, mas são mencionadas pois
a metodologia de análise post-mortem será ditada, pelo menos em parte (ou em conjunto com), pelo
conselho jurídico. O conselho geral pode alertar o pessoal técnico das ramificações legais das infrações
de segurança, os perigos de registros pessoais, médicos ou financeiros de um cliente vazarem, e a
importância de restaurar os serviços em ambiente críticos como hospitais e bancos.
Capítulo 10. Resposta ao Incidente
93
10.3. Implementando o Plano de Resposta ao Incidente
Após um plano de ação ser criado, ele deve ser consentido e implementado ativamente. Qualquer aspecto do plano que seja questionado durante a implementação ativa pode resultar numa resposta lenta
e longo período fora do ar no evento de uma infração. Nestas circunstâncias os exercícios práticos são
muito valiosos. A menos que algo venha à tona antes do plano ser ativamente definido na produção,
a implementação deve ser consentida por todas as partes diretamente relacionadas e executada com
confiança.
Se uma infração for detectada enquanto a CERT estiver presente para rápida reação, as possíveis respostas podem variar. A equipe pode decidir desabilitar as conexões de rede, desligar os sistemas afetados, consertar o exploit e então reconectar rapidamente sem possíveis complicações futuras. A equipe
também pode monitorar os infratores e rastrear suas ações. A equipe pode, inclusive, redirecionar o
infrator para um pote de mel — um sistema ou segmento de rede contendo dados intencionalmente
falsos — para rastrear a invasão de maneira segura e sem interrupção dos recursos de produção.
A resposta a um incidente deve acompanhar também uma coleta de informações sempre que possível. A execução de processos, conexões de rede, arquivos, diretórios e outros devem ser auditados
ativamente em tempo real. Ter uma rápida impressão dos recursos de produção para comparação pode
ser útil ao rastrear serviços ou processos corrompidos. Os integrantes da CERT e os peritos internos
serão ;ótimos recursos para rastrear tais anomalias em um sistema. Administradores de sistemas sabem quais processos devem ou não aparecer ao executar os comandos top ou ps. Administradores
de rede estão cientes de como funciona o tráfego normal de rede ao executar o snort ou até mesmo
tcpdump. Estes integrantes da equipe devem conhecer seus sistemas e serem capazes de apontar uma
anomalia mais rapidamente do que alguém que não esteja familiarizado com a infra-estrutura.
10.4. Investigando o Incidente
Investigar uma infração de computador é como investigar a cena de um crime. Os detetives coletam
evidências, anotam quaisquer pistas estranhas e fazem um inventário de perdas e danos. Uma análise
do comprometimento dos computadores pode ser feita enquanto o ataque ocorre ou post-mortem (após
o ataque).
Apesar de não ser recomendável confiar em nenhum arquivo de registro de um sistema que sofreu
exploit, há outras utilidades forênsicas para auxiliar sua análise. O propósito e funções destas ferramentas variam, mas elas comumente criam pequenos ’arquivos-espelho’ da mídia, relacionam eventos
e processos, exibem informações simples do sistema de arquivo e recuperam arquivos apagados sempre que possível.
Também é recomendado registrar todas as ações investigativas de um sistema corrompido, usando o
comando script, conforme o exemplo a seguir:
script -q
D
B
file-name
C
E
Substitua file-name pelo nome do arquivo de registros do script. Sempre salve o arquivo de
registros em outra mídia que não o disco rígido do sistema comprometido — um disquete é uma boa
opção para este propósito.
Ao registrar todas as suas ações, cria-se um rastro de auditoria que pode ser valioso se o atacante for
pego.
10.4.1. Coletando uma Imagem Evidencial
Criar um pequeno ’arquivo-espelho’ da mídia é um primeiro passo razoável. Se estiver executando
trabalho forênsico de dados, é um requerimento. É recomendado fazer duas cópias: uma para análise
e investigação, e uma segunda para ser armazenada junto à original como evidência para quaisquer
procedimentos legais.
94
Capítulo 10. Resposta ao Incidente
Você pode usar o comando dd, que é parte do pacote fileutils do Red Hat Enterprise Linux, para
criar uma imagem monolítica de um sistema que sofreu exploit como evidência em uma investigação,
ou para comparação com imagens confiáveis. Suponha que haja um único disco rígido no sistema que
você deseja criar a imagem. Anexe este disco como escravo ao sistema e então use o comando dd para
criar o arquivo imagem, conforme mostramos a seguir:
dd if=/dev/hdd bs=1k conv=noerror,sync of=/home/evidence/image1
Este comando cria um único arquivo chamado image1 usando o tamanho de um bloco de 1k para
velocidade. As opções conv=noerror,sync forçam o dd a continuar lendo e descarregando os dados
mesmo se encontrar setores danificados no disco suspeito. Agora é possível estudar o arquivo imagem
resultante ou até tentar recuperar arquivos apagados.
10.4.2. Coletando Informação Pós-Infração
O tópico forênsica e análise digital é bastante abrangente, mas as ferramentas são específicas para a
arquitetura em sua maioria e não podem ser aplicadas genericamente. Entretanto, resposta a indicentes, análise e recuperação são tópicos muito importantes. Utilizando o conhecimento e a experiência
apropriados, o Red Hat Enterprise Linux pode ser uma ótima plataforma para executar estes tipos de
análises já que inclui diversas funcionalidades para realizar a resposta e restauração pós-infração.
Tabela 10-1 descreve alguns comandos para auditoria e gerenciamento de arquivos. Também lista alguns exemplos que podem ser usados para identificar apropriadamente arquivos e seus atributos (tais
como permissões e datas de acesso) para que assim você possa coletar mais evidências ou ítens para
análise. Estas ferramentas, quando combinadas com sistemas de detecção de intrusão, firewalls, serviços seguros e outras medidas de segurança, podem ajudar a reduzir os danos potenciais na ocorrência
de um ataque.
Nota
Para informações detalhadas sobre cada ferramenta, consulte suas respectivas páginas man.
Comando
Função
Exemplo
dd
Cria uma pequena cópia da imagem
(ou disk dump) dos arquivos e
partições. Combinado à verificação
dos md5sums de cada imagem,
administradores podem comparar
uma imagem pré-infração de uma
partição ou arquivo com um sistema
que sofreu uma infração para
verificar se as consistências
coincidem.
dd if=/bin/ls of=ls.dd
|md5sum ls.dd >ls-sum.txt
Capítulo 10. Resposta ao Incidente
95
Comando
Função
grep
Encontra trechos de informação
ps auxw |grep /bin
(texto) úteis dentro de arquivos e
diretórios, assim como revela
permissões, alterações de script,
atributos de arquivos e muito mais.
Utilizado na maioria das vezes como
um comando ’casado’ (piped) com
outro, como o ls, ps, ou o
ifconfig.
Exemplo
strings
Imprime os trechos de caracteres
imprimíveis em um arquivo. É mais
útil para examinar anomalias em
arquivos executáveis como
comandos mail para endereços
desconhecidos ou para registrar em
arquivos de registro fora do padrão.
file
Determina as características de
file /bin/ls
arquivos baseado no formato,
código, bibliotecas com as quais está
ligado (se houver) e tipo de arquivo
(binário, texto ou outros). É útil para
determinar se um executável como
/bin/ls foi modificado usando
bibliotecas estáticas, o que é um
sinal certeiro de que o executável foi
substituído por outro instalado por
um usuário maléfico.
find
Busca determinados arquivos em
diretórios. É uma ferramenta útil
para procurar na estrutura do
diretório por palavra-chave, data e
hora de acesso, permissões e outros
critérios. Também pode ser útil para
administradores que executam
auditorias gerais do sistema em
determinados arquivos ou diretórios.
stat
Exibe diversas informações sobre
stat /bin/netstat
um arquivo, inclusive a hora do
último acesso, permissões,
configurações UID (ID do usuário) e
GID (ID do grupo) e outras. Útil
para verificar quando um executável,
de um sistema que sofreu infração,
foi utilizado ou modificado pela
última vez.
strings /bin/ps |grep
’mail’
find -atime +12 -name *log*
-perm u+rw
96
Capítulo 10. Resposta ao Incidente
Comando
Função
md5sum
Calcula o checksum (verificação de md5sum /usr/bin/gdm
consistência) de 128 bits usando o
>>md5sum.txt
algoritmo md5 hash. Use este
comando para criar um arquivo texto
que lista todos os executáveis
cruciais que são frequentemente
modificados ou substituídos em um
comprometimento da segurança.
Redirecione as somas para um
arquivo, a fim de criar um simples
banco de dados de consistências, e
então copie o arquivo para uma
mídia somente-leitura como um
CD-ROM.
Exemplo
Tabela 10-1. Ferramentas de Auditoria de Arquivos
10.5. Restaurando e Recuperando Recursos
Enquanto uma resposta ao incidente é executada, a equipe CERT deve investigar e trabalhar na recuperação dos dados e do sistema. Infelizmente, a natureza da infração é que dita o curso da recuperação. É
muito importante ter sistemas redundantes, backup ou offline, durante este período.
Para recuperar os sistemas, a equipe de resposta deve trazer de volta quaisquer sistemas ou aplicações fora do ar, como servidores de autenticação, servidores de banco de dados, e outros recursos de
produção.
É altamente recomendável ter hardware backup da produção pronto para uso, como drives extras, servidores avulsos e outros do gênero. Sistemas prontos devem ter todo o software de produção carregado
e pronto para uso imediato. Somente os dados mais recentes e pertinentes devem ser importados. Este
sistema pronto deve ser mantido separadamente do resto da rede. Se ocorrer um comprometimento e
o sistema de backup for parte da rede, então não há propósito em ter um sistema backup.
A recuperação do sistema pode ser um processo tedioso. Em muitos casos há dois cursos de ações
a escolher. Administradores podem executar uma nova instalação do sistema operacional em cada
sistema afetado, seguida da restauração de todas as aplicações e dados. Alternativamente, os administradores também podem consertar as vulnerabilidades penetradas e trazer o sistema afetado de volta à
produção.
10.5.1. Reinstalando o Sistema
Executar uma nova reinstalação assegura que o sistema afetado será limpo de quaisquer trojans, ’backdoors’ ou processos maléficos. A reinstalação também assegura que quaisquer dados (se recuperados
a partir de um backup confiável) estão livres de qualquer modificação maléfica. A desvantagem da
recuperação total do sistema é o tempo envolvido na reconstrução dos sistemas a partir do zero. No
entanto, se houver um bom sistema de backup disponível para uso, no qual a única ação a tomar é
carregar os dados mais recentes, então o downtime (tempo fora do ar) é reduzido drasticamente.
10.5.2. Consertando o Sistema (patching)
Consertar o sistema afetado é um curso de ações mais perigoso e deve ser executado com muita
atenção. O perigo de consertar um sistema ao invés de reinstalar é determinar se você realmente livrou
o sistema de trojans, buracos da segurança e dados corrompidos. A maioria dos rootkits (programas
Capítulo 10. Resposta ao Incidente
97
ou pacotes usados por um cracker para obter acesso root em seu sistema), comandos de sistema trojan
e ambientes de janela de comandos são desenvolvidos para ocultar atividades maléficas de auditorias
superficiais. Se você optar pelo conserto, use somente binários confiáveis (ex.: a partir de um CDROM montado e somente-leitura).
10.6. Reportando o Incidente
A última parte do plano da resposta ao incidente é reportá-lo. A equipe de segurança deve tomar notas
enquanto a resposta estiver ocorrendo para reportar corretamente a questão às organizações, tais como
autoridades locais e federais, ou portais de multi-fabricantes de software, tal como o site ’Common
Vulnerabilities and Exposures’ (CVE) em http://cve.mitre.org. Dependendo do tipo de conselho jurídico aplicado pela sua empresa, uma análise post-mortem pode se fazer necessária. Mesmo se não
for um requisito funcional para uma análise do comprometimento, uma post-mortem pode ser muito
valiosa para entender como um cracker pensa e como seus sistemas estão estruturados, para assim
prevenir futuros comprometimentos.
98
Capítulo 10. Resposta ao Incidente
V. Apêndices
Esta parte aborda algumas das maneiras mais comuns usadas por intrusos para quebrar a segurança de
sistemas de computador ou interceptar dados em trânsito. Esta parte também detalha alguns dos serviços mais utilizados e os números de suas portas associadas, que podem ser úteis a um administrador
que pretende atenuar os riscos de ter seus sistemas crackeados.
Índice
A. Proteção ao Hardware e à Rede................................................................................................ 101
B. Exploits Comuns e Ataques....................................................................................................... 107
C. Portas Comuns ........................................................................................................................... 111
Apêndice A.
Proteção ao Hardware e à Rede
A melhor prática antes de aplicar uma máquina em um ambiente de produção ou conectar sua rede à
Internet é determinar as necessidades de sua empresa, e como a segurança pode atender a estes requisitos da maneira mais transparente possível. Já que o objetivo principal do Guia de Segurança do Red
Hat Enterprise Linux é explicar como proteger o Red Hat Enterprise Linux, um exame mais detalhado da segurança do hardware e da rede física está além do escopo deste documento. No entanto, este
capítulo apresenta uma breve visão geral do estabelecimento de políticas de segurança em relação a
hardware e redes físicas. Alguns fatores importantes a considerar incluem como os requisitos computacionais e de conectividade são endereçados na estratégia de segurança. A seguir, uma explicação
detalhada de alguns destes fatores.
•
Computação envolve mais do que somente estações de trabalho rodando software. Empresas modernas requerem um grande poder computacional e serviços de alta disponibilidade, que podem
incluir mainframes, clusters de aplicação ou de computador, estações de trabalho poderosas e aplicações especializadas. Com estes requisitos corporativos, entretanto, aumentou a propensão a falhas
de hardware, desastres naturais e a interfêrencias ou roubo de equipamento.
•
Conectividade é o método através do qual o administrador pretende conectar recursos díspares em
uma rede. Um administrador pode usar a Ethernet (cabeamento CAT-5/RJ-45 de hub ou de comutador), ’token ring’, cabo coaxial 10-base-2 ou mesmo tecnologias sem-fio (802.11x). Dependendo
do meio que o administrador escolher, determinadas mídias e tecnologias de rede requerem tecnologias complementares, como hubs, roteadores, comutadores, estações base e pontos de acesso. Determinar uma arquitetura de rede funcional facilitará o processo administrativo se surgirem questões
de segurança.
A partir destas considerações gerais, os administradores podem obter uma visão melhor da implementação. A estrutura de um ambiente computacional pode ser baseado em ambos, necessidades da
corporação e considerações de segurança — uma implementação que atenda uniformemente aos dois
fatores.
A.1. Topologias de Rede Segura
A fundação de uma LAN é a topologia ou arquitetura de rede. A topologia é o layout físico e lógico de uma LAN em termos de recursos providos, distância entre nódulos e meio de transmissão.
Dependendo das necessidades da empresa a qual a rede serve, há diversas opções disponíveis para a
implementação da rede. Cada topologia tem suas vantagens e questões de segurança que arquitetos de
rede devem considerar ao desenhar o layout de suas redes.
A.1.1. Topologias Físicas
Conforme definido pelo Institute of Electrical and Electronics Engineers (IEEE), há três topologias
comuns para a conexão física de uma LAN.
A.1.1.1. Topologia Ring
A topologia Ring conecta cada nódulo por exatamente duas conexões. Isto cria uma estrutura ring
na qual cada nódulo é acessível ao outro, diretamente por seus nódulos vizinhos fisicamente mais
próximos ou indiretamente através do ring físico. Redes Token Ring, FDDI e SONET são conectadas
desta maneira (com o FDDI usando uma técnica de ring duplo). No entanto, não há conexões Ethernet
comuns usando esta topologia física, então os rings não são comumente aplicados, exceto em confi-
102
Apêndice A. Proteção ao Hardware e à Rede
gurações legadas ou institucionais com uma grande base de nódulos instalados (em uma universidade,
por exemplo).
A.1.1.2. Topologia de Canal Linear (Linear Bus)
A topologia de canal linear consiste de nódulos conectados a um cabo linear principal terminado (o
backbone). A topologia de canal linear requer um mínimo de cabeamento e equipamento de rede, o
que a torna a topologia de custo mais baixo. No entanto, o canal linear depende do backbone estar
constantemente disponível, tornando-o um ponto único de falha, caso seja necessário colocá-lo offline
ou esteja servido. Topologias de canal linear são comumente usadas em LANs par-a-par (peer-to-peer)
usando cabeamento coaxial e terminadores de 50-93 ohm nas duas extremidades do canal.
A.1.1.3. Topologia Estrela
A topologia Estrela incorpora um ponto central onde os nódulosconectam e através do qual a comunicação é passada. Este ponto central, chamado de hub pode ser transmitido ou comutado. Esta
topologia introduz um ponto único de falha no hardware de rede centralizado que conecta os nódulos.
Entretanto, devido essa centralização, as questões de rede que afetam segmentos da ou a LAN inteira
são facilmente rastreáveis para esta fonte única.
A.1.2. Considerações de Transmissão
Em uma rede de transmissão, um nódulo enviará um pacote que atravessa todos os outros nódulos
até que o receptor aceite o pacote. Cada nódulo da rede pode concebivelmente receber este pacote
de dados até que o receptor processe o pacote. Em uma rede de transmissão, todos os pacotes são
enviados desta maneira.
Em uma rede comutada (switched network), os pacotes não são transmitidos, mas são processados no
hub comutado que, por sua vez, cria uma conexão direta entre os nódulos emissor e receptor, usando
os princípios da transmissão unicast. Isto elimina a necessidade de transmitir pacotes a cada nódulo,
assim diminuindo o tráfego operante.
A rede comutada também evita que os pacotes sejam interceptados por usuários ou nódulos maléficos.
Em uma rede de transmissão, onde cada nódulo recebe o pacote no caminho de seu destino, usuários
maléficos podem configurar seu dispositivo Ethernet para o modo promíscuo e aceitar todos os pacotes
independentemente se os dados são para estes ou não. Uma vez definido no modo promíscuo, uma
aplicação sniffer pode ser usada para filtrar, analisar e reconstruir pacotes para senhas, dados pessoais
e outros. Aplicações sniffer sofisticadas podem armazenar este tipo de informação em arquivos texto
e, talvez, até enviar as informações para fontes arbitrárias (por exemplo: o enedereço de e-mail do
usuário maléfico).
Uma rede comutada requer um comutador de rede, um componente de hardware especializado que
substitui a função do hub tradicional, ao qual todos os nódulos de uma LAN são conectados. Comutadores armazenam endereços MAC de todos os nódulos em um banco de dados interno, que os utiliza
para seu roteamento direto. Diversos fabricantes, incluindo a Cisco Systems, Linksys e Netgear oferecem vários tipos de comutadores com características como a compatibilidade 10/100-Base-T, suporte
a Ethernet gigabit e suporte ao Acesso Múltiplo de Detecção do Portador e Detecção de Colisão (Carrier Sensing Multiple Access and Collision Detection - CSMA/CD), que é ideal para redes de tráfego
alto porque enfileira as conexões e detecta quando os pacotes colidem em trânsito.
A.1.3. Redes Sem-fio
Uma questão emergente para empresas é a mobilidade. Funcionários remotos, técnicos de campo
e executivos requerem soluções portáteis, como laptops, organizadores pessoais digitais (PDAs) e
Apêndice A. Proteção ao Hardware e à Rede
103
acesso sem-fio a recursos de rede. O IEEE estabeleceu normas para a especificação sem-fio 802.11,
que dita padrões para a comunicaçõa de dados sem-fio para todos os setores. O padrão corrente usado
atualmente é a especificação 802.11b.
As especificações 802.11b e 802.11g são, na verdade, um grupo de padrões que governam as comunicações sem-fio e exercem controle sobre o espectro 2.4GHz de rádio frequência (RF) não licensiado
(a 802.11a usa o espectro de 5GHz). Estas especificações foram aprovadas como padrões pelo IEEE,
e diversos fabricantes comercializam produtos e serviços 802.11x. Os consumidores também adotaram o padrão para as redes em escritórios pequenos ou caseiros. A popularidade também extendeu-se
das LANs às MANs (Redes de Área Metropolitana), especialmente em áreas populosas onde há uma
concentração de pontos de acesso sem-fio (wireless access points - WAPs). Além disso, há provedores
de serviços de Internet sem-fio que servem viajantes frequentes necessitando acesso de banda larga à
Internet, para conduzir seus negóciois remotamente.
As especificações 802.11x permitem conexões par-a-par diretas entre nódulos com NICs sem-fio.
Este agrupamento flexível de nódulos, chamado de rede improvisada, é ideal para compartilhamento
de conexão rápida entre dois ou mais nódulos, mas introduz questões de escalabilidade não adequadas
para conectividade sem-fio dedicada.
Uma solução mais adequada para o acesso sem-fio em estruturas fixas é instalar um ou mais WAPs,
que conectam à rede tradicional e permitem que nódulos sem-fio se conectem ao WAP como se fosse
na rede mediada pela Ethernet. O WAP age efetivamente como uma ponte entre os nódulos conectados
a ele e o resto da rede.
A.1.3.1. Segurança da 802.11x
Apesar da rede sem-fio ser comparável em velocidade e certamente mais conveniente que os meios de
redes com fios, há algumas limitações na especificação que autoriza consideração completa. A mais
importante destas limitações está na sua implementação de segurança.
Com a ansiedade de implantar uma rede 802.11x com sucesso, muitos administradores deixam de
tomar as precauções mais básicas. Desde que toda a rede 802.11x esteja feita usando sinais RF de
banda alta, os dados transmitidos são facilmente acessíveis a qualquer usuário com um NIC compatível, uma ferramenta de scaneamento da rede sem-fio (como o NetStumbler ou o Wellenreiter) e
ferramentas comuns de sniffing (como dsniff e snort). Para impedir este uso indevido das redes
privadas sem-fio, o padrão 802.11b usa o protocolo Wired Equivalency Privacy (WEP), uma chave
criotografada de 64 ou 128 bits baseada no RC-4 e compartilhada entre cada nódulo ou entre a AP e
o nódulo. Esta chave criptografa as transmissões e descriptografa pacotes de entrada dinamicamente e transparentemente. Os administradores frequentemente deixam de implementar este esquema de
criptografia de chave compartilhada por esquecimento ou porque escolheram não fazê-lo devido à degradação do desempenho (especialmente através de distâncias longas). Habilitar o WEP em uma rede
sem-fio pode reduzir drasticamente a possibilidade de intercepção de dados.
O Red Hat Enterprise Linux suporta vários produtos 802.11x de diversos fabricantes. A Ferramenta
de Administração de Rede inclui uma funcionalidade para configurar a segurança de NICs e WEP
sem-fio. Para informações sobre o uso da Ferramenta de Administração de Rede, consulte o capítulo Configuração de Rede do Guia de Administração do Sistema do Red Hat Enterprise Linux.
Confiar no WEP, entretanto, ainda não é o suficiente em termos de proteção contra determinados
usuários maléficos. Há utilitários especializados desenvolvidos especificamente para crackear o algoritmo RC4 de criptografia do WEP protegendo uma rede sem-fio e expondo a chave compartilhada.
A AirSnort e a WEP Crack são dois exemplos destas aplicações especializadas. Para protegerem-se
destas, os administradores devem aderir a normas restritas em relação ao uso de métodos sem-fio para
o acesso a informações delicadas. Pode-se optar por aumentar a segurança da conectividade sem-fio
restringindo-a somente a conexões SSH ou VPN, que introduz uma camada de criptografia adicional
sobre a criptografia WEP. Ao usar esta norma, um usuário maléfico externo à rede que crackear a
criptografia WEP, também terá que crackear a criptografia VPN ou SSH. Dependendo do método,
pode-se empregar até criptografia de algoritmo DES de 168 bits de força tripla (3DES), ou algoritmos proprietários, ou ainda uma força maior. Os administradores que aplicarem estas normas devem
104
Apêndice A. Proteção ao Hardware e à Rede
restringir protocolos somente-texto (como Telnet ou FTP), já que senhas e dados podem ser expostos
usando quaisquer dos métodos mencionados anteriormente.
A.1.4. Segmentação de Rede e DMZs
Para administradores que queiram rodar serviços acessíveis externamente (como HTTP, e-mail, FTP
e DNS) é recomendado que estes serviços sejam física e/ou logicamente segmentados da rede interna.
Firewalls e a proteção de máqunas e aplicações são maneiras efetivas de detectar intrusões casuais.
Entretanto, alguns crackers podem encontrar vias à rede interna se os serviços que crackearam residem
na mesma rota lógica que o resto da rede. Os serviços acessíveis externamente devem residir no que
a indústria da segurança chama de zona desmilitarizada (DMZ), um segmento da rede lógica onde
o tráfego de entrada da Internet pode acessar somente àqueles serviços e não podem acessar a rede
interna. Isto é efetivo, pois mesmo que um usuário maléfico faça um exploit na DMZ de uma máquina,
o resto da rede interna fica atrás de um firewall em um segmento separado.
A maioria das empresas tem um conjunto limitado de endereços IP publicamente roteáveis, a partir
dos quais pode hospedar serviços externos. Desta forma, os administradores utilizam regras de firewall
elaboradas para aceitar, encaminhar, rejeitar e negar transmissões de pacotes. Regras de firewall implementadas com iptables ou firewalls de hardware dedicado permitem o roteamento complexo e
o encaminhamento de regras, que podem ser usados por administradores para segmentar o tráfego de
entrada para serviços específicos em endereços e portas específicos, assim como para permitir que
somente a LAN acesse os serviços internos. Estas medidas podem evitar exploits de spoofing de IP.
Para mais informações sobre a implementação de iptables, consulte o Capítulo 7.
A.2. Segurança de Hardware
De acordo com um estudo lançado em 2000 pelo FBI e o Computer Security Institute (CSI), mais de
setenta por cento de todos os ataques a dados e recursos delicados reportados por empresas ocorreram
dentro da própria empresa. Implementar normas de segurança interna é tão importante quanto uma
estratégia externa. Esta seção explica algumas das medidas comuns que administradores e usuários
podem tomar para proteger seus sistemas de más práticas internas.
Estações de trabalho de funcionários não são, na maioria dos casos, potenciais alvos de ataques remotos, especialmente aquelas atrás de um firewall configurado apropriadamente. No entanto, há algumas
medidas de proteção que podem ser implementadas para evitar um ataque físico ou interno aos recursos de estações de trabalho individualmente.
Estações de trabalho e PCs caseiros modernos têm BIOSes que controlam recursos do sistema no nível
do hardware. Usuários de estações de trabalho podem determinar senhas administrativas no BIOS para
impedir que usuários maléficos reinicializem o sistema ou acessem/roubem informações armazenadas
no disco rígido.
Mas, se o usuário maléfico roubar o PC (o caso mais comum de roubo entre viajantes que carregam
laptops e outros dispositivos portáteis) e levá-lo a um lugar onde ele pode desmontar o computador,
a senha do BIOS não evita que o atacante remova o disco rígido. Assim, pode instalá-lo em outro
PC sem restrições de BIOS e montá-lo para acessar quaisquer dados contidos nele. Nestes casos, é
recomendado que estações de trabalho tenham bloqueios para restringir o acesso ao hardware interno.
Medidas especiais de segurança, como cabos de aço com cadeados, podem ser ligados ao chassis
do PC e do laptop para evitar roubo, assim como bloqueios de chave no próprio chassis para evitar
acesso interno. Este tipo de hardware é amplamente disponibilizado por fabricantes como Kensington
e Targus.
O hardware de servidor, especialmente servidores de produção, é geralmente montado em racks em
salas de servidores. Armários de servidor comumente possuem portas com trancas; e chassis individu-
Apêndice A. Proteção ao Hardware e à Rede
105
ais de servidores também estão disponíveis com frentes com trancas para aumentar a segurança contra
o desligamento errôneo (ou intencional).
As empresas também podem usar provedores de co-locação para guardar seus servidores, já ques estes
oferecem banda mais alta, suporte técnico 24h 7 dias por semana e conhecimento em segurança de
sistemas e servidores. Este pode ser um meio efetivo de terceirizar as necessidades de segurança e
conectividade para transações HTTP ou serviços de streaming media. No entanto, a co-locação pode
ter um alto custo, especialmente para pequenas e médias empresas. As estruturas da co-locação são
conhecidas por ser altamente protegidas por seguranças treinados e monitoradas o tempoo todo.
106
Apêndice A. Proteção ao Hardware e à Rede
Apêndice B.
Exploits Comuns e Ataques
Tabela B-1 detalha alguns dos exploits e pontos de entrada mais comuns usados por intrusos para
acessar recursos de rede de organizações. As explicações de como estes exploits são executados e
como administradores podem proteger sua rede apropriadamente são muito importantes contra tais
ataques.
Exploit
Descrição
Notas
Zero ou Senha
Default
Deixar senhas administrativas em
branco ou usar a senha default provida
pelo fabricante. Isto é mais comum
em hardware, como roteadores e
BIOSes, porém alguns dos serviços
que rodam no Linux podem conter
senhas default de administrador
(apesar do Red Hat Enterprise Linux
não ser distribuído com elas).
Comumente associado a hardware de
rede, como roteadores, firewalls,
VPNs e aplicações de
armazenamento anexo à rede
(network attached storage - NAS);
Comum em muitos sistemas
operacionais legados, especialmente
aqueles que compoem serviços como
UNIX e Windows.
Às vezes, administradores criam
alguns usuários privilegiados com
pressa e deixam a senha vazia, um
ponto de entrada perfeito para
usuários maliciosos que descobrem o
usuário.
Chaves
Compartilhadas
Default
Serviços seguros às vezes empacotam
chaves de seurança default para
desenvolvimento ou para testes de
avaliação. Se estas chaves
permanacerem inalteradas e estiverem
localizadas em um ambiente de
produção na Internet, qualquer
usuário com as mesmas chaves default
tem acesso a este recurso de chave
compartilhada e a quaisquer
informações importantes contidas
neste.
Mais comum em pontos de acesso
sem-fio e aplicações de servidor
seguro pré-configuradas
CIPE (consulte o Capítulo 6) contém
uma amostra de chave estática que
deve ser alterada antes da aplicação
em um ambiente de produção
108
Apêndice B. Exploits Comuns e Ataques
Exploit
Descrição
Notas
Spoofing do IP
(alteração do
endereço IP para
parecer como
outra máquna)
Uma máquina remota age como um
nódulo em sua rede local, encontra
vulnerabilidades em seus servidores e
instala uma programa backdoor ou
trojan para obter controle sobre seus
recursos de rede.
O Spoofing é bem difícil já que
requer que o atacante adivinhe os
números de TCP/IP SYN-ACK para
coordenar uma conexão que almeje
os sistemas, mas há diversas
ferramentas disponíveis para auxiliar
crackers em executá-lo.
Depende de almejar sistemas que
estejam rodando serviços (tais como
rsh, telnet, FTP e outros) que
utilizam técnicas de autenticação
baseadas na fonte, não recomendadas
quando comparadas à PKI ou outras
formas de autenticação criptografada
usadas no ssh ou SSL/TLS.
Eavesdropping
(espionagem do
tráfego de rede)
Coletando dados que trafegam entre
dois nódulos ativos em uma rede
através do eavesdropping na conexão
entre estes dois nódulos.
Este tipo de ataque geralmente
atinge protocolos de transmissão
somente-texto, como Telnet, FTP e
transferências HTTP.
O atacante remoto deve ter accesso a
um sistema comprometido em uma
LAN para poder executar um ataque
deste tipo. Geralmente o cracker
usou um ataque ativo (como um
spoofing de IP ou
’Man-in-the-middle’) para
comprometer um sistema na LAN
Medidas preventivas incluem serviços
com troca de chave criptográfica,
senhas descartáveis ou autenticação
criptografada para impedir snooping
de senha. Também recomenda-se a
alta criptografia durante as
transmissões
Apêndice B. Exploits Comuns e Ataques
109
Exploit
Descrição
Notas
Vulnerabilidades
do Serviço
Um atacante encontra um defeito ou
uma infração em um serviço
executado pela Internet através desta
vulnerabilidade. O atacante
compromete o sistema inteiro e
quaisquer dados que este possa
conter; e também é possível que
comprometa outros sistemas da rede.
Serviços baseados em HTTP, tais
como o CGI, são vulneráveis a
execuções de comandos remotos e
até mesmo a acesso através da janela
de comandos. Mesmo que o serviço
HTTP seja executado por um usuário
não-privilegiado, como "ninguém",
informações como arquivos de
configuração e mapas de rede podem
ser lidas, ou o atacante pode iniciar
um ataque ’denial of service’ que
drena os recursos do sistema ou
torna-os indisponíveis a outros
usuários.
Serviços podem ter vulnerabilidades
que passam desapercebidas durante o
desenvolvimento e testes. Estas
vulnerabilidades (tais como
sobrecarregamentos do buffer, que
possibilitam ao atacante obter acesso
ao preencher a memória endereçável
com uma quantidade além da
aceitável pelo serviço, prejudicam o
serviço e dão ao atacante um prompt
de comando interativo a partir do
qual ele pode executar comandos
arbitrariamente) podem oferecer
controle administrativo completo a
um atacante.
Administradores devem certificar-se
que os serviços não sejam executados
com o usuário root e estar atentos a
atualizações de erratas e consertos
para suas aplicações, de fabricantes ou
empresas de segurança como CERT e
CVE.
110
Apêndice B. Exploits Comuns e Ataques
Exploit
Descrição
Notas
Vulnerabilidades
da Aplicação
Atacantes encontram falhas em
aplicações de compuatdores pessoais
e estações de trabalho como clientes
de e-mail, executam código arbitrário
e implantam trojans para
comprometer ou danificar serviços
futuramente. Exploits podem ocorrer
no futuro se a estação de trabalho
comprometida tiver privilégios
administrativos para o resto da rede.
Estações de trabalho e computadores
pessoais são mais propensos a
exploits porque os funcionários não
têm a mesma habilidade ou
experiência para impedir ou detectar
o comprometimento; é essencial
informar aos indivíduos sobre os
riscos que correm ao instalar
software não autorizado ou abrir
arquivos anexos de e-mails não
solicitados.
Algumas defesas podem ser
implementadas de modo que este
software de cliente de e-mail não abra
ou execute automaticamente arquivos
anexos. Adicionalmente, a atualização
automática do software da estação de
trabalho através da Red Hat Network
ou outros serviços de gerenciamento
de sistemas, podem aliviar a carga de
aplicações de segurança para
multi-usuário.
Ataques Denial of O atacante ou grupo de atacantes
Service (DoS)
coordena um ataque a recursos de
rede ou de servidor de uma empresa
enviando pacotes não autorizados para
a máquina alvo (um servidor, um
roteador ou uma estação de trabalho).
Isto força o recurso a ficar
indisponível aos usuários legítimos.
Tabela B-1. Exploits Comuns
O caso de DoS (denial of service)
ocorrido em 2000 mais reportado.
Diversos sites comerciais e
governamentais de alto tráfego
tornaram-se indisponíveis por um
ataque ’ping flood’ coordenado,
usando vários sistemas
comprometidos com conexões de
banda larga atuando como zumbis,
ou nódulos de transmissão
redirecionados.
Pacotes fonte geralmente são
forjados (e também retransmitidos),
dificultando a investigação da
verdadeira origem do ataque.
Avanços na filtragem do ingresso
(ingress filtering - IETF rfc2267),
usando iptables e IDs de Rede
como snort, ajudam administradores
a rastrear e impedir ataques DoS
distribuídos.
Apêndice C.
Portas Comuns
As tabelas a seguir listam as portas de comunicação mais comuns usadas pelos serviços, daemons
e programas inclusos no Red Hat Enterprise Linux. Esta lista também pode ser encontrada no arquivo /etc/services. Para acessar uma lista oficial das portas Bem Conhecidas (Well Knnown),
Registradas (Registered) e Dinâmicas (Dynamic) conforme designadas pela IANA (Internet Assigned
Numbers Authority), consulte o site:
http://www.iana.org/assignments/port-numbers
Nota
A Camada, quando listada, denota se o serviço ou protocolo usa TCP ou UDP para transporte. Se
não estiver especificada, o serviço/protocolo pode usar ambos, TCP e UDP.
Número da
Nome
Porta / Camada
Comentário
1
tcpmux
Multiplexador do serviço da porta do TCP
5
rje
Entrada de Tarefa Remota
7
echo
Serviço Echo
9
descartar
Serviço zero para teste de conexão
11
systat
Serviço de Estado do Sistema para listar as portas
conectadas
13
daytime
Envia data e hora para a máquina requerente
17
qotd
Envia a citação do dia para a máquina conectada
18
msp
Protocolo de Envio de Mensagem
19
chargen
Serviço de Geração de Caractere; envia trechos infinitos
de caracteres
20
ftp-data
Porta de dados do FTP
21
ftp
Porta do Protocolo de Transferência de Arquivos (FTP);
por vezes usada pelo Protocolo de Serviço de Arquivos
(FSP - File Service Protocol)
22
ssh
Serviço Secure Shell (SSH)
23
telnet
O serviço Telnet
25
smtp
Protocolo de Transferência de Correspondência Simples
(SMTP- Simple Mail Transfer Protocol)
37
time
Protocolo de Hora
39
rlp
Protocolo de Localidade de Recursos
112
Apêndice C. Portas Comuns
Número da
Nome
Porta / Camada
Comentário
42
nameserver
Serviço de Nomes da Internet
43
nicname
Serviço do diretório WHOIS
49
tacacs
Sistema de Controle de Acesso do Controlador de Acesso
do Terminal para autenticação e acesso baseado no
TCP/IP
50
re-mail-ck
Protocolo de Verificação de Correspondência Remota
53
domain
serviços de nome de domínio (tal como BIND)
63
whois++
WHOIS++, serviços WHOIS extendidos
67
bootps
Serviços do Protocolo de Bootstrap (BOOTP); também
usado pelos serviços do Protocolo de Configuração da
Máquina Dinâmica (Dynamic Host Configuration
Protocol, DHCP)
68
bootpc
Cliente boostrap (BOOTP); também usado por clientes do
Protocolo de Controle da Máquina Dinâmica (DHCP)
69
tftp
Protocolo de Transferência de Arquivos Triviais (TFTP Trivial File Transfer Protocol)
70
gopher
Ferramenta de busca e recuperação de documentos de
Internet Gopher
71
netrjs-1
Serviço de Tarefa Remota
72
netrjs-2
Serviço de Tarefa Remota
73
netrjs-3
Serviço de Tarefa Remota
73
netrjs-4
Serviço de Tarefa Remota
79
finger
Serviço finger para informações de contato do usuário
80
http
Protocolo de Transferência de HíperTexto (HTTP) para
serviços WWW (World Wide Web)
88
kerberos
Sistema de autenticação de rede Kerberos
95
supdup
Extensão do protocolo telnet
101
hostname
Serviços de nomes para máquinas SRI-NIC
102
iso-tsap
Aplicações de rede do Ambiente de Desenvolvimento ISO
(ISODE)
105
csnet-ns
Servidor de nomes da caixa de correspondência; também
usado pelo servidor de nomes CSO
107
rtelnet
Telnet remoto
109
pop2
Versão 2 do Protocolo do Post Office
110
pop3
Versão 3 do Protocolo do Post Office
111
sunrpc
Protocolo da Chamada de Procedimento Remoto (RPC)
para execução de comandos remotos, usado pelo Sistema
de Arquivo de Rede (NFS)
Apêndice C. Portas Comuns
113
Número da
Nome
Porta / Camada
Comentário
113
auth
Protocolos de autenticação e identificação
115
sftp
Serviços do Protocolo de Transferência de Arquivos
Seguros (SFTP)
117
uucp-path
Serviços da Localidade do Protocolo de Cópia
Unix-para-Unix (UUCP - Unix-to-Unix Copy Protocol)
119
nntp
Protocolo de Transferência de Notícias de Rede (Network
News Transfer Protocol, NNTP) para o sistema de
discussão USENET
123
ntp
Protocolo de Hora da Rede (NTP - Network Time
Protocol)
137
netbios-ns
Serviços de Nome do NETBIOS usando no Red Hat
Enterprise Linux pelo Samba
138
netbios-dgm
Serviços de Datagrama do NETBIOS usado no Red Hat
Enterprise Linux pelo Samba
139
netbios-ssn
Serviços de Sessões do NETBIOS usado no Red Hat
Enterprise Linux pelo Samba
143
imap
Protocolo de Acesso à Mensagem via Internet (Internet
Message Access Protocol, IMAP)
161
snmp
Protocolo de Gerenciamento de Rede Simples (SNMP Simple Network Management Protocol)
162
snmptrap
Armadilhas SNMP
163
cmip-man
Protocolo de Informações de Gerenciamento Comum
(CMIP - Common Management Information Protocol)
164
cmip-agent
Protocolo de Informações de Gerenciamento Comum
(CMIP - Common Management Information Protocol)
174
mailq
MAILQ
177
xdmcp
Protocolo de Controle do Gerenciamento de Exibição do
X
178
nextstep
Servidor de janelas do NeXTStep
179
bgp
Protocolo da Porta de Comunicação da Divisa (Border
Gateway Protocol)
191
prospero
Serviços Prospero de Cliffod Neuman
194
irc
Internet Relay Chat (IRC)
199
smux
Multiplexador UNIX para SNMP
201
at-rtmp
Roteamento do AppleTalk
202
at-nbp
Ligação de nomes do AppleTalk
204
at-echo
Eco do AppleTalk
206
at-zis
Informações da zona do AppleTalk
114
Apêndice C. Portas Comuns
Número da
Nome
Porta / Camada
Comentário
209
qmtp
Protocolo de Transferência de Correspondência Rápida
(QMTP - Quick Mail Transfer Protocol)
210
z39.50
Banco de dados NISO Z39.50
213
ipx
Internetwork Packet Exchange (IPX), um protocolo de
datagrama geralmente usado em ambientes Netware do
Novell
220
imap3
Protocolo de Acesso a Mensagens via Internet versão 3
245
link
LINK
347
fatserv
Servidor Fatmen
363
rsvp_tunnel
Túnel RSVP
369
rpc2portmap
Portmapper do sistema de arquivo coda
370
codaauth2
Serviços de autenticação do sistema de arquivo coda
372
ulistproc
Servidor de Listas do UNIX
389
ldap
Protocolo de Acesso ao Diretório Lightweight (LDAP Lightweight Directory Access Protocol)
427
svrloc
Protocolo de Localização do Serviço (SLP - Service
Location Protocol)
434
mobileip-agent
Agente do Protocolo de Internet (IP)
435
mobilip-mn
Gerenciador do Protocolo de Internet (IP) Móvel
443
https
Protocolo de Transferência de Hypertexto Seguro (HTTPS
- Secure Hypertext Transfer Protocol)
444
snpp
Protocolo de Paging de Rede Simples
445
microsoft-ds
Server Message Block (SMB) sobre TCP/IP
464
kpasswd
Serviços de alteração da senha e chave do Kerberos
468
photuris
Protocolo de gerenciamento da chave da sessão do
Photuris
487
saft
Protocolo de Transferência de Arquivos Assíncronos
Simples (SAFT - Simple Asynchronous File Transfer)
488
gss-http
Serviços de Segurança Genérica (Generic Security
Services, GSS) para o HTTP
496
pim-rp-disc
Rendezvous Point Discovery (RP-DISC) para os serviços
do Protocol Independent Multicast (PIM)
500
isakmp
Protocolo de Gerenciamento da Chave e da Associação da
Segurança de Internet (ISAKMP - Internet Security
Association and Key Management Protocol)
535
iiop
Protocolo Internet Inter-Orb (IIOP)
538
gdomap
Mapeador de Objetos Distribuídos do GNUstep
(GDOMAP - GNUstep Distributed Objects Mapper)
Apêndice C. Portas Comuns
115
Número da
Nome
Porta / Camada
Comentário
546
dhcpv6-client
Protocolo de Configuração da Máquina Dinâmica (DHCP
- Dynamic Host Configuration Protocol) versão 6 cliente
547
dhcpv6-server
Protocolo de Configuração da Máquina Dinâmica (DHCP
- Dynamic Host Configuration Protocol) versão 5 Serviço
554
rtsp
Protocolo de Controle do Stream em Tempo Real (RTSP Real Time Stream Control Protocol)
563
nntps
Protocolo de Transporte de Notícias de Rede sobre a SSL
(NNTPS - Network News Transport Protocol over Secure
Sockets Layer)
565
whoami
whoami
587
submissão
Agente de Submissão da Mensagem de Correio (MSA Mail Message Submission Agent)
610
npmp-local
Protocolo de Gerenciamento dos Periféricos de Rede
(NPMP - Network Peripheral Management Protocol) local
/ Sistema de Ordenação Distribuída (DQS - Distributed
Queueing System)
611
npmp-gui
Protocolo de Gerenciamento dos Periféricos de Rede
(NPMP - Network Peripheral Management Protocol) GUI
/ Sistema de Ordenação Distribuída (DQS - Distributed
Queueing System)
612
hmmp-ind
Indicação do HMMP / DQS
631
ipp
Protocolo de Impressão da Internet (IPP - Internet Printing
Protocol)
636
ldaps
Protocolo de Acesso ao Diretório Lightweight sobre a SSL
(LDAPS - Lightweight Directory Access Protocol over
Secure Sockets Layer)
674
acap
Protocolo de Acesso à Configuraço da Aplicação (ACAP Application Configuration Access Protocol)
694
ha-cluster
Serviços heartbeat para Clusters de Ata Disponibilidade
749
kerberos-adm
Administração do banco de dados ’kadmin’ do Kerberos
versão 5 (v5)
750
kerberos-iv
Serviços do Kerberos versão 4 (v4)
765
webster
Dicionário da Rede
767
phonebook
Catálogo de Telefones da Rede
873
rsync
serviços de transferência de arquivos rsync
992
telnets
Telnet sobre a Secure Sockets Layer (TelnetS)
993
imaps
Protocolo de Acesso a Mensagens da Internet sobre a SSL
(IMAPS - Internet Message Access Protocol over Secure
Sockets Layer)
994
ircs
Internet Relay Chat sobre Secure Sockets Layer (IRCS)
116
Apêndice C. Portas Comuns
Número da
Nome
Porta / Camada
Comentário
995
Protocolo do Post Office versão 3 sobre SSL (POP3S Post Office Protocol version 3 over Secure Sockets Layer)
pop3s
Tabela C-1. Portas Bem Conhecidas
As portas seguintes são específicas do UNIX e abrangem diversos serviços, de e-mail a autenticação. Os nomes entre colchetes ([serviço], por exemplo) são nomes de daemons para o serviço ou
apelido(s) comum(ns).
Número da
Nome
Porta / Camada
Comentário
512/tcp
exec
Autenticação para execução do processo remoto
512/udp
biff [comsat]
Cliente de Mail(biff) e serviço (comsat) assíncronos
513/tcp
login
Autenticação Remota (rlogin)
513/udp
who [whod]
lista de usuários autenticados
514/tcp
shell [cmd]
shell remota (rshell) e cópia remota (rcp) sem autenticação
514/udp
syslog
Serviço de autenticação do sistema UNIX
515
printer [spooler]
spooler da impressora em linha (lpr)
517/udp
talk
Serviço e cliente do talk remote calling
518/udp
ntalk
Cliente e Serviço do Network talk (ntalk) remote calling
519
utime [unixtime]
Protocolo de hora do UNIX (utime)
520/tcp
efs
Servidor de Nomes Extendidos de Arquivo (EFS Extended Filename Server)
520/udp
router [route,
routed]
Protocolo de Informações de Roteamento (RIP- Routing
Information Protocol)
521
ripng
Protocolo de Informações de Roteamento para o Protocolo
de Internet versão 6 (IPv6)
525
timed
[timeserver]
Daemon de hora (timed)
526/tcp
tempo [newdate]
Tempo
530/tcp
courier [rpc]
Protocolo de Chamada do Processo Remoto de
Mensageiro (RPC - Remote Procedure Call)
531/tcp
conference [chat]
Internet Relay Chat
532
netnews
Notícias de Rede
533/udp
netwall
Netwall para transmissões de emergência
540/tcp
uucp [uucpd]
Serviços de cópia Unix-para-Unix
Apêndice C. Portas Comuns
117
Número da
Nome
Porta / Camada
Comentário
543/tcp
klogin
Autenticação remota do Kerberos versão 5 (v5)
544/tcp
kshell
Shell remota do Kerberos versão 5 (v5)
548
afpovertcp
Protocolo de Arquivamento do Appletalk (AFP) sobre o
Protocolo de Controle da Transmissão (TCP)
556
remotefs
[rfs_server, rfs]
Sistema de Arquivo Remoto de Brunhoff (RFS)
Tabela C-2. Portas Específicas do UNIX
A Tabela C-3 lista as portas submetidas pela rede e pela comunidade do software para o IANA para o
registro formal na lista de números de porta.
Número da
Nome
Porta / Camada
Comentário
1080
socks
Serviços proxy da aplicação de rede SOCKS
1236
bvcontrol
[rmtcfg]
Servidor de Configuração Remota de Garcilis Packeten
1300
h323hostcallsc
H.323 teleconferencing Host Call Secure
1433
ms-sql-s
Microsoft SQL Server
1434
ms-sql-m
Microsoft SQL Monitor
1494
ica
Cliente Citrix ICA
1512
wins
Microsoft Windows Internet Name Server
1524
ingreslock
Serviços de bloqueio do Sistema de Gerenciamento do
Banco de Dados Ingres (DBMS - Database Management
System)
1525
prospero-np
Prospero não-privelegiado
1645
datametrics
[old-radius]
Datametrics / entrada do radius antigo
1646
sa-msg-port
[oldradacct]
sa-msg-port / entrada do radacct antigo
1649
kermit
Serviço de gerenciamento e transferência de arquivos
Kermit
1701
l2tp [l2f]
Protocolo de Tunneling da Camada 2 (LT2P - Layer 2
Tunneling Protocol) / encaminhamento da camada 2 (L2F
- layer 2 forwarding)
1718
h323gatedisc
H.323 telecommunication Gatekeeper Discovery
1719
h323gatestat
H.323 telecommunication Gatekeeper Status
1720
h323hostcall
H.323 telecommunication Host Call setup
1758
tftp-mcast
Multi-transmissão do FTP Trivial
a
118
Apêndice C. Portas Comuns
Número da
Nome
Porta / Camada
Comentário
1759
mtftp
FTP Trivial de Multi-transmissão (MTFTP)
1789
hello
Protocolo de comunicação do roteador hello
1812
radius
Serviços de autenticação e accounting da discagem do
radius
1813
radius-acct
Accounting do Radius
1911
mtp
Protocolo de Transporte Multimídia das Redes Starlight
(MTP)
1985
hsrp
Protocolo do Roteador Standby do Cisco Hot
1986
licensedaemon
Daemon do Gerenciamento de Licensa Cisco
1997
gdp-port
Protocolo da Descoberta da Porta de Comunicação Cisco
(GDP)
2049
nfs [nfsd]
Sistema de Arquivo de Rede (NFS)
2102
zephyr-srv
Servidor de entrega e transporte de avisos Zephyr
2103
zephyr-clt
conexão do Zephyr serv-hm
2104
zephyr-hm
Administrador da máquina Zephyr
2401
cvspserver
Concurrent Versions System (CVS) cliente/operações de
servidor
2430/tcp
venus
Gerenciador de cache Venus para o sistema de arquivo
Coda (porta codacon)
2430/udp
venus
Gerenciador de cache Venus para o sistema de arquivo
Coda (callback/interface wbc)
2431/tcp
venus-se
efeitos colaterais do Protocolo de Controle de Transmissão
(TCP) Venus
2431/udp
venus-se
Efeitos colaterais do Protocolo de Datagrama de Usuário
Vênus (Venus User Datagram Protocol, UDP)
2432/udp
codasrv
porta do servidor do sistema de arquivo Coda
2433/tcp
codasrv-se
efeitos colaterais do TCP do sistema de arquivo Coda
2433/udp
codasrv-se
efeitos colaterais do SFTP do UDP do sistema de arquivo
Coda
2600
hpstgmgr
[zebrasrv]
HPSTGMGR; roteamento do Zebrab
2601
discp-client
[zebra]
cliente discp; shell integrada do Zebra
2602
discp-server
[ripd]
servidor discp; daemon do Protocolo de Informações de
Roteamento (ripd)
2603
servicemeter
[ripngd]
Medidor do Serviço; daemon do RIP para IPv6
2604
nsc-ccs [ospfd]
NSC CCS; daemon do Open Shortest Path First (ospfd)
Apêndice C. Portas Comuns
119
Número da
Nome
Porta / Camada
Comentário
2605
nsc-posa
NSC POSA; daemon do Protocolo da Porta de
Comunicação da Divisa (bgpd)
2606
netmon [ospf6d]
Dell Netmon; OSPF para o dameon do IPv6 (ospf6d)
2809
corbaloc
Common Object Request Broker Architecture (CORBA)
nomeando localizador de serviços
3130
icpv2
Protocolo do Cache da Internet versão 2 (v2); usado pelo
servidor de caching Squid Proxy
3306
mysql
Serviço de banco de dados MySQL
3346
trnsprntproxy
Proxy Trnsprnt
4011
pxe
serviço do Ambiente de Pré-execução (PXE Pre-execution Environment)
4321
rwhois
Serviço remoto Whois (rwhois)
4444
krb524
tradutor de ticket do Kerberos versão 5 (v5) para a versão
4 (v4)
5002
rfe
Sistema de transmissão de áudio Radio Free Ethernet
(RFE)
5308
cfengine
Motor de Configuração (Cfengine - Configuration Engine)
5999
cvsup [CVSup]
ferramenta de atualização e transferência de arquivos
CVSup
6000
x11 [X]
Serviços do Sistema X Window
7000
afs3-fileserver
Servidor de arquivos do Sistema de Arquivo Andrew (AFS
- Andrew File System)
7001
afs3-callback
porta AFS para callbacks do administrador do cache
7002
afs3-prserver
banco de dados dos grupos e usuários do AFS
7003
afs3-vlserver
banco de dados da localização de volumes do AFS
7004
afs3-kaserver
serviço de autenticação do Kerberos para o AFS
7005
afs3-volser
Servidor de administração dos volumes do AFS
7006
afs3-errors
Serviço de interpretação de erros do AFS
7007
afs3-bos
processo de supervisão básica do AFS
7008
afs3-update
atualizador servidor-para-servidor do AFS
7009
afs3-rmtsys
serviço de administração do cache remoto do AFS
9876
sd
Diretor da Sessão
10080
amanda
serviços de backup do Arquivador de Disco de Rede
Automático Maryland Avançado (Amanda - Advanced
Maryland Automatic Network Disk Archiver)
11371
pgpkeyserver
Pretty Good Privacy (PGP) / servidor de chaves públicas
GNU Privacy Guard (GPG)
120
Apêndice C. Portas Comuns
Número da
Nome
Porta / Camada
Comentário
11720
h323callsigalt
H.323 Call Signal Alternate
13720
bprd
Daemon dos Pedidos de Backup de Rede Veritas (bprd NetBackup Request Daemon)
13721
bpdbm
Administrador do Banco de Dados de Backup da Rede
Veritas (bpdbm - NetBackup Database Manager)
13722
bpjava-msvc
Veritas NetBackup Java / Protocolo do Microsoft Visual
C++ (MSVC)
13724
vnetd
Utilitário de Rede Veritas
13782
bpcd
Backup de Rede Veritas
13783
vopied
Protocolo VOPIED Veritas
22273
wnn6 [wnn4]
Sistema de conversão Kana/Kanjic
26000
quake
servidores de jogos multi-jogadores do Quake (e
relacionados)
26208
wnn6-ds
33434
traceroute
ferramenta de rastreamento da rede Traceroute
Notas:
a. Comentário do /etc/services: "A Porta 1236 está registrada como ‘bvcontrol’, mas
também é usada pelo servidor de configuração remota de Gracilis Packeten. O nome oficial esta
listado como o nome principal, e o nome não-registrado como apelido."
b. Nota do /etc/services: "As portas numeradas de 2600 a 2606 são usadas pelo pacote zebra
sem serem registradas. Os nomes principais são os nomes registrados, e os nomes não-registrados
usados pelo zebra são listados como apelidos (aliases)."
c. Nota do /etc/services: "Esta porta é registrada como wnn6, mas também é usada sob o
nome não-registrado ’wnn4’ pelo pacote FreeWnn."
Tabela C-3. Portas Registradas
A Tabela C-4 mostra uma lista das portas relacionadas ao Protocolo de Entrega do Datagrama (DDP)
usado das redes AppleTalk.
Número da
Nome
Porta / Camada
Comentário
1/ddp
rtmp
Protocolo de Administração da Tabela de Roteamento
2/ddp
nbp
Protocolo de Ligação de Nomes (Name Binding Protocol)
4/ddp
echo
Protocolo Echo do AppleTalk
6/ddp
zip
Protocolo de Informações da Zona
Tabela C-4. Portas do Protocolo de Entrega do Datagrama
A Tabela C-5 é uma lista das portas relacionadas ao protocolo de autenticação de rede do Kerberos.
Onde estiver indicado, v5 refere-se ao protocolo do Kerberos versão 5. Note que estas portas não são
registradas na IANA.
Apêndice C. Portas Comuns
121
Número da
Nome
Porta / Camada
Comentário
751
kerberos_master
autenticação do Kerberos
752
passwd_server
Servidor de Senha do Kerberos (kpasswd)
754
krb5_prop
Propagação do Kerberos v5 escravo
760
krbupdate [kreg]
registro do Kerberos
1109
kpop
Protocolo Post Office do Kerberos (KPOP)
2053
knetd
Des-multiplexador do Kerberos
2105
eklogin
autenticação remota criptografada do Kerberos v5 (rlogin)
Tabela C-5. Portas do Kerberos (Projeto Athena/MIT)
A Tabela C-6 é uma lista de portas não-registradas que são usadas por serviços e protocolos que
podem ser instalados no seu sistema Red Hat Enterprise Linux ou são necessários para a comunicação
entre o Red Hat Enterprise Linux e sistemas rodando outros sistemas operacionais.
Número da
Nome
Porta / Camada
Comentário
15/tcp
netstat
Estado da Rede (netstat)
98/tcp
linuxconf
Ferramenta de Administração do Linux Linuxconf
106
poppassd
Daemon de alteração da Senha do Protocolo Post Office
(POPPASSD - Post Office Protocol Password
465/tcp
smtps
Protocolo de Transferência de Correspondência Simples
sobre Secure Sockets Layer (SMTPS)
616/tcp
gii
Interface Interativa do Gated (daemon de roteamento)
808
omirr [omirrd]
Serviços de espelhamento de arquivo Online Mirror
(Omirr)
871/tcp
supfileserv
Servidor do Protocolo de Atualização de Software (SUP Software Upgrade Protocol)Transfer
901/tcp
swat
Ferramenta de Administração Web do Samba (SWAT Samba Web Administration Tool)
953
rndc
Berkeley Internet Name Domain versão 9 (BIND 9)
ferramenta de configuração do daemon de nome remoto
1127
sufiledbg
Depuração do Protocolo de Atualização de Software (SUP
- Software Upgrade Protocol)
1178/tcp
skkserv
Kana Simples para Kanji (SKK) servidor de input em
Japonês
1313/tcp
xtel
Sistema de informações de texto French Minitel
1529/tcp
suporte [prmsd,
gnatsd]
Sistema de rastreamento de erros GNATS
122
Apêndice C. Portas Comuns
Número da
Nome
Porta / Camada
Comentário
2003/tcp
cfinger
Finger do GNU
2150
ninstall
Serviço de Instalação de Rede
2988
afbackup
sistema de backup cliente-servidor afbackup
3128/tcp
squid
Cache de proxy Squid Web
3455
prsvp
porta RSVP
5432
postgres
Banco de dados PostgreSQL
4557/tcp
fax
Serviço de transmissão de FAX (serviço antigo)
4559/tcp
hylafax
Protocolo cliente-servidor HylaFAX (serviço novo)
5232
sgi-dgl
Biblioteca Gráfica Distribuída SGI
5354
noclog
Daemon de autenticação do centro de operações de rede
NOCOL (noclogd - NOCOL network operation center
logging daemon)
5355
hostmon
Monitoramento de máquina do centro de operações de
rede NOCOL
5680/tcp
canna
Interface do input dos caracteres Japoneses Canna
6010/tcp
x11-ssh-offset
Secure Shell (SSH) X11 forwarding offset
6667
ircd
Daemon do Internet Relay Chat (ircd)
7100/tcp
xfs
Servidor de Fontes do X (XFS)
7666/tcp
tircproxy
Serviço proxy do IRC Tircproxy
8008
http-alt
Protocolo de Transferência de Hipertexto (HTTP)
alternado
8080
webcache
Serviço de caching da World Wide Web (WWW)
8081
tproxy
Proxy Transparente
9100/tcp
jetdirect [laserjet,
hplj]
Serviço de impressão de rede da Hewlett-Packard (HP)
JetDirect
9359
mandelspawn
[mandelbrot]
Programa de spawning Parallel Mandelbrot para o Sistema
X Window
10081
kamanda
Serviço de backup Amanda sobre o Kerberos
10082/tcp
amandaidx
Serviços de backup Amanda
10083/tcp
amidxtape
Serviços de backup Amanda
20011
isdnlog
Sistema de autenticação da Rede Digital de Sistemas
Integrados (ISDN - Integrated Systems Digital Network)
20012
vboxd
Daemon da caixa de voz da ISDN (vboxd - voice box
dameon)
22305/tcp
wnn4_Kr
Sistema de input Korerano kWnn
22289/tcp
wnn4_Cn
Sistema de input Chinês cWnn
Apêndice C. Portas Comuns
123
Número da
Nome
Porta / Camada
Comentário
22321/tcp
wnn4_Tw
Sistema de input Chinês tWnn (Taiwan)
24554
binkp
Daemon de correspondência Binkley TCP/IP Fidonet
27374
asp
Protocolo de Busca de Endereços
60177
tfido
Serviço de correspondência compatível ao FidoNet Ifmail
60179
fido
Rede de notícias e correspondência eletrônica FidoNet
Tabela C-6. Portas Não-registradas
124
Apêndice C. Portas Comuns
Índice Remissivo
crackers
definição, 7
cupsd, 35
Símbolos
802.11x, 102
e segurança, 102
ética do hacker, 7
A
atacantes e riscos, 7
atualizações
(Ver erratas de segurança)
auditoria de arquivos
ferramentas, 94
B
BIOS
não-equivalentes ao x86
senhas, 22
segurança, 21
senhas, 21
C
CIPE, 54
instalação, 55
personalizando, 58
coletando evidências
(Ver resposta ao incidente)
ferramentas de auditoria de arquivos, 94
dd, 94
file, 94
find, 94
grep, 94
md5sum, 94
script, 93
stat, 94
strings, 94
considerações de segurança
hardware, 101
redes físicas, 101
sem-fio, 102
transmissão de rede, 102
controles, 5
administrativos, 6
físicos, 5
técnicos, 6
convenções
documentos, ii
cracker
hacker de chapéu preto, 7
D
dd
auditoria de arquivos usando, 94
coletando evidências com, 93
Denial of Service - DoS (Negação de Serviço)
distribuídos, 4
DMZ
(Ver Zona Desmilitarizada (De-Militarized Zone))
(Ver networks)
E
equipe de resposta a emergências de computador, 92
erratas de segurança, 15
aplicando alterações, 17
através do site de erratas da Red Hat, 16
quando reinicializar, 17
via Red Hat Network, 15
exploits comuns e ataques, 107
tabela, 107
F
Ferramenta de Configuração dos Serviços, 36
ferramentas de comunicação
seguras, 38
GPG, 38
OpenSSH, 38
file
auditoria de arquivos usando, 94
find
auditoria de arquivos usando, 94
firewalls, 67
pessoal, 37
recursos adicionais, 74
tipos, 67
FTP
acesso anônimo, 48
apresentando, 47
banner de saudação, 47
contas de usuário, 49
TCP wrappers e, 49
upload anônimo, 48
vsftpd, 47
126
G
K
gestores de início
GRUB
senha protegendo, 22
LILO
senha protegendo, 23
segurança, 22
grep
auditoria de arquivos usando, 94
Kerberos
NIS, 45
H
M
hacker de chapéu b ranco
(Ver hackers)
hacker de chapéu cinza
(Ver hackers)
hacker de chapéu preto
(Ver crackers)
hackers
chapéu branco, 7
chapéu cinza, 7
chapéu preto
(Ver cracker)
definição, 7
hardware, 101
e segurança, 104
estações de trabalho, 104
laptops, 104
servidores, 104
md5sum
auditoria de arquivos usando, 94
módulos de autenticação plugáveis (pluggable authentication modules - PAM)
forçando uma senha forte, 27
I
idade da senha, 28
IDS
(Ver sistemas de detecção de invasão)
introdução, i
categorias, usando este manual, i
outros manuais do Red Hat Enterprise Linux, i
tópicos, i
ip6tables, 73
IPsec, 60
configuração, 62
máquina-a-máquina, 61
instalando, 60
máquina-a-máquina, 61
rede-a-rede, 62
iptables, 68
e DMZs, 72
recursos adicionais, 74
usando, 69
L
lpd, 35
lsof, 50
N
Nessus, 80
Netfilter, 68
recursos adicionais, 74
Netfilter 6, 73
netstat, 50
NFS, 45
e Sendmail, 50
erros de sintaxe, 45
planejamento de rede, 45
Nikto, 81
NIS
apresentando, 43
IPTables, 44
Kerberos, 45
nome de domínio do NIS, 43
planejando a rede, 43
portas estáticas, 44
securenets, 44
nmap, 50, 79
versão linha de comando, 80
O
OpenSSH, 38
scp, 38
sftp, 38
ssh, 38
127
P
plano de resposta ao incidente, 91
portas
comuns, 111
monitorando, 50
portas comuns
tabela, 111
portas de comunicação, 111
portmap, 35
e IPTables, 42
e TCP wrappers, 42
post-mortem, 93
Q
questões legais, 92
R
redes, 101
comutadores, 102
e segurança, 101
hubs, 102
segmentação, 104
sem-fio, 102
zonas desmilitarizadas (de-militarized zones DMZs), 104
Redes Privadas Virtuais (Virtual Private Networks),
53
CIPE, 54
IPsec, 60
configuração, 62
instalando, 60
máquina-a-máquina, 61
Redes Wi-Fi
(Ver 802.11x)
reportando o incidente, 97
resposta ao incidente
coletando evidências
usando o dd, 93
coletando informação pós-infração, 94
criando um plano, 91
definição de, 91
e questões legais, 92
equipe de resposta a emergências de computador
(computer emergency response team - CERT), 92
implementação, 93
introduzindo, 91
investigação, 93
post-mortem, 93
reportando o incidente, 97
restaurando e recuperando recursos, 96
restaurando e recuperando recursos, 96
consertando o sistema (patching), 96
reinstalando o sistema, 96
riscos
consertos e erratas, 9
estações de trabalho e PCs, 10, 10
aplicações, 10
portas abertas, 8
redes, 8
arquiteturas, 8
servidores, 8
administração desatenta, 9
serviços inseguros, 9
root, 30
desativar acesso, 30
limitar acesso, 33
com Administrador de Usuários, 33
e o su, 33
e o sudo, 34
métodos de desativação, 30
alterar a shell root, 32
com PAM, 32
impossibilitar autenticações SSH, 32
permitindo acesso, 30
RPM
checar assinatura GPG, 16
e detecção de intrusão, 86
importando a chave GPG, 16
S
segurança da estação de trabalho, 21
avaliando
BIOS, 21
comunicações, 21
controle administrativo, 21
firewalls pessoais, 21
gestores de início, 21
senhas, 21
BIOS, 21
gestores de início
senhas, 22
segurança da senha, 24
e PAM, 27
em uma empresa, 27
ferramentas de auditoria, 28
Crack, 28
John the Ripper, 28
Slurpie, 28
forçando, 27
idade, 28
metodologia, 27
senhas fortes, 25
segurança do servidor
FTP, 47
acesso anônimo, 48
banner de saudação, 47
128
contas de usuário, 49
TCP wrappers e, 49
upload anônimo, 48
vsftpd, 47
NFS, 45
erros de sintaxe, 45
planejamento de rede, 45
NIS, 43
IPTables, 44
Kerberos, 45
nome de domínio do NIS, 43
planejando a rede, 43
portas estáticas, 44
securenets, 44
portas
monitorando, 50
portmap, 42
Sendmail, 49
e NFS, 50
limitando DoS, 50
Servidor HTTP Apache, 46
diretivas, 46
segurança cgi, 47
TCP wrappers, 39
alertas de ataque, 40
banners, 39
registro, 40
visão geral da, 39
xinetd, 41
gerenciando recursos com, 41
prevenindo DoS (recusa de serviço) com, 41
SENSOR armadilha, 41
segurança sem-fio, 102
802.11x, 102
sendmail, 35
apresentando, 49
e NFS, 50
limitando DoS, 50
senhas
dentro de uma empresa, 27
Servidor HTTP Apache
apresentando, 46
diretivas, 46
segurança cgi, 47
serviços, 50
serviços de co-locação, 104
serviços de rede, 35
identificando e configurando, 35
riscos, 35
denial-of-service (negação de serviço), 35
sobrecarregamento do buffer, 35
vulnerabilidade do script, 35
serviços inseguros, 36
rsh, 37
Telnet, 37
vsftpd, 37
Shell EFI
segurança
senhas, 22
sistema básico de input e output
(Ver BIOS)
sistemas de detecção de invasão, 85
baseado em rede, 88
Snort, 90
baseado no servidor, 85
definindo, 85
e arquivos de registro, 85
Gestor de Pacotes RPM (RPM), 86
tipos, 85
Tripwire, 86
Snort, 90
sshd, 35
stat
auditoria de arquivos usando, 94
strings
auditoria de arquivos usando, 94
su
e root, 33
sudo
e root, 34
T
TCP wrappers
alertas de ataque, 40
banners, 39
e FTP, 49
e portmap, 42
registro, 40
tipos de firewall, 67
filtro de pacotes, 67
proxy, 67
tradução do endereço da rede (network address
translation - NAT), 67
topologias de rede, 101
canal linear (linear bus), 101
estrela (star), 101
ring, 101
Tripwire, 86
U
usuário root
(Ver root)
129
V
visão geral, 1
visão geral de segurança, 1
conclusão, 6
controles
(Ver controles)
definindo segurança em computadores, 1
Denial of Service - DoS (Negação de Serviço), 4
evolução da segurança em computadores, 1
vírus, 4
VLAD the Scanner, 81
VPN, 53
vulnerabilidades
avaliando com Nessus, 80
avaliando com Nikto, 81
avaliando com Nmap, 79
avaliando com o VLAD the Scanner, 81
estimativa, 77
definindo, 78
estabelecendo uma metodologia, 79
testes, 78
vírus
trojans, 4
X
xinetd, 35
gerenciando recursos com, 41
prevenindo DoS (recusa de serviço) com, 41
SENSOR armadilha, 41
Z
Zona Desmilitarizada (De-Militarized Zone), 72
Considerações finais
Os manuais são escritos no formato DocBook SGML versão 4.1. Os formatos HTML e PDF são produzidos usando stylesheets DSSSL personalizadas e scripts jade wrapper personalizados. Os arquivos
SGML do DocBook são escritos em Emacs com o auxílio do modo PSGML.
Garrett LeSage criou as imagens de alerta (nota, dica, importante, atenção e aviso). Elas podem ser
distribuídas livremente com a documentação da Red Hat.
A Equipe de Documentação de Produtos da Red Hat Linux é composto pelas seguintes pessoas:
Sandra A. Moore — Escritora / Mantenedora Principal do Guia de Instalação para as Arquiteturas
x86, Itanium™ e AMD64 do Red Hat Enterprise Linux; Escritora / Mantenedora Principal do Guia de
Instalação para as Arquiteturas IBM® eServer™ iSeries™ e IBM® eServer™ pSeries™ do Red Hat
Enterprise Linux; Escritora contribuinte do Guia Passo a Passo do Red Hat Enterprise Linux
Tammy Fox — Escritora Principal/Mantenedora do Guia de Administração do Sistema do Red Hat
Enterprise Linux; Escritora contribuinte do Guia de Instalação para as Arquiteturas x86, Itanium™
e AMD64 do Red Hat Enterprise Linux; Escritora contribuinte do Guia de Segurança do Red Hat Enterprise Linux; Escritora contribuinte do Guia Passo a Passo do Red Hat Enterprise Linux; Escritora
Principal/Mantenedora dos scripts e stylesheets personalizados do DocBook
Edward C. Bailey — Escritor Principal/Mantenedor do Introdução à Administração de Sistemas Red
Hat Enterprise Linux; Escritor Principal/Mantenedor das Notas de Versão; Escritor contribuinte do
Guia de Instalação para as Arquiteturas x86, Itanium™ e AMD64 do Red Hat Enterprise Linux
Johnray Fuller — Escritor / Mantenedor Principal do Guia de Referência do Red Hat Enterprise
Linux; Co-escritor e co-mantenedor do Guia de Segurança do Red Hat Enterprise Linux; Escritor
contribuinte do Introdução à Administração de Sistemas Red Hat Enterprise Linux
John Ha — Escritor / Mantenedor Principal do Configurando e Administrando um Cluster do Red
Hat Cluster Suite; Escritor / Mantenedor Principal do Glossário da Red Hat; Escritor / Mantenedor
Principal do Guia de Instalação para as Arquiteturas IBM® S/390® e IBM® eServer™ zSeries® do
Red Hat Enterprise Linux; Co-escritor/co-mantenedor do Guia de Segurança do Red Hat Enterprise
Linux; Escritor contribuinte do Introdução à Administração de Sistemas Red Hat Enterprise Linux;
Escritor contribuinte do Guia Passo a Passo do Red Hat Enterprise Linux
A Equipe de Internacionalização da Red Hat é composta pelas seguintes pessoas:
Jean-Paul Aubry — traduções para o Francês
David Barzilay — traduções para o Português Brasileiro
Bernd Groh — traduções para o Alemão
James Hashida — traduções para o Japonês
Michelle Ji-yeen Kim — traduções para o Coreano
Yelitza Louze — traduções para o Espanhol
Noriko Mizumoto — traduções para o Japonês
Nadine Richter — traduções para o Alemão
Audrey Simons — traduções para o Francês
Francesco Valente — traduções para o Italiano
Sarah Saiying Wang — traduções para o Chinês Simplificado
Ben Hung-Pin Wu — traduções para o Chinês Tradicional
132

Documentos relacionados

Red Hat Enterprise Linux 6 Guia de Segurança

Red Hat Enterprise Linux 6 Guia de Segurança um ambiente de informática protegido para o centro de dados, local de trabalho e lar. Com conhecimento administrativo adequado, vigilância e ferramentas, os sistemas com Linux podem ser tanto funci...

Leia mais