A geração de logs e
debugging é o primeiro projeto necessário na implantação de uma
Firewall. Saber monitorar quais pacotes estão sendo aceitos ou negados é
quase tão importante como conhecer as funcionalidades e/ou recursos da
Firewall.
Para configurar os
logs / debugging da Firewall H3C SECPATH F1000-S foi escolhido o
redirecionamento de todos os registros para um Syslog Server em Linux.
As vantagens dessa abordagem devem-se às seguintes razões:
- O elevado volume de registros ao ativar o monitoramento de pacotes negados nas ACLs torna inviável sua análise em uma console.
- Os registros devem ser guardados com fins de auditoria e controle.
- Possibilidade de gerar filtros com expressões regulares e linguagem BASH.
- Possibilidade de redirecionar vários tipos de fluxos de logs / debugging em diferentes arquivos de armazenamento.
A configuração básica para a geração e
controle de logs na Firewall H3C SECPATH F1000-S é através do
info-center. É importante não confundir a geração de logs com a geração
de debug. A geração de debugs é muito mais diversificada do que a
geração de logs e utiliza exclusivamente o comando debugging. Porém, ao
gerar um debug, por exemplo das diversas regras de uma ACL, é possível
direcionar a saído do debug para o info-center, que por sua vez
direcionará os registros para um Syslog Server.
As configurações
abaixo redirecionam o debugging de pacotes negados pela firewall para o
Syslog Server. Perceba que é necessário ativar no debugging o tipo de
informação buscada. A segunda linha de configuração direciona o channel 1
(monitor terminal - corresponte ao terminal telnet/ssh) para o loghost.
[SecPath] info-center loghost source GigabitEthernet0/0
[SecPath] info-center loghost 192.168.1.1 channel 1 facility
local2
[SecPath] info-center synchronous
[SecPath] info-center enable
[SecPath] debugging firewall packet-filter denied
Firewall's packet denied debugging switch is on
[SecPath] undo debugging all
All possible debugging has been turned off
Os logs gerados com a configuração abaixo podem ser identificados do seguinte tipo:
1) Logs gerados pelo
controle de ataques. Gerados com o nível 4 (warning level) do Syslog
May 4 13:46:22 200.18.67.241 2011 arsenio.ufcspa.edu.br
%%10SEC/4/ATCKDF(l):-DEV_TYPE=SECPATH
atckType(1016)=(21)ARP-spoofing;rcvIfName(1023)=GigabitEthernet1/1;srcIPAddr(1017)=200.18.67.22;srcMacAddr(1021)=00-26-54-0f-e8-25;destIPAddr(1019)=200.18.67.1;destMacAddr(1022)=00-23-89-35-41-57;atckSpeed(1047)=0;atckTime_cn(1048)=20110504134620
May 4 13:46:22 200.18.67.241 2011 arsenio.ufcspa.edu.br
%%10SEC/4/ATCKDF(l):-DEV_TYPE=SECPATH
atckType(1016)=(21)ARP-spoofing;rcvIfName(1023)=GigabitEthernet1/1;srcIPAddr(1017)=200.18.67.22;srcMacAddr(1021)=00-26-54-0f-e8-25;destIPAddr(1019)=200.18.67.1;destMacAddr(1022)=00-23-89-35-41-57;atckSpeed(1047)=0;atckTime_cn(1048)=20110504134621
2) Logs gerados pela
execução de comandos. Gerados com o nível 4 (warning level) do Syslog
May 4 13:22:33 200.18.67.241 2011 arsenio.ufcspa.edu.br
%%10SHELL/4/CMD(l):-DEV_TYPE=SECPATH task:vt0 ip:200.18.71.31 user:**
command:info-center logbuffer
May 4 13:22:36
200.18.67.241 2011 arsenio.ufcspa.edu.br
%%10SHELL/4/CMD(l):-DEV_TYPE=SECPATH task:vt0 ip:200.18.71.31 user:**
command:dis cur
3)
Logs gerados ao ativar o debugging. O debugging pode ser ativado para
diversos tipos de funcionalidadades. Estão gerados com o nível 7 (debug
level) do Syslog
May 6 11:21:57 200.18.67.241 2011
arsenio.ufcspa.edu.br
%%10FILTER/7/FLTDBG(d):-DevIP=200.18.67.241-DEV_TYPE=SECPATH
GigabitEthernet0/0 InBound List 3030 deny tcp (200.18.64.66
3338)->(50.16.235.93 843) 48 bytes from interface GigabitEthernet0/0
May 6 11:21:57 200.18.67.241 2011 arsenio.ufcspa.edu.br
%%10FILTER/7/FLTDBG(d):-DevIP=200.18.67.241-DEV_TYPE=SECPATH
GigabitEthernet1/0 InBound List 3031 deny icmp
192.168.114.39->200.18.70.27 (8 0) 64 bytes from interface
GigabitEthernet1/0
As configurações de um
Syslog Server em Linux (CentOS 5.5) para armazenar separadamente cada
tipo de log são:
[root@horus log]# rpm -qi
sysklogd-1.4.1-46.el5
Name : sysklogd
Relocations: (not relocatable)
Version : 1.4.1 Vendor:
Oracle USA
Release : 46.el5
Build Date: Thu 11 Feb 2010 11:31:19 PM BRST
Install Date: Fri 04 Mar 2011 02:13:34 PM BRT Build
Host: ca-build10.us.oracle.com
Group : System
Environment/Daemons Source RPM: sysklogd-1.4.1-46.el5.src.rpm
Size : 127866 License: GPL
Signature : DSA/SHA1, Wed 17 Feb 2010 07:02:40 PM BRST, Key
ID 66ced3de1e5e0159
Summary : System logging and kernel
message trapping daemons.
Description :
The sysklogd package contains two system utilities (syslogd
and klogd)
which provide support for system
logging. Syslogd and klogd run as
daemons (background
processes) and log system messages to different
places, like sendmail logs, security logs, error logs, etc.
[root@horus log]# vim /etc/sysconfig/syslog
# Options to syslogd
# -m 0 disables 'MARK'
messages.
# -r enables logging from remote
machines
# -x disables DNS lookups on messages
recieved with -r
# See syslogd(8) for more details
SYSLOGD_OPTIONS="-m 0 -r -x"
# Options to klogd
# -2 prints all kernel oops messages twice; once for klogd to
decode, and
# once for processing with
'ksymoops'
# -x disables all klogd processing of
oops messages entirely
# See klogd(8) for
more details
KLOGD_OPTIONS="-x"
#
SYSLOG_UMASK=077
# set this to a umask value to use for all log files as in
umask(1).
# By default, all permissions are
removed for "group" and "other".
[root@horus firewall]#
vim /etc/syslog.conf
# Configurações de Log
da Firewall SECPATH
local2.=debug
-/var/log/firewall/debug.log
local2.=warn
-/var/log/firewall/warning.log
Para filtar os logs em
tempo real e ter uma visualização mais clara utilizar os seguinte
programa desenvolvido em BASH:
[root@horus ~]# cat
/root/bin/filtrar-acl
#!/bin/bash
#
# Nome : filtrar-acl
#
# Função : Programa para filtar em
tempo real os logs enviados pela Firewall SECPATH
#
# Versão : 1.0 - Maio 2011
# Funções do Programa
# ===================
function MENSAGEM_ERRO()
{
echo -ne "\nErro !!! Favor passar apenas um único
parâmetro: tcp, udp ou icmp\n\n"
exit 1
}
function FILTRAR()
{
tail -f /var/log/firewall/debug.log |
grep $1 | awk 'BEGIN { FS = " "; OFS = " "; ORS = "\n" } { print
$10,$11,$12,$13,$14,$15,$16 }'
}
if [ $# -gt 1 ]; then
{
MENSAGEM_ERRO
}
elif [ "$1" = "tcp" ]; then
{
FILTRAR tcp
}
elif [ "$1" = "udp" ]; then
{
FILTRAR udp
}
elif [ "$1" = "icmp" ]; then
{
FILTRAR icmp
}
else
{
MENSAGEM_ERRO
}
fi
exit 0