Além do Syslog
Hoje em dia por questões normativas, alguns casos devido a política de retenção de logs ou compliance, muitas empresas passaram a fazer o armazenamento de log que eram semanais (isso quando armazenavam algo) para logs anuais, mensais. O ideal é que para esta situação a empresa tivesse um Servidor de Logs ou um SIEM que recebesse os logs de diferentes lugares. Porém muitos não possuem este tipo de servidor tendo que fazer o armazenamento primeiro em disco para depois fazer um backup.
Quando passamos a trabalhar dessa forma um dos pontos importantes que temos que nos atentar é espaço em disco, por isso para podermos ajustar a essa necessidade é importante sabermos quais logs iremos armazenar. Se você vai fazer trabalhar com log de um firewall, o que mais importaria seria por exemplo log de conexões, imagina um arquivo que dependendo dos eventos pode se tornar enorme, acho que o melhor seria separar o que interessa não é mesmo? Para isso ao invés de usar o syslog tradicional, uma boa opção é usar o rsyslog.
O Rsyslog é um sistema de log capaz de fazer tratamento de mensagens que usam os facilities dos *nix separando por templates, nome de programa, nome de host ou expressões regulares, além disso ele pode fazer o envio direto para uma base de dados MySQL, PostgreSQL.
Aqui vou dar três exemplos:
Direcionar o log do meu firewall que contem a palavra FIREWALL para um arquivo de log
:msg,contains,”FIREWALL” /var/log/firewall
:
msg - Vou procurar no campo mensagem do syslog
contains - Digo qual o tipo qual o tipo de filtro estou usando, pode ser isequal, contains, startswith ou regex
FIREWALL - Passo qual a string que ele deverá procurar no campo mensagme
/var/log/firewall - É o nome do arquivo que deverei usar para a saida
Direcionar mensagens referente a VPN
:programname, isequal, “pluto” /var/log/ipsec
:programname - Especifico que irei procurar no nome do programa
isequal - O nome tem que ser igual
pluto - Nome do programa
/var/log/ipsec - É o nome do arquivo que deverei usar para a saida
Um template para armazenar mais informações:
$template dynsec,”%syslogpriority% %syslogfacility% %timegenerated::fulltime% %HOSTNAME% %syslogtag% %msg%\n”
$temple - Especifico que a linha representa um template
dynsec - Nome do template
%syslogpriority% %syslogfacility% %timegenerated::fulltime% %HOSTNAME% %syslogtag% %msg%\n - Especifico quais os campos que irei fazer log
%syslogpriority% - Prioridade do log
%syslogfacility% - Facility do log
%timegenerated::fulltime% - Tipo de tempo a ser gerado, data
%HOSTNAME% - Nome do host
%syslogtag% - TAG da mensagem
%msg% - Mensagem gerada
security.* /var/log/security;dynsec
security - Tipo de facility
* - Qual a prioridade, no caso todas
/var/log/security - O arquivo que irei armazenar a saida
dynsec - Peço para usar o template que criei
Aqui foi apenas simples exemplos de como você pode separar o interessante, é aonde um dado começa a gerar informação.
[]s
Marcos