79
MShield: Sistema de Segurança Linux para Usuário Final Trabalho de Conclusão de Curso apresentado à UTFPR como requisito parcial para obtenção do título de Tecnólogo em Informática. Curitiba 2007

MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

  • Upload
    lehanh

  • View
    223

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

MShield:Sistema de Segurança Linux para Usuário Final

Trabalho de Conclusão de Curso apresentado à UTFPR

como requisito parcial para obtenção do título de Tecnólogo

em Informática.

Curitiba2007

Page 2: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

Rodrigo Polesso

MShield:Sistema de Segurança Linux para Usuário Final

Trabalho de Conclusão de Curso apresentado à UTFPR

como requisito parcial para obtenção do título de Tecnólogo

em Informática.

Orientadora:Professora MSc. Ana Cristina Barreiras Kochem Vendramin

Curitiba2007

Page 3: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

MShield:Sistema de Segurança Linux para Usuário Final

Trabalho de Conclusão de Curso apresentado à UTFPR como requisito parcial para obtenção do título de Tecnólogo em Informática.

Data de Aprovação:____/____/______

Banca Examinadora:

___________________Profª MSc. Ana Cristina Barreiras Kochem Vendramin(Orientadora)UTFPR-DAINF

___________________Prof. Paulo Bordin UTFPR-DAINF

___________________Prof. Christian Carlos Souza MendesUTFPR-DAINF

___________________Profª Drª Gilda Maria Souza Friedlaender(Coordenadora de Trabalho de Conclusão de Curso)UTFPR-DAINF

Curitiba2007

Page 4: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

"A potência intelectual de um homem

se mede pela dose de humor que ele

é capaz de usar."

(Nietzsche)

Page 5: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

DEDICATÓRIA

A todos aqueles que importam

Page 6: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

AGRADECIMENTOS

Agradeço a todos que contribuíram direta ou indiretamente para que este trabalho

fosse desenvolvido. Especial agradecimento a minha família pelo apoio em todos

momentos da minha vida, a professora Ana Cristina Kochem Vendramin pela orientação,

contribuição, cobrança e correção do trabalho, ao Tiago Almeida Barboza de Souza pelas

dicas de openoffice e ao Tiago Salem Herrmann pela ajuda de sempre em Bash, etc.

Agradeço também a comunidade do Software Livre pelo desenvolvimento das

ferramentas usadas como base para este trabalho.

Page 7: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

SUMÁRIO

1 INTRODUÇÃO...................................................................................................................................121.1 Objetivo.........................................................................................................................................141.2 Trabalhos Relacionados................................................................................................................141.3 Estrutura do documento................................................................................................................15

2 ANÁLISE DO SISTEMA....................................................................................................................162.1 Diagrama de Contexto..................................................................................................................162.2 Diagrama de fluxo de dados - Nível 1..........................................................................................162.3 Diagrama de fluxo de dados - Nível 2..........................................................................................17

3 FERRAMENTAS................................................................................................................................183.1 Iptables .........................................................................................................................................183.2 Snort..............................................................................................................................................183.3 Snort_inline...................................................................................................................................193.4 Oinkmaster....................................................................................................................................203.5 Rrdtools.........................................................................................................................................203.6 Pmgraph........................................................................................................................................203.7 Ipqueue..........................................................................................................................................21

4 O SISTEMA DE SEGURANÇA MSHIELD.....................................................................................224.1 Instalação e Configuração............................................................................................................224.3 Integração......................................................................................................................................264.4 Funcionamento.............................................................................................................................274.5 Relatório........................................................................................................................................294.6 Telas do sistema............................................................................................................................30

5 ANÁLISE DE DESEMPENHO...........................................................................................................415.1 Memória........................................................................................................................................415.2 Processador...................................................................................................................................42

6 CONCLUSÃO E TRABALHOS FUTUROS......................................................................................44REFERÊNCIAS......................................................................................................................................45APÊNDICE A – Script de Instalação (Instala).......................................................................................47APÊNDICE B – Script de Biblioteca (library).......................................................................................53APÊNDICE C – Script do Oinkmaster (oinkmaster_update).................................................................64APÊNDICE D – Script de Utilização (mshield).....................................................................................66APÊNDICE E – Script de Inicialização (rc.mshield).............................................................................75APÊNDICE F – Script auxiliar de relatório (report)..............................................................................77

Page 8: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

LISTA DE FIGURAS

Figura 1. Diagrama de Contexto.............................................................................................................16Figura 2. Diagrama de fluxo de dados nível 1........................................................................................17Figura 3. Diagrama de fluxo de dados nível 2........................................................................................17Figura 4. Script de download de pacotes (parte 1)..................................................................................23Figura 5. Script de download de pacotes (parte 2)..................................................................................24Figura 6. Script de download de pacotes (parte 3)..................................................................................25Figura 7. Script de download de pacotes (parte 4)..................................................................................26Figura 8. Script de download de pacotes (parte 5)..................................................................................26Figura 9. Funcionamento geral do sistema.............................................................................................28Figura 10. Tela inicial do relatório..........................................................................................................29Figura 11. Segunda tela do relatório.......................................................................................................30Figura 12. Apresentação..........................................................................................................................31Figura 13. Instalação Seleção..................................................................................................................32Figura 14. Lista de pacotes .....................................................................................................................32Figura 15. Progresso de Download.........................................................................................................33Figura 16. Download de pacote concluído..............................................................................................33Figura 17. Finalização de download.......................................................................................................34Figura 18. Descompactação concluída....................................................................................................34Figura 19. Compilação de pacotes..........................................................................................................35Figura 20. Compilação concluída............................................................................................................35Figura 21. Download de regras...............................................................................................................36Figura 22. Tela final de instalação..........................................................................................................37Figura 23. Menu principal mshield.........................................................................................................38Figura 24. Tela de personalização...........................................................................................................38Figura 25. Tela de bloqueio de porta.......................................................................................................39Figura 26. Tela de parar...........................................................................................................................39Figura 27. Tela de parada de execução automática................................................................................40Figura 28. Consumo de memória............................................................................................................41Figura 29. Gráfico de processamento 1...................................................................................................42Figura 30. Gráfico de processamento 2...................................................................................................42

Page 9: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

LISTA DE SIGLAS

API Application Programming Interface

BASH Bourne Again Shell

BSD Berkeley Software Distribution

HTML Hypertext Markup Language

IDS Intrusion Detection System

IP Internet Protocol

IPS Intrusion Protection System

MSHIELD Mighty Shield

NAT Net Address Translate

QoS Quality of Service

TCP Transmission Control Protocol

UDP User Datagram Protocol

Page 10: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

RESUMO

A popularização do computador pessoal não é mais novidade nos dias de hoje.

Esta popularização trouxe consigo também a difusão de novas alternativas para o uso do

micro-computador, a exemplo podemos citar o sistema operacional Linux. Em uma

espécie de simbiose cibernética os computadores e os hackers sempre estiveram e estão

juntos, logo, o problema da segurança em computadores é um problema que atinge todo

tipo de usuário A solução apresentada neste trabalho visa beneficiar o usuário final Linux

com um sistema completo de segurança baseado nas mais atuais tecnologias de

proteção e de fácil instalação e funcionamento. Na área de segurança em redes de

computadores já é difundido o termo IDS (Intrusion Detection System). O que este

trabalha apresenta é uma solução pró-ativa, um IPS (Intrusion Protection System) que

não só detecta uma tentativa de intrusão como também a bloqueia trazendo, desta forma,

uma verdadeira proteção contra hackers e ataques remotos.

Palavras-chave: Segurança em computadores, IDS, IPS, iptables, snort.

Page 11: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

ABSTRACT

The popularization of the personal computer is not any news nowadays. This

popularization brought within new alternatives for the use of the computer, as an example:

the Operational System Linux. In a kind of cybernetic symbiosis the computers and the

hackers always have been together, thus the security matter in computers systems

reaches all users. The solution presented in this project aims to benefit the Linux user with

a complete security system based on a set of cutting edge technologies available and that

is easy install and get running. The Intrusion Detection System (IDS) is a well known but

this project presents a pro-active solution: an Intrusion Protection System (IPS), a system

that detects and avoid an intrusion attempt, so we can have a real protection against

hackers and remote attacks.

keywords: Computer Security , IDS, IPS, iptables, snort.

Page 12: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

12

1 INTRODUÇÃO

O nascimento da Internet se deu no ano de 1969 com a ARPANET,

rede de propósitos militares (WIKIPEDIA, 2007). Com o passar de poucos

anos a comunicação entre computadores veio se tornando cada vez mais

popular, começando com as universidades e depois se estendendo a

empresas até chegar ao usuário final.

Junto com a popularização da comunicação remota entre

computadores, assim como a Internet, cresceu também o número de

pessoas especialistas e entusiastas desse sistema. A Internet, ainda em sua

idade tenra, funcionava sobre sistemas que não tinham como prioridade a

segurança dos mesmos, mas sim a funcionalidade. Neste contexto foram

surgindo os, hoje tão conhecidos, hackers, crackers e afins. Pessoas

experientes e de bom conhecimento nesses sistemas que faziam uso destes

explorando-os de forma a obter benefício próprio, seja roubo de informações,

diversão, etc.

O problema de segurança então se torna algo real e preocupante. As

empresas e usuários começaram a atentar para o fato e a tomar atitudes a

fim de se proteger.

Uma série de ferramentas e estratégias de proteção começam a ser

desenvolvidas e difundidas, muitas destas vigentes até hoje. Dentre elas, as

mais conhecidas, podemos citar:

• Firewall: Tem como objetivo bloquear acessos remotos

