Configuração do Snort
Inicialmente é preciso configurar o banco de dados que será utilizado para o Snort registrar as ocorrências detectadas. Aqui será utilizado o MySQL, instalado no passo anterior. Para iniciar a configuração do MySQL execute o seguinte comando num terminal:
# /usr/sbin/mysql_createdb
Atenção
Cuidado com a execução do comando a seguir. Execute-o somente se o MySQL nunca tiver sido utilizado antes, caso contrário você poderá perder seus dados.
A seguir, o comando pedirá a senha do usuário root do MySQL; note que essa senha não é a senha do superusuário do seu sistema e sim do usuário root do banco de dados.
Agora que já foi definida a senha do usuário root, o serviço MySQL deve ser iniciado. Continue no terminal e digite:
# service mysql start
Surgirá então uma mensagem indicando que o daemon do banco de dados foi iniciado.
O próximo passo é criar a base de dados na qual o Snort irá armazenar as ocorrências. Veja a seguir quais comandos utilizar.
# mysql -u root -pEnter password:Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 1 to server version: 3.23.54-logType 'help;' or '\h' for help. Type '\c' to clear the buffermysql> create database snort; Query OK, 1 row affected (0.01 sec)mysql> grant insert, select update on snort.* to snort@localhost \identified by 'senha123'; Query OK, 0 rows affected (0.02 sec)mysql> grant insert, select, delete, update, create on \ snort.* to acid@localhost identified by -> 'acid_senha'; Query OK, 0 rows affected (0.01 sec)mysql> quit
Na primeira linha de comando informa-se ao MySQL que deve-se iniciá-lo como usuário root e que ele deve pedir a senha do usuário. Na segunda e terceira linha cria-se a base de dados e o usuário que o Snort irá utilizar para registrar as ocorrências. Observe que o usuário snort não tem permissão de apagar nada, e nem precisa. A única operação que o Snort irá executar será inserir incidências na base de dados.
Na quarta linha, é criado o usuário acid com permissão de inserir, selecionar, apagar, atualizar e criar tabelas na base de dados. A permissão de criação é dada para o usuário acid somente enquanto não instala-se e configura-se esse aplicativo. Assim que a configuração do ACID estiver terminada, essa permissão deve ser retirada, pois abre uma brecha potencial na segurança.
Criada a base de dados e os usuários necessários, deve-se ir até o diretório /usr/share/doc/snort-versão/; lá está contido um script para criar as tabelas e demais estruturas que o Snort irá utilizar. Estando nesse diretório, execute o seguinte comando:
# mysql -u root -p snort < create_mysql
O comando irá informar ao MySQLpara, como usuário root (do MySQL), executar na base de dados snort os comandos que estão no arquivo create_mysql. Você deverá informar a senha do usuário root do banco de dados para que o comando seja bem-sucedido. A seguir, execute o seguinte comando[12]:
# bzcat snortdb-extra.bz2 | mysql -u root -p snort
Esse comando irá terminar de criar as estruturas necessárias para o Snort.
Terminada a criação da estrutura da base de dados necessária para a utilização do Snort, deve-se agora editar o arquivo de configuração que fica em /etc/snort/snort.conf, modificando os valores de acordo com a necessidade.
Edite o arquivo de configuração do Snort[13] e verifique as seguintes linhas:
#var HOME_NET $eth0_ADDRESSvar HOME_NET [127.0.0.1,10.0.0.0/16]# Set up the external network addresses as well. A good start may be # "any"...var EXTERNAL_NET any# pode-se colocar !$HOME_NET para excluir a rede interna o HOME_NET# Define the addresses of DNS servers and other hosts if you want # to ignore portscan false alarms from them...var DNS_SERVERS [10.0.0.12/32]
Em HOME_NET você pode especificar uma máquina, interface ou rede na qual o Snort irá "escutar", ou ainda especificar uma lista dos itens acima mencionados, como especificado no exemplo. Em EXTERNAL_NET você irá configurar o que o Snort deve considerar como sendo uma rede externa; no exemplo, o parâmetro any indica qualquer rede. A terceira variável desse primeiro passo (DNS_SERVERS) é especificada para que o Snort não considere as tentativas de acesso provenientes do servidor DNS como sendo tentativas de portscan. Seguindo mais para o final do arquivo de configuração pode-se verificar o seguinte trecho:
# database: log to a variety of databases# ---------------------------------------# See the README.database file for more information about configuring# and using this plugin.#output database:log, mysql, user=snort dbname=snort host=localhost \ password=senha123# output database: log, postgresql, user=snort dbname=snort # output database: log, unixodbc, user=snort dbname=snort
Observe que a linha output database foi descomentada; ela refere-se ao banco de dados que é utilizado (MySQL). Foi inserido ao final da linha o parâmetro password=senha123, que indica ao Snort qual senha utilizar para efetuar o login no banco de dados.
Ao final do arquivo de configuração do Snort, são incluídos os arquivos que contêm as regras de filtragem que ele irá utilizar. O exemplo a seguir ilustra alguns arquivos de regras que podem ser incluídos:
include $RULE_PATH/bad-traffic.rulesinclude $RULE_PATH/exploit.rulesinclude $RULE_PATH/scan.rulesinclude $RULE_PATH/finger.rulesinclude $RULE_PATH/ftp.rulesinclude $RULE_PATH/telnet.rulesinclude $RULE_PATH/rpc.rulesinclude $RULE_PATH/rservices.rulesinclude $RULE_PATH/dos.rulesinclude $RULE_PATH/ddos.rulesinclude $RULE_PATH/dns.rulesinclude $RULE_PATH/tftp.rulesinclude $RULE_PATH/smtp.rulesinclude $RULE_PATH/imap.rulesinclude $RULE_PATH/pop3.rulesinclude $RULE_PATH/pop2.rulesinclude $RULE_PATH/nntp.rulesinclude $RULE_PATH/other-ids.rules
$RULE_PATH é a variável, definida neste mesmo arquivo, que contém o caminho para os arquivos de regras.
Cada arquivo desses contém regras e assinaturas específicas para reconhecer um tipo de ataque. Você pode encontrar mais arquivos com regras e assinaturas em: WhiteHats e no site do Snort .
O último passo para a configuração do Snort é editar o arquivo /etc/sysconfig/snort. A seguir são mostradas as opções a serem configuradas:
INTERFACE=eth0
AUTO=no
ACTIVATE=no
A variável INTERFACE indica em qual interface o Snort irá escutar[14], a variável AUTO=no indica que o Snort deverá pegar o endereço IP fornecido no arquivo de configuração; caso seja especificada essa opção como yes, o Snort irá pegar o valor IP diretamente da interface especificada, ignorando o valor presente no arquivo de configuração.
A variável ACTIVATE indica se o Snort deverá ser executado sempre que a interface "subir", pois quando a interface "cai", o Snort"cai" junto.
Inicie o serviço do Snort digitando o seguinte comando:
# service snort start
Para verificar se o Snort está em execução, digite:
# service snort status
Para configurar o ACID, deve-se primeiramente fazer com que o servidor web possua suporte ao PHP4, para que seja possível executar o ACID (consulte o Capítulo 3).
Em seguida, inicie o seu servidor web, pois o ACID será executado localmente.
# service http start
A seguir, edite o arquivo /srv/www/default/html/acid/config/acid_conf.php, que contém as configurações do ACID. Você precisa modificar apenas as seguintes variáveis:
$alert_dbname = "snort";$alert_host = "localhost";$alert_port = "";$alert_user = "acid";$alert_password = "acid_senha";