Pesquisa de site

Configure um servidor de log centralizado com Rsyslog no CentOS/RHEL 8


Para que um administrador de sistema reconheça ou analise problemas em um servidor CentOS 8 ou RHEL 8, é importante conhecer e visualizar os eventos que ocorreram no servidor em um determinado período de tempo dos arquivos de log encontrados em /var/log o diretório do sistema.

O sistema Syslog (System Logging Protocol) no servidor pode atuar como um ponto central de monitoramento de log em uma rede onde todos os servidores, dispositivos de rede, switches, roteadores e serviços internos que criar logs, sejam vinculados ao problema interno específico ou apenas mensagens informativas podem enviar seus logs.

Em um servidor CentOS/RHEL 8, o daemon Rsyslog é o servidor de log mais importante que vem pré-instalado por padrão, seguido pelo Systemd Journal Daemon (< forte>jornal).

Rsyslog é um utilitário de código aberto, desenvolvido como um serviço de arquitetura cliente/servidor e pode desempenhar ambas as funções de forma independente. Ele pode ser executado como um servidor e coletar todos os logs transmitidos por outros dispositivos na rede ou pode ser executado como um cliente, enviando todos os eventos internos do sistema registrados para um servidor Syslog remoto.

Requisitos

  1. Instalação do “CentOS 8.0″ com capturas de tela
  2. Instalação do RHEL 8 com capturas de tela

Para configurar um servidor de log centralizado em um servidor CentOS/RHEL 8, você precisa verificar e confirmar se a partição /var tem espaço suficiente (alguns GB no mínimo ) para armazenar todos os arquivos de log gravados no sistema que são enviados por outros dispositivos na rede. Eu recomendo que você tenha uma unidade separada (LVM ou RAID) para montar o diretório /var/log/.

Como configurar o servidor Rsyslog no CentOS/RHEL 8

1. Como eu disse, o serviço Rsyslog é instalado e executado automaticamente no servidor CentOS/RHEL 8. Para verificar se o daemon está sendo executado no sistema, execute o seguinte comando.

systemctl status rsyslog.service

Se o serviço não estiver em execução por padrão, execute o seguinte comando para iniciar o daemon rsyslog.

systemctl start rsyslog.service

2. Se o utilitário Rsyslog não estiver instalado por padrão no sistema que você planeja usar como servidor de registro centralizado, execute o seguinte comando dnf para instalar o pacote rsyslog e inicie o daemon.


dnf install rsyslog
systemctl start rsyslog.service

3. Após a instalação do utilitário Rsyslog, você poderá configurar o rsyslog como um servidor de registro centralizado abrindo o arquivo de configuração principal /etc/rsyslog.conf , para receber mensagens de log de clientes externos.

vi /etc/rsyslog.conf

No arquivo de configuração /etc/rsyslog.conf, localize e remova o comentário das linhas a seguir para conceder recepção de transporte UDP ao servidor Rsyslog através da porta 514 . Rsyslog usa o protocolo UDP padrão para transmissão de log.

module(load="imudp") # needs to be done just once
input(type="imudp" port="514")

4. O protocolo UDP não tem sobrecarga TCP e torna a transmissão de dados mais rápida que o protocolo TCP. Por outro lado, o protocolo UDP não garante a confiabilidade dos dados transmitidos.

No entanto, se você quiser usar o protocolo TCP para recepção de log, você deve localizar e descomentar as seguintes linhas no /etc/rsyslog.conf arquivo de configuração para configurar o Rsyslog daemon para vincular e escutar um soquete TCP na porta 514.

module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")

5. Agora crie um novo modelo para recebimento de mensagens remotas, pois este modelo guiará o servidor Rsyslog local, onde serão salvas as mensagens recebidas enviadas pelos clientes da rede Syslog.


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

A diretiva $template RemoteLogs orienta o daemon Rsyslog para reunir e gravar todas as mensagens de log transmitidas em arquivos distintos, com base no nome do cliente e no aplicativo cliente remoto que criou as mensagens com base nas propriedades descritas adicionadas no configuração do modelo: %HOSTNAME% e %PROGRAMNAME%.

Todos os arquivos de log recebidos serão gravados no sistema de arquivos local em um arquivo alocado com o nome do host da máquina cliente e mantido no diretório /var/log/.

A regra de redirecionamento & ~ direciona o servidor Rsyslog local para parar de processar a mensagem de log recebida e remover as mensagens (não gravá-las em arquivos de log internos).

O RemoteLogs é um nome arbitrário dado a esta diretiva de modelo. Você pode usar o nome que desejar e que seja mais adequado ao seu modelo.

Para configurar modelos Rsyslog mais complexos, leia o manual do arquivo de configuração do Rsyslog executando o comando man rsyslog.conf ou consulte a documentação on-line do Rsyslog.

man rsyslog.conf

6. Depois de fazer as alterações na configuração acima, você pode reiniciar o daemon Rsyslog para aplicar as alterações recentes executando o comando a seguir.

service rsyslog restart

7. Depois de reiniciar o servidor Rsyslog, ele deverá agora atuar como um servidor de log centralizado e registrar mensagens de clientes Syslog. Para confirmar os soquetes de rede Rsyslog, execute o comando netstat e use o utilitário grep para filtrar a string rsyslog.

netstat -tulpn | grep rsyslog 

Se o comando netstat não estiver instalado no CentOS 8, você poderá instalá-lo usando o seguinte comando.


dnf whatprovides netstat
dnf install net-tools

8. Se você tiver o SELinux ativo no CentOS/RHEL 8, execute o seguinte comando para permitir o tráfego rsyslog dependendo do tipo de soquete de rede.

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

Se o comando semanage não for instalado no CentOS 8, você poderá instalá-lo usando o seguinte comando.


dnf whatprovides semanage
dnf install policycoreutils-python-utils

9. Se você tiver um firewall ativo no sistema, execute o seguinte comando para adicionar as regras necessárias para permitir o tráfego rsyslog nas portas do Firewalld.


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

Você também pode limitar as conexões de entrada na porta 514 dos intervalos de IP permitidos, conforme mostrado.


firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="tcp" accept'
firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="udp" accept'
firewall-cmd --reload

Isso é tudo! Rsyslog agora está configurado como um servidor centralizado de logs e pode coletar logs de clientes remotos. No próximo artigo, veremos como configurar o cliente Rsyslog no servidor CentOS/RHEL 8.