indevidos a máquina local ou rede. Bastante eficiente. É uma

solução indispensável a qualquer sistema de segurança de

computadores;

• Proxy: Simplificadamente pode ser entendido como um sistema

que restringe acessos internos para a rede externa, como

bloquear o acesso a alguns determinados sites da Internet;

• IDS: Sistema que fica atento a tentativas remotas de invasão ao

sistema de computadores local. Este sistema armazena em

disco todas as tentativas em questão, com hora do incidente,

Page 13: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

13

tipo do incidente, etc. É uma maneira eficaz de analisar o que

acontece na rede e tentar se proteger mais adequadamente;

• Anti-Vírus: Talvez o mais famoso no âmbito do usuário final.

Programa que protege a máquina contra outros programas

maliciosos que possam causar danos a máquina;

• Anti-Spyware: Este mais atual que os outros tem como objetivo

proteger a máquina de programas que se instalam e roubam

informações.

Todas estas ferramentas focam em uma área de segurança e provêem

um método para se aumentar a segurança. O firewall pode ser considerado a

forma mais eficiente e, de alguma forma, drástica de proteção. Um firewall

em sua forma tradicional é eficiente por que realmente bloqueia o tráfego

antes mesmo que este chegue de fato ao Sistema Operacional, por outro

lado, drástico porque bloqueia o pacote independente do conteúdo do

mesmo.

Podemos selecionar o IDS como um ótimo detector de tentativas de

intrusão. Isto é algo bastante útil para se conhecer as ameaças que estão de

fato cercando os usuários.

Este trabalho trata de oferecer uma ferramenta integrada que ao

mesmo tempo possui função de firewall e IDS. Desta forma se juntam as

duas melhores tecnologias de proteção em apenas um sistema. Um sistema

que protege de fato o usuário de forma personalizável e gera relatórios de

atividades do sistema, de forma que o usuário fique a par da situação de sua

segurança.

O MShield, devido a sua facilidade de instalação e operação, é a

melhor escolha para um sistema de segurança completo, trazendo o que

antes exigia um conhecimento avançado em Linux e Redes de computadores

ao mundo do usuário. Este sistema é resultado da integração das mais

avançadas tecnologias de segurança em um só sistema utilizável por

qualquer usuário com conhecimentos mínimos de Linux.

Page 14: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

14

1.1 Objetivo

Este projeto, dentro do contexto anterior, propõe o desenvolvimento de

uma solução de segurança conhecida como IPS (Intrusion Protection

System). Um IPS é formado por um conjunto de ferramentas que objetivam

ter um comportamento pró-ativo na segurança, ou seja, detectar uma

tentativa de intrusão e no mesmo momento bloqueá-la. Esta é uma solução

bastante recente, com ferramentas ainda em suas versões de

desenvolvimento, portanto, não concluídas totalmente. Também é uma

solução de difícil implementação e funcionamento inicial, porque envolve um

conhecimento avançado de rede de computadores, Linux e programação.

Um IPS envolve um firewall, um IDS e várias ferramentas complementares.

Todas estas ferramentas trabalhando integradas para o propósito final.

O objetivo deste projeto é desenvolver uma solução integrada de um

IPS que possa ser instalado, utilizado e monitorado facilmente por um

usuário leigo de computadores, contornando todas as dificuldades e

particularidades de configuração, instalação e funcionamento e ainda

adicionando personalização de firewall de uma maneira extremamente fácil.

Depois de instalado no computador do usuário, o Mshield proporcionará uma

verdadeira barreira de segurança para a máquina ou rede local.

1.2 Trabalhos Relacionados

Dentre os principais trabalhos relacionados, pode-se citar:

• Guardian: programa de segurança que funciona junto com o

Snort, software com funcionalidade de detector de intrusão,

automaticamente atualizando as regras de firewall baseando-se

nos alertas do Snort. As regras de firewall atualizadas

bloqueiam todo tráfego vindo do IP (Internet Protocol) da

máquina atacante (a máquina que causou os alertas)

(STEVENS, 2007). A desvantagem dessa solução é o fato de

ela bloquear todo tráfego da máquina atacante alem de

atualizar as regras de firewall, ou seja, alterar a tabela de

regras, isso após o pacote intrusivo já ter entrado na rede.

Page 15: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

15

Desta forma é possível perceber que a segurança ainda não é

totalmente satisfatória e organizada;

• Fwsnort: funciona em conjunto com o Snort. Lê as regras do

Snort e constrói regras de firewall (iptables) equivalentes a

estas regras (RASH, 2007);

• Snortsam: funciona com base em um plug-in de saída do Snort

e também interage diretamente com o firewall através de um

agente próprio (KNOBBE, 2007);

• Blockit: monitora os alertas do Snort e com base neles cria

regras de firewall (SAMAYOA, 2007).

1.3 Estrutura do documento

O presente documento está organizado em uma estrutura progressiva,

ou seja, primeiro é mostrada a base para o projeto, bem como os conceitos e

ferramentas utilizadas, logo após, mais detalhes sobre o funcionamento e

integração do sistema de modo geral e por fim descrições técnicas

detalhadas do funcionamento dos scripts do MShield.

Page 16: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

16

2 ANÁLISE DO SISTEMA

Este capítulo trata de diagramar a estrutura e funcionamento do

MShield. São apresentados os diagramas de Contexto, Fluxo de dados nível

1 e Fluxo de dados nível 2.

2.1 Diagrama de Contexto

A Figura 1 mostra o Diagrama de Contexto do sistema. Uma visão de

seu funcionamento. Os dados provindos da Internet, tanto tráfego TCP

(Transmission Control Protocol) quanto UDP (User Datagram Protocol),

passam através do MShield, portanto, sendo filtrados e seguindo em frente

até o computador, caso satisfaçam as restrições (regras) do sistema.

Figura 1. Diagrama de Contexto

2.2 Diagrama de fluxo de dados - Nível 1

A Figura 2 mostra o Diagrama de Fluxo de Dados nível 1. Os dados

provindos da Internet passam pelo primeiro processo que os filtra (iptables),

ou seja, estes dados vão para a fila criada pelo módulo ip_queue onde

esperam para serem processados. O próximo processo trata efetivamente de

processar os dados de entrada, verificando se satisfazem as restrições, ou

seja, se não apresentam características de possíveis ataques e dados

maliciosos. O processamento dos dados gera outros dados que são usados

para a criação posterior do relatório de atividades.

Page 17: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

17

Figura 2. Diagrama de fluxo de dados nível 1

2.3 Diagrama de fluxo de dados - Nível 2

A Figura 3 mostra o Diagrama de Fluxo de Dados nível 2. Após os

dados passarem pelo iptables e em seguida serem enfileirados no ip_queue,

o snort_inline busca nesta fila os dados a serem avaliados (permitidos ou

não). Os que satisfazem as restrições serão direcionados ao computador, os

que não satisfazem serão bloqueados. Toda atividade de bloqueio, entre

outras, são registradas em log. O log serve de base para o pmgraph gerar

relatórios.

Figura 3. Diagrama de fluxo de dados nível 2

Page 18: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

18

3 FERRAMENTAS

O presente capítulo fornece uma descrição das ferramentas que

servem como base para o desenvolvimento do MShield.

3.1 Iptables

Netfilter é um módulo que fornece ao sistema operacional Linux, entre

outras, as funções de firewall de rede de computadores. Netfilter é formado

por uma série de ganchos dentro do kernel Linux que permite aos módulos

do kernel registrar funções próprias dentro da pilha de rede do sistema

operacional.

Iptables é o nome da ferramenta que permite a criação de regras de

firewall. Iptables é formado por uma tabela genérica para a definição dos

conjuntos de regras. Cada regra, em conjunto com uma tabela de IP's, forma

um número de classificadores que são ativados executando uma

determinada ação.

Apesar de, tecnicamente, o iptables ser apenas uma ferramenta que

controla o módulo netfilter, o nome "iptables" é frequentemente utilizado

como referência ao conjunto completo de funcionalidades do netfilter. O

iptables é parte de todas as distribuições modernas do Linux (WELTE, 2007).

As principais características do iptables são:

• Todos os tipos de tradução de endereços de rede, exemplo

NAT (Network Address Translation);

• Infra-estrutura flexível e extensível;

• Várias camadas de API's para extensões;

• Grande quantidade de plug-ins e módulos.

O que é possível com o iptables:

• Construir firewalls para internet;

• Utilizar NAT e mascaramento para compartilhar acesso a

internet;

• Controle de QoS (Quality of Service);

• Fazer modificação nos pacotes.

Page 19: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

19

3.2 Snort

Snort é o IDS mais conhecido e reconhecido no mundo da informática.

Sua função principal é fazer detecção de intrusão e registrar todas as suas

atividades.

Abaixo alguns conceitos básicos sobre o Snort:

• Sniffer mode, snort lê os pacotes que trafegam na rede e os

mostra na tela do computador em que está instalado;

• Logger mode, arquiva em disco todas as suas atividades;

• NIDS (Network Intrusion Detection System), modo mais

complexo e configurável, permite que o Snort analise o tráfego

da rede procurando por padrões estabelecidos em uma série de

regras pré-definidas e desempenhe várias ações baseado no

que vê;

• Inline mode, obtém pacotes do iptables ao invés de obter da

libpcap (biblioteca para captura de pacotes, na qual o snort se

baseia) e então faz com que o iptables bloqueie ou deixe

passar os pacotes com base nas regras específicas do modo

inline (CASWELL, 2007).

De uma forma geral o Snort funciona da seguinte maneira:

• Quando ativado ele liga o Sniffer mode para que, desta

forma, possa ver todos os pacotes que trafegam na rede sem

