fbpx

Comandos Linux – Comando sysklogd

Comando sysklogd do Linux

comando sysklogd

Nos sistemas operacionais Linux , sysklogd é um conjunto de utilitários de log do sistema Linux .

Descrição

O Sysklogd fornece dois utilitários de sistema que oferecem suporte ao log do sistema e captura de mensagens do kernel . O suporte aos soquetes de domínio da Internet e do unix permite que este pacote de utilitário ofereça suporte ao log local e remoto.

O log do sistema é fornecido por uma versão do syslogd derivada do BSD . O suporte ao log do kernel é fornecido pelo utilitário klogd , que permite que o log do kernel seja conduzido de maneira independente ou como um cliente do syslogd .

O syslogd fornece um tipo de registro usado por muitos programas modernos. Toda mensagem registrada contém pelo menos uma hora e um campo de nome de host e normalmente um campo de nome de programa, mas isso depende do programa de log.

O arquivo de configuração principal /etc/syslog.conf ou um arquivo alternativo, fornecido com a opção -f , é lido na inicialização. Todas as linhas que começam com a marca de hash (” # “) e as linhas vazias são ignoradas. Se ocorrer um erro durante a análise de uma linha, a linha inteira será ignorada.

Sintaxe

syslogd [-a socket ] [-d] [-f arquivo-de-configuração ] [-h] [-l hostlist ]
        [-m interval ] [-n] [-p socket ] [-r] [-s domainlist ]
        [-u usuário ] [-v]

Opções

-um soqueteUsando esse argumento, você pode especificar soquetes adicionais que o syslogd precisa ouvir. Isso é necessário se você permitir que algum daemon seja executado em um ambiente chroot (). Você pode usar até 19 soquetes adicionais. Se seu ambiente precisar ainda mais, você deverá aumentar o símbolo MAXFUNIX no arquivo de origem syslogd.c .
-dAtiva o modo de depuração . Usando isso, o daemon não fará uma bifurcação para se colocar em segundo plano, mas o oposto disso permanecerá em primeiro plano e gravará muitas informações de depuração no tty atual .
-f arquivo de configuraçãoEspecifique um arquivo de configuração alternativo em vez de /etc/syslog.conf , que é o padrão.
-hPor padrão, o syslogd não encaminha as mensagens que recebe dos hosts remotos. A especificação dessa opção na linha de comandos fará com que o daemon de log encaminhe todas as mensagens remotas que receber para os hosts de encaminhamento que foram definidos. Isso pode causar loops de syslog que preenchem os discos rígidos rapidamente e, portanto, precisam ser usados ​​com cautela.
-l lista de hostEspecifique um nome de host que deve ser registrado apenas com seu nome de host simples e não com o fqdn . Vários hosts podem ser especificados usando o separador de dois pontos (” : “).
intervalo -msyslogd registra um registro de data e hora da marca regularmente. O intervalo padrão entre duas linhas ” – MARK – ” é de 20 minutos. Isso pode ser alterado com esta opção. Definir o intervalo como zero o desativa completamente. Dependendo de outras mensagens de log geradas, essas linhas podem não ser gravadas consecutivamente.
-nEvite o fundo automático. Isso é necessário, especialmente se o syslogd for iniciado e controlado pelo init .
-p socketVocê pode especificar um soquete de domínio unix alternativo em vez de / dev / log .
-rEsta opção permitirá que o recurso receba mensagens da rede usando um soquete de domínio da Internet com o serviço syslog . O padrão é não receber nenhuma mensagem da rede.

Esta opção é introduzida na versão 1.3 do pacote sysklogd . Observe que o comportamento padrão é o oposto de como as versões mais antigas se comportam; portanto, talvez seja necessário ativar isso.

-s domainlistEspecifique um nome de domínio que deve ser retirado antes do log. Vários domínios podem ser especificados usando o separador de dois pontos (” : “). Esteja ciente de que nenhum subdomínio pode ser especificado, mas apenas domínios inteiros. Por exemplo, se -s north.de for especificado e o log do host for resolvido para satu.info‐drom.north.de, nenhum domínio seria cortado, você precisará especificar dois domínios como: -s north.de:info‐drom .north.de .
-u usuárioO daemon syslogd é executado com privilégios de root completos por padrão. Se você especificar esta opção, o daemon eliminará seus privilégios para o usuário especificado (e o grupo principal deste usuário) antes de iniciar o log. Isso reduz bastante o impacto potencial de falhas de segurança exploráveis ​​no syslogd .

O syslogd ainda abrirá todos os arquivos de log como raiz na inicialização. No entanto, após receber um sinal SIGHUP(o que faz com que o daemon seja reiniciado) os arquivos de log serão reabertos como o usuário não privilegiado que falhará se os arquivos de log puderem ser gravados apenas pela raiz. Se você precisar reiniciar o daemon usando o sinal, precisará adaptar as permissões de seus arquivos de log para que sejam graváveis ​​pelo usuário especificado (ou seu grupo principal).

-vVersão impressa e saia.

Signals

O Syslogd reage a um conjunto de sinais. Você pode enviar um sinal facilmente para o syslogd usando o seguinte:

kill -SIGNAL `cat / var / run / syslogd.pid`

em que SIGNAL é um dos seguintes sinais :

SIGHUPIsso permite ao syslogd executar uma reinicialização. Todos os arquivos abertos são fechados, o arquivo de configuração (o padrão é /etc/syslog.conf ) será relido e o recurso syslog será iniciado novamente.
SIGTERMMata syslogd.
SIGINT , SIGQUITSe a depuração estiver ativada, elas serão ignoradas; caso contrário, o syslogd morrerá.
SIGUSR1Ativar / desativar a depuração. Esta opção pode ser usada apenas se o syslogd for iniciado com a opção -d debug.
SIGCHLDAguarde processos filho (se alguns foram gerados).

Sintaxe do arquivo de configuração

O Syslogd usa uma sintaxe ligeiramente diferente para o arquivo de configuração das fontes BSD originais. Originalmente, todas as mensagens de uma prioridade específica e acima foram encaminhadas para o arquivo de log.

Por exemplo, a linha a seguir fez com que TODAS as saídas dos daemons usassem os recursos do daemon (a depuração é a prioridade mais baixa, portanto, todas as demais serão iguais) para entrar em / usr / adm / daemons

# Amostra syslog.conf 
daemon.debug / usr / adm / daemons

Sob o novo esquema, esse comportamento permanece o mesmo. A diferença é a adição de quatro novos especificadores, o curinga asterisco (*), o sinal de equação (=), o ponto de exclamação (!) E o sinal de menos (-).

O * especifica que todas as mensagens para o recurso especificado devem ser direcionadas para o destino. Observe que esse comportamento é degenerado ao especificar um nível de prioridade de depuração. Os usuários indicaram que a notação de asterisco é mais intuitiva.

O curinga = é usado para restringir o log à classe de prioridade especificada. Isso permite, por exemplo, rotear apenas mensagens de depuração para uma fonte de log específica.

Por exemplo, a seguinte linha no syslog.conf direcionaria as mensagens de depuração de todas as fontes para o arquivo / usr / adm / debug.

# Amostra syslog.conf 
*. = depuração / usr / adm / depuração

O ! é usado para excluir o log das prioridades especificadas. Isso afeta todas as possibilidades (!) De especificar prioridades.

Por exemplo, as linhas a seguir registrariam todas as mensagens do correio da instalação, exceto aquelas com as informações de prioridade no arquivo / usr / adm / mail. E todas as mensagens de news.info (incluindo) para news.crit (excluindo) seriam registradas no arquivo / usr / adm / news.

# Amostra syslog.conf 

Você pode usá-lo intuitivamente como um especificador de exceção. A interpretação acima mencionada é invertida. Fazendo o que você pode usar

ou

or

mail.! debug

para pular todas as mensagens que acompanham um recurso de correio.

O ”  ” só pode ser usado para prefixar um nome de arquivo se você deseja omitir a sincronização do arquivo após cada gravação nele.

Suporte para registro remoto

Para habilitar o log remoto, especifique a opção -r na linha de comandos. O comportamento padrão é que o syslogd não escuta a rede.

A estratégia é fazer com que o syslogd escute em um soquete de domínio unix as mensagens de log geradas localmente. Esse comportamento permitirá ao syslogd interoperar com o syslog encontrado na biblioteca C padrão . Ao mesmo tempo, o syslogd escuta na porta syslog padrão as mensagens encaminhadas de outros hosts. Para que isso funcione corretamente, os arquivos de serviços (normalmente encontrados em / etc ) devem ter a seguinte entrada:

syslog 514 / udp

Se esta entrada estiver faltando, o syslogd não poderá receber mensagens remotas nem enviá-las, porque a porta UDP não pode ser aberta. Em vez syslogd irá morrer imediatamente, e imprimir uma mensagem de erro.

Para fazer com que as mensagens sejam encaminhadas para outro host, substitua a linha de arquivo normal no arquivo syslog.conf pelo nome do host para o qual as mensagens devem ser enviadas anexadas com um @ .

Por exemplo, para encaminhar TODAS as mensagens para um host remoto, use a seguinte entrada syslog.conf :

# Exemplo de arquivo de configuração syslogd para 
# mensagens para um host remoto encaminhar tudo. 
*.* @nome de anfitrião

Para encaminhar todas as mensagens do kernel para um host remoto, o arquivo de configuração seria o seguinte:

# Exemplo de arquivo de configuração para encaminhar todo o kernel 
# mensagens para um host remoto. 
kern. * @hostname

Se o nome do host remoto não puder ser resolvido na inicialização, porque o servidor de nomes pode não estar acessível (pode ser iniciado após o syslogd ), o syslogd tentará novamente resolver o nome dez vezes e depois reclamará. Outra possibilidade de evitar isso é colocar o nome do host em / etc / hosts .

Para evitar isso, nenhuma mensagem recebida de um host remoto é enviada para outro (ou o mesmo) host remoto. Se você tiver uma configuração na qual precisa desse comportamento, use a opção de linha de comando -h . No entanto, essa opção precisa ser tratada com cuidado, pois um loop syslog pode preencher discos rígidos rapidamente.

Se o host remoto estiver localizado no mesmo domínio que o host , o syslogd estiver em execução, apenas o nome do host simples será registrado em vez do fqdn inteiro.

Em uma rede local, você pode fornecer um servidor de log central para manter todas as informações importantes em uma máquina. Se a rede consistir em domínios diferentes, você não precisará se queixar de registrar nomes totalmente qualificados em vez de nomes de host simples. Você pode querer usar o recurso de domínio de faixa -s deste servidor. Você pode dizer ao syslogd para remover vários domínios diferentes daquele em que o servidor está localizado e registrar apenas nomes de host simples.

Usando a opção -l , também existe a possibilidade de definir hosts únicos como máquinas locais. Isso também resulta em registrar apenas os nomes de host simples e não os fqdns.

O soquete UDP usado para encaminhar mensagens para hosts remotos ou para receber mensagens deles só é aberto quando necessário. Nas versões anteriores a 1.3-23, era aberto todas as vezes, mas não para leitura ou encaminhamento, respectivamente.

Notas de segurança

Existe o potencial de o daemon syslogd ser usado como um canal para um ataque de negação de serviço . Um programa não autorizado (ou programador) poderia inundar facilmente o daemon syslogd com mensagens syslog, resultando nos arquivos de log consumindo todo o espaço restante no sistema de arquivos. A ativação do log nos soquetes do domínio inet obviamente exporá um sistema a riscos fora de programas ou indivíduos na máquina local.

Existem vários métodos para proteger uma máquina:

  1. Implemente o firewall do kernel para limitar quais hosts ou redes têm acesso ao soquete 514 / UDP.
  2. O registro pode ser direcionado para um sistema de arquivos isolado ou não raiz que, se preenchido, não prejudicará a máquina.
  3. sistema de arquivos ext2 pode ser usado, o qual pode ser configurado para limitar uma certa porcentagem de um sistema de arquivos ao uso apenas pela raiz. Observe que isso exigirá que o syslogd seja executado como um processo não raiz e evite o uso do log remoto, pois o syslogd não poderá se conectar ao soquete 514 / UDP.
  4. Desativar soquetes de domínio inet limitará o risco à máquina local.

Depuração

Quando a depuração é ativada usando a opção -d , o syslogd fica muito detalhado escrevendo muito do que faz no stdout. Sempre que o arquivo de configuração for relido e analisado novamente, você verá uma tabela correspondente à estrutura de dados interna. Esta tabela consiste em quatro campos:

númeroEste campo contém um número de série começando por zero. Este número representa a posição na estrutura de dados interna (a matriz). Se um número for deixado de fora, pode haver um erro na linha correspondente em /etc/syslog.conf .
padronizarEste campo representa exatamente a estrutura interna. Cada coluna representa um recurso de syslog . Como você pode ver, ainda existem algumas instalações que são deixadas livres para uso anterior, apenas as que são mais usadas à esquerda. Cada campo em uma coluna representa as prioridades.
açaoEste campo descreve a ação específica que ocorre sempre que uma mensagem é recebida que corresponde ao padrão.
argumentosEste campo mostra argumentos adicionais para as ações no último campo. Para log de arquivo, este é o nome do arquivo do arquivo de log; para o registro do usuário, esta é uma lista de usuários; para log remoto, esse é o nome do host da máquina na qual efetuar logon; para o log do console, esse é o console usado; para tty-log, esse é o tty especificado.

dmesg – Imprima ou controle o buffer de anel do kernel.

22 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

[email protected]

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900
[email protected]

Copyright © Linux Force Security  - Desde 2011.