1
FACULDADE SALESIANA DE VITÓRIA
PÓS-GRADUAÇÃO EM SEGURANÇA DE
REDES DE COMPUTADORES
CRÍSTIAN ALVES SILVA
GLAUCO ALVES FONSECA
SISTEMA DE DETECÇÃO DE INTRUSOS
PARA REDES LOCAIS
VITÓRIA
2007
2
CRÍSTIAN ALVES SILVA
GLAUCO ALVES FONSECA
SISTEMA DE DETECÇÃO DE INTRUSOS
PARA REDES LOCAIS
Monografia apresentada ao Curso de Pósgraduação
em
Segurança
de
Redes
de
Computadores da Faculdade Salesiana de
Vitória, como requisito parcial para obtenção
do título de Especialista em Segurança de
Redes de Computadores.
Orientador: Prof. M. Sc. Sérgio Teixeira
VITÓRIA
2007
3
Dados Internacionais de Catalogação-na-publicação (CIP)
(Biblioteca da Faculdade Salesiana de Vitória, Espírito Santo, Brasil)
S586s
Silva, Crístian, 1977
Sistema de Detecção de Intrusos para Redes Locais / Crístian Alves
Silva, Glauco Alves Fonseca. – 2007.
91 f. : il.
Orientador: Sérgio Teixeira.
Monografia (pós-graduação em Segurança de Redes de
Computadores) – Faculdade Salesiana de Vitória.
1. Redes de Computadores – Segurança. 2. Sistema de Detecção de
intrusos. 3. Sofware livre. I. Fonseca, Glauco Alves. II. Teixeira, Sérgio.
III. Faculdade Salesiana de Vitória. IV. Título.
CDU: 004.7
4
CRÍSTIAN ALVES SILVA
GLAUCO ALVES FONSECA
SISTEMA DE DETECÇÃO DE INTRUSOS
PARA REDES LOCAIS
Monografia apresentada ao Curso de Pós-graduação em Segurança de Redes de
Computadores da Faculdade Salesiana de Vitória, como requisito parcial para obtenção do
título de Especialista em Segurança de Redes de Computadores.
Aprovada em 9 de agosto de 2007.
COMISSÃO EXAMINADORA
______________________________________
Prof. M. Sc. Sérgio Teixeira
Orientador
______________________________________
Prof. D.Sc. Tânia Barbosa Salles Gava
Co-orientador
______________________________________
Prof. M. Sc. Ádrian Bonfá Drago
Faculdade Salesiana de Vitória
5
Dedico este trabalho primeiramente a Deus que me deu
forças para chegar até aqui e a minha família que sempre me
incentivou para que buscasse novos conhecimentos.
6
AGRADECIMENTOS
A minha família pela compreensão no período de ausência, ao Grupo São Bernardo que
patrocinou todo curso, aos meus amigos que me ajudaram nessa caminhada, enfim, a todos
que direta ou indiretamente contribuíram para que eu pudesse realizar mais esta etapa da
minha vida.
7
“As coisas que importam mais nunca devem ser colocadas à mercê das coisas que importam
menos.”
(GOETHE)
8
RESUMO
Este trabalho apresenta uma proposta de um modelo de sistema de detecção de intrusos (IDS)
para rede local (LAN) com software livre, que visa autenticar todas as máquinas ativas na
rede, minimizando o risco de acesso indevido. Este sistema busca atingir um nível mais
elevado de segurança para as empresas, com um custo acessível.
Palavras-chave: Redes de Computadores – Segurança, Sistema de Detecção de intrusos e
software livre.
9
ABSTRACT
This work presents a proposal of a model of Intrusion Detection System (IDS) for Local Area
Network (LAN) with free software, that it aims at to legalize all the active machines in the
net, minimizing the risk of improper access, offering a raised level more of security for
companies, with an accessible cost thus allowing, the insertion in this context small business
companies.
Keywords: Computer networks - Security, Intrusion Detection System and free software.
10
LISTA DE FIGURAS
Figura 1: Classes de Endereços. ...............................................................................................27
Figura 2: Mecanismos de Controle de Acesso .........................................................................46
Figura 3: Método de criptografia DES .....................................................................................51
Figura 4: Equação de criptografia RSA....................................................................................53
Figura 5: Representação do MD5............................................................................................. 54
Figura 6: Funcionamento ssh.................................................................................................... 56
Figura 7: Modelo de seqüência de fluxo do IDS......................................................................64
11
LISTA DE QUADROS
Quadro 1: O quadro Ethernet ................................................................................................... 23
Quadro 2: Pilha TCP/IP............................................................................................................ 25
Quadro 3: Classes de endereços IP...........................................................................................27
Quadro 4: Blocos de Endereços Reservados ............................................................................ 28
Quadro 5: Exemplo de um endereço de classe C .....................................................................30
Quadro 6: Apagar periodicamente arquivos mais velhos que 30 dias...................................... 36
Quadro 7: Função em Shell Script para retornar a data anterior, levando em conta o mês e ano
.................................................................................................................................................. 38
Quadro 8: Verificando se o serviço sshd está rodando.............................................................65
Quadro 9: Verificando se o serviço sshd está parado...............................................................66
Quadro 10: Iniciando o serviço sshd ........................................................................................66
Quadro 11: Arquivo de configuração do servidor dhcp ...........................................................67
Quadro 12: Arquivo dhcp.lst ....................................................................................................68
Quadro 13: Script de geração do arquivo dhcp.lst ...................................................................69
Quadro 14: Exemplo do arquivo temporário com o quadro endereços IP ............................... 70
Quadro 15: Arquivo máquinas_ativas.conf..............................................................................70
Quadro 16: Exemplo do arquivo máquinas_ativas.conf com uma máquina desativada na rede
.................................................................................................................................................. 70
Quadro 17: Exemplo do arquivo máquinas_ativas.conf com uma máquina ativa na rede.......71
Quadro 18: Saída do comando ping por broadcast...................................................................72
Quadro 19: Filtrando o conteúdo da tabela arp ........................................................................72
Quadro 20: Gerando um par de chaves publica/privada .......................................................... 73
Quadro 21: Copiando a chave pública para o servidor............................................................. 74
Quadro 22: Exemplo de como mostrar a rota dos pacotes ICMP com o comando ping..........85
Quadro 23: Os tipos básicos de ping ........................................................................................ 86
Quadro 24: Comando arp ......................................................................................................... 87
Quadro 25: Exemplo do comando arp -d.................................................................................. 87
Quadro 26: Exemplo do comando arp -s .................................................................................. 87
Quadro 27: Listar as interfaces e seus endereços .....................................................................88
Quadro 28: Configurar e levantar uma interface com um determinado IP ..............................88
Quadro 29: Desabilitar uma interface.......................................................................................88
Quadro 30: Configurar um "alias" em uma interface, juntamente com outro endereço IP...... 88
12
Quadro 31: Mudar a MTU de uma interface ............................................................................89
Quadro 32: Configurar placa com uma conexão ponto-a-ponto .............................................. 89
Quadro 33: Colocar e retirar uma interface do modo Promíscuo.............................................89
Quadro 34: Alterar o endereço MAC da placa.........................................................................89
Quadro 35: Extrair a 4ª linha de um ficheiro............................................................................90
Quadro 36: Substituições de texto (substituir as vírgulas [,] por hífens[-]) ............................. 90
Quadro 37: Pegar somente o endereço de retorno....................................................................90
Quadro 38: Comando cat.......................................................................................................... 90
Quadro 39: Procurar uma frase em todos os arquivos de um diretório .................................... 91
Quadro 40: Outras variações do comando grep .......................................................................91
Quadro 41: Procurar em um arquivo as linhas que contenham uma palavra OU outra palavra
.................................................................................................................................................. 91
Quadro 42: Procurar em todo arquivo ......................................................................................91
13
SUMÁRIO
1 Introdução...................................................................................................... 16
1.1 Motivação .................................................................................................................... 17
1.2 Objetivos......................................................................................................................18
1.3 Metodologia ................................................................................................................. 18
1.4 Organização do trabalho............................................................................................ 19
2 Tecnologias e serviços de Redes Locais....................................................... 20
2.1 A evolução da Ethernet............................................................................................... 20
2.2 Endereçamento ........................................................................................................... 22
2.3 O quadro Ethernet ...................................................................................................... 23
2.4 Endereço MAC ............................................................................................................ 24
2.5 O Protocolo TCP/IP .................................................................................................... 24
2.5.1 A Camada de Aplicação.................................................................................... 26
2.5.2 Endereço IP....................................................................................................... 26
2.5.3 Classes de endereços......................................................................................... 27
2.5.4 Classes especiais ............................................................................................... 28
2.6 Subrede ........................................................................................................................29
2.6.1 Máscaras de subrede ......................................................................................... 29
2.6.2 Motivações para criar subredes.........................................................................29
2.6.3 Exemplo de uma subrede .................................................................................. 30
2.7 Address Resolution Protocol ou ARP ....................................................................... 31
2.8 Reverse Address Resolution Protocol ou RARP...................................................... 31
2.9 Protocolo ICMP........................................................................................................... 32
2.10 SSH............................................................................................................................... 32
2.11 DHCP ...........................................................................................................................33
2.11.1 Critérios de atribuição de IPs............................................................................34
2.12 Shell Scripts................................................................................................................. 35
2.12.1 Características...................................................................................................36
2.12.2 Alguns exemplos de scripts ..............................................................................36
3 Ameaças À segurança de redes locais ......................................................... 39
3.1 Engenharia Social ....................................................................................................... 41
3.1.1 As vítimas de Engenharia Social ......................................................................41
3.1.2 Técnicas de Engenharia Social .........................................................................42
14
3.1.3 Qualificação dos Ataques ................................................................................. 43
3.1.4 Métodos Utilizados pelo atacante .....................................................................43
3.1.5 Figuras da Engenharia Social ...........................................................................43
4 Soluções de segurança em redes locais........................................................ 45
4.1 Autenticação................................................................................................................ 45
4.2 Integridade .................................................................................................................. 46
4.3 Disponibilidade ........................................................................................................... 47
4.4 Não-repúdio................................................................................................................. 47
4.5 Privacidade.................................................................................................................. 48
4.6 Access Control List ..................................................................................................... 49
4.7 Capabilities.................................................................................................................. 49
4.8 Access Control Matriz................................................................................................ 49
4.9 Criptografia................................................................................................................. 49
4.9.1 Criptografia Simétrica....................................................................................... 50
4.9.2 Criptografia Assimétrica...................................................................................52
4.10 Secure Hashes e Message Digests ..............................................................................53
4.11 Assinatura Digital ....................................................................................................... 54
4.12 SSH............................................................................................................................... 56
4.13 PGP .............................................................................................................................. 57
4.13.1 Como funciona.................................................................................................. 57
4.14 Kerberos ...................................................................................................................... 58
4.14.1 O que faz:.......................................................................................................... 58
4.15 Snort............................................................................................................................. 59
4.16 O que são sistemas de detecção de intrusos?............................................................59
4.16.1 Principais tipos de IDS...................................................................................... 60
4.16.2 IDS baseado em rede......................................................................................... 60
4.16.3 IDS baseado em host......................................................................................... 61
5 Uma proposta de detecção de intrusos para redes locais .......................... 63
5.1 Processo de Inicialização............................................................................................ 64
5.1.1 Preparação dos arquivos Globais......................................................................65
5.1.2 Detalhamento .................................................................................................... 65
5.1.3 Formatação do arquivo do servidor dhcp. ........................................................ 66
5.2 Processo de Varredura ............................................................................................... 70
5.3 Primeira Validação..................................................................................................... 71
15
5.4 Segunda validação ...................................................................................................... 73
5.4.1 Servidor de Varredura....................................................................................... 73
5.5 Resposta ....................................................................................................................... 75
5.6 Auditoria...................................................................................................................... 76
6 Considerações Finais e Trabalhos Futuros................................................. 77
7 Referências bibliográficas ............................................................................ 78
8 APÊNDICE .................................................................................................... 81
8.1 Algumas ferramentas úteis ........................................................................................ 81
8.2 Algumas Ferramentas de Administração de Sistemas ............................................ 89
16
1 INTRODUÇÃO
Atualmente, as redes locais de computadores estão cada vez mais presentes no dia-a-dia das
empresas, governos, faculdades e na vida dos cidadãos. O grande número de serviços de
armazenamento de informações, e-mails, chats, discos virtuais, dentre outros disponíveis,
estão obrigando as empresas a buscarem alternativas de segurança da informação, pois o uso
indevido das informações contidas nesses serviços pode causar prejuízos financeiros.
Por meio das redes locais, os computadores têm acesso a informações de outras redes ou
equipamentos em todo o mundo. Caso essa comunicação não seja monitorada, poderá ocorrer
acesso indevido aos dados e sistemas das empresas. Por exemplo, o acesso a determinados
scripts maliciosos em páginas da web poderia ocasionar danos e perdas de informação. O
acesso ou a tentativa de acesso indevido originário da Internet às redes locais já é algo de
preocupação por parte das empresas, entretanto, o acesso indevido originário da própria rede
local é algo que ainda requer uma maior atenção e cuidados por parte dos administradores das
redes locais.
Segurança de Rede de computadores é um assunto em constante mudança, pois a todo
momento surgem novas formas de invasão e também novas tecnologias para evitar o acesso
indevido. Os administradores de rede precisam fazer com que a rede tenha o nível de
segurança necessário para proteger os ativos vitais, permitindo ao mesmo tempo o
funcionamento ininterrupto das atividades diárias. Você pode até alcançar a proteção ideal ao
planejar uma implementação segura ou ao proteger uma implementação existente, mas a
segurança só pode ser garantida com o passar do tempo através da revisão de configurações,
diretivas e procedimentos.
O estudo das melhores práticas deve ser analisado para se obter, em cada caso, a melhor
utilização dos recursos disponíveis para prevenir possíveis problemas de redes (arquitetura,
firewalls, tráfego e outros). Certas vezes um administrador precisa ser menos rígido com
certos princípios de segurança para poder atender a necessidades comerciais, mas isso deve
ser feito apenas com um entendimento claro das possíveis vulnerabilidades, ameaças, ataques
e riscos envolvidos nessa decisão.
17
Sendo assim, quais seriam as possíveis soluções para minimizar os problemas causados por
falhas na segurança?
Em ambientes heterogêneos, em que o fluxo de dados e a quantidade de usuários conectados
ao mesmo PC ou rede forem relativamente grandes, se faz necessária a elaboração de políticas
de segurança. Na formalização dessas políticas ficam claros os padrões de comportamento a
serem seguidos para se evitar a exposição a potenciais riscos.
Com todos esses pontos observados, a rede estará com um nível de segurança aceitável para o
uso, contribuindo para o bem-estar das pessoas e empresas que a utilizam (KUROSE / ROSS,
2006).
“... a segurança de rede é conseguida por meio de um ciclo
contínuo de proteção, detecção e reação” (STOLL, 1995)
1.1
MOTIVAÇÃO
Não existe segurança sem proteção física. Um invasor que obtenha acesso físico a uma rede
pode, a partir desse acesso, tentar invadir outros computadores da rede. Todos os potenciais
ataques físicos devem ser considerados de alto risco e atenuados de modo apropriado.
Proteger fisicamente uma rede de computadores não é uma tarefa simples, pois geralmente os
pontos de rede ficam expostos e acessíveis aos usuários finais. Para atenuar esta ameaça, este
trabalho apresenta uma proposta para restringir o acesso de máquinas não autorizadas à rede.
Segundo o Cert.br (Centro de Estudos, Respostas e Tratamento de Incidentes de Segurança no
Brasil) o total de incidentes reportados ao órgão subiu de 68.000 no ano de 2005 para 197.892
no ano de 2006, o que indica cada vez mais a necessidade da preocupação com as ameaças em
potencial com o meio das redes de computadores.
O alto e constante crescimento de soluções utilizando software livre vem conquistando o
mercado, principalmente na área de segurança da informação, permitindo elaboração de
soluções seguras a custos bem menores que as soluções proprietárias existentes no mercado.
18
A alta disponibilidade das comunidades de software livre faz surgir soluções de problemas
que causam grande impacto em tempo hábil às necessidades das empresas trazendo alto
índice de satisfação para o usuário final.
1.2
OBJETIVOS
O objetivo deste trabalho é elaborar um modelo de segurança de Sistema de Detecção de
Intrusos (IDS) para rede local que auxilie o administrador a monitorar a autenticidade de
todas as máquinas ativas na rede, utilizando software livre.
1.3
METODOLOGIA
A primeira fase deste trabalho foi buscar e avaliar o máximo possível de material disponível
referente ao assunto em literaturas e busca eletrônica, desde os conceitos básicos de redes até
as ferramentas necessárias para que se tornasse possível a implementação da proposta
apresentada do Sistema de Detecção de Intrusos para Redes Locais.
Após a avaliação de todo material levantado, deu início a fase de elaboração dos scripts para
início dos testes em laboratório, avaliação das ferramentas disponíveis para aliar a teoria à
prática e verificar se realmente as pesquisas realizadas se aplicariam ao modelo apresentado.
Durante este processo em que foram identificados todos os pontos a serem implementados no
modelo a ser elaborado, surgiu a proposta de um modelo de sistemas de detecção de intrusos
para redes locais. Foram detalhadas todas as etapas necessárias para que o modelo proposto
pudesse atingir seu objetivo inicial. A cada obstáculo ocorrido houve necessidade de buscas
na web e novas pesquisas na literatura disponível.
A terceira e última fase foi a organização das idéias do modelo proposto, baseada na
avaliação em laboratório das ferramentas disponíveis, fazendo as considerações necessárias e
agregando todo o material necessário para embasamento da proposta, para que pudesse obter
uma seqüência lógica das rotinas descritas.
19
1.4
ORGANIZAÇÃO DO TRABALHO
Este trabalho é composto por sete capítulos, cuja estrutura encontra-se segmentada da
seguinte maneira:
O capítulo 1 faz uma pequena introdução ao mundo da segurança da informação colocando os
pontos mais relevantes. É subdivido em motivação, objetivos, metodologias e a organização
do trabalho.
O capítulo 2 mostra os serviços e tecnologias que as Redes Locais podem oferecer para seus
usuários. Apresenta os conceitos, evoluções e aplicações existentes atualmente no mercado.
O capítulo 3 mostra as principais ameaças à segurança de uma rede local, explica alguns
conceitos utilizados nesse submundo, principais tipos de ataques que podem ocorrer,
engenharia social e suas características.
O capitulo 4 mostra as principais soluções em segurança em uma rede local. Apresenta as
tecnologias e soluções disponíveis para segurança em redes locais.
O capitulo 5 apresenta uma proposta de detecção de intrusos para redes locais, mostrando
passo a passo cada detalhe de implementação, juntamente com propostas soluções futuras que
venham a acrescentar a proposta.
O capítulo 6 apresenta as considerações finais e algumas sugestões de trabalhos futuros que
possam vir a ser realizados dando continuidade e aperfeiçoamento à proposta apresentada.
O capítulo 7 apresenta todas as referências bibliográficas utilizadas durante a realização deste
trabalho e que serviram como base para o desenvolvimento do trabalho proposto.
20
2 TECNOLOGIAS E SERVIÇOS DE REDES LOCAIS
Boa parte das redes locais existentes na atualidade utilizam a tecnologia Ethernet. Iniciamos a
breve apresentação dessa tecnologia perguntando: qual é o problema que a Ethernet tenta
resolver? Em 1973, quando Bob Metcalfe da Xerox inventou a Ethernet, sua motivação era
conectar estações de trabalho avançadas entre si e com impressoras laser em alta velocidade.
Nessa época, conexões entre computadores eram possíveis, mas utilizando apenas baixas
taxas de transmissão. A revolução proporcionada pela invenção de Metcalfe foi permitir a
comunicação em alta velocidade, a um custo relativamente baixo. Por “alta velocidade”,
entende-se uma taxa de transmissão maior que 1 Mbps, considerada alta na época. Hoje, é
corriqueiro utilizar Ethernet a velocidades de 100 Mbps e 1 Gbps (1000 Mbps) e a versão com
velocidade de 10 Gbps está em fase de conclusão (SPURGEON, 2000).
Por outro lado, o atributo de alta velocidade da tecnologia impôs uma restrição de alcance: só
seria possível conectar equipamentos que estivessem distantes um do outro de, no máximo,
algumas centenas de metros. Nesse momento, nascia então o conceito de Rede Local.
2.1
A EVOLUÇÃO DA ETHERNET
Embora os princípios de operação sejam os mesmos, existem muitas variações da tecnologia
Ethernet. Três necessidades levaram à existência dessas variações: maior velocidade, melhor
facilidade de uso e padronização. Três Mbps (a velocidade original da Ethernet de Metcalfe)
era considerada uma velocidade alta em 1973, mas o crescimento do uso de redes fez com que
velocidades cada vez maiores fossem necessárias para carregar o tráfego de aplicações
modernas. Hoje em dia, usuários navegam na Internet, participam de videoconferências,
recebem fluxos de áudio etc., necessitando de maior velocidade nas redes locais.
Outro exemplo demonstra claramente a necessidade de redes locais de maior velocidade: a
tecnologia de discos mudou muito de 1973 para cá. Há trinta anos, o acesso a um disco
remoto teria como gargalo a velocidade do próprio disco. Hoje, os discos são muito mais
rápidos e o acesso a um disco remoto satura uma rede de 10 Mbps, velocidade ainda
largamente utilizada em redes locais. Ao longo das últimas três décadas, a tecnologia Ethernet
tem sido oferecida em velocidades de 1 Mbps, 3 Mbps, 10 Mbps, 100 Mbps e 1 Gbps (1000
21
Mbps). Parcialmente em conseqüência do aumento de velocidade, várias mídias físicas têm
sido utilizadas para carregar tráfego Ethernet: cabos coaxiais grossos, cabos coaxiais finos,
vários tipos de pares trançados e fibra ótica.
A segunda força que impeliu mudanças na tecnologia Ethernet diz respeito à facilidade de
uso e custo. O Ethernet original usava um cabo coaxial grosso com duas desvantagens:
primeiro, era de difícil instalação; segundo, o cabo coaxial corria de equipamento em
equipamento, fazendo com que qualquer interrupção no cabo resultasse na parada total da
rede inteira. Para mitigar esses efeitos outras mídias foram utilizadas. Primeiro o cabo coaxial
fino, facilmente dobrável, resolveu a questão de instalação. Segundo, para resolver a questão
de interrupção na mídia, criou-se um equipamento chamado repetidor com o objetivo de
interconectar equipamentos por meio de par trançado. Dessa forma, a interrupção de sinal em
um par trançado só afetaria a comunicação com um equipamento e não na rede inteira. Para
possibilitar velocidades mais altas, várias “categorias” de pares trançados podem ser
utilizadas. Finalmente, a mídia de fibra ótica foi introduzida para permitir maiores distâncias,
maiores velocidades e devido a sua imunidade a ruídos.
A terceira força motriz da mudança na tecnologia Ethernet é a padronização. A Xerox
patenteou Ethernet em 1978. Porém, para promover seu uso mais massificado, a Xerox se
aliou à DEC e à Intel em 1980 para formar o padrão Ethernet de 10 Mbps chamado “DIX”.
Num esforço paralelo, o IEEE estava, na mesma época, padronizando tecnologias de redes
locais e metropolitanas sob o número 802. A tecnologia Ethernet foi padronizada em 1985
pelo IEEE sob padrão número 802.3. Infelizmente, o padrão DIX e o padrão IEEE 802.3 são
ligeiramente diferentes. Com o tempo, outros padrões foram criados para acomodar
velocidades crescentes e mídias variadas. Numa seção posterior, discutiremos a questão das
variações do Ethernet mais detalhadamente.
22
2.2
ENDEREÇAMENTO
Pode-se dizer que Ethernet oferece a comunicação entre equipamentos de uma mesma rede
física sem uso de conexões e com serviços unicast 1 (um quadro vai para um destino único),
multicast2 (um quadro vai para múltiplos destinos) e difusão (um quadro vai para todos os
destinos).
Para concretizar esses serviços cada entidade participante na comunicação possui um
endereço único chamado “endereço MAC” ou “endereço físico”. O significado da abreviação
“MAC” será explicado adiante. Os endereços MAC possuem 48 bits e são únicos por
construção; isso significa que, quando um fabricante constrói uma placa de rede Ethernet, ela
recebe um endereço único determinado por hardware. O conjunto de endereços MAC forma
um espaço plano (flat address space). Em outras palavras, não se utilizam subcampos do
endereço para determinar a localização geográfica ou para ajudar no encaminhamento da
informação. A placa de rede de endereço 00-07-95-03-FA-89 (em hexadecinal) poderia estar
no Brasil, enquanto a placa com o próximo endereço 00-07-95-03-FA-8A poderia estar em
outra rede local, na China.
No momento em que duas estações conectadas à rede querem conversar, a fonte conhece o
endereço IP da estação destino, mas não seu endereço MAC; o mapeamento de endereços IP
para endereços MAC é feito com o protocolo ARP (Address Resolution Protocol).
A Ethernet permite que quadros sejam enviados para endereços especiais. O endereço FF-FFFF-FF-FF-FF é o endereço de difusão: o quadro enviado para tal endereço é recebido por
todas as estações. Além do mais, cada interface de rede (placa de rede) pode ser configurada
para receber quadros pertencentes a um grupo multicast. Os endereços multicast iniciam com
um bit igual a 1.
1
2
Unicast – Endereçamento para um pacote é feito a um único destino
Multicast – entrega de informação para múltiplos destinatários simultaneamente usando a estratégia mais
eficiente onde as mensagens só passam por um link uma única vez e somente são duplicadas quando o link para
os destinatários se divide em duas direções
23
2.3
O QUADRO ETHERNET
O quadro do protocolo Ethernet é mostrado na Figura seguinte.
64 bits
48 bits
48 bits
Endereço
Endereço
destino
de origem
Preâmbulo
16 bits
46 a 1500
bytes
32 bits
Seqüência de
Tipo
Dados
verificação
de quadro
Quadro 1: O quadro Ethernet
O conhecimento da organização do quadro não é importante para o administrador de rede.
Nosso objetivo é destacar os seguintes pontos:
•
O quadro contém os endereços físicos (MAC) das estações de origem e de destino do
quadro. Portanto, Ethernet estabelece comunicação quadro-a-quadro, sem necessidade
de estabelecer conexões prévias entre as estações.
•
Ao transportar pacotes IPv4, o campo “Tipo” receberá o valor hexadecimal 0x0800;
para IPv6, o tipo é 0x86DD; para ARP, é 0x0806. Outros valores possíveis podem ser
verificados em http://www.iana.org/assignments/ethernet-numbers.
•
O tamanho mínimo do quadro (sem incluir o preâmbulo) é de 64 bytes e o tamanho
máximo é de 1518 bytes.
•
O quadro possui um campo de verificação (chamado Frame Check Sequence - FCS ou
Cyclic Redundancy Check - CRC), que permite que a estação destino detecte erros na
transmissão. Ethernet utiliza um protocolo (MAC) do tipo “melhor esforço”, o que
significa que, embora detecte erros, sua recuperação é deixada para protocolos de
níveis superiores (TCP, por exemplo).
24
2.4
ENDEREÇO MAC
Conceitualmente, uma rede Ethernet simples consiste de um barramento único que todas as
estações querem acessar para realizar suas transmissões. Como esse meio é único e
compartilhado, apenas uma estação pode transmitir (a comunicação é half-duplex). Deve,
portanto, haver uma forma de organizar os acessos tal que cada estação possa, eventualmente,
transmitir um quadro. O responsável por esse controle chama-se Media Access Control
(MAC).
Ethernet usa um mecanismo bastante simples para realizar o acesso; esse mecanismo recebeu
o nome de Carrier-Sense Multiple Access with Collision Detection (CSMA-CD) ou Acesso
Múltiplo Usando Detecção de Portadora e Detecção de Colisão e funciona da seguinte
maneira: quando uma estação quer transmitir informação no meio compartilhado, ela espera
até verificar que a portadora do meio está ausente; isso indica que ninguém está transmitindo
neste momento. Ela então inicia sua transmissão. Como outra estação pode ter tomada a
mesma decisão, é possível que haja uma colisão, em que as transmissões interferem uma com
a outra, embaralhando a informação no meio. Cada estação detecta a colisão e pára de
transmitir. As estações esperam, então, certo tempo aleatório antes de tentar novamente.
Eventualmente, cada estação poderá transmitir sem interferência das demais.
Colisões são eventos absolutamente normais numa rede Ethernet, embora um excesso de
colisões possa diminuir sensivelmente o desempenho da rede.
2.5
O PROTOCOLO TCP/IP
Os protocolos para internet formam o grupo de protocolos de comunicação que implementam
a pilha de protocolos sobre os quais a internet e a maioria das redes comerciais funcionam.
Eles são algumas vezes chamados de "protocolos TCP/IP", já que os dois protocolos mais
importantes desse modelo são: o protocolo TCP - Transmission Control Protocol (Protocolo
de Controle de Transmissão) - e o IP - Internet Protocol (Protocolo Internet). Esses dois
protocolos foram os primeiros a serem definidos.
25
O modelo OSI descreve um grupo fixo de sete camadas que alguns fornecedores preferem e
que pode ser de certa forma comparado com o modelo TCP/IP. Essa comparação pode causar
confusão ou trazer detalhes mais internos para o TCP/IP. O modelo TCP/IP de
encapsulamento busca fornecer abstração aos protocolos e serviços para diferentes camadas
de uma pilha de estruturas de dados (ou simplesmente pilha).
Uma pilha consiste de quatro camadas:
4 Aplicação
3 Transporte
2 Rede
1 Física
Quadro 2: Pilha TCP/IP
As camadas mais próximas do topo estão logicamente mais perto do usuário, enquanto
aquelas mais abaixo estão logicamente mais perto da transmissão física do dado. Cada
camada tem um protocolo de camada acima e um protocolo de camada abaixo (exceto as
camadas da ponta, obviamente) que podem usar serviços de camadas anteriores ou fornecer
um serviço, respectivamente. Enxergar as camadas como fornecedores ou consumidores de
serviço é um método de abstração para isolar protocolos de camadas acima dos pequenos
detalhes de transmitir bits através de ethernet, e a detecção de colisão enquanto as camadas
abaixo evitam ter de conhecer os detalhes de todas as aplicações e seus protocolos.
Essa abstração também permite que as camadas de cima forneçam serviços que as camadas de
baixo não podem fornecer. Por exemplo, o IP é projetado para não ser confiável e é um
protocolo best effort delivery. Isso significa que toda a camada de transporte deve indicar se
irá ou não fornecer confiabilidade e em qual nível. O UDP fornece integridade de dados (via
um checksum) mas não fornece entrega garantida; já o TCP fornece tanto integridade dos
dados quanto garantia de entrega (retransmitindo até que o destinatário receba o pacote).
26
2.5.1
A CAMADA DE APLICAÇÃO
A camada de aplicação é a camada que a maioria dos programas de rede usa para se
comunicar através de uma rede com outros programas. Processos que rodam nessa camada
são específicos da aplicação; o dado é passado do programa de rede, no formato usado
internamente por essa aplicação, e é codificado dentro do padrão de um protocolo. Alguns
programas específicos são levados em conta nessa camada. Eles provêm serviços que
suportam diretamente aplicações do usuário. Esses programas e seus correspondentes
protocolos incluem o HTTP (navegação na World Wide Web), FTP (transporte de arquivos),
SMTP (envio de e-mail), SSH (login remoto seguro), DNS (pesquisas nome <-> IP) e muitos
outros. Uma vez que o dado de uma aplicação foi codificado dentro de um padrão de um
protocolo da camada de aplicação ele será passado para a próxima camada da pilha IP. Na
camada de transporte, aplicações irão, em sua maioria, fazer uso de TCP ou UDP, e
aplicações servidoras são freqüentemente associadas com um número de porta. Portas para
aplicações servidoras são oficialmente alocadas pela IANA (Internet Assigned Numbers
Authority), mas desenvolvedores de novos protocolos hoje em dia freqüentemente escolhem
os números de portas por eles mesmos. Uma vez que é raro ter mais que alguns poucos
programas servidores no mesmo sistema, problemas com conflito de portas são raros.
Aplicações também geralmente permitem que o usuário especifique números de portas
arbitrários através de parâmetros em tempo de execução. Aplicações cliente conectando para
fora geralmente usam um número de porta aleatório determinado pelo sistema operacional.
2.5.2
ENDEREÇO IP
O endereço IP, de forma genérica, pode ser considerado como um conjunto de números que
representa o local de um determinado equipamento (normalmente computadores) em uma
rede privada ou pública.
Para um melhor uso dos endereços de equipamentos em rede pelas pessoas, utiliza-se a forma
de endereços de domínio, tal como "www.salesiano.com.br". Cada endereço de domínio é
convertido em um endereço IP pelo DNS. Este processo de conversão é conhecido como
resolução de nomes de domínio.
27
2.5.3
CLASSES DE ENDEREÇOS
Originalmente, o espaço do endereço IP foi dividido em poucas estruturas de tamanho fixo
chamados de "classes de endereço". As três principais são as classes A, B e C. Examinando os
primeiros bits de um endereço, o software do IP consegue determinar rapidamente qual a
classe, e logo, a estrutura do endereço.
•
Classe A: Primeiro bit é 0 (zero)
•
Classe B: Primeiros dois bits são 10 (um, zero).
•
Classe C: Primeiros três bits são 110 (um, um, zero).
•
Classe D: (endereço multicast): Primeiros quatro bits são: 1110 (um,um,um,zero)
•
Classe E: (endereço especial reservado): Primeiros quatro bits são 1111
(um,um,um,um)
Figura 1: Classes de Endereços.
A tabela seguinte contém o intervalo das classes de endereços IPs
Classe
A
B
C
D
E
Gama de Endereços
1.0.0.0 até 126.0.0.0
128.0.0.0 até 191.255.0.0
192.0.0.0 até 223.255.255.254
224.0.0.0 até 239.255.255.255
240.0.0.0 até 255.255.255.255
N.ºEndereços por Rede
16 777 216
65 536
256
multicast
multicast reservado
Quadro 3: Classes de endereços IP
28
2.5.4
CLASSES ESPECIAIS
Existem classes especiais na Internet que não são consideradas públicas, i.e., não são
consideradas como endereçáveis, são reservadas, por exemplo, para a comunicação com uma
rede privada ou com o computador local ("localhost").
Blocos de Endereços Reservados:
CIDR Bloco de Endereços
0.0.0.0/8
10.0.0.0/8
14.0.0.0/8
39.0.0.0/8
127.0.0.0/8
128.0.0.0/16
169.254.0.0/16
172.16.0.0/12
191.255.0.0/16
192.0.0.0/24
192.0.2.0/24
192.88.99.0/24
192.168.0.0/16
198.18.0.0/15
223.255.255.0/24
224.0.0.0/4
240.0.0.0/4
255.255.255.255
Descrição
Rede corrente (só funciona
como endereço de origem)
Rede Privada
Rede Pública
Reservado
Localhost
Reservado (IANA)
Zeroconf
Rede Privada
Reservado (IANA)
Documentação
IPv6 para IPv4
Rede Privada
Teste de benchmark de redes
Reservado
Multicasts (antiga rede Classe
D)
Reservado (antiga rede Classe
E)
Broadcast
Quadro 4: Blocos de Endereços Reservados
Referência
RFC 1700
RFC 1918
RFC 1700
RFC 1797
RFC 3330
RFC 3330
RFC 3927
RFC 1918
RFC 3330
RFC 3330
RFC 3068
RFC 1918
RFC 2544
RFC 3330
RFC 3171
RFC 1700
29
2.6
SUBREDE
Uma subrede é uma divisão de uma rede de computadores. A divisão de uma rede grande em
redes menores resulta num tráfego de rede reduzido, administração simplificada e melhor
performance de rede.
Para criar subredes, qualquer máquina tem que ter uma máscara de subrede que define que
parte do seu endereço IP será usada como identificador da subrede e como identificador do
host.
2.6.1
MÁSCARAS DE SUBREDE
Uma máscara de subrede também conhecida como subnet mask ou netmask, é uma bitmask de
32 bits usada para informar os routers.
Normalmente, as máscaras de subrede são representadas com quatro números de 0 a 255
separados por três pontos, ou, menos vulgar, como oito dígitos de um número hexadecimal.
A máscara 255.255.255.0 (0xffffff00 ou 11111111111111111111111100000000), por
exemplo, indica que o terceiro byte do endereço mostra o número de subrede e o quarto
mostra
o
do
sistema
em
questão.
255.255.255.255
(0xffffffff
ou
11111111111111111111111111111111) é usado como endereço para um sistema na parte de
rede sem subredes; os últimos dois bytes indicam apenas o sistema.
2.6.2
MOTIVAÇÕES PARA CRIAR SUBREDES
As subredes não são as únicas formas para ultrapassar problemas de topologia, mas é uma
forma eficaz para ultrapassar esses mesmos problemas ao nível do software do TCP/IP.
As razões topológicas para criar subredes incluem:
•
Ultrapassar limitações de distância. Algum hardware de rede tem limitações de
distância rígidas. Como, por exemplo, o tamanho máximo de um cabo ethernet é de
30
500 metros (cabo grosso) ou 300 metros (cabo fino). O comprimento total de uma
ethernet é de 2500 metros, para distâncias maiores usamos routers de IP. Cada cabo é
uma ethernet separada.
•
Interligar redes físicas diferentes. Os routers podem ser usados para ligar tecnologias
de redes físicas diferentes e incompatíveis.
•
Filtrar tráfego entre redes. O tráfego local permanece na subrede.
•
As subredes também servem outros propósitos organizacionais:
•
Simplificar a administração de redes. As subredes podem ser usadas para delegar
gestão de endereços, problemas e outras responsabilidades.
•
Reconhecer a estrutura organizacional. A estrutura de uma organização (empresas,
organismos públicos, etc.) pode requerer gestão de rede independente para algumas
divisões da organização.
•
Isolar tráfego por organização. Acessível apenas por membros da organização,
relevante quando questões de segurança são levantadas.
•
Isolar potenciais problemas. Se um segmento é pouco viável, podemos fazer dele uma
subrede.
2.6.3
EXEMPLO DE UMA SUBREDE
Tomemos como exemplo um endereço de classe C (sendo x 0 ou 1) e dois bits movidos para a
direita para criar uma subrede:
endereço
C:
máscara:
classe xxxxxxxx.xxxxxxxx.xxxxxxxx.00000000
11111111.11111111.11111111.11000000
Quadro 5: Exemplo de um endereço de classe C
31
Porque acrescentamos dois bits a 1 (um), podemos criar 22 = 4 subredes. Sobram 6 zeros,
logo esta subrede pode endereçar 26 = 64 hosts (menos 2 endereços um para rede outro para
broadcast). A máscara a aplicar é 255.255.255.192, porque 256-64=192.
2.7
ADDRESS RESOLUTION PROTOCOL OU ARP
É um protocolo usado para encontrar um endereço Ethernet (MAC) a partir do endereço IP. O
emissor difunde em broadcast um pacote ARP contendo o endereço IP de outro host e espera
uma resposta com um endereço MAC respectivo. Cada máquina mantém uma tabela de
resolução em cache para reduzir a latência e carga na rede. O ARP permite que o endereço IP
seja independente do endereço Ethernet, mas apenas funciona se todos os hosts o suportarem.
O 'ARP' pode trabalhar com outras camadas de enlace, além do Ethernet e outras camadas de
rede, além do Protocolo IP.
A alternativa para as máquinas que não suportem ARP é um pré-mapeamento (estático) dos
endereços.
Ao processo inverso chama-se RARP (Reverse ARP).
arp é também o nome de um comando Unix que permite consultar e manipular a cache de
ARP do kernel do sistema operativo.
2.8
REVERSE ADDRESS RESOLUTION PROTOCOL OU RARP
Reverse Address Resolution Protocol (RARP) ou Protocolo de Resolução Reversa de
Endereços associa um endereço MAC conhecido a um endereço IP. Permite que os
dispositivos de rede encapsulem os dados antes de enviá-los à rede. Um dispositivo de rede,
como uma estação de trabalho sem disco, por exemplo, pode conhecer seu endereço MAC,
mas não seu endereço IP. O RARP permite que o dispositivo faça uma solicitação para saber
seu endereço IP. Os dispositivos que usam o RARP exigem que haja um servidor RARP
presente na rede para responder às solicitações RARP.
32
2.9
PROTOCOLO ICMP
ICMP, sigla para o inglês Internet Control Message Protocol, é um protocolo integrante do
Protocolo IP, definido pelo RFC 792, e utilizado para fornecer relatórios de erros à fonte
original. Qualquer computador que utilize IP precisa aceitar as mensagens ICMP, e alterar o
comportamento em resposta ao erro relatado. Os gateways devem estar programados para
enviar mensagens ICMP quando receberem datagramas que provoquem algum erro.
(SOARES/COLCHER,1995).
As mensagens ICMP geralmente são enviadas automaticamente em uma das seguintes
situações:
•
Um pacote IP não consegue chegar ao seu destino (i.e. Tempo de vida do pacote
expirado)
•
O Gateway não consegue retransmitir os pacotes na freqüência adequada (i.e.
Gateway congestionado)
•
O Roteador ou Encaminhador indica uma rota melhor para a maquina a enviar
pacotes.
2.10 SSH
Em informática, o Secure Shell ou SSH é, simultaneamente, um programa de computador e
um protocolo de rede que permite a conexão com outro computador na rede, de forma a
executar comandos de uma unidade remota. Possui as mesmas funcionalidades do TELNET,
com a vantagem da conexão entre o cliente e o servidor ser criptografada.
Uma de suas mais utilizadas aplicações é o chamado Tunnelling, que oferece a capacidade de
redirecionar pacotes de dados. Por exemplo, se alguém se encontra dentro de uma instituição
cuja conexão à Internet é protegida por um firewall que bloqueia determinadas portas de
conexão, não será possível, por exemplo, acessar e-mails via POP3, o qual utiliza a porta 110,
nem enviá-los via SMTP, pela porta 25. As duas portas essenciais são a 80 para HTTP e a 443
para HTTPS. Não há necessidade do administrador da rede deixar várias portas abertas, uma
33
vez que conexões indesejadas e que comprometam a segurança da instituição possam ser
estabelecidas pelas mesmas.
Contudo, isso compromete a dinamicidade de aplicações na Internet. Um funcionário ou
aluno que queira acessar painéis de controle de sites, arquivos via FTP ou amigos via
mensageiros instantâneos não terá a capacidade de fazê-lo, uma vez que suas respectivas
portas estão bloqueadas.
Para quebrar essa imposição rígida (mas necessária), o SSH oferece o recurso do Túnel. O
processo se caracteriza por duas máquinas ligadas ao mesmo servidor SSH, que faz apenas o
redirecionamento das requisições do computador que está sob firewall. O usuário envia para o
servidor um pedido de acesso ao servidor pop.xxxxxxxx.com pela porta 443 (HTTPS), por
exemplo. Então, o servidor acessa o computador remoto e requisita a ele o acesso ao
protocolo, retornando um conjunto de pacotes referentes à aquisição. O servidor codifica a
informação e a retorna ao usuário via porta 443. Sendo assim, o usuário tem acesso a toda a
informação que necessita. Tal prática não é ilegal caso o fluxo de conteúdo esteja de acordo
com as normas da instituição.
O SSH faz parte da suíte de protocolos TCP/IP que torna segura a administração remota de
um servidor Unix.
2.11 DHCP
DHCP é um conjunto de regras usadas por dispositivos de comunicação tais como um
computador, router ou placa de rede permitindo a estes dispositivos pedir e obter endereços
IP de um servidor contendo uma lista de endereços disponíveis para atribuição.
O DHCP, Dynamic Host Configuration Protocol, é um protocolo de serviço TCP/IP que
oferece configuração dinâmica de terminais, com concessão de endereços IP de host e outros
parâmetros de configuração para clientes de rede. Este protocolo é o sucessor do BOOTP que,
embora mais simples, tornou-se limitado para as exigências atuais. O DHCP surgiu como
standard em Outubro de 1993. O RFC 2131 contém as especificações mais atuais (Março de
1997). O último standard para a especificação do DHCP sobre IPv6 (DHCPv6) foi publicado
a Julho de 2003 como RFC 3315.
34
Resumidamente, o DHCP opera da seguinte forma:
•
Um cliente envia um pacote broadcast (destinado a todas as máquinas) com um pedido
DHCP.
•
Os servidores DHCP que capturarem este pacote irão responder (se o cliente se
enquadrar numa série de critérios - ver na próxima seção) com um pacote com
configurações onde constará, pelo menos, um endereço IP, uma máscara de rede e
outros dados opcionais, como o gateway, servidores de DNS, etc.
O DHCP usa um modelo cliente-servidor, no qual o servidor DHCP mantém o gerenciamento
centralizado dos endereços IP usados na rede.
2.11.1 CRITÉRIOS DE ATRIBUIÇÃO DE IPS
O DHCP oferece três tipos de alocação de endereços IP:
•
Atribuição manual - Onde existe uma tabela de associação entre o Endereço MAC do
cliente (que será comparado através do pacote broadcast recebido) e o endereço IP (e
restantes dados) a fornecer. Esta associação é feita manualmente pelo administrador
de rede; por conseguinte, apenas os clientes cujo MAC consta nesta lista poderão
receber configurações desse servidor;
•
Atribuição automática - Onde o cliente obtém um endereço de um espaço de
endereços possíveis, especificado pelo administrador. Geralmente não existe vínculo
entre os vários MAC's habilitados a esse espaço de endereços;
•
Atribuição dinâmica - O único método que dispõe a reutilização dinâmica dos
endereços. O administrador disponibiliza um espaço de endereços possíveis, e cada
cliente terá o software TCP/IP da sua interface de rede configurados para requisitar
um endereço por DHCP assim que a máquina arranque. A alocação utiliza um
mecanismo de aluguer do endereço, caracterizado por um tempo de vida. Após a
máquina se desligar, o tempo de vida naturalmente irá expirar, e da próxima vez que o
cliente se ligue, o endereço provavelmente será outro.
35
Algumas implementações do software servidor de DHCP permitem ainda a atualização
dinâmica dos servidores de DNS para que cada cliente disponha também de um DNS. Este
mecanismo utiliza o protocolo de atualização do DNS especificado no RFC 2136.
2.12 SHELL SCRIPTS
Antes de saber o que é um script em shell, é importante saber o que é um Shell.
Na linha de comandos de um shell, podemos utilizar diversos comandos um após o outro, ou
mesmo combiná-los numa mesma linha. Se colocarmos diversas linhas de comandos em um
arquivo texto simples, teremos em mãos um Shell Script, ou um script em shell, já que Script
é uma descrição geral de qualquer programa escrito em linguagem interpretada, ou seja, não
compilada. Outros exemplos de linguagens para scripts são o php, perl, python, javascript e
muitos outros. Podemos então ter um script em php, um script perl e assim em diante.
Uma vez criado, um ShellScript pode ser reutilizado quantas vezes for necessário. Seu uso,
portanto, é indicado na automação de tarefas que serão realizadas mais de uma vez. Todo
sistema Unix e similares são repletos de scripts em shell para a realização das mais diversas
atividades administrativas e de manutenção do sistema.
Os arquivos de lote (batch - arquivos *.bat) do Windows são também exemplos de
ShellScripts, já que são escritos em linguagem interpretada e executados por um Shell do
Windows, em geral o command.com ou hoje em dia o cmd.exe. Os Shells do Unix, porém,
são inúmeras vezes mais poderosas que o interpretador de comandos do Windows, podendo
executar tarefas muito mais complexas e elaboradas.
Os scripts shell podem ser agendados para execução através da tabela crontab, entre outras
coisas. É uma ferramenta indispensável aos administradores de sistemas Unix.
O Shell mais comum e provavelmente o que possui mais scripts escritos para ele é também
um dos mais antigos e simples, o sh. Este shell está presente em todo o sistema tipo Unix,
incluído o Linux, FreeBSD, AIX, HP-UX, OpenBSD, Solaris, NetBSD, Irix, etc. Por ser o shell
nativo mais comum é natural que se prefira escrever scripts para ele, tornando o script mais
facilmente portável para outro sistema.
36
Os Shells não estão diretamente associados a um ou outro tipo de Unix, embora várias
empresas comerciais tenham suas próprias versões de Shell. No software livre o Shell
utilizado em um sistema em geral é exatamente o mesmo utilizado em outro. Por exemplo, o
bash encontrado no Linux é o mesmo shell bash encontrado no FreeBSD e pode também
facilmente ser instalado no Solaris ou outros sistemas Unix comerciais para passar a ser
utilizado como interface direta de comandos ou como interpretador de scripts. O mesmo
acontece com o tcsh e vários outros shells desenvolvidos no modelo de Software Livre.
2.12.1 CARACTERÍSTICAS
Os shell scripts podem conter estruturas de programação tais como:
•
Estruturas de decisão (if)
•
Estruturas de repetição (for) (while)
•
Funções etc.
2.12.2 ALGUNS EXEMPLOS DE SCRIPTS
#!/bin/sh
cd /tmp
find . -type f -mtime +30 –delete
Quadro 6: Apagar periodicamente arquivos mais velhos que 30 dias
Este seria o conteúdo de um shell script que sempre que fosse executado apagaria arquivos
com data de modificação maior que 30 dias a partir do diretório /tmp do sistema de arquivos.
Notem que ele é nada mais do que uma associação de 2 comandos (cd e find) em um arquivo
para facilitar a repetição da tarefa. Este poderia ser, por exemplo, o conteúdo do arquivo
/bin/limpatmp.sh e poderíamos chamar este script pela linha de comandos sempre que
desejássemos repetir esta ação:
37
$ limpatmp.sh
Onde o símbolo "$" representa o prompt de comandos. Do ponto de vista do usuário este seria
mais um comando disponível para uso.
Os scripts em shell são também muito empregados junto à inicialização do sistema (para autoiniciar tarefas) ou como mini-aplicativos, que facilitam tarefas dos usuários, tais como
montagem de dispositivos, menus de ajuda, etc.
Sua primeira linha obrigatoriamente começa com um "#!" (que não se deve confundir com um
comentário qualquer, pois realmente é uma exceção), informando diretamente ao kernel qual
interpretador ele deverá usar, juntamente com seu caminho, de acordo com a necessidade de
cada caso.
Exemplo:
#!/bin/bash
Em seguida, são adicionados os comandos desejados, um por linha, ou separados por ponto e
vírgula.
Exemplo:
$ mount -t reiserfs /dev/hda1 /mnt/hda1
$ ls /mnt/hda1
$ cp -r /mnt/hda1/* /home/user/backup
$ umount /dev/hda1
Por fim, dá-se a permissão de execução a este arquivo de texto simples ("chmod +x arquivo").
Um outro exemplo de uso de scripts, só que desta vez um pouco mais avançado.
# Função em Shell Script para retornar a data anterior, levando em conta o mês e ano.
fn_data_anterior()
{
38
DIA=$D
MES=$M
ANO=$A
# Dado DIA, MES e ANO numericos, obtem a data do dia anterior
DIA=`expr $DIA - 1`
if [ $DIA -eq 0 ]; then
MES=`expr $MES - 1`
if [ $MES -eq 0 ]; then
MES=12
ANO=`expr $ANO - 1`
fi
DIA=`cal $MES $ANO`
DIA=`echo $DIA | awk '{ print $NF }'`
fi
}
ano=`date +%Y`;
mes=`date +%m`;
let dia=10\#`date +%d`;
if (( $dia<10 ));
then
j=0$dia;
else
j=$dia;
fi
dia=$j;
j="";
D=$dia
M=$mes
A=$ano
fn_data_anterior
echo $DIA $MES
Quadro 7: Função em Shell Script para retornar a data anterior, levando em conta o mês e ano
39
3 AMEAÇAS À SEGURANÇA DE REDES LOCAIS
Devido à importância que a informática tem hoje dentro das organizações pode-se dizer que
ela se tornou um instrumento essencial para a realização dos trabalhos de maneira mais
rápida, fácil e eficiente. E o principal responsável por isso são as redes, que tem por finalidade
interligar os computadores e compartilhar recursos. Mas as informações que os usuários
acessam precisam ser confiáveis, íntegras e disponíveis quando forem necessárias. Para isso é
preciso protegê-las contra possíveis ameaças como:
•
Hackers: termo utilizado para identificar quem realiza ataques em um sistema
computacional. Porém é preciso dizer que existem diversas ramificações, sendo o
termo hacker melhor empregado àqueles que são especialistas em computação
(fanáticos) que gostam de mostrar seu poder de conhecimento invadindo sistemas
(UCHÔA; ALVES, 2002). E os crackers, que são elementos que invadem sistemas
para roubar informações e causar danos às vítimas. Por acreditar que o assunto é muito
polêmico e por gerar muita controversa, este texto não discutirá este assunto. É
importante salientar que não só “hackers” são os causadores de problemas de
segurança ao sistema de informação, muitos usuários autorizados ou não, podem
causar danos aos serviços de redes devido a seus erros ou sua própria ignorância.
•
Código Malicioso: software criado com finalidade de destruir dados sem a intenção
do usuário. Podem ser citados os:
•
Vírus: é um programa capaz de infectar programas e arquivos em um computador.
Diversos problemas podem ocorrer, desde travamentos na máquina à perda total dos
dados do usuário. Existem vários tipos de vírus como: vírus de boot, vírus de arquivo,
vírus de macro, vírus de e-mail.
•
Vermes (worm): é um programa capaz de se propagar automaticamente através de
redes, enviando cópias de si mesmo de computador para computador. Diferente dos
vírus, os worms não necessitam ser executados para se propagarem. Sua propagação se
dá através da exploração de vulnerabilidades existentes ou falhas existentes na
configuração de software instalados em computadores.
40
•
Cavalo de Tróia (Trojan Horse): é um programa que além de executar funções para
as quais foi projetado, também executam outras funções normalmente maliciosas e
sem conhecimento do usuário. Algumas de suas funções são: alteração ou destruição
de arquivos, furtos de senhas e outras informações como números de cartões de
crédito e inclusão de backdoors para permitir que o atacante tenha controle sobre o
computador. Para mais informações sobre tipos de códigos maliciosos o autor deste
trabalho recomenda a leitura de Uchôa (2003), NBSO (2003) e Cronkhite;
Mccullough (2001).
•
Backdoors: é um programa que permite ao invasor retornar a um computador
comprometido sem ser notado e sem ter que recorrer às técnicas de invasão. A forma
usual de inclusão de um backdoor consiste na adição de um novo serviço ou
substituição de um determinado serviço por uma versão alterada, normalmente
incluindo recursos que permitam acesso remoto (através da Internet).
•
Negação de Serviços (DoS): nos ataques de negação de serviço o atacante utiliza-se
de um computador para tirar de operação um serviço ou computador conectado à
Internet. Por exemplo, tirar serviços importantes de um provedor do ar,
impossibilitando o acesso dos usuários às suas caixas de correio no servidor de e-mail
ou ao servidor web (SCHETINA; GREEN; CARLSON, 2002).
•
Engenharia Social: O termo utilizado para descrever um método de ataque, onde
alguém faz uso da persuasão, muitas vezes abusando da ingenuidade ou confiança do
usuário, para obter informações que podem ser utilizadas para ter acesso não
autorizado a computadores ou informações. Com isso, a proteção tem por objetivo
manter o acesso às informações que são disponibilizadas ao usuário, de forma que
toda informação seja confiável. Para isso é necessário que todos os elementos
envolvidos na transmissão da informação devem estar disponíveis, e devem também
preservar a integridade e sigilo das informações. Entretanto, a segurança das
informações ou segurança de redes deve estar além da proteção contra “hackers” ou
outras ameaças, ela deve ser considerada como algo que permita que as organizações
busquem lucros, que seja o elemento habilitador dos negócios da organização.
Pesquisas comprovam que muitas pessoas já deixaram de realizar uma compra via
Internet por não confiarem na segurança de um site, e para empresas que vivem do
41
comércio eletrônico isso pode ser o fim de seus negócios (GEUS; NAKAMURA,
2003).
3.1
ENGENHARIA SOCIAL
Engenharia social consiste em técnicas utilizadas por pessoas com o objetivo de obter acesso
e informações importantes e/ou sigilosas em organizações ou sistemas por meio da ilusão ou
exploração da confiança das pessoas. Para isso, o Engenheiro Social (atacante), pode se
passar por outra pessoa, assumir outra personalidade, fingir que é um profissional de
determinada área, dentre outros. Esta é uma forma de entrar em organizações muito
facilmente, pois não necessita da força bruta ou de erros em máquinas. A engenharia social
explora sofisticadamente as falhas humanas de segurança, que por falta de treinamento para
esses ataques, podem ser facilmente manipuladas.
3.1.1
AS VÍTIMAS DE ENGENHARIA SOCIAL
É importante ressaltar que, independentemente do hardware, software e plataforma utilizada,
o elemento de maior vulnerabilidade em qualquer sistema é o ser humano, por possuir traços
comportamentais e psicológicos que o torna susceptível a ataques de engenharia social.
Dentre essas características, pode-se destacar:
•
Vontade de ser útil: O ser humano, comumente, procura agir com cortesia, bem
como ajudar outros quando necessário.
•
Busca por novas amizades: O ser humano costuma se agradar e sentir-se bem
quando elogiado, ficando mais vulnerável e aberto a fornecer informações.
•
Propagação de responsabilidade: Trata-se da situação na qual o ser humano
considera que ele não é o único responsável por um conjunto de atividades.
•
Persuasão: Compreende quase uma arte a capacidade de convencer pessoas, onde se
busca obter respostas específicas. Isto é possível porque as pessoas têm características
comportamentais que as tornam vulneráveis à manipulação.
42
3.1.2
TÉCNICAS DE ENGENHARIA SOCIAL
Praticamente todas as técnicas de engenharia social consistem em obter informações
privilegiadas, iludindo os usuários de um determinado sistema através de identificações
falsas, aquisição de carisma e confiança da vítima. Ao realizar o ataque, o atacante pode fazer
uso de qualquer meio de comunicação. Tendo-se destaque para telefonemas, conversas diretas
com a vítima, e-mail e WWW. Algumas dessas técnicas são:
• E-mails que contenham vírus
Neste caso a engenharia social atua através do assunto contido nos e-mails, cuja função é
iludir os receptores, o assunto pode estar relacionado à amizade, sexo, amor, dentre outros.
Quando a vítima recebe este e-mail ela torna-se vulnerável por acreditar que a mensagem
realmente contenha algo sobre tal assunto, vindo assim a abrir e executar o anexo que então
contém o vírus. A função do engenheiro social neste caso será criar uma mensagem capaz de
convencer o receptor sobre sua veracidade despertando assim sua curiosidade fazendo-o
executar o anexo (vírus).
• E-mails falsos
Este tipo de ataque envolve a engenharia social, pois explora a confiança dos receptores de
tais e-mails. Estes na maioria das vezes visam obter informações financeiras, como por
exemplo, senhas, números de contas etc. O trabalho do engenheiro social neste caso é como
dito no exemplo acima, clonar um site de uma instituição financeira e fazer com que as
pessoas receptoras digitem ali, as informações que lhe são necessárias. Muitas vezes o
engenheiro social faz uso de artifícios como, por exemplo, promoções, premiações etc. que na
verdade nunca vieram a existir. O atacante por meio de e-mail envia como conteúdo estes
artifícios juntamente com um link direcionando à pessoa atacada para um site falso, e será
neste site que ele obterá as informações desejadas, caso obtenha sucesso no seu ataque.
43
3.1.3
QUALIFICAÇÃO DOS ATAQUES
Abordaremos a seguir os tipos de ataques realizados pelo engenheiro social. Basicamente são
dois os tipos de ataques desenvolvidos, os denominados ataques diretos e os ataques indiretos.
•
Ataques diretos - O ataque direto é caracterizado pelo contato pessoal. Este
geralmente é realizado por fax, telefone ou até mesmo pessoalmente, o que exige do
atacante um plano antecipado e detalhado, um plano de emergência, caso algo venha a
dar errado, além de um pouco de dom artístico, pois o engenheiro social deve acima
de tudo ser bem articulado para evitar que seu plano seja desmascarado.
•
Ataques Indiretos - Caracteriza-se ataque indireto aquele que se utiliza de
ferramentas de invasão (trojans, vírus) e de impostura (spam, sites falsos) para obter
as informações necessárias.
3.1.4
MÉTODOS UTILIZADOS PELO ATACANTE
Os principais métodos utilizados pelos engenheiros sociais para realizarem seus ataques são:
pesquisa e impostura.
•
Pesquisa - O método pesquisa refere-se à coleta de materiais, como relatórios, listas
de pagamentos e etc. A finalidade deste método é descobrir quem guarda as
informações e quais são elas. Sabendo-se disso o próximo passo é elaborar meios para
extrair tais dados de tais pessoas, é neste momento que surge a impostura.
•
Impostura - Este método visa realizar um ataque direto, fazendo-se passar por outras
pessoas, como funcionário da própria empresa, clientes, fornecedores etc.
3.1.5
FIGURAS DA ENGENHARIA SOCIAL
São várias as figuras encontradas em um ataque de engenharia social, algumas utilizadas
apenas na fase de coleta de informações, outras utilizadas apenas na fase de ataque direto e
44
por fim algumas que são utilizadas durante todo o processo de realização do ataque. Dentre
elas podemos destacar:
•
Disfarces - Geralmente os disfarces são utilizados durante todo o processo de ataque,
seja como faxineiro durante o processo de coleta das informações ou como consultor
em visita durante um ataque direto.
•
Lixo - São poucas as empresas que se preocupam com o destino do lixo que é gerado
em seu ambiente, tornando-o assim uma fonte potencial de informações para os
engenheiros sociais, pois nele podem ser encontrados relatórios, anotações de senhas,
informações sobre o patrimônio da empresa dentre outras.
•
Funcionários descontentes e redes de contatos - Por via das vezes essa é uma das
formas mais fáceis de obter informações dentro de uma empresa. Funcionários
insatisfeitos na maioria das vezes acabam por fornecer informações importantes, as
quais podem prejudicar seus superiores ou toda a organização além de possuírem um
rede de contatos dentro e fora (fornecedores) da organização o que se torna válido pois
estes podem fornecer informações valiosas sobre outras pessoas e sobre caminhos para
chegar a mais dados.
•
Apelo Sentimental - Muitas vezes é realizado no mundo virtual (chats), pois o
atacante pode, por exemplo, transformar-se em homem ou mulher para atrair e
conquistar a confiança da pessoa atacada, subtraindo assim informações importantes.
•
Programação Neurolinguistica - Uma das técnicas mais utilizadas nesta fase chamase acompanha-acompanha-acompanha-comanda, seu objetivo é confundir a vítima.
Neste método, o atacante imita os trejeitos de seu interlocutor por um determinado
tempo até que se forme um elo de intimidade e a vítima imagine estar no comando,
baixando a guarda. Deste momento em diante o atacante comanda a conversa sem que
a vítima perceba, sugando assim todas as informações que ela detém.
•
A utilização da Internet - Vários atacantes formulam sites a fim de obter dados
pessoais, e noções sobre o comportamento de suas futuras vítimas. Para isso, oferecem
para a realização do cadastro brindes, participação em promoções etc. Desta forma
conseguem obter, por exemplo, números de CPF, RG e cartões de crédito.
45
4 SOLUÇÕES DE SEGURANÇA EM REDES LOCAIS
Os mecanismos de segurança são técnicas utilizadas para assegurar as propriedades de
Segurança do Sistema Computacional de tal forma que somente os usuários autorizados ou
processos sob seu controle terão acesso às informações devidas e nada além do necessário e
são fundamentais na implementação de sua Política de Segurança. Discutiremos as principais
técnicas como, por exemplo: Autenticação, Integridade, Disponibilidade, Não-Repúdio,
Privacidade, Mecanismos de Controle de Acesso, Criptografia, Assinatura Digital, Secure
Hashes e Message Digests.
4.1
AUTENTICAÇÃO
A autenticação é o mecanismo utilizado para se garantir que um usuário ou processo sob
controle ou processos que trabalham de forma cooperativa estão se identificando de acordo
com suas reais identidades. Existem três formas básicas de autenticação que devem ser
utilizadas de acordo com situação especifica. A autenticação pode ser feita de forma
unilateral, mútua ou com a mediação de terceiros. A autenticação unilateral acontece quando
apenas um parceiro da comunicação autentica-se perante o outro, mas a recíproca não é
verdadeira. Na autenticação mútua os parceiros da comunicação se autenticam um perante o
outro. A autenticação com a mediação de terceiros é utilizada quando os parceiros da
comunicação não se conhecem e não podem se autenticar mutuamente, mas conhecem um
terceiro com quem se autenticam e recebem credenciais para procederem assim a autenticação
mútua. Abaixo estão os diagramas representando as três formas básicas de autenticação
apresentadas.
46
Figura 2: Mecanismos de Controle de Acesso
Os Mecanismos de Controle de Acesso se propõem a definir que usuários ou processos têm
acesso a que recursos do Sistema Computacional e com que permissões. Estes mecanismos
podem ser aplicados em qualquer nível, desde a aplicação, definindo quais usuários têm
acesso a determinados registros até aos sistemas básicos, definindo quais processos têm
acesso a determinadas páginas de memória. Veremos os principais modelos de mecanismos
de controle de acesso, que são mecanismos para proteger contra acessos indevidos por
usuários não autorizados.
4.2
INTEGRIDADE
A integridade consiste em proteger a informação contra modificação sem a permissão
explícita do proprietário daquela informação. A modificação inclui ações como escrita,
alteração de conteúdo, alteração de status, remoção e criação de informações. Deve-se
considerar a proteção da informação nas suas mais variadas formas, como por exemplo,
armazenada em discos ou fitas de backup. Integridade significa garantir que se o dado está lá,
então não foi corrompido, encontra-se íntegro. Isto significa que aos dados originais nada foi
acrescentado, retirado ou modificado.
47
A integridade é assegurada evitando-se alteração não detectada de mensagens (ex. tráfego
bancário) e o forjamento não detectado de mensagem (aliado a violação de autenticidade).
4.3
DISPONIBILIDADE
Ter as informações acessíveis e prontas para uso representa um objetivo crítico para muitas
empresas. No entanto, existem ataques de negação de serviços, onde o acesso a um
sistema/aplicação é interrompido ou impedido, deixando de estar disponível; ou uma
aplicação, cujo tempo de execução é crítico, é atrasada ou abortada.
Disponibilidade consiste na proteção dos serviços prestados pelo sistema de forma que eles
não sejam degradados ou se tornem indisponíveis sem autorização, assegurando ao usuário o
acesso aos dados sempre que deles precisar. Isto pode ser chamado também de continuidade
dos serviços.
Um sistema indisponível, quando um usuário autorizado necessita dele, pode resultar em
perdas tão graves quanto as causadas pela remoção das informações daquele sistema. Atacar a
disponibilidade significa realizar ações que visem a negação do acesso a um serviço ou
informação, como por exemplo: bloqueamento do canal de comunicação ou do acesso a
servidores de dados.
4.4
NÃO-REPÚDIO
Uma técnica usada para garantir que alguém realizando uma ação em um computador não
possa falsamente negar que ele realizou aquela ação. O não-repúdio fornece prova inegável
que um usuário realizou uma ação específica como transferir dinheiro, autorizar uma compra
ou enviar uma mensagem.
48
4.5
PRIVACIDADE
Privacidade é um conceito abstrato cujo valor e extensão varia de pessoa para pessoa.
Podemos comparar a visão que cada pessoa tem de sua privacidade a uma bolha que a
envolve. Essa bolha que cada um determina como sendo o seu limite de privacidade terá
tamanhos diferenciados para cada pessoa. O que uma pessoa considera invasão de
privacidade, outra pessoa pode considerar como algo completamente normal e aceitável.
Elgesem [20] recomenda abandonar a dicotomia rígida entre o que é privado e o que é
publico, pois, em geral, as situações privadas ocorrem dentro de um escopo maior que são as
situações publicas. Por exemplo, uma mulher conversando de forma privada em um telefone
público poderá ser vista por todas as pessoas que passarem por ela. Para Elgesem, a
privacidade está fortemente conectada com a idéia de que existem algumas coisas que outras
pessoas não deveriam ver ou saber.
Um conceito de privacidade amplamente difundido é o discutido por Warren & Brandeis no
famoso artigo The Right to Privacy da Harvard Law Review, de 1890 [61]: “privacidade é o
direito de estar sozinho”. Nesse mesmo artigo, encontramos também a seguinte regra: “O
direito a privacidade termina com a divulgação de fatos pelo indıvíduo ou com o seu
consentimento”. A partir dessa regra, identificamos um cuidado que cada um deve ter em
proteger sua privacidade, pois uma vez que alguém divulgue ou autorize a divulgação de um
fato ou informação pessoal, não há como voltar atrás. Com os avanços tecnológicos, as
pessoas têm rapidamente perdido a sua privacidade e essa situação tende a se agravar:
filmagens em lojas e estacionamentos, eletrodomésticos conectados à Internet, bancos de
dados armazenando grande volume de dados pessoais e ações (compras efetuadas, ligações
telefônicas, depósitos e retiradas de contas bancarias etc.).
Nesse novo contexto, surge um novo sentido de privacidade, que a coloca como uma
propriedade - a propriedade de ter controle sobre o seu fluxo de informação pessoal [20].
Fried [24] afirma que “privacidade não é simplesmente a ausência de informação a nosso
respeito na cabeça de outros, mas também, o controle que temos sobre estas informações”.
49
4.6
ACCESS CONTROL LIST
A Access Control List, ou simplesmente ACL, é o mecanismo onde é criada uma lista para
cada objeto, recurso do Sistema, com a identificação do usuário ou processo e suas
permissões para aquele objeto especifico. A ACL é mecanismo dito como orientado a objeto.
As ACL’s tornam-se sobrecarregadas de forma gradativa à medida que a quantidade de
recursos compartilhados de um Sistema aumenta. Por isso, é comum o agrupamento de
usuários de acordo com o seu perfil funcional, mas isto representa uma flexibilização perigosa
no mecanismo de controle de acesso.
4.7
CAPABILITIES
Este mecanismo, ao contrário da ACL, cria uma lista para cada usuário ou processo com a
identificação do objeto e as permissões que o usuário ou processo possui sobre este objeto
especifico. Este mecanismo é conhecido como orientado a usuário. Este mecanismo resolve o
problema da sobrecarga das ACL’s, tendo em vista que cada usuário ou processo possui uma
lista com as Capabilities somente para os objetos compartilhados aos quais têm algum tipo de
permissão de acesso.
4.8
ACCESS CONTROL MATRIZ
A Access Control Matriz, ou ACM, é o somatório dos dois mecanismos anteriores formando
uma estrutura equivalente a uma matriz, onde as linhas são compostas pelos usuários, as
colunas por objetos e os elementos são listas de permissões. Cada coluna de uma ACM é uma
ACL e cada linha é uma Capability.
4.9
CRIPTOGRAFIA
A criptografia é a técnica de trocar o conteúdo de uma mensagem compreensível, texto em
claro ou texto plano, dentro de um domínio de onde fazem parte os membros da comunicação
por um conteúdo incompreensível, texto criptografado, através de uma função de
50
transformação, método de criptografia. A criptografia é um mecanismo fundamental para se
garantir a confidencialidade na troca de mensagens, principalmente quando ocorre através de
canais de comunicação não confiáveis. Os primeiros métodos de criptografia garantiam a
confidencialidade da mensagem através do segredo do próprio método, porém esta técnica
evoluiu para a criptografia com o uso de chaves. Um texto em claro para ser transformado
num texto criptografado, ou vice-versa, faz-se necessário o uso de um método e de uma chave
de tal forma que a partir de um mesmo texto em claro e usando-se o mesmo método de
criptografia chega-se a textos criptografados diferentes se as chaves forem diferentes. O
método de criptografia é considerado confiável e seguro quando ele é de domínio público,
podendo ser exaustivamente testado por todos. Vamos, a partir de agora, representar a
operação de criptografar uma mensagem com texto em claro M gerando a mensagem
criptografada C usando a chave K.
É impossível para um usuário mal intencionado, hacker, que conheça o método de
criptografia e a mensagem C descobrir qual é a mensagem M. O termo impossível aqui no
texto e a partir de agora significa que o tempo e os recursos computacionais necessários para
a realização da tarefa são grandes suficientes para torná-la impraticável. Outro aspecto
importante é mesmo que um hacker conheça as mensagens M e C e o método de criptografia
não conseguirá deduzir qual foi a chave K utilizada. Existem dois tipos de métodos de
criptografia em função das chaves usadas para criptografar e descriptografar um texto que
descreveremos na seqüência [Veríssimo 01].
4.9.1
CRIPTOGRAFIA SIMÉTRICA
Na criptografia simétrica a chave utilizada para criptografar um texto em claro é a mesma
chave para descriptografá-lo, assim podemos deduzir:
51
A criptografia simétrica tem uma performance muito melhor do que a assimétrica porém
possui dois problemas intrínsecos ao próprio método: Uma chave secreta nova deve ser
divulgada para os membros da comunicação e isto representa um risco real. Normalmente é
usada uma chave para cada dois membros da comunicação por isto o número de chaves cresce
muito com o aumento do número de participantes da comunicação. Para cinco (5)
participantes na comunicação são necessárias dez (10) chaves, mas se o número de
participantes cresce para vinte (20) serão necessárias cento e noventa (190) chaves. Um dos
principais métodos de criptografia simétrica foi desenvolvido pela IBM e adotado pelo
governo dos EUA como padrão é o Data Encryption Standard (DES) (VERISSIMO,2001). O
DES é um algoritmo de codificação de blocos de 64 bits e com chave de 56 bits e tem 19
estágios diferentes como indicado na figura abaixo. No primeiro estágio é feita uma
transposição de bits do bloco de dados da mensagem, depois o algoritmo da figura seguinte é
repetido dezesseis (16) vezes sendo que a chave é alterada de um estágio para outro, em
seguida é feita a permutação dos 32 bits mais significativos pelos 32 bits menos significativos
e finalmente é feita uma transposição dos bits no sentido inverso ao primeiro estágio. C =
K(M) M = K(C) M = K(K(M))
Método de criptografia DES
Figura 3: Método de criptografia DES
52
4.9.2
CRIPTOGRAFIA ASSIMÉTRICA
Na criptografia assimétrica a chave usada para criptografar uma mensagem é diferente da
chave usada para descriptografá-la. O método baseia-se no fato das chaves serem distintas e
com isto cada usuário deve possuir um par de chaves, uma pública usada para criptografar as
mensagens e uma outra privada para descriptografar as mensagens recebidas. Este método
também é conhecido como Criptografia com Chave Pública e tem que atender a algumas
características básicas:
¾ Dado um par de chaves de criptografia e descriptografia Kp (pública) e Ks (secreta ou
privada), se C = Kp(M), então M = Ks(C) e M = Ks(Kp(M));
¾ Dado Kp(M) sem Ks, é impossível recuperar a mensagem M;
¾ Dado M e Kp(M) é impossível recuperar Kp;
¾ Dado Kp, é impossível recuperar Ks e vice-versa;
¾ Se as chaves forem iguais, Kp = Ks = K, as três primeiras características continuam
válidas.
Apesar dos métodos de criptografia assimétricos possuírem uma performance muito inferior
em relação aos métodos de criptografia simétricos, eles resolvem os dois principais problemas
dos métodos simétricos. Cada membro da comunicação deve possuir duas chaves, uma
privada e outra pública, sendo que a chave pública pode e deve ser divulgada para todos os
outros membros da comunicação sem que isto represente algum risco para a
confidencialidade. Para um grupo com vinte (20) membros participantes de uma comunicação
serão necessárias apenas vinte (20) pares de chaves. O uso combinado dos dois métodos
produz excelente resultado. Usar um método assimétrico para negociar uma chave simétrica
para cada sessão da comunicação e um método simétrico para troca de mensagens, sendo que
a chave simétrica deve ser renegociada para sessão. Em 1976 Diffe e Hellman propuseram
pela primeira vez um método revolucionário de criptografia assimétrico (VERISSIMO,2001).
Em 1978 Rivest, Shamir e Adleman propuseram um método de criptografia assimétrico
baseado no mesmo principio do algoritmo de Diffe-Hellman, que se baseia na extrema
53
dificuldade de se fatorar o produto de números primos muito grandes, por exemplo números
primos de 512 bits. Este algoritmo é conhecido pelas iniciais dos seus criadores, RSA.
O algoritmo RSA parte inicialmente da escolha de dois números primos a e b, usualmente
com 1024 bits de comprimento. Em seguida deve-se escolher um número p tal que p e (a1)x(b-1) sejam primos entre si e um número s tal que o resto da divisão de (s)x(p) por (a1)x(b-1) seja igual a 1. Finalmente calcular n = (a)x(b) e com isto teremos a chave pública Kp
= (p,n) e a chave secreta Ks = (s,n). A mensagem M pode criptografada para a mensagem C e
vice-versa de acordo com as equações abaixo:
Figura 4: Equação de criptografia RSA
4.10 SECURE HASHES E MESSAGE DIGESTS
As funções Hashes são funções de compressão e quando estas são irreversíveis são chamadas
de Secure Hashes ou algoritmos de Message Digest (MD). Um algoritmo de Message Digest
comprime um texto em um bloco de tamanho fixo que normalmente tem 128 bits e
passaremos a representar a função que gera o valor hash hm a partir da mensagem M por hm
= H(M). As propriedades básicas de uma função de Secure Hash são:
•
Dado hm, é impossível determinar uma mensagem M tal que hm =H(M);
•
Dada uma mensagem M, é impossível determinar uma mensagem M’ tal que H(M) =
H(M’);
•
É impossível determinar um par de mensagens (M,M’) tal que H(M) =H(M’).
A primeira propriedade determina que o valor hash representa a mensagem sem revelar seu
conteúdo enquanto que a segunda e terceira propriedades determinam que o Secure Hash é
um mecanismo apropriado para garantir sua integridade tendo em vista que o valor hash é
único e ninguém produzirá outra mensagem que gere o mesmo valor hash.
54
O MD5 é uma função de Message Digest criada por Rivest em 1992 que é mais segura e com
performance ligeiramente inferior em relação ao seu predecessor MD4 (VERISSIMO,2001).
O MD5 opera sua função sobre a mensagem dividindo-a em blocos de 512 bits e gera uma
saída de 128 bits, executando o C = M p (mod n) M = C s (mod n) algoritmo quatro (4) vezes
em cada bloco e usa a saída de cada etapa como entrada da próxima. O MD5 está
representado na figura abaixo:
Figura 5: Representação do MD5
4.11 ASSINATURA DIGITAL
A assinatura digital é um mecanismo que envolve duas etapas, a assinatura da mensagem M
propriamente dita SKs(M) e a verificação da referida assinatura VKp(M). Este mecanismo
tem por objetivo garantir a autenticidade e a integridade de uma mensagem de tal forma que
ninguém possa alterá-la ou reutilizá-la como um todo ou mesmo parcialmente e que seu
remetente possa posteriormente negar que a tenha enviado, ou seja, garantir a não-repudiação
da mensagem.
O mecanismo da assinatura digital baseia-se na criptografia assimétrica, onde o usuário que
queira assinar uma mensagem usa sua chave privada para criptografar a mensagem e o
receptor poderá verificar a autenticidade da assinatura descriptografando a mensagem com a
chave pública do remetente e com isto ter a certeza da autenticidade e integridade da
mensagem. Vejamos o exemplo de um usuário A que envia uma mensagem assinada M para
um usuário B.
•
Usuário A assina a mensagem M e a envia para B: SKs A(M) = KsA(M)
•
Usuário B recebe a mensagem KsA(M) e verifica a assinatura de A: VKp A(M) =
KpA(KsA(M)) = M
55
É importante salientar que no exemplo anterior não há confidencialidade porque qualquer
pessoa poderá descriptografar a mensagem com a chave pública do remetente, como já foi
dito. Caso queira-se garantir a confidencialidade na comunicação, o remetente após assinar a
mensagem deverá criptografá-la com a chave pública do destinatário e este ao recebê-la deve
primeiramente descriptografar a referida mensagem com sua chave secreta e então verificar a
autenticidade da assinatura descriptografando o resultado anterior com a chave pública do
remetente e finalmente obtendo a mensagem original M. Vejamos um exemplo onde o usuário
A envia uma mensagem assinada M de forma confidencial para B.
•
Usuário A assina a mensagem M: SKs A(M) = KsA(M)
•
Usuário A criptografa a mensagem assinada M e a envia para B: KpB(SKs A(M)) =
KpB(KsA(M)) = C
•
Usuário B recebe a mensagem C e a descriptografa com sua chave secreta: KsB(C) =
KsB(KpB(KsA(M))) = KsA(M) = SKs A(M)
•
Usuário B verifica a assinatura de A e obtém a mensagem M: VKp A(M) =
KpA(KsA(M)) = M
Apesar de o método apresentado atender a todos os requisitos necessários, ele pode apresentar
baixa performance à medida que a mensagem aumente de tamanho. A solução para este
problema é combinar as técnicas de Secure Hash com a Assinatura Digital. Inicialmente
calcula-se o valor hash da mensagem M e em seguida o remetente deve aplicar as técnicas de
Assinatura Digital somente sobre o valor hash e enviar tanto a mensagem quanto a sua
assinatura que será verificada pelo destinatário.
1 Usuário A calcula o valor hash da mensagem M: hm = H(M)
2 Usuário A assina o valor hash: SKs A(hm) = KsA(hm) = sm
3 Usuário A envia a mensagem M e a assinatura sm para B: (M, sm)
4 Usuário B recebe a mensagem (M, s’m) supostamente assinada pelo usuário A
5 Usuário B calcula o valor hash da mensagem M recebida: hm = H(M)
6 Usuário B calcula o valor hash h’m da assinatura s’m recebida: VKp A(s’m) = KpA(s’m)
= KpA(KsA(h’m)) = h’m
56
7 Usuário B compara o valor hash hm calculado a partir de M com o valor h’m calculado a
partir de s’m para verificar a autenticidade da assinatura: Se hm = h’m então assinatura é
autêntica.
4.12 SSH
SSH (Secure Shell) é um programa para login remoto, execução de comandos remotamente e
cópia de arquivos de uma máquina para a outra; com autenticação forte e comunicação
segura.
Figura 6: Funcionamento ssh
O SSH ( Secure Shell )[5.75] possui atualmente várias implementações cliente e servidora,
entre elas podemos destacar: ssh , openssh, ossh, sftp (Secure FTP) e outras. Os clientes são
distribuídos para quase todas as plataformas existentes e possuem interface gráfica ou
trabalham em modo texto. A grande vantagem do SSH (Secure Shell )[5.75] é o grande
suporte que possui: em listas de discussão[5.54.1], profissionais, documentações, News
Group[5.58] e diversas implementações. Basicamente o software SSH[5.75] é gratuito
implementado para suportar os protocolos[5.65] SSH1[5.75] e SSH2[5.75], sendo que
algumas implementações suportam os dois protocolos[5.65] simultâneos, como é o caso do
openssh na versão 2.3.0 que será apresentada em seguida. As implementações de SSH usam
57
como padrão a porta 22/tcp do TCP/IP, possuem suporte para kerberos, autenticação TIS e
socks. Outro ponto positivo é que alguns equipamentos como os roteadores cisco também
possuem suporte para ssh[5.75] ou kerberos. Entre os pontos responsáveis pela popularidade
do SSH[5.75] podemos destacar : a sua instalação e configuração são muito simples, grande
suporte técnico em listas de discussão[5.54.1], estabilidade, escalabilidade, segurança quando
bem configurado, suportado por diversos sistemas operacionais (Linux, *BSD, Solaris, IRIX,
Digital UNIX, AIX, IBM OS/2, SCO UNIX, HPUX, MAC/OS, Palm, Windows CE,
VAX/OPENVMS, BeOS, MS-DOS e outros ).
O SSH (www.ssh.fi) é escrito em C[5.13] ANSI[5.4], também possui implementações em
java[5.52], é um software open source livremente distribuído. No site do SSH[5.75]
(www.ssh.fi) podemos encontrar diversas informações como: relações e correções de
Bugs[5.12], listas de discussão [5.54.1], novas implementações, acessos aos diversos mirros
pela internet [5.45], como comprar clientes SSH [5.75] com recursos extras e etc.
4.13 PGP
O PGP [Pretty Good Privacy ou Privacidade Muito Boa] é o nome de um programa que
possibilita a criptografia de arquivos. Com o PGP, é possível que você criptografe arquivos e
só a pessoa correta vai poder ler os dados presentes no arquivo. A popularidade do PGP fez
com que seu sistema e design se tornassem um padrão aberto, chamado de OpenPGP.
Programas gratuitos como o GnuPG e até mesmo webmails como o Hushmail utilizam esse
padrão nas suas mensagens.
4.13.1 COMO FUNCIONA
No PGP, todos os usuários possuem uma chave pública e uma privada. A chave pública pode
ser enviada para qualquer pessoa. Ela é utilizada para que um indivíduo possa encriptar
documentos. Os documentos encriptados com sua chave pública só podem ser decifrados com
a sua chave privada (a qual você deve manter de forma secreta). As chaves públicas podem
ser obtidas nos sites das empresas ou organizações. Também existem os chamados Key
Servers que disponibilizam essas chaves (quando as pessoas enviaram as mesmas para eles).
58
O PGP também pode ser usado para assinar mensagens de e-mail, ou seja, certificar que as
mesmas não foram modificadas desde que foram enviadas, utilizando um hash baseado na
chave privada. Implicitamente o PGP também gera uma chave de sessão, de modo que toda
mensagem criptografada com PGP está criptografada duas vezes. Isso torna o PGP o melhor
sistema de criptografia existente na atualidade.
4.14 KERBEROS
Kerberos é um protocolo desenvolvido para fornecer poderosa autenticação em aplicações
usuário/servidor, onde ele funciona como a terceira parte neste processo, oferecendo
autenticação ao usuário. Para garantir a segurança, ele usa criptografia de chave simétrica,
com o DES. O Kerberos foi desenvolvido como parte do Project Athena, do Massachussets
Institute of Technology (MIT). Seu nome vem da mitologia, onde Cerberus (Kerberus para os
gregos) é um cão com três cabeças que tem por missão proteger a entrada do inferno de
Hades.
4.14.1 O QUE FAZ:
Para explicar o que faz o Kerberos, vamos usar algumas analogias baseadas The Moron's
Guide to Kerberos, Version 1.2.2. Na vida real, usamos rotineiramente uma autenticação, na
forma de (por exemplo) uma carteira de motorista. A carteira de motorista é fornecida por
uma agência, na qual podemos supor confiável, e contém dados pessoais da pessoa como
nome, endereço e data de nascimento. Além disto, pode conter algumas restrições, como
necessidade de óculos para dirigir, e mesmo algumas restrições implícitas (a data de
nascimento pode ser usada para comprovar maioridade). Finalmente, a identificação tem um
prazo de validade, a partir do qual é considerada inválida. Para ser aceita como autenticação,
algumas regras devem ser observadas: ao apresentar a carteira, não se pode ocultar parte dela
(como foto ou data de nascimento). Além disto, quem verifica a autenticação deve reconhecer
a agência que forneceu a autenticação como válida (uma carteira de motorista emitida no
Brasil pode não ser aceita fora do território nacional). Kerberos trabalha basicamente da
mesma maneira. Ele é tipicamente usado quando um usuário em uma rede tenta fazer uso de
59
um determinado serviço da rede e o serviço quer se assegurar de que o usuário é realmente
quem ele diz que é. Para isto, o usuário apresenta um ticket, fornecido pelo Kerberos
authenticator server (AS), assim como a carteira de motorista é fornecida pelo DETRAN. O
serviço então examina o ticket para verificar a identidade do usuário. Se tudo estiver certo o
usuário é aceito. O ticket deve conter informações que garantam a identidade do usuário.
Como usuário e serviço não ficam face-a-face uma foto não se aplica. O ticket deve
demonstrar que o portador sabe alguma coisa que somente o verdadeiro usuário saberia, como
uma senha. Além disto, deve existir mecanismo de segurança contra um atacante que "pegue"
um ticket e use mais tarde.
4.15 SNORT
É um sistema de detecção de intrusos ativo que tem como pontos positivos ter o maior
cadastro de assinaturas, ser leve, pequeno, de fácil instalação, já vir configurado, fazer
escaneamento do micro e verificar anomalias dentro de toda a rede ao qual seu computador
pertence. O Snort é um filtro de pacotes baseado em libcap, um sniffer e registrador em log
que fornece detecção de invasão de rede básica. Ele é uma ferramenta de detecção de invasão
baseada em regras que adota tanto a abordagem preemptiva como a reacionária. Ele ouve
tráfego de rede em tempo real e corresponde esse tráfego com regras predefinidas
(ANONYMOUS,1999). Você pode usar o Snort para implementar funções sensoriais e de
análise em um sistema de detecção de intrusão: pode registrar pacotes, analisar pacotes ou as
duas coisas. O registro pode consistir de pacotes “brutos” ou de informações de pacotes
decodificadas e convenientemente armazenadas. Usando o segundo método, o Snort
decodifica os pacotes e os classifica por IP remoto em subdiretórios do diretório de registro
(NORTHCUTT, NOVAK, MCLACHLAN, 2000). Como comentado em (ANONYMOUS,
1999):
4.16 O QUE SÃO SISTEMAS DE DETECÇÃO DE INTRUSOS?
Sistemas de Detecção de Intrusos são programas (softwares independentes ou embutidos em
hardware proprietário) que monitoram uma rede ou um host a procura de sinais padrões de
60
comportamento que sejam considerados maliciosos, ou seja, que podem constituir um ataque
ou uma outra atividade não permitida.
4.16.1 PRINCIPAIS TIPOS DE IDS
Existem vários tipos de IDSs disponíveis atualmente, caracterizados por diferentes métodos
de monitoração e análise. Cada método possui vantagens e desvantagens distintas. Entretanto,
todos os métodos podem ser descritos em termos de um modelo de processo genérico para
IDSs. Modelo de processo para IDSs. · A maioria dos IDSs pode ser descrita em termos de 3
componentes fundamentais:
• Fonte de Informações: As diferentes fontes de informações sobre eventos usados para
determinar quando uma intrusão ocorre. As fontes mais comuns são um host* ou um
segmento de rede*.
• Análise: É a parte do sistema de detecção de intrusos que efetivamente organiza e dá
sentido aos eventos derivados da fonte de informações, decidindo quando estes eventos
indicam que uma intrusão está ocorrendo ou já foi realizada. Os métodos de análise mais
comuns são detecção baseada em assinaturas e detecção baseada em anomalias.
• Resposta: É o conjunto de ações que o sistema faz quando detecta uma intrusão. Estas são
tipicamente agrupadas em medidas ativas e passivas, com medidas ativas envolvendo
intervenção automatizada em parte do sistema e medidas passivas envolvendo a geração
de relatórios para posterior interpretação e intervenção humana.
De acordo com a fonte de informações podemos classificar os IDSs em: baseado em rede
baseado em host.
4.16.2 IDS BASEADO EM REDE
A maioria dos IDSs comerciais é baseada em rede. Estes IDSs detectam ataques pela análise
dos pacotes da rede* através de uma escuta em um segmento de rede. Com isso um IDS tem a
61
capacidade de monitorar o tráfego de todos os hosts que estão conectados neste segmento,
protegendo-os. IDSs baseados em rede geralmente consistem de um conjunto de sensores
colocados em vários pontos da rede. Estas unidades monitoram o tráfego, realizando uma
análise local do mesmo e relatando ataques a um console central de gerenciamento. Como os
sensores são limitados a executarem somente o IDS, eles podem ser mais facilmente
protegidos contra ataques. Muitas vezes estes sensores ficam rodando em uma bridge, para
tornar mais difícil a localização de um sensor por um atacante.
Vantagens dos IDSs baseados em rede
•
Poucos IDSs instalados, mas bem posicionados podem monitorar uma grande rede.
•
A instalação provoca um pequeno impacto na rede, pois eles são dispositivos passivos
que escutam a rede sem interferirem no seu funcionamento. Logo, é geralmente
simples adicionar esse tipo de IDS a uma rede.
•
Podem ser bem seguros contra ataques e ainda podem ser invisíveis a muitos
atacantes.
Desvantagens dos IDSs baseados em rede.
•
Podem ter dificuldades em processar todos os pacotes em uma rede grande e
sobrecarregada, logo, eles podem falhar no reconhecimento de um ataque lançado
durante períodos de tráfego intenso.
•
Muitas das vantagens dos IDSs baseados em rede não se aplicam as redes mais
modernas baseadas em switches, pois estes subdividem a rede em muitos segmentos e
proporcionam links dedicados entre hosts servidos pelo mesmo switch. IDSs baseados
em rede não podem analisar informações criptografadas. Este problema é crescente
visto que mais organizações (e atacantes) usam VPNs (Virtual Private Networks) e
outros meios de conexão. A maioria não pode informar quando um ataque foi bem
sucedido. Eles só podem alertar que um ataque foi iniciado, e cabe ao administrador
investigar cada host atacado para determinar de fato quais destes foram violados.
4.16.3 IDS BASEADO EM HOST
IDSs baseados em host operam sobre informações coletadas de um único host. Eles podem
analisar atividades com grande precisão, determinando exatamente que processos e usuários
62
estão envolvidos em um ataque, pois eles podem diretamente acessar e monitorar os dados e
processos do sistema que são geralmente alvo de ataques.
Vantagens dos IDSs baseados em host.
•
Com sua habilidade de monitorar eventos localmente num host, podem detectar
ataques que não são detectados por um IDS baseado em rede.
•
Podem operar em ambientes onde o tráfego seja criptografado, quando os dados são
encriptados no host antes do envio e decriptados no host após a recepção.
•
IDSs baseados em host não são afetados por switches.
Desvantagens dos IDSs baseados em host.
•
São difíceis de gerenciar, pois para cada host monitorado deve ser instalado e
configurado um IDS.
•
Desde que ao menos as fontes de informações (e algumas vezes parte do mecanismo
de análise) residam no host monitorado, o IDS pode ser atacado e desativado
mascarando assim um ataque.
•
Não são apropriados para detectar scans de rede.
•
Podem ser desativados por certos tipos de ataques de negação de serviço.
•
Consomem recursos computacionais dos hosts que estão monitorando, diminuindo a
performance dos mesmos.
•
De acordo com o método de análise os IDSs podem usar detecção baseada em
assinaturas, detecção baseada em anomalias ou uma mistura dos dois.
63
5 UMA PROPOSTA DE DETECÇÃO DE INTRUSOS PARA REDES
LOCAIS
Confidencialidade, autenticação, integridade e não-repudiação de mensagem vêm sendo
considerados componentes fundamentais da comunicação segura há bastante tempo
(MCCUMBER, 1991). Disponibilidade e controle de acesso são extensões mais recentes da
noção de comunicações seguras (MACONACHY, 2001; BISHOP, 2003), sem dúvidas
motivadas pelas preocupações muito reais com a segurança da infra-estrutura de rede contra
um potencial ataque violento dos “bandidos” (KUROSE, 2006; ROSS, 2006).
Neste trabalho vamos focar a autenticação, uma das propriedades desejáveis da comunicação
segura que tem como finalidade confirmar que a outra parte realmente é quem alega ser. A
comunicação pessoal entre seres humanos resolve facilmente esse problema por reconhecimento
visual. Quando entidades comunicantes trocam mensagens por um meio pelo qual não podem
ver a outra parte, a autenticação não e tão simples. (KUROSE,2006; ROSS, 2006).
A ferramenta utilizada foi desenvolvida em laboratório durante a elaboração do trabalho com
objetivo de simplificar a utilização e a implantação de Sistemas de Detecção de Intrusos. É
composto por módulos, conforme mostrado na figura seguinte. Cada módulo, explicados no
decorrer do trabalho, tem o seu papel bem definido e suas saídas são complementos paras as
atividades do módulo seguinte, seguindo um fluxo de sentido único.
•
Inicialização: inicializa as parametrizações iniciais do script, como lista de ACKs e
variáveis globais;
•
Varredura: fica varrendo a rede a procura de conexões de novos hosts ou a desconexão
de um host antigo;
•
1ª Validação: faz a verifica cão do MAC do IP host de acordo com a lista de ACKs;
•
2ª Validação: faz uma autenticação da conexão tentando uma conexão de confiança
entre o host e o servidor;
•
Resposta: toma uma ação ativa ou passiva para uma validação que não foi bem
sucedida;
•
Auditoria: gera logs para posterior interpretação de um administrador.
64
Figura 7: Modelo de seqüência de fluxo do IDS
5.1
PROCESSO DE INICIALIZAÇÃO
O processo de inicialização marca o início da execução do script e é responsável pelo
carregamento das listas iniciais de ACKs e variáveis globais que serão utilizadas nos outros
módulos e termina com uma autorização para início de execução de varreduras na rede.
65
5.1.1
PREPARAÇÃO DOS ARQUIVOS GLOBAIS
Nesta etapa é feita a customização de um arquivo de configuração contendo informações de
path de arquivos de configuração do DHCP, path das listagens de broacast, path das listagens
de MAC e IP homologados e tempo de varredura da rede por maquinas ativas. Será gerada
uma listagem dos MAC e IP que estão homologados no servidor DHCP. Além desta lista será
gerada uma outra lista com os IP's de BROADCAST de todas as subredes do servidor de
DHCP. Estes arquivos deverão ser atualizados toda vez que houver alterações nas subredes e
ou no arquivo de configuração do DHCP.
5.1.2
DETALHAMENTO
Pré-requisitos: ser instalado no servidor de dhcp, estar logado como root.
Este módulo é responsável pela inicialização do SSH, das variáveis e listagens préconfiguradas no arquivo de configuração MONO_CONFIG do IDS.
O primeiro passo é verificar se existe realmente um serviço de SSH executando nesta
máquina. Esta verificação pode ser feita de várias maneiras no Linux. A solução adotada
neste trabalho foi a verificação do serviço através do comando “/etc/init.d/sshd status”. Esse
método funciona porque todos os scripts em /etc/init.d/ aceitam um argumento que pode ser
"start" (iniciar), "stop" (parar), "reload" (recarregar), "restart" (reiniciar) ou "force-reload"
(forçar-recarregar) e irão portanto cumprir a tarefa indicada pelo argumento. Esses scripts
podem ser usados mesmo depois que um sistema tenha sido iniciado para controlar vários
processos. Veja exemplo na figura abaixo:
# /etc/init.d/sshd status
sshd (pid 1915) está rodando...
#
Quadro 8: Verificando se o serviço sshd está rodando
66
Se o serviço estiver ativo a mensagem retornada deverá ser parecida com a da figura acima.
Onde “sshd” é serviço que esta ativo, “(pid 1915) “ é o número de identificação do processo
no sistema operacional e a mensagem “está rodando...” indica que o serviço esta ativo no
momento.
# /etc/init.d/sshd status
sshd está parado
#
Quadro 9: Verificando se o serviço sshd está parado
Se o serviço estiver parado a mensagem retornada deverá ser parecida com a da figura acima,
onde a mensagem “sshd está parado” indica que o serviço esta parado no momento. Então deve
ser iniciado o serviço de SSH executando o comando “/etc/init.d/sshd start” para inicia-lo.
# /etc/init.d/sshd start
Iniciando sshd:
[ OK ]
#
Quadro 10: Iniciando o serviço sshd
Se o serviço for levantado normalmente o a mensagem “Iniciando sshd:” com o status de
“[OK]” deverá estar aparecendo. Caso contrário vai aparecer a mesma mensagem mas com o
status de “[FAIL]”, então uma resposta deve ser dada (ver modulo 4).
5.1.3
FORMATAÇÃO DO ARQUIVO DO SERVIDOR DHCP.
O arquivo de configuração do servidor dhcp por padrão ele possui um formato que não
facilita este trabalho nas validações que serão necessárias, como exemplo a seguir:
67
Ex:
host lab01-01
{
option subnet-mask255.255.255.0;
option domain-name-servers10.0.1.2;
option routers 10.0.1.1;
hardware ethernet00:B0:D0:50:87:06;
fixed-address 10.0.1.11;
}
host lab01-02
{
option subnet-mask255.255.255.0;
option domain-name-servers10.0.1.2;
option routers 10.0.1.1;
hardware ethernet00:B0:D0:50:88:E6;
fixed-address 10.0.1.12;
}
Quadro 11: Arquivo de configuração do servidor dhcp
Sendo assim este trabalho sugere uma formatação padrão da seguinte maneira, gerar um
arquivo a partir do dhcpd.conf para uma formatação que venha facilitar o momento da
autenticação. Este processo de formatação será efetuado todas as vezes que será necessário
utilizar o arquivo dhcp.lst, pois caso haja alguma alteração no arquivo dhcp.conf,
automaticamente o dhcpl.lst estará atualizado.
O processo de formatação funcionará da seguinte forma: efetuará uma leitura do arquivo de
configuração do dhcp.conf e identificará todos os MAC's e IP's neste arquivo e irá colocá-los
em um arquivo dhcp.lst formatado da seguinte maneira:
68
HW address
Ip address
00:11:25:7F:81:22
10.0.1.107
00:0D:9D:CC:F4:75
10.0.1.184
00:11:25:AA:AA:C1
10.0.1.12
00:13:72:5F:7B:1B
10.0.1.9
Quadro 12: Arquivo dhcp.lst
Este arquivo que ficará todos os MAC's e IP's teoricamente válidos da rede, para que o
próximo módulo possa fazer a autenticação com a tabela ARP. Cabe lembrar a importância
deste arquivo, pois ele será um dos pontos chave para o cruzamento de MAC's e IP's com
tabela ARP, dada a importância seria um boa prática de segurança efetuar uma boa
configuração do servidor para evitar acesso indevido e possíveis alterações onde ficará
armazenado.
O arquivo alterado para este formato facilitará significativamente o trabalho de validação,
visto que será validado o mac e o ip que constam no mesmo. Para efetuar esta alteração no
formato do arquivo será necessário a utilização do SED, que vem do inglês Stream Editor, ou
seja editor de fluxos, um editor de texto não interativo muito utilizado para esses trabalhos de
manipulação de arquivos texto. A seguir os comandos necessários para geração de um novo
arquivo formatado a partir do dhcpd.conf:
69
Ex:
#! /bin/bash
#
sed ':a;$!N;s/\n/ /g;ta' dhcpd.txt > teste.txt
cat teste.txt
sed 's/}/}\n/g' teste.txt > teste1.txt
cat teste1.txt
#sed 's/ //g' teste1.txt > teste2.txt
#cat teste2.txt
while read LINHA; do
echo $LINHA > teste3.txt
sed 's/;/\n/g' teste3.txt > teste4.txt
sed 's/^ //g' teste4.txt > teste5.txt
cat teste5.txt
grep 'fixed-address' teste5.txt | cut -d" " -f2 > linha_hw.txt
grep 'hardware ethernet' teste5.txt | cut -d" " -f3 >> linha_hw.txt
cat linha_hw.txt
sed ':a;$!N;s/\n/ /g;ta' linha_hw.txt >> final.txt
echo "$x $y"
done < teste1.txt
cat final.txt
Quadro 13: Script de geração do arquivo dhcp.lst
A partir desse momento, estamos com o arquivo dhcp.lst gerado a partir do arquivo dhcp.conf
preparado para efetuar a autenticação das máquinas que se encontrarem ativas na rede.
70
5.2
PROCESSO DE VARREDURA
Inicialmente o processo de varredura necessita de alguns pré-requisitos para o correto
funcionamento. O primeiro deles e a criação de um arquivo com nome de
maquinas_ativas.conf que será o local onde ficará armazenado todas as máquinas ativas da
rede. As linhas contidas nesse arquivo deverão estar no seguinte formato:
As 17 primeiras posições devem conter o endereço MAC da máquina. Ex: 00-0E-A6-38-A0DC.
A próxima posição ficará o status da validação da máquina, inicialmente ficará
F=False que indicará que a máquina esta ligada, porém não autenticada na rede. A seguir,
exemplos dos arquivos que irão efetuar a troca de informações:
IP address
10.0.1.184
10.0.1.107
10.0.1.112
10.0.1.21
HW
0x1
0x1
0x1
0x1
type Flags HW address
Mask Device
0x2 00:11:25:7F:81:22
*
eth0
0x2 00:0D:9D:CC:F4:75
*
eth0
0x2 00:11:25:AA:AA:C1
*
eth0
0x2 00:13:72:5F:7B:1B
*
eth0
Quadro 14: Exemplo do arquivo temporário com o quadro endereços IP
HW address
Status
00:11:25:7F:81:22
F
00:0D:9D:CC:F4:75
F
00:11:25:AA:AA:C1 F
00:13:72:5F:7B:1B
F
Quadro 15: Arquivo máquinas_ativas.conf
Processo de varredura do arquivo de máquinas ativas irá funcionar em duas etapas.
A primeira será verificando quais máquinas estão na tabela ARP (que geralmente fica no
diretório /etc/init.d) que ainda não estão no arquivo de máquinas ativas para posteriormente
serem adicionados no mesmo caso não seja encontrado. Na prática será efetuado um loop no
arquivo da tabela ARP, verificando linha a linha se existe no arquivo de máquinas ativas, caso
não exista adicionar a linha corrente no arquivo máquinas_ativas.conf como segue o exemplo
seguinte.
Ex:
Endereço MAC
00-0E-A6-38-A0-DC
Status
F
Quadro 16: Exemplo do arquivo máquinas_ativas.conf com uma máquina desativada na rede
71
A segunda etapa é verificar quais máquinas estão no arquivo de máquinas ativas que não
estão mais na tabela ARP, o que significa que a máquina foi desligada, sendo assim será
retirada do arquivo de máquinas ativas.
A segunda etapa será efetuada o inverso da primeira etapa, dar um loop no arquivo de
máquinas ativas e verificar se existe a linha corrente no arquivo ARP, caso a linha não exista,
removê-la do arquivo de máquinas ativas.
Endereço MAC
00-0E-A6-38-A0-DC
Status
T
Quadro 17: Exemplo do arquivo máquinas_ativas.conf com uma máquina ativa na rede
Este processo se faz necessário devido a constante dinâmica que uma rede possui, são
máquinas ligando e desligando a todo o momento, cabendo assim ao ids identificá-las e com
esta medida evita-se também a autenticação desnecessária de máquinas já autenticadas na
rede, pois, somente as máquinas que estão no arquivo maquinas_ativas.conf com o status
F=False serão autenticadas e tendo sua flag status ativada para T=True, sendo necessário
somente uma nova autenticação após a máquina ser desligada e ligada novamente.
5.3
PRIMEIRA VALIDAÇÃO
O processo da primeira validação tem como pré-requisito o arquivo de dhcp.lst devidamente
criado e formatado juntamente com o arquivo de maquinas-ativas.lst e o carregamento da
tabela arp da máquina utilizando o programa ping do protocolo icmp que envia e recebe
pacotes pela rede com a opção -b que indica que o comando está sendo executado para um
endereço de broadcast, que foi extraído previamente do arquivo broadcast.lst gerado pelo
módulo anterior onde ficará todas as subredes existentes configuradas no servidor DHCP.
72
Ex:
# ping 10.0.4.255 -b
64 bytes from 10.0.4.3: icmp_seq=1 ttl=64 time=1.62 ms
64 bytes from 10.0.4.4: icmp_seq=2 ttl=64 time=0.129 ms
64 bytes from 10.0.4.5: icmp_seq=3 ttl=64 time=0.129 ms
64 bytes from 10.0.4.6: icmp_seq=4 ttl=64 time=0.128 ms
64 bytes from 10.0.4.7: icmp_seq=5 ttl=64 time=0.127 ms
64 bytes from 10.0.4.8: icmp_seq=6 ttl=64 time=0.131 ms
64 bytes from 10.0.4.9: icmp_seq=7 ttl=64 time=0.131 ms
64 bytes from 10.0.4.10: icmp_seq=8 ttl=64 time=0.129 ms
64 bytes from 10.0.4.11: icmp_seq=9 ttl=64 time=0.128 ms
64 bytes from 10.0.4.12: icmp_seq=10 ttl=64 time=0.126 ms
64 bytes from 10.0.4.13: icmp_seq=11 ttl=64 time=0.130 ms
Quadro 18: Saída do comando ping por broadcast
Após a execução desse comando, a tabela arp da máquina onde foi executado o comando em
questão encontra-se carregada com todos os endereços de ip e mac ativos na rede naquele
determinado momento.
A partir desse momento a primeira autenticação ocorrerá da seguinte forma: verificar no
arquivo maquinas-ativas.lst a lista de mac e ip ativos com o status de autenticação igual a
F=False para fazer o cruzamento desta informação com a lista de mac e ip do arquivo
dhcp.lst.
Este procedimento será executado com o seguinte comando.
Ex:
# cat arp |cut -d " " -f1
IP
10.0.4.11
Quadro 19: Filtrando o conteúdo da tabela arp
Será efetuado um loop no arquivo maquinas-ativas.lst, para cada registro deste arquivo será
verificado se ele existe no arquivo dhcp.lst, caso não seja localizado no arquivo dhpc.lst será
gerado uma resposta que será armazenada como log para posterior análise e enviado um email para o administrador de redes para posterior análise mais detalhada. Este procedimento
será efetuado para cada maquina que se encontra ativa na rede, caso seja autenticado o mac e
ip o processo chama o módulo para segunda validação que será explicada mais adiante.
73
5.4
SEGUNDA VALIDAÇÃO
O processo de segunda validação irá ocorrer com uma relação de confiança previamente
criada entre o servidor dhcp e as máquinas ativas na rede via SSH. Após esta configuração o
servidor irá fazer uma tentativa de conexão com a máquina cliente, a conexão sendo
estabelecida a máquina automaticamente será autenticada, caso contrário será gerada uma
resposta imediatamente que será explicada detalhadamente mais adiante. A seguir alguns
conceitos e como funciona a configuração deste processo em linux.
5.4.1
SERVIDOR DE VARREDURA
O par de chaves é gerado no cliente. A chave Privada não deve ser divulgada em hipótese
nenhuma e a chave Pública pode e deve ser replicada entre todas as outras maquinas da rede.
Nota, este procedimento é voltado inteiramente para conexões SSH (existem outras
aplicações de chaves Públicas/Privadas).
♦ Gerando o par de chaves no servidor de varredura
No computador cliente execute o seguinte comando:
# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key
(/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in
/root/.ssh/id_rsa.
Your public key has been saved in
/root/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
Quadro 20: Gerando um par de chaves publica/privada
Quando perguntado para entrar com uma "passphrase", apenas tecle "Enter" duas vezes para
que fique em branco, caso contrário esta frase precisará ser digitada posteriormente.
74
Agora as duas chaves foram geradas. A chave Privada está em "/root/.ssh/id_rsa" e a Pública
em "/root/.ssh/id_rsa.pub".
♦ Configurando o servidor
Para que seja possível uma conexão SSH sem senha entre cliente e servidor, é preciso
divulgar para o servidor a chave pública gerada pelo cliente.
É possível fazer esta cópia remotamente executando os comandos descritos no quadro 21.
# scp /root/.ssh/id_rsa.pub root@servidor:/root/
(digitar senha)
# ssh root@servidor
(digitar senha)
# cat /root/id_rsa.pub >> /root/.ssh/authorized_keys
Quadro 21: Copiando a chave pública para o servidor
O Quadro 21 apresenta o procedimento de cópia do arquivo "id_rsa.pub" do cliente para o
servidor. Em seguida, é feita a cópia do conteúdo arquivo "id_rsa.pub" adicionando dentro do
arquivo "authorized_keys" do servidor.
Caso o diretório "/root/.ssh" não exista, é preciso criá-lo no servidor. É importante que a
chave pública (id_rsa.pub) seja adicionada (usando o sinal de maior maior ">>") dentro do
arquivo "authorized_keys", pois pode existir outros clientes registrados neste mesmo arquivo.
Agora as conexões SSH iniciadas pelo cliente para o servidor serão efetuadas sem a
necessidade de digitar a senha e são de confiança.
75
5.5
RESPOSTA
O módulo de resposta será responsável pela ação a ser tomada mediante ao resultado das
autenticações efetuadas. A ação a ser tomada pode ser aplicada em duas formas: a ação ativa
ou passiva.
A ação ativa é o ponto que se deve dar bastante atenção, pois toda a elaboração do modelo
fica dependente desta ação, pois ela determina o sucesso ou não de toda rotina implantada.
Esta ação vai desde o bloqueio do ip da máquina em questão na rede via iptables até um aviso
sonoro para o administrador de redes. A partir desse momento é que o administrador da rede
deve definir o nível de segurança de acordo com a necessidade de cada rede.
A ação passiva será uma ação que visa alertar o administrador de redes para que
posteriormente após uma análise da situação, tome as medidas necessárias para cada alerta. É
uma ação que fica dependente de outra ação para se concluir, por exemplo quando uma
máquina estranha se conectar a rede será emitido um sinal sonoro na máquina do
administrador de redes. Caso o administrador não tome nenhuma atitude diante desta ação,
automaticamente esta ação fica anulada, pois está diretamente dependente do administrador
de redes.
Neste trabalho a ação passiva implementada foi o envio de um e-mail
para conta do
administrador com o ip e mac da máquina que não foi autenticada na rede que visa alertá-lo
de um possível risco de ataque em eminência.
Todas essas medidas devem ser avaliadas e executadas de acordo com a especificidade de
cada rede, visando atender de forma plena cada necessidade individual.
76
5.6
AUDITORIA
O processo de auditoria é o módulo responsável por armazenar todos os eventos que ocorrem
no sistema proposto. Serão armazenadas informações tais como: data e hora de ocorrência de
um evento, que módulo originou, qual foi o evento, o que ocorreu durante o evento, houve
falha, dentre outros.
O objetivo desse módulo é auxiliar e direcionar o administrador da rede nas medidas de
segurança que devem ser adotadas de acordo com o que foi reportado pelo sistema.
O armazenamento dos arquivos de log é um ponto muito importante no que diz respeito ao
módulo de auditoria, pois eles serão os responsáveis pelo sucesso ou não do resultado de uma
boa auditoria. A seguir estão alguns pontos a serem observados na implantação de uma boa
auditoria:
O primeiro ponto é o momento da guarda das informações. A informação deve ser protegida e
de fácil acesso.
O segundo ponto é referente ao volume dessas informações a serem armazenadas. Por se
tratarem de logs de eventos a tendência desses arquivos é crescerem rapidamente
comprometendo a gravação e leitura. A sugestão é gerar um arquivo para cada dia. Dessa
forma, fica mais fácil recuperar as informações e o arquivo não ficará grande.
O terceiro ponto é a definição do nome desses arquivos, também um fator muito importante
devido ao tempo de localização de um log em caso de uma auditoria. Os arquivos se
chamarão logs_ids_data_hora.txt que serão monitorados com auxílio do agendador de tarefas
cron e o Shell script.
77
6 CONSIDERAÇÕES FINAIS E TRABALHOS FUTUROS
Este trabalho apresentou técnicas de detecção de intrusos que visam identificar ataques a uma
rede local e acionar métodos de intervenção contra o invasor.
Existe pouco material disponível sobre sistemas de detecção de intrusos em redes locais.
Portanto, o trabalho proposto busca ser uma guia para auxiliar administradores de rede que
têm interesse nessa área específica. Após as pesquisas e testes com o protótipo proposto foi
possível constatar que esse trabalho apresenta uma solução eficaz e de baixo custo para
auxiliar na detecção de intrusos em redes locais.
A solução apresentada também pode ser aplicada em redes com sistemas operacionais
proprietários. Essa seria uma alternativa de continuação desse trabalho. Uma alternativa será
desenvolver ou pesquisar ferramentas, que funcionem em ambiente de sistema proprietário,
equivalentes as que foram utilizadas na proposta apresentada.
Foi constatado que os administradores de rede precisam se preocupar mais com a segurança
da rede local, pois em determinadas circunstância o perigo está nos ataques originários da
própria rede local.
78
7 REFERÊNCIAS BIBLIOGRÁFICAS
1
[unicamp] Disponível em <http://www.dca.fee.unicamp.br/pgp/pgp.shtml>. Acesso em:
6 de maio de 2007.
2
[linhadefensiva] Disponível em <http://linh adefensiva.uol.com.br/ infzormativos/definicoes
/pgp/>. Acesso em: 6 de maio de 2007.
3
[ufrj] Disponível em <http://www.gta.ufrj.br/grad/99_2/marcos/kerberos.htm>. Acesso
em: 9 de maio de 2007.
4
[unicamp] Disponível em <http:// www. dca.fee.unicamp.br/ courses/IA368F/ 1s1998/M
onografias/luciana.html#Introduão>. Acesso em: 9 de abril de 2007.
5
[istf] Disponível em <http://www.istf.com.br/vb/archive/index.php?f-113.html>. Acesso
em: 3 de maio de 2007.
6
[geocities] Disponível em <http://br.geocities.com/cesarakg/deteccao_de_invasao.html>.
Acesso em: 2 de maio de 2007.
7
[unicamp] Disponível em <http://www.las.ic.unicamp.br/paulo/papers/>. Acesso em: 1
de maio de 2007.
8
[insecure]
Disponível
em
<http://insecure.org/nmap/man/pt-br/index.html#man-
description>. Acesso em 1 de maio de 2007.
9
[uff] Disponível em <http://www.midiacom.uff.br/~debora/redes1/index.html>. Acesso
em: 16 de maio de 2007.
10 [cert] Disponível em <http://www.cert.br/stats/incidentes/>. Acesso em: 21 de maio de
2007.
11 [10gea] 10 Gigabit Ethernet Alliance. Disponível em <http://www.10gea.org/>. Acesso
em: 15 de maio de 2007.
79
12 [ufrgs] Disponível em <http://penta.ufrgs.br/uel/douglas/dotrab1.html>. Acesso em 9 de
maio de 2007.
13 [gr952] Disponível em <http://penta.ufrgs.br/gr952/trab1/noc.html>. Acesso em: 9 de
maio de 2007.
14 [liane] Disponível em <http://penta.ufrgs.br/liane/2arp.html>. Acesso em 9 de maio de
2007.
15 [maix] Manual On-Line do AIX/UNIX – MAN. Acesso em: 9 de maio de 2007.
16 [rnp] Disponível em <http://www.pop-pr.rnp.br/tiki-index.php?page= Roteadores%20Co
mandos%20Basicos>. Acesso em: 9 de maio de 2007.
17 [wikipedia] Disponível em <http://pt.wikipedia.org>. Acesso em 9 de maio de 2007.
18 [aurelio] Disponível em <http://aurelio.net/sed/sed-HOWTO.html>. Acesso em: 9 de
maio de 2007.
19 [geocities] Disponível em <http://br.geocities.com/cesarakg/sed-1.html>. Acesso em: 9
de maio de 2007.
20 [zago] Disponível em <http://www.zago.eti.br/script/grep.html#toc3>. Acesso em: 09 de
maio de 2007.
21 [linuxmagazine] Disponível em <http://www.linuxmagazine.com.br/issue/02/papo_
botequim.pdf>. Acesso em: 9 de maio de 2007.
22
[Guia-Ethernet] Spurgeon, C. E. Ethernet – O Guia Definitivo. Campus, 2000.
23 SOARES, Luiz F; COLCHER, Sérgio; SOUZA. G. Redes de Computadores - Das
LANs, MANs e WANs às redes ATM. Editora Campus, 1995.
24 BARRETT, Daniel J; RICHARD, E. Silverman. SSH the Secure Shell The Definitive
Guide.
80
25 O’REILLY & ASSOCIATES, Inc., 101 Morris Street, Sebastopol, CA 95472. March
13, 2001.
26 KUROSE, James F; ROSS, Keith W. Redes de Computadores e a Internet: uma
abordagem top-down/ James F. Kurose, Keith W.Ross. 3. ed. Editora Pearson Addison
Wesley, 2006.
81
8 APÊNDICE
8.1
ALGUMAS FERRAMENTAS ÚTEIS
A linha de comando do sistema operacional Linux permite a realização de inúmeras tarefas
através de seus comandos, de manipulação de arquivos a verificação do tráfego em rede. Para
exibir uma descrição detalhada de cada comando abra uma console ou xterm e digite man
comando, onde comando é o comando em questão. Outro detalhe muito importante! Pratique
cada comando muitas vezes até que se torne algo natural.
Comandos de manipulação de diretório
•
mkdir: cria um diretório. Exemplo: mkdir docs;
•
rmdir: exclui um diretório (se estiver vazio);
•
rm -rf: exclui um diretório e todo o seu conteúdo (cuidado com este comando);
•
cd: entra num diretório (exemplo: cd docs) ou retorna para HOME;
•
cd ~: vai direto para o diretório home do usuário logado;
•
cd -: volta ao último diretório acessado;
•
pwd: exibe o local do diretório atual;
•
ls: listar o conteúdo do diretório;
•
ls –alh: mostra o conteúdo detalhado do diretório;
•
ls –ltr: mostra os arquivos no formado longo(l) em ordem inversa(r) de data (t);
•
du –msh: mostra o tamanho do diretório em Megabytes;
•
whereis: mostra onde se encontra determinado arquivo (binários). Exemplo: whereis
samba.
82
Comandos para manipulação de arquivos
•
cat: mostra o conteúdo de um arquivo binário ou texto;
•
tac: semelhante ao cat mas inverte a ordem;
•
tail: mostra as últimas 10 linhas de um arquivo (útil para ler logs);
•
head: mostra as primeiras 10 linhas de um arquivo;
•
less: mostra o conteúdo de um arquivo de texto com controle;
•
vi: editor de ficheiros de texto;
•
vim: versão melhorada do editor supracitado;
•
rm: remoção de arquivos (também remove diretórios);
•
cp: copia diretórios 'cp -r' copia recursivamente;
•
mv: move ou renomeia arquivos e diretórios;
•
chmod: altera as permissões de arquivos ou diretórios;
•
chown: altera o dono de arquivos ou diretórios;
•
cmd>txt: cria um novo arquivo(txt) com o resultado do comando(cmd);
•
cmd>>txt: adiciona o resultado do comando(cmd) ao fim do arquivo(txt);
•
touch: touch foo.txt - cria um arquivo foo.txt vazio; também altera data e hora de
modificação para agora;
•
> arquivo.txt: mais rápido que o touch para criação de arquivos;
•
split: divide um arquivo;
•
recode: recodifica um arquivo ex: recode iso-8859-15..utf8 file_to_change.txt.
Comandos para administração
•
man: mostra informações sobre um comando;
•
adduser: adiciona usuários;
83
•
addgroup: adiciona grupos;
•
apropos: realiza pesquisa por palavra ou string;
•
dmesg: exibe as mensagens da inicialização(log);
•
df: exibe estado de ocupação dos discos/partições;
•
find: comando de busca ex: find ~/ -cmin -3;
•
userdel: remove usuários;
•
chfn: altera informação relativa a um utilizador;
•
who: informa quem está logado no sistema;
•
whoami: informa com qual usuário você está logado;
•
passwd: modifica senha (password) de usuários;
•
umask: define padrões de criação de arquivos e diretórios;
•
ps: mostra os processos correntes;
•
ps -aux: mostra todos os processos correntes no sistema;
•
kill: mata um processo;
•
killall: mata todos os processos com o nome informado;
•
su: troca para o super-usuário root (é exigida a senha);
•
su user: troca para o usuário especificado em 'user' (é exigida a senha);
•
chown: altera a propriedade de arquivos e pastas (dono);
Comandos para administração de rede
•
ifconfig: mostra as interfaces de redes ativas e as informações relacionadas a cada uma
delas;
•
route: mostra as informações referentes as rotas;
•
mtr: mostra rota até determinado IP;
84
•
nmap: lista as portas de sistemas remotos/locais atrás de portas abertas. Pode checar
sistema operacional em execução no host remoto;
•
netstat: exibe as portas e protocolos abertos no sistema;
•
iptraf: analisador de trafego da rede com interface gráfica baseada em diálogos;
•
tcpdump: sniffer muito popular. Sniffer é uma ferramenta que "ouve" os pacotes que
estão passando pela rede;
•
Traceroute: traça uma rota do host local até o destino mostrando os roteadores
intermediários;
•
nslookup: consultas a serviços DNS;
•
dig: consultas a serviços DNS.
As ferramentas de gerência de redes é o braço direito (às vezes, o esquerdo também) no dia-adia de nossas atividades de gerência. São elas que nos ajudam a detectar problemas quando
eles ocorrem, ou antes, mesmo de ocorrerem (gerência de rede pro ativa). Gerenciar uma rede
sem o auxílio de instrumentação adequada é uma tarefa bastante árdua e que muito
provavelmente não oferecerá uma boa qualidade de gerência. Gerenciar uma rede sem
ferramenta alguma, ou com ferramentas inadequadas – que, por exemplo, não nos dêem uma
boa visão dos principais elementos da rede – é o mesmo que ir para a guerra, cego e sem
armas.
Quando não estamos bem instrumentados, não somos capazes de descobrir problemas e por
conseqüência, não seremos capazes de solucioná-los. Isso nos afastará substancialmente de
nosso objetivo, que é manter o bom funcionamento da rede.
Existem ferramentas de gerência para todos os gostos e finalidades. Com ferramentas mais
simples de gerência, ou seja, ferramentas que não nos dão uma visão geral da rede, mas que
muitas vezes nos ajudam a descobrir características mais internas de determinados elementos
da rede. Essas ferramentas são geralmente oferecidas junto com o sistema operacional de rede
dos próprios hospedeiros. São essas ferramentas que utilizaremos para desenvolver a proposta
deste trabalho.
85
Exemplos de ferramentas mais simples são traceroute, ping, route, netstat, ifconfig, arp, rarp
e outras.
Falaremos apenas das ferramentas que nós auxiliaram neste trabalho, deixando as outras
como proposta de trabalhos futuros.
ping
O ping já deve ser um velho conhecido de todos que trabalham com redes de computadores.
Ele serve para enviar requisições ICMP de "echo request" e fica escutando pelos pacotes
ICMP de "echo reply". No entanto, o ping serve também para mostrar a rota que os pacotes
ICMP fazem, tanto na "ida" quanto na "volta". Para tanto, basta utilizar a opção "-R" do ping,
como no exemplo abaixo:
# ping -c 1 -R 200.Z.Z.21
PING 200.X.X.21 (200.X.X.21) 56(124) bytes of data.
64 bytes from 200.X.X.21: icmp_seq=1 ttl=254 time=5.16 ms
RR: 200.X.X.36
200.X.Y.21
200.Z.Z.20
200.Z.Z.21
200.Z.Z.21
200.X.Y.22
200.X.X.41
200.X.X.36
--- 200.Z.Z.21 ping statistics --1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 5.165/5.165/5.165/0.000 ms
Quadro 22: Exemplo de como mostrar a rota dos pacotes ICMP com o comando ping
A opção "-c N" serve para especificar quantos "pings" queremos enviar.
Os tipos básicos de ping são:
86
Type Name Reference
0 Echo Reply
[RFC792]
1 Unassigned
[JBP]
2 Unassigned
[JBP]
3 Destination Unreachable
[RFC792]
4 Source Quench
[RFC792]
5 Redirect
[RFC792]
6 Alternate Host Address
[JBP]
7 Unassigned
[JBP]
8 Echo
[RFC792]
9 Router Advertisement
[RFC1256]
10 Router Solicitation
[RFC1256]
11 Time Exceeded
[RFC792]
12 Parameter Problem
[RFC792]
13 Timestamp
[RFC792]
14 Timestamp Reply
[RFC792]
15 Information Request
[RFC792]
16 Information Reply
[RFC792]
17 Address Mask Request
[RFC950]
18 Address Mask Reply
[RFC950]
19 Reserved (for Security)
[Solo]
20-29 Reserved (for Robustness Experiment) [ZSu]
30 Traceroute
[RFC1393]
31 Datagram Conversion Error
[RFC1475]
32 Mobile Host Redirect
[David Johnson]
33 IPv6 Where-Are-You
[Bill Simpson]
34 IPv6 I-Am-Here
[Bill Simpson]
35 Mobile Registration Request
[Bill Simpson]
36 Mobile Registration Reply
[Bill Simpson]
37 Domain Name Request
[RFC1788]
38 Domain Name Reply
[RFC1788]
39 SKIP
[Markson]
40 Photuris
[RFC2521]
41 ICMP messages utilized by experimental
[RFC4065]
mobility protocols such as Seamoby
42-255 Reserved
[JBP]
Quadro 23: Os tipos básicos de ping
arp
O comando arp serve para listar e modificar a tabela arp do kernel. A tabela arp associa
endereços IP a endereços de "hardware", (no caso do ethernet, aos MAC address). Na sua
forma mais básica, sem parâmetros, o comando arp simplesmente lista a tabela arp (utilize a
opção -n para não resolver nomes), exemplo:
87
#arp
Address HWtype ))HWaddress(( Flags Mask Iface maquina1.teste ether 00:00:0C:95:0B:00
C eth0 maquina2.teste ether 00:60:08:A1:48:A6 C eth0
Quadro 24: Comando arp
Para remover uma entrada da tabela utilize opção "-d host".exemplo:
# arp -d maquina2.teste
Quadro 25: Exemplo do comando arp -d
O comando arp permite também que entradas sejam adicionadas manualmente na tabela.
Normalmente isso não é necessário mas em algumas situações poderá ser, por exemplo,
quando configuramos uma conexão ponto-a-ponto, ou dial-up. Nesse caso é preciso que a
máquina roteadora seja capaz de aceitar pacotes que tenham como destino a outra máquina da
conexão. Para adicionarmos uma entrada usamos a opção "-s host hw_address" ou para
forçarmos que uma interface responda a requisições arp utilizando o endereço de outra (ou
dela mesmo) interface, podemos usar as opções "-i", para definir a interface, e a opção "-D",
para dizer de qual interface queremos "copiar" o endereço de hardware.
Exemplo:
# arp -s 192.168.0.3 -i eth0 -D eth0 pub
Quadro 26: Exemplo do comando arp -s
O exemplo acima faria com que a interface eth0 respondesse a requisições de arp para o
endereço 192.168.0.3 utilizando o seu próprio endereço de hardware. A opção pub faz com
que a interface passe a "divulgar" esse endereço (e não apenas a aceitar pacotes para ele).
ifconfig
O ifconfig é o principal comando para configurarmos interfaces no Linux. A sua forma geral é
"ifconfig opções | endereço". Consulte a página do manual para ver todas as opções (man
ifconfig). Veremos a seguir alguns exemplos:
88
Para listar as interfaces e seus endereços:
# ifconfig
eth1 Link encap:Ethernet HWaddr 02:60:8C:F1:EB:CF
inet addr:10.10.10.1 Bcast:10.255.255.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:858 (858.0 b) TX bytes:0 (0.0 b)
Interrupt:5 Base address:0x2440
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:55870 errors:0 dropped:0 overruns:0 frame:0
TX packets:55870 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:124540531 (118.7 ))MiB(() TX bytes:124540531 (118.7 ))MiB(()
Quadro 27: Listar as interfaces e seus endereços
Para configurar e levantar uma interface com um determinado IP:
# ifconfig eth0 10.0.0.1 netmask 255.255.255.0 up
Quadro 28: Configurar e levantar uma interface com um determinado IP
Para desabilitar uma interface:
# ifconfig eth0 down
Quadro 29: Desabilitar uma interface
Para configurar um "alias" em uma interface, juntamente com outro endereço IP:
# ifconfig eth0:1 192.168.1.1 netmask 255.255.255.0
Quadro 30: Configurar um "alias" em uma interface, juntamente com outro endereço IP
89
Para mudar a MTU de uma interface:
# ifconfig eth0 mtu 1440
Quadro 31: Mudar a MTU de uma interface
Para configurar placa com uma conexão ponto-a-ponto:
# ifconfig eth0 192.168.2.1 netmask 255.255.255.255 pointopoint 192.168.2.2
Quadro 32: Configurar placa com uma conexão ponto-a-ponto
Para colocar e retirar uma interface do modo "Promíscuo" (a interface aceita pacotes
destinados a qualquer IP):
# intertace eth0 promisc # interface eth0 -promisc
Quadro 33: Colocar e retirar uma interface do modo Promíscuo
O ifconfig também pode ser utilizado para se alterar o endereço MAC da placa! Para alterar
esse endereço é necessário que a placa esteja inativa. Exemplo:
# ifconfig eth0 down
# ifconfig eth0 hw ether 00:11:22:33:44:55
# ifconfig eth0 up
Quadro 34: Alterar o endereço MAC da placa
8.2
ALGUMAS FERRAMENTAS DE ADMINISTRAÇÃO DE SISTEMAS
Sed
sed é o mesmo que Stream EDitor ou editor de fluxo. Muito utilizado nos sistems Unix e
derivados. Ao contrário dos editores convencionais, o sed atua em linha de comandos ou em
Shell script. Pode, por exemplo, editar a terceira linha de 1000 arquivos com um só comando.
Geralmente, o sed recebe como entrada, através de um pipe, os dados sobre os quais irá atuar.
Aceita Expressões regulares, o que lhe confere maior poder, convertendo-se em uma
excelente ferramenta para administradores de sistemas.
90
Alguns exemplos:
cat ficheiro.txt | sed '4q;d'
#ou
sed '4q;d' ficheiro.txt
Quadro 35: Extrair a 4ª linha de um ficheiro
cat ficheiro.txt | sed 's/,/-/g'
ou
sed 's/,/-/g' ficheiro.txt
Quadro 36: Substituições de texto (substituir as vírgulas [,] por hífens[-])
nslookup a.root-servers.net | tail -n 1 | sed s/Address:\ \ \ \ //
Quadro 37: Pegar somente o endereço de retorno
Cat
O comando cat é usado para unir e exibir arquivos. O nome é uma forma abreviada de se
referir a concatenate (concatenar, unir). Em geral é usado desta maneira para exibir o
conteúdo de um arquivo na saída padrão:
cat arquivo
Quadro 38: Comando cat
Onde arquivo é o nome de um arquivo do diretório atual ou o nome e caminho para um
arquivo. Para cumprir o real propósito de unir arquivos, arquivo aceita caracteres curinga,
exibindo na saída padrão o conteúdo de todos os arquivos que se encaixam na expressão.
Há alguns argumentos úteis para cat, como o -n que numera todas as linhas da saída gerada ou
-b que numera apenas as linhas não brancas. O argumento -s remove linhas em brancas
repetidas e -s faz cat exibir também caracteres não imprimíveis exceto por quebra de linha e
tabulação.
grep e egrep
grep é um aplicativo para linha de comando de sistemas Unix/Linux que faz buscas no
conteúdo dos arquivos.
91
O egrep é, digamos, uma versão do grep que aceita a sintaxe moderna de expressões
regulares.
As buscas efetuadas pelos aplicativos grep e egrep atuam sobre o conteúdo dos arquivos,
podendo usar um modo de busca binária. Combinados com expressões regulares fornecem
uma ferramenta muito poderosa, considerando que nos dias atuais o tamanho dos discos
rígidos é cada vez maior e as buscas envolvendo somente extensões de arquivos são precárias.
Alguns exemplos:
grep "frase que procuro em minusculas" -r /home/xxx
grep -i "frase que procuro com maiusculas e minusculas" -r /home/xxx
grep "frase que procuro para salvar o resultado em arqfrase.txt" -r /home/xxx > arqfrase.txt
Quadro 39: Procurar uma frase em todos os arquivos de um diretório
grep -i "frase que procuro" /home/zago/guiaz/* -R
Quadro 40: Outras variações do comando grep
egrep '(umapalavra|outrapalavra)'
Quadro 41: Procurar em um arquivo as linhas que contenham uma palavra OU outra palavra
cat /var/log/squid/access.log | egrep '(extreme|gator)'
cat /var/log/squid/access.log | egrep -i '(extreme|gator)'
Quadro 42: Procurar em todo arquivo
Download

FACULDADE SALESIANA DE VITÓRIA PÓS