intervir na comunicação em si;

• O Snort possui um conjunto de arquivos que contém regras

específicas, regras estas que identificam padrões de ataques

remotos conhecidos. A medida que o Snort analisa o tráfego

da rede, ele verifica se o pacote que está atualmente sendo

analisado bate com alguma regra de seus arquivos. Caso

isso aconteça o Snort lança um alerta e o grava em disco no

arquivo de log. Caso não identifique o pacote atual com

algum padrão, então o próximo pacote é analisado.

Este projeto tira proveito principalmente do Inline mode do Snort

(METACALF, 2007) que será visto a seguir.

Page 20: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

20

3.3 Snort_inline

O Snort_inline é basicamente uma versão modificada do Snort que

aceita pacotes vindos do iptables via libipq (biblioteca de funções do módulo

ip_queue do iptables) ao invés da libpcap. Então usa uma série de regras

específicas (drop, sdrop, reject) para dizer ao iptables quais pacotes devem

ser bloqueados, rejeitados, modificados ou permitidos. Simplificadamente é

possível entender o Snort_inline como um IPS que usa as assinaturas

(regras) de um IDS existente para decidir quais pacotes irão passar por ele e

quais não irão (METACALF, 2007).

3.4 Oinkmaster

Oinkmaster é um script que irá ajudar a gerenciar e atualizar as regras

do Snort. O snort disponibiliza para download regras comunitárias

atualizadas de tempos em tempos. Neste projeto o oinkmaster é utilizado

para fazer o download destas regras atualizadas periodicamente.

Para que funcione com o Snort_inline são necessárias algumas

modificações no funcionamento do oinkmaster, as quais, são implementadas

neste projeto (STLING, 2007).

3.5 Rrdtools

As rrdtools são algumas ferramentas auxiliares neste projeto.

Basicamente elas coletam dados e os organizam de forma a facilitar uma

montagem gráfica da situação.

O MShield gera periodicamente dados estatísticos sobre suas

atividades, estes dados posteriormente irão servir de entrada para as rrdtools

e para o pmgraph, o qual será explicado a seguir. Desta forma pode-se, com

alguns ajustes, proporcionar ao usuário final uma forma fácil e prática de

monitorar as atividades de seu novo sistema de segurança. No caso do

presente projeto este monitoramento será feito através de uma página HTML

(Hypertext Markup Language) comum com gráficos (OETIKER, 2007).

Page 21: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

21

3.6 Pmgraph

Pmgraph é um script feito em Perl que gera uma página HTML com

gráficos do pré-processador Snort perfmonitor, o qual não é ativado por

padrão na instalação , porém, é ativado pelo MShield. Usa como fonte de

entrada a saída das rrdtools (STLING, 2006).

3.7 Ipqueue

Ipqueue é um modulo específico do iptables, o qual, permite direcionar

dados de entrada do iptables para nível de usuário. Desta forma os dados

capturados pelo iptables são direcionados para uma espécie de fila, a qual,

está disponível para acesso a nível de usuário de sistema. Isso é

fundamental para o funcionamento do MShield. É nesta fila que o MShield irá

verificar os pacotes e decidir se serão permitidos ou se são suspeitos e serão

bloqueados. A libipq possibilita este funcionamento (TOREN, 2007).

Page 22: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

22

4 O SISTEMA DE SEGURANÇA MSHIELD

O MShield por sua natureza possibilita uma proteção a máquina local

ou a uma rede inteira. Quando instalado em uma máquina local o MShield irá

funcionar monitorando toda a entrada externa da placa de rede local,

funcionando desta maneira como uma camada posicionada anteriormente à

própria máquina. Todos os dados provenientes da rede externa (por

exemplo, Internet) passarão pelo filtro do MShield antes de serem liberados,

o que garante uma grande segurança ao usuário. Os detalhes de

funcionamento serão tratados na próxima seção

O MShield também pode ser instalado em uma máquina que tem o

papel de gateway de uma rede inteira. Desta forma a rede toda estará atrás

do filtro do MShield, garantindo, portanto, uma barreira de proteção não

somente para a máquina em que esta instalada, mas sim para todas as

máquinas que estão atrás dela.

4.1 Instalação e Configuração

O script principal do sistema é o Instala. Sua versão completa esta

disponível no apêndice A.

Este script é encarregado de instalar, configurar e ajustar o sistema

para uso. Junto com o script Instala existe um outro chamado library. Este

segundo possui as funções usadas no primeiro, para facilitar a organização e

o entendimento.

De modo geral, as seguintes etapas são executadas:

• Download dos pacotes necessários (caso seja selecionada

esta opção);

• Compilação e linkagem dos pacotes;

• Descompactação dos pacotes;

• Ajustes finos como por exemplo, montagem de arquivos de

configuração, diretórios, etc.

Abaixo estão explicadas algumas das principais partes dos scripts

acima mencionados.

A Figura 4 ilustra a função de download dos pacotes, a exemplo, o

Page 23: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

23

snort. O download é feito através do wget, o qual é um aplicativo bastante

conhecido de download de arquivos. O código toma o cuidado de fazer este

download de forma limpa e transparente para o usuário. O trecho de codigo li

faz com que hajam duas tentativas de download do pacote. O wget fica

tentando estabelecer uma conexão durante vinte segundos antes de acusar

uma falha de uma tentativa. Durante todo o tempo de download o trecho

verifica quantos bytes do pacote já foram baixados para o disco local e

mostra um status gráfico para o usuário. Em caso de download concluído

uma mensagem é mostrada. Em caso de erro, será mostrada uma

mensagem explicando o erro ocorrido.

wget -q --tries=2 -T 20 http://heanet.dl.sourceforge.net/sourceforge/snort-

inline/$SNORT.tar.gz &

PIDRODANDO=$!; # guarda o PID do programa recem executado. Usado na funcao Rodando

Aguarda_inicio_download $SNORT.tar.gz

Download $SNORT.tar.gz 2905172

Erro "Não foi possível fazer download do Snort, verificar o link de download no arquivo

./Instala"

Figura 4. Script de download de pacotes (parte 1)

A Figura 5 ilustra a parte do script referente à compilação dos pacotes

recém baixados ou dos pacotes locais, dependendo da opção escolhida pelo

usuário na instalação. Os pacotes referentes ao pcre, libdnet, pmgraph e

rrdtools podem ser compilados sem necessidade de nenhum ajuste fino. O

trecho de codigo acima toma cuidado de criar, para cada pacote, um arquivo

de log que registra o status de cada etapa da compilação. Ao final, este

arquivo é verificado e em caso de algum indício de erro na compilação, o

script automaticamente avisa o usuário a respeito do ocorrido.

Page 24: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

24

