Ir para o conteúdo

⚙ Rsyslog - Cada cliente com seu diretório

Banner

Para configurar o encaminhamento das mensagens de log, enviadas pelos hosts clientes, para um diretório específico precisamos realizar alguns ajustes no arquivo de configuração do Rsyslog e no sistema de arquivo do servidor de logs.

📚 Preparando o sistema de arquivo

Caso o serviço, de log centralizado, esteja sendo configurado em uma maquina virtual, pode ser interessante armazenar os logs em um volume independe. Neste caso, podemos-se armazenar os logs em uma partição diferente da utilizada pelo sistema.

Ao manter os arquivos do sistema operacional juntos com os arquivos de log podemos causar uma parada no sistema. Caso os arquivos de log ocupem 100% do espaço livre o sistema operacional fica impedido de criar novos arquivos e consequentemente o sistema não consegue iniciar novos processos. Além disto, um volume independente facilita o processo de recovery dos logs em caso de problemas no servidor.

📚 Preparando o diretório que irá receber os LOGS

Podemos utilizar o diretório "/registros" para guardar os logs, mas pode ser utilizado qualquer outro diretório ou ponto de montagem.

Comando :
sudo mkdir /registros

No caso de utilizarmos uma partição específica, precisamos associa-la a um diretório, ou seja precisamos mapear a partição em um diretório. Este processo é realizado ajustando as configurações contidas no arquivo /etc/fstab. Vamos iniciar o processo abrindo o arquivo para edição

Comando :
nano /etc/fstab

Supondo que a partição a ser montada é a /dev/sdb1, devemos adicionar a seguinte linha no final do arquivo /etc/fstab.

Configuração :
/dev/sdb1       /registros  ext4     errors=remount-ro 0       1

Após salvar o arquivo podemos montar o sistema de arquivo utilizando o comando abaixo:

Comando :
mount /registros

Finalmente podemos criar a estrutura de diretório que armazenará os registros, para isto utilizaremos os seguintes comandos:

Comando :
sudo mkdir -p /registros/log/hosts
sudo chown syslog:adm -R /registros/log/

📚 Ajustando as configurações do Rsyslog

Neste ponto configuramos o rsyslog para receber os logs das maquinas clientes. Primeiro precisamos editar o arquivo de configuração:

Comando :
sudo nano /etc/rsyslog.conf

Em seguida devemos realizar os seguintes ajustes neste arquivo:

Configurações :
#################
#### MODULES ####
#################

module(load="imuxsock") # provides support for local system logging
module(load="immark")  # provides --MARK-- message capability

# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")

# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")

# provides kernel logging support and enable non-kernel klog messages
module(load="imklog" permitnonkernelfacility="on")

🔔 Devido aos ajustes realizados anteriormente, as mensagens contendo os logs deverão ser encaminhadas paras portas 514/UDP e 514/TCP do nosso servidor.

Após salvar as configurações devemos reiniciar daemon do rsyslog

Comando :
systemctl restart rsyslog
systemctl status rsyslog

Para verificar se o serviço está aguardando por conexões na porta 514, podemos utilizar o comando abaixo:

Comando :
lsof  -i:514

A saída deste comando deve ser semelhante à:

Saída :
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rsyslogd 1907 syslog    6u  IPv4  29416      0t0  UDP *:syslog
rsyslogd 1907 syslog    7u  IPv6  29417      0t0  UDP *:syslog
rsyslogd 1907 syslog    8u  IPv4  29420      0t0  TCP *:shell (LISTEN)
rsyslogd 1907 syslog    9u  IPv6  29421      0t0  TCP *:shell (LISTEN)

📚 Limitando a origem dos logs

3.2) Definindo a origem dos logs que serão aceitos

sudo nano /etc/rsyslog.conf

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
  ####### LR - Configurando o envio dos LOGS dos Clientes ######

  ##
  # LR - Limitando as possiveis origens
  ##
  #$AllowedSender UDP, 127.0.0.1, 146.134.244.0/24, 146.134.161.0/24, 146.134.1.0/24, 146.134.0.0/24
  #$AllowedSender TCP, 127.0.0.1, 146.134.244.0/24, 146.134.161.0/24, 146.134.1.0/24, 146.134.0.0/24

  $AllowedSender UDP, 127.0.0.1, 146.134.0.0/16
  $AllowedSender TCP, 127.0.0.1, 146.134.0.0/16

  ##
  # LR - Template para registrar os logs remotos
  ##

  # Para cada host um diretorio com o seu nome
  #$template remote-incoming-logs,"/var/log/hosts/%HOSTNAME%/%PROGRAMNAME%.log"

  # Para cada host um diretorio com o seu IP
  #$template remote-incoming-logs,"/var/log/hosts/%FROMHOST-IP%/%PROGRAMNAME%.log"
  #$template remote-incoming-logs,"/var/log/hosts/%FROMHOST-IP%/%FROMHOST-IP%.log"
  #$template remote-incoming-logs,"/var/log/hosts/%FROMHOST-IP%/%FROMHOST-IP%-%$year%-%$month%-%$day%.log"

  # Para cada hosts sera criada uma subpasta com o endereco IPV4 do
  # clientes dentro da pasta "/registros/log/hosts/",
  $template remote-incoming-logs,"/registros/log/hosts/%FROMHOST-IP%/%FROMHOST-IP%-%$year%-%$month%-%$day%.log"

  ##
  # LR - Redirecionado todos os LOGS utilizando o Template
  ##
  *.* ?remote-incoming-logs
  & ~

  ####### LR - FIM - Configurando o envio dos LOGS dos Clientes ######

  # provides kernel logging support and enable non-kernel klog messages
  module(load="imklog" permitnonkernelfacility="on")

3.3) Reiniciando o serviço

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
sudo systemctl restart rsyslog.service

sudo systemctl status rsyslog.service

sudo lsof  -i:514

  COMMAND    PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
  rsyslogd 26366 syslog    6u  IPv4 385878      0t0  UDP *:syslog
  rsyslogd 26366 syslog    7u  IPv6 385879      0t0  UDP *:syslog
  rsyslogd 26366 syslog    8u  IPv4 385882      0t0  TCP *:shell (LISTEN)
  rsyslogd 26366 syslog    9u  IPv6 385883      0t0  TCP *:shell (LISTEN)

3.4) Verificando se os Logs estão chegando:

Instala o comando tree e o tcpdump, que serão utilizados nos testes

sudo apt install tree sudo apt install tcpdump

Utilizando o comando tree inspeciona o diretório "/registros/log/hosts"

tree /registros/log/hosts -s

Utilizando o comando tcpdump verificar se estão chegando pacotes direcionados a porta "514" na interface "eno1". Quando for executar este comando precisamos verificar o nome da interface de rede conectada ao segmento de onde estão vindo os pacotes.

sudo tcpdump -i eno1 -n dst port 514

```



Banner


Última atualização: 2 de novembro de 2020

Comentários