Syslog-NG - Configurando um servidor de logs

Este artigo é voltado para aqueles que já possuem infraestrutura de TI e preocupam-se com os tão valiosos logs dos servidores.

[ Hits: 53.538 ]

Por: Rick em 30/07/2012 | Blog: http://www.guiadoti.com


Instalação e configuração



Instalando o servidor de logs

Pessoal, hoje iremos configurar um servidor de logs em nossa rede.

Esta é uma funcionalidade extremamente interessante de configurarmos, pois é um item tão importante que é um dos requisitos da norma ISSO/IEC 27002:2005.

Imaginem que o seu servidor foi invadido e o atacante apagou os logs do servidor, se você possui um servidor de logs em sua rede, você vai poder realizar a análise dos logs do servidor que foi invadido e poder entender um pouco melhor o que aconteceu.

Então vamos lá pessoal, este é um item bem fácil de configurar, no seu servidor de logs instale o syslog-ng. Em distribuições baseadas no Debian, execute:

# aptitude install syslog-ng

O padrão do Debian é o rsyslog, então ele vai perguntar se você quer removê-lo. Pressione "Y" para confirmar e depois para instalar.

Configuração

Depois que o Syslog-ng estiver instalado, vá no diretório dele para editar seu arquivo de configuração:

# cd /etc/syslog-ng
# pico syslog-ng.conf


No campo SOURCE, você vai adicionar a seguinte linha para definir o nome do source e protocolo utilizado para realizar a transferência dos logs:

source log_redeinterna { udp();};


Iremos utilizar o protocolo UDP para gerar menos tráfego na rede, agora iremos configurar as máquinas remotas, no campo FILTER adicione a seguinte linha:

filter f_maq113 { netmask(192.168.0.113); };


Aqui coloquei "f_maq113", pois o IP da minha máquina é final 113, mas você pode ficar à vontade para organizar do jeito que quiser. Ou também pode ser:

filter f_maq113 { host("poseidon"); };   # Onde "poseidon" é o nome da minha máquina.


Você ainda pode fazer um filtro mais específico, onde só os logs que contém a palavra "sshd" serão encaminhados para nosso servidor de logs:

filter f_maq115_ssh { netmask(192.168.0.115) and match("sshd"); };


Obs.: Lembrando que você pode substituir o "netmask" da regra por "host" e especificar o nome da máquina.

Agora, precisamos dizer ao Syslog onde ele irá armazenar os logs que serão enviados pra ele, no campo DESTINATION adicione as seguintes linhas:

destination d_maq113 { file("/var/log/maq113.log"); };

destination d_maq115_ssh { file("/var/log/maq115_ssh.log"); };


Percebam que o nome do "destination" segue a mesma lógica dos "filter’s d_maq113", pois o final do IP termina com 113.

Agora que já configuramos nosso filter e nosso destination, precisamos somente "ativar" a configuração com o parâmetro log, no campo LOG adicione as seguintes linhas:

log { source(log_redeinterna); filter(f_maq113); destination(d_maq113); };
log { source(log_redeinterna); filter(f_maq115_ssh); destination(d_maq115_ssh); };


Salve o arquivo e reinicie o Syslog-ng:

# /etc/init.d/syslog-ng restart

Configuração dos clientes

Depois deste pequeno trabalho, precisamos configurar nossos clientes (maq113 e maq115_ssh)

Instale o Syslog-ng no cliente, assim como no servidor:

# aptitude install syslog-ng

Agora, vamos configurar nosso cliente:

# cd /etc/syslog-ng
# pico syslog-ng


Adicione a linha abaixo no campo DESTINATION:

destination servidor_log { udp("192.168.0.10" port(514)); };


Bem simples, não é?

Esta linha é onde acontece a mágica, ela manda uma cópia de todos os logs para o nosso servidor de logs, que é o IP "192.168.0.10" na porta padrão 514.

Se você não quiser que ele mande todos os logs para o servidor, você pode criar um filtro especificando o que quer mandar, como é mostrado a baixo:

filter f_servidor_log { level(info, warn, err, crit) and facility(auth, authpriv, daemon, mail, news, cron, user); };


Desse jeito, você pode personalizar de acordo com sua necessidade, depois é só adicionar a linha de log abaixo no campo LOG do syslog-ng:

log { source(src); destination(servidor_log); };


Reinicie o Syslog-ng:

# /etc/init.d/syslog-ng restart

Obs.: Siga as mesmas instruções nos demais clientes.

Pronto, com isso que fizemos, nosso servidor de log já está operando perfeitamente.

Para testar a configuração, faça alguma operação na máquina cliente e verifique se foi criado o arquivo de log no servidor.

No próximo tutorial, iremos aprender como rotacionar os logs do servidor.

Bem, é isso pessoal. Espero ter ajudado, até a próxima!!

Artigo previamente publicado em:

   

Páginas do artigo
   1. Instalação e configuração
Outros artigos deste autor

Instalando FreeNAS 8.3.0 e criando Storage iSCSI

Snort + MySQL + Guardian - Instalação e configuração

storage FreeNas 9.2.1.6 - Instalação e configuração

Monitoramento com Zabbix 2.0

Entendendo o ataque ARP spoofing + SSLStrip

Leitura recomendada

Recuperação do arquivo sudoers - comandos su e sudo não funcionam mais [Resolvido]

SELinux - Security Enhanced Linux

Usando o John theRipper para manter sua rede segura

Block Hosts: Bloqueando ataques de força-bruta (brute force) em FTP, SSH e outros

Instalação do Snort + BASE no Debian Etch pelos fontes

  
Comentários
[1] Comentário enviado por danniel-lara em 30/07/2012 - 10:49h

Muito bom esse artigo
só por curiosidade
pode ser utilizado um Banco de dados para armazenar os logs ?

[2] Comentário enviado por rick_G em 30/07/2012 - 11:01h

Poder eu sei que pode pode Daniel, mas sinceramente nunca utilizei, vou ficar te devendo essa.

[3] Comentário enviado por cesarufmt em 30/07/2012 - 11:23h

Obrigado pelo artigo! Valeu! xD

[4] Comentário enviado por rick_G em 30/07/2012 - 14:44h

Que isso Cesar, precisa agradecer não, estamos aqui pra se ajudar...
Se puder te ajudar em algo mais é só falar....

[5] Comentário enviado por earthquake em 04/10/2012 - 17:01h

Meu syslog-ng não escreve no diretório.
Quando faço syslog-ng -d vejo os logs.
appamor desativado.
Alguem sabe o que pode ser?


options { chain_hostnames(off); flush_lines(0); use_dns(no); use_fqdn(no);
owner("root"); group("adm"); perm(0640); stats_freq(0);
bad_hostname("^gconfd$");create_dirs(yes);
};

source s_net {
udp(ip("0.0.0.0") port(514));
};

destination monitoracao.dst {
file("/var/log/syslog-ng/$YEAR-$MONTH/$DAY/Monitoracao.log" owner(root) group(adm) perm(0660) dir_perm(0700) create_dirs(yes) );
};

filter pc.filter {
host("192.168.1.2l");
};

log {
source(s_net);
filter(pc.filter);
destination(monitoracao.dst);
};

Obrigado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts