Pesquisa de site

Como configurar o Central Logging Server com Rsyslog no Linux


Logs são um componente crítico de qualquer software ou sistema operacional. Os logs geralmente registram ações do usuário, eventos do sistema, atividades de rede e muito mais, dependendo da finalidade a que se destinam. Um dos sistemas de registro mais utilizados em sistemas Linux é o rsyslog.

Rsyslog é um sistema de processamento de log poderoso, seguro e de alto desempenho que aceita dados de diferentes tipos de fontes (sistemas/aplicativos) e os envia em vários formatos.

Ele evoluiu de um daemon syslog regular para um sistema de registro de nível empresarial completo. Ele é projetado em um modelo cliente/servidor, portanto pode ser configurado como cliente e/ou como servidor central de registro para outros servidores, dispositivos de rede e aplicações remotas.

Ambiente de teste

Para os fins deste guia, usaremos os seguintes hosts:

  • Servidor: 192.168.241.140
  • Cliente: 172.31.21.58

Como instalar e configurar o servidor Rsyslog

A maioria das distribuições Linux vem com o pacote rsyslog pré-instalado. Caso não esteja instalado, você pode instalá-lo usando a ferramenta gerenciadora de pacotes Linux conforme mostrado.

sudo yum update && yum install rsyslog 	#CentOS 7
sudo apt update && apt install rsyslog	#Ubuntu 16.04, 18.04

Uma vez instalado o rsyslog, você precisa iniciar o serviço por enquanto, habilitá-lo para inicialização automática na inicialização e verificar seu status com o comando systemctl.

sudo systemctl start rsyslog
sudo systemctl enable rsyslog
sudo systemctl status rsyslog

O arquivo de configuração principal do rsyslog está localizado em /etc/rsyslog.conf, que carrega módulos, define as diretivas globais, contém regras para processamento de mensagens de log e também inclui todos os arquivos de configuração em /etc /rsyslog.d/ para vários aplicativos/serviços.

sudo vim /etc/rsyslog.conf

Por padrão, o rsyslog usa os módulos imjournal e imusock para importar mensagens de log estruturadas do systemd journal e para aceitar o syslog. mensagens de aplicativos em execução no sistema local por meio de soquetes Unix, respectivamente.

Para configurar o rsyslog como um servidor de registro de rede/central, você precisa definir o protocolo (UDP ou TCP ou ambos) que ele usará para recepção remota de syslog, bem como o porta onde ele escuta.

Se você quiser usar uma conexão UDP, que é mais rápida, mas não confiável, pesquise e remova o comentário das linhas abaixo (substitua 514 pela porta que você deseja escutar, isso deve corresponda ao endereço da porta para a qual os clientes enviam mensagens, veremos isso mais detalhadamente ao configurar um cliente rsyslog).

$ModLoad imudp
$UDPServerRun 514

Para usar a conexão TCP (que é mais lenta, porém mais confiável), pesquise e descomente as linhas abaixo.

$ModLoad imtcp
$InputTCPServerRun 514

Neste caso, queremos usar conexões UDP e TCP ao mesmo tempo.

Em seguida, você precisa definir o conjunto de regras para processar logs remotos no formato a seguir.

facility.severity_level	destination (where to store log)

Onde :

  • facilidade: é o tipo de mensagem geradora de processo/aplicação, que inclui auth, cron, daemon, kernel, local0..local7. Usar * significa todas as facilidades.
  • severity_level: é o tipo de mensagem de log: emerg-0, alert-1, crit-2, err-3, warning-4, Notice-5, info-6, debug-7. Usar * significa todos os níveis de severidade e nenhum implica nenhum nível de severidade.
  • destino: é um arquivo local ou um servidor rsyslog remoto (definido no formato IP:porta).

Usaremos o seguinte conjunto de regras para coletar logs de hosts remotos, usando o modelo RemoteLogs. Observe que essas regras devem vir antes de quaisquer regras de processamento de mensagens locais, conforme mostrado na captura de tela.

$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs 
& ~

Observando o conjunto de regras acima, a primeira regra é “$template RemoteLogs,”/var/log/%HOSTNAME%/%PROGRAMNAME%.log” ”.

A diretiva $template diz ao daemon rsyslog para reunir e gravar todas as mensagens remotas recebidas em logs distintos em /var/log, com base no nome do host > (nome da máquina cliente) e instalação do cliente remoto (programa/aplicação) que gerou as mensagens conforme definido pelas configurações presentes no template RemoteLogs.

