Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

linux:artigos:snort-mysql-guardian [13/01/2015 10:44] (atual)
Linha 1: Linha 1:
 +~~NOTOC~~
 +====== Implementando Snort com MySQL e Guardian ======
 +
 +===== Instalando o Snort =====
 +
 +Primeiramente precisamos instalar os pacotes necessários.
 +
 +<​code>​
 +root@debian:​~#​ aptitude install snort-mysql snort-common snort-common-libraries ​
 +root@debian:​~#​ aptitude install snort-doc snort-rules snort-rules-default
 +
 +# Responda as seguintes perguntas ...
 +
 +Address range for the local network: 200.49.175.144/​29
 +Set up a database for snort-mysql to log to? <Yes>
 +</​code>​
 +
 +Logo após a instalação,​ o //Snort// não conseguirá finalizar a instalação dos pacotes pois a base de dados do //MySQL// ainda não estará configurada. Precisaremos finalizar a configuração do //Snort// com o //MySQL// para que a instalação seja finalizada.
 +
 +Vamos descompactar o arquivo SQL para a criação das tabelas do //MySQL//.
 +
 +<​code>​
 +root@debian:​~#​ gunzip /​usr/​share/​doc/​snort-mysql/​create_mysql.gz
 +</​code>​
 +
 +Em seguida, vamos preparar o //MySQL// e importar o arquivo SQL para dentro do banco de dados.
 +
 +<​code>​
 +root@debian:​~#​ mysql -u root -p
 +Enter password: ****************
 +
 +Welcome to the MySQL monitor. ​ Commands end with ; or \g.
 +Your MySQL connection id is 1237076
 +Server version: 5.1.37-0.dotdeb.1 (Debian)
 +
 +Type '​help;'​ or '​\h'​ for help. Type '​\c'​ to clear the current input statement.
 +
 +mysql> CREATE DATABASE snort;
 +Query OK, 1 row affected (0.04 sec)
 +
 +mysql> CREATE USER '​snort'​@'​localhost'​ IDENTIFIED BY '​senha';​
 +Query OK, 0 rows affected (0.01 sec)
 +
 +mysql> GRANT ALL PRIVILEGES ON `snort` . * TO '​snort'​@'​localhost';​
 +Query OK, 0 rows affected (0.01 sec)
 +
 +mysql> use snort;
 +Database changed
 +
 +mysql> source /​usr/​share/​doc/​snort-mysql/​create_mysql
 +Query OK, 0 rows affected (0.06 sec)
 +
 +Query OK, 1 row affected (0.01 sec)
 +
 +mysql> quit
 +Bye
 +</​code>​
 +
 +Em seguida, remova o arquivo a seguir para que a instalação possa continuar.
 +
 +<​code>​
 +root@debian:​~#​ rm /​etc/​snort/​db-pending-config
 +
 +rm: remove regular empty file `/​etc/​snort/​db-pending-config'?​ y
 +</​code>​
 +
 +Feito isso, apenas execute o //​**aptitude**//​ novamente para que a instalação possa ser finalizada.
 +
 +<​code>​
 +root@debian:​~#​ aptitude -f install
 +</​code>​
 +
 +===== Configurando o Snort =====
 +
 +Para configurar o //Snort//, vamos editar o seu arquivo de configuração.
 +
 +<​code>​
 +root@debian:​~#​ vi /​etc/​snort/​snort.conf
 +
 +#var HOME_NET any
 +var HOME_NET [200.49.175.144/​29,​201.63.57.80/​29]
 +
 +var EXTERNAL_NET [200.49.175.144/​29]
 +#var EXTERNAL_NET any
 +#var EXTERNAL_NET !$HOME_NET
 +
 +#var DNS_SERVERS $HOME_NET
 +var DNS_SERVERS [200.49.175.146,​201.63.57.82]
 +
 +#var SMTP_SERVERS $HOME_NET
 +var SMTP_SERVERS [200.49.175.146]
 +
 +#var HTTP_SERVERS $HOME_NET
 +var HTTP_SERVERS [200.49.175.146]
 +
 +#var SQL_SERVERS $HOME_NET
 +var SQL_SERVERS [200.49.175.146,​201.63.57.82]
 +
 +var TELNET_SERVERS $HOME_NET
 +
 +#var SNMP_SERVERS $HOME_NET
 +var SNMP_SERVERS [201.63.57.82]
 +
 +[...]
 +
 +preprocessor http_inspect:​ global iis_unicode_map unicode.map 1252
 +
 +#​preprocessor http_inspect_server:​ server default profile all ports { 80 8080 8180 } oversize_dir_length 500
 +
 +preprocessor http_inspect_server:​ server default \
 +ports { 80 3128 8080 } \
 +flow_depth 0 \
 +#​iis_unicode_map unicode.map 1252 # Doesnt want to work
 +directory no \
 +ascii no \
 +utf_8 no \
 +bare_byte no \
 +double_decode no \
 +u_encode yes \
 +multi_slash no \
 +#​non_rfc_char { 0x00 } \ # Generates too many false positives
 +#​chunk_length 500000 \
 +chunk_length 0 \
 +non_strict \
 +iis_unicode no \
 +iis_backslash no \
 +iis_delimiter no \
 +#​oversize_dir_length 400 \ # Generates too many false positives
 +webroot yes
 +
 +[...]
 +
 +output log_tcpdump:​ tcpdump.log
 +
 +output database: log, mysql, user=snort password=senha dbname=snort host=localhost
 +</​code>​
 +
 +Feito a configuração,​ reinicie o serviço do //Snort//.
 +
 +<​code>​
 +root@debian:​~#​ /​etc/​init.d/​snort stop
 +Stopping Network Intrusion Detection System: snortNo running snort instance found (warning).
 +
 +root@debian:​~#​ /​etc/​init.d/​snort start
 +Starting Network Intrusion Detection System: snort (eth0 no /​etc/​snort/​snort.eth0.conf found,
 +defaulting to snort.conf ...done).
 +</​code>​
 +
 +E confira se o processo do //Snort// foi carregado com sucesso. Caso não esteja carregado como mostrado a seguir, verifique o arquivo de log (//​**/​var/​log/​syslog**//​) em busca de possíveis erros existentes na configuração.
 +
 +<​code>​
 +root@debian:​~#​ ps ax | grep snort
 +
 +26850 ?    Ss   0:10 /​usr/​sbin/​snort -m 027 -D -d -l /​var/​log/​snort -u snort -g snort -c /​etc/​snort/​snort.conf -S HOME_NET=[200.49.175.144/​29] -i eth0
 +</​code>​
 +
 +Em seguida vamos implementar o modelo de visualização via web. Siga os passos a seguir:
 +
 +<​code>​
 +root@debian:​~#​ cd /var/www
 +root@debian:/​var/​www#​ wget -c http://​downloads.sourceforge.net/​project/​secureideas/​BASE/​base-1.4.3.1/​base-1.4.3.1.tar.gz?​use_mirror=ufpr
 +root@debian:/​var/​www#​ tar -xvzf base-1.4.3.1.tar.gz
 +root@debian:/​var/​www#​ mv base-1.4.3.1/​ snort
 +root@debian:/​var/​www#​ rm -f base-1.4.3.1.tar.gz
 +root@debian:/​var/​www#​ chown -R root.www-data snort/
 +root@debian:/​var/​www#​ chmod -R g+w snort/
 +
 +root@debian:/​var/​www#​ wget -c http://​downloads.sourceforge.net/​project/​adodb/​adodb-php5-only/​adodb-509a-for-php5/​adodb509a.tgz?​use_mirror=ufpr
 +root@debian:/​var/​www#​ tar xzvf adodb509a.tgz
 +root@debian:/​var/​www#​ rm -f adodb509a.tgz
 +root@debian:/​var/​www#​ chown -R root.root adodb5
 +
 +</​code>​
 +
 +Em seguida, vamos acessar o ambiente web para verificação dos logs do //Snort//. Para isso, acesse:
 +
 +<​code>​
 +http://​seu_ip/​snort
 +</​code>​
 +
 +Na primeira tela, confira os dados e clique em "​Continue"​.
 +
 +<​code>​
 +Settings
 +
 +Config Writeable: Yes
 +PHP Version: 5.2.9-0.dotdeb.2
 +PHP Logging Level: [ERROR][WARNING][PARSE] ​
 +</​code>​
 +
 +Em seguida o passo 1 de 5, onde configuramos a linguagem e o caminho do adodb5.
 +
 +<​code>​
 +Step 1 of 5
 +
 +Pick a Language: portuguese
 +Path to ADODB: /​var/​www/​adodb5/​
 +</​code>​
 +
 +Feita as configurações,​ clique em //**Enviar Dados**//.
 +
 +A etapa 2 é a configuração do acesso a base de dados do //MySQL//.
 +
 +<​code>​
 +Step 2 of 5
 +
 +Pick a Database type: MySQL
 + 
 +Database Name: snort
 +Database Host: localhost
 +Database Port: 3306
 +Database User Name: snort
 +Database Password: senha
 + 
 +Use Archive Database: Não Marcar
 +Archive Database Name: Não Configurar
 +Archive Database Host: Não Configurar
 +Archive Database Port: Não Configurar
 +Leave blank for default! Não Configurar
 +Archive Database User Name: Não Configurar
 +Archive Database Password: Não Configurar
 +</​code>​
 +
 +Feita as configurações,​ clique em //**Enviar Dados**//.
 +
 +Na etapa 3, vamos configurar um usuário e senha para autenticar no sistema.
 +
 +<​code>​
 +Step 3 of 5
 + 
 +Use Authentication System: Não Marcar
 +Admin User Name: Não Configurar ​
 +Password: Não Configurar
 +Full Name: Não Configurar
 +</​code>​
 +
 +Feita as configurações,​ clique em //**Enviar Dados**//.
 +
 +Na etapa 4, iremos criar adicionar alguns dados nas tabelas da base do //Snort// no //MySQL//.
 +
 +<​code>​
 +Step 4 of 5
 +
 +Operation: BASE tables
 +Description:​ Adds tables to extend the Snort DB to support the BASE functionality
 +</​code>​
 +
 +Clique em //**Create Base AG**//
 +
 +O resultado deverá ser algo parecido com o log a seguir:
 +
 +<​code>​
 +Successfully created '​acid_ag'​
 +Successfully created '​acid_ag_alert'​
 +Successfully created '​acid_ip_cache'​
 +Successfully created '​acid_event'​
 +Successfully created '​base_roles'​
 +Successfully INSERTED Admin role
 +Successfully INSERTED Authenticated User role
 +Successfully INSERTED Anonymous User role
 +Successfully INSERTED Alert Group Editor role
 +Successfully created '​base_users'​
 +
 +Status: DONE - Successfully created user.
 +</​code>​
 +
 +Feita as configurações,​ clique em //**Now continue to step 5**//.
 +
 +Agora basta logar com o usuário e senha criados e você já terá os relatórios do //​Snort//​. ​
 +
 +===== Instalando e Configurando o Guardian =====
 +
 +O //​Guardian//​ não possui pacote nos repositórios. Com isso, teremos que baixar o pacote do site oficial. Siga os passos a seguir.
 +
 +<​code>​
 +root@debian:​~#​ wget -c http://​www.chaotic.org/​guardian/​guardian-1.7.tar.gz
 +root@debian:​~#​ tar xzvf guardian-1.7.tar.gz
 +root@debian:​~#​ cd guardian-1.7
 +root@debian:​~/​guardian-1.7#​ cp scripts/​iptables_block.sh /​usr/​local/​bin/​guardian_block.sh
 +root@debian:​~/​guardian-1.7#​ cp scripts/​iptables_unblock.sh /​usr/​local/​bin/​guardian_unblock.sh
 +root@debian:​~/​guardian-1.7#​ cp guardian.conf /etc/snort/
 +root@debian:​~/​guardian-1.7#​ ln -s /​etc/​snort/​guardian.conf /​etc/​guardian.conf
 +root@debian:​~/​guardian-1.7#​ cp guardian.pl /​usr/​local/​bin/​
 +root@debian:​~/​guardian-1.7#​ chown root.root /​usr/​local/​bin/​guardian*
 +</​code>​
 +
 +Agora vamos configurar o //​Guardian//​.
 +
 +<​code>​
 +root@debian:​~#​ vi /​etc/​snort/​guardian.conf
 +
 +HostIpAddr ​       200.49.175.146
 +
 +Interface ​        eth0
 +
 +#​HostGatewayByte ​ 1
 +HostGatewayByte ​  145
 +
 +#​LogFile ​         /​var/​log/​guardian.log
 +LogFile ​          /​var/​log/​snort/​guardian.log
 +
 +#​AlertFile ​       /​var/​adm/​secure
 +AlertFile ​        /​var/​log/​snort/​alert
 +
 +#​IgnoreFile ​      /​etc/​guardian.ignore
 +IgnoreFile ​       /​etc/​snort/​guardian.ignore
 +
 +#​TargetFile ​      /​etc/​guardian.target
 +TargetFile ​       /​etc/​snort/​guardian.target
 +
 +TimeLimit ​        86400
 +</​code>​
 +
 +Em seguida criaremos dois arquivos adicionais, necessários para o //​Guardian//​ funcionar corretamente.
 +
 +<​code>​
 +root@debian:​~#​ touch /​etc/​snort/​guardian.ignore ​
 +</​code>​
 +
 +Neste arquivo você poderá adicionar os IPs que serão ignorados pelo //​Guardian//​.
 +
 +E no próximo, você cadastrará os IPs adicionais a serem monitorados caso existam, o que é o caso da nossa configuração.
 +
 +<​code>​
 +root@debian:​~#​ vi /​etc/​snort/​guardian.target
 +
 +200.49.175.146
 +200.49.175.147
 +200.49.175.148
 +200.49.175.149
 +200.49.175.150
 +</​code>​
 +
 +Também precisamos criar o arquivo de log do //​Guardian//​.
 +
 +<​code>​
 +root@debian:​~#​ touch /​var/​log/​snort/​guardian.log
 +</​code>​
 +
 +Para finalizar vamos criar um arquivo de inicialização para gerenciar o //​Guardian//​.
 +
 +<​code>​
 +root@debian:​~#​ vi /​etc/​init.d/​guardian.sh
 +
 +#!/bin/sh
 +
 +start()
 +{
 +        export PATH=$PATH:/​usr/​local/​bin
 +        /​usr/​local/​bin/​guardian.pl -c /​etc/​snort/​guardian.conf
 +}
 +
 +stop()
 +{
 +        ps aux | grep '​guardian.pl *-c' 2>&1 > /dev/null
 +        if [ $? -eq 0 ];
 +        then
 +                kill `ps aux | grep '​guardian.pl *-c' | awk '​{print $2}'`
 +        else
 +                echo "​Guardian is not running ....."
 +        fi
 +}
 +
 +status()
 +{
 +        ps aux | grep '​guardian.pl *-c' 2>&1 > /dev/null
 +        if [ $? -eq 0 ];
 +        then
 +                echo "​Guardian is Running ....."
 +        else
 +                echo "​Guardian is not Running ...."
 +        fi
 +}
 +
 +case "​$1"​ in
 +        start)
 +        start
 +        ;;
 +        stop)
 +        stop
 +        ;;
 +        restart)
 +        stop
 +        start
 +        ;;
 +        status)
 +        status;;
 +        *)
 +        echo $"​Usage:​ $0 {start|stop|restart|status}"​
 +esac
 +</​code>​
 +
 +Uma cópia deste arquivo (//​**guardian.sh**//​) pode ser obtida em http://​downloads.fabriciovc.eti.br/​snort/​guardian.sh.
 +
 +Não podemos esquecer de dar permissão de excução no arquivo.
 +
 +<​code>​
 +root@debian:​~#​ chmod +x /​etc/​init.d/​guardian.sh
 +</​code>​
 +
 +E adicionar o mesmo para que seja sempre carregado na inicialização.
 +
 +<​code>​
 +root@debian:​~#​ ln -s /​etc/​init.d/​guardian.sh /​etc/​rc2.d/​S21guardian.sh
 +</​code>​
 +
 +E para finalizar, vamos reiniciar o serviço do Guardian.
 +
 +<​code>​
 +root@debian:​~#​ /​etc/​init.d/​guardian.sh stop
 +root@debian:​~#​ /​etc/​init.d/​guardian.sh start
 +
 +OS shows Linux
 +My ip address and interface are: 200.49.175.146 eth0
 +Loaded 0 addresses from /​etc/​snort/​guardian.ignore
 +Loaded 5 addresses from /​etc/​snort/​guardian.target
 +Becoming a daemon..
 +</​code>​
 +
 +----
 +<​html>​
 +<a href="​javascript:​window.history.go(-1)">​Voltar</​a>​
 +</​html>​
  
linux/artigos/snort-mysql-guardian.txt · Última modificação: 13/01/2015 10:44 (edição externa)