Rsyslog - Cada cliente com seu diretório¶
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 |
|
3.3) Reiniciando o serviço
1 2 3 4 5 6 7 8 9 10 11 |
|
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
```