CENTRO UNIVERSITÁRIO DE ARARAQUARA – UNIARANÚCLEO DE EDUCAÇÃO A DISTÂNCIA – NEAD CURSO DE PÓS-GRADUAÇÃO MBA-GESTÃO SEGURANÇA DA INFORMAÇÃO VELISLEI ADILSON TREUK ANÁLISE PRÁTICA DO IDS SNORT Análise prática da ferramenta integrando com MySQL, Apache, PHP e ACID ARARAQUARA 2014 VELISLEI ADILSON TREUK ANÁLISE PRÁTICA DO IDS SNORT Análise prática da ferramenta integrando com MySQL, Apache, PHP e ACID Trabalho de conclusão de curso apresentado ao Centro Universitário de Araraquara como requisito para obtenção do título de MBA-Gestão Segurança da Informação. Orientador: Prof(a). Me(a).Renata Mirella Farina. ARARAQUARA 2014 DECLARAÇÃO Eu, Velislei Adilson Treuk, RG: 4.390.336-5, aluno regularmente matriculado no Curso de MBA-Gestão de Segurança da Informação do Centro Universitário de Araraquara-UNIARA, declaro ser o autor do texto apresentado como Trabalho de Conclusão de Curso-TCC com o título “Análise prática do IDS Snort”. Afirmo, também, ter seguido as normas da ABNT referentes às citações textuais que utilizei e das quais eu não sou autor, dessa forma, creditando a autoria a seus verdadeiros autores (Lei n.9.610, 19/02/1998). Através dessa declaração dou ciência de minha responsabilidade sobre o texto apresentado e assumo qualquer responsabilidade por eventuais problemas legais, no tocante aos direitos autorais e originalidade do texto. Araraquara, 25 de junho de 2014. _______________________________________ Velislei Adilson Treuk TERMO DE APROVAÇÃO VELISLEI ADILSON TREUK ANÁLISE PRÁTICA DO IDS SNORT Análise prática da ferramenta integrando com MySQL, Apache, PHP e ACID MONOGRAFIA PARA CONCLUSÃO DO CURSO DE MBA-GESTÃO DE SEGURANÇA DA INFORMAÇÃO Comissão Julgadora Presidente e Orientador ................................................................................ 2º Examinador .............................................................................................. 3º Examinador .............................................................................................. Nota: _________ Araraquara, 25 de junho de 2014. Dedico, Aos meus pais, que souberam acreditar num potencial ainda desconhecido, em meio a dúvida e dificuldades da vida, que esta criatura frágil poderia se tornar em um ser capaz de vencer as dificuldades da vida. AGRADECIMENTOS A Deus por proporcionar a oportunidade da existência e a capacidade da compreensão. A minha família, pela paciência em todos os momentos de ausência para elaboração deste trabalho, e pela compreensão pela minha falta de atenção nos momentos em que estive fisicamente presente mas que me empenhava para que pudesse realizar esta pesquisa, me auxiliando nos momentos de dificuldades em que me deparei. À professora Renata, por todo auxílio técnico, empenho e motivação. A todos que de alguma forma me ajudaram, motivando e torcendo para que esse trabalho fosse realizado com sucesso. “Sou tua criança, ó Senhor, e esta terra bela, rica e abundante, em cujo seio me puseste para dormir, é somente o berço de onde engatinho para ti.” Mikhail Naimy RESUMO Esta pesquisa pretende demonstrar o uso de técnicas de proteção(hardening) em servidores de redes Windows e Linux, com a utilização de uma ferramenta Open Source, com o objetivo de reduzir os riscos as informações contidas nestes servidores. A situação atual das organizações com relação a vulnerabilidade das informações em suas redes, principalmente quando se olha para o enorme crescimento e a velocidade com que ele acontece, o astronômico crescimento do uso de ferramentas para tentar bloquear tráfegos com potencial maliciosos ou não condizente com os interesses organizacionais efetuado por seus funcionários. Mostra também que a utilização de softwares de proteção, do tipo Open Source, é uma forma inteligente de se usar os recursos financeiros disponíveis, demonstrando sua eficiência e o enorme potencial quando corretamente utilizada. Pretendo também demonstrar as dificuldades encontradas na criação e aplicação de filtros a fim de se minimizar falsos positivos nos tráfegos indesejáveis dentro desta rede, pois a enorme variedade de tecnologias de comunicação (hardwares), o astronômico volume de informação que podemos estar monitorando e a quantidade de pessoas e departamentos da empresa em questão que podem estar, de alguma maneira, envolvidos torna esta tarefa, aparentemente simples, uma enorme dor de cabeça para o administrador da rede. Esta dissertação aborda o desafio de se tratar a grande variedades de informações, as diferentes situações em diferentes departamentos que podemos encontrar, eles são numerosos, porque os sistemas de informação de hoje não foram construídos com os requisitos de segurança desde seu início, o desafio de se administrar tudo isto quando pessoas envolvidas estão despreparadas ou resistentes a sua aplicação, pois muitas vezes tais filtros de tráfegos podem de alguma forma estar dificultando o desempenho de suas funções. Palavras-chave: Snort, MySQL, Apache, PHP, ACID, IDS, HIDS, IPS, Vulnerabilidade, Segurança de rede, Servidores; ABSTRACT This research aims to demonstrate the use of technical protection (hardening) in Windows and Linux network servers, using an Open Source tool, with the aim of reducing the risks of the information contained on these servers. The current situation of organizations regarding the vulnerability of information on their networks, especially when looking at the huge growth and the speed at which it happens, the astronomical increase in the use of tools to try to block traffic for malicious or potentially inconsistent with the interests organizational performed by its employees. Also shows that the use of protection software, the type Open Source, is a clever way to use the available financial resources, demonstrating its efficiency and great potential when used correctly. I also intend to demonstrate the difficulties in creating and applying filters in order to minimize false positives in undesirable traffic within this network because the huge variety of communication technologies (hardware), the astronomical amount of information that can be monitoring the amount of people and departments of the company in question that may be involved somehow makes this seemingly simple task, a huge headache for the network administrator. This paper addresses the challenge of addressing the huge variety of information, the different situations in different departments we can see, they are numerous, because the information systems of today were not built with security requirements since its inception, the challenge of administering all this when people involved are unprepared or resistance to its application as it often trades such filters can somehow be hindering the performance of their duties. Keywords: Snort, MySQL, Apache, PHP, ACID IDS, HIDS, IPS, Vulnerability, Network Security, Servers; LISTA DE FIGURAS Figura 1. Anatomia de um ataque 3 29 Figura 2. Rede rodando Snort e MySQL 37 Figura 3. Rede básica IDS 38 Figura 4. Logotipo do Snort 12 40 Figura 5. Funcionamento esquemático do Snort 45 Figura 6. Layout da rede de testes do Snort no Windows 47 Figura 7. Execução de varredura de portas com Nmap no Windows 49 Figura 8. Layout físico da rede de teste Snort com Linux 51 Figura 9. Topologia da rede de testes NIDS x HIDS 56 Figura 10. Gráfico do relatório de captura NIDS x HIDS 60 Figura 11. Relatório de captura da varredura Nmap na página do ACID 61 Figura b1. Teste de execução do Apache, exibição da configuração do Php 72 Figura b2. Pagina ACID, forma de criação de tabelas MySQL pelo ACID 82 Figura b3. Aparência da página do ACID após a instalação 83 LISTA DE TABELAS Tabela 1. Opções de configuração no monitoramento do Snort 43 Tabela 2. Consultando a numeração de portas de rede no Windows 47 Tabela 3. Relatório de monitoração resumido no Snort com o Windows 48 Tabela 4. Relatório de captura de pacotes de rede pelo Snort com o Windows 49 Tabela 5. Relatório de captura via console do Snort no Linux 52 Tabela 6. Relatório de captura de pacotes icmp pelo Snort 53 Tabela 7. Relatório comparativo de captura de pacotes ICMP (NIDS x HIDS) 57 Tabela 8. Comparativo do relatório de captura de pacotes Nmap (NIDS x HIDS) 58 Tabela a1. Editando arquivo de configuração do Snort 67 Tabela a2. Criação do arquivo Whitelist.rule do Snort 69 LISTA DE ABREVIATURAS ABNT Associação Brasileira de Normas técnicas AIX Sistema operacional DDoS Distributed Denial-Of-Service DNS Domain Name System HIDS Host-based Intrusion Detection System HP-UX Sistema operacional ICMP Internet Control Message Protocol IDS Intrusion Detection System IP Internet Protocol NIDS Network Intrusion Detection System TCP Transmission Control Protocol UDP User Datagram Protocol VPN Virtual Private Network SUMÁRIO RESUMO...................................................................................................................................7 ABSTRACT...............................................................................................................................8 LISTA DE FIGURAS...............................................................................................................9 LISTA DE TABELAS............................................................................................................10 LISTA DE ABREVIATURAS...............................................................................................11 1. INTRODUÇÃO...........................................................................................................15 1.1.Apresentação da Pesquisa.......................................................................................15 1.2.Problematização da pesquisa..................................................................................16 1.3.Justificativa do estudo.............................................................................................17 1.4.Objetivos.................................................................................................................18 1.5.Método de pesquisa.................................................................................................18 2. REVISÃO BIBLIOGRÁFICA...................................................................................20 2.1 O que é Informação?...............................................................................................20 2.2 Era da Informação...................................................................................................21 2.3 Era da Informação e Internet...................................................................................21 2.4 Segurança da Informação........................................................................................22 2.5 Por que a segurança da informação?.......................................................................23 2.6 Restrições de Segurança..........................................................................................24 2.7 Vulnerabilidade.......................................................................................................24 2.7.1 Vulnerabilidades em Sistemas de Computação........................................25 a)Confidencialidade...............................................................................26 b)Integridade..........................................................................................26 c)Disponibilidade...................................................................................27 2.8 Anatomia de um ataque...........................................................................................27 3. FERRAMENTAS IDS................................................................................................30 3.1 O que é um IDS.......................................................................................................30 3.2 Rede IDS ou NIDS..................................................................................................31 3.3 Host IDS ou HIDS...................................................................................................31 3.4 HIDS x NIDS..........................................................................................................32 3.5 Assinaturas..............................................................................................................33 3.6 Alertas.....................................................................................................................33 3.7 Logs.........................................................................................................................34 3.8 Alarmes Falsos........................................................................................................34 3.9 Sensor......................................................................................................................35 3.10 Falhas nos IDS......................................................................................................35 4. SISTEMAS DE DETECÇÃO DE INTRUSÃO COM SNORT..............................37 4.1 Detecção de Intrusão e Snort.............................................................................38 4.2 Regras de filtragem no Snort.............................................................................40 4.3 Declaração de variáveis.....................................................................................42 4.4 Opções de execução.........................................................................................43 4.5 Componentes do Snort......................................................................................44 5. TESTANDO O SNORT..............................................................................................46 5.1 Testando o Snort com o Windows..........................................................................46 5.2 Snort com Linux......................................................................................................51 5.3 Testando o Snort no Linux......................................................................................52 6. DESEMPENHO DO SNORT.....................................................................................55 6.1 Testando e comparando o Snort..............................................................................55 6.1.1 Envio de pacotes icmp a vítima............................................................................56 6.1.2 Varredura de portas da vítima via Nmap.............................................................58 6.1.2.1 Resultados obtidos exibidos no ACID..................................................61 CONCLUSÃO.........................................................................................................................62 REFERÊNCIAS BIBLIOGRÁFICAS..................................................................................64 APÊNDICE A..........................................................................................................................66 APÊNDICE B..........................................................................................................................70 15 Capítulo 1 INTRODUÇÃO Esta pesquisa pretende ser capaz de construir um sistema de detecção de intrusão completo, com todas as etapas de instalação e integração das diferentes ferramentas que podem trabalhar de forma direta com o Snort. No fim fazer uma comparação da capacidade de detecção do Snort instalado e configurado como HIDS em uma máquina Windows, e NIDS em um servidor Linux, ambas monitorando o mesmo ataque. A pesquisa em um servidor Linux será mais detalhada, incluindo banco de dados MySql, servidor Web Apache, linhas de código PHP e o analisador ACID, já que a maioria dos servidores são baseados em tecnologia Linux. 1.1. Apresentação da Pesquisa Ataques a computadores pessoais, servidores de rede ou o uso de métodos especializados para contornar a política de segurança de uma organização, hoje, são cada vez mais comuns em nosso dia-a-dia e uma dor de cabeça para as organizações. Então como identificar esses ataques e como reagir diante de uma situação como esta? Gerar um alerta, bloquear a atividade suspeita ou executar ambos em conjunto? A proposta desta pesquisa é um estudo do uso de IDSs do tipo Open Source para prevenir, alertar e reagir a tais ataques. Estes IDS podem vir de várias formas, visões, preços, e funções. Por razões obvias escolhemos, em nossa opinião, o melhor IDS Open Source gratuito para realizar nosso estudo. O trabalho aqui apresentado é baseado em um sistema popular de detecção de intrusão de rede (NIDS) chamado SNORT. O SNORT detecta ataques 16 comparando o tráfego de rede em tempo real, buscando por assinaturas que podem significar ataques potencialmente perigosos e já conhecidos. O objetivo desta pesquisa é estudar a eficácia dos IDS´s quando aplicada à correspondência do tráfego da Internet contra assinaturas potencialmente maliciosas, regras no SNORT. Nesta pesquisa, fizemos um estudo do uso do Snort para proteção de redes Windows e Linux, sua eficácia e seu uso em conjunto com outros softwares para torná-lo ainda mais eficiente e simplificado, tentando tirar o máximo proveito que softwares gratuitos e Open Source podem oferecer. O Snort unido ao Apache, MySQL, Php e ACID torna-se ainda mais poderoso e é uma excelente opção para defender os dados de seus servidores. 1.2. Problematização da pesquisa Esta pesquisa é sobre a utilização do aplicativo Snort. A segurança de servidores com a utilização do software em questão, ao contrário de rede ou soluções de segurança de servidores ou sistema com as características de uma aplicação própria de segurança ou dos elementos circundantes(sistema operacional de rede, firewalls, etc). A abordagem global da segurança usaria características de todos os componentes que integram o ambiente de aplicações em servidores(servidor web, banco de dados, sistema operacional), mas o estudo aqui é limitado a questões diretamente relacionadas com a aplicação. Isto não significa que todas as defesas de vulnerabilidade deve ser responsabilidade do próprio aplicativo. Iniciamos brevemente com algumas das questões relevantes ao entendimento da pesquisa, tais como: o que é informação, o que é era da informação, o que é e por que devemos ter a segurança da informação, sobre a vulnerabilidade, disponibilidade da informação, etc. 17 Em seguida entraremos no assunto focal de nosso estudo realizando um busca detalhada do software, suas características, conceitos, funcionamento e configurações necessárias ao seu funcionamento, bem como a criação de regras(filtros) de detecção de tráfegos, 1.3. Justificativa do estudo A segurança da informação é um campo muito complexo de pesquisa com uma grande quantidade de áreas desconhecidas e inexploradas. No entanto, é um importante campo para explorar. Meu interesse nesta área se deve a necessidade de se considerar o problema diariamente, o qual por ocasião de invasões já ocorridas dentro da empresa afetaram minhas atividades diretamente. O problema das ameaças a integridade e disponibilidade das informações foi um desafio para mim por muitos anos. Pelo tempo que eu me familiarizei com outros problemas de segurança da informação, tais como arrombamentos, ataques de negação de serviço, etc. Desde o primeiro momento proteção dos sistemas de informação foi o desafio mais importante, o que me motivou a pesquisar sobre este tipo de atividade. Durante a vivência de invasões em sistemas sob minha responsabilidade senti enorme e imediata necessidade em descobrir ferramentas que pudessem reverter o problema, nesta situação procurei por documentos relativos a existência e ao uso dessas ferramentas. Para minha frustração os documentos que encontrei, apesar de existirem e serem bastante significativos, não resolveram de imediato meu problema, eles eram incompletos ou complexos demais para minhas necessidades e entendimentos. Bem, diante disto percebi que se passei por esta experiência era porque havia uma lacuna a ser preenchida, e um trabalho a respeito enriqueceria meus conhecimentos sobre o assunto além de somar com mais uma pesquisa na área, o que poderia contribuir para a solução de problemas na área de das demais pessoas que possam estar passando pela mesma dificuldade. 1 1.4. Objetivos O objetivo primordial desta pesquisa é realizar um estudo da eficácia de softwares Open Source gratuitos a fim de reduzir vulnerabilidades de segurança em servidores de rede, preservando assim, as informações nas organizações. Parte deste trabalho consistiu em descobrir e formular questões e estratégias de pesquisa específicas. Lidar com as vulnerabilidades mais comuns de qualquer organização não é uma tarefa fácil, pois as variáveis envolvidas são muitas, algumas impensáveis até este momento, o que determinou os limites e os rumos desta pesquisa. Comecei com um estudo sobre os conceitos básicos de informação, vulnerabilidade, disponibilidade e integridade, etc. Conceitos que achei relevante a um entendimento básico dos meus objetivos, para depois aprofundar-se no objetivo final deste trabalho: - Estudo de aplicações IDS do tipo Open Source, mais especificamente o software Snort, em servidores Windows e Linux utilizados em conjunto com Apache, MySQL e ACID, todos gratuitos, com a finalidade de garantir a segurança das informações em uma organização, descobrindo sua eficácia, confiabilidade e segurança nesta tarefa. - Em uma segunda parte deste trabalho será demonstrado, em uma pesquisa de laboratório, sua instalação, configuração e aplicação básica em servidores Windows e Linux; 1.5. Método de pesquisa Para chegar aos objetivos, acima propostos, usando uma forma de pesquisa válida, dentro de uma metodologia de pesquisa clara e adequada é fundamental. De acordo com o trabalho: Metodologia da Pesquisa e estatística elementar da autora: Fabiana Luci De Oliveira, 1! “A metodologia de pesquisa implica conhecimentos e habilidades necessários ao pesquisador para a orientação do processo de planejamento e construção do problema, investigação, seleção de conceitos, hipóteses, técnicas de coleta e observação de dados adequados.” Diante disto podemos também entender que uma metodologia de pesquisa deve ser uma forma sistemática e bem estruturada em que uma pesquisa ou problema é resolvido. Isso inclui os métodos subjacentes de pesquisa escolhido, perguntas feitas, os dados coletados e as técnicas utilizadas para a análise de dados. A metodologia adotada por esta pesquisa foi uma combinação de métodos e processos, que estavam dentro das limitações físicas e racionais do autor, cada um dos quais foi considerado mais adequado para o determinado momento da pesquisa ou tarefa. Esta pesquisa se inicia com uma busca generalizada sobre problemas e conceitos de segurança de informações, formas de ataques e tipos de invasões em trabalhos públicos de Universidades, buscando formas, conceitos e soluções encontradas, para tomar como base. Após esta etapa, passei a procurar por conceitos mais abrangentes e específicos em livros e manuais sobre o assunto, alguns livros, foram, inclusive, adquiridos para maior entendimento do assunto, os resultados podem ser vistos no capítulo 3. Em seguida, no capítulo 4, passei a pesquisar por características de funcionamento, configurações e formas de utilização do software no próprio site do fabricante para depois passar para próxima etapa deste trabalho. Então, passei a testar o produto em laboratório, instalando e configurando em servidores reais e estudando seu comportamento. Não descrevi aqui as formas de instalação do produto e das diversas ferramentas usadas em conjunto para os testes por achar que foge um pouco do foco da pesquisa, mesmo porque há muitos documentos sobre o assunto publicado na internet. Mas, mesmo assim, como tive de executar tais instalações e configurações, as mesmas estão descritas, passo a passo, nos apêndices A e B no final deste trabalho. O resultado dos testes obtido esta descrito no capitulo 5 desta pesquisa, o qual o leitor poderá avaliar. No capítulo 6 novos testes foram executados, e da mesma forma descritos para avaliação. Desta vez os testes são comparativos, comparamos os resultados obtidos na captura de pacotes potencialmente maliciosos, no Windows e no Linux, também em configurações do tipo NIDS(Linux) e HIDS(Windows). 20 Capítulo 2 REVISÃO BIBLIOGRÁFICA Primeiro de tudo, eu gostaria de introduzir brevemente algumas das questões que acho relevante ao entendimento de minha pesquisa, tais como: o que é informação, o que é era da informação, o que é e por que devemos ter a segurança da informação, sobre a vulnerabilidade, disponibilidade da informação, etc. 2.1 O que é Informação? Desde os primórdios da civilização, a informação tem sido um componente indispensável em todas as atividades humanas, principalmente no processo produtivo 8 . Definir o significado do que realmente é “informação” não é uma tarefa fácil. Intuitivamente, a informação pode ser definida como uma sequência de símbolos, que têm algum significado para a pessoa que o recebe. As pessoas se comunicam através da troca de informações entre eles. A importância da informação pode ser avaliada quantitativamente, em função do contexto. Às vezes, a informação pode ser avaliada através de quantia monetária que pode significar tais símbolos, e esse aspecto faz troca de valores contidos na informação, os quais podem ser muito altos ou de grande importância na sociedade humana de hoje. 21 2.2 Era da Informação A sociedade humana está passando por uma transformação fundamental: a passagem da sociedade industrial para a sociedade da informação. Tecnologias da era da informação permeiam cada vez mais todas as atividades industriais e sociais e estão acelerando a globalização das economias. Competitividade industrial do mundo, os seus postos de trabalho, a sua qualidade de vida e a sustentabilidade do crescimento dependem dele, estar na vanguarda do desenvolvimento é implantar tecnologias da era da informação. Ao mesmo tempo, as tecnologias que sustentam o desenvolvimento da sociedade da informação estão em rápida evolução. Avanços no tratamento da informação e comunicação estão abrindo novas possibilidades. Há uma mudança de sistemas autônomos de informações e processos em rede 8 . 2.3 Era da Informação e Internet Já se encontravam as suas premissas no que Toffler(1980) chamou de a “nova civilização”, resultante do terceiro grande fluxo de mudança na história da humanidade – a terceira onda – que impõe um novo código de comportamento: “Essa nova civilização traz consigo novos estilos de família; modos de trabalhar, amar e viver diferentes; uma nova economia; novos conflitos políticos; e além de tudo isso igualmente uma consciência alterada” 8 . As comunicações e meios de comunicação têm um enorme impacto em nossas vidas, as tecnologias de informação e de comunicação estão se tornando cada vez mais importante. 22 Internet como um ponto focal do agrupamento das de redes está se tornando o meio mais popular para a transferência de informações. As informações e seus controles sobre elas não estão de forma alguma restritos a um pequeno grupo de especialistas. Na era da informação todo mundo precisa e utiliza informações, sejam leigos ou especialistas. É por isso que Internet não é apenas uma ferramenta da era moderna, é também o sintoma desta era. Troca de informação rápida em quase todos os segmentos da nossa vida diária ajudou a internet a passar de um meio de especialistas em informática para o hábito mais popular de nossos tempos. 2.4 Segurança da Informação Segurança sempre foi uma parte importante da nossa vida cotidiana. Ao longo da história as pessoas têm tentado proteger sua propriedade e privacidade. Com o avanço da tecnologia e o crescimento da indústria, segurança da informação tornou-se um aspecto ainda mais importante. A segurança da informação, definida como uma “área de conhecimento dedicada à proteção de ativos de informação contra acessos não autorizados, alterações indevidas ou sua indisponibilidade” 8 . De uma forma mais simples, a segurança é dada por contas de usuário e níveis de privilégios a ser atribuídas aos mesmos. Com relação às configurações de sistemas globais, portanto, os administradores devem ser capazes de gerenciar as contas de usuário que foram, por exemplo, registradas pelos próprios usuários, como mencionado acima: gerenciar contas de usuário. Baseando-se nestas contas, os usuários devem autenticar-se antes de serem autorizados a trabalhar com o sistema, ou seja, de alguma forma provarem sua autenticidade. Se um usuário for ser identificado com sucesso, o conjunto correspondente de privilégios serão liberados para o mesmo. Para a implementação prática, senhas são um meio comum de verificar a identidade de um usuário antes que acessos sejam concedidos a um sistema de informação ou 2" serviço de acordo com a autorização do usuário. A ABNT NBR ISO/IEC 17799:2005 sugere que outras tecnologias para identificação de usuário e autenticação, como biométrica, por exemplo, verificação de digitais, verificação de assinatura, e uso de tokens, por exemplo, e cartões inteligentes, estão disponíveis, e convém que sejam consideradas, se apropriado, além disso o gerenciamento seguro de chaves secretas e privadas. Convém que a autenticidade de chaves públicas seja também considerada 9 . 2.5 Por que a segurança da informação? Wilson Oliveira descreve em seu livro “Segurança da informação” que nenhuma área da informática é tão vasta e apreciada como a segurança da informação: o ponto principal da segurança leva a um outro ponto principal, o ser humano, isso mesmo, todo o processo de segurança se inicia e tem o seu término num ser humano 2 . Não adianta nada gastarmos fortunas em equipamentos e sistemas de segurança se não conhecermos quem utilizará os nossos sistemas, e quem pode ter acesso a eles mesmo sem autorização. Mesmo na época em que não havia computadores e nenhuma informação de Internet, o controle sobre a informação foi um fator significativo para a prosperidade do negócio. Agora, mais do que nunca, uma vez que todo tipo de transação esta cada vez mais dependente da tecnologia da informação, sua proteção torna-se ainda mais prioritária. O mesmo é verdadeiro para fazer negócios na Internet. Cada negócio deve ser seguro e confiável para ser bem sucedido. É necessário encontrar maneiras de prevenir violações de segurança de informação e permitir que elas se realizem de forma segura e confiável. O sistema de segurança da informação deve sempre integrar vários métodos de proteção, que vão desde medidas de segurança e administrações físicas para implementação das ferramentas de proteção sofisticadas. 24 2.6 Restrições de Segurança Segurança absoluta só é possível mediante o controle absoluto em tudo. Neste caso, todas as atividades teriam que ser registradas e controladas em tempo real para não permitir o uso fraudulento ou, pelo menos, detectar e bloquear o tráfego indesejado o mais rápido possível. No entanto, apesar da necessidade extrema na segurança, temos de respeitar um valor médio dessas medidas para que elas não se tornem uma dificuldade em vez de uma viabilidade. Isso significa que, tais medidas podem ter impactos negativos, chegando mesmo a se tornar pior que o próprio tráfego malicioso. Um controle extremo pode também impactar na privacidade de forma inaceitável o que pode interferir, também, no fluxo livre de criação das necessidades profissionais, uma autonomia de demandas. Assim, a segurança não deve ser implementada utilizando todos os mecanismos possíveis, caso contrário, ela poderia causar mais prejuízos que o próprio tráfego não autorizado. Assim, uma análise de ameaças deve ser aplicada a fim de investigar a situação ameaçada para fornecer decisões sobre o nível de segurança necessário. Precisamos perceber que a rejeição ao uso do sistema pode ser ainda pior do que falta de uma segurança perfeita. 2.7 Vulnerabilidade O significado de vulnerabilidade, em geral, é importante que seja entendida, em geral os dicionários de bolso descrevem como: Adjetivo vulnerável: exposto a ser atacado ou ferido. 25 Assim, a vulnerabilidade substantivo é a propriedade de alguém ou alguma coisa possivelmente ser prejudicada. Esta propriedade refere-se a uma entidade que pode ser prejudicada por algum tipo de dano ou perigo. Observe também que a vulnerabilidade se refere a um evento potencial que ainda não ocorreu e talvez não possa ocorrer ou mesmo nunca ocorra. Isso implica em duas dimensões adicionais: um fator de tempo e uma probabilidade. Em poucas palavras, uma vulnerabilidade declara que algo está exposto a um dano que pode ocorrer no futuro. Uma boa discussão sobre vulnerabilidade pode ser encontrada no documento: ESTUDO DE VULNERABILIDADE REGIONAL ÀS MUDANÇAS CLIMÁTICAS do Governo do estado de Minas 1 . 2.7.1 Vulnerabilidades em Sistemas de Computação Vulnerabilidade em sistemas de Computação descrever o dano potencial ameaçador a um sistema de TI. A causa deste dano pode ser atribuído a qualquer uma das quatro categorias: camada de utilização, camada de administração, camada física e a camada de software 6 . A camada de software inclui vulnerabilidades que originam do comportamento indesejado de aplicações. Um exemplo disso é a vulnerabilidade das várias versões do sistema operacional Windows, que permite que atacantes remotos possam executar comandos arbitrários em qualquer sistema vulnerável. A camada física inclui vulnerabilidades que resultam do acesso físico ao hardware no qual os aplicativos são executados. Um exemplo é o chamado "ataque de arranque a frio”. Ter acesso físico à memória de acesso aleatório (RAM) de um computador permite que um atacante possa recuperar uma senha mantida na RAM durante uma execução aplicações, mesmo depois que a máquina tenha sido desligada. 26 A camada de administração inclui vulnerabilidades causadas por procedimentos e políticas, que pode resultar em um prejuízo para o sistema. Muitas vezes, as vulnerabilidades são o resultado de políticas ruins. Um exemplo disto são os baixos requisitos de conta do usuário(senhas), sem comprimento mínimo e sem a necessidade de caracteres especiais. Isto leva aos usuários a usar palavras simples e combinações como: 'meuacesso' ou '1234', onde será a primeira combinação a ser verificado por um invasor 7 . A última, e, provavelmente, a mais prejudicial classe de vulnerabilidades são causadas pelos usuários. Não importa o quanto um software seja infalível, o hardware esteja protegido, por mais rígidas possam ser as políticas de segurança, se um usuário escreve a senha da conta em um endereço de favorito, ou em algum arquivo texto ou ainda o envie em um formulário qualquer, o sistema continua altamente vulnerável. Computador e segurança da informação, muitas vezes concentram-se nos objetivos de confidencialidade, integridade e disponibilidade (CID) de segurança 7 . a)Confidencialidade A meta de segurança que gera a necessidade de proteção contra tentativas intencionais ou acidentais de dados não autorizada para realizar leituras. Abrange dados de armazenamento, durante o processamento, e quando em trânsito. Um exemplo de violação de confidencialidade é a interceptação de informações bancárias online sobre uma suposta conexão segura. b)Integridade A meta de segurança que gera a necessidade de proteção contra as tentativas ou intencionais ou acidentais de violar a integridade dos dados (propriedade que garante que os dados não foram alterados sem autorização) ou a integridade do sistema (qualidade que um 27 sistema tem quando se realiza sua destina função de forma intacta, livre de manipulação não autorizada). Um exemplo de falha de integridade é a modificação das entradas do sistema de nome de domínio (DNS), que leva os clientes a se comunicam com o servidor errado. c)Disponibilidade A meta de segurança que gera a necessidade de proteção contra tentativas intencional ou acidental de realizar acessos e causar uma negação de serviço ou de dados. Um exemplo de falha na disponibilidade é o ataque de negação de serviço (DDoS) que derruba servidores Web. 2.8 Anatomia de um ataque Como esta pesquisa pretende estudar a forma de proteção, usando software Open Source é importante compreender as formas de ataque a uma rede. Os passos básicos de um ataque cibernético incluem reconhecimento (encontrar vulnerabilidades); intrusão (penetração efetiva da rede); inserção de malware(softwares secretamente implantados); e clean-up (limpar seus rastros) 3 . Os Malware´s que se costumam utilizar nestes ataques vem em várias formas, algumas mais nefastas do que os outras, que vão desde propagandas irritantes até assaltos potencialmente devastadores. Na fase final do ciclo de ataque, o sistema infectado de provas forenses da invasão, é, então polido a fim de apagar seus rastros, de forma que o atacante seja tão discreto quanto possível. Por exemplo, um atacante pode usar as credenciais de um usuário de confiança da rede para não acionar alarmes ao acessar o sistema, ou usar aplicativos comuns, para inserir arquivos maliciosos ou extrair informações. A meta principal desta etapa é apagar qualquer vestígio do 2 ataque ao sistema. Isto pode ser feito pela eliminação manual ou automatizada da linha de comando, desativação de alarmes, bem como a atualização ou aplicação de remendos de software desatualizado após o ataque. Além disso, muitas vezes é desencadeado vírus e worms(vermes digitais) para destruir provas potencialmente incriminatórias. Na Figura 1 podemos ver um organograma da anatomia de um ataque 3 . 2! Figura 1. Anatomia de um ataque 3 "0 Capítulo 3 FERRAMENTAS IDS Antes de entrarmos em detalhes da detecção de intrusão com Snort, acho necessário entendermos algumas definições relacionadas com a segurança. Uma compreensão básica destes termos é necessária para digerir outros conceitos de segurança que iremos tratar. 3.1 O que é um IDS Segundo Rafeeq Ur Rehman(Intrusion Detection Systems with Snort) a detecção de intrusão é um conjunto de técnicas e métodos que são usados para detectar atividades suspeitas tanto na rede como a nível de host. Pode ser um software, hardware ou a combinação de ambos, usados para detectar a atividade do intruso. Snort é uma ferramenta IDS do tipo Open Source disponível para o público em geral. Um IDS pode ter diferentes capacidades, dependendo da complexidade e sofisticação de sua rede. IDS são ferramentas que usam uma combinação de hardware e software. Vamos ver que, um IDS pode utilizar assinaturas, técnicas baseadas na anomalia ou ambos 5 . "1 3.2 Rede IDS ou NIDS NIDS são sistemas de detecção de intrusão instalados em uma rede onde os pacotes de dados, que viajam na mídia de rede, são capturados e armazenados em um banco de dados para uma análise do tráfego em busca de sinais de atividades maliciosas 5 . Ao detectar a presença de um pacote potencialmente malicioso, um alerta é gerado ao administrador, o pacote pode, também, ser registrado em arquivo ou banco de dados para uma posterior investigação forense. 3.3 Host IDS ou HIDS Sistemas de detecção de intrusão baseados em host ou HIDS são instalados como agentes em um host 10 . Este tipo de sistema monitora a atividade de trafego de um host individualmente. Enquanto um NIDS monitora o tráfego da rede um HDIS monitora somente a própria máquina, e podem ser usados em conjunto com, um complementando o outro. Alguns desses sistemas são reativos, o que significa que você configura para informar possíveis ataques somente quando algo aconteceu, outros são pró-ativos, pois capturam o tráfego de rede que vem para uma série especial em que o HIDS está instalado e gera alerta em tempo real. "2 3.4 HIDS x NIDS Será que precisamos de um NIDS ou um HIDS? A resposta é um HIDS quando pretendemos proteger somente uma máquina e um NDIS para proteger uma rede completa. A administração de uma solução HIDS necessita de muito menos conhecimento especializado enquanto NIDS é necessita de mais atenção e conhecimento especializado na configuração e implantação para não se tornarem um ponto dificuldade a rede, ou seja, ao invés de ajudar vai atrapalhar. HIDS vão registrar somente as atividades de uma máquina na rede o que fica fácil de criar filtros específicos para este tráfego conhecido, já em um NIDS vai registrar todo o tráfego das todas as máquinas da rede, a quantidade e a variedade de tráfego pode ser enorme, sem contar a grande variação de atividade desconhecida de cada usuário, onde pode ser uma atividade normal ou maliciosa. Devemos também levar em consideração a faixa de rede e custo. Se o preço é uma questão a se considerar, e sempre o é, algumas soluções NIDS são consideravelmente mais caro quando comparado com uma solução HIDS. Apesar deste estudo estar mostrando o uso de um IDS Open Source, gratuito, temos de considerar o hardware necessário a implementação de um NIDS. Um NIDS necessita de hardware dedicado, e forma um sistema que pode verificar os pacotes que viajam em um ou mais segmentos desta rede, com a finalidade de descobrir se alguma atividade mal intencionada ou anormal ocorreu. Temos de considerar ainda que um HIDS vai ser instalado em um única máquina e monitorar um tipo de sistema operacional, já um NIDS pode estar monitorando uma ampla gama de sistemas, tais como Windows, Solaris , Linux, HP-UX, AIX, etc, dentro desta rede, o que com certeza, vai dificultar ainda mais este trabalho. "" 3.5 Assinaturas Assinatura é o padrão o qual você esta a procura ou monitorando dentro do pacote de dados trafegando pela rede (impressão digital do pacote). A assinatura é utilizada para a detecção de um ou vários tipos de ataques. Por exemplo, a presença de content:”nome-cartão- crédito” em um pacote, dentro do Payload(carga de uma transmissão de dados), indo para o seu servidor web pode indicar uma atividade de intrusão. Assinaturas podem estar presentes em diferentes partes de um pacote de dados, dependendo da natureza do ataque. Normalmente os IDS dependem de assinaturas para identificar a atividade do intruso. Alguns IDS específicos precisam de atualizações do fornecedor para adicionar novas assinaturas quando um novo tipo de ataque é descoberto. Em outros, como o Snort, você pode criar suas próprias assinaturas. 3.6 Alertas Os alertas são qualquer tipo de notificação ao usuário de uma atividade de intrusão. Quando um IDS detecta um intruso, ele tem que informar administrador de rede sobre o potencial ataque. Alertas podem ser na forma de janelas pop-up, mensagens a um console, o envio de e-mail e assim por diante. Os alertas também podem ser armazenados em arquivos de registro ou bancos de dados para serem analisados, mais tarde, por especialistas em segurança. "4 3.7 Logs Quando um potencial ataque é identificado uma mensagem é gerada, estas mensagens, bem todo atividade no aplicativo podem ser registradas em um arquivo texto ou binário. Normalmente estes aplicativos possuem um diretório padrão, mas estes diretórios podem ser alterados conforme necessidades do usuário. Estes registros ficam disponíveis, em caso de necessidade, para uma verificação posterior, de ataques, falhas, alterações, etc. 3.8 Alarmes falsos Os alarmes falsos são alertas gerados erroneamente indicando a captura de um pacote potencialmente malicioso, quando na realidade não é. Por exemplo, hosts internos mal configurados podem, por vezes, transmitir mensagens que acionam uma regra resultando na geração de um falso alerta. Para evitar falsos alarmes, você tem que modificar e ajustar diferentes regras padrão. Em alguns casos pode ser necessário desabilitar algumas das regras para evitar alarmes falsos. "5 3.9 Sensor A máquina na qual um sistema de detecção de intrusão esta executando também é chamado o sensor IDS uma vez que é este o elemento da rede que fica na escuta do tráfego (sente o tráfego) da rede. Podemos definir que o sensor IDS é a máquina que esta rodando o aplicativo. 3.10 Falhas nos IDS Apesar dos IDS serem uma ferramenta muito eficaz para detecção de intrusão nas redes, algumas falhas podem ocorrer no monitoramento de sua rede quando o utilizamos na prática. Uma dessas falhas é o falso positivo, ou seja, uma emissão de alerta de intrusão não verdadeira. A outra são os falsos negativos, que são ataques verdadeiros na rede, que não detectados pelo IDS. Ambos ocorrem devido à inconsistência na geração de regras no IDS, no caso de falsos positivos podemos estar fixando uma determinada impressão digital desta rede como maliciosa, mas que na realidade não o é. Fazendo um levantamento da característica de comportamento deste tráfego onde podem conter impressões digitais potencialmente maliciosas, podemos descobrir que na realidade a intrusão não aconteceu. Tais situações, também, podem ser aproveitadas de forma maliciosa, ou seja, um atacante pode injetar uma enorme quantidade de tráfego com a intenção de acionar muitos falsos positivos, gerando confusão na análise deste tráfego por parte do administrador. Com isto, o intruso pode, então, "6 executar um ataque positivo, mas que não será detectado em função da confusão anteriormente gerada. Já os falsos negativos podem ter uma consequência imediata, pois se não foram reconhecidos pelo mecanismo de defesa, possivelmente o atacante teve êxito em sua intrusão na rede. "7 Capítulo 4 SISTEMAS DE DETECÇÃO DE INTRUSÃO COM SNORT Nossa pesquisa começou com uma introdução a conceitos de rede, internet e segurança relacionada à terminologia de detecção de intrusão, bem como de segurança de rede. Mais abaixo, na segunda parte desta pesquisa, vamos descrever as formas de funcionamento e instalações do Snort 12 em ambiente Windows e Linux, bem como seu gerenciamento, e sua utilização com banco de dados MySQL 14 , Apache 15 , PHP 16 e ACID 17 (Controle de Análise para Intrusão de Banco de Dados). Na figura 2 podemos ter uma ideia da estrutura desta configuração. Figura 2. Rede rodando Snort e MySQL " O Snort tem a capacidade de registrar os dados coletados(como alertas e outras mensagens de log) em um banco de dados, como já mencionado acima. MySQL é usado como o motor do banco de dados onde todos os dados são armazenados. Usando o servidor web Apache e ACID, você poderá analisar esses dados. A combinação de Snort, Apache, MySQL, Php e ACID torna possível registrar os dados da detecção de intrusão em um banco de dados e, em seguida, visualizar e analisar mais tarde, através de uma interface web. Na figura 3 podemos ver uma rede básica rodando os softwares que mencionamos. Figura 3. Rede básica IDS 4.1 Detecção de Intrusão e Snort Segurança é um grande problema para todas as redes nas atuais organizações. Pessoas mal intencionadas fizeram muitas tentativas bem sucedidas de derrubar redes de grandes organizações de alto perfil e serviços web. Muitos métodos foram desenvolvidos para garantir "! o funcionamento da infraestrutura de rede e comunicação através da Internet, entre eles o uso de firewalls, criptografia e redes privadas virtuais (VPN). A detecção de intrusão é uma adição relativamente nova para tais técnicas. Métodos de detecção de intrusão começaram a aparecer nos últimos anos. Usando métodos de detecção de intrusão, você pode coletar e usar informações de tipos conhecidos de ataques e descobrir se alguém está tentando atacar a rede ou máquinas da rede em particular. As informações coletadas desta forma podem ser usadas para fortalecer a segurança da rede, bem como para fins legais em investigações de crimes cibernéticos. Atualmente temos softwares de código aberto e comerciais, ambos disponíveis para esta finalidade. Muitas ferramentas de avaliação de vulnerabilidades também estão disponíveis no mercado que podem ser usados para avaliar os diferentes tipos de falhas de segurança presentes na sua rede. Um sistema de segurança abrangente é composto por várias ferramentas, incluindo: • Firewalls que são usados para bloquear entrada indesejada, bem como a saída de dados sem autorização. Há uma gama de produtos de firewall disponíveis no mercado, tanto em Open Source e como em softwares comerciais. Os softwares firewall comerciais mais populares são de Checkpoint(http://www.checkpoint.com), Cisco(http://www.cisco.com) e Netscreen (http://www.netscreen.com) 10 . O mais popular firewall Open Source é o firewall baseado em Netfilter/Iptables e pode ser adquirido em: http://www.netfilter.org. • Dos sistemas de detecção de intrusão (IDS) que estão sendo usados para descobrir se alguém invadiu ou está tentando invadir sua rede o Snort é mais popular, e está disponível no endereço: http://www.snort.org. • Ferramentas de avaliação de vulnerabilidade são usadas para localizar e fechar buracos de segurança presentes na sua rede. As informações coletadas a partir de ferramentas de avaliação de vulnerabilidade são usadas para definir regras sobre firewalls para que essas falhas de segurança sejam alteradas de forma a fortalecer a segurança contra usuários maliciosos da Internet. Existem muitas ferramentas de avaliação de vulnerabilidade, incluindo Nmap(http://www.nmap.org) 18 e Nessus(http://www.nessus.org) 10 . 40 Todas estas ferramentas podem trabalhar em conjunto e trocar informações entre si. Alguns produtos fornecem sistemas completos que consistem em todos esses produtos agrupados. Snort é software Open Source de sistema de detecção de intrusão de rede(NIDS), que está disponível sem custo. Como já mencionado acima, NIDS é o tipo de sistema de detecção de intrusão (IDS), que é usado para monitorar o tráfego de dados em toda rede de uma organização. Existem também os sistemas de detecção de intrusão baseados em host, que estão instalados em uma máquina específica, para monitorar somente o tráfego daquela máquina. Apesar de todas as investidas os métodos de detecção de intrusão ainda são novos, o Snort está classificado entre os sistemas de alta qualidade disponíveis hoje 11 . Figura 4. Logotipo Snort 12 4.2 Regras de filtragem no Snort O Snort usa arquivos texto para criar as regras de filtragem a fim de detectar os tráfegos potencialmente maliciosos dentro da rede monitorada. Para quem já trabalhou com listas de acessos em roteadores ou servidores Linux não vai ter dificuldades com elas. Basicamente essas regras seguem a estrutura: 41 • <Método> <Origem> -> <Destino> • <Método> <protocolo> <IP> <Porta> -> <IP> <Porta><Ações> Apesar do Snort fornecer arquivos de regras para download, já pré-formatados nada impede de criarmos nossas próprias regras, ajustadas as nossas necessidades, onde muitas possibilidades de ataques à rede que ainda não implementadas mas que poderão ser no futuro, então temos de ser capazes de ajustar nossas regras a essas novas formas de ataque. Abaixo analisamos algumas regras mais comuns, para maiores detalhes consulte o manual do snort 13 : • Alerte tráfego com: <protocolo icmp> <de: qualquer ip> <de: qualquer porta> -> <para: ip 192.168.1.4> <para: qualquer porta> (<emitir mensagem: “HEARTBEAT”>): alert icmp any any -> 192.168.1.4 any (msg: "HEARTBEAT";) • Alerte tráfego com: <protocolo icmp> <de: qualquer ip> <de: qualquer porta> -> <para: qualquer ip> <para: qualquer porta> (<emitir mensagem: “Ping with TTL=100”>): alert icmp any any -> any any (msg: "Ping with TTL=100";) • Alerte tráfego com: <protocolo udp> <de: qualquer ip> <de: qualquer porta> -> <para: qualquer ip> <para: qualquer faixa de portas entre 100 e 1000> alert udp any any -> any 100:1000 • Alerte tráfego com: <protocolo icmp> <de: qualquer ip> <de: qualquer porta> -> <para: 192.168.1.4/32> <para: qualquer porta>\ (<emitir mensagem: "Ping with TTL=100";>< onde pct com TTL=100;>): 42 alert icmp any any -> 192.168.1.113/32 any \(msg: "Ping with TTL=100"; ttl:100;) • Alerte <protocolo icmp> <de: onde ip diferente: 192.168.2.0/24> <de: qualquer porta> -> <para: qualquer ip> <para: qualquer porta> (<emitir mensagem: “Ping with TTL=100 ”; <onde TTL=100;>): alert icmp ![192.168.2.0/24] any -> any any \(msg: "Ping with TTL=100"; ttl: 100;) • Alerte <protocolo icmp> <de: qualquer ip> <de: qualquer porta> -> <para: ip 192.168.1.4> <para: qualquer porta> (<emitir mensagem: “HEARTBEAT”>): alert icmp ![192.168.2.0/24,192.168.8.0/24] any -> any any (msg: "Ping with TTL=100"; ttl: 100;) • Alerte tráfego com <protocolo tcp> <de: qualquer ip> <de: qualquer porta> -> <para: ip 192.168.1.4> <para: porta 139> (<emitir mensagem: “Cartão VISA”;><contendo(payload):”VISA”;>): alert tcp any any → any 139 (msg:”Cartão VISA”; content:”VISA”;) 4.3 Declaração de variáveis O Snort permite, também, que declaremos variáveis que serão interpretadas pelo software no momento do carregamento dos arquivos de configuração e filtragem, abaixo segue alguns exemplos, para maiores detalhes convém consultar o manual do snort 13 : 4" • Var, ipvar, portvar o var RULES_PATH rules/ o portvar MY_PORTS [22,80,1024:1050] o ipvar MY_NET [192.168.1.0/24,10.1.1.0/24] o alert tcp any any -> $MY_NET $MY_PORTS (flags:S; msg:"SYN packet";) o include $RULE_PATH/example.rule o ipvar FAIXA 10:100 o alert tcp any any -> any $FAIXA (msg:"Tráfego na faixa de porta";) 4.4 Opções de execução O Snort possui muitas variações de monitoração que podem ser indicadas no momento da ativação ou via configuração no arquivo /Snort/snort.conf, na tabela 1 esta descrito algumas opções, usadas nos testes desta pesquisa, retiradas do manual do fabricante 13 : Tabela 1. Opções de configuração no monitoramento do Snort Opção Descrição -iX Monitorar tráfego da Interface(-i) número(X) -l Indica que monitoramento vai ser gravado em um log para o diretório informado -v v - apresenta no console o estado do snort 44 -b b - os pacotes que contém o tráfego com conteúdo classificado são guardados no formato tcpdump(ferramenta utilizada para monitorar tráfego). -c c - indica que vai ser usado arquivo de regras. -A console -A console: Envia alertas "estilo rápido" para o console (tela). -K Chaves <tipo> -d Apresenta os dados da camada aplicação presentes em cada pacote capturado. -T Chaves Raízes para diretório especificado -W Lista placas de rede disponíveis Abaixo segue alguns exemplos de execução: • c:\Snort\bin>snort –W • c:\Snort\bin>snort –v –i2 • c:\Snort\bin>snort -i2 -s -l c:\snort\log\ -c c:\snort\etc\snort.conf • c:\Snort\bin>snort -i2 -s -l c:\snort\log\ -c c:\snort\etc\snort.conf –T • c:\Snort\bin>snort -A console -i2 -c c:\snort\etc\snort.conf -l c:\snort\log -K ascii 4.5 Componentes do Snort Snort é logicamente dividido em vários componentes. Estes componentes trabalham juntos para detectar ataques de maliciosos e para gerar a saída em um formato adequado a 45 partir do tráfego detectado pelo sistema. Um IDS baseado em Haxixe consiste dos seguintes componentes principais: • Decodificador de pacotes • Pré-processadores • Motor de Detecção • Registro e Sistema de Alerta • Módulos de saída Figura 4 mostra como esses componentes são organizados. Qualquer pacote de dados que vem a partir da Internet entra no descodificador de pacotes. Em seu caminho para os módulos de saída, ele pode ser descartado, registrado em um arquivo de log ou ter um alerta gerado. Figura 5. Funcionamento esquemático do Snort 46 Capítulo 5 TESTANDO O SNORT Como já mencionamos acima, o Snort possui muitas varáveis de configuração, plataformas e formas de execução, neste capítulo será demonstrado uma forma básica de utilização nas duas plataformas mais conhecidas, Windows e Linux. O teste demonstrado é um teste básico, e não descreve a forma de instalação das diversas ferramentas usadas e, em alguns casos, necessárias. A instalação destas ferramentas, bem como do próprio Snort foi descrita no Apêndice A e B. 5.1 Testando o Snort com o Windows Nosso teste em questão foi feito em laboratório de informática com a configuração física da figura 6 abaixo. Inicialmente executamos o comando C:\Snort\bin>snort –W para verificarmos a numeração das portas instaladas na máquina Windows, como estamos usando um notebook para nossos testes temos mais de uma forma de conexão com a rede, sem fio e cabeada. 47 Figura 6. Layout da rede de testes do Snort no Windows Tabela 2. Consultando a numeração de portas de rede no Windows C:\Snort\bin>snort -W ,,_ -*> Snort! <*- o" )~ Version 2.9.6.0-WIN32 GRE (Build 47) '''' By Martin Roesch & The Snort Team: http://www.snort.org/snort/snort-team Copyright (C) 2014 Cisco and/or its affiliates. All rights reserved. Copyright (C) 1998-2013 Sourcefire, Inc., et al. Using PCRE version: 8.10 2010-06-25 Using ZLIB version: 1.2.3 Index Physical Address IP Address Device Name Description ----- ---------------- ---------- ----------- ----------- 1 00:00:00:00:00:00 0000:0000:fe80:0000:0000:0000:b42b:91d5 \Device\NPF_{94A86EBE-51C5-4655-8D49-B9E9B3EFC32E} Microsoft 2 00:1C:25:40:1C:D6 0000:0000:fe80:0000:0000:0000:6dc9:6779 \Device\NPF_{819C9DF1-025E-457B-82A1-FFE7763182A9} Intel(R) 82566MM Gigabit Network Connection 3 00:00:00:00:00:00 0000:0000:fe80:0000:0000:0000:cd09:b5c2 \Device\NPF_{FF11040E-B410-4B5E-BD6F-ABC63D75D681} Microsoft Editamos o arquivo \snort\rules\blacklist.rules e incluímos a regra, indicada abaixo, para pegarmos qualquer pacote ICMP direncionado para o IP de nossa máquina de teste: 4 alert ICMP any any -> 192.168.1.4 any Para o teste em questão vamos executar o Snort com o comando c:\Snort\bin>snort –v –i1 <crtl+C>: finalize Com uma máquina virtual simulamos um ataque enviando pacotes ICMP para nossa máquina monitorada: C:\ping –t 192.168.1.4 Na finalização obtemos o relatório resumido na tabela 3 abaixo: Tabela 3. Relatório de monitoração resumido no Snort ... =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ 04/19-11:06:05.578645 192.168.1.6 -> 192.168.1.4 ICMP TTL:128 TOS:0x0 ID:294 IpLen:20 DgmLen:60 Type:8 Code:0 ID:512 Seq:45568 ECHO =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ 04/19-11:06:05.578848 192.168.1.4 -> 192.168.1.6 ICMP TTL:64 TOS:0x0 ID:3783 IpLen:20 DgmLen:60 Type:0 Code:0 ID:512 Seq:45568 ECHO REPLY =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ *** Caught Int-Signal ========================================================================== Run time for packet processing was 210.587000 seconds Snort processed 494 packets. Snort ran for 0 days 0 hours 3 minutes 30 seconds Pkts/min: 164 Pkts/sec: 2 ========================================================================== Packet I/O Totals: Received: 494 Analyzed: 494 (100.000%) … ========================================================================== Breakdown by protocol (includes rebuilt packets): Eth: 494 (100.000%) VLAN: 0 ( 0.000%) IP4: 461 ( 93.320%) Frag: 0 ( 0.000%) ICMP: 332 ( 67.206%) <Número de pacotes icmp capturados> UDP: 56 ( 11.336%) 4! TCP: 73 ( 14.777%) … ARP: 33 ( 6.680%) ... Total: 494 Novamente de uma máquina virtual simulamos um ataque agora utilizando o Nmap 18 para fazer uma varredura em nossa máquina. O Nmap é um software de varredura de rede, muito utilizado para testes de segurança, é gratuito, de fácil instalação e pode ser adquirido no site: http://nmap.org/download.html, bem como sua documentação e manuais de utilização. A execução da varredura de portas em nossa máquina pode ser visto na figura 7. Figura 7. Execução de varredura de portas com Nmap no Windows Tabela 4. Relatório de captura de pacotes de rede pelo Snort com o Windows =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ 04/19-11:15:35.703141 192.168.1.4 -> 192.168.1.6 ICMP TTL:64 TOS:0x0 ID:5506 IpLen:20 DgmLen:70 Type:3 Code:3 DESTINATION UNREACHABLE: PORT UNREACHABLE ** ORIGINAL DATAGRAM DUMP: 192.168.1.6:1125 -> 192.168.1.4:55520 UDP TTL:128 TOS:0x0 ID:675 IpLen:20 DgmLen:42 Len: 14 Csum: 22370 (14 more bytes of original packet) ** END OF DUMP =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ 04/19-11:15:35.709878 192.168.1.6:1126 -> 192.168.1.4:30643 UDP TTL:128 TOS:0x0 ID:676 IpLen:20 DgmLen:42 Len: 14 50 =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ 04/19-11:15:45.091050 192.168.1.4:57364 -> 192.168.1.1:53 UDP TTL:64 TOS:0x0 ID:5507 IpLen:20 DgmLen:63 Len: 35 =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ 04/19-11:15:45.134338 192.168.1.1:53 -> 192.168.1.4:57364 UDP TTL:64 TOS:0x0 ID:0 IpLen:20 DgmLen:106 DF Len: 78 =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ *** Caught Int-Signal ========================================================================== Run time for packet processing was 152.668000 seconds Snort processed 3085 packets. Snort ran for 0 days 0 hours 2 minutes 32 seconds Pkts/min: 1542 Pkts/sec: 20 ========================================================================== Packet I/O Totals: Received: 3084 Analyzed: 3085 (100.032%) Dropped: 0 ( 0.000%) Filtered: 0 ( 0.000%) Outstanding: 0 ( 0.000%) Injected: 0 ========================================================================== Breakdown by protocol (includes rebuilt packets): Eth: 3085 (100.000%) VLAN: 0 ( 0.000%) IP4: 3048 ( 98.801%) Frag: 0 ( 0.000%) ICMP: 27 ( 0.875%) UDP: 59 ( 1.912%) TCP: 2962 ( 96.013%) IP6: 7 ( 0.227%) IP6 Ext: 7 ( 0.227%) … UDP6: 7 ( 0.227%) … ARP: 30 ( 0.972%) … Total: 3085 ========================================================================== Snort exiting 51 5.2 Snort com Linux Como já foi mencionado acima, a implementação do Snort com Linux pode ser muito mais eficaz e definitivamente mais barato, pois ambos os sistemas são gratuitos e de código aberto, o que nos possibilita ajustes as nossas necessidades. É conhecido que a utilização de servidores Linux, além de mais baratos, são muito mais viáveis na rede, devido seu baixo custo, maior estabilidade, e ferramentas adequadas a servidores. No apêndice B desta pesquisa esta descrito a instalação, e configuração detalha do Snort em um servidor Linux o qual foi executado nos testes de laboratório. A fim de obter o máximo proveito do Snort, foi testado sua implementação em conjunto com MySql, Php, Apache e ACID, ferramentas OpenSource e, obviamente, gratuitas. O layout de nossa rede física de testes esta demonstrado na figura 8. Figura 8. Layout físico da rede de teste Snort com Linux 52 5.3 Testando o Snort no Linux Com as rotinas acima executadas, em nossa pesquisa, já podemos testar o Snort no modo console com emissão de logs. Para tanto executamos um teste simples, somente para visualizar as formas de visualização emitidas pelo Snort na captura de pacotes icmp. De um terminal executamos ping continuo com o comando: $ ping www.google.com.br Em outro terminal aberto executamos o Snort com o comando abaixo, deixamos rodar por um tempo e interrompemos com ctrl+C. $ sudo snort –v –ieth0 O Relatório emitido no console pelo Snort foi, de forma resumida, o visualizado na tabela 5 abaixo: Tabela 5. Relatório de captura via console do Snort no Linux =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ 04/22-17:57:39.678320 192.168.1.4:46394 -> 200.255.122.6:53 UDP TTL:64 TOS:0x0 ID:0 IpLen:20 DgmLen:73 DF Len: 45 =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ 04/22-17:57:39.682943 200.255.122.6:53 -> 192.168.1.4:46394 UDP TTL:121 TOS:0x0 ID:31631 IpLen:20 DgmLen:112 Len: 84 =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ ^C*** Caught Int-Signal 04/22-17:57:40.510084 192.168.1.4 -> 173.194.37.159 ICMP TTL:64 TOS:0x0 ID:0 IpLen:20 DgmLen:84 DF Type:8 Code:0 ID:2422 Seq:250 ECHO =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+ ========================================================================== Run time for packet processing was 19.462665 seconds Snort processed 176 packets. 5" Snort ran for 0 days 0 hours 0 minutes 19 seconds Pkts/sec: 9 ========================================================================= Packet I/O Totals: Received: 176 Analyzed: 176 (100.000%) Injected: 0 ========================================================================= Breakdown by protocol (includes rebuilt packets): Eth: 176 (100.000%) VLAN: 0 ( 0.000%) IP4: 115 ( 65.341%) Frag: 0 ( 0.000%) ICMP: 40 ( 22.727%) ... UDP: 73 ( 41.477%) TCP: 0 ( 0.000%) IP6: 31 ( 17.614%) IP6 Ext: 31 ( 17.614%) ICMP6: 2 ( 1.136%) UDP6: 29 ( 16.477%) ... ARP: 18 ( 10.227%) ... Eth Loop: 2 ( 1.136%) Other: 12 ( 6.818%) Bad Chk Sum: 26 ( 14.773%) Total: 176 ========================================================================= Snort exiting Depois usamos o comando abaixo relacionado, para novamente executar o Snort e ver a diferença ao rodar o mesmo. Com estes pequenos testes, pudemos visualizar que a captura dos pacotes icmp's são os mesmos, somente a forma de apresentação ao administrador da rede é que mudou, que ser visto na Tabela 6. Tabela 6. Relatório de captura de pacotes icmp pelo Snort $ sudo snort -q -A console -i eth0 -c /etc/snort/snort.conf -l /var/log/snort/ ^C*** Caught Int-Signal root@Voyager:~# snort -q -A console -i eth0 -c /etc/snort/snort.conf -l /var/log/snort/ … 04/22-18:15:22.960885 [Priority: 0] {ICMP} 192.168.1.4 -> 173.194.37.159 04/22-18:15:23.111180 [Priority: 0] {ICMP} 173.194.37.159 -> 192.168.1.4 04/22-18:15:23.116865 [Priority: 0] {ICMP} 192.168.1.4 -> 10.142.176.108 04/22-18:15:23.961478 [Priority: 0] {ICMP} 192.168.1.4 -> 173.194.37.159 04/22-18:15:24.116671 [Priority: 0] {ICMP} 173.194.37.159 -> 192.168.1.4 04/22-18:15:24.961467 [Priority: 0] {ICMP} 192.168.1.4 -> 173.194.37.159 04/22-18:15:25.111700 [Priority: 0] {ICMP} 173.194.37.159 -> 192.168.1.4 54 04/22-18:15:25.962137 [Priority: 0] {ICMP} 192.168.1.4 -> 173.194.37.159 04/22-18:15:26.111732 [Priority: 0] {ICMP} 173.194.37.159 -> 192.168.1.4 ^C*** Caught Int-Signal 55 Capítulo 6 DESEMPENHO DO SNORT Ao longo do tempo muitas ferramentas de segurança foram criadas para plataformas Linux/Unix, por razões históricas e muitas vezes por custo de implementação já conhecidas do leitor. Esta pesquisa não pretende mudar hábitos, conceitos e tradições, mas somente mostrar as várias possibilidades que nossa ferramenta de Detecção de Intrusão fornece e, também, mostrar ao leitor que tal implementação pode ser um opção para fortalecer a segurança dentro de uma organização com o uso testado aqui, ou seja, o Snort rodando como HIDS em uma máquina Windows, em conjunto com um servidor Linux rodando NIDS dentro da mesma rede. Felizmente, para as intenções desta pesquisa, algumas funcionalidades do Snort foram portadas para o Windows, possibilitando assim uma proposta de fortalecimento na segurança. 6.1 Testando e comparando o Snort Para finalizar foi criado um ambiente de testes em uma rede local com 3 máquinas onde as mesmas rodavam Snort com diferentes plataformas, configurações e recursos instalados. O objetivo era comparar o desempenho e medir a eficácia do Snort em situações mais ou menos reais e também demonstrar a possibilidade de usá-lo em conjunto com redes NIDS e HIDS. • Nossa vítima(PcV) é um notebook Acer Intel i3, 2.8 Ghz, memória RAM de 6Gb, rodando Windows Home Basic com Snort rodando como HIDS. 56 • Nosso sensor(PcS) de rede é um notebook Lenovo T61, com Intel core 2 Duo 2.0 Ghz, com memória RAM de 3Gb, e sistema operacional Linux Ubuntu 12.0.4, rodando Snort na configuração NIDS. Também temos os recursos Apache, MySQL, Php e ACID rodando nesta máquina; • A Atacante(PcA) é um notebook Asus Intel i5, com 2.8Ghz, memória RAM de 4Gb, rodando Windows 8 e, também, rodando Nmap 4.6.5; A configuração física de nossa rede de testes pode ser vista na figura 9 abaixo: Figura 9. Topologia da rede de testes NIDS x HIDS 6.1.1 Envio de pacotes icmp a vítima Inicialmente a máquina atacante(PcA) envia pacotes ICMP de reconhecimento a nossa máquina vítima(PcV), o relatório de captura obtida em ambas as máquinas(PcV, PcS) que monitoravam os pacotes, foi exibido na tabela 7 abaixo: 57 Tabela7. Relatório comparativo de captura de pacotes ICMP (NIDS x HIDS) PcV – Máq.Windows(HIDS) PcS – Servidor Linux(NIDS) Run time for packet processing was 235.341 sec Snort processed 979 pck. Snort ran for 0 days 0 hours 3 minutes 55 sec Pkts/min: 326 Pkts/sec: 4 =================================== Packet I/O Totals: Received: 988 Analyzed: 979 ( 99.089%) Dropped: 0 ( 0.000%) Filtered: 0 ( 0.000%) Outstanding: 9 ( 0.911%) Injected: 0 =================================== Breakdown by protocol (includes rebuilt pck): Eth: 979 (100.000%) VLAN: 0 ( 0.000%) IP4: 946 ( 96.629%) Frag: 0 ( 0.000%) ICMP: 482 ( 49.234%) UDP: 109 ( 11.134%) TCP: 355 ( 36.261%) IP6: 3 ( 0.306%) IP6 Ext: 3 ( 0.306%) IP6 Opts: 0 ( 0.000%) Frag6: 0 ( 0.000%) ICMP6: 0 ( 0.000%) UDP6: 3 ( 0.306%) TCP6: 0 ( 0.000%) Teredo: 0 ( 0.000%) ICMP-IP: 0 ( 0.000%) EAPOL: 0 ( 0.000%) IP4/IP4: 0 ( 0.000%) IP4/IP6: 0 ( 0.000%) IP6/IP4: 0 ( 0.000%) IP6/IP6: 0 ( 0.000%) GRE: 0 ( 0.000%) GRE Eth: 0 ( 0.000%) GRE VLAN: 0 ( 0.000%) GRE IP4: 0 ( 0.000%) GRE IP6: 0 ( 0.000%) GRE IP6 Ext: 0 ( 0.000%) Run time for packet processing was 233.224 sec Snort processed 593 pck. Snort ran for 0 days 0 hours 3 minutes 53 sec Pkts/min: 197 Pkts/sec: 2 =================================== Packet I/O Totals: Received: 594 Analyzed: 593 ( 99.832%) Dropped: 0 ( 0.000%) Filtered: 0 ( 0.000%) Outstanding: 1 ( 0.168%) Injected: 0 =================================== Breakdown by protocol (includes rebuilt pck): Eth: 593 (100.000%) VLAN: 0 ( 0.000%) IP4: 570 ( 96.121%) Frag: 0 ( 0.000%) ICMP: 462 ( 77.909%) UDP: 70 ( 11.804%) TCP: 38 ( 6.408%) IP6: 3 ( 0.506%) IP6 Ext: 3 ( 0.506%) IP6 Opts: 0 ( 0.000%) Frag6: 0 ( 0.000%) ICMP6: 0 ( 0.000%) UDP6: 3 ( 0.506%) TCP6: 0 ( 0.000%) Teredo: 0 ( 0.000%) ICMP-IP: 0 ( 0.000%) EAPOL: 0 ( 0.000%) IP4/IP4: 0 ( 0.000%) IP4/IP6: 0 ( 0.000%) IP6/IP4: 0 ( 0.000%) IP6/IP6: 0 ( 0.000%) GRE: 0 ( 0.000%) GRE Eth: 0 ( 0.000%) GRE VLAN: 0 ( 0.000%) GRE IP4: 0 ( 0.000%) GRE IP6: 0 ( 0.000%) GRE IP6 Ext: 0 ( 0.000%) 5 GRE PPTP: 0 ( 0.000%) GRE ARP: 0 ( 0.000%) GRE IPX: 0 ( 0.000%) GRE Loop: 0 ( 0.000%) MPLS: 0 ( 0.000%) ARP: 30 ( 3.064%) IPX: 0 ( 0.000%) Eth Loop: 0 ( 0.000%) Eth Disc: 0 ( 0.000%) IP4 Disc: 0 ( 0.000%) IP6 Disc: 0 ( 0.000%) TCP Disc: 0 ( 0.000%) UDP Disc: 0 ( 0.000%) ICMP Disc: 0 ( 0.000%) All Discard: 0 ( 0.000%) Other: 0 ( 0.000%) Bad Chk Sum: 503 ( 51.379%) Bad TTL: 0 ( 0.000%) S5 G 1: 0 ( 0.000%) S5 G 2: 0 ( 0.000%) Total: 979 =================================== Snort exiting GRE PPTP: 0 ( 0.000%) GRE ARP: 0 ( 0.000%) GRE IPX: 0 ( 0.000%) GRE Loop: 0 ( 0.000%) MPLS: 0 ( 0.000%) ARP: 20 ( 3.373%) IPX: 0 ( 0.000%) Eth Loop: 0 ( 0.000%) Eth Disc: 0 ( 0.000%) IP4 Disc: 0 ( 0.000%) IP6 Disc: 0 ( 0.000%) TCP Disc: 0 ( 0.000%) UDP Disc: 0 ( 0.000%) ICMP Disc: 0 ( 0.000%) All Discard: 0 ( 0.000%) Other: 0 ( 0.000%) Bad Chk Sum: 10 ( 1.686%) Bad TTL: 0 ( 0.000%) S5 G 1: 0 ( 0.000%) S5 G 2: 0 ( 0.000%) Total: 593 =================================== Snort exiting 6.1.2 Varredura de portas da vítima via Nmap Depois do ataque inicial, nosso “Hacker”, o PcA, executa uma varredura de portas em nossa vítima(PcV) – novamente os resultados obtidos esta exibido, de forma resumida, na tabelas 8. Tabela 8. Comparativo do relatório de captura de pacotes Nmap (NIDS x HIDS) PcV – Máq.Windows(HIDS) PcS – Servidor Linux(NIDS) ============================================= Run time for packet processing was 118.694000 ============================================= Run time for packet processing was 123.156623 5! seconds Snort processed 3011 packets. Snort ran for 0 days 0 hours 1 minutes 58 sec Pkts/min: 3011 Pkts/sec: 25 Packet I/O Totals: Received: 3012 Analyzed: 3011 ( 99.967%) Dropped: 0 ( 0.000%) Filtered: 0 ( 0.000%) Outstanding: 1 ( 0.033%) Injected: 0 ============================================= Breakdown by protocol (includes rebuilt pck): Eth: 3011 (100.000%) VLAN: 0 ( 0.000%) IP4: 2997 ( 99.535%) Frag: 0 ( 0.000%) ICMP: 6 ( 0.199%) UDP: 66 ( 2.192%) TCP: 2925 ( 97.144%) IP6: 0 ( 0.000%) IP6 Ext: 0 ( 0.000%) IP6 Opts: 0 ( 0.000%) Frag6: 0 ( 0.000%) ICMP6: 0 ( 0.000%) UDP6: 0 ( 0.000%) TCP6: 0 ( 0.000%) Teredo: 0 ( 0.000%) ICMP-IP: 0 ( 0.000%) EAPOL: 0 ( 0.000%) IP4/IP4: 0 ( 0.000%) IP4/IP6: 0 ( 0.000%) IP6/IP4: 0 ( 0.000%) IP6/IP6: 0 ( 0.000%) GRE: 0 ( 0.000%) GRE Eth: 0 ( 0.000%) GRE VLAN: 0 ( 0.000%) GRE IP4: 0 ( 0.000%) GRE IP6: 0 ( 0.000%) GRE IP6 Ext: 0 ( 0.000%) GRE PPTP: 0 ( 0.000%) GRE ARP: 0 ( 0.000%) GRE IPX: 0 ( 0.000%) GRE Loop: 0 ( 0.000%) MPLS: 0 ( 0.000%) ARP: 14 ( 0.465%) IPX: 0 ( 0.000%) seconds Snort processed 2865 packets. Snort ran for 0 days 0 hours 2 minutes 3 sec Pkts/min: 1432 Pkts/sec: 23 Packet I/O Totals: Received: 2865 Analyzed: 2865 (100.000%) Dropped: 0 ( 0.000%) Filtered: 0 ( 0.000%) Outstanding: 0 ( 0.000%) Injected: 0 ============================================= Breakdown by protocol (includes rebuilt pck): Eth: 2865 (100.000%) VLAN: 0 ( 0.000%) IP4: 2856 ( 99.686%) Frag: 0 ( 0.000%) ICMP: 6 ( 0.209%) UDP: 51 ( 1.780%) TCP: 2799 ( 97.696%) IP6: 0 ( 0.000%) IP6 Ext: 0 ( 0.000%) IP6 Opts: 0 ( 0.000%) Frag6: 0 ( 0.000%) ICMP6: 0 ( 0.000%) UDP6: 0 ( 0.000%) TCP6: 0 ( 0.000%) Teredo: 0 ( 0.000%) ICMP-IP: 0 ( 0.000%) EAPOL: 0 ( 0.000%) IP4/IP4: 0 ( 0.000%) IP4/IP6: 0 ( 0.000%) IP6/IP4: 0 ( 0.000%) IP6/IP6: 0 ( 0.000%) GRE: 0 ( 0.000%) GRE Eth: 0 ( 0.000%) GRE VLAN: 0 ( 0.000%) GRE IP4: 0 ( 0.000%) GRE IP6: 0 ( 0.000%) GRE IP6 Ext: 0 ( 0.000%) GRE PPTP: 0 ( 0.000%) GRE ARP: 0 ( 0.000%) GRE IPX: 0 ( 0.000%) GRE Loop: 0 ( 0.000%) MPLS: 0 ( 0.000%) ARP: 9 ( 0.314%) IPX: 0 ( 0.000%) 60 Eth Loop: 0 ( 0.000%) Eth Disc: 0 ( 0.000%) IP4 Disc: 0 ( 0.000%) IP6 Disc: 0 ( 0.000%) TCP Disc: 0 ( 0.000%) UDP Disc: 0 ( 0.000%) ICMP Disc: 0 ( 0.000%) All Discard: 0 ( 0.000%) Other: 0 ( 0.000%) Bad Chk Sum: 1491 ( 49.518%) Bad TTL: 0 ( 0.000%) S5 G 1: 0 ( 0.000%) S5 G 2: 0 ( 0.000%) Total: 3011 ==================================== Snort exiting Eth Loop: 0 ( 0.000%) Eth Disc: 0 ( 0.000%) IP4 Disc: 0 ( 0.000%) IP6 Disc: 0 ( 0.000%) TCP Disc: 0 ( 0.000%) UDP Disc: 0 ( 0.000%) ICMP Disc: 0 ( 0.000%) All Discard: 0 ( 0.000%) Other: 0 ( 0.000%) Bad Chk Sum: 5 ( 0.175%) Bad TTL: 0 ( 0.000%) S5 G 1: 0 ( 0.000%) S5 G 2: 0 ( 0.000%) Total: 2865 =================================== Snort exiting Na figura 10 podemos ver o mesmo relatório de captura comparando os dois resultados, exatamente no mesmo momento e no mesmo ataque, nas versões: NIDS(Servidor Linux) e HIDS(Máquina Windows). Figura 10. Gráfico do relatório de captura NIDS x HIDS 61 6.1.2.1 Resultados obtidos exibidos no ACID Na figura 11 foi exibido os mesmos resultados obtidos acima, pela captura do Snort, mas agora na página do ACID. Como já mencionado acima, o ACID é uma ferramenta de análise, que pode ser usado em conjunto com o Snort o qual fornece relatório de captura, mas agora num formato web mais facilitado ao administrador de rede. O ACID esta funcionando em conjunto com o Apache, MySQL e PHP, os dados, da captura, estão agora armazenados em tabelas MySQL e são exibidos em página web para apreciação e análise. Figura 11. Exibição do relatório de captura da varredura Nmap na página do ACID 62 Capítulo 7 CONCLUSÃO Com a demonstração das formas de ataque que uma rede de informação pode sofrer, exibido no capítulo 2, só se pode concluir que, evitar ataques a um sistema de informação é uma tarefa difícil, mas é possível minimizar os riscos tomando algumas ações dentro deste sistema. Uma delas, que, aliás, foi o foco de nossa pesquisa, é o uso de boas ferramentas de detecção de intrusão(IDS). Também foi possível observar, durante o desenvolvimento desta pesquisa, que o uso isolado, ainda que seja a melhor ferramenta IDS, que em minha opinião encontra-se o Snort, não é o bastante para garantir a segurança de qualquer sistema, pois as variáveis envolvidas são muitas, indo desde falhas de softwares, sistemas mal projetados, comportamento inadequado de usuários até o despreparo do administrador da rede em questão. Não tenho dúvida quanto a eficácia do Snort, tenho mais confiança ainda quando utilizado em conjunto com demais sistemas como Linux, Apache, MySQL e ACID. Sua relevância torna- se ainda mais importante pelo fato de ser gratuito, Open Source e possuir sistemas, de mesma categoria, que podem ser utilizados em conjunto. O fato de ser gratuito, o que dispensa qualquer comentário, abre possibilidade de uso do mesmo, por qualquer nível ou porte de uma rede, pois está acessível desde as maiores organizações até um usuário isolado e desconhecido. Isto contribui para diminuir a confiança de um atacante inescrupuloso, pois a cada ataque bem sucedido iria aumentar sua motivação para continuar, alimentando o ciclo do potencial de risco de ataque as redes. A isto podemos comparar com uma espécie de imunização de grupo, onde a diminuição dos casos contribui potencialmente para eliminação completa da ocorrência dos mesmos, pela diminuição do agente de infecção. 6" Quanto a ferramenta ser Open Source só vem a somar em seus pontos positivos, pois o fato de um software possuir seus códigos abertos possui dois pontos a favor de um administrador de rede: • A primeira é o fato que um código aberto possibilita uma avaliação, por um especialista, da existência ou não de rotinas potencialmente maliciosas nos mesmos, ou ainda, rotinas falhas que possam comprometer a segurança na sua utilização; • A segunda é a possibilidade de fazermos ajustes ou correções nas linhas de códigos, o que pode ser uma alteração para ajustarmos as nossas necessidades ou alguma correção, que julgarmos potencialmente insegura para nossa aplicação. Outro resultado importante deste trabalho foi a identificação da eficácia do Snort, principalmente quando utilizado em conjunto com Linux, Apache, MySQL, Php e ACID, obtido na comparação de resultados feitos em laboratórios que pode ser visto no apêndice A e B. Nestes testes simulamos um ataque a uma rede Windows somente com Snort, e em uma rede Linux com Snort, Apache, MySQL, Php e ACID instalados. O resultado dos testes demonstraram uma completa eficácia na detecção dos ataques simulados, com Snort rodando em Windows tanto quanto o Snort rodando em Linux, mas que neste caso tivemos um ganho com relação a facilidade atribuída ao administrador por ocasião das ferramentas de apoio(Apache, MySQL, Php e ACID). 64 REFERÊNCIAS BIBLIOGRÁFICAS 1 2014 Fundação Estadual do Meio Ambiente – FEAM, Estudo de vulnerabilidade regional às mudanças climáticas - Belo Horizonte, Governo de Minas, 2014. 2 Wilson Oliveira, Segurança da Informação Técnicas e Soluções, Centro Atlântico, 1 ed. Portugal/2001 3 Joel Scambray; Stuart McClure; George Kurtz; Hackers Expostos, Makron Books, 4 ed. 2001. 4 Paulo Augusto Moda Lari; Dino Macedo Amaral; Snort, MySQL, Apache e ACID, Brasport, 1 ed. 2004. 5 Rafeeq Ur Rehman, Advanced IDS Techniques Using Snort, Apache, MySQL, PHP, and ACID, Pearson Education, Inc, Publishing as Prentice Hall PTR, 2003. 6 Pedro Tavares Silva, Hugo Carvalho e Catarina Botelho Torres, Segurança dos Sistemas de Informação - Gestão Estratégica da Segurança Empresarial, Centro Atlântico, Lda., 1 ed. Portugal/2003. 7 Tribunal de Contas da União - TCU, Boas Práticas em Segurança da informação, 4 ed. Brasília, 2012. 8 Presidência da República, Secretaria de Assuntos Estratégicos, Desafios estratégicos para segurança e defesa cibernética, Brasília, 1 ed. 2011. 9 ABNT NBR ISO/IEC 17799, Tecnologia da informação — Técnicas de segurança — Código de prática para a gestão da segurança da informação, ed. 2005. 65 10 Andrew R. Baker; Joel Esler; Snort Intrusion Detection and Prevention Toolkit, Syngress Publishing, Inc. 1ed. 2007. 11 The Snort Project, SNORT R Users Manual 2.9.6, December, 2013 12 IDS, fonte: http://www.snort.org/. Acesso em mai/2014. 13 IDS, fonte: http://www.snort.org/docs. Acesso em mai/2014. 14 Banco de dados, fonte: http://www.mysql.org. Acesso em mai/2014. 15 Servidor Web, fonte: http://www.apache.org/. Acesso em mai/2014. 16 Interpretador de códigos, fonte: http://www.php.net/. Acesso em mai/2014. 17 Ferramenta de análise, fonte: http://www.cert.org/kb/acid. Acesso em mai/2014 18 Ferramenta de análise de portas, fonte: http://nmap.org/download.html. Acesso em mai/2014 66 APÊNDICE A Instalando o Snort com Windows Como já foi pré-relatado acima, para nosso teste utilizamos uma máquina com processador Intel core i3 2.3Ghz, com 6Gbyte de RAM rodando Windows 7 Home Basic 64bits: Para executar uma instalação básica do Snort em um sistema Windows, neste exemplo, foi necessário fazer o download de alguns programas. Primeiro foi baixado o executável do Snort para Windows, que é possível adquirir gratuitamente no site: www.snort.org. Depois, para o Snort funcionar corretamente, foi necessário colocar o cartão de interface de rede (NIC) em modo promíscuo onde se pode ver todo o tráfego de rede para destinado a esta máquina. Para fazer isso no Windows, foi executado o download da biblioteca: “Windows Captura de pacotes” do WinPCap(http://www.winpcap.org) e, após, instalá-lo. Mais abaixo, no apêndice desta pesquisa, está descrito um passo a passo de todos os processos, arquivos e configurações necessárias para o uso do Snort com o Windows. Entre no endereço: http://www.snort.org/snort-downloads, baixe o arquivo: Snort_2_9_6_0_Installer.exe, como é um arquivo executável, para instalá-lo basta rodá-lo. O Snort usa o Winpcap para ter acesso a comunicação de baixo nível e possibilitar a captura do tráfego que passa pela sua placa de rede, então precisamos instalá-lo para que possa ser usado em conjunto com o Snort. Este software é quem estende o sistema operacional para fornecer acesso à rede em baixo nível, também fornece a biblioteca que é usada para acessar facilmente as camadas de rede, permitindo acesso a rede para se comunicar com as interface de seu PC, faça download deste arquivo em: http://www.winpcap.org/install/default.htm e o instale, simplesmente executando-o. 67 Configurando o Snort com Windows Depois de instalado o Snort vai necessitar de algumas alterações em sua configuração para rodar corretamente no Windows. Você vai perceber que todos os diretórios vem configurados para rodar em Linux, o que no momento não é o nosso caso. Antes de ajustarmos nossa configuração, precisamos acertar alguns diretórios, então vá até o diretório: /Snort/lib/ e crie as pastas: snort_dynamicengine; snort_dynamicrules O Snort vai precisar destas pastas para armazenar alguns arquivos, dinamicamente, durante a monitoração. Acertado as pastas vamos à configuração, com um editor de texto abra o arquivo snort.conf que se encontra no diretório: .../Snort/etc e ajuste as linhas abaixo. Para quem é iniciante no assunto, é interessante ressaltar que as linhas iniciadas por # são linhas de comentário ou bloqueadas, ou seja, o software ao ler o arquivo vai ignorá-las durante a execução. Note também que deixamos a linha original do arquivo e incluímos nossas linhas atualizadas e desbloqueadas, servindo nossas necessidades. Tabela a1. Editando arquivo de configuração do Snort #<endereço IP de sua máquina> # Setup the network addresses you are protecting #ipvar HOME_NET any var HOME_NET 192.168.1.4/24 # <endereço de seu DNS> # List of DNS servers on your network #ipvar DNS_SERVERS $HOME_NET var DNS_SERVERS 200.255.122.6 #<diretórios> #such as: c:\snort\rules #var RULE_PATH ../rules var RULE_PATH C:\Snort\rules 6 #var SO_RULE_PATH ../so_rules var SO_RULE_PATH C:\Snort\so_rules #var PREPROC_RULE_PATH ../preproc_rules var PREPROC_RULE_PATH C:\Snort\preproc_rules # path to base preprocessor engine #dynamicengine /usr/local/lib/snort_dynamicengine/libsf_engine.so dynamicengine C:\Snort\lib\snort_dynamicengine\sf_engine.dll # path to dynamic rules libraries #dynamicdetection directory /usr/local/lib/snort_dynamicrules dynamicdetection directory C:\Snort\lib\snort_dynamicrules #<Desabilitar os Normatize> #preprocessor normalize_ip4 #preprocessor normalize_tcp: ips ecn stream #preprocessor normalize_icmp4 #preprocessor normalize_ip6 #preprocessor normalize_icmp6 # <Ajuste o nome do: whitelist.rules e blacklist.rules> # Reputation preprocessor. For more information see README.reputation preprocessor reputation: \ memcap 500, \ priority whitelist, \ nested_ip inner, \ whitelist $WHITE_LIST_PATH/whitelist.rules, \ blacklist $BLACK_LIST_PATH/blacklist.rules #<Ajuste a saída dos logs> # syslog # output alert_syslog: LOG_AUTH LOG_ALERT output alert_syslog: host=127.0.0.1:514, LOG_AUTH LOG_ALERT Também vamos necessitar dos arquivos das regras de filtragem, este arquivo pode ser baixado em: http://www.snort.org/snort-rules/, são arquivos texto e seu download é cobrado, vamos descrever sua instalação para fins de documentação e para nossos testes vamos nos dispor dos recursos do laboratório de informática de Universidade Local. Depois de baixado o arquivo(snortrules-snapshot-29xx.tar.gz), descompacte-o e copie as pastas geradas com seus respectivos conteúdos: /etc, /rules, /so_rules e /preproc_rules para dentro da pasta no Snort (/Snort). Também foi necessário criar um arquivo texto chamado whitelist.rules e salvo dentro da pasta /Snort/rules/, no momento não vamos utilizá-la, é somente para satisfazer o chamado a ela que 6! o snort faz em sua configuração, durante a execução. Este arquivo serve para informar a lista de regras testadas e que estão liberadas, normalmente servem para indicar que falsos positivos, já analisados, tem seus tráfegos liberados dentro da rede. Tabela a2. Criação do arquivo Whitelist.rule do Snort #---------------------- # MY WHITELIST RULES #---------------------- 70 APÊNDICE B O servidor Linux Nosso servidor de teste esta rodando em uma máquina Lenovo T61 com processador Intel core 2 Duo 2Ghz, RAM de 3Gbyte e Linux Ubuntu 12.0.4 LTS, kernel 3.2.0-29-generic. O Ubuntu pode ser adquirido gratuitamente no endereço: http://www.ubuntu.com/download/server; Antes de iniciar a instalação dos pacotes vamos atualizar nossa versão recém instada do Ubuntu 12, inicialmente verificamos a versão do kernel que esta rodando com: root@Voyager:~# uname -a Linux Voyager 3.2.0-29-generic #46-Ubuntu SMP Fri Jul 27 17:03:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux Depois, atualizamos o Linux com o comando: $ sudo apt-get update A instalação do MySql, Apache e Php Para facilitar nosso trabalho utilizamos o LAMP que é um pacote para Linux que já contém o trio: Mysql(banco de dados), Apache(servidor web) e PHP(bibliotecas de interpretação de códigos). A sigla L.A.M.P. se refere a Linux, Apache, Mysql e Php, em 71 Windows temos a versão WAMP, que tem a mesma funcionalidade, significado e igualmente gratuito. Para instalar os pacotes do Lamp digite o comando abaixo num terminal: $ sudo apt-get install lamp-server^ Durante a instalação dos pacotes Lamp o sistema solicitou a configuração de uma senha para o usuário “root”, usamos a senha “admin”: New password for the MySQL "root" user: admin Com a rotina acima acabamos de instalar os pacotes Mysql, Apache e PHP, para prosseguir vamos testar o funcionamento do servidor Web Apache. Para isto criamos um arquivo php, demosntrado abaixo, a fim de executar uma função que vai nos dar todas as informações sobre o php, assim poderemos testar o Apache e o PHP. $ cd /var $ sudo chmod 777 www $ gedit www/info.php <?Php infophp(); ?> Após termos salvo o arquivo disparamos o teste digitando o endereço: http://localhost/info.php em nosso navegador web e visualizamos a figura b1 abaixo com informações sobre nosso PHP. Note que a rotina que executamos acima é somente para testes, em uma situação normal este arquivo deve ser excluído ou protegido por senha pois contém informações importantes sobre seu servidor, informações que poderão ser facilmente roubadas por pessoas mal- intencionadas. 72 Figura b1. Teste de execução do Apache, exibição da configuração do Php Instalação do Phpmyadmin O Phpmyadmin é uma ferramenta de administração do banco de dados Mysql, esta ferramenta é opcional mas resolvemos instalá-la para facilitar o gerenciamento da instalação e testes. Com ela poderemos visualizar o estado do banco de dados e as tabelas do Snort no Mysql. Para instalá-la use o comando: $ apt-get install phpmyadmin O sistema vai solicitar um servidor Web para rodar em conjunto com Phpmyadmin, escolha a opção: Apache. 7" Tambám vai solicitar se você deseja Configurar a base de dados para phpmyadmin com dbconfig-common? Responda com: N; Configurando privilégios Após a rotina acima vamos criar nosso banco de dados Snort e configurar os privilégios de acesso a este banco para que o snort possa acessá-lo durante a execução do mesmo. Para executar esta tarefa seguimos os passos a seguir: $ sudo mysql -u root -p $ password: <senha criada acima durante a instalação no nosso caso: admin> $ mysql> create database snort; $ mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON snort.* TO 'usr_snort'@'localhost' IDENTIFIED BY 'sn_snort'; $ mysql> FLUSH PRIVILEGES; $ mysql> quit; Instalando o Snort Depois de todas as retinas acima descritas, finalmente chegamos ao ponto focal de nossos testes, a instalação do Snort. O processo é simples e muito similar aos demais, para isto digitamos o comando abaixo: $ sudo apt-get -y install snort-mysql 74 Durante a instalação do mesmo algumas definições de parâmetros nos foram solicitadas, para tanto informamos os parâmetros abaixo: • Gama de endereços para a rede local: 192.168.1.0/24 <nossa rede de testes> • Deseja configurar uma base de dados para o snort-mysql fazer registos? N <Não, pois vamos configurá-la posteriormente> Gerando as tabelas do Snort no Mysql Nas rotinas acima descritas nós já criamos o banco de dados Snort no Mysql, mas ainda não temos as tabelas dentro deste BD necessárias ao armazenamento de nossos eventos. Podemos conferir isto entrando via console no Mysql: $ mysql –u root –p $ password: <admin> $ mysql>use snort; $ mysql>show tables; $ exit; Ou, visualizando-as no Phpmyadmin em um navegador qualquer no endereço: http://localhost/phpmyadmin Felizmente os idealizadores do Snort já pensaram nisso também, e as tabelas necessárias, com seus formatos adequados, podem ser geradas automaticamente com o comando que usamos abaixo: 75 $ sudo pushd /usr/share/doc/snort-mysql <entra no dir> # zcat create_mysql.gz | mysql -u usr_snort -p snort Enter password: <pw definida acima para o snort: sn_snort> # The syntax is: mysql -u <username> -p <prompt for password> <database> $ popd <volta a raiz> Ajustando a configuração do Snort Para que o Snort envie os eventos ao banco de dados Mysql precisamos informar isto a ele. Para tanto é necessário alterar a configuração do Snort, informando o local para saída de eventos, o nome do banco de dados, o nome de usuário e a senha para o acesso. Se você acompanhou o relato de nossos testes desde o início, vai lembrar que criamos o BD e as tabelas, configuramos um usuário e uma senha para o Snort, bem como, atribuímos os previlégios necessários para que o mesmo manipule este banco de dados sem problemas. O arquivo de configuração do Snort fica na pasta: /etc/snort/snort.conf. Nós podemos fazer esta alteração de 2 maneiras: via editor de texto qualquer ou via comando, listado abaixo. Antes de inciarmos a alteração do arquivo vamos liberar os privilégios da pasta e do arquivo para não termos problemas, para isto digitamos os comandos abaixo: $ sudo cd /etc etc#chmod 777 snort etc#cd snort etc/snort#chmod 777 snort.conf Ajustamos a configuração com o comando abaixo: #sed -i "s/output\ log_tcpdump:\ tcpdump.log/#output\ log_tcpdump:\ tcpdump.log\noutput\ database:\ log,\ mysql, user=usr_snort password=sn_snort dbname=snort host=localhost/" /etc/snort/snort.conf 76 Depois entramos no arquivo com um editor de texto para conferir se as linhas de configuração foram alteradas com sucesso, conforme pode ser visto abaixo: output database: log, mysql, dbname=snort user=usr_snort password=sn_snort host=localhost Feito isto o Snort esta pronto para funcionar, mas antes de o colocarmos a prova precisamos remover um arquivo de sinalização, criado durante os processos de manipulação com o banco de dados Mysql, desta forma o Snort saberá que nosso banco de dados esta pronto para rodar. Para tanto digitamos o comando: $ sudo rm -rf /etc/snort/db-pending-config Então inciamos a execução do Snort: $ sudo /etc/init.d/snort start $ sudo /etc/init.d/snort status * Status of snort daemon(s) [OK] Regras de filtragem Perceba que, diferente do Windows, no Linux não precisamos baixar separadamente os arquivos de regras de filtragem, nem mesmo precisamos pagar por elas. Como o Snort é nativo do Linux, esses arquivos já vem instalados e configurados, mas podemos ajustá-los as nossas necessidades se assim o desejarmos. Para nossa pesquisa fizemos algumas alterações, 77 somente para fins de teste pois as regras básicas já vem configuradas e possuem atualizações periódicas, conforme surge novos conceitos de ataques. Para ajustar os arquivos de regras de filtragem executamos o procedimento abaixo para liberar os privilégios da pasta e do arquivo, depois abrimos o arquivo com um editor de texto: $ sudo cd /etc/snort etc/snort#chmod 777 rules etc/snort#cd rules etc/snort/rules#chmos 777 icmp.rules etc/snort/rules#gedit icmp.rules Incluímos a linha: alert icmp any any -> 192.168.1.4 any Instalando o ACID Com o Mysql, Apache, Php e Snort instalados, configurados e testados, podemos prosseguir com nossos testes. 7 O ACID Rafeeq Ur Rehman em seu livro Intrusion Detection Systems with Snort define o ACID como sendo um sistema de coleta e análise de informações do tipo Home Page(PHP) muito bonito. Criado para trabalhar, coletar e analisar informações de um banco de dados e apresentá-lo através de uma interface web. O usuário irá utilizar um navegador web para interagir com ACID. O ACID precisa de um servidor WEB(Apache), um banco de dados(MySQL) e o interpretador PHP instalados, os quais já instalamos, configuramos e testamos acima, então estamos preparados para prosseguir com nosso trabalho. Para instalarmos o ACID digitamos seguinte comando em nosso terminal: $ sudo apt-get -y install acidbase Nossa instalação solicitou somente 2 parâmetros, os quais informamos com as respostas listadas abaixo: • Tipo de base de dados a ser utilizada por acidbase: 1. mysql • Palavra-passe da aplicação MySQL para acidbase: sn_snort 7! Configurando o ACID O ACID necessita de algumas configurações de ajustes a nossa rede em uso, para isto executamos as rotinas abaixo a fim de ajustar os privilégios da pasta e do arquivo, para depois editar os arquivos envolvidos. Pode-se fazer isto de duas formas: via comando ou via edição com um editor de textos qualquer, resolvi fazer via comando e conferir com um editor de texto: $ cd /etc $ sudo chmos 777 acidbase $ cd acidbase $ sudo chmod 777 apache.conf $ cd $ sudo sed -i "s#allow\ from\ 127.0.0.0/255.0.0.0#allow\ from\ 127.0.0.0/255.0.0.0\ 192.168.1.4/255.255.255.0#" /etc/acidbase/apache.conf $ cd /etc/acidbase $ gedit apache.conf Visualizamos o script abaixo: <IfModule mod_alias.c> Alias /acidbase "/usr/share/acidbase" </IfModule> <DirectoryMatch /usr/share/acidbase/> Options +FollowSymLinks AllowOverride None order deny,allow deny from all 0 allow from 127.0.0.0/255.0.0.0 192.168.1.4/255.255.255.0 192.168.1.4/255.255.255.0 <IfModule mod_php5.c> php_flag magic_quotes_gpc Off php_flag track_vars On php_value include_path .:/usr/share/php </IfModule> </DirectoryMatch> Reiniciamos o servidor web com o comando: $ sudo /etc/init.d/apache2 restart Ajuste dos parâmetros de autenticação do ACID Precisamos ajustar as informações de conexão do ACID com nosso banco de dados snort dentro do MySql, para isto editamos o arquivo base_conf.php, de forma parecida com a descrita acima, ajustando usuário, senha, host e : /etc/acidbase$ sudo chmod 777 base_conf.php /etc/acidbase$ gedit base_conf.php ... /* Archive DB connection parameters */ $archive_exists = 1; # Set this to 1 if you have an archive DB $archive_dbname = 'snort'; 1 $archive_host = 'localhost'; $archive_port = ''; $archive_user = 'root'; $archive_password = 'admin'; /etc/acidbase/database.php $alert_user='usr_snort'; $alert_password='sn_snort'; $basepath=''; $alert_dbname='snort'; $alert_host=''; $alert_port=''; $Dbtype='mysql'; Houve uma certa dificuldade para se saber se estávamos usando o login e senha corretos, então criamos o uma rotina em php, que listamos abaixo, para testar nossa conexão com o Mysql. $ cd /etc/acidbase $ sudo gedit testeacesso.php <?php /* Teste de autenticação no BD “snort” */ define('MYSQL_HOST','localhost'); define('MYSQL_USER','usr_snort'); define('MYSQL_PASS','sn_snort'); define('MYSQL_DB','snort'); if(!mysql_connect (MYSQL_HOST, MYSQL_USER, MYSQL_PASS)){ die (mysql_error()); } else{ echo"Autenticacao OK !";} mysql_select_db(MYSQL_DB); ?> 2 Depois acessar nossa página de teste pelo endereço: http://localhost/testeacesso.php e confirmar a autenticação de nosso login e senha, anteriormente configurados. Feito isto estamos prontos para iniciar o ACID, para tanto acessei o mesmo pelo endereço: http://localhost/acidbase/base_db_setup.php para criar algumas tabelas necessárias ao seu funcionamento. Este procedimento foi muito fácil, bastou clicar no Botão mostrado na figura b2 abaixo: Figura b2. Pagina ACID, forma de criação de tabelas MySQL pelo ACID Depois acessamos a página principal: http://localhost/acidbase/base_main.php e temos a imagem da página na figura b3 Abaixo: " Figura b3. Aparência da página do ACID após a iinstalação Testando com nmap root@Voyager:~# apt-get install nmap root@Voyager:~# nmap -p1-65535 -sV -sS -O snort.home.local Vá no arquivo /etc/snort/snort.conf e bloqueie a linha: #include $RULE_PATH/community- virus.rules root@Voyager:~#snort -q -A console -i wlan0 -c /etc/snort/snort.conf -l /var/log/snort/