Syslogd Linux e Unix Command

Sysklogd fornece dúas utilidades do sistema que fornecen soporte para o rexistro do sistema e captura de mensaxes do kernel. O soporte de tomas de dominio de internet e de unix habilita este paquete de utilidade para que admita o rexistro local e remoto.

O rexistro do sistema fornece unha versión de syslogd (8) derivada das fontes BSD de accións. O soporte para o rexistro de núcleos é subministrado pola utilidade klogd (8) que permite que o rexistro do kernel se realice de forma autónoma ou como cliente de syslogd.

Syslogd fornece unha especie de rexistro que usan moitos programas modernos. Cada mensaxe rexistrada contén polo menos un tempo e un campo de nomes de host, normalmente un campo de nome de programa, tamén, pero iso depende do confiable que sexa o programa de rexistro.

Aínda que as fontes syslogd foron moi modificadas, algunhas notas están en orde. Primeiro de todo, houbo un intento sistemático de asegurar que syslogd siga o seu comportamento BSD estándar predeterminado. O segundo concepto importante a destacar é que esta versión de syslogd interactúa de forma transparente coa versión de syslog atopada nas bibliotecas estándar. Se un binario vinculado ás bibliotecas compartidas estándar non funciona correctamente, queremos un exemplo do comportamento anómalo.

O ficheiro de configuración principal /etc/syslog.conf ou un ficheiro alternativo, dado coa opción -f , léase no inicio. Todas as liñas que comezan coa marca hash (`` # '') e as liñas baleiras son ignoradas. Se se produce un erro durante a análise ignórase a liña enteira.

Sinopse

syslogd [ -a socket ] [ -d ] [ -f ficheiro de configuración ] [ -h ] [ -l lista de host ] [ -m intervalo ] [ -n ] [ -p socket ] [ -r ] [ -s domainlist ] [ - v ] [ -x ]

Opcións

-unha toma

Usando este argumento pode especificar sockets adicionais desde que o syslogd teña que escoitar. Isto é necesario se vai deixar executar un demo nun ambiente chroot (). Podes usar ata 19 sockets adicionais. Se o seu ambiente precisa aínda máis, ten que aumentar o símbolo MAXFUNIX dentro do ficheiro fonte syslogd.c. Un exemplo dun demo chroot () é descrito pola xente de OpenBSD en http://www.psionic.com/papers/dns.html.

-d

Activa o modo de depuración. Usando isto, o daemon non procederá a unha bifurcación (2) para configurarse en segundo plano, pero fronte a que permaneza en primeiro plano e escreba moita información de depuración na tty actual. Vexa a sección DEBUGGING para obter máis información.

-f ficheiro de configuración

Especifique un ficheiro de configuración alternativo en vez de /etc/syslog.conf , que é o predeterminado.

-h

Por defecto syslogd non reenviará mensaxes que recibe de hosts remotos. Especificar este interruptor na liña de comando fará que o daemon de rexisto reenvíe as mensaxes remotas que recibe para reenviar os hosts definidos.

-la lista host

Especifique un nome de máquina que debe ser rexistrado só co seu nome de máquina simple e non o fqdn. Múltiples anfitrións pódense especificar usando o separador colon (``: '').

intervalo m

O syslogd rexistra unha marca de marca con regularidade. O intervalo predeterminado entre dúas liñas de MARK - 20 minutos. Isto pódese cambiar con esta opción. Estabelecer o intervalo a cero apágase por completo.

-n

Evite o fondo automático. Isto é necesario especialmente se o syslogd é iniciado e controlado por init (8).

-socket de p

Pode especificar un socket de dominio unix alternativo en vez de / dev / log .

-r

Esta opción permitirá que a instalación reciba unha mensaxe da rede mediante unha toma de dominio de internet co servizo syslog (ver (5)). O valor predeterminado é non recibir ningunha mensaxe da rede.

Esta opción é introducida na versión 1.3 do paquete sysklogd. Ten en conta que o comportamento predeterminado é o oposto ao comportamento das versións máis antigas, polo que pode ter que activar isto.

-s lista de dominios

Especifique un nome de dominio que debería ser eliminado antes de iniciar sesión. Múltiples dominios poden ser especificados usando o separador colon (``: ''). Ten en conta que non se poden especificar subdominios senón só dominios completos. Por exemplo, se -s North.de especifícase e o rexistro de host resolve a satu.infodrom.north.de non se cortará ningún dominio, terá que especificar dous dominios como: -s north.de:infodrom.north.de .

-v

Versión de impresión e saída.

-x

Desactive as buscas de nome cando reciba mensaxes remotas. Isto evita os bloqueos cando o servidor de nomes está a executarse na mesma máquina que executa o daemon syslog.

Sinais

Syslogd reacciona a un conxunto de sinais. Pode facilmente enviar un sinal a syslogd empregando o seguinte:

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

Sighup

Isto permite que syslogd realice unha reenicialización. Todos os ficheiros abertos están pechados, o ficheiro de configuración (por defecto é /etc/syslog.conf ) volverá a ser reenviado e as instalacións syslog (3) son reiniciadas .

SIGTERM

O syslogd morrerá.

SIGINT , SIGQUIT

Se a depuración está habilitada ignoraranse, se non, o syslogd morrerá.

SIGUSR1

Activar / desactivar a depuración. Esta opción só se pode usar se syslogd é iniciado coa opción de depuración -d .

SIGCHLD

Agarde aos nenos se naceron algúns, por mor das mensaxes de parede.

Diferenzas de sintaxe de ficheiros de configuración

Syslogd usa unha sintaxe lixeiramente diferente para o seu ficheiro de configuración que as fontes BSD orixinais. Originalmente todas as mensaxes dunha prioridade específica e superior foron reenviadas ao ficheiro de rexistro.

Por exemplo, a seguinte liña causou que todos os daemons saian da saída usando as instalacións do daemon (a depuración é a prioridade máis baixa, polo tanto, cada maior tamén coincidirá) para entrar a / usr / adm / daemons :

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

Baixo o novo esquema, este comportamento permanece igual. A diferenza é a adición de catro especificadores novos, o asterisco ( * ) comodín, o sinal de ecuación ( = ), o signo de exclamación ( ! ) Eo signo de menos ( - ).

O * especifica que todas as mensaxes para a instalación especificada serán dirixidas ao destino. Teña en conta que este comportamento é degenerado especificando un nivel de depuración prioritario. Os usuarios indicaron que a notación de asterisco é máis intuitiva.

O comodín é usado para restrinxir o rexistro na clase de prioridade especificada. Isto permite, por exemplo, o enrutamento só as mensaxes de depuración a unha fonte de rexistro particular.

Por exemplo, a seguinte liña en syslog.conf dirixiría as mensaxes de depuración de todas as fontes ao ficheiro / usr / adm / debug .

Sample syslog.conf *. = Debug / usr / adm / debug

¡O ! úsase para excluír o rexistro das prioridades especificadas. Isto afecta todas as posibilidades (!) De especificar as prioridades.

Por exemplo, as seguintes liñas rexistrarían todas as mensaxes do correo da instalación, excepto aquelas que conteñan a información de prioridade no ficheiro / usr / adm / mail . E todas as mensaxes de news.info (incluíndo) a news.crit (excluíndo) serían rexistradas no ficheiro / usr / adm / news .

# Sample syslog.conf mail. *; Mail!! = Info / usr / adm / mail news.info; news!! Crit / usr / adm / news

Podes usalo intuitivamente como un especificador de excepción. A interpretación anteriormente mencionada simplemente está invertida. Facendo que pode usar

mail.none

ou

mail.! *

ou

mail debug

para ignorar todas as mensaxes que conteñen unha instalación de correo. Hai moito espazo para xogar con el. :-)

