• Nenhum resultado encontrado

4 O SISTEMA DE SEGURANÇA MSHIELD

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

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.

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.

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.

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.

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

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,

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 \

--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

\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;

##

## 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

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

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

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"

## 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

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

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" \

--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

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

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

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 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

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

}

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 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 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, é

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.

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

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' \

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;

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

Documentos relacionados