function Faz_compilacao {

for i in $LIBDNET $PCRE $LIBPCAP $PMGRAPH $RRDTOOLS

do

dialog \

--title "Compilando $i" \

--infobox \

"Por favor aguarde\n" 0 0

cd $i

./configure > $i.log 2>&1 ; make >> $i.log 2>&1 ; make install >> $i.log 2>&1

cat $i.log | egrep -i "\berror\b" 2>&1

if [ $? = 0 ]; then

Erro "Problemas na compilacao do pacote $i"

fi

cd ..

done

Figura 5. Script de download de pacotes (parte 2)

A Figura 6 ilustra a linha de compilação do snort_inline. Ele é

compilado separadamente por precisar de um ajuste fino. É necessário ativar

o parâmetro –enable-perfmon antes da compilação. Este parâmetro ativa um

pré-processador do snort que possibilita fazer log, em um arquivo específico,

de todas as suas atividades, desta forma é possível utilizar este arquivo

criado como fonte para a geração do relatório.

O iptables também necessita de ajustes finos. Sua linha de compilação

difere um pouco do tradicional por ser da forma: make install-devel. Esta

diretiva proporciona uma instalação mais completa do mesmo. Outros ajustes

menores também foram necessários.

Ajustes também são necessários para o pmgraph. É necessário

adicionar o caminho correto para o Perl dentro do diretório em que foi

instalado o rrdtools. Por se tratar de um script Perl, o pmgraph não precisa

ser compilado. Este script foi modificado e encontra-se dentro da pasta

./contrib. Todos os ajustes mencionados e outros estão contidos e indicados

nos scripts de instalação (ver apêndice A).

Page 25: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

25

./configure --enable-perfmon > $SNORT.log 2>&1 ; make >> $SNORT.log 2>&1 ; make install

>> $SNORT.log 2>&1

Figura 6. Script de download de pacotes (parte 3)

A Figura 7 ilustra uma parte do script que faz mais ajustes ao

snort_inline, de maneira a configurá-lo de forma necessária. Primeiramente, é

criado o diretório de relatório, onde estarão contidos os relatórios gerados

pelo MShield. Logo após, são copiados alguns arquivos essenciais para o

funcionamento correto do snort_inline. Em seguida é incluída uma linha

específica de pré-processador ao arquivo de configuração do snort_inline.

Essa linha é essencial para o funcionamento do pré-processador perfmonitor,

o qual, possibilitará a geração dos relatórios. Dando continuidade, é criado

um arquivo de regras local.rules dentro do diretório de regras. Este arquivo

irá conter todas as regras personalizadas pelo usuário Por fim uma linha

inserindo a definição da variável DNS_SERVERS dentro do arquivo de

configuração, esta modificação é essencial para o funcionamento do

snort_inline.

O oinkmaster necessita também de ajustes finos, estes estão

indicados nos scripts. A Figura 8 mostra o trecho do script encarregado do

download das regras mais atualizadas disponíveis no web-site oficial do

Snort, desta forma populando o diretório de regras. Uma série de ajustes

especiais são necessários para tornar estas regras compatíveis com o

MShield e com as atualizações automáticas. Todas estas modificações estão

indicados nos scripts dos apêndices A e D.

Page 26: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

26

# Prepara Snort_inline

mkdir -p /etc/snort_inline/drop-rules

mkdir -p /var/log/snort_inline

mkdir -p /etc/snort_inline/relatório

cp ./$SNORT/etc/clas* /etc/snort_inline/drop-rules

cp ./$SNORT/etc/refe* /etc/snort_inline/drop-rules

cp ./$SNORT/etc/unicode.map /etc/snort_inline/unicode.map

cp ./contrib/oinkmaster_update /etc/snort_inline/

# Ajusta snort para que comece a fazer log de atividades no arquivo perfmon.txt, para

que possa ser

# gerado o relatório posteriormente

if [ -f /etc/snort_inline/snort_inline.conf ]; then

rm /etc/snort_inline/snort_inline.conf

fi

echo 'preprocessor perfmonitor: flow max events time 30 file

/etc/snort_inline/perfmon.txt pktcnt 300' >> /etc/snort_inline/snort_inline.conf

cat ./$SNORT/etc/snort_inline.conf >> /etc/snort_inline/snort_inline.conf

# Cria o arquivo de regras personalizadas

touch $RULE_PATH/local.rules

# Inclui variavel DNS_SERVERS, necessaria para algumas rules

echo 'var DNS_SERVERS any' >> /etc/snort_inline/snort_inline.conf

Figura 7. Script de download de pacotes (parte 4)

Oinkmaster.pl -o /etc/snort_inline/drop-rules > /dev/null 2>&1

Figura 8. Script de download de pacotes (parte 5)

4.3 Integração

Em linhas gerais o funcionamento e integração das ferramentas

empregadas neste projeto se dão da seguinte forma:

O iptables terá configurado uma regra específica, a qual, terá a função

de direcionar todos os dados provindos da rede externa e direcioná-los à fila

(provida pelo ipqueue). O snort_inline, por sua vez, irá coletar e analisar

todos os pacotes de dados que estão nesta fila. Com base em suas regras

de reconhecimento de ataques, o snort_inline irá decidir se certo pacote será

bloqueado ou será permitido passar adiante. Durante toda sua atividade o

snort_inline segue gerando em disco dados estatísticos, estes provindos do

pré-processador perfmon (ativado em tempo de compilação). Este arquivo, o

qual contém estes dados, serve de fonte de entrada para o pmgraph que

Page 27: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

27

utiliza-se de meios providos pelas rrdtools para manipulação dos mesmos e

geração de gráficos em uma página HTML, a qual poderá ser analisada pelo

usuário.

Este processo todo possui diversas particularidades que possibilitam a

sintonia dos processos. Todos estes detalhes serão tratados na seção

seguinte onde será analisado o funcionamento interno do script de

instalação.

4.4 Funcionamento

O objetivo do MShield é trazer para o usuário um sistema de

segurança integrado e moderno que seja de fácil instalação e manuseio.

Para tornar isso possível é necessário fazer todas as configurações,

compilações, instalações e alterações de modo automático e transparente,

trazendo uma interface amigável onde o usuário possa prosseguir com o

processo de instalação e manuseio do sistema.

Neste contexto estão inseridos os scripts de instalação e de

gerenciamento que serão tratados com mais detalhes na próxima seção. Os

scripts do MShield são todos desenvolvidos em BASH, portanto, compatíveis

com a absoluta maioria dos sistemas Linux existentes.

Recém descompactado, o diretório do MShield contém:

• Um script de instalação (Instala), um script de utilização

(mshield) e um script de biblioteca de funções library;

• Um diretório ./contrib, no qual, estão contidos quatro scripts, um

deles será para auxiliar no agendamento de atualização das

regras (oinkmaster_update), outro auxiliar para iniciar e parar o

sistema (rc.mshield). O próximo script auxiliar para geração de

relatórios (report) e finalmente o pmgraph.pl, script para criação

de relatórios efetivamente;

• Um arquivo README que contém instruções básicas sobre a

instalação e funcionamento do MShield;

Os scripts oinkmaster_update, rc.mshield, Instala, library e report estão

disponíveis integralmente nos apêndices C, E, A, B, F respectivamente.

Page 28: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

28

Tudo que o usuário precisa fazer para instalar e configurar e sistema é

executar o script de instalação. Este script irá automatizar todo o processo de

download das bibliotecas e softwares necessários, compilação fina de todos

os pacotes, instalação dos mesmo e ajustes pós instalação. O usuário irá

acompanhar todo o processo através de uma interface gráfica de fácil

entendimento.

Após o término do script de instalação o usuário poderá fazer uso do

script de funcionamento (mshield). Este script quando executado traz uma

interface gráfica intuitiva que permite ao usuário personalizar as regras do

MShield de maneira muito simplificada, por exemplo: bloquear uma porta

específica e desbloqueá-la. Também permite ao usuário gerar o relatório de

atividades do sistema, este que pode ser visualizado no navegador, por se

tratar de uma pagina HTML normal contendo gráficos ilustrativos e

estatísticos que demonstram o comportamento e atividades do sistema nos

últimos dias de funcionamento.

A Figura 9 ilustra em uma visão generalista onde se encontra o

MShield em uma visão global de funcionamento. O iptables faz parte da

solução MShield. Na figura esta separado apenas para efeito de melhor

entendimento. Os dados passam primeiramente pelo iptables, logo após,

este direciona todos dados para uma fila que serve de entrada para o

MShield.

Figura 9. Funcionamento geral do sistema

Page 29: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

29

4.5 Relatório

O MShield gera um relatório HTML periódico contendo informações

úteis sobre sua atividade. Para gerar o relatório das últimas doze horas de

atividade basta o usuário executar o comando "mshield" (script disponível

integralmente no apêndice D) e selecionar a opção “Relatório”. Com base

nele, o usuário pode verificar as atividades do sistema, bem como saber se

esta sendo alvo de hackers ou não

A Figura 10 apresenta o formato de relatório gráfico gerado pelo

Mshield.

Figura 10. Tela inicial do relatório

A primeira página do relatório é bastante direta e mostra o número de

bloqueios efetuados pelo MShield. Com esta informação o usuário sabe sua

exposição ao risco de ataques externos.

Para um relatório mais completo, com mais detalhes que possam ser

úteis a usuários mais avançados, é possível clicar no link indicado logo

abaixo do número de bloqueios. A Figura 11 ilustra um exemplo de tela que

irá aparecer neste caso.

Page 30: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

30

Figura 11. Segunda tela do relatório

Na tela acima foram mostrados apenas três campos de análise.

• Alerts per second: número de alertas por segundo, emitidos pelo

snort_inline;

• Mbit per second: mostra a intensidade do tráfego em Mbits na

rede;

• Kpackets per second: quantidade de pacotes que trafegam na

rede em Kpackets.

Na tela acima ainda é possível clicar sobre cada campo para obter

uma imagem com zoom, ou seja, cobrindo um intervalo menor de tempo.

Os gráficos apresentados dependem muito da quantidade de dados

recolhidos pelo sistema, ou seja, do tráfego na rede, quantidade de

computadores, tempo de análise, etc.

4.6 Telas do sistema

O MShield é composto por dois scripts principais e dois scripts

auxiliares. Abaixo as principais telas do script de instalação do sistema.

A Figura 12 mostra a primeira tela de instalação e uma listagem dos

passos gerais que devem ser seguidos.

Page 31: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

31

Figura 12. Apresentação

A Figura 13 permite ao usuário escolher entre uma instalação local ou

via Internet. No caso da instalação via Internet o instalador irá fazer o

download de todos pacotes necessários para o sistema e, em seguida,

prosseguirá normalmente. Esta opção é bastante vantajosa, uma vez que o

tamanho dos arquivos de instalação são bastante reduzidos. Caso a opção

de instalação local seja selecionada, o usuário precisará possuir no diretório

local todos os pacotes necessários para a instalação. Esta forma garante um

processo mais rápido, porém, o tamanho do arquivo de instalação do sistema

será bastante grande.

Page 32: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

32

Figura 13. Instalação Seleção

A Figura 14 é mostrada caso o método de instalação selecionado

tenha sido via Internet. Esta tela mostra uma listagem de todos os pacotes

que serão feito download.

Figura 14. Lista de pacotes

A Figura 15 mostra a etapa de download dos pacotes. Este conjunto

de telas mantém o usuário informado sobre o progresso do download dos

pacotes.

Page 33: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

33

Figura 15. Progresso de Download

A Figura 16 mostra um exemplo de tela que indica o termino do

download de cada pacote.

Figura 16. Download de pacote concluído

A Figura 17 mostra a indicação de finalização do processo de

download de todos os pacotes necessários. Caso o usuário queira prosseguir

com a instalação do sistema ele irá selecionar Yes, caso contrário, No. A

Page 34: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

34

próxima etapa será a de descompactação e compilação de todos os pacotes.

Figura 17. Finalização de download

A Figura 18 mostra que o processo de descompactação dos pacotes

no diretório local foi concluído com sucesso.

Figura 18. Descompactação concluída

A Figura 19 mantém o usuário informado sobre o processo de

compilação de cada pacote. Esta etapa pode ser a mais demorada de todo

Page 35: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

35

processo. É importante citar que alguns pacotes precisam de ajustes

especiais para sua compilação. Estes detalhes serão tratados na explicação

detalhada dos scripts nos apêndices A e D.

Figura 19. Compilação de pacotes

A Figura 20 indica o término do processo de compilação dos pacotes.

A seguir será executada uma série de ajustes bastante importantes para o

funcionamento do sistema.

Figura 20. Compilação concluída

Page 36: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

36

A Figura 21 mostra a etapa de download das regras de proteção mais

atualizadas. Esta é uma forma de manter o Mshield sempre atualizado com o

conjunto mais atual de regras oficiais do Snort. Todo o mês o Mshield agenda

uma atualização destas regras para ser executada automaticamente.

Figura 21. Download de regras

A Figura 22 mostra a tela final do processo de instalação. Todo o

sistema foi instalado e configurado automaticamente. Para a operação do

mesmo, basta agora o usuário executar o comando “mshield”, o qual, já foi

automaticamente adicionado ao PATH do sistema.

Page 37: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

37

Figura 22. Tela final de instalação

Abaixo são mostradas telas principais do script de utilização do

MShield (o comando, “mshield”).

A Figura 23 mostra o menu principal de utilização do MShield. Nele é

possível selecionar a função “Personalizar”, onde o usuário pode bloquear e

desbloquear portas específicas para aumentar sua segurança de acordo com

a necessidade. Pode também selecionar a opção “Relatório”, onde será

gerado imediatamente um relatório HTML que contém informações sobre as

atividades do MShield. Selecionar “Parar” para efetivamente terminar o

MShield e voltar o sistema a sua configuração normal, sem esta camada

adicional de proteção. Selecionar “Inicia” para efetivamente colocar o

MShield em funcionamento. “Sair”, como o nome já diz, apenas sai do

assistente.

Page 38: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

38

Figura 23. Menu principal mshield

A Figura 24 mostra a tela apresentada ao usuário quando a opção

“Personalizar” do menu principal é selecionada. Nesta parte é possível

selecionar BloquearIN, desta forma o usuário bloqueia acesso externo a

alguma porta específica no computador ou na rede local. BloquearOUT

permite bloquear acesso de qualquer computador interno ou o computador

local a alguma porta externa específica. Selecionar “Desbloquear” para, de

fato, desbloquear portas anteriormente bloqueadas pelo usuário.

Figura 24. Tela de personalização

Page 39: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

39

Abaixo a Figura 25 apenas mostra a tela onde o usuário digitará a

porta que será bloqueada pelo sistema.

Figura 25. Tela de bloqueio de porta

A Figura 26 mostra a tela apresentada quando a opção “Parar” é

selecionada no menu principal. É apenas uma tela de confirmação.

Figura 26. Tela de parar

Page 40: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

40

A Figura 27 mostra a mensagem apresentada após a confirmação de

parada do sistema. É possível também fazer com que o sistema pare de ser

executado automaticamente ao iniciar-se a máquina. Uma tela semelhante é

apresentada quando o inicio do MShield é confirmado, possibilitando habilitar

sua execução automática junto com boot da máquina.

Figura 27. Tela de parada de execução automática

Page 41: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

41

5 ANÁLISE DE DESEMPENHO

Neste capítulo serão apresentados alguns testes de desempenho

executados com o MShield. Será demonstrado o impacto do uso do MShield

na performance da máquina, bem como, no consumo de recursos da mesma.

Os testes foram executados com o MShield instalado em uma máquina

gateway de uma outra máquina da rede interna.

O sistema de teste possui a seguinte configuração básica:

• Processador Intel Pentium 4 2.53 Ghz;

• 512 MB de memoria RAM DDR 266.

5.1 Memória

Durante os testes de processamento, o consumo de memória também

foi analisado. O MShield manteve um consumo considerado praticamente

constante.

No caso da máquina de teste, o consumo de memoria sempre esteve

dentro da faixa de 2.7% a 3% da memória física total, o que equivale a faixa

de 13824 KB a 15360 KB de memória RAM. A Figura 28 ilustra o consumo

de memória.

Figura 28. Consumo de memória

0 5 10 15 20 25 30 35 40 45 50 55 60

0

0.25

0.5

0.75

1

1.25

1.5

1.75

2

2.25

2.5

2.75

3

segundos

% d

e us

o d

e m

emór

ia

Page 42: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

42

5.2 Processador

A Figura 29 e a Figura 30 mostram o processamento do MShield.

A Figura 29 mostra o desempenho (em porcentagem) do MShield

durante o carregamento de seis páginas web simultaneamente durante o

período de um minuto.

Figura 29. Gráfico de processamento 1

O gráfico mostra que o MShield exige muito pouco do processador

para funcionar, portanto, não impacta o desempenho do computador em que

está instalado.

A Figura 30 mostra o desempenho do MShield durante o download de

um arquivo de testes a uma velocidade de 300 KB/s, durante um minuto.

Figura 30. Gráfico de processamento 2

Page 43: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

43

Um download a uma velocidade considerável foi feito (300 KB/s) e de

mesma forma, como mostra o gráfico, o MShield não consome significante

poder de processamento da máquina.

Com base nas análises feitas fica evidente que o uso do MShield em

um único computador ou até mesmo em uma rede local não prejudica em

nada o uso normal da máquina.

Page 44: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

44

6 CONCLUSÃO E TRABALHOS FUTUROS

Com o MShield, um novo conceito de segurança é trazido ao alcance

do usuário final Linux. O sistema foi desenvolvido com sucesso. Foi possível

tornar todo o processo de instalação e uso bastante intuitivo, de acordo com

o propósito original.

As maiores dificuldades no desenvolvimento do sistema consistiram no

uso do snort_inline, pois, necessitou de vários testes e várias configurações

extras que, muitas vezes, não estavam nem mesmo documentadas. A

integração dos softwares empregados na solução também se configurou um

desafio para que funcionassem em harmonia.

O MShield está, portanto, disponível e seu uso proporciona segurança

tanto a uma única máquina como, de mesma forma, para uma rede local

inteira que esteja subordinada a um servidor que tenha o sistema instalado.

Como trabalho futuro se propõe estender a compatibilidade para

outras distribuições Linux e até mesmo para sistemas BSD's (Berkeley

Software Distribution) (freeBSD, openBSD, etc). Também sugere-se o

aumento de personalizações do sistema, feitas pelo usuário. Para tanto seria

necessário um estudo de campo abordando os maiores anseios desses

usuários no que se diz respeito a um sistema de segurança computacional.

Page 45: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

45

REFERÊNCIAS

CASWELL, Brian; HEWLETT, Jeremy. Snort User Manual. Disponível em

<www.snort.org/docs>. Acesso em 28 jan 2007.

KNOBBE, Frank. Snortsam. Disponível em <http://www.snortsam.net/>.

Acesso em 08 fev 2007.

METCALF, William; JULIEN, Victor. Snort_inline. Disponível em

<http://snort-inline.sourceforge.net/>. Acesso em 28 jan 2007.

OETIKER, Tobias. RRDtools. Disponível em <http://oss.oetiker.ch/rrdtool/>.

Acesso em 28 jan. 2007.

RASH, Michael. Fwsnort. Disponível em

<http://www.cipherdyne.com/fwsnort/>. Acesso em 08 fev 2007

SAMAYOA, Hugo. Block it. Disponível em <http://www.teknofx.com/>.

Acesso em 08 fev 2007.

STEVENS, Anthony. Guardian. Disponível em

<http://www.chaotic.org/guardian/>. Acesso em 27 jan. 2007.

STLING, Andreas. Oinkmaster. Disponível em

<http://oinkmaster.sourceforge.net/>. Acesso em 08 fev 2007.

STLING, Andreas. Pmgraph. Disponível em

<http://people.su.se/~andreaso/perfmon-graph/>. Acesso em 28 nov 2006.

TOREN, Michael C. Ip_queue. Disponível em

<http://michael.toren.net/slides/ipqueue/slide001.html>. Acesso em 28 jan

2007.

Page 46: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

46

WELTE, Harald. Iptables. Disponível em <http://www.iptables.org/>. Acesso

em 27 jan. 2007.

WIKIPEDIA. Internet. Disponível em <http://pt.wikipedia.org/wiki/Internet>.

Acesso em 27 jan. 2007.

Page 47: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

47

APÊNDICE A – Script de Instalação (Instala)

#!/bin/bash

# Caso utilize PROXY na rede, setar a variavel http_proxy

# exemple= export http_proxy=endereco.do.proxy:porta

IPTABLES="iptables-1.3.5"

LIBDNET="libdnet-1.11"

PCRE="pcre-6.3"

SNORT="snort_inline-2.4.4-final"

LIBPCAP="libpcap-0.9.4"

OINKMASTER="oinkmaster-2.0"

PMGRAPH="pmgraph-0.2"

RRDTOOLS="rrdtool-1.2.16"

clear

##

## inclui as funcoes que serao usadas neste arquivo.

##

source library

##

## Mensagem de apresentacao do sistema (Msg inicial do instalador)

##

dialog \

--title 'MShield (Mighty Shield) 1.0'

\

--msgbox \

'\n

Este assistente irá instalar o MShield em seu computador.\n\n

MShield é um IPS (Intrusion Prevetion System) de fácil

configuração e manuseio, o qual,

possibilita proteção total contra centenas de ataques externos e

Page 48: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

48

controle de acesso personalizado

pelo usuário.\n

\n

As seguintes etapas serao seguidas automaticamente:\n

\n

1. Download dos pacotes ou instalacao apartir de pacotes

locais.\n

2. Compilação automática dos pacotes.\n

3. Ajustes finos dos pacotes.\n

4. Limpeza da instalação.\n' \

25 80

##

## Observacoes iniciais no instalador

##

dialog \

--yesno \

--backtitle "MShield" \

'\n

### Observacoes ###\n

\n

- Caso a conexão de internet seja feita através de proxy e seja

optado por se fazer download dos pacotes necessarios para o MShield,

será necessário setar a variável de ambiente chamada http_proxy.

Exemplo: export http_proxy=endereco.do.proxy:porta_do_proxy\n

\n

- É necessário que o linux atual tenha kernel igual ou superior à

versão 2.4.4.\n

\n

- É necessário que o wget esteja instalado. As distribuições linux já

o trazem como padrão.\n

\n

- É necessário que os pacotes de desenvolvimento estejam instalados

no sistema (gcc). Geralmente as distribuições mais conhecidas

incluem-os na instalação padrão.\n

\n

Caso esteja tudo certo, escolha YES para continuar a instalação,

Page 49: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

49

caso contrário escolha NO para sair.'\

25 80

## Testa se a resposta foi NO, logo, finaliza o instalador

if [ $? = 1 ]; then

clear

exit 1

fi

## Como sera necessario compilar pacotes, os pacotes de

desenvolvimento da distribuicao atual

## precisam estar instalados (gcc, etc).

which gcc 2&>1 /dev/null

Erro "É necessário possuir os pacotes de desenvolvimento instalados

na máquina"

## Verifica se existe o Wget instalado.

## Wget será usado para fazer o download de todos arquivos

## necessarios pelo MShield.

which wget 2&>1 /dev/null

Erro "É necessário possuir o wget instalado no sistema"

##

## Questiona o usuario: Deve-se fazer o download de todos pacotes

necessarios? Esta forma eh mais

## pratica pois o usuario soh precisa ter o script instalador que tem

tamanho bastante reduzido.

## Deve-se instalar o sistema com base nos pacotes do disco? Caso o

usuario possua o instalador do

## MShield na versao que contenha os pacotes no disco (tamanho maior)

tem-se entao uma instalacao

## mais rapida.

##

escolha=$( dialog \

Page 50: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

50

--stdout \

--backtitle "MShield" \

--title 'MShield' \

--menu 'Metodo de Instalacao' \

0 0 0 \

Internet 'Faz o download de todos pacotes necessarios para a

instalacaos' \

Local 'Instala apartir dos pacotes disponiveis no diretorio local

de instalacao do MShield')

## Caso for apertado o botao cancelar

[ $? -eq 1 ] && exit 1

if [ $escolha = "Internet" ]; then

##

## Etapa de download dos pacotes necessarios para o sistema

##

dialog \

--title ' ETAPA 1 - DOWNLOADS '\

--infobox '\n 1. iptables\n

2. libdnet\n

3. pcre\n

4. snort_inline\n

5. libpcap\n

6. oinkmaster\n

7. pmgraph\n

8. rrdtools\n'\

13 40

sleep 1

## Chama a funcao que fara o download dos pacotes

Faz_download;

dialog \

--yesno \

'Etapa de Download dos pacotes concluida com sucesso!\n

Page 51: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

51

\n

Clique YES para continuar, agora com a compilacao de pacotes.

\n

Clique NO para sair.\n

' \

0 0

## Testa se a resposta foi NO, logo, finaliza o instalador

if [ $? = 1 ]; then

clear

exit 1

fi

fi

## Chama a funcao que descompacta os pacotes necessarios para o

MShield

Faz_descompactacao;

## Chama a funcao que compila os pacotes

Faz_compilacao;

# Termino da compilacao

dialog \

--title 'Concluido' \

--infobox \

'Compilacao de pacotes concluida com sucesso.\n

A seguir alguns ajustes finais serao feitos.\n' 0 0

sleep 4

## Ajustes finais

## Chama a funcao que faz os ajustes e configuracoes finais.

Faz_ajustes;

##

Page 52: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

52

## Mensagem final. Instalacao e configuracao concluida

##

dialog \

--backtitle 'MShield' \

--title 'Instalacao Concluida' \

--msgbox \

'\n

O MShield foi instalado e configurado com sucesso!.\n\n

Execute o comando "mshield" para ter acesso ao menu de utilizacao do

sistema.\n

\n' 0 0

Page 53: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

53

APÊNDICE B – Script de Biblioteca (library)

#!/bin/bash

# Funcao que verifica a saida de um comando anterior, caso este tenha

# apresentado erro, sai do programa imprimindo a mensagem passada por

parametro.

function Erro {

if [ $? != 0 -a $? != 2 ]; then

if [ "x$1" != 'x' ]; then

dialog \

--title '<<< Erro >>>' \

--msgbox "\n$1 :(" \

15 60

fi

exit 1

fi

}

# Funcao que retorna verdadeiro caso o pid do programa passado como

parametro esteja em execucao e falso caso

# contrario.

function Rodando {

ps $1 | grep $1 >/dev/null;

}

# Funcao utilizada antes do inicio do download de um arquivo. Serve

para aguardar ate que o arquivo esteja

# efetivamente sendo baixando (jah tenha passado do processo de

conexao, etc).

function Aguarda_inicio_download {

while [ ! -f $1 ]; do

Page 54: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

54

sleep 1;

done

}

# Funcao que mostra uma barra de progresso seguinte o processo de

download do pacote.

# Recebe como primeiro parametro o nome do pacote e como segundo

parametro o tamanho do mesmo.

function Download {

(

while Rodando $PIDRODANDO ; do

TAMANHO=$2

COPIADO=$(du -b $1 | cut -f1)

PORCENTAGEM=$((COPIADO*100/TAMANHO))

echo $PORCENTAGEM

sleep 1; # intervalo

done

) | dialog --title "$1" --gauge "Downloading..." 8 40 0

dialog --title "$1" --infobox 'Download concluido!' 0 0

sleep 2

}

##

##

## Funcao que faz o download de todos pacotes necessarios para o

sistema

##

##

function Faz_download(){

## Download do iptables

wget -q --tries=2 -T 20

Page 55: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

55

http://www.netfilter.org/projects/iptables/files/$IPTABLES.tar.bz2 &

PIDRODANDO=$!; # guarda o PID do programa recem executado. Usado na

funcao Rodando

Aguarda_inicio_download $IPTABLES.tar.bz2

Download $IPTABLES.tar.bz2 1096

Erro "Não foi possível fazer download do Iptables, verificar o link

de download no arquivo ./Instala"

## Download do Snort_Inline

wget -q --tries=2 -T 20

http://heanet.dl.sourceforge.net/sourceforge/snort-

inline/$SNORT.tar.gz &

PIDRODANDO=$!; # guarda o PID do programa recem executado. Usado na

funcao Rodando

Aguarda_inicio_download $SNORT.tar.gz

Download $SNORT.tar.gz 2905172

Erro "Não foi possível fazer download do Snort, verificar o link de

download no arquivo ./Instala"

## Download da libdnet

wget -q --tries=2 -T 20

http://heanet.dl.sourceforge.net/sourceforge/libdnet/$LIBDNET.tar.gz

&

PIDRODANDO=$!; # guarda o PID do programa recem executado. Usado na

funcao Rodando

Aguarda_inicio_download $LIBDNET.tar.gz

Download $LIBDNET.tar.gz 446233

Erro "Não foi possível fazer download da libdnet, verificar o link de

download no arquivo ./Instala"

Page 56: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

56

## Download da libpcap

wget -q --tries=2 -T 20

http://public.planetmirror.com/pub/tcpdump/release/$LIBPCAP.tar.gz &

PIDRODANDO=$!; # guarda o PID do programa recem executado. Usado na

funcao Rodando

Aguarda_inicio_download $LIBPCAP.tar.gz

Download $LIBPCAP.tar.gz 425887

Erro "Não foi possível fazer download da libpcap, verificar o link de

download no arquivo ./Instala"

## Download da pcre

wget -q --tries=2 -T 20

http://heanet.dl.sourceforge.net/sourceforge/pcre/$PCRE.tar.bz2 &

PIDRODANDO=$!; # guarda o PID do programa recem executado. Usado na

funcao Rodando

Aguarda_inicio_download $PCRE.tar.bz2

Download $PCRE.tar.bz2 565852

Erro "Não foi possível fazer download da Pcre, verificar o link de

download no arquivo ./Instala"

## Download do Oinkmaster

wget -q --tries=2 -T 20

http://easynews.dl.sourceforge.net/sourceforge/oinkmaster/$OINKMASTER

.tar.gz &

PIDRODANDO=$!; # guarda o PID do programa recem executado. Usado na

funcao Rodando

Aguarda_inicio_download $OINKMASTER.tar.gz

Page 57: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

57

Download $OINKMASTER.tar.gz 80111

Erro "Não foi possível fazer download do Oinkmaster, verificar o link

de download no arquivo ./Instala"

## Download das RRDtools

wget -q --tries=2 -T 20

http://oss.oetiker.ch/rrdtool/pub/$RRDTOOLS.tar.gz &

PIDRODANDO=$!; # guarda o PID do programa recem executado. Usado na

funcao Rodando

Aguarda_inicio_download $RRDTOOLS.tar.gz

Download $RRDTOOLS.tar.gz 1059902

Erro "Não foi possível fazer download das RRDtools, verificar o link

de download no arquivo ./Instala"

}

##

## Funcao que descompacta todos pacotes necessarios para o MShield

##

function Faz_descompactacao {

dialog \

--title 'Descompactando...' \

--infobox \

'\nAguarde enquanto os pacotes sao descompactados no diretorio

local.\n' \

0 0

for i in $(ls *.tar.bz2); do

tar jxf $i 2>&1

done

Erro "Espaco insuficiente em disco ou problema de permissao na pasta

Page 58: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

58

local"

for i in $(ls *.tar.gz); do

tar zxf $i 2>&1

done

Erro "Espaco insuficiente em disco ou problema de permissao na pasta

local"

dialog \

--title 'Descompactacao concluida!' \

--infobox \

'Inicializando etapa de compilacao dos pacotes\n

Esta etapa pode demorar varios minutos. Por favor aguarde.\n'\

0 0

sleep 4

}

##

##

## Funcao que compila todos os pacotes necessarios para o sistema

## Faz tambem a instalacao dos mesmos

##

##

## Compilando pacotes

## Laco de compilacao

# Compila todos pacotes, ao termino do make install eh verificado a

incidencia de erro no log de compilacao.

# Caso exista erro, o programa eh abortado.

function Faz_compilacao {

for i in $LIBDNET $PCRE $LIBPCAP $PMGRAPH $RRDTOOLS

do

dialog \

--title "Compilando $i" \

Page 59: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

59

--infobox \

"Por favor aguarde\n" 0 0

cd $i

./configure > $i.log 2>&1 ; make >> $i.log 2>&1 ; make install >>

$i.log 2>&1

cat $i.log | egrep -i "\berror\b" 2>&1

if [ $? = 0 ]; then

Erro "Problemas na compilacao do pacote $i"

fi

cd ..

done

# Compilacao especifica para Snort_inline

# Eh ativado o Perfmonitor para podermos gerar os graficos de

estatisticas

cd $SNORT

./configure --enable-perfmon > $SNORT.log 2>&1 ; make >> $SNORT.log

2>&1 ; make install >> $SNORT.log 2>&1

cat $SNORT.log | egrep -i "\berror\b" 2>&1

if [ $? = 0 ]; then

Erro "Problemas na compilacao do pacote $SNORT"

fi

cd ..

# Ajustando iptables para compilacao, precisa de ajustes.

# Remove da compilacao o modulo string, nao utilizado.

dialog \

--title "Compilando $IPTABLES" \

--infobox \

"Por favor aguarde\n" 0 0

rm ./$IPTABLES/extensions/libipt_stri*

rm ./$IPTABLES/extensions/.stri*

cd $IPTABLES

make install-devel > $IPTABLES.log 2>&1

cat $IPTABLES.log | egrep -i "\berror\b" 2>&1

Page 60: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

60

if [ $? = 0 ]; then

Erro "Problemas na compilacao do pacote $IPTABLES"

fi

cd ..

}

##

##

## Funcao usada para fazer os ajustes finais de configuracao e

instalacao dos aplicativos

##

##

function Faz_ajustes {

# Ajuste pmgraph

cd ./contrib/ && echo '#!/usr/bin/perl -w -I /usr/local/rrdtool-

1.2.16/lib/perl/5.8.8/' > temp && cat pmgraph.pl | grep -v

'#!/usr/bin/perl' >> temp

mv temp pmgraph.pl

chmod +x pmgraph.pl

cd ..

cp ./contrib/pmgraph.pl /usr/bin

# Ajuste Snort_inline

dialog \

--title 'Ajustando Snort_inline' \

--infobox \

'Criando diretorios e copiando regras.\n' 0 0

sleep 3

# Prepara Snort_inline

mkdir -p /etc/snort_inline/drop-rules

mkdir -p /var/log/snort_inline

Page 61: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

61

mkdir -p /etc/snort_inline/relatorio

cp ./$SNORT/etc/clas* /etc/snort_inline/drop-rules

cp ./$SNORT/etc/refe* /etc/snort_inline/drop-rules

cp ./$SNORT/etc/unicode.map /etc/snort_inline/unicode.map

cp ./contrib/oinkmaster_update /etc/snort_inline/

# Ajusta snort para que comece a fazer log de atividades no arquivo

perfmon.txt, para que possa ser

# gerado o relatorio posteriormente

if [ -f /etc/snort_inline/snort_inline.conf ]; then

rm /etc/snort_inline/snort_inline.conf

fi

echo 'preprocessor perfmonitor: flow max events time 30 file

/etc/snort_inline/perfmon.txt pktcnt 300' >>

/etc/snort_inline/snort_inline.conf

cat ./$SNORT/etc/snort_inline.conf >>

/etc/snort_inline/snort_inline.conf

# Cria o arquivo de regras personalizadas

touch $RULE_PATH/local.rules

# Inclui variavel DNS_SERVERS, necessaria para algumas rules

echo 'var DNS_SERVERS any' >> /etc/snort_inline/snort_inline.conf

# Ajuste Oinkmaster

dialog \

--title 'Ajustando Oinkmaster' \

--infobox \

'Ajustando e copiando arquivos necessarios.\n' 0 0

sleep 3

# Configura a url do oinkmaster no arquivo de configuracao e

substitui os alerts por drops nas rules

# atualizadas

cd ./$OINKMASTER/ && echo "url = http://www.snort.org/pub-

bin/downloads.cgi/Download/comm_rules/Community-Rules-2.4.tar.gz" >

temp && echo 'modifysid * "^alert" | "drop"' >> temp && cat

oinkmaster.conf >> temp

Page 62: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

62

mv temp oinkmaster.conf

cd ..

cp ./$OINKMASTER/oinkmaster.conf /etc/

cp ./$OINKMASTER/oinkmaster.pl /usr/bin

dialog \

--title 'Atualizando rules' \

--infobox \

'Fazendo download das rules mais atualizadas disponiveis.\n' 0 0

sleep 3

# faz download de todas as rules comunitarias oficiais mais

atualizadas

oinkmaster.pl -o /etc/snort_inline/drop-rules > /dev/null 2>&1

# Devido ao fato de as rules comunitarias virem com o prefixo

community- no nome de cada uma

# abaixo retiramos este prefixo para deixarmos as rules no padrao do

snort_inline.conf

for i in $(ls /etc/snort_inline/drop-rules/*.rules)

do

i=$(basename $i)

j=$(echo $i | sed 's/community-//g')

mv /etc/snort_inline/drop-rules/$i /etc/snort_inline/drop-

rules/$j > /dev/null 2>&1

done

# Retira do arquivo snort_inline.conf padrao de instacao todos

includes de regras.

# e coloca os novos includes de acordo com as regras atualmente

disponiveis no diretorio correspondente

cat /etc/snort_inline/snort_inline.conf | grep -v 'include $RULE*' >

/etc/snort_inline/tmp

cp /etc/snort_inline/tmp /etc/snort_inline/snort_inline.conf ; rm

/etc/snort_inline/tmp

Page 63: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

63

echo 'include $RULE_PATH/classification.config' >>

/etc/snort_inline/snort_inline.conf

echo 'include $RULE_PATH/reference.config' >>

/etc/snort_inline/snort_inline.conf

for i in $(ls /etc/snort_inline/drop-rules/*.rules)

do

i=$(basename $i)

echo "include \$RULE_PATH/$i" >> /etc/snort_inline/snort_inline.conf

done

# Faz com que o snort_inline olhe tambem para um novo arquivo de

regras que nao eh padrao.

# Neste arquivos serao postas as regras criadas pelo usuario.

echo 'include $RULE_PATH/local.rules' >>

/etc/snort_inline/snort_inline.conf

# Copia arquivo de inicializacao do MShield (rc.mshield) para a pasta

padrao do slack /etc/rc.d

cp ./contrib/rc.mshield /etc/rc.d/ ; chmod -rx /etc/rc.d/rc.mshield

# Agenda execucao do oinkmaster para atualizar as rules todo dia

primeiro de cada mes as 10 horas

crontab -l -u root > /etc/snort_inline/cron

echo "00 10 1 * * /etc/snort_inline/oinkmaster_update 2>&1" >>

/etc/snort_inline/cron

crontab /etc/snort_inline/cron -u root

# Copia o arquivo mshield para um diretorio visivel ao path

cp mshield /usr/bin

}

Page 64: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

64

APÊNDICE C – Script do Oinkmaster (oinkmaster_update)

#!/bin/bash

## Adiciona o prefixo community- no nome de cada arquivo de regra,

para que assim o oinkmaster possa

## comparar as regras e atualizar o necessario

for i in $(ls /etc/snort_inline/drop-rules)

do

i=$(basename $i);

mv /etc/snort_inline/drop-rules/$i /etc/snort_inline/drop-

rules/community-$i

done

## Atualiza regras baixando a versao mais recente

oinkmaster.pl -o /etc/snort_inline/drop-rules

## Retira-se o prefixo community- do nome dos arquivos de regra para

assim se adequar ao padrao do snort

for i in $(ls /etc/snort_inline/drop-rules/)

do

i=$(basename $i);

j=$(echo $i | sed 's/community-//g')

mv /etc/snort_inline/drop-rules/$i /etc/snort_inline/drop-

rules/community-$i

done

A função deste script, no contexto do projeto, é de atualizar

periodicamente as regras do snort_inline.

Na primeira parte do script existe um laço de repetição for, o qual, tem

a função de adicionar a todas regras já existentes, o prefixo "community-".

Isto é feito por que as regras recém baixadas pelo oinkmaster contém este

prefixo, por outro lado, este prefixo não é padrão do snort_inline, portanto, é

Page 65: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

65

retirado no final do script pelo último laço for. A linha do script, a qual executa

o arquivo, oinkmaster.pl é a principal. A execução do oinkmaster.pl irá fazer o

download das mais novas regras comunitárias disponíveis no site do snort. O

oinkmaster, durante sua execução, compara as novas regras com as atuais,

de forma a atualizá-las. São adicionadas às atuais, as regras que faltam e

retiradas as regras que não existem mais na versão atual por algum motivo.

Existe uma configuração fina feita no script de instalação do MShield, a qual,

se encarrega de evitar que o oinkmaster considere o arquivo local.rules, o

qual contém regras personalizadas do usuário, portanto, estas não devem

ser alteradas.

Este script é agendado para execução periódica, todo dia primeiro de

cada mês às dez horas da manhã. Este agendamento é feito também no

script de instalação do MShield.

Page 66: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

66

APÊNDICE D – Script de Utilização (mshield)

Page 67: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

67

Este script tem a finalidade de fornecer ao usuário uma interface de

operação bastante simples para o Mshield. Através dele é possível Ativar,

Desativar, Gerar relatório e Personalizar o sistema.

#!/bin/bash

##

## Mensagem de apresentacao do sistema

##

dialog \

--title 'MShield (Mighty Shield) 1.0'

\

--msgbox \

'\n

Bem vindo ao MShield. \n\n\n\n\n\n

Aqui voce pode:\n\n

- Personalizar regras de protecao\n\n

- Gerar relatorios\n\n

- Parar e iniciar o MShield.\n\n

Tudo de maneira muito simples e intuitiva.

\n' \

25 80

comeca() {

escolha=$( dialog \

--stdout \

--backtitle "MShield" \

--title 'MShield' \

--menu 'O que deseja fazer?' \

0 0 0 \

Personalizar 'Bloquear/Desbloquear portas' \

Page 68: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

68

Relatorio 'Gerar relatorio' \

Parar 'Desabilita o MShield' \

Inicia 'Ativa o MShield' \

Sair 'Sai do MShield' )

## Caso for apertado o botao cancelar

[ $? -eq 1 ] && exit 1

### MENU DE PERSONALIZACAO ##

if [ $escolha = "Personalizar" ]; then

escolha_person=$( dialog \

--stdout \

--title 'MShield' \

--menu 'O que deseja fazer?' \

0 0 0 \

BloquearIN 'Bloquear acesso externo a alguma porta local

especifica' \

BloquearOUT 'Bloquear acesso interno a alguma porta externa

especifica' \

Desbloquear 'Desbloquear acesso interno a alguma porta externa

especifica' )

## Caso for apertado o botao cancelar

[ $? -eq 1 ] && comeca

if [ $escolha_person = "BloquearIN" ]; then

porta=$( dialog \

--stdout \

--title 'Bloquear' \

--inputbox 'Digite a porta a ser bloqueada:' \

0 0 )

## Caso for apertado o botao cancelar

[ $? -eq 1 ] && comeca

echo "drop tcp any any -> any $porta (classtype:attempted-user;

Page 69: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

69

msg:\"Port $porta connection initiated\";)" >>

/etc/snort_inline/drop-rules/local.rules

dialog \

--title 'Sucesso' \

--msgbox "A porta $porta foi bloqueada com sucesso! Para e

inicie o MShield novamente." \

6 70

comeca # volta ao inicio

fi

if [ $escolha_person = "BloquearOUT" ]; then

porta=$( dialog \

--stdout \

--title 'Bloquear' \

--inputbox 'Digite a porta a ser bloqueada:' \

0 0 )

## Caso for apertado o botao cancelar

[ $? -eq 1 ] && comeca

echo "drop tcp any $porta -> any any (classtype:attempted-user;

msg:\"Port $porta connection initiated\";)" >>

/etc/snort_inline/drop-rules/local.rules

dialog \

--title 'Sucesso' \

--msgbox "A porta $porta foi bloqueada com sucesso! Pare e

inicie o MShield novamente." \

6 70

comeca # volta ao inicio

fi

Page 70: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

70

if [ $escolha_person = "Desbloquear" ]; then

porta=$( dialog \

--stdout \

--title 'Desbloquear' \

--inputbox 'Digite a porta a ser desbloqueada:' \

0 0 )

## desbloqueando (retirar a regra de bloqueio de local.rules)

grep -v "Port $porta" /etc/snort_inline/drop-rules/local.rules | tee

/etc/snort_inline/drop-rules/local.rules

dialog \

--title 'Sucesso' \

--msgbox "A porta $porta foi desbloqueada com sucesso!" \

6 40

comeca # volta ao inicio

fi

fi

##############################

### MENU DE RELATORIO ###

if [ $escolha = "Relatorio" ]; then

dialog \

--title 'Confirmacao' \

--yesno '\nDeseja realmente gerar o relatorio de atividades do

MShield?\n\n' \

0 0

if [ $? = 0 ]; then

pmgraph.pl /etc/snort_inline/relatorio/

/etc/snort_inline/perfmon.txt 1

sleep 3

Page 71: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

71

dialog \

--title 'Sucesso' \

--msgbox "O Relatorio foi gerado com sucesso. Faca sua

visualizacao atraves do navegador no endereco:

/etc/snort_inline/relatorio/relatorio.html.\n" \

0 0

comeca

else

comeca

fi

fi

##########################

### MENU DE PARAR ###

if [ $escolha = "Parar" ]; then

dialog \

--title 'Confirmacao' \

--yesno '\nTem certeza que deseja desativar o MShield?\n\n' \

0 0

if [ $? = 0 ]; then

if [ ! -x /etc/rc.d/rc.mshield ]; then

chmod +rx /etc/rc.d/rc.mshield

fi

/etc/rc.d/rc.mshield stop

/etc/snort_inline/relatorio/report

dialog \

--title 'Sucesso' \

--msgbox "MShield foi desativado com sucesso. Para reativa-lo

escolha a opcao Iniciar \

no menu inicial." \

0 0

Page 72: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

72

dialog \

--title 'Confirmacao' \

--yesno '\nDeseja que o MShield pare de ser executado

automaticamente durante o boot do sistema?\n\n' \

0 0

if [ $? = 0 ]; then

chmod -xr /etc/rc.d/rc.mshield

else

chmod -xr /etc/rc.d/rc.mshield

fi

comeca

else

comeca

fi

fi

#####################

### MENU DE INICIA ###

if [ $escolha = "Inicia" ]; then

dialog \

--title 'Confirmacao' \

--yesno '\nTem certeza que deseja ativar o MShield?\n\n' \

0 0

if [ $? = 0 ]; then

if [ ! -x /etc/rc.d/rc.mshield ]; then

chmod +xr /etc/rc.d/rc.mshield

fi

/etc/rc.d/rc.mshield start

dialog \

--title 'Sucesso' \

Page 73: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

73

--msgbox "MShield foi ativado com sucesso. Para desativa-lo

escolha a opcao Parar \

no menu inicial." \

0 0

dialog \

--title 'Confirmacao' \

--yesno '\nDeseja que o MShield seja executado automaticamente

durante o boot do sistema?\n\n' \

0 0

if [ $? = 0 ]; then

chmod +xr /etc/rc.d/rc.mshield

echo "if [ -x /etc/rc.d/rc.mshield ]; then

. /etc/rc.d/rc.mshield

fi" >> /etc/rc.d/rc.M

else

chmod -xr /etc/rc.d/rc.mshield

fi

comeca

else

comeca

fi

fi

#####################

### MENU DE SAIR ###

if [ $escolha = "Sair" ]; then

clear

exit 0

fi

####################

exit 0

}

Page 74: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

74

# executa o script

comeca

Page 75: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

75

APÊNDICE E – Script de Inicialização (rc.mshield)

O script abaixo é utilizado pelo script de utilização “mshield” para

inicializar e parar o MShield de maneira correta.

#!/bin/sh

# Start/stop MShield:

mshield_start() {

# Inicia o MShield

modprobe ip_queue

iptables -I INPUT -p udp -j QUEUE

iptables -I INPUT -p tcp -j QUEUE

snort_inline -c /etc/snort_inline/snort_inline.conf -Q -N -l

/var/log/snort_inline/ \

-t /var/log/snort_inline/ -v -D > /dev/null 2>&1

}

mshield_stop() {

# Para o MShield

rmmod ip_queue

iptables -D INPUT -p tcp -j QUEUE

iptables -D INPUT -p udp -j QUEUE

killall snort_inline

sleep 2

}

case "$1" in

'start')

mshield_start

;;

'stop')

mshield_stop

Page 76: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

76

;;

*)

echo "modo de usar: $0 start|stop"

esac

Page 77: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

77

APÊNDICE F – Script auxiliar de relatório (report)

#!/bin/bash

echo '<html>

<body>

<h1> <div align="center">

*********************************************** </div></h1>

<h1> <div align="center"> Relatorio MSHIELD </div></h1>

<h1> <div align="center">

*********************************************** </div></h1>

<br>

<br>

<h2><div align="center"><font color="blue"> Numero de bloqueios

efetuados: </font><font color="red">' >

/etc/snort_inline/relatório/relatório.html

# quantidade de pacotes bloqueados eh o mesmo numero de linhas do

arquivo de log

count=$(wc -l /var/log/snort_inline/snort_inline-fast | cut -d ' '

-f1)

echo $count >> /etc/snort_inline/relatório/relatório.html

echo '</font></a></div></h2><br>

<h2><div align="center"><a href="teste.txt"> Clique aqui para

Informacoes Extras de atividades </a></div></h2>

</body>

</html>' >> /etc/snort_inline/relatório/relatório.html

Page 78: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

78

AUTORIZAÇÃO

Autorizo a reprodução e/ou divulgação total ou parcial da presente obra,

por qualquer meio convencional ou eletrônico, desde que citada a fonte.

Nome do autor: Rodrigo Polesso

Assinatura do autor: __________________________

Instituição: Universidade Tecnológica Federal do Paraná

Local: Curitiba, Paraná

E-mail: [email protected]

Page 79: MShield: Sistema de Segurança Linux para Usuário Finalcristina/MShield.pdf · • Guardian: programa de segurança que funciona junto com o Snort, software com funcionalidade de

79