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