Nesta última parte do artigo, vou tratar de mostrar como redirecionar os Logs do IPtables para uma máquina servidora de Logs e em seguida
acessar os Logs via WEB.
Primeiro, será necessário configurar o serviço RSYSLOG da máquina que estará rodando o Firewall e criando os Logs a ser enviados;
- Configuração de envio e recebimento de Logs pela rede
Editando o arquivo de configuração do RSYSLOG que está rodando o Firewall:
# vim /etc/rsyslog.conf
Adicione no arquivo, a linha abaixo. Estarei redirecionando para o IP especificado abaixo, mas troque conforme a localização da máquina que
armazenará os Logs:
kern.crit @192.168.213.249
Agora, editando o arquivo de configuração do RSYSLOG da máquina que receberá os Logs:
# vim /etc/rsyslog.conf
Habilite o RSYSLOG para aceitar os Logs de outras máquinas:
# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 51
# **** Acrescente essa linha abaixo, para funcionar é necessário o diretório e arquivo estarem criados na máquina que
receberá os Logs
kern.crit /var/log/firewall/firewall.log
E por último, na máquina que receberá os Logs, editar o arquivo "/etc/default/rsyslog":
# vim /etc/default/rsyslog
Modifique o arquivo, acrescentando a linha abaixo e comentando a outra:
SYSLOGD="-r"
# RSYSLOGD_OPTIONS="-r"
- Executando o 'fwlogwatch' na máquina que está recebendo os Logs do Firewall pela rede
A configuração de envio e recebimento de Logs foi feita, agora vamos fazer o 'fwlogwatch' trabalhar como servidor WEB, deixando disponível os
Logs para serem acessados via WEB em tempo real.
Para fazer o 'fwlogwatch' trabalhar como um servidor WEB, é necessário especificar, via linha de comando ou no arquivo de configuração, as opções
a serem usadas.
Pela linha de comando, na máquina com os Logs do Firewall da rede, execute como Root:
# fwlogwatch /var/log/firewall/firewall.log -d -s -t -e -y -U "Relatório em tempo Real" -R -X 777
Explicação das principais opções para fazer o 'fwlogwatch' trabalhar como servidor WEB:
- -R : especifica que o relatório será gerado em tempo real.
- -X : indica a porta que será ser usada para acessar os Logs pelo browser.
Obs.: Quando a opção '-X' é especificada via linha de comando, os relatórios só poderão ser acessados localmente, ou seja, na máquina que está
armazenando os relatórios, para acessar de outras máquina usando esse método, seria necessário acessar via SSH ou compartilhar o diretório com os relatórios.
Não é possível acessar pelo browser de outra máquina pela porta 777, no exemplo.
Para permitir o acesso pelo browser de outro computador pela rede, é necessário habilitar estas opções abaixo no arquivo de configuração
"/etc/fwlogwatch/fwlogwatch.config", elas ficam no final do arquivo:
# Opção usada para fazer o fwlogwatch ficar online.
server_status = yes
# Opção usada para especificar em qual endereço de rede ele ficará acessível.
bind_to = 192.168.213.249
# Opção usada para especificar em qual porta ele estará executando.
listen_port = 888
# Opção refresh faz os logs serem atualizados em n segundo, n representa um número em segundos. É opcional.
refresh = 3
- Testando
Agora, via linha de comando execute no terminal:
* Regras a serem executadas no computador rodando o Firewall.
# iptables -I INPUT -p tcp --dport 2100 -j LOG --log-level crit
# iptables -I INPUT -p tcp --dport 2100 -j DROP
* Comando rodado na máquina com os logs.
# fwlogwatch /var/log/firewall/firewall.log -d -s -t -e -y -Eihd192.168.213.252 -U "Relatorio Iptables" -R
Obs.: Lembre-se que é necessário ter executado, via IPtables, as regras que registra os Logs e que só será mostrado o que for logado.
Explicação da opção de filtragem, o IP usado é da máquina rodando o Firewall:
- Eihd192.168.213.252 : está opção inclui apenas entradas do Host "h" de destino "d" 192.168.213.252.
- -R" : esta opção faz o fwlogwatch rodar em realtime.
Para encerrar a execução do comando 'fwlogwatch' é necessário usar o 'kill' junto ao PID do processo gerado.
# pgrep fwlogwatch |xargs kill
Visualizando o Relatório
Para visualizar o relatório, basta digitar no browser de um máquina da rede o IP da máquina que está rodando o comando junto com a porta que a
mesma está executando, no exemplo é: 192.168.213.249:888.
Após isso, é só digitar o nome de usuário e senha, que é usado pelo 'fwlogwatch' para a autenticação e que pode ser configurado no arquivo de
configuração do mesmo.
Por padrão, ele usa o nome: 'admin' e a senha: 'fwlogwat'. Caso queira os dados de autenticação, é só editar o arquivo incluindo o nome de usuário
desejado junto com a senha nas opções descritas abaixo, as opções ficam no final do arquivo:
# Está opção é usada para especificar o nome de usuário usado para se autenticar e visualizar o relatório.
status_user = admin
# Está opção é usada para especificar a senha que será usada para se autenticar.
status_password = 2fi4nEVVz0IXo
Para ver em tempo real, clique em <Packet cache>, como foi configurado para atualizar a cada 3 segundos, a tela receberá atualizações de
forma praticamente instantânea, veja como ficou.
Caso queira automatizar, faça a configuração no arquivo de configuração como mostrado anteriormente, depois configurar o 'fwlogwatch' para
executar via CRON uma vez no dia; pois, após a execução, o mesmo ficará rodando como um Daemon gerando seus relatórios em tempo real.
Caso use máquina rodando como servidor (sem desligar, rode uma única vez, sem necessidade de usar o CRON). Não esquecendo das opções
abaixo:
- server_status = yes
- bind_to = IP da máquina que irá disponibilizar o relatório online.
- listen_port = porta em que o 'fwlogwatch' ficará em execução.
* Para não usar o "-R" na linha de comando fazendo o 'fwlogwatch' trablhar em tempo real, habilite no arquivo a opção abaixo usando: yes (se
usar, não desabilita).
realtime_response = yes
Conclusão
O 'fwlogwatch' é uma ferramenta muito boa para seu propósito.
Neste artigo, limitei-me a falar apenas da análise de Logs e criar relatórios. Porém, pode ser usada para notificar e tomar decisões, como executar
scripts após ocorrer uma quantidade de anomalias.
Mais isso, fica para outro artigo.