Gerenciamento de Logs · 12 min read · Dec 12, 2025
Como configurar o rsyslog para Gerenciamento Centralizado de Logs
Este tutorial explicará como configurar o rsyslog como um servidor de gerenciamento centralizado de logs. O gerenciamento centralizado de logs significa coletar todos os tipos de logs de vários servidores físicos ou virtualizados em um servidor de logs para monitorar a saúde e a segurança dos serviços do servidor. Usamos o rsyslog neste tutorial porque oferece alto desempenho, ótima segurança e um design modular. Ele também é capaz de armazenar logs em várias soluções de banco de dados, como MySQL, Oracle, Hadoop e outras para melhor consolidação.
1. Nota Preliminar
Para este tutorial, estou usando o Oracle Linux 6.4 na versão de 32 bits. Observe que, embora a configuração seja feita no Oracle Linux, os mesmos passos funcionarão no CentOS e no Red Hat OS Linux. Neste tutorial, usaremos 2 servidores. O primeiro atuará como o servidor rsyslog e o outro atuará como estação de trabalho / servidor cliente para o cliente rsyslog. Ao final deste tutorial, veremos que, uma vez que um usuário faça login no servidor cliente, o servidor rsyslog registrará automaticamente a atividade realizada por ele.
2. Instalação do Rsyslog
Para a fase de instalação, precisamos apenas ter os pacotes rsyslog e suas dependências instalados. Primeiro, vamos confirmar nossa versão do sistema operacional.
[root@RSYS01 ~]# cat /etc/issue
Oracle Linux Server release 6.4
Kernel \r on an \m[root@RSYS01 ~]# arch
i686[root@RSYS01 ~]# uname -a
Linux RSYS01 2.6.32-358.el6.i686 #1 SMP Fri Feb 22 13:37:29 PST 2013 i686 i686 i386 GNU/LinuxEm seguida, configurarei um novo repositório para instalar os pacotes rsyslog via utilitário yum.
[root@RSYS01 ~]# cd /etc/yum.repos.d/
[root@RSYS01 yum.repos.d]# vi rsyslog.repo
[rsyslog-v7-devel]
name=Adiscon Rsyslog v7-devel for CentOS-$releasever-$basearch
baseurl=http://rpms.adiscon.com/v7-devel/epel-$releasever/$basearch
enabled=0
gpgcheck=0
protect=1[rsyslog-v7-stable]
name=Adiscon Rsyslog v7-stable for CentOS-$releasever-$basearch
baseurl=http://rpms.adiscon.com/v7-stable/epel-$releasever/$basearch
enabled=1
gpgcheck=0
protect=1[root@RSYS01 yum.repos.d]# yum list rsyslog
Loaded plugins: refresh-packagekit, security
rsyslog-v7-stable | 2.5 kB 00:00
rsyslog-v7-stable/primary_db | 188 kB 00:01
Pacotes Disponíveis
rsyslog.i686 7.6.7-1.el6 rsyslog-v7-stableFeito, agora vamos começar a instalar a nova versão do rsyslog. Os passos estão mostrados abaixo:
[root@RSYS01 yum.repos.d]# yum install rsyslog -y
Loaded plugins: refresh-packagekit, security
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package rsyslog.i686 0:7.6.7-1.el6 will be installed
--> Processing Dependency: liblogging-stdlog.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libjson-c.so.2 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgthttp.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgtbase.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgt for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libestr.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Running transaction check
---> Package json-c.i686 0:0.11-3.el6 will be installed
---> Package libestr.i686 0:0.1.9-1.el6 will be installed
---> Package libgt.i686 0:0.3.11-1.el6 will be installed
---> Package liblogging.i686 0:1.0.4-1.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================================================
Pacote Arquitetura Versão Repositório Tamanho
===============================================================================================================
Instalando:
rsyslog i686 7.6.7-1.el6 rsyslog-v7-stable 920 k
Instalando para dependências:
json-c i686 0.11-3.el6 rsyslog-v7-stable 46 k
libestr i686 0.1.9-1.el6 rsyslog-v7-stable 9.0 k
libgt i686 0.3.11-1.el6 rsyslog-v7-stable 55 k
liblogging i686 1.0.4-1.el6 rsyslog-v7-stable 23 k
Resumo da Transação
===============================================================================================================
Instalar 5 Pacote(s)
Tamanho total do download: 1.0 M
Tamanho instalado: 3.2 M
Baixando Pacotes:
(1/5): json-c-0.11-3.el6.i686.rpm | 46 kB 00:00
(2/5): libestr-0.1.9-1.el6.i686.rpm | 9.0 kB 00:00
(3/5): libgt-0.3.11-1.el6.i686.rpm | 55 kB 00:00
(4/5): liblogging-1.0.4-1.el6.i686.rpm | 23 kB 00:00
(5/5): rsyslog-7.6.7-1.el6.i686.rpm | 920 kB 00:03
---------------------------------------------------------------------------------------------------------------
Total 114 kB/s | 1.0 MB 00:09
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : libgt-0.3.11-1.el6.i686 1/5
Installing : liblogging-1.0.4-1.el6.i686 2/5
Installing : libestr-0.1.9-1.el6.i686 3/5
Installing : json-c-0.11-3.el6.i686 4/5
Installing : rsyslog-7.6.7-1.el6.i686 5/5
Verifying : json-c-0.11-3.el6.i686 1/5
Verifying : libestr-0.1.9-1.el6.i686 2/5
Verifying : liblogging-1.0.4-1.el6.i686 3/5
Verifying : libgt-0.3.11-1.el6.i686 4/5
Verifying : rsyslog-7.6.7-1.el6.i686 5/5
Instalado:
rsyslog.i686 0:7.6.7-1.el6
Dependência Instaladas:
json-c.i686 0:0.11-3.el6 libestr.i686 0:0.1.9-1.el6 libgt.i686 0:0.3.11-1.el6 liblogging.i686 0:1.0.4-1.el6
Completo![root@RSYS01 yum.repos.d]# rsyslogd -v
rsyslogd 7.6.7, compilado com:
FEATURE_REGEXP: Sim
Suporte GSSAPI Kerberos 5: Sim
FEATURE_DEBUG (debug build, slow code): Não
Operações atômicas de 32 bits suportadas: Sim
Operações atômicas de 64 bits suportadas: Sim
Instrumentação em tempo de execução (slow code): Não
uuid support: Sim
Número de Bits em inteiros RainerScript: 64
Veja http://www.rsyslog.com para mais informações.[root@RSYS01 ~]# rpm -qa|grep rsyslog
rsyslog-7.6.7-1.el6.i686Em seguida, vamos prosseguir com a fase de instalação. Para este tutorial, vamos pular a camada de segurança para simplificar as coisas. Vamos desabilitar o SELINUX para garantir que não haja problemas relacionados à segurança durante o processo. Esteja ciente de que você não deve desabilitar o SELinux e o Firewall em uma configuração ao vivo. Abaixo estão os passos:
Primeiro, verifique qual é o status atual da nossa política SELINUX.
[root@RSYS01 ~]# getenforce
EnforcingPara desabilitá-lo permanentemente, siga o passo abaixo:
[root@RSYS01 ~]# cd /etc/sysconfig/
[root@RSYS01 ~]# vi selinux
# Este arquivo controla o estado do SELinux no sistema.
# SELINUX= pode ter um destes três valores:
# enforcing - A política de segurança do SELinux é aplicada.
# permissive - O SELinux imprime avisos em vez de aplicar.
# disabled - Nenhuma política SELinux é carregada.
SELINUX=disabled
# SELINUXTYPE= pode ter um destes dois valores:
# targeted - Processos direcionados são protegidos,
# mls - Proteção de Segurança de Múltiplos Níveis.
SELINUXTYPE=targetedDepois disso, vamos garantir que desabilitamos o firewall para evitar qualquer bloqueio entre a conexão do servidor e do cliente.
[root@RSYS01 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination[root@RSYS01 ~]# /etc/init.d/iptables stop
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ][root@RSYS01 ~]# /etc/init.d/iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destinationFeito, agora que a fase de instalação foi bem-sucedida. Vamos passar para a fase de configuração.
3. Configuração do Rsyslog
Todas as dependências do pacote já foram instaladas, vamos nos concentrar na configuração do rsyslog. Vamos entrar no arquivo de configuração e fazer as alterações como abaixo:
[root@RSYS01 ~]# vi /etc/rsyslog.conf
module(load="imudp") # precisa ser feito apenas uma vez
input(type="imudp" port="514")
$template Auditlog, "/var/log/rsyslog_client/%HOSTNAME%/%PROGRAMNAME%.log"
$template TmplMsg, "/var/log/rsyslog_client/%HOSTNAME%/%PROGRAMNAME%.log"
authpriv.* ?AuditlogAbaixo está a explicação sobre as alterações de configuração que fizemos:
- module(load=”imudp”) # precisa ser feito apenas uma vez ==> Forneceremos a capacidade de receber mensagens rsyslog entre o servidor e o cliente via protocolo UDP
- input(type=”imudp” port=”514”) ==> Usaremos a porta 514 para os serviços rsyslog
- $template Auditlog, “/var/log/rsyslog_client/%HOSTNAME%/%PROGRAMNAME%.log” ==> Para cada cliente conectado ao servidor rsyslog, o sistema criará automaticamente a pasta do nome do host do cliente e o nome do arquivo de serviços relacionado
- $template TmplMsg, “/var/log/rsyslog_client/%HOSTNAME%/%PROGRAMNAME%.log” ==> Para cada cliente conectado ao servidor rsyslog, o sistema criará automaticamente a pasta do nome do host do cliente e o nome do arquivo de serviços relacionado
Uma vez que a configuração esteja concluída, vamos iniciar o serviço rsyslog.
[root@RSYS01 yum.repos.d]# /etc/init.d/rsyslog restart
Shutting down system logger: [FAILED]
Starting system logger: [ OK ]Use netstat para garantir se os serviços rsyslog estão ativos e em execução:
[root@RSYS01 yum.repos.d]# netstat -uanp|grep rsyslog
udp 0 0 0.0.0.0:514 0.0.0.0:* 2430/rsyslogd
udp 0 0 :::514 :::* 2430/rsyslogdAcima você pode ver que nosso serviço rsyslog está em execução com as atribuições de porta que fizemos. Por padrão, o rsyslog também audita seu próprio acesso ao servidor, pois trata o servidor rsyslog como um cliente. Para garantir se está funcionando, podemos dar uma olhada na pasta /var/log. Vamos verificar se uma pasta com o nome RSYS01 (que é o nome do host do servidor) existe ou não.
[root@RSYS01 log]# cd /var/log/
[root@RSYS01 log]# ls -l|grep rsyslog
drwx------ 3 root root 4096 Oct 24 18:21 rsyslog_client[root@RSYS01 log]# cd rsyslog_client
[root@RSYS01 rsyslog_client]# ls
RSYS01
[root@RSYS01 rsyslog_client]# cd RSYS01/
[root@RSYS01 RSYS01]# ls
rsyslogd.logÓtimo, parece que tudo funciona perfeitamente! Agora vamos prosseguir com a fase de teste para concluir que todas as configurações foram feitas conforme esperado.
4. Fase de Teste
Como o servidor que executa o serviço rsyslog também funciona como um cliente, podemos ver no próprio servidor se o monitoramento de logins locais está sendo monitorado. Para garantir se isso é verdade, vamos fazer login no servidor rsyslog com outra sessão usando o serviço SSH. Para este passo, assumiremos que o servidor já está configurado para configuração sem senha. Abaixo estão os passos:
[root@RSYS01 RSYS01]# ssh root@RSYS01
Último login: Sáb Out 22 15:45:48 2016 de 172.20.181.70[root@RSYS01 ~]# who
root pts/0 2016-10-22 00:21 (172.20.181.11)
root pts/1 2016-10-24 18:22 (127.0.0.1)[root@RSYS01 ~]# exit
logout
Connection to RSYS01 closed.Feito, tão simples quanto isso. Nós apenas fizemos login no servidor rsyslog e, uma vez que a nova sessão foi criada, nós simplesmente fizemos logout novamente apenas para garantir que o serviço rsyslog auditou a sessão. Agora, vamos verificar se a sessão foi auditada ou não. Abaixo estão os passos:
[root@RSYS01 ~]# cd var/log/rsyslog_client/RSYS01
[root@RSYS01 RSYS01]# ls
rsyslogd.log sshd.log
[root@RSYS01 RSYS01]# tail -f sshd.log
Oct 24 18:22:46 RSYS01 sshd[2536]: Accepted password for root from 192.168.43.101 port 52862 ssh2
Oct 24 18:22:46 RSYS01 sshd[2536]: pam_unix(sshd:session): session opened for user root by (uid=0)
Oct 24 18:22:50 RSYS01 sshd[2536]: Received disconnect from 192.168.43.101: 11: disconnected by user
Oct 24 18:22:50 RSYS01 sshd[2536]: pam_unix(sshd:session): session closed for user root
^CExcelente, o serviço rsyslog criou automaticamente um arquivo sshd.log quando a sessão começou no servidor. Dentro do arquivo de log, podemos ver que há uma lista de detalhes que indicam o tempo, a porta e o usuário criados sob a sessão.
Agora que tudo funciona conforme esperado. Vamos configurar uma estação de trabalho para que o cliente rsyslog seja auditado pelo nosso servidor rsyslog. Para o cliente rsyslog, você só precisa instalar os pacotes rsyslog e fazer uma simples alteração no arquivo de configuração para vincular ao servidor rsyslog. Abaixo estão os passos:
[root@CLIENT01 ~]# cd /etc/yum.repos.d/
[root@CLIENT01 yum.repos.d]# yum list rsyslog
Loaded plugins: refresh-packagekit, security
rsyslog-v7-stable | 2.5 kB 00:00
rsyslog-v7-stable/primary_db | 188 kB 00:01
Pacotes Disponíveis
rsyslog.i686 7.6.7-1.el6 rsyslog-v7-stable
[root@RSYS01 yum.repos.d]# yum install rsyslog -y
Loaded plugins: refresh-packagekit, security
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package rsyslog.i686 0:7.6.7-1.el6 will be installed
--> Processing Dependency: liblogging-stdlog.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libjson-c.so.2 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgthttp.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgtbase.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libgt for package: rsyslog-7.6.7-1.el6.i686
--> Processing Dependency: libestr.so.0 for package: rsyslog-7.6.7-1.el6.i686
--> Running transaction check
---> Package json-c.i686 0:0.11-3.el6 will be installed
---> Package libestr.i686 0:0.1.9-1.el6 will be installed
---> Package libgt.i686 0:0.3.11-1.el6 will be installed
---> Package liblogging.i686 0:1.0.4-1.el6 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
===============================================================================================================
Pacote Arquitetura Versão Repositório Tamanho
===============================================================================================================
Instalando:
rsyslog i686 7.6.7-1.el6 rsyslog-v7-stable 920 k
Instalando para dependências:
json-c i686 0.11-3.el6 rsyslog-v7-stable 46 k
libestr i686 0.1.9-1.el6 rsyslog-v7-stable 9.0 k
libgt i686 0.3.11-1.el6 rsyslog-v7-stable 55 k
liblogging i686 1.0.4-1.el6 rsyslog-v7-stable 23 k
Resumo da Transação
===============================================================================================================
Instalar 5 Pacote(s)
Tamanho total do download: 1.0 M
Tamanho instalado: 3.2 M
Baixando Pacotes:
(1/5): json-c-0.11-3.el6.i686.rpm | 46 kB 00:00
(2/5): libestr-0.1.9-1.el6.i686.rpm | 9.0 kB 00:00
(3/5): libgt-0.3.11-1.el6.i686.rpm | 55 kB 00:00
(4/5): liblogging-1.0.4-1.el6.i686.rpm | 23 kB 00:00
(5/5): rsyslog-7.6.7-1.el6.i686.rpm | 920 kB 00:03
---------------------------------------------------------------------------------------------------------------
Total 114 kB/s | 1.0 MB 00:09
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : libgt-0.3.11-1.el6.i686 1/5
Installing : liblogging-1.0.4-1.el6.i686 2/5
Installing : libestr-0.1.9-1.el6.i686 3/5
Installing : json-c-0.11-3.el6.i686 4/5
Installing : rsyslog-7.6.7-1.el6.i686 5/5
Verifying : json-c-0.11-3.el6.i686 1/5
Verifying : libestr-0.1.9-1.el6.i686 2/5
Verifying : liblogging-1.0.4-1.el6.i686 3/5
Verifying : libgt-0.3.11-1.el6.i686 4/5
Verifying : rsyslog-7.6.7-1.el6.i686 5/5
Instalado:
rsyslog.i686 0:7.6.7-1.el6
Dependência Instaladas:
json-c.i686 0:0.11-3.el6 libestr.i686 0:0.1.9-1.el6 libgt.i686 0:0.3.11-1.el6 liblogging.i686 0:1.0.4-1.el6
Completo!Feito, agora instalamos o pacote rsyslog em nossa estação de trabalho cliente. Agora vamos fazer uma alteração dentro do arquivo de configuração do rsyslog. Para a configuração do cliente, você só precisa alterar a configuração como abaixo:
[root@CLIENT01 ~]# vi /etc/rsyslog.conf
*.* @192.168.43.101:514Isso é tudo, observe que incluímos o IP 192.168.43.101 com a porta 514 no arquivo de configuração. Esse IP é o IP do servidor rsyslog. Agora que tudo está feito, vamos reiniciar o serviço rsyslog na estação de trabalho cliente para carregar as alterações. Abaixo estão os passos:
[root@CLIENT01 ~]# /etc/init.d/rsyslog restart
Shutting down system logger: [FAILED]
Starting system logger: [ OK ]Agora vamos voltar ao nosso servidor rsyslog e ver se uma pasta para o nome do host do cliente rsyslog foi criada no diretório de logs do rsyslog. Abaixo estão os passos:
[root@RSYS01 ~]# cd var/log/rsyslog_client/
[root@RSYS01 rsyslog_client]# ls
RSYS01 CLIENT01Excelente, observe que uma pasta com o nome do host do cliente rsyslog foi criada automaticamente. Isso confirma que nossa configuração está correta e o cliente rsyslog é capaz de fazer uma conexão UDP com o servidor rsyslog.
Para o próximo procedimento de teste, vamos fazer login no cliente rsyslog como outro usuário e ver se o servidor rsyslog consegue capturar a atividade ou não. Abaixo estão os passos:
::CLIENT01::
login as: shahril
[email protected]'s password:
Último login: Dom Out 23 00:21:40 2016 de 172.20.181.11[shahril@CLIENT01 ~]$ who
shahril pts/0 2016-10-24 17:01 (192.168.43.80)[shahril@CLIENT01 ~]$ exitAgora, vamos verificar o diretório de logs dentro do servidor rsyslog para ver se conseguimos registrar a atividade criada a partir do cliente rsyslog ou não.
[root@RSYS01 ~]# cd var/log/rsyslog_client/
[root@RSYS01 rsyslog_client]# cd CLIENT01/
[root@RSYS01 CLIENT01]# ls
rsyslogd.log sshd.log
[root@RSYS01 CLIENT01]# tail -10 sshd.log
Oct 24 17:01:47 CLIENT01 sshd[2102]: Accepted password for shahril from 192.168.43.80 port 17002 ssh2
Oct 24 17:01:47 CLIENT01 sshd[2102]: pam_unix(sshd:session): session opened for user shahril by (uid=0)Ótimo, o resultado mostra que o processo funciona conforme esperado. Agora, para o teste final, vamos fazer login novamente no cliente rsyslog e instalar um pacote para testar se o serviço rsyslog consegue registrar outra atividade além da criação de sessão. Abaixo estão os passos:
::CLIENT01::
login as: root
[email protected]'s password:
Último login: Sáb Out 22 10:21:40 2016 de 172.20.181.11[root@CLIENT01 ~]# yum install firefox -y
Loaded plugins: refresh-packagekit, security
Repository 'OEL64' is missing name in configuration, using id
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package firefox.i686 0:10.0.12-1.0.1.el6_3 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Pacote Arquitetura Versão Repositório Tamanho
================================================================================
Instalando:
firefox i686 10.0.12-1.0.1.el6_3 OEL64 20 M
Resumo da Transação
================================================================================
Instalar 1 Pacote(s)
Tamanho total do download: 20 M
Tamanho instalado: 23 M
Baixando Pacotes:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : firefox-10.0.12-1.0.1.el6_3.i686 1/1
Verifying : firefox-10.0.12-1.0.1.el6_3.i686 1/1
Instalado:
firefox.i686 0:10.0.12-1.el6_3
Completo!O acima mostra que instalamos com sucesso um instalador do navegador firefox dentro da nossa estação de trabalho cliente rsyslog. Agora vamos voltar ao nosso servidor rsyslog e verificar se o rsyslog foi capaz de registrar o processo de instalação de um pacote de terceiros na estação de trabalho. Abaixo estão os passos:
[root@RSYS01 ~]# cd var/log/rsyslog_client/
[root@RSYS01 CLIENT01]# ls
rsyslogd.log sshd.log yum.log
[root@RSYS01 CLIENT01]# tail -20 yum.log
Oct 25 17:13:17 CLIENT01 yum[2319]: Installed: firefox-10.0.12-1.0.1.el6_3.i686Excelente, o serviço rsyslog conseguiu auditar as informações da atividade de instalação na estação de trabalho cliente.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.