Gerenciando logs com o RSyslog
Neste final de semana me deparei com uma bela surpresa, no Debian 5 o pacote RSyslog passou a ser o deamon predefinido para gerenciamento de logs do sistema, substituindo Syslogd e Klogd.
Rsyslog é um Syslogd com foco na segurança e confiabilidade. Entre outros, ele oferece suporte para "bufferização" sob-demanda, syslog confiável para TCP, SSL, TLS e RELP, grava em bancos de dados (MySQL, PostgreSQL, Oracle, e muitos mais), e-mail de alerta, formatos de saída totalmente configuráveis (incluindo timestamps de alta precisão), é possível filtrar qualquer parte da mensagem, compressão de mensagem, converção de arquivos texto para o syslog.
Suas funções avançadas o tornam adequado para ambientes corporativos, proteção por criptografia e configuração simples para usuários novatos. Interface web opcional - phpLogCon - pode ser usada para visualizar todas as informações on-line.
O arquivo de configuração do rsyslogd é "/etc/rsyslog.conf". O rsyslogd suporta o formato de configuração do syslog, entretanto para utilizar as configurações específicas do rsyslog, é necessário incluir configurações estendidas (que começam com o carácter $).
Segue um exemplo de configuração:
# /etc/rsyslog.conf #Configuration file for rsyslog v3. #### Módulos #### $ModLoad imuxsock # fornece suporte para o log local do sistema $ModLoad imklog # fornece suporte para o log do kernel #$ModLoad immark # fornece suporte para marcar as mensagens # Fornece suporte de recepção do syslog UDP #$ModLoad imudp #$UDPServerRun 514 # Fornce suporte de recepção do syslog TCP #$ModLoad imtcp #$InputTCPServerRun 514 #### Diretivas Globais #### # utiliza o formato padrão de timestamp $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat # Define as permissões dos arquivos de log $FileOwner root $FileGroup adm $FileCreateMode 0640 $DirCreateMode 0755 # Regras (Mesmo formato explicado para o syslog) auth,authpriv.* /var/log/auth.log *.*;auth,authpriv.none -/var/log/syslog #cron.* /var/log/cron.log daemon.* -/var/log/daemon.log kern.* -/var/log/kern.log lpr.* -/var/log/lpr.log mail.* -/var/log/mail.log user.* -/var/log/user.log |
O rsyslog também trabalha muito bem com infraestrutura de logs centralizado, implementando criptografia no tráfego, verificação na perda de dados e gerenciamento em banco de dados.
Para configurar um cliente de logs utilizando o rsyslog, adicione no final do arquivo de configuração as seguintes linhas:
*.* @IP_do_Servidor $ModLoad omrelp *.* :omrelp:IP_do_Servidor:4567; |
obs: No exemplo acima, realizei uma configuração de infraestrutura cliente/servidor simples. As mensagens são enviadas para o servidor na porta 4567. Devido à natureza do protocolo UDP, de não ser orientado a conexão, poderiamos perder alguns logs enviados ao servidor. Para evitar esta perda de mensagens eu utilizo o módulo omrelp, que é um módulo de output confiável que evita a perda de dados.
Por fim reinicie o rsyslog.
No servidor, adicione as seguintes linhas no arquivo de configuração:
$ModLoad imudp $UDPServerRun 514 $ModLoad imrelp $InputRELPServerRun 4567 # colocaando a porta para 4567 $template DynKern, "/var/log/%HOSTNAME%/kernel" $template DynMsg, "/var/log/%HOSTNAME%/messages" $template DynAuth, "/var/log/%HOSTNAME%/secure" $template DynMail, "/var/log/%HOSTNAME%/mail" kern.* ?DynKern *.info;mail.none;news.none;authpriv.none ?DynMsg authpriv.* ?DynAuth mail.* ?DynMail |
Com isso você estará aceitando conexões UDP com verificação de perda de pacote na porta 4567. Além disso, estará criando um template para separar os logs locais dos logs de clientes, facilitando assim o processo de auditoria.
Antes de reiniciar o syslog, edite o arquivo de incialização do mesmo em "/etc/init.d/rsyslog" e altera as opções de inicialização para:
RSYSLOGD_OPTIONS="-r -c2" |
Pronto, agora o seu rsyslog estará pronto para receber os logs de seus clientes.
Durante esta semana irei testar o armazenamento de arquivos de log no banco de dados e criar um tunel criptografado para envios de log com TLS/SSL.
Writing syslog messages to MySQL:
http://www.rsyslog.com/doc-rsyslog_mysql.html
Encrypting Syslog Traffic with TLS (SSL):
http://www.rsyslog.com/doc-rsyslog_secure_tls.html
O site oficcial do rsyslog é o : http://www.rsyslog.com/