Antes de começar a prática, é necessário saber algumas opões que podem ser usadas via linha de comando para se trabalhar com o 'fwlogwatch'.
Abaixo listo algumas opções que podem ser usadas no 'fwlogwatch', e o que elas fazem:
- -L : Está opção lê o arquivo do Log e informa a data e hora do primeiro e último Log que existem dentro do arquivo lido.
- -w : Está opção mostra a saída do arquivo em formato HTML. Se não for informada, será usada o formato de texto normal.
- -d : Mostra a porta de destino.
- -t : Mostra a data e hora inicial do pacote logado.
- -o : Especifica o nome do arquivo de saída para o relatório gerado, caso escolha um diretório de destino diferente do que está atualmente na
hora do comando, indique com o caminho.
- -U : É utilizado para dá uma nome ao titulo do relatório gerado com 'fwlogwatch'.
- -M : Especifica a quantidade de linhas do arquivo que será analisado, ou seja, do arquivo que guarda os Logs usados pelo fwlogwatch para
geração de Log.
* Ex.: se quiser mostrar 500 linhas do arquivo que guarda os Logs, deverá especificar assim: -M 500.
- -s : Mostra a porta de origem.
- -y : Traz informações sobre pacotes TCP.
- -l : Está opção é usada para especificar uma quantidade de dias: "d", horas: "h", minutos: "m", semanas: "w", meses: "m" e anos: "y", para
gerar o relatório com base nestas informações.
* Ex. 1: -l 2d : será gerado um relatório com datas dos os ultimos dois dias.
* Ex. 2: -l 2h : será gerado um relatório desde as ultimas duas horas.
- -e : Mostra a data/hora do pacote logado. Só existirá se tiver mais de um pacote logado coma mesma caracteristica.
- Explicações
Antes de começar, é necessário fazer alguns esclarecimentos sobre o 'fwlogwatch' e os Logs do IPtables.
Verifique a existência do arquivo de configuração "/etc/fwlogwatch/fwlogwatch.conf", este arquivo tem opções padrões para o comando
'fwlogwatch', que será utilizado para gerar os relatórios, mas por padrão, todas as opções estão desativadas. Se alguma opção for ativada no arquivo de configuração, ela irá interferir nas opções passadas na linha de comando.
Usando o arquivo de configuração, evita a necessidade de especificar, via linha de comando, opções que serão inclusas no relatório, fazendo uma
automatização da tarefa que será vista na página seguinte do artigo.
Por padrão, os Log do IPtables tem facilidade 'kern' e nível 'warn', e trabalham com RSYSLOG e DMESG ou SYSKLOG para outras distros, e serão
armazenados no arquivo "/var/log/messages ou /var/log/kern.log", dependendo da distro.
- Direcionando os Logs do IPtables
Para os Logs ficarem em um arquivo específico, precisaremos adicionar uma entrada no "/etc/rsyslog.conf", especificando a facilidade que o
IPtables trabalha e o nível que irá ser utilizado pelo mesmo, e criar um arquivo que receberá os Logs do IPtables.
Execute:
# mkdir /var/log/firewall
# touch /var/log/firewall/firewall.log
# vim /etc/rsyslog.conf
Entrada a ser adicionada:
kern.crit /var/log/firewall/firewall.log
Reinicie o RSYSLOG:
# /etc/init.d/rsyslog stop
# /etc/init.d/rsyslog star
- Vamos à pratica
Primeiramente, iremos executar as regras de Firewall, que irá ser logada pelo RSYSLOG no arquivo "/var/log/iptables/firewall.log" criado, e
especificar o nível na regra, no exemplo, nível CRIT.
É necessário, para que funcione, que as regras de Log fiquem antes das regras que irão tomar a decisão:
# iptables -A INPUT -i eth0 -j LOG --log-level crit --log-prefix "eth0 trafego INPUT aceito"
# iptables -A INPUT -i eth0 -j ACCEPT
# iptables -A OUTPUT -o eth0 -j LOG --log-level crit --log-prefix "eth0 trafego OUTPUT aceito"
# iptables -A OUTPUT -o eth0 -j ACCEPT
- Gerando relatório simples
Agora que as regras foram executadas, vamos gerar o relatório:
* Sintaxe: comando <arquivo com entradas de log> <opções> <arquivo contendo o relatório>
# fwlogwatch /var/log/firewall/firewall.log -w -o iptables.html
Usei a opção '-w', para indicar que o arquivo de saída deverá estar no formato ".html", e '-o', indica o arquivo de saída. Se não indicou o caminho
absoluto do arquivo, ele será gravado no diretório onde você está no momento da execução do comando.
Após isto, vá no diretório aonde gravou o arquivo com extensão ".html" e abra com seu browser. Veja como ficou:
Gerando relatório mais detalhado das últimas duas horas até agora, com titulo das mesmas regras acima:
# fwlogwatch /var/log/firewall/firewall.log -l 2h -d -s -t -e -y -U "Relatorio detalhado" -w -o ipdetalhes.html
Para gerar este relatório, usei a opção '-U' para colocar um titulo personalizado, e '-l 2h', para indicar os Logs das últimas duas horas.
Agora veja como ficou o relatório no browser:
Gerando relatório detalhado da porta 80:
# fwlogwatch /var/log/firewall/firewall.log -l 2h -d -s -t -e -y -M 50 -Eipd80 -U "Relatorio da Porta 80" -w -o web.html
# fwlogwatch /var/log/firewall/firewall.log -l 2h -d -s -t -e -y -M 50 -Eips80 -U "Relatorio da Porta 80" -w -o web.html
Desta vez, gerei dois relatórios para conexões aceitas na porta 80, explico a opção principal 'Eipd80' e 'Eips80' para filtrar os Logs abaixo:
- -E : Usada para incluir ou excluir opções específicas.
- -i : para incluir.
- -p : para filtrar pela porta especificada, no caso a 80.
- -d : para informações do destino, no exemplo a porta de destino 80.
- -s : para informações de origem, no exemplo, a porta de origem 80.
No primeiro comando é gerado um relatório da porta 80 de destino, mostrando apenas as últimas 20 entradas, como o mostrado abaixo na
figura:
No segundo comando é gerado um relatório da porta 80 de origem, perceba que a porta 80 de origem não tem nenhuma com endereço da máquina
que estou usando (endereço local), porque a mesma está bloqueada e só está
sendo logado os pacotes aceitos, veja na figura abaixo: