Como Criar um Registo Centralizado de Servidor com Rsyslog no CentOS/RHEL 7

Em ordem para o administrador do sistema para identificar ou resolver um problema em um CentOS 7 ou RHEL 7 sistema de servidor, ele deve conhecer e ver os eventos que aconteceram no sistema em um determinado período de tempo a partir de arquivos de log armazenados no sistema no diretório /var/log.

O syslog server em uma máquina Linux pode agir de uma central de monitoramento de ponto através de uma rede onde todos os servidores, dispositivos de rede, roteadores, switches e a maioria de seus serviços internos que geram logs, se relacionadas a determinados assuntos internos ou apenas mensagens informativas podem enviar seus logs.

On a CentOS / RHEL 7 system, Rsyslog daemon is the main log server preinstalled, followed by Systemd Journal Daemon (journald).

rsyslog server in build as a client/server architecture service and can achieve both roles simultaneous. Ele pode ser executado como um servidor e coletar todos os logs transmitidos por outros dispositivos na rede ou ele pode ser executado como um cliente, enviando todos os eventos internos do sistema registrados para um terminal remoto servidor syslog.

Quando rsyslog é configurado como um cliente, os registos podem ser armazenados localmente em arquivos no sistema de arquivos local ou podem ser enviados remotamente, em vez de escrevê-los em arquivos armazenados no computador ou gravar eventos de log de arquivos localmente e enviá-los para um servidor syslog remoto ao mesmo tempo.

o Servidor Syslog Opera qualquer mensagem de Registo usando o seguinte esquema:

type (facility).priority (severity) destination(where to send the log)

A. Os dados de instalação ou tipo são representados pelos processos internos do sistema que geram as mensagens. Em processos internos Linux (instalações) que geram logs são padronizados da seguinte forma::

  • auth = mensagens geradas pelos processos de autenticação (login).
  • cron = mensagens geradas por processos programados (crontab).
  • daemon = mensagens geradas pelos daemons (serviços internos).
  • kernel = mensagens geradas pelo próprio Kernel Linux.
  • mail = mensagens geradas por um servidor de correio.
  • syslog = mensagens geradas pelo próprio servidor rsyslog.
  • lpr = mensagens geradas por Impressoras locais ou por um servidor de impressão.
  • local0-local7 = mensagens personalizadas definidas por um administrador (o local7 é normalmente atribuído para o Cisco ou para o Windows).

B. Os níveis de prioridade (gravidade) também são padronizados. Cada prioridade é atribuída com uma abreviatura padrão e um número como descrito abaixo. A 7ª prioridade é o nível mais alto de todos.

  • emerg = Emergência – 0
  • alert = Alertas – 1
  • err = Erros – 3
  • warn = Avisos – 4
  • observe = Notificação – 5
  • info = Informações – 6
  • debug = Depuração– 7

Especial Rsyslog palavras-chave:

  • * = todas as instalações ou prioridades
  • nenhum = as instalações dispõem de nenhum dado prioridades, por exemplo: mail.nenhuma

C. A terceira parte do sistema syslog é representada pela Directiva destino. Rsyslog daemon pode enviar mensagens de log para ser escrito em um arquivo no sistema de arquivos local (principalmente em um arquivo em /var/log/ directory) ou para ser encaminhado para outro local, ou para ser enviado para um usuário local console (stdout), ou enviar a mensagem para um servidor de syslog remoto via TCP/UDP, ou até mesmo descartar a mensagem para /dev/null.

para Configurar o CentOS/RHEL 7 como uma central de Log de Servidor, precisamos primeiro verificar e garantir que a partição /var, onde todos os arquivo de log são gravados é grande o suficiente (alguns GB, no mínimo), a fim de ser capaz de armazenar todos os arquivos de log que serão enviados por outros dispositivos. É uma boa decisão usar uma unidade separada (LVM, RAID) para montar o diretório /var/log/.

Requisitos

  1. CentOS 7.3 Procedimento de Instalação
  2. RHEL 7.3 Procedimento de Instalação

Como Configurar o Rsyslog no CentOS/RHEL 7 Server

1. Por padrão, o serviço Rsyslog é instalado automaticamente e deve estar em execução em CentOS / RHEL 7. Para verificar se o servidor é iniciado no sistema, envie o seguinte comando com privilégios de root.

# systemctl status rsyslog.service
verifique o serviço Rsyslog
verifique o serviço Rsyslog

se o serviço não estiver a correr por omissão, execute o comando abaixo para iniciar o servidor rsyslog.

# systemctl start rsyslog.service

2. Se o pacote rsyslog não estiver instalado no sistema que pretende usar como um servidor de Registo centralizado, envie o seguinte comando para instalar o pacote rsyslog.

# yum install rsyslog

3. O primeiro passo que precisamos fazer no sistema para configurar o servidor rsyslog como um servidor de log centralizado, para que ele possa receber mensagens de log para clientes externos, é abrir e editar, usando o seu editor de texto favorito, o arquivo de configuração principal do /etc/rsyslog.conf, tal como apresentado no excerto abaixo.

# vi /etc/rsyslog.conf

no ficheiro de configuração principal do rsyslog, procurar e descomentar as seguintes linhas (remover a hashtag # sinal no início da linha), a fim de fornecer a recepção de transporte UDP para o servidor do Rsyslog através do porto 514. UDP é o protocolo padrão usado para a transmissão de log pelo Rsyslog.

$ModLoad imudp $UDPServerRun 514
Configurar O Servidor De Rsyslog
Configurar O Servidor De Rsyslog

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

no entanto, se precisar de usar o protocolo TCP para a recepção do registo, deverá procurar e descomentar as seguintes linhas de /etc/rsyslog.ficheiro conf para configurar o servidor Rsyslog para ligar e ouvir um ‘socket’ TCP no porto 514. Os sockets de escuta TCP e UDP para recepção podem ser configurados em um servidor de Rsyslog simultaneamente.

$ModLoad imtcp $InputTCPServerRun 514 

5. No próximo passo, não feche o arquivo ainda, crie um novo modelo que será usado para receber mensagens remotas. Este modelo irá indicar ao servidor de Rsyslog local onde gravar as mensagens recebidas enviadas pelos clientes da rede syslog. O modelo deve ser adicionado antes do início do bloco de diretivas globais, como ilustrado no trecho abaixo.

$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" . ?RemoteLogs & ~
Criar Rsyslog Modelo
Criar Rsyslog Modelo

O acima de us $modelo RemoteLogs directiva instrui o Rsyslog daemon para coletar e escrever todos os recebeu mensagens de log para arquivos distintos, com base no nome do computador cliente e o cliente remoto de instalações (aplicativo) que gerou as mensagens com base no definido de propriedades apresenta no modelo de configuração: %HOSTNAME% e %PROGRAMNAME%.

todos estes ficheiros de registo serão escritos no sistema de ficheiros local para um ficheiro dedicado com o nome da máquina do cliente e armazenados no /var/log/ directory.

the & ~ redirect rule instructs the local Rsyslog server to stop processing the received log message further and devard the messages (not write them to internal log files).

The RemoteLogs name is an arbitrary name given to this template directive. Você pode usar qualquer nome que você pode encontrar mais adequado para o seu modelo.

a fim de escrever todas as mensagens recebidas de clientes em um único arquivo de log nomeado após o endereço IP do cliente remoto, sem filtrar a facilidade que gerou a mensagem, use o trecho abaixo.

$template FromIp,"/var/log/%FROMHOST-IP%.log" . ?FromIp & ~ 

outro exemplo de um modelo onde todas as mensagens com a opção de instalação auth serão registadas num modelo chamado “TmplAuth”.

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

abaixo está um excerpt forma uma definição de modelo do servidor Rsyslog 7:

template(name="TmplMsg" type="string" string="/var/log/remote/msg/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log" )

o excerto do modelo acima também pode ser escrito como:

template(name="TmplMsg" type="list") { constant(value="/var/log/remote/msg/") property(name="hostname") constant(value="/") property(name="programname" SecurePath="replace") constant(value=".log") }

para escrever modelos Rsyslog complexos, leia o manual de ficheiros de configuração do Rsyslog, emitindo o man rsyslog.comando conf ou consulta a documentação online do Rsyslog.

6. Depois de ter editado o ficheiro de configuração do Rsyslog com a sua própria configuração, como explicado acima, reinicie o servidor do Rsyslog para aplicar as alterações, emitindo o seguinte comando:

# service rsyslog restart

7. Neste momento, o servidor Rsyslog deve ser configurado para agir um servidor de log centralizado e gravar mensagens de clientes do syslog. Para verificar os ‘sockets’ de rede do Rsyslog, execute o comando netstat com privilégios de root e use o grep para filtrar o texto do rsyslog.

# netstat -tulpn | grep rsyslog 
Verifique Rsyslog Socket De Rede
Verificar Rsyslog Socket De Rede

8. Se tiver o SELinux activo no CentOS / RHEL 7, envie o seguinte comando para configurar o SELinux para permitir o tráfego do rsyslog dependendo do tipo de ‘socket’ da rede.

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

9. Se a firewall estiver activa e activa, execute o comando abaixo para adicionar as regras necessárias para abrir as portas do rsyslog no Firewalld.

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

é tudo! O Rsyslog está agora configurado no modo servidor e pode centralizar logs a partir de clientes remotos. No próximo artigo, veremos como configurar o cliente Rsyslog no servidor CentOS / RHEL 7.

usando o servidor de Rsyslog como ponto central de monitorização de mensagens de registo remoto, você pode inspeccionar os ficheiros de registo e observar mais facilmente o estado de saúde dos clientes ou os problemas do cliente de depuração quando os sistemas estoiram ou estão sob algum tipo de ataque.

Deixe uma resposta

O seu endereço de email não será publicado.