O - só se pode empregar para prefixar un nome de ficheiro se quere omitir sincronizar o ficheiro despois de cada escritura.

Isto pode levar algunha aclimatación para os individuos utilizados para o comportamento de BSD puro, pero os testers indicaron que esta sintaxe é un pouco máis flexible que o comportamento de BSD. Ten en conta que estas modificacións non deberían afectar os ficheiros syslog.conf (5). Debes modificar específicamente os ficheiros de configuración para obter o comportamento mellorado.

Soporte para rexistro remoto

Estas modificacións proporcionan soporte de rede á instalación syslogd. O soporte de rede significa que as mensaxes poden ser reenviadas desde un nodo executando syslogd a outro nodo executándose syslogd onde se rexistrarán realmente nun ficheiro de disco.

Para habilitar isto debes especificar a opción -r na liña de comandos. O comportamento predeterminado é que syslogd non escoitará a rede.

A estratexia é ter que escoitar syslogd nun socket de dominio de Unix para mensaxes de rexistro xeradas localmente. Este comportamento permitirá a syslogd interactuar co syslog atopado na biblioteca C estándar. Ao mesmo tempo, syslogd escoita o porto syslog estándar para as mensaxes enviadas desde outros hosts. Para ter este traballo correctamente os ficheiros de servizos (5) (normalmente atopados en / etc ) deben ter a seguinte entrada:

