Como posso receber logs syslog de um sistema em rede?

23

Eu gostaria de configurar o Ubuntu para receber logs de um roteador DD-WRT. A tela de configuração do roteador contém a seguinte seção:

Log do sistema DD-WRT

e sua documentação de registro diz:

Se você deseja enviar logs para um sistema remoto, digite o endereço IP dessa máquina que também está executando um utilitário syslog (ele precisa de um soquete de rede aberto para aceitar os logs enviados pelo roteador).

Eu nunca (conscientemente) usei o syslog antes. O que preciso fazer no Ubuntu para permitir que ele receba esses logs?

ændrük
fonte
Minha Motorola Surfboard Extreme SBG901 parece ter configurações semelhantes ao seu DD-WRT. Só pensei em adicionar essa palavra-chave para outras pessoas pesquisando neste q / a.
Placas

Respostas:

23

O host que recebe os logs precisará estar executando algum daemon syslog configurado para escutar logs remotos. Existem várias implementações de syslog no Ubuntu, mas rsysloggeralmente são recomendadas e devem ser instaladas por padrão. Não sei pela documentação no link que você postou se o DD-WRT está enviando logs via TCP ou UDP, portanto, pode ser necessário experimentar algumas experiências para encontrar com precisão as configurações corretas, se você estiver preocupado em reduzir o número de acessos à rede acessíveis portas no seu host.

Há duas maneiras de habilitar isso: a primeira é mais simples, mas pode exigir reintegração quando o sistema é atualizado. O segundo é um pouco mais complicado e pode causar resultados confusos se houver alterações significativas na configuração do syslog como parte de uma atualização. Eu escolheria o segundo, mas sua preferência pode variar.

O primeiro é editar /etc/rsyslogd.confe remover a inicial #das seguintes linhas:

# $ ModLoad imudp
# $ UDPServerRun 514

ou

# $ ModLoad imtcp
# $ InputTCPServerRun 514

A segunda é criar um novo arquivo, talvez chamado local-enable-tcp.confem /etc/rsyslog.d/, com o seguinte conteúdo:

# ativar a recepção de syslog TCP
$ ModLoad imtcp
$ InputTCPServerRun 514

Se você deseja usar a abordagem de arquivo separado e precisar de UDP, altere o conteúdo para corresponder à sub-rotina UDP acima. O nome do arquivo específico não é importante, mas recomenda-se iniciá-lo com "local-", pois esse espaço para nome é reservado para a configuração do administrador local e deve terminar com ".conf", pois somente os arquivos que terminam assim são incluídos automaticamente no diretório configuração rsyslog.

Se você preferir usar outra implementação syslog, verifique a configuração e a documentação dessa implementação: é provável que o daemon syslog esteja configurado para não escutar na rede por padrão, mas a configuração de exemplo para ativar esse caso comum deve ser claramente documentada.

Emmet Hikory
fonte
1
Convém iniciar o nome do arquivo com um número de dois dígitos e estabelecer a ordem com relação a outros arquivos .conf existentes.
enzotib
Heh, bem, isso pode ser complicado. Não há motivo para que um nome de pacote não possa começar com um número de dois dígitos e .d / $ {package} - .conf são todos reservados para os pacotes (embora seja improvável que haja conflito por exemplo, 72-local-myconf.conf ) Em segundo lugar, é importante tentar gravar arquivos de configuração para que o pedido não seja crítico. Por exemplo, um arquivo de configuração fornecido pelo 0access.conf do pacote hipotético "0access" seria aplicado antes da maioria dos arquivos de configuração iniciados com um número de dois dígitos.
Emmet Hikory
1
Também pode ser necessário alterar a propriedade do seu arquivo de log: sudo chown syslog:adm /var/log/syslogou o nome que você deu ao seu arquivo de log.
hobs
6

Outra opção é usar o syslog-ng, fácil de usar e até agora pronto para começar!

sudo apt-get install syslog-ng

Depois de instalá-lo, temos um arquivo conf em /etc/syslog-ng/syslog-ng.conf Então, basta editar este .conf com nossos parâmetros, mas antes disso, faça um backup do arquivo de configuração padrão, poderá ser útil mais tarde se você quer ajustar alguns parâmetros

sudo mv /etc/syslog-ng/syslog-ng.conf /etc/syslog-ng/syslog-ng.conf.bak

Agora crie um novo arquivo de configuração e edite-o!

sudo touch /etc/syslog-ng/syslog-ng.conf
sudo nano /etc/syslog-ng/syslog-ng.conf

Então, basta colar esta configuração básica para começar a trabalhar também:

# Listening to incoming UDP Syslog connections
source mysource { udp(); };

#Add the syslog targets:

destination dest { file("/var/log/Cisco$YEAR$MONTH$R_DAY.log"); };
#destination dest_other_server { udp("1.2.3.4" port(514)); };
#Create the filters that will be used to determine what to do with the received syslog message

#filter filter { ( host("2.3.4.5") and level(notice) and match("username=.*@domain\.local" value("MESSAGE") flags("utf8" "ignore-case")) ); };
filter myfilter { ( level(notice) ); };
#And putting it all together:

log { source(mysource); filter(myfilter); destination(dest);  };

Fácil como você pode ver. Cuidar!

Alvarova
fonte
-2

Basicamente, você executa um daemon (chamado syslogd) no servidor para o roteador dd-wrt postar logs.

Tutorial- http://www.techiecorner.com/1479/how-to-setup-syslog-server-in-ubuntu/

user606723
fonte
5
Evite postar o endereço de um guia antigo, sem mesmo verificar se as instruções ainda são válidas. Os arquivos nomeados no guia não existem mais. O Ubuntu usa o rsyslog.
enzotib
@enzotib - Embora eu concorde que falta qualidade e que os links devem ser evitados, essa resposta forneceu exatamente o que eu precisava para realizar a mesma tarefa em um servidor Ubuntu 8.04. Há três respostas aqui, todas para três variações diferentes de syslog que ainda estão sendo usadas em sistemas de produção . Esta resposta foi útil. Recebe um +1 de mim.
ghoti
Isso é verdade, mas isso é basicamente uma resposta apenas de link.
Duncan X Simpson