A segunda linha “*.* ?RemoteLogs ” significa registrar mensagens de todas as instalações em todos os níveis de gravidade usando a configuração do modelo RemoteLogs.

A linha final “& ~ ” instrui o rsyslog a interromper o processamento das mensagens assim que elas forem gravadas em um arquivo. Se você não incluir “& ~”, as mensagens serão gravadas nos arquivos locais.

Existem muitos outros modelos que você pode usar. Para obter mais informações, consulte a página de manual de configuração do rsyslog (man rsyslog.conf) ou consulte a documentação on-line do Rsyslog.

É isso com a configuração do servidor rsyslog. Salve e feche o arquivo de configuração. Para aplicar as alterações recentes, reinicie o daemon rsyslog com o seguinte comando.

sudo systemctl restart rsyslog

Agora verifique os soquetes de rede rsyslog. Use o comando comando ss (ou netstat com os mesmos sinalizadores) e canalize a saída para grep para filtrar conexões rsyslogd.

sudo ss -tulnp | grep "rsyslog"

A seguir, no CentOS 7, se você tiver o SELinux ativado, execute os seguintes comandos para permitir o tráfego rsyslog com base no tipo de soquete de rede.

sudo semanage -a -t syslogd_port_t -p udp 514
sudo semanage -a -t syslogd_port_t -p tcp 514 

Se o sistema tiver firewall habilitado, será necessário abrir a porta 514 para permitir ambas as conexões UDP/TCP com o servidor rsyslog, executando.

------------- On CentOS ------------- 
sudo firewall-cmd --permanent --add-port=514/udp
sudo firewall-cmd --permanent --add-port=514/tcp
sudo firewall-cmd --reload

------------- On Ubuntu -------------
sudo ufw allow 514/udp
sudo ufw allow 514/tcp
sudo ufw reload 

Como configurar o cliente Rsyslog para enviar logs ao servidor Rsyslog

Agora no sistema cliente, verifique se o serviço rsyslog está rodando ou não com o seguinte comando.

sudo systemctl status rsyslog

Se não estiver instalado, instale-o e inicie o serviço conforme mostrado anteriormente.

sudo yum update && yum install rsyslog 	#CentOS 7
sudo apt update && apt install rsyslog	#Ubuntu 16.04, 18.04
sudo systemctl start rsyslog
sudo systemctl enable rsyslog
sudo systemctl status rsyslog

Assim que o serviço rsyslog estiver instalado e funcionando, abra o arquivo de configuração principal onde você realizará alterações na configuração padrão.

sudo vim /etc/rsyslog.conf

Para forçar o daemon rsyslog a atuar como um cliente de log e encaminhar todas as mensagens de log geradas localmente para o servidor rsyslog remoto, adicione esta regra de encaminhamento no final do arquivo, conforme mostrado na captura de tela a seguir.

*. *  @@192.168.100.10:514

A regra acima enviará mensagens de todas as instalações e em todos os níveis de gravidade. Para enviar mensagens de uma instalação específica, por exemplo auth, use a regra a seguir.

auth. *  @@192.168.100.10:514

Salve as alterações e feche o arquivo de configuração. Para aplicar as configurações acima, reinicie o daemon rsyslog.

sudo systemctl restart rsyslog

Como monitorar o log remoto no servidor Rsyslog

A etapa final é verificar se o rsyslog está realmente recebendo e registrando mensagens do cliente, em /var/log, no formato hostname/programname.log.

Execute um comando ls para listar o diretório de logs pai e verifique se existe um diretório chamado ip-172.31.21.58 (ou qualquer que seja o nome de host da sua máquina cliente).

 
ls -l /var/log/

Se o diretório existir, verifique os arquivos de log dentro dele, executando.

sudo ls -l /var/log/ip-172-31-21-58/

Resumo

Rsyslog é um sistema de processamento de logs de alto desempenho, projetado em uma arquitetura cliente/servidor. Esperamos que você consiga instalar e configurar o Rsyslog como um servidor de registro central/de rede e como um cliente, conforme demonstrado neste guia.

Você também pode consultar as páginas de manual relevantes do rsyslog para obter mais ajuda. Sinta-se à vontade para nos dar qualquer feedback ou fazer perguntas.