syslog 514 / udp

Se falta esta entrada syslogd nin pode recibir mensaxes remotas nin envialas, porque non se pode abrir o porto UDP. Pola contra, syslogd morrerá de inmediato e explotará unha mensaxe de erro.

Para que as mensaxes sexan reenviadas a outro servidor, substitúa a liña de ficheiro normal no ficheiro syslog.conf co nome do servidor ao que se enviarán as mensaxes prependidas cun @.

Por exemplo, para reenviar TODAS as mensaxes a un servidor remoto empregando a seguinte entrada syslog.conf :

# Sample syslogd ficheiro de configuración a # mensaxes a un servidor remoto adiante todo. *. * @hostname

Para reenviar todas as mensaxes do kernel a un servidor remoto o ficheiro de configuración sería o seguinte:

# Ficheiro de configuración de mostra para reenviar todas as mensaxes do kernel # a un servidor remoto. kern. * @hostname

Se o nome de servidor remoto non se pode resolver no inicio, porque o nome-servidor pode non ser accesible (pódese iniciar despois de syslogd) non se preocupe. Syslogd volverá a tentar resolver o nome dez veces e logo reclamar. Outra posibilidade para evitar isto é poñer o nome de máquina en / etc / hosts .

Co syslogd normal s obtéses syslog-loops se envias mensaxes recibidas dun servidor remoto ao mesmo host (ou máis complicado para un terceiro servidor que o envía de volta ao primeiro, etc.). No meu dominio (Infodrom Oldenburg) accidentalmente conseguimos un e os nosos discos cheos coa mesma mensaxe. :-(

Para evitar isto en máis tempos, as mensaxes que se recibiron dun servidor remoto envíanse a outro host remoto (ou o mesmo). Se hai escenarios onde isto non ten sentido, déixeme (Joey) unha liña.

Se o servidor remoto está situado no mesmo dominio que o servidor, syslogd está a executarse, só o sinxelo nome de servidor será rexistrado en vez do fqdn enteiro.

Nunha rede local pode proporcionar un servidor de rexistro central para ter toda a información importante nunha máquina. Se a rede está formada por diferentes dominios, non tes que queixarte de rexistrar nomes totalmente cualificados en lugar de nomes de servidor simples. Pode querer usar as características do dominio de strip -s deste servidor. Pódese dicir ao syslogd que elimine varios dominios distintos ao que está situado no servidor e só rexistra nomes de anfitrións simples.

Usando a opción -l tamén existe a posibilidade de definir hosts individuais como máquinas locais. Isto tamén resulta en rexistrar só os seus nomes de servidor simples e non os fqdns.

O socket UDP usado para reenviar mensaxes a servidores remotos ou para recibir mensaxes a partir deles só se abre cando se necesita. Nos lanzamentos anteriores ao 1.3-23 abriuse cada vez pero non se abriu para ler ou reenviar respectivamente.

Saída a tubulacións con nome (FIFO)

Esta versión de syslogd ten soporte para a saída de rexistro en canles nomeados (fifos). Un canle fifo ou nomeado pódese usar como destino para as mensaxes de rexistro prependindo un símbolo pipy (`` | '') ao nome do ficheiro. Isto é útil para depurar. Lembre que o fifo debe ser creado co comando mkfifo antes de que se inicie o syslogd.

As seguintes rutas de ficheiro de configuración borran as mensaxes do kernel a un fifo:

# Configuración de mostra para percorrer a depuración do kernel # mensaxes SOLAMENTE a / usr / adm / debug que é un tubo chamado #. kern. = debug | / usr / adm / debug

Problemas de instalación

Probablemente haxa unha consideración importante ao instalar esta versión de syslogd. Esta versión de syslogd depende do formato correcto das mensaxes pola función syslog. O funcionamento da función syslog nas bibliotecas compartidas cambiou nalgún lugar da rexión de libc.so.4. [2-4] .n. O cambio específico foi anular a mensaxe antes de transmitilo ao fío / dev / log . O funcionamento axeitado desta versión de syslogd depende da terminación nula da mensaxe.

Normalmente, este problema maniféstase se se están a usar os binarios vinculados estáticamente no sistema. Os binarios que usan versións antigas da función syslog farán que se sigan as liñas baleiras seguidas da mensaxe coa eliminación do primeiro carácter da mensaxe. Desactivar estes binarios ás versións máis recentes das bibliotecas compartidas corrixirá este problema.

Tanto o syslogd (8) como o klogd (8) poden executarse desde init (8) ou comezar como parte da secuencia rc * *. Se se inicia desde o comezo, a opción -n debe estar configurada, se non, recibirá moitas toneladas de syslog iniciadas. Isto ocorre porque init (8) depende da ID do proceso.

Ameazas de seguridade

Existe o potencial de que o daemon syslogd sexa usado como un canal para un ataque de denegación de servizo. Grazas a John Morrison (jmorriso@rflab.ee.ubc.ca) por alertarme a este potencial. Un programa deshonesto (mer) podería inundar moi fácilmente o daemon syslogd con mensaxes syslog, obtendo os ficheiros de rexistro que consumen todo o espazo restante no sistema de ficheiros . Activar o rexistro sobre os soquetes do dominio inet, por suposto, expón un sistema a riscos fóra dos programas ou individuos da máquina local.

Existen varios métodos de protección dunha máquina:

  1. Implementa o kernel firewalling para limitar que hosts ou redes teñen acceso ao enchufe 514 / UDP.
  2. O rexistro pode dirixirse a un sistema de ficheiros illado ou non raíz que, se se enche, non afectará a máquina.
  3. O sistema de ficheiros ext2 pódese usar que pode ser configurado para limitar só unha raíz a certa porcentaxe dun sistema de ficheiros. NOTA de que isto requirirá que o syslogd se execute como un proceso non raíz. TAMBIÉN NOTA que isto evitará o uso do rexistro remoto desde que syslogd non poderá unirse ao enchufe 514 / UDP.
  4. Deshabilitar os enchufes do dominio inet limitará o risco para a máquina local.
  5. Use o paso 4 e se o problema persiste e non é secundario a un programa / daemon deshonesto obtén unha lonxitude de 3,5 pés (aproximadamente 1 metro) de vara de succión * e ten un chat co usuario en cuestión. Define a varilla suave. --- 3/4, 7/8 ou 1 in. varilla de aceiro endurecido, macho roscado en cada extremo. O uso primario na industria do petróleo no oeste de Dakota do Norte e noutros lugares para bombear o petróleo de pozos de petróleo. Os usos secundarios son para a construción de piensos de gando e para xestionar o individuo ocasionalmente recalcitrante ou belixerante.

Depuración

Cando a depuración está activada empregando a opción -d , syslogd será moi detallado escribindo moito do que fai no stdout. Sempre que o ficheiro de configuración se religa e volva a analizar, verá unha tabulación, correspondente á estrutura de datos interna. Este tabular consta de catro campos:

número

Este campo contén un número de serie que comeza con cero. Este número representa a posición na estrutura de datos interna (é dicir, a matriz). Se se deixa un número, pode haber un erro na liña correspondente en /etc/syslog.conf .

patrón

Este campo é complicado e representa exactamente a estrutura interna. Cada columna representa unha instalación (consulte syslog (3)). Como podes ver, aínda hai algunhas instalacións que quedan libres para o seu uso anterior, só se usan a maioría de esquerdas. Cada campo dunha columna representa as prioridades (consulte syslog (3)).

acción

Este campo describe a acción particular que ten lugar sempre que se recibe unha mensaxe que coincide co estándar. Consulte a páxina do sistema syslog.conf (5) para todas as accións posibles.

argumentos

Este campo mostra argumentos adicionais para as accións no último campo. Para o rexistro de ficheiros este é o nome do ficheiro do ficheiro de rexistro; para o rexistro de usuarios esta é unha lista de usuarios; para o rexistro remoto este é o nome de máquina da máquina para iniciar sesión; para consola-logging esta é a consola usada; para tty-logging isto é o tty especificado; A parede non ten argumentos adicionais.

Ver tamén

logger (1), syslog (2), (5)

Colaboradores

Syslogd é extraído de fontes BSD, Greg Wettstein (greg@wind.enjellic.com) realizou o porto para Linux , Martin Schulze (joey@linux.de) resolveu algúns erros e engadiu varias novas características. Klogd foi orixinalmente escrito por Steve Lord (lord@cray.com), Greg Wettstein realizou importantes melloras.

Dr Greg Wettstein
Desenvolvemento de Sistemas Enjellic

Instalación informática da división de investigación oncolóxica
Centro de Cancer Roger Maris
Fargo, ND
greg@wind.enjellic.com

Stephen Tweedie
Departamento de Informática
Universidade de Edimburgo, Escocia
sct@dcs.ed.ac.uk

Juha Virtanen
jiivee@hut.fi

Shane Alderton
shane@ion.apana.org.au

Martin Schulze
Infodrom Oldenburg
joey@linux.de

Importante: use o comando man ( % home ) para ver como se usa un comando na súa computadora particular.

Artigos relacionados