Syslog - syslog da rede. Arquivos de log do Linux em ordem Qual ID de syslog tem a prioridade mais alta

Demônio em Unix ligue para o programa que funciona "no fundo" sem a necessidade de controle de terminal e dando a você a capacidade de fazer seu outro trabalho "em primeiro plano". O daemon pode ser iniciado por outro processo, por exemplo, por um dos scripts de inicialização do sistema sem acessar nenhum terminal de controle, ou pelo usuário de algum terminal, mas neste caso daemon "não assume" terminal durante o seu trabalho. Naturalmente, surge a pergunta: quais daemons são necessários em seu sistema e quais podem ser desabilitados.

Origem do termo
No mundo real (isto é, não-computador), o termo (ou palavra) "demônio" denota um espírito (na maioria das vezes - um maligno) ou uma "voz interior". É importante notar que ambos os valores se aplicam a programas daemon do Unix também. Como demônios mitológicos, daemons Unix se escondem nos bastidores, tentando permanecer invisíveis. E, como a voz interior ou o nosso subconsciente, estão sempre “alertas”, sempre disponíveis, podem sempre “manifestar-se”. A própria palavra "demônio" representa uma dessas siglas de computador, cuja origem é tão difícil de descobrir quanto decidir se havia uma galinha ou um ovo no começo. Presumivelmente este termo ("DAEMON") vem das palavras "Disk And Execution MONitor" programa.

Tendo decidido estudar o assunto, procurei um padre que usa um computador com sistema operacional Ubuntu. Por precaução, peguei um disco com o Windows. Nunca se sabe ... Sou uma pessoa simples, não rodei as rodeios, dei imediatamente todas as informações. Explicado por muito tempo e em detalhes. Para minha grande felicidade, ele levou tudo com calma, em alguns lugares, enquanto eu falava, ele até sorriu, principalmente quando contou sobre os motivos da recusa do marido da minha irmã em ubuntu. Pai, homem normal, já está com 50 anos, conversamos um pouco mais, ou melhor, eu conversei, para entender que ele havia assimilado bem o que eu falei. Depois do que ele me disse, não me lembro literalmente, mas não pensei em gravar em um gravador, então vou descrever com minhas próprias palavras. Em geral, não há nada de errado com o fato desse termo ser usado no Linux, o principal é a fé em Deus.

Introdução aos serviços

Daemons referenciados por /etc/init.d são projetados para rodar no Linux como um serviço ou serviço. Serviços são programas iniciados e interrompidos por meio de scripts init localizados no diretório /etc/init.d. Muitos desses serviços são iniciados durante a fase de inicialização do sistema. O utilitário / sbin / service fornece uma interface de usuário (interação) com scripts de inicialização. E esses próprios scripts fornecem uma interface para gerenciar serviços, fornecendo ao usuário opções para iniciar, parar, reiniciar, consultar o status do serviço e executar outras ações no serviço. Por exemplo, o script init do serviço httpd tem as seguintes opções:

/ sbin / service httpd Uso: httpd (start | stop | restart | condrestart | reload | status | fullstatus | graceful | help | configtest)

Você pode visualizar o estado atual de todos os serviços do sistema usando a seguinte opção do utilitário de serviço:

/ sbin / service --status-all acpid (pid 2481) está rodando ... anacron (pid 2647) está rodando ... atd (pid 2657) está rodando ... auditd (pid 2189) está rodando ...

As informações sobre o nível de execução desses serviços, ou seja, a configuração em qual dos níveis de execução do sistema um serviço específico é iniciado no momento da inicialização, podem ser obtidas ou alteradas usando o utilitário chkconfig. Vejamos, por exemplo, as configurações atuais do serviço de registro do sistema syslog:

/ sbin / chkconfig --list syslog syslog 0: desligado 1: desligado 2: ligado 3: ligado 4: ligado 5: ligado 6: desligado

Vemos que o serviço syslog inicia automaticamente quando vamos para os níveis 2, 3, 4 e 5. Para desabilitá-lo a partir dos níveis 3 e 4 (não é uma boa ideia, a propósito), você pode usar a seguinte opção de o comando chkconfig:

/ sbin / chkconfig --levels 34 syslog desligado

O utilitário / usr / bin / system-config-services fornece uma interface gráfica para os serviços do sistema que permite visualizar e modificar seu estado atual, bem como configurá-los para execução em diferentes níveis de execução

Vamos ver como esses serviços e daemons aparecem na saída do comando ps. Aqui está um breve trecho:

UID PID PPID C STIME TTY TIME CMD root 1 0 0 23:36? 00:00:00 init root 2161 1 0 23:37? 00:00:00 auditd root 2177 1 0 23:37? 00:00:00 syslogd -m 0 root 2180 1 0 23:37? 00:00:00 klogd -x root 2207 1 0 23:37? 00:00:00 mcstransd root 2254 1 0 23:37? 00:00:00 rpc.statd root 2287 1 0 23:37? 00:00:00 rpc.idmapd root 2577 1 0 23:37? 00:00:00 raiz crond 2631 1 0 23:37? 00:00:00 / usr / sbin / atd root 2654 1 0 23:37? 00:00:00 rhnsd --interval 240

O que é interessante notar aqui (além, é claro, que me sentei muito tarde no computador hoje)? Para cada um dos daemons, o identificador do processo pai (PPID) é 1. Isso indica que os daemons foram iniciados por init no momento da inicialização.

Este resultado pode ser visto mais claramente na saída de um comando tão útil como "pstree", que exibe a "árvore" de processos com a indicação de "pais". Aqui está um pequeno trecho da saída do pstree:

Init- + | -NetworkManager --- 2 * [(NetworkManager)] | -NetworkManagerD | -acpid | -atd | -auditd - + - python | `- (auditd) | -avahi-daemon --- avahi-daemon | -bonobo-activati ​​--- (bonobo-activati) | -crond | -cupsd --- cups-polld | -2 * | -dbus -launch | -dhcdbd --- dhclient

Mais sobre daemons em seu sistema

Terminamos com as informações introdutórias. Agora vamos falar sobre daemons do sistema isoladamente e ver quais você pode experimentar com segurança. Novamente, esta postagem é sobre um sistema executando o Red Hat Enterprise Linux Beta 2 em uma configuração de estação de trabalho. Dependendo das especificações do seu sistema, você pode ver mais ou menos daemons, incluindo alguns que não são abordados aqui.

As descrições de cada daemon incluem links para sites onde você pode obter mais informações, mas ainda é melhor começar a aprender sobre o daemon examinando as respectivas páginas de manual. O "Reilly tem uma excelente lista alfabética de comandos do Linux, e wikipedia.org também tem seções sobre a maioria desses daemons. Não se esqueça de olhar os arquivos README.

É o serviço de configuração avançada e interface de energia (ACPI). ACPI é um padrão aberto da indústria que define ações de gerenciamento de sistema, principalmente definição de dispositivo plug-and-play e gerenciamento de energia, incluindo ações quando o sistema inicia, para e quando ele entra em um modo de baixo consumo de energia.

Você provavelmente não deve desabilitar este serviço, a menos que esteja fazendo isso para fins de depuração ou para resolver problemas de hardware.

Mais informações: http://www.acpi.info

Se você estiver usando um laptop, como muitas pessoas fazem atualmente, um dos problemas é que quando você pede ao cron daemon para fazer algo, você nem sempre tem certeza de que seu computador estará ligado no momento em que a execução é tarefas agendadas. Anacron (este nome vem de "cron anacrônico", que significa algo como "cron obsoleto") resolve este problema verificando se as tarefas foram executadas dentro de um determinado período de tempo. Por exemplo, o anacron iniciará uma tarefa se não tiver sido iniciada por um determinado número de dias.

Quando você pode parar de usar o anacron? Se o seu sistema estiver funcionando constantemente.
Você pode simplesmente se recusar a executar o cron se tiver o anacron em execução? Não; para o anacron, o período de reinicialização da tarefa só pode ser especificado em dias, não em minutos e segundos.

Informação adicional:

É o daemon de gerenciamento avançado de energia (APM) por meio de um driver no BIOS. O padrão APM e o daemon apmd agora foram substituídos por ACPI e acpid. Se o seu hardware suporta ACPI, você não precisa executar o apmd.

Este é um daemon para iniciar trabalhos em um horário especificado. Se você não o estiver usando, é bem possível desativá-lo.

Este daemon monta automaticamente os discos e sistemas de arquivos que são definidos no arquivo de configuração. O uso deste daemon torna mais fácil trabalhar com discos removíveis.

Mais informações: http://freshmeat.net/projects/autofs

O sistema de auditoria do Linux consiste em registradores de chamadas do sistema em nível de kernel e coleta de log do espaço do usuário e ferramentas de visualização. O daemon auditd grava mensagens registradas no disco. Auditd é configurável, permitindo que você controle e gerencie quais informações são armazenadas no disco.

O auditd deve ser mantido em execução? As informações dos logs podem ser muito úteis na configuração de tudo relacionado à segurança do sistema. Por exemplo, auditd é usado no registro de eventos SELinux. Existem também utilitários, como o aureport, que permitem que você visualize os logs de auditoria. Aqui está um exemplo de um relatório gerado pelo utilitário aureport:

Relatório de Resumo
======================

Intervalo de tempo nos registros: 28/11/2006 06: 07: 04.800 - 06/02/2007 21: 10: 09.957 Tempo selecionado para o relatório: 31/12/1969 19:00:00 - 06/02/2007 21: 10: 09.957 Número de alterações na configuração: 285 Número de alterações em contas, grupos ou funções: 32 Número de logins: 145 Número de logins com falha: 11 Número de usuários: 2 Número de terminais: 22 Número de nomes de host: 11 Número de executáveis: 27 Número de arquivos: 91 Número de negações AVC: 688 Número de eventos MAC: 12 Número de syscalls com falha: 404 Número de eventos de anomalia: 0 Número de respostas a eventos de anomalia: 0 Número de eventos de criptografia: 0 Número de processo IDs: 14022 Número de eventos: 70694 Avahi-daemon e avahi-dnsconfd

O site Avahi define desta forma: "Avahi é um sistema que fornece a capacidade de descobrir serviços em uma rede local. Isso significa que, uma vez que seu computador esteja conectado a uma rede local, você pode descobrir instantaneamente as impressoras disponíveis, ver quais compartilhamentos estão disponíveis na rede, descubra com quem de outros usuários da rede você pode conversar por chat e assim por diante. " Avahi é uma implementação do protocolo Zeroconf. E o Zeroconf é uma abordagem que permite aos usuários criar redes IP sem serviços de configuração especiais como servidores DNS.
Na maioria das vezes, avahi-daemon é usado em conjunto com o Rhythmbox para que você possa ver os arquivos de música que são compartilhados com outras pessoas. Se você não estiver compartilhando música ou arquivos de seu computador, pode desativar este daemon.

Mais informações: http://avahi.org, http://zeroconf.org

Bluetooth e os daemons hidd e pand

Os próprios nomes explicam tudo. Inicie esses serviços se quiser usar dispositivos bluetooth. O nome do daemon em execução é hcid (Host Controller Interface Daemon).

O nome do daemon hidd vem de "the Bluetooth Human Interface Device Daemon". Ele fornece suporte para teclado, mouse e trackball Bluetooth. E o pand daemon mantém seu computador conectado à rede Ethernet usando Bluetooth.

Mais informações: http://www.bluetooth.com,

Este daemon suporta a Interface de programação de aplicativo ISDN comum. Ele deve ser executado se você estiver se conectando a componentes de hardware ISDN. Este serviço inicia capiinit.

Mais informações: http://www.capi.org/pages

Não, não tem nada a ver com as transmissões noturnas de investimentos imobiliários. O serviço conman (e o daemon conmand) oferece suporte ao gerenciamento do console. Fornece suporte para vários dispositivos de console e trabalho de usuário simultâneo, suporte para dispositivos seriais locais e servidores de terminal remotos (via protocolo telnet). Se você estiver gerenciando vários servidores, pode precisar do conman.

Mais informações: http://home.gna.org/conman/
Velocidade da cpu

Este demônio muda a velocidade do trabalho unidade central de processamento a fim de reduzir o consumo de energia. Se a CPU estiver ociosa, você pode reduzir a velocidade, diminuindo assim o consumo de energia e, para aumentar o desempenho, você deve aumentar o consumo de energia. Se você trabalha para computador portátil, faz sentido executar o cpuspeed.

Mais informações: http://carlthompson.net/Software/CPUSpeed
crond

Este daemon é usado para iniciar tarefas automaticamente. Isso é necessário em todos os sistemas Linux e Unix. Não pare ou desative este serviço.

Mais informações: http://www.unixgeeks.org/security/newbie/unix/cron-1.html, http://www.linuxhelp.net/guides/cron/

CUPS e cups-config-daemon

É o daemon "Common UNIX Printing Solution". Como o nome sugere, é um sistema de impressão que lida com uma variedade de formatos de arquivo e tipos diferentes impressoras. Se você deseja imprimir, execute este daemon em seu sistema.

Mais informações: http://www.cups.org, http://www.easysw.com/cups/index.php

O nome deste daemon é um acrônimo para "DHcp Client D-Bus Daemon". O wiki Free DeskTop o define da seguinte maneira:

O D-Bus é um sistema de barramento de mensagens, uma maneira simples de os aplicativos se comunicarem (ou interagirem) uns com os outros. Além da comunicação entre processos, o D-Bus ajuda a coordenar o ciclo de vida do processo; fornece uma implementação simples e confiável no código da capacidade de executar uma "instância separada" de um aplicativo ou daemon, o que permite executar aplicativos e daemons sob demanda, quando surge a necessidade dos serviços apropriados.

Você precisa executar este daemon? Se o seu sistema funciona em uma rede (como poderia ser de outra forma?), Especialmente se você se mover entre redes (por exemplo, mudando de uma rede com fio para uma sem fio), então você deve iniciar o NetworkManager (veremos NetworkManager abaixo) .

O daemon dhcdbd fornece uma interface D-Bus para dhclient, um cliente DHCP do ISC. Isso permite que o NetworkManager acesse e controle o dhclient.

Mais informações: http://www.freedesktop.org/wiki/Software/dbus

Este daemon oferece a capacidade de usar o mouse em aplicativos baseados em texto, como gerenciador de arquivos Comandante da meia-noite. Isso pode ser útil se você usa o console com frequência; caso contrário, isto é, se você estiver usando o sistema X Window o tempo todo, talvez nunca precise do gpmd.

Não, este não é o computador maligno de um filme de 2001 da Odisséia no Espaço. Nesse contexto, HAL significa Hardware Abstraction Layer. O daemon HAL coleta (usando o kernel e os próprios dispositivos) informações sobre dispositivos de hardware e as apresenta aos aplicativos de maneira consistente.

Não desative este serviço. Muitos aplicativos o usam.

Mais informações: "Desktop and hardware configuration," por David Zeuthen

Este daemon fornece suporte para o sistema HP Linux Imaging and Printing (HPLIP) usado para impressão, digitalização e envio de fax em jato de tinta e dispositivos a laser da HP. O HPLIP interage com o CUPS, fornecendo a este último acesso aos dispositivos da HP.

Informação adicional:

É um daemon para bancos de dados relacionais em Java. Ele herdou seu nome do projeto Hypersonic SQL, que não é mais suportado. O hsqldb é amplamente usado em projetos de código aberto, como o OpenOffice.org, bem como em demos, pois pode ser executado inteiramente na RAM. Devido ao que funciona rapidamente. Você precisa executar este serviço? Somente se você executar quaisquer programas que o utilizem. Mas na verdade é muito ferramenta útil e, se você não estiver familiarizado com ele, vale a pena dar uma olhada.

Mais informações: http://hsqldb.org, http://dba.openoffice.org

Servidor da web Apache. Usado por quase 60% de todos os sites. Se você quiser manter um site, execute o Apache. Eu preciso dizer mais alguma coisa?

Mais informações: http://httpd.apache.org

ip6tables e iptables

Estes são firewalls ou firewalls. De acordo com a Wikipedia, "Um firewall ou firewall (jargão. Firewall ou firewall do inglês. Firewall) é um conjunto de ferramentas de hardware e / ou software que controlam e filtram os pacotes de rede que passam por ele em vários níveis do modelo OSI de acordo com regras especificadas. firewall é proteção redes de computadores ou nós individuais de acesso não autorizado. "

Iptables funciona definindo regras de filtragem de pacotes IPv4 na forma de uma tabela de kernel. Os pacotes de entrada e saída são verificados de acordo com essas regras, e aqueles que não correspondem às regras são bloqueados. Ip6tables faz o mesmo para pacotes IPv6.

Qual dos dois serviços você deseja executar? Ambos. É sempre. A rede é perigosa!

Mais informações: http://www.netfilter.org, http://www.ipv6.org

IrDA (Infrared Data Association) é um padrão da indústria para comunicação sem fio por infravermelho entre dispositivos. A maioria dos laptops está equipada com um transmissor infravermelho compatível com IrDA. Você precisa iniciar este serviço apenas se for organizar a comunicação com outros dispositivos via infravermelho.

Informação adicional:

irqbalance

Este daemon é responsável por distribuir interrupções de hardware entre CPUs em arquiteturas de multiprocessador de processador simétrico (SMP) para melhorar o desempenho.

Não há necessidade de executar este daemon em sistemas uniprocessadores; ele afeta apenas sistemas multiprocessadores.

Mais informações: http://www.irqbalance.org

É um daemon muito útil. Ele é executado no momento da inicialização e verifica quais dispositivos de hardware foram adicionados ou removidos do sistema. Faz sentido executar o kudzu no momento da inicialização, mesmo se você não planeja adicionar ou remover dispositivos com frequência. Porque, mais cedo ou mais tarde, você se encontrará em uma situação em que adiciona um dispositivo e espera que o sistema o detecte. Além disso, como o kudzu é executado no momento da inicialização, ele não afeta negativamente o desempenho do sistema.

Mais informações: http://fedora.redhat.com/projects/additional-projects/kudzu

Este daemon obtém o nome do servidor de informações da Lan. O Lisa fornece funcionalidade semelhante à fornecida pelo serviço Network Neighborhood no MS-Windows, ou seja, fornece acesso a servidores em sua rede local, incluindo servidores CIFS (Common Internet File Systems). lisa é executado em TCP / IP, enviando solicitações ICMP para endereços IP no intervalo que você especificou no arquivo de configuração e aguardando a resposta dos computadores.

Mais informações: http://docs.kde.org/stable/en/kdenetwork/lisa, http://docs.kde.org/userguide/networking-with-windows.html,

lm_sensors

Este daemon monitora temperaturas e tensões na placa-mãe. Para que o sistema de monitoramento funcione, é necessário que haja sensores adequados no equipamento. Só faz sentido iniciar este daemon se o suporte de hardware for fornecido. Você provavelmente não deve executá-lo em estações de trabalho normais. Em vez disso, é necessário em servidores hi-end que executam funções críticas.

Mais informações: http://www.lm-sensors.org, http://freshmeat.net/projects/lm_sensors

Mcstrans

Daemon do Sistema de Tradução de Contexto SELinux. Este daemon converte informação de contexto de segurança em forma legível por humanos. Você pode parar este daemon, mas se assim for, verá as informações do SELinux exibidas pela alteração do comando ls -Z. Por exemplo, com o daemon em execução, você verá:

Ls -Z -rw-r - r-- jsmith jsmith user_u: object_r: user_home_t bookmarks.html drwxr-xr-x jsmith jsmith user_u: object_r: user_home_t Desktop -r-xr-xr-x jsmith jsmith user_home: object_rt hello -r - r - r-- jsmith jsmith user_u: object_r: user_home_t hello.c

E se o daemon for interrompido, você verá o seguinte:

Ls -Z -rw-r - r-- jsmith jsmith user_u: object_r: user_home_t: s0 bookmarks.html drwxr-xr-x jsmith jsmith user_u: object_r: user_home_t: s0 Desktop -r-xr-xr-x jsmith usuário jsmith: object_r: user_home_t: s0 hello -r - r - r-- jsmith jsmith user_u: object_r: user_home_t: s0 hello.c

Observe que, se o daemon for interrompido, o valor do contexto de segurança "s0" será exibido. Mctrans zerou o contexto neste caso. Outros valores de contexto de segurança são convertidos de valores alfanuméricos em seus nomes.

Mais informações: http://fedoraproject.org/wiki/SELinux/Understanding, http://danwalsh.livejournal.com

mdmonitor e mdmpd

Esses dois daemons são usados ​​em matriz redundante de sistemas de armazenamento de discos independentes / baratos (RAID). O Mdmonitor inicia, pára e reinicia o mdadm (monitoramento e gerenciamento de dispositivos multipath), um serviço de monitoramento e gerenciamento de RAID de software. Você só precisa iniciar este serviço se o seu sistema tiver dispositivos RAID.

Mais informações: http://www.linuxdevcenter.com/pub/a/linux/...12/05/RAID.html

Messagebus

É o daemon de barramento de mensagem do sistema D-BUS. Ele transmite eventos e eventos do sistema, como alterações na fila de impressão ou a adição ou remoção de dispositivos (observe que isso não é o mesmo que kudzu, pois tais eventos podem ocorrer a qualquer momento durante a operação do sistema, não apenas no estágio de inicialização )

Mais informações: http://www.freedesktop.org/software/dbus

netplugd e ifplugd

Esses daemons configuram dispositivos Ethernet quando um cabo de rede é conectado e desabilitam esses dispositivos quando o cabo é desconectado. Quando você precisa? Por exemplo, em laptops, para que seu conexões de rede restaurado apenas enquanto o cabo de rede estiver conectado.

Observe que o suporte para netplugd foi descontinuado e agora é substituído por ifplugd.

Mais informações: http://0pointer.de/lennart/projects/ifplugd

NetworkManager e NetworkManagerDispatcher

O daemon NetworkManager automatiza a alternância entre conexões de rede. Este daemon é útil para usuários de laptop que alternam entre conexões sem fio WiFi e conexões Ethernet. O daemon NetworkManagerDispatcher inicia automaticamente scripts para realizar as operações necessárias (por exemplo, scripts para definir direções de roteamento específicas para pacotes) quando o NetworkManager altera o estado da rede.

Mais informações: http://www.gnome.org/projects/NetworkManager

É um daemon que atua como um servidor de nomes de domínio. Você só deve executá-lo se o seu computador for o servidor DNS da sua rede.

Mais informações: http://www.dns.net/dnsrd

O daemon nfsd fornece suporte para o protocolo de comunicação de rede nfs, que é usado para fornecer acesso a recursos de rede em redes TCP / IP. Você precisa executá-lo se der a outros usuários acesso aos seus sistemas de arquivos usando o protocolo nfs.

Informação adicional:

Este é o daemon de armazenamento em cache para o serviço de nomes. Ele mantém uma tabela de grupos e senhas para programas em execução e, em seguida, produz um resultado lembrado na próxima solicitação de serviços que, de outra forma, são muito lentos, como NIS ou LDAP. Se você tiver esses serviços em execução, também deverá iniciar o nscd.

É um daemon que suporta o Network Time Protocol. Ele define a hora do sistema e a sincroniza com a hora definida pelos servidores da Internet que mantêm a hora de referência. Se o seu sistema estiver conectado à Internet (não está?), Este daemon irá monitorar a configuração correta da hora do sistema em seu computador.

Mais informações: http://www.ntp.org

O daemon oddjobd executa o serviço com.redhat.oddjob no barramento do sistema. Cada oportunidade fornecida por oddjobd é fornecida como método separado D-Bus. Oddjobd fornece suporte para a execução de operações privilegiadas para aplicativos não privilegiados.

Você só deve iniciar este daemon se estiver usando aplicativos que o requeiram, como o Conga.

Mais informações: http://people.redhat.com/nalin/oddjob/oddjob.html,

Este daemon oferece suporte a redes privadas virtuais (VPNs). O script de inicialização deste daemon diz o seguinte:

O OpenVPN é um aplicativo de encapsulamento robusto e altamente flexível que usa os recursos de criptografia, autenticação e certificação da biblioteca OpenSSL para encapsular com segurança uma rede IP em uma única porta UDP.

Se o seu sistema for um host VPN, você provavelmente deve executar o OpenVPN.

Mais informações: http://openvpn.net

pcscd (PC / SC Smart Card Daemon) é um daemon para o ambiente de desenvolvimento do pcsc-lite (software de acesso por cartão inteligente) e (baseado em java) MuscleCard. Ele fornece comunicação com leitores de smart card e os próprios smart cards.

(Um cartão inteligente é uma pequena placa de circuito que contém um módulo de memória ou um microprocessador com um módulo de memória. Músculo significa Movimento para o Uso de Cartões Inteligentes em um Ambiente Linux.

Mais informações: http://www.smartcardalliance.org, http://pcsclite.alioth.debian.org, http://www.linuxnet.com/musclecard/index.html

O daemon portmapper gerencia conexões RPC (chamada de procedimento remoto). Ele converte números de programas RPC em números de porta TCP / IP (ou UDP / IP). O portmapper é mais comumente usado por NFS e NIS.

Portanto, se seu sistema depende de NIS ou NFS, não desative o daemon do portmap.

Mais informações: http://www.linux-nis.org/nis-howto/HOWTO/portmapper.html

É um agente de transferência (transporte) de correio. Se o seu sistema não for um retransmissor para o sistema de e-mail, você não precisa iniciar este serviço.

Mais informações: http://www.postfix.org

Este daemon (o daemon de descoberta do roteador) encontra rotas na sub-rede local. Ele é executado no momento da inicialização para adicionar as rotas padrão às tabelas de roteamento.

Mais informações: http://www.informit.com/articles/article.asp?p=23951&rl=1

restorecond

Este é um daemon do SELinux. Restorecond monitora a criação de arquivos (para arquivos listados em /etc/selinux/restorecond.conf) e garante que os arquivos tenham o contexto de arquivo correto para a política especificada, e também define o contexto de arquivo SELinux padrão.

Não desative este serviço. É necessário para o SELinux.

Mais informações: http://fedoraproject.org/wiki/SELinux/Understanding, http://danwalsh.livejournal.com/

Este daemon verifica periodicamente quais operações devem ser realizadas por meio de interface de rede Red Hat (interface da Web do Red Hat Network) e os executa. Essas operações incluem instalação, remoção ou atualização de software, reinicialização do sistema, instalação de arquivos de configuração e assim por diante.

Mais informações: https://www.redhat.com/rhn/

rpcgssd, rpcidmapd e rpcsvcgssd

Os daemons rpcgssd e rpcsvcgssd são para segurança sobre RPC. Rpcidmapd converte nomes de usuários em números UID e GID.

Se estiver usando NFS ou NIS, você deve ter esses daemons em execução.

Informação adicional:

readahead_early e readahead_later

O daemon readahead garante que os programas de inicialização sejam carregados na memória antes de serem usados, o que reduz o tempo de inicialização.

Saslauthd

Este é o daemon do servidor de autenticação SASL. SASL (Simple Authentication and Security Layer) adiciona recursos de autenticação a protocolos baseados em conexões remotas.

Mais informações: http://asg.web.cmu.edu/sasl

enviar correio

É um servidor SMTP (Simple Mail Transfer Protocol). O Sendmail encaminha o correio de um sistema para outro, ou seja, é um Agente de Transporte de Correio. Se você estiver usando programas de email como Thunderbird ou Evolution, você não precisa executar o sendmail.

Mais informações: http://www.sendmail.org

setroubleshoot

Este é o daemon de resolução de problemas do SELinux. O Setroubleshooter é uma das grandes inovações recentes do SELinux. O Setroubleshooter fornece feedback em tempo real aos usuários sobre falhas do SELInux AVC (Access Vector Cache). Além disso, esse feedback é fornecido em um formato conveniente.

Mais informações: https://hosted.fedoraproject.org/projects/setroubleshoot

Este daemon monitora as leituras dos sensores SMART (Self-Monitoring, Analysis and Reporting Technology) instalados em muitos tipos de unidades, por exemplo, em discos rígidos SCSI-3. O daemon monitora a operação normal de tais dispositivos e executa um autoteste. Se o seu hardware oferece suporte à tecnologia SMART, você precisa iniciar este serviço.

Informação adicional:

Spamassassin

Este daemon usa o programa Apache SpamAssassin para verificar se há spam no e-mail. Geralmente é executado em conjunto com um servidor de agente de envio de correio (MDA). Se estiver usando programas cliente como Thunderbird ou Evolution para acessar seu e-mail, você não precisa executar o spamassassin.

Mais informações: http://spamassassin.apache.org

Este é um daemon para o protocolo ssh aberto. Ssh substitui os programas inseguros rsh e rlogin e fornece conexões criptografadas entre hosts em redes inseguras. Se você estiver usando conexões com outros sistemas pela Internet aberta, você deve usar o ssh e executar este daemon.

Mais informações: http://www.ssh.com, http://www.openssh.com

syslog é o sistema de registro padrão do Linux. Não desligue.

Mais informações: http://www.syslog.org

Este daemon faz parte do pacote Samba. Ele permite que usuários de domínio do Windows se conectem como usuários Unix a servidores Unix. Este daemon deve ser iniciado quando você estiver lidando com uma rede mista de computadores Windows e Linux / Unix.

Mais informações: http://www.samba.org/samba/docs/man/Samba-...on/winbind.html, http://www.samba.org

Este é um servidor de fontes. Este daemon carrega fontes na memória para que os aplicativos gráficos sejam executados mais rapidamente do que carregar fontes do disco rígido. Este serviço deve ser iniciado para melhorar o desempenho dos aplicativos em seu sistema.

Mais informações: http://linuxreviews.org/howtos/xfree/xfs

Este serviço liga o cliente NIS ao domínio NIS. As letras "yp" em seu nome vêm das "páginas amarelas", já que os diretórios NIS são como os diretórios telefônicos das páginas amarelas. Você só precisa iniciar este serviço se o seu sistema usar NIS (Network Information Service) para fornecer acesso aos orçamentos dos usuários e nomes de sistema.

Mais informações: http://www.linux-nis.org

yum-updatesd

yum-updatesd monitora a disponibilidade de atualizações de software e envia notificações dessas atualizações por e-mail, d-bus ou mensagens do sistema, e também pode produzir atualização automática SOBRE. As mensagens do barramento D são recebidas pelo utilitário "puplet" (atualizador de pacote), que informa ao usuário que uma atualização está disponível e também permite que ele instale a atualização.

Mais informações: http://linux.duke.edu/projects/yum, http://www.redhat.com/magazine/024oct06/features/fc62

Graças a ZOOL pelas informações fornecidas no site http://www.centrlan.ru/node/17929

Fonte não especificada

Cada um dos usuários novatos do Linux, mais cedo ou mais tarde, encontra alguns problemas para configurar e organizar o funcionamento de seu sistema. E cada um dos novatos quase certamente ouviu de usuários mais experientes o conselho: "Olhe os registros." Esse conselho é bom, mas um iniciante ainda precisa saber: o que são logs e onde encontrá-los! Portanto, tentarei neste artigo dizer o que e onde procurar.

Na gíria de programação, "logs" são os protocolos de trabalho mantidos pelo próprio sistema operacional e de forma independente por vários programas. A palavra "log" é freqüentemente usada como sinônimo da palavra "protocolo" neste sentido. Existem duas situações principais em que se torna necessário analisar o protocolo: quando algo no sistema não funciona como esperávamos (resolução do problema), e quando existe a suspeita de que o sistema foi hackeado por algum intruso e é necessário para descobrir o que exatamente aconteceu, como foi feito e o que precisa ser feito para lidar com as consequências da invasão.

Um dos casos mais famosos de uso de arquivos de log para detectar intrusão de um invasor é a história da captura pelo especialista em segurança de computadores Tsuomo Shimomura do famoso hacker Kevin Mitnick. Aqui está um parágrafo de um artigo que descreve como isso aconteceu.

“No dia de Natal, quando Shimomura foi esquiar em Nevada nas férias, alguém (já sabemos quem) invadiu seu computador super-seguro em Solana Beach, Califórnia, e começou a copiar seus arquivos - centenas de arquivos classificados. Do San Diego O Supercomputer Center, onde Shimomura trabalhava, notou mudanças nos arquivos "log" (log) do sistema e rapidamente percebeu o que estava acontecendo com um computador de backup em San Diego. O aluno ligou para Shimomura e ele correu para casa para fazer um inventário dos bens roubados . "

Não contarei aqui toda a história, é importante observarmos apenas que a análise dos protocolos de operação do sistema serviu de base para o sucesso da investigação das ações ilegais. Uma descrição mais detalhada de como essas investigações são realizadas pode ser encontrada no artigo. Mas para poder usar os resultados do registro, você precisa entender como os protocolos são criados, onde são armazenados e o que pode ser extraído deles. Este artigo é dedicado à consideração de todas essas questões.

Como as mensagens são geradas para o protocolo

Precisamos começar com o fato de que ao criar programas na linguagem C, os programadores têm a oportunidade, se necessário, de inserir uma chamada de funções especiais openlog, setlogmask, syslog e closelog incluído na biblioteca padrão C. Estas funções são usadas para enviar mensagens sobre certos eventos durante a execução do programa para um daemon especial do sistema syslogd liderando o protocolo do sistema. Função openlog estabelece uma conexão com um demônio syslogd função syslog gera uma mensagem específica a ser escrita no protocolo, e a função closelog fecha um link aberto.

Mensagens geradas pela função syslog, consistem em vários campos separados por espaços. Cada mensagem começa com um campo PRI, que codificou informações sobre a categoria do recurso e o nível de gravidade ou prioridade da mensagem.

A categoria (facilidade) é a informação sobre a qual classe pertence a mensagem dada. A categoria é codificada com um número de 0 a 23. Existem as seguintes categorias (elas são definidas no arquivo /usr/include/sys/syslog.h):

Tabela 1.

Valor numéricoSímboloDecifrar
0 kern Mensagens de kernel
1 do utilizador Destinado a mensagens diversas de programas de usuário. (Mensagens de programas de usuário)
2 correspondência Mensagens do sistema postal.
3 demônio Mensagens desses daemons do sistema, que, ao contrário do FTP ou LPR, não têm categorias específicas.
4 auth Tudo relacionado à autorização do usuário, como login e su (segurança / direitos de acesso)
5 syslog O sistema de registro pode registrar mensagens de si mesmo.
6 lpr Mensagens do sistema de impressão.
7 notícias Mensagens do servidor de notícias. (Netnews, USENET)
8 uucp Mensagens do protocolo de cópia de UNIX para UNIX. Isso faz parte da história do UNIX e muito provavelmente você nunca precisará dele (embora alguns emails sejam entregues via UUCP).
9 cron Mensagens do planejador do sistema.
10 authpriv O mesmo que auth, mas as mensagens nesta categoria são gravadas em um arquivo que apenas alguns usuários podem ler (talvez esta categoria esteja destacada porque as mensagens pertencentes a ela podem conter senhas de usuário abertas que não devem ser vistas por pessoas não autorizadas e, portanto, o os arquivos de log devem ter as permissões apropriadas).
11 ftp Através desta categoria você pode configurar seu servidor FTP para registrar suas ações.
de 12 a 15 - Reservado para uso do sistema.
de 16 a 23local0 - local7 Categorias reservadas para uso pelo administrador do sistema. A categoria local7 geralmente é usada para mensagens geradas durante a fase de inicialização do sistema.

Categoria auth tem um sinônimo obsoleto segurança que não é recomendado para uso. Além disso, existe uma categoria especial marca(não tem equivalente digital), que é atribuído a mensagens individuais geradas pelo próprio daemon syslogd... Esta categoria é utilizada para colocar marcas especiais no protocolo em um intervalo de tempo especificado (por padrão, a cada 20 minutos), o que permite, por exemplo, saber com precisão de 20 minutos quando o computador está congelado.

Observe que a categoria geralmente não tem nada a ver com o nome do programa que envia mensagens para o daemon. syslogd... Como se costuma dizer, qualquer coincidência é pura coincidência. Além disso, alguns programas podem gerar mensagens de diferentes categorias. Por exemplo, demônio telnetd em caso de tentativas de registro malsucedidas, gera mensagens de categoria authpriv e, em outros casos, categoriza suas postagens demônio.

O segundo parâmetro, com base no qual o valor do campo é formado PRI, é o nível ou prioridade da mensagem (prioridade), ou seja, a informação sobre o grau de importância da mensagem. 8 níveis de gravidade são definidos como padrão (eles também são definidos no arquivo /usr/include/sys/syslog.h), que são codificados com números de 0 a 7:

Mesa 2.

Valor numéricoSímbolo Decifrar
0 emergir(nome antigo PANIC) Emergência. O sistema está inoperante.
1 alerta Ansiedade! É necessária intervenção imediata.
2 crit Erro fatal (condição crítica).
3 errar(nome antigo ERROR) Mensagem de erro.
4 aviso(nome antigo WARN)Aviso.
5 perceber Informações sobre algum evento normal, mas importante.
6 informação Anúncio.
7 depurar Mensagens geradas durante a depuração.

Campo PRI a mensagem é formada da seguinte forma: o valor numérico da categoria é multiplicado por 8 e adicionado ao valor numérico da prioridade, o número resultante é colocado entre colchetes angulares e escrito no campo.

Seguindo o campo PRI Os seguintes campos estão incluídos na mensagem:

  • TIMESTAMP- tempo de formação da mensagem,
  • NOME DE ANFITRIÃO- nome do host ou endereço IP em notação decimal,
  • MSG- texto arbitrário da mensagem - algum texto (informativo) no código US-ASCII (0x20 - 0x7e).

Hora (local!) Está escrita no formato: 13 de fevereiro 21:12:06. Se o número do dia for um número de um dígito, um espaço adicional é colocado na frente dele (não 0!). Preste atenção na ausência de ano e zona na data, o que deve ser levado em consideração na hora de organizar armazenamento de longo prazo arquivos de log. Para que a hora na mensagem seja correta, ela deve ser sincronizada (por exemplo, usando o protocolo NTP).

O nome do host é incluído na mensagem para não confundir mensagens de hosts diferentes, uma vez que, como será mostrado a seguir, o log pode ser feito em um dos computadores dedicados da rede. O nome do host é o nome de rede simples do computador, sem especificar o domínio. Se um computador tiver várias interfaces com diferentes endereços IP, qualquer um deles pode ser usado como o nome ou endereço do host.

Mensagem de texto ( MSG) geralmente contém um rótulo ( MARCAÇÃO), apontando para o programa ou processo que emitiu esta mensagem e o corpo da mensagem ( CONTENTE) O rótulo pode conter letras e números latinos. Normalmente, um nome de programa simples é usado como um rótulo, às vezes seguido por um identificador de processo, entre colchetes. O corpo da mensagem é separado do rótulo por caracteres especiais - no Linux, geralmente são dois pontos e espaço.

Tratamento de mensagens Syslogd

Todas as mensagens geradas programas individuais usando a função syslog enviado via socket / dev / log daemon do sistema syslogd quem é responsável pelo processamento dessas mensagens. Devo dizer que, na verdade, dois daemons de registro são iniciados no sistema - syslogd e klogd... Ambos os daemons estão incluídos no pacote sysklogd, a versão mais recente que você pode encontrar no site.

Demônio klogd responsável por registrar eventos que ocorrem no kernel do sistema. A necessidade de um demônio separado klogdé explicado pelo fato de que o kernel não pode usar a função padrão syslog... O fato é que as bibliotecas padrão (incluindo a biblioteca na qual a função está localizada syslog) destinam-se ao uso apenas por aplicativos comuns. Como o kernel também precisa de funções semelhantes, ele inclui suas próprias bibliotecas que não estão disponíveis para aplicativos. Portanto, o kernel usa seu próprio mecanismo de geração de mensagens. Demônio klogdé projetado para organizar o processamento dessas mensagens. Em princípio, ele pode realizar esse processamento de forma totalmente independente e independente de syslogd, por exemplo, gravando essas mensagens em um arquivo, mas na maioria dos casos a configuração padrão é usada klogd onde todas as mensagens do kernel são encaminhadas para o mesmo daemon syslogd.

Para ter certeza de que os demônios syslogd e klogd rodando em seu sistema, execute o comando ps -ax | grep log... Este comando deu o seguinte resultado para mim:

$ ps -ax | grep log 569? S 0:00 syslogd -m 0 574? S 0:00 klogd -x 1013? S 0:00 login - kos 1191? S 0:00 kalarmd --login As primeiras duas linhas indicam que os daemons de registro estão em execução no sistema.

Daemon Manipulando Mensagens syslogd consiste no facto de monitorizar constantemente o aparecimento das mensagens e comparar cada entrada recebida com as regras que se encontram no ficheiro /etc/syslog.conf... Cada regra é escrita como uma linha do arquivo /etc/syslog.conf consistindo em dois campos. O campo esquerdo ("seletor") especifica um ou vários modelos pelos quais as mensagens são selecionadas. Os modelos são separados por ponto e vírgula (veja o arquivo de exemplo abaixo /etc/syslog.conf) A margem direita ("ação") determina a ordem em que as mensagens selecionadas são processadas. Os campos são separados por um ou mais espaços ou tabulações.

Cada modelo no campo "seletor" tem o formato "category.level" (ou seja, "facility.priority"). Os valores do campo "categoria" podem ser:

  • um dos nomes convencionais das categorias listadas na Tabela 1,
  • vários desses nomes (neste caso, eles são separados por vírgulas)
  • ou o caractere * (que significa "todas as categorias").

Os valores do campo "nível" podem ser:

  • um dos nomes condicionais do nível listado na Tabela 2,
  • personagem * (grava todas as mensagens desta categoria, independente do nível),
  • ou palavra Nenhum(não grave mensagens nesta categoria).

Especificar um valor específico no campo "nível" é interpretado como "todos os valores deste nível e acima". Se precisar gravar mensagens de apenas um nível, será necessário colocar um sinal de igual ("=") antes do valor especificado. Se você quiser gravar mensagens de todos os níveis, exceto para o indicado, um ponto de exclamação ("!") É colocado antes do nome do nível. Colocar esses dois sinais ao mesmo tempo é interpretado como "não gravar mensagens do nível especificado ou superior".

As letras maiúsculas e minúsculas no campo "seletor" não diferem. Você também pode usar números (consulte /usr/include/syslog.h). Além das categorias listadas na Tabela 1, marca(timestamps regulares) e segurança(sinônimo obsoleto de auth) Além dos valores de prioridade listados na Tabela 2, você pode usar avisar(sinônimo de aviso), erro(sinônimo de errar), pânico(sinônimo de emergir).

Quando a categoria e o nível da mensagem recebida correspondem a um dos modelos do campo "seletor" de alguma string, syslogd processa o registro de acordo com a ação especificada no campo "ação" desta linha.

O campo "ação" pode conter

  • o nome de um arquivo regular (arquivo de log) e o caminho completo para o arquivo devem ser especificados, começando com a raiz "/", e se o arquivo especificado não existir, syslogd cria,
  • nome do tubo nomeado - FIFO; neste caso, uma barra vertical ("|") é colocada na frente do nome, e o próprio canal deve ser criado antes de começar syslogd equipe mkfifo,
  • apontando para um terminal ou console (como dispositivo: / dev / tty1),
  • uma referência ao host remoto (precedido pelo símbolo @),
  • ou uma lista de usuários (separados por vírgulas), para cujos terminais será enviada uma mensagem de acordo com esta regra. Em vez da lista de usuários, você pode colocar um asterisco (*), o que significa que as mensagens são enviadas a todos os usuários que trabalham em este momento no sistema.

Na maioria das vezes, o campo "ação" ainda contém o nome do arquivo de log. Além disso, você pode colocar um sinal de menos ("-") antes do nome do arquivo, o que significa que o sistema pode armazenar o arquivo no buffer de cache e não liberá-lo após cada mensagem ser gravada no disco. Isso, é claro, acelera o trabalho, especialmente se muitas mensagens grandes forem gravadas no log, mas pode levar à perda de algumas mensagens no caso de uma falha inesperada do sistema, ou seja, exatamente quando tais mensagens são especialmente necessárias . Você também pode especificar uma impressora - / dev / lp0 como um dispositivo no campo "ação". Esta opção de "ação" é aconselhável aplicar nos casos em que se trata de sistemas particularmente importantes. Os protocolos impressos não podem ser apagados ou alterados por hackers, portanto, este é um bom uso para uma impressora matricial antiga.

Além das linhas com as regras no arquivo /etc/syslog.conf pode conter linhas em branco e linhas de comentários começando com #. Mais sobre a estrutura do arquivo /etc/syslog.conf você pode ler a página de manual syslog.conf para alguns exemplos de entradas de regra neste arquivo. Observe que ao especificar os pares "category.level" no arquivo syslog.conf você não pode usar os valores numéricos fornecidos nas tabelas 1 e 2, apenas seus nomes convencionais são permitidos.

Se uma mensagem corresponder aos padrões de duas ou mais linhas, ela será processada de acordo com cada uma dessas regras (ou seja, o processamento da mensagem não para no primeiro sucesso). Isso significa que um número arbitrário de ações pode ser executado para uma mensagem. Portanto, você pode gravar uma mensagem em um arquivo de log e enviá-la ao (s) usuário (s) ou a um host remoto.

Além disso, se vários pares "category.level" estiverem listados no campo "selector" (separados por ponto e vírgula), os pares subsequentes podem cancelar a ação dos anteriores. Você pode ver um exemplo de tal cancelamento na lista de arquivos abaixo /etc/syslog.conf: Todas as mensagens com um nível igual ou superior a info são gravadas no arquivo / var / log / messages, mas as mensagens das categorias mail, authpriv e cron são ignoradas (não são gravadas).

Listagem 1. Arquivo /etc/syslog.conf de um sistema construído com base no kit de distribuição do Red Hat Linux 7.1 (acabei de traduzir para o russo os comentários contidos neste arquivo e selecionei em negrito linhas de regra).
# Imprime todas as mensagens do kernel para o console. # kern. * / dev / console# Log de todas as mensagens de nível de informação ou superior, # exceto para mensagens de e-mail contendo mensagens de autenticação # confidenciais e mensagens cron. * .info; mail.none; authpriv.none; cron.none / var / log / messages# Grava mensagens contendo informações de autenticação # confidenciais em um arquivo separado, independentemente de seu nível. authpriv. * / var / log / secure# Todas as mensagens do sistema de correio também devem ser registradas separadamente. mail. * / var / log / maillog# Registre as ações do cron daemon. cron. * / var / log / cron# Mensagens de emergência devem ser recebidas imediatamente # por todos os usuários do sistema * .emerg *# Mensagens de serviços de notícias de nível crítico e superior devem ser gravadas em um arquivo separado. uucp, news.crit / var / log / spooler# As mensagens exibidas durante a fase de inicialização devem ser copiadas para o arquivo boot.log local7. * /var/log/boot.log
Como você pode ver, a maioria das mensagens são simplesmente gravadas em vários arquivos de log localizados no diretório / var / log ou seus subdiretórios, e o principal arquivo de log do sistema no Red Hat Linux é o arquivo / var / log / messages... Apenas mensagens das categorias mail, authpriv e cron (para as quais arquivos separados são alocados) não são incluídas nele. Vamos dar uma olhada neste arquivo e, usando seu exemplo, considerar o que está escrito nos arquivos de log.

Arquivo de log / var / log / mensagens

Claro, não há como dizer aqui sobre o conteúdo de cada linha deste arquivo. Para que o leitor tenha uma ideia de quais informações podem ser encontradas no protocolo, apresentamos linhas de mensagem separadas com comentários muito curtos.

Cada linha do arquivo de log contém um único registro de mensagem, consistindo nos seguintes campos de mensagem, separados por espaços:

  • data em formato de texto padrão (campo TIMESTAMP da postagem syslog),
  • hostname (campo NOME DE ANFITRIÃO da postagem syslog)
  • texto da mensagem (campos MARCAÇÃO e CONTENTE da postagem syslog)

Em primeiro lugar, é importante destacar que se o seu computador não funciona 24 horas, mas desliga à noite, então neste arquivo você pode encontrar registros de vários "ciclos de trabalho", começando com a inicialização do computador e terminando com o seu desligamento. Esse ciclo começa com uma mensagem sobre o início dos daemons de registro (isso é compreensível, antes de serem iniciados, as mensagens não foram gravadas):

17 de setembro 08:32:56 kos3 syslogd 1.4-0: reinicialização. 17 de setembro 08:32:56 kos3 syslog: syslogd bem-sucedido em 17 de setembro 08:32:56 kernel kos3: klogd 1.4-0, fonte de log = / proc / kmsg iniciado. 17 de setembro 08:32:56 kernel kos3: inspecionando /boot/System.map-2.4.2-2 17 de setembro 08:32:56 syslog kos3: início klogd bem-sucedido

  • - Qual versão do kernel é usada: 17 de setembro 08:32:56 kernel kos3: versão do Linux 2.4.2-2 ( [email protegido]) (gcc versão 2.96 20000731 (Red Hat Linux 7.1 2.96-79)) # 1 Dom 8 de abril 20:41:30 EDT 2001
  • - Com quais parâmetros o kernel foi lançado: 17 de setembro 08:32:56 kernel kos3: linha de comando do kernel: auto BOOT_IMAGE = linux ro root = 303 BOOT_FILE = / boot / vmlinuz-2.4.2-2
  • - Informações sobre o tipo de processador e a quantidade de RAM: 17 Set 08:32:56 Kernel kos3: Processador de 1594.849 MHz detectado. 17 de setembro 08:32:56 kernel kos3: Memória: 125652k / 130560k disponível (código do kernel 1365k, 4200k reservados, 92k dados, inicialização 236k, 0k highmem) 17 de setembro 08:32:56 kernel kos3: CPU: L1 I cache: 12K , Cache L1 D: 8K 17 de setembro 08:32:56 kernel kos3: CPU: cache L2: 256K 17 de setembro 08:32:56 kernel kos3: CPU: Intel (R) Pentium (R) 4 CPU 1,60 GHz passo 02
  • - Informações sobre a memória do disco (incluindo informações sobre a geometria do disco, estrutura da partição do disco e interrupções usadas): 17 de setembro 08:32:56 kernel kos3: hda: MAXTOR 6L020J1, unidade ATA DISK 17 de setembro 08:32:56 kernel kos3: hdc: SAMSUNG CD-ROM SC-148C, unidade de CD / DVD-ROM ATAPI 17 de setembro 08:32:56 kernel kos3: ide0 em 0x1f0-0x1f7,0x3f6 em irq 14 de setembro de 17 08:32:56 kernel kos3: ide1 em 0x170-0x177, 0x376 em irq 15 de setembro de 17 08:32:56 kernel kos3: hda: 40132503 setores (20548 MB) com cache de 1819 KiB, CHS = 2498/255/63, UDMA (100) 17 de setembro 08:32:56 kernel kos3: partição verificar: 17 de setembro 08:32:56 kernel kos3: hda: hda1 hda2 hda3 hda4< hda5 hda6 hda7 >17 de setembro 08:32:56 kernel kos3: Unidade (s) de disquete: fd0 é 1,44M
  • - Informação periférica: 17 set 08:32:56 kernel kos3: usb-uhci.c: USB UHCI em I / O 0x1820, IRQ 11 set 17 08:32:56 kernel kos3: usb-uhci.c: 2 portas detectadas setembro 17 08:32:56 kernel kos3: ttyS00 em 0x03f8 (irq = 4) é um kernel 16550A de 17 de setembro 08:32:56 kos3: ttyS01 em 0x02f8 (irq = 3) é um kernel 16550A de 17 de setembro 08:32:56 kos3 : eth0: Adaptador Ethernet baseado em Intel (R) 8255x 17 de setembro 08:32:56 kernel kos3: Adaptador Intel (R) PRO / 100 Fast Ethernet - Driver carregável, versão 1.5.6 17 de setembro 08:32:56 kernel kos3: PCI: IRQ 11 encontrado para o dispositivo 02: 08.0
  • - Informações sobre como iniciar serviços e serviços individuais: 17 de setembro 08:32:56 kernel kos3: NET4: Linux TCP / IP 1.0 para NET4.0 17 de setembro 08:32:56 kernel kos3: Protocolos IP: ICMP, UDP, TCP, IGMP 17 de setembro 08:32:56 kernel kos3: NET4: sockets de domínio Unix 1.0 / SMP para Linux NET4.0. 17 de setembro 08:32:56 kernel kos3: parport0: estilo PC em 0x378 (0x778) 17 de setembro 08:32:56 kernel kos3: parport0: irq 7 detectado 17 de setembro 08:32:42 kos3 rc.sysinit: Ativando o usuário e cotas de grupo para sistemas de arquivos locais: bem-sucedido em 17 de setembro 08:32:43 kos3 rc.sysinit: Habilitando espaço de troca: bem-sucedido em 17 de setembro 08:32:44 kos3 init: Entrando no nível de execução: 3 de setembro 08:32:45 kos3 kudzu: Atualizando / etc / fstab teve sucesso em 17 de setembro 08:32:55 kos3 kudzu: teve sucesso em 17 de setembro 08:32:55 rede kos3: Configurando os parâmetros de rede: teve sucesso em 17 de setembro 08:32:55 rede kos3: Aumento da interface lo: teve sucesso em 17 de setembro 08 : 32:56 rede kos3: Interface eth0 ativada: bem-sucedida em 17 de setembro 08:32:56 teclado kos3: Carrega layout do teclado: 17 de setembro 08:32:56 teclado kos3: Carrega fonte do sistema: 17 de setembro 08:32:56 kos3 aleatório : Inicializa o gerador de números aleatórios: bem-sucedido em 17 de setembro 08:32:41 kos3 rc.sysinit: Configurando os parâmetros do kernel: bem-sucedido em 17 de setembro 08:32:41 kos3 rc.sysinit: Configurando a fonte padrão (cyr-sun16): bem-sucedido em setembro 17 08:32:41 kos3 rc.sysinit: Ativando partições de troca: bem-sucedido em 17 de setembro 08:32:41 kos3 rc.sysinit: Configurando hostname kos3: bem-sucedido em 17 de setembro 08:33:03 kos3 xinetd: início em xinetd bem-sucedido em 17 de setembro 08: 33:05 kos3 gpm: start gpm bem-sucedido em 17 de set 08:33:05 kos3 crond: start crond bem-sucedido em 17 de set 08:33:06 kos3 xfs: ouvindo na porta 7100 set 17 08:33:06 kos3 xfs: start xfs bem-sucedido
  • - Informações sobre a montagem de sistemas de arquivos: 17 de setembro 08:32:56 Kernel kos3: VFS: raiz montada (sistema de arquivos ext2) somente leitura. 17 de setembro 08:32:56 kernel kos3: Adicionando troca: 265032k espaço de troca (prioridade -1) 17 de setembro 08:32:56 kernel kos3: MSDOS FS: Usando página de código 866 17 de setembro 08:32:56 kernel kos3: MSDOS FS : IO charset koi8-r 17 de setembro 08:32:41 kos3 rc.sysinit: Montagem do sistema de arquivos USB: bem-sucedido em 17 de setembro 08:32:41 kos3 rc.sysinit: A verificação do sistema de arquivos raiz foi bem-sucedida em 17 de setembro 08:32:41 kos3 rc.sysinit : Remontando o sistema de arquivos raiz no modo de leitura e gravação: bem-sucedido em 17 de setembro 08:32:41 kos3 rc.sysinit: Montando o sistema de arquivos proc: bem-sucedido em 17 de setembro 08:32:41 kos3 fsck: /: limpo, 30407/160000 arquivos, 95270/319410 blocos 17 set 08:32:42 kos3 fsck: / HOME: limpar, 6573/432864 arquivos, 689090/863722 blocos set 17 08:32:42 kos3 fsck: / usr: limpar, 55105/329952 arquivos, 286888/659602 blocos set 17 08:32:42 kos3 rc.sysinit: a verificação dos sistemas de arquivos foi bem-sucedida
  • - Algumas mensagens de erro relatadas: 17 de setembro 08:32:42 Montagem kos3: falha na conexão SMB 17 de setembro 08:32:42 Montagem kos3: Falha no envio do pacote para 10.104.129.245 (137) ERRNO = Rede inacessível 17 de setembro 08:32: 42 montagem kos3: montagem: / dev / sda4: dispositivo desconhecido 17 de setembro 08:32:59 montagem kos3: erro ao conectar a 192.168.36.20:139 (Sem rota para o host) 17 de setembro 08:32:59 montagem kos3: montagem: / dev / sda4: dispositivo desconhecido
  • - Mensagens sobre o login do usuário: 17 set 08:33:14 login kos3 (pam_unix): sessão aberta para o usuário kos por LOGIN (uid = 0) 17 set 08:33:14 kos3 - kos: LOGIN ON tty1 BY kos 17 set 08 : 41: 39 kos3 su (pam_unix): falha de autenticação; logname = kos uid = 500 euid = 0 tty = ruser = rhost = user = root
  • - E, finalmente, as mensagens gravadas quando o computador é desligado, por exemplo: Set 17 10:30:07 kos3 rc: Parando keytable: bem-sucedido Set 17 10:30:07 kos3 Font Server: encerrando Set 17 10:30:08 kos3 xfs: stop xfs bem-sucedido em 17 de set 10:30:08 kos3 gpm: stop gpm bem-sucedido em 17 de set 10:30:08 kos3 xinetd: Saindo ... Set 10:30:10 kos3 rpc.statd: Sinal capturado 15, un -registrando e saindo. 17 de setembro 10:30:11 Kernel kos3: O registro do kernel (proc) foi interrompido. 17 de setembro 10:30:11 kernel kos3: encerramento do daemon de log do kernel. 17 de setembro 10:30:12 syslog kos3: parar o klogd bem-sucedido em 17 de setembro 10:30:12 kos3 saindo no sinal 15

    As entradas em outros arquivos de protocolo mencionados no arquivo têm aproximadamente a mesma estrutura. /etc/syslog.conf.

    Comandos logger e tailf

    A partir da descrição anterior, podemos concluir que a emissão de todas as mensagens para logs do sistema deve ser definida pelo programador na fase de criação do programa. Isso não é inteiramente verdade. O usuário também pode enviar uma mensagem ao daemon syslogd... Para fazer isso, o Linux tem um comando madeireiro, que fornece o envio de uma mensagem da linha de comando (sh, bash, etc.). Ele está incluído no pacote util-linux. Naturalmente, esse comando tem como objetivo principal fornecer recursos de registro quando o usuário cria vários tipos de scripts de shell. Mas também pode ser iniciado diretamente da linha de comando, por exemplo, para se familiarizar com os recursos do sistema de registro. Formato de lançamento do comando: logger [-isd] [-f arquivo] [-p PRI] [-t TAG] [-u socket] Os parâmetros da linha de comando têm o seguinte significado:

    • -eu- inclua o número do processo na mensagem
    • -s- mensagem duplicada para stderr
    • -d- use o modo datagrama ao enviar mensagens (em vez do streaming normal)
    • -f nome do arquivo- salvar a mensagem no arquivo especificado (por padrão, ele é usado / var / log / messages)
    • -p facility.level- definir a categoria e a prioridade da mensagem (por padrão: user.notice)
    • -t MARCAÇÃO - definir o campo TAG
    • -u soquete- envia uma mensagem para o soquete especificado em vez de chamar syslogd
    • MSG- Mensagem de texto

    Envie várias mensagens usando o programa madeireiro e admiro o resultado no arquivo / var / log / messages(a menos, é claro, que você tenha alterado o padrão).

    A propósito, há uma maneira muito interessante de visualizar as mensagens gravadas em um arquivo / var / log / messages equipe madeireiro... Este método é baseado no uso programa especial tailf... Abra uma janela de terminal, obtenha direitos de superusuário (com o comando su) e execute o comando nesta janela
    tailf / var / log / messages
    Depois disso, mude para outro terminal e execute o comando lá logger arbitrary_text... Sua mensagem aparecerá imediatamente na janela onde o programa está sendo executado tailf... Ou seja, por meio deste programa, o administrador do sistema pode monitorar em tempo real a gravação de novas mensagens no protocolo. É verdade que o administrador do sistema provavelmente não terá tempo para monitorar o comportamento do sistema dessa forma (a menos que em situações de emergência). Portanto, programas especiais foram desenvolvidos para analisar os protocolos. Mas sobre eles um pouco mais abaixo, mas por agora vamos passar à questão de como organizar a supervisão de um computador remoto (lembra como você pegou o atacante Shimomura?).

    Log de rede

    Como mencionado, as mensagens de log podem ser enviadas por um daemon syslogd para o host remoto. Mas alguém tem que aceitar isso aí. Acontece que o mesmo demônio faz isso syslogd rodando neste host remoto. Mais precisamente, syslogd em qualquer computador, ele pode escutar não apenas no soquete / dev / log (recebendo, assim, mensagens de fontes locais), mas também na porta 514 / UDP, que garante que as mensagens de outros computadores na rede local sejam recebidas (e depois gravadas para um arquivo local). Isso fornece a capacidade de criar um "servidor de registro", o que pode ser muito conveniente para o administrador do sistema (todos os eventos da rede são monitorados em um único lugar), e também aumenta a segurança da rede, uma vez que mensagens sobre a penetração de um hacker para um dos hosts da rede não pode ser removido imediatamente do protocolo por este hacker.

    No entanto, algum esforço extra é necessário para configurar esse "registro de rede".

    Primeiro, como a porta 514 / UDP é usada para enviar e receber mensagens pela rede, ela deve estar disponível em ambos os computadores (cliente e servidor). Para fazer isso, no arquivo / etc / services a linha deve estar presente em ambos os computadores
    syslog 514 / udp
    Se tal linha em / etc / services ausente, syslogd não pode receber mensagens nem enviá-las para a rede porque não pode abrir uma porta UDP. Se essa situação surgir, syslogd para imediatamente de gravar qualquer mensagem, mesmo no log local. Além disso, como mostra o comando ps, fica na memória e até armazena mensagens em alguns buffers, pois se a string " syslog 514 / udp " restaurar no arquivo / etc / services no cliente, pelo menos algumas das mensagens "ausentes" ainda aparecem no log (após reiniciar syslogd).

    Em segundo lugar, ao iniciar o daemon syslogd o servidor deve ter a opção -r que fornece capacidade de registro remoto (por padrão, o daemon syslogd espera apenas por mensagens do socket local). Como e onde definir esta opção serão descritos abaixo, na seção sobre como iniciar o daemon. syslogd.

    Bem, e em terceiro lugar, as configurações nos arquivos devem ser corrigidas de acordo. /etc/syslog.conf em ambos os computadores. Por exemplo, se você deseja redirecionar todas as mensagens para o servidor de registro, você deve escrever no arquivo no computador cliente /etc/syslog.conf uma linha como esta:
    *. * @nome de anfitrião
    Se durante o início do demônio syslogd o servidor ficará indisponível (por exemplo, está desconectado da rede neste momento) ou não será possível localizá-lo pelo nome (o serviço DNS não funcionou corretamente) syslogd faz mais 10 tentativas para encontrar o servidor e somente se depois disso o servidor não puder ser encontrado, interrompe as tentativas e envia a mensagem correspondente.

    Se a sua rede tiver vários domínios que são servidos por um servidor de registro, não se surpreenda se o registro no servidor conterá os nomes completos dos clientes (incluindo o domínio). Verdade, na inicialização syslogd você pode usar opções -s domain_list ou -l lista de host, que garantem que o protocolo substitua nomes de host totalmente qualificados por seus nomes abreviados (sem especificar um domínio).

    Não se esqueça depois de ajustar as opções de inicialização e arquivo /etc/syslog.conf reinicie o daemon, porque ao contrário cron, sysklogd não relê os arquivos de configuração automaticamente.

    Opções de inicialização do daemon Syslogd

    Já que tocamos na subseção anterior, a questão de definir parâmetros para iniciar o daemon syslogd, vamos examinar mais de perto esse problema. Como já mencionado, ambos os daemons de registro são iniciados no estágio de inicialização do sistema e, mais especificamente, por meio de um script /etc/rc.d/init.d/syslog(para o qual, assim como para scripts para iniciar outros serviços, links simbólicos são criados nos diretórios /etc/rc.d/rc?.d/). No entanto, para definir os parâmetros de inicialização, não há necessidade de ajustar este script, porque a partir da versão 7.2 na distribuição Red Hat, as opções de inicialização para ambos os daemons são lidas de um arquivo de configuração separado / etc / sysconfig / syslog... Aqui está uma pequena lista de parâmetros possíveis para o daemon syslogd.

    Parâmetros de lançamento syslogd:

    • - um soquete- Especifica um soquete adicional no qual o daemon irá escutar syslogd... Você pode especificar até 19 sockets (mais podem ser especificados, mas você precisa recompilar o pacote). Esta opção é usada quando algum outro daemon (como ftp ou http) está rodando em um ambiente restrito (fazendo chroot).
    • -d- Modo de depuração. Nesse caso, o daemon não entra em segundo plano e emite todas as mensagens para o terminal atual.
    • -f config_file_name Especifica o nome de um arquivo de configuração alternativo que será usado em vez do padrão /etc/syslog.conf.
    • -h Por padrão em sysklogd a transmissão de mensagens recebidas pela rede para algum outro computador é proibida. Isso é feito para evitar transferências intermináveis ​​de mensagens ao redor do anel. A opção -h permite que você mude o comportamento normal e garanta que as mensagens recebidas de hosts remotos sejam passadas pela rede (e você mesmo cuide do possível loop).
    • -l host-list- Especifica uma lista de hosts, cujos nomes não devem ser registrados com a indicação do nome de domínio completo (FQDN - Full Qwalified Domain Name); os nomes na lista são separados por dois pontos.
    • -m minutos Começou sem esta opção sysklogd regularmente (a cada 20 minutos) registra mensagens da categoria marca, isto é, apenas carimbos de hora. Com a opção -m você pode alterar o intervalo entre as marcas ou cancelar completamente a emissão de tais mensagens, para as quais você precisa definir um intervalo zero: -m 0.
    • -n Não vá para o fundo; esta opção é necessária quando o syslogd é iniciado e controlado por um processo iniciar.
    • -p socket Especifica um soquete UNIX alternativo (em vez do padrão de escuta / dev / log) Observação: opção -uma especifica soquetes adicionais, e -p- alternativo!
    • -r Permite receber mensagens de hosts remotos. Falamos sobre isso na seção anterior, portanto, omito os detalhes.
    • -s domain-list Especifica uma lista de domínios cujos nomes não precisam ser registrados junto com o nome do host (ou seja, para esses domínios, apenas nomes de host serão registrados em vez do nome de domínio totalmente qualificado (FQDN). Os nomes na lista são separados por dois-pontos. O nome do domínio onde o servidor syslogd está localizado), não é necessário ser especificado nesta lista (seu nome é removido por padrão).
    • -v Mostra a versão e sai.
    • -x Proíbe determinar o nome do host por seu endereço, evita deadlock ao trabalhar no mesmo host com o servidor DNS.

    Depois de iniciar o demônio syslogd um arquivo de status é criado / var / lock / subsys / syslog comprimento zero e arquivo com ID de processo /var/run/syslogd.pid.

    Usando o comando
    kill -SIGNAL `cat / var / run / syslogd.pid`
    você pode enviar para o demônio syslogd um dos seguintes sinais:

    • SIGHUP - reinicie o daemon (reinicialização); todos os arquivos abertos são fechados, o daemon é reiniciado, relendo seu arquivo de configuração.
    • SIGTERM - desligamento.
    • SIGINT, SIGQUIT - se o modo de depuração estiver habilitado (opção -d), os sinais são ignorados, caso contrário - sai.
    • SIGUSR1 - ativa / desativa o modo de depuração (funciona apenas se o daemon foi iniciado com a opção -d).

    Demônio klogd não tem menos opções de inicialização do que syslogd, mas não os listaremos aqui, referindo o leitor à página de manual correspondente (o usuário não deve se envolver na configuração klogd, é melhor deixá-lo no mesmo estado em que foi produzido pelos desenvolvedores do kit de distribuição).

    Arquivo Dmesg e comando dmesg

    Conforme declarado, os arquivos de log referenciados no arquivo /etc/syslog.conf geralmente localizado no diretório / var / log e seus subdiretórios. Mas, se olharmos para este diretório, encontraremos vários arquivos lá, que em /etc/syslog.conf não foram mencionados. Vamos dar uma olhada em seu propósito. E vamos começar com o arquivo dmesg.

    Em primeiro lugar, deve ser mencionado que o Linux possui um comando com o mesmo nome. Se você comparar a saída deste comando (quando ele é executado sem parâmetros) com o conteúdo do arquivo / var / log / dmesg, você verá que eles são muito semelhantes, embora não idênticos (canalize a saída do comando para o arquivo dmesg2 e comparar arquivos dmesg e dmesg2) Mais precisamente, o arquivo / var / log / dmesg um a um coincide com o início da saída que receberemos pelo comando dmesg... Como segue no kernel, há um buffer em anel no qual as mensagens do daemon de registro do kernel são gravadas. Essas mensagens que são gravadas neste buffer durante o processo de carregamento e constituem o conteúdo do arquivo / var / log / dmesg... Aparentemente, esse arquivo é gerado no final da inicialização do sistema.

    Se você olhar a lista de arquivos acima novamente /etc/syslog.conf então você verá que todas as postagens na categoria kern também são emitidos para o console. Mas lá eles rapidamente correm pela tela e você mal tem tempo para lê-los e compreendê-los. Mas eles são salvos no arquivo / var / log / dmesg e, portanto, estão disponíveis para uma compreensão tranquila (se o processo de download foi concluído com êxito). Após o final do processo de inicialização, a gravação de mensagens do kernel para o buffer circular continua. Quando o comando é executado dmesg, o estado atual do buffer é exibido. Portanto, a saída deste comando contém mais mensagens do que o arquivo / var / log / dmesg: na saída deste comando, você também vê as mensagens que o kernel emite após o final do processo de inicialização.

    Todas as mensagens de / var / log / dmesg você encontrará no arquivo / var / log / messages, só aí se alternam com mensagens de outros programas. Há apenas uma diferença significativa: no arquivo dmesg a hora e a fonte da mensagem (nome do host e categoria da mensagem) não são especificados. O host é sempre "local" aqui, e o início da contagem regressiva é determinado pela última reinicialização do computador.

    Arquivos Lastlog, wtmp e utmp

    Além do arquivo dmesg no catálogo / var / log / existem mais dois arquivos não mencionados em /etc/syslog.conf, mas diretamente relacionado ao registro - estes são arquivos lastlog e wtmp... Mas olhar para eles é o mesmo que olhamos para o arquivo / var / log / messages não faz sentido - você não vai entender nada. O fato é que as informações desses arquivos são gravadas em um formato especial e devem ser visualizadas por meio de ferramentas de software especiais. Mas, primeiro, algumas palavras devem ser ditas sobre o propósito desses arquivos.

    Arquivo lastlog armazena informações sobre o último usuário conectado ao sistema. Não sei se você percebeu que ao inserir o nome de usuário e a senha, a seguinte mensagem aparece na tela:

    Login localhost: kos Senha: Último login: Quarta, 9 de outubro 19:25:53 em tty1 Estas três linhas são geradas pelo utilitário Conecte-se, que, após determinar que o usuário tem o direito de fazer login, acessa o arquivo / var / log / lastlog, recupera informações sobre o login de usuário anterior bem-sucedido a partir daí, imprime-as na tela e, em seguida, atualiza a entrada no arquivo lastlog... Você pode suprimir essa mensagem criando um arquivo .hushlogin vazio em seu diretório inicial. No entanto, não se recomenda fazê-lo, pelo contrário, deve prestar especial atenção ao conteúdo desta mensagem para não perder os casos em que outra pessoa entrou no sistema com o seu nome.

    Ao contrário do arquivo / var / log / lastlog que contém registros do tempo o último cada login do usuário, no arquivo / var / log / wtmp são lembrados tudo logins e logoffs do usuário desde a criação deste arquivo. Como no arquivo lastlog, entradas em / var / log / wtmp são feitos em um formato especial, portanto, só podem ser visualizados por meio de comandos especiais. Mas, antes de falar sobre esses comandos, digamos que haja outro arquivo contendo entradas sobre o registro do usuário - este é o arquivo / var / run / utmp... Este arquivo contém informações sobre qual usuário está atualmente conectado ao sistema.

    Agora você pode falar sobre como visualizar informações sobre os usuários que trabalham atualmente ou que trabalhavam anteriormente no sistema. O comando principal para isso é o comando durar... Ele produz todos os registros do arquivo / var / log / wtmp além disso, são indicados o nome do usuário, uma indicação do terminal a partir do qual o usuário trabalhava, a hora em que o usuário entrou no sistema e a hora em que se desconectou, bem como a duração da sessão do usuário no sistema. Se o trabalho do usuário foi interrompido apenas devido ao desligamento do sistema, a palavra "down" é usada em vez do tempo de saída do usuário (essas linhas podem determinar facilmente o tempo de desligamento do sistema). O tempo de reinicialização é exibido em linhas separadas, começando com a palavra "reboot".

    Equipe lastb como um time durar mas exibe informações sobre tentativas malsucedidas de logon do usuário. No entanto, deve-se observar que este comando só funcionará se o arquivo existir. / var / log / btmp... No entanto, nenhum dos programas discutidos aqui cria arquivos de log, portanto, se algum deles for excluído, a gravação será encerrada.

    Equipe lastlog formata e produz o conteúdo do arquivo / var / log / lastlog... Os campos serão o nome de usuário, o nome do terminal a partir do qual o usuário se conectou e a hora do último login no sistema. Por padrão (quando o comando é inserido sem parâmetros) elementos de arquivo / var / log / lastlog será exibido na ordem dos números de ID do usuário. Se você especificar o parâmetro -u login-name, apenas as informações sobre a hora do último login do usuário especificado serão exibidas. Ao especificar o parâmetro -t days, você obterá apenas os registros dos últimos dias. Se o usuário não tiver feito login no sistema, a string "** Nunca conectado **" será indicada em vez do nome do terminal e a hora do último login.

    Ao executar o comando lastlog em um computador lento, em alguns casos pode parecer que o comando está travado. Isso ocorre devido ao fato de que mesmo que apenas dois usuários estejam cadastrados no sistema (root e usuário), no arquivo / var / log / lastlog ainda há espaço para o maior número possível de usuários que podem trabalhar no sistema. Portanto, no arquivo / var / log / lastlog pode haver grandes lacunas entre os números de ID dos usuários logados no sistema. Já ao visualizar tais intervalos, o programa não exibe informações na tela, e surge a impressão de “congelamento”.

    Para exibir informações sobre quem está trabalhando atualmente no sistema, use os comandos C, Who e Comercial... Equipe Comercial ele é usado quando você quer apenas saber qual dos usuários está trabalhando no sistema, mas não está interessado em qual terminal ele se conectou e o que ele está fazendo. Se você quiser saber quem fez login em qual terminal, use o comando Who... Este comando produz informações de um arquivo / var / run / utmp... Você pode fazer com que ele produza dados de um arquivo / var / log / wtmp(ou qualquer outro arquivo para o qual faça sentido) se você especificar o nome desse arquivo na linha de comando. Mas na saída, você ainda verá apenas o nome de usuário, uma indicação do terminal a partir do qual o usuário se conectou, a hora de login e, se estiver conectado a partir de um computador remoto, o nome desse computador.

    Significativamente mais informações são exibidas pelo comando C... Na saída, você verá a hora atual, há quanto tempo o sistema está funcionando, quantos usuários estão trabalhando no sistema e a carga média do sistema no último minuto, 5 e 15 minutos. Em seguida, para cada usuário, ele imprime:

  • Nome do usuário,
  • nome do terminal,
  • nome de host remoto
  • tempo decorrido desde o login,
  • tempo durante o qual este terminal não é usado (tempo ocioso),
  • tempo total gasto por todos os processos lançados a partir deste terminal (gráfico JCPU),
  • o tempo durante o qual o último dos processos iniciados pelo usuário (gráfico PCPU) está em execução,
  • informações sobre qual programa está sendo executado pelo usuário (na forma de uma linha de comando para iniciar um comando com todos os parâmetros).

    Como já mencionado, o comando C produz informações armazenadas em um arquivo utmp... A propósito, o guia cara afirma que usuários comuns não devem ter acesso de gravação ao arquivo utmp desde muitos programas de sistema(por alguma razão inexplicável) dependem de sua integridade. Você corre o risco de confundir os arquivos de estatísticas do sistema e fazer alterações nos arquivos do sistema se permitir que qualquer usuário grave em um arquivo utmp.

    Arquivos de log de outros programas

    Além dos arquivos que já descrevemos, existem outros arquivos de protocolo que são criados por programas separados. Os exemplos mais típicos são os protocolos de daemons. samba, ftpd ou httpd que são mantidos em arquivos separados. Alguns desses programas criam seus protocolos em subdiretórios do diretório / var / log / outros mantêm os protocolos em outro lugar. E a estrutura desses arquivos pode diferir significativamente da estrutura dos arquivos criados pelo sistema. syslog... Por exemplo, darei algumas linhas do log do servidor Apache rodando no meu computador: 192.168.36.21 - - "GET / ve / papers / new / log / HTTP / 1.1" 200 1774 "-" "Mozilla / 5.0 (X11; U; Linux i686; ru-RU; rv: 1.0. 0) Gecko / 20020530 "192.168.36.21 - -" GET /icons/back.gif HTTP / 1.1 "304 -" - "" Mozilla / 5.0 (X11; U; Linux i686; ru-RU; rv: 1.0.0) Gecko / 20020530 "192.168.36.21 - -" GET /icons/folder.gif HTTP / 1.1 "304 -" - "" Mozilla / 5.0 (X11; U; Linux i686; ru-RU; rv: 1.0.0) Gecko / 20020530 "192.168.36.21 - -" GET /icons/text.gif HTTP / 1.1 "304 -" - "" Mozilla / 5.0 (X11; U; Linux i686; ru-RU; rv: 1.0.0) Gecko / 20020530 " 192.168.36.21 - - "GET /ve/papers/new/log/protok_lovim.htm HTTP / 1.1" 200 46597 "http: // linux / ve / papers / new / log /" "Mozilla / 5.0 (X11; U; Linux i686; ru-RU; rv: 1.0.0) Gecko / 20020530 "192.168.36.21 - -" GET /bugtraq.css HTTP / 1.1 "404 279" http: // linux / ve / papers / new / log / protok_lovim .htm "" Mozilla / 5.0 (X11; U; Linux i686; ru-RU; rv: 1.0.0) Gecko / 20020530 "192.168.36.21 - -" GET /img/bug1.gif HTTP / 1.1 "404 280" http : // linux / ve / papers / new / lo g / protok_lovim.htm "" Mozilla / 5.0 (X11; VOCÊ; Linux i686; ru-RU; rv: 1.0.0) Gecko / 20020530 "192.168.36.21 - -" GET /img/title.gif HTTP / 1.1 "404 281" http: //linux/ve/papers/new/log/protok_lovim.htm "" Mozilla /5.0 (X11; U; Linux i686; ru-RU; rv: 1.0.0) Gecko / 20020530 "Como você pode ver, a estrutura deste arquivo de log é significativamente diferente do que vimos nos logs do sistema.

    O servidor Samba, além do protocolo de operação do servidor principal, cria no subdiretório / var / log / samba uma série de arquivos de log para diferentes casos, em particular, arquivos separados para cada um dos usuários que têm permissão para usar os recursos fornecidos por este servidor. Os dois registros a seguir são obtidos de um desses arquivos:

    Smbd / service.c: make_connection (550) linux (192.168.36.10) conecta-se ao serviço público como usuário kos (uid = 500, gid = 500) (pid 1366) smbd / service.c: close_cnum (550) linux (192.168. 36.10) conexão fechada com serviço público Esses exemplos mostram que se você conseguir ler um pouco em inglês e tiver algum entendimento da estrutura dos registros, poderá extrair muitas informações úteis dos arquivos de log. Só precisa ser extraído de depósitos inteiros de "rocha estéril" - enormes arquivos de log sequenciais, o que não é uma tarefa trivial. Portanto, ferramentas de software especiais para análise de protocolo foram desenvolvidas.

    Ferramentas para protocolos de processamento

    Muitos programas e scripts diferentes para análise de protocolo foram desenvolvidos. Vou me limitar descrição breve dois desses meios: logwatch e amostra.

    logwatché um script Perl incluído na distribuição padrão do Red Hat Linux. Apenas durante a preparação deste artigo, a versão 4.1 deste programa foi lançada no site do desenvolvedor (e ele é Kirk Bauer).

    A ideia principal por trás desse programa é que o arquivo de log seja passado por um filtro que extrai do log todas as linhas (ou seja, mensagens) que atendem a um determinado critério. Os resultados são enviados por e-mail para o usuário especificado (o padrão é root). Os filtros podem ser escritos em qualquer linguagem de programação, mas o autor do pacote prefere Perl. Os filtros devem ser escritos de forma que leiam dados de stdin e enviem o resultado para stdout.

    A principal forma de usar logwatch consiste em incluir um link para o script principal ( /etc/log.d/scripts/logwatch.pl) para o diretório /etc/cron.daily, que causa a execução diária logwatch com parâmetros padrão. O link recebe um nome que começa com "00" (por exemplo, 00-logwatch) para que o script seja executado antes do logrotate.

    Mas você também pode executar o script na linha de comando. Obviamente, se você não alterou o parâmetro de saída de informações, o resultado de seu trabalho deve ser procurado na caixa de correio do superusuário. Se você quiser ver esses resultados na tela, deve definir o parâmetro da linha de comando --imprimir- emitir um relatório para stdout.

    Formato geral de lançamento do script:

    /etc/log.d/scripts/logwatch.pl [--detail nível ] [--arquivo de log group-logs ] [--serviço Nome do Serviço ] [--print] [--mailto o endereço ] [--Salve  Nome do arquivo ] [--arquivos] [--range intervalo de datas ]

    Os parâmetros padrão são armazenados no arquivo /etc/log.d/logwatch.conf, comentários nos quais permitem compreender o significado dos parâmetros da linha de comando:

    • LogDir - o diretório relativo ao qual os nomes dos arquivos são considerados;
    • MailTo - para quem enviar o relatório;
    • Imprimir - em vez de enviar um relatório pelo correio, envie-o para stdout;
    • Salvar - em vez de enviar o relatório por e-mail, salve-o no arquivo especificado;
    • Arquivos - processa não apenas as versões atuais dos logs, mas também as cópias antigas criadas pelo logrotate;
    • Intervalo - processa o intervalo de tempo especificado: Todos, Hoje, Ontem (dia do calendário de ontem);
    • Detalhe - nível de detalhe do relatório: de 0 a 10 ou Baixo, Médio, Alto;
    • Serviço - Todos ou o nome do filtro de /etc/log.d/scripts/services/ (vários filtros podem ser especificados);
    • LogFile - tudo ou o nome do grupo de log (vários grupos podem ser especificados).

    Mais informações sobre o roteiro logwatch você encontrará em.

    Este artigo descreve outro script para processar arquivos de log que está incluído na distribuição Mandrake Linux. Este script é chamado amostra("Simple WATCHer") e também é escrito em Perl.

    Gestão de trabalho amostra realizado usando um único arquivo de configuração, por padrão $ HOME / .swatchrc... Este arquivo contém um texto de exemplo (em forma de expressão regular) que amostra irá pesquisar os arquivos de log. Cada um desses padrões é seguido por uma ação que amostra deve levar se encontrar um texto que corresponda ao padrão.

    Por exemplo, você pode querer receber um aviso sempre que tentar um ataque de estouro de buffer em seu servidor web para um nome de arquivo muito longo. E você sabe que, em tais casos, no arquivo de log /var/apache/error.log uma mensagem aparece com as palavras "Nome de arquivo muito longo". Neste caso, para o seu arquivo .swatchrc a seguinte nota deve ser inserida:

    Watchfor / Nome do arquivo muito longo / mail [email protegido], subject = BufferOverflow_attempt

    Não vou dar uma descrição mais detalhada do programa aqui. amostra... Um artigo entusiasmado é dedicado a ela, e o próprio programa pode ser encontrado no site. Eu gostaria apenas de observar, e amostra, e logwatch implementar um algoritmo bastante primitivo para processar arquivos de protocolo, que se resume a pesquisar o protocolo por uma determinada sequência de caracteres (assinatura). Entretanto, em primeiro lugar, a presença de tal linha muitas vezes ainda não indica um intruso e, em segundo lugar, um atacante competente pode tomar o cuidado de apagar os vestígios de suas atividades. Outra desvantagem óbvia dos produtos testados é que eles funcionam em "modo retardado", uma vez que são lançados apenas dentro do prazo. E o combate aos intrusos deve ser feito “em tempo real”, reagindo imediatamente às tentativas de penetração no sistema. Portanto, os produtos comerciais oferecem sistemas de monitoramento que funcionam constantemente e implementam algoritmos "inteligentes" para análise de protocolos. Esses algoritmos são baseados em uma análise estatística do fluxo de mensagens e na identificação de desvios estatisticamente significativos do sistema em relação ao seu comportamento normal.

    Concluindo esta seção, gostaria de observar que o site SecurityLab.ru (http://www.securitylab.ru/tools/?ID=22111) contém uma lista de links para sites de várias ferramentas de software para protocolos de processamento com uma breve descrição dessas ferramentas. Você pode experimentar diferentes programas e escolher aquele que mais lhe convier.

    Arquivos de log rotativos

    É claro que você entenderá que, se o sistema for muito usado, os arquivos de log aumentam rapidamente. O que acarreta um desperdício de espaço em disco. E surge o problema de "domar" os protocolos. O Red Hat Linux corrige esse problema com scripts. logrotate que está localizado no diretório /etc/cron.daily, e, portanto, é iniciado pelo daemon cron Diário. Este script permite que você processe mais do que apenas os registros do sistema syslog, mas também quaisquer outros programas.

    Roteiro logrotate monitora o crescimento dos arquivos de log e fornece a chamada rotação desses arquivos se eles excederem o tamanho especificado (ou após o intervalo de tempo especificado ter expirado). A rotação nada mais é do que uma cópia sequencial de versões anteriores de arquivos compactados, algo assim:

  • mensagens.2 -> mensagens.3
  • mensagens.1 -> mensagens.2
  • mensagens.0 -> mensagens.1
  • mensagens -> mensagens.0
    e criar um novo arquivo de mensagens para registrar as mensagens subsequentes.

    Lista de arquivos a serem processados ​​pelo script logrotate e os parâmetros desse processamento são determinados por arquivos de configuração, podendo haver vários. Os nomes dos arquivos de configuração são definidos na linha de comando da inicialização do script (veja abaixo os parâmetros de inicialização). No Red Hat Linux, os arquivos de configuração padrão para logrotate arquivo usado /etc/logrotate.conf, que pode ser parecido com isto:

    Rotação 4 semanal de criação de compactação inclui /etc/logrotate.d / var / log / wtmp / var / log / lastlog (criação mensal 0664 raiz utmp rotação 1)

    Este arquivo é como qualquer arquivo de configuração do script. logrotate consiste em várias seções. A primeira seção define os parâmetros globais (um por linha) que definem os parâmetros padrão para todos os logs. As seções a seguir definem os parâmetros locais para uma série de arquivos de log. Os nomes desses arquivos são listados na primeira linha da seção e, em seguida, os parâmetros locais são definidos entre chaves que são eficazes apenas ao processar os arquivos especificados (também um parâmetro por linha). Os nomes dos arquivos de log podem ser citados por regras do shell se contiverem espaços ou outros caracteres especiais. Você pode especificar vários nomes de arquivo ou padrões de nome de arquivo separados por espaços (os padrões também seguem as regras do shell). O processamento de cada seção é tratado como uma única ação. As linhas que começam com o caractere "#" são comentários. Os parâmetros locais têm precedência sobre os parâmetros globais.

    No exemplo fornecido do arquivo de configuração, os parâmetros globais são descritos primeiro e, em seguida, em uma seção separada, os parâmetros para processar os arquivos / var / log / wtmp e / var / log / lastlog. Além disso, entre os parâmetros globais, é fornecido um link para o diretório /etc/logrotate.d, no qual cada pacote grava parâmetros locais para seus logs.

    Na seção de parâmetros globais, em primeiro lugar, é especificado um dos seguintes parâmetros, que determinam o critério de rotação do arquivo:

  • Diário- a mudança de versões da série ocorre diariamente,
  • semanalmente- a mudança de versão ocorre semanalmente,
  • por mês- a mudança de versão ocorre mensalmente,
  • Tamanho byte - a mudança de versão ocorre se o tamanho do log excedeu o número especificado de bytes; você pode usar os sufixos "k" - kilobytes - e "M" - megabytes)

  • e parâmetro incluir seguido pelo nome de outro arquivo de configuração (adicional) ou até mesmo o nome de um diretório. Neste último caso, todos os arquivos do diretório especificado, exceto subdiretórios, arquivos especiais e arquivos com sufixos da lista de exclusões, são considerados arquivos de configuração do script. logrotate(diretiva incluir não pode ser usado dentro de uma seção que especifica parâmetros de processamento para um grupo de arquivos).

    Parâmetro girar número pode ser encontrado entre os parâmetros globais e locais e determina quantas versões antigas devem ser mantidas; se o número for 0, as versões arquivadas do protocolo não serão criadas.

    Se o parâmetro for definido comprimir então as versões antigas são compactadas usando gzip e, se especificado nocompressa- eles não encolhem. Parâmetro compresscmd permite que você especifique qual programa de compressão será usado (gzip por padrão), e descompactar cmd define o programa de descompactação (descompactar por padrão). opções de compressão define os parâmetros do programa de compressão; o padrão é "-9", ou seja, compressão máxima para gzip. Usando o parâmetro comprimir você pode alterar o sufixo para arquivos compactados e o parâmetro extensão sufixo especifica o sufixo a ser adicionado aos nomes de arquivos durante a rotação (antes do sufixo de compressão).

    Entre as palavras-chave encontradas nos arquivos de configuração, as palavras postrotate e pré-rodar que servem como parênteses abertos para incluir scripts de shell nos arquivos de configuração. Todas as linhas do arquivo de configuração da linha postrotate para a linha terminar script são executados como comandos shell após o processo de alteração da versão do arquivo de log. Assim, todas as linhas da linha pré-rodar para a linha terminar script são executados antes da rotação dos arquivos de log. Com a ajuda desses scripts, você pode organizar vários procedimentos para processar os arquivos de log durante a rotação.

    Usando outros parâmetros do arquivo de configuração, você pode substituir os direitos de acesso aos arquivos de log (se este parâmetro não for especificado, os atributos do arquivo de log antigo serão usados); indicar a quem enviar mensagens sobre erros na operação do sistema de perfilagem; enviar uma cópia de arquivo do log para o usuário especificado; defina o diretório para o qual os protocolos serão movidos durante a mudança de versão (o diretório deve estar localizado no mesmo dispositivo físico como / var / log) ou especifique uma lista de sufixos de exclusão para o diretório incluir... Uma descrição detalhada desses recursos e parâmetros (bem como aqueles que não foram mencionados) pode ser encontrada no comando homem logrotate.

    Como já mencionado, arquivos de configuração adicionais logrotate pode ser especificado na linha de comando do lançamento do script. Você pode especificar um número arbitrário de nomes para arquivos ou diretórios de configuração. Os nomes dos arquivos e diretórios nesta lista são simplesmente separados por espaços. A ordem dos nomes na lista é importante porque os parâmetros especificados no arquivo de configuração a seguir substituem os valores dos parâmetros especificados em arquivo anterior... A ordem dos arquivos no diretório de configuração é indefinida.

    Além disso, os seguintes parâmetros podem ser especificados na linha de comando de inicialização:

    • -d- modo de depuração, nenhuma mudança real é feita,
    • -f- faça alterações mesmo que logrotate não vê a necessidade - é usado quando há mudanças na lista de logs processados,
    • homem logwatch
    • Mick Bauer, "Paranoid Penguin: swatch: Automated Log Monitoring for the Vigilant but Lazy"
    • RFC 3164. C. Lonvick, The BSD Syslog Protocol, agosto de 2001.
    • RFC 3195. D. New, M. Rose, Reliable Delivery for syslog, novembro de 2001.
    • Por. S.Lapshansky, "O demônio está vigiando o sistema"
    • Denis Kolisnichenko,

    O protocolo syslog e o software de suporte garantem que as informações do evento sejam gravadas no log do sistema (logs, console do sistema), bem como transmitidas ao servidor de registro pela rede, classificadas e processadas de acordo com a origem e a gravidade das mensagens. Este artigo descreve o protocolo syslog, sua implementação no Solaris e Linux (syslogd), Cisco IOS e ferramentas auxiliares: logrotate, logwatch.

    Os componentes do sistema são um gerador de mensagens (dispositivo ou processo), um protocolo de troca, um coletor de mensagens (coletor, servidor syslog), retransmissores (retransmissão, recebe mensagens de um ou mais geradores e as transmite para um ou mais coletores ou próximos retransmissores). O gerador (ou retransmissão durante a transmissão) não sabe se o receptor é um retransmissor ou um coletor, pode transmitir uma mensagem a vários receptores, pode processar a própria mensagem (por exemplo, escrevendo em um arquivo).

    O protocolo syslog não oferece nenhuma proteção contra falsificação de mensagens. Pior ainda, o uso do protocolo UDP permite que os invasores enviem mensagens em nome de qualquer host. A rede local deve ser protegida por uma tela (IOS ACL, ipchains) de receber pacotes com endereços locais falsos (embora isso não impeça o envio de mensagens falsas de dentro da rede local) e de receber pacotes de fora na porta 514 / udp. Existem casos conhecidos de estouro de disco com mensagens falsas.

    O protocolo syslog e o UDP não fornecem entrega garantida (as mensagens podem ser perdidas durante o congestionamento da rede ou interceptadas, as mensagens corrompidas são excluídas sem aviso), sequência de entrega correta (a mensagem sobre o fim do processo pode vir antes da mensagem sobre seu início) , entrega prioritária.

    As mensagens não são mantidas em sigilo, pois são transmitidas em texto não criptografado.

    Se, ao configurar o gerador de mensagens, você especificar o endereço errado do coletor ou relé, então não haverá mensagens de erro - as mensagens serão excluídas (ou gravadas no log de outra pessoa;).

    Não são fornecidos meios de proteção contra o loop da transmissão de mensagens por relés configurados incorretamente.

    O RFC 3195 propõe um novo protocolo sobre TCP (syslog-conn, 601) para garantir a entrega na seqüência correta. A implementação não é conhecida por mim. Uma mistura monstruosa de XML, comandos e códigos de retorno no estilo SMTP e cabeçalhos MIME (BEEP) envolvidos em mensagens de syslog padrão. Dois modos são usados ​​- RAW (análogo do protocolo UDP atual) e COOKED (as mensagens são estruturadas por campos). O BEEP permite autenticação, integridade e confidencialidade (SASL, TLS).

    O rascunho de RFC syslog-sign propõe fornecer autenticação, ordenação, integridade de mensagem e detecção de mensagem ausente, gerando mensagens especiais contendo uma assinatura digital de um bloco de mensagens anteriores, preservando o protocolo e formato syslog padrão e usando UDP. Usado por SHA1, OpenPGP DSA.

    A porta 514 / UDP é usada para receber mensagens. Também é recomendado usar a porta de origem 514 para mensagens. A mensagem é uma string de texto e não pode ter mais de 1024 bytes de comprimento, caso contrário, pode ser truncada ou até mesmo descartada. Mesmo uma mensagem malformada enviada para a porta 514 deve ser considerada uma mensagem syslog. No entanto, se o relé passar a mensagem adiante, ele deve adicionar cabeçalhos padrão a ela (ao mesmo tempo, possivelmente reduzindo para 1024 bytes) - USUÁRIO, AVISO, sua hora local e o nome simples da fonte da mensagem.

    A mensagem começa com um campo PRI que codifica o recurso e o nível de Severidade da mensagem. É seguido por tempo (TIMESTAMP), espaço, nome do host ou endereço IP em notação decimal (HOSTNAME), espaço, texto de mensagem arbitrário (MSG) em US-ASCII (0x20 - 0x7e).

    O nome do host (simples, não FQDN!) É escrito como conhecido pelo gerador de mensagens. Se o dispositivo tiver várias interfaces com endereços IP diferentes, qualquer um deles pode ser usado como o nome do host ou endereço.

    O texto da mensagem (MSG) geralmente contém uma tag (TAG) que identifica o programa ou processo que emitiu a mensagem e o corpo da mensagem (CONTEÚDO). O rótulo pode conter letras e números latinos. O início do corpo da mensagem é identificado pelo primeiro caractere especial, geralmente dois pontos ou colchete de abertura. Por exemplo, o Cisco IOS usa um número de mensagem sequencial seguido por dois-pontos como rótulo e o Unix usa um nome de programa simples (o corpo da mensagem começa com o número do processo entre colchetes e dois-pontos).

    syslogd recebe mensagens da porta 514 / UDP e de fontes locais (socket / dev / log), roteia-as dependendo da fonte das mensagens e do nível de severidade. Permite que você envie mensagens para o log, envie para o console, para o terminal e envie para outro servidor. Um tipo de fonte adicional MARK é introduzido (marcas regulares, informações)

    Cada linha do log contém um único registro de mensagem, consistindo em campos separados por espaços:

    • data em formato de texto padrão (campo TIMESTAMP da mensagem syslog)
    • nome do host (fqdn ou abreviação, campo HOSTNAME da mensagem syslog)
    • texto da mensagem (campos TAG e CONTENT da mensagem syslog)

    Parâmetros de lançamento:

    • -uma soquete de escuta adicional (útil para daemons fazendo chroot; pode haver vários)
    • -d(modo de depuração)
    • -f nome do arquivo de configuração (padrão, /etc/syslog.conf)
    • -h(mude o comportamento normal pelo qual as mensagens recebidas de hosts remotos não são encaminhadas para serem gravadas no host remoto para evitar loop)
    • -eu lista de hospedeiros (lista de hosts cujos nomes não devem ser escritos como FQDNs; separados por dois pontos)
    • -m minutos (intervalo para gravações temporárias regulares; por padrão - 20; se 0, então não faça nada)
    • -n
    • -p tomada de escuta (padrão: / dev / log)
    • -r(permitir o recebimento de mensagens de hosts remotos; o firewall deve estar ligeiramente aberto; o syslog para 514 / udp deve ser definido em / etc / services)
    • -s lista de domínios (retire os nomes dos domínios especificados dos nomes de host; separados por dois pontos; por padrão, o domínio que corresponde ao domínio do servidor syslog é truncado)
    • -v
    • -x(proíbe a determinação do nome do host por seu endereço, evita deadlock ao trabalhar no mesmo host com o servidor DNS)

    Arquivos usados:

    • /etc/syslog.conf- arquivo de configuração (alterado na inicialização por parâmetro -f)
    • / dev / log- socket a partir do qual as mensagens locais são lidas (alterado na inicialização por parâmetro -p)
    • /var/run/syslogd.pid- id do processo

    Reação aos sinais:

    • SIGHUP - reinicialização (fecha todos os arquivos, lê o arquivo de configuração novamente)
    • SIGTERM - desligamento
    • SIGINT, SIGQUIT - saia se a depuração estiver desativada
    • SIGUSR1 - habilitar / desabilitar a depuração (somente ao usar a opção -d)

    É executado como root. Não altera as permissões do arquivo. Se ele é forçado a criar um arquivo, ele o faz com as permissões 644. Se for necessário restringir o acesso ao log, o arquivo correspondente deve ser criado manualmente (ou permissões alteradas). Cria problemas especiais logrotate.

    É um conjunto de regras de roteamento de mensagens. Cada regra consiste em um seletor e ação, separados por guias (Solaris 5 em sistemas mais antigos) ou espaços (Linux). Ao receber uma mensagem a ser gravada no log (do klogd, de um programa local ou remoto), o syslogd verifica para cada regra se a mensagem corresponde ao padrão especificado pelo seletor. Se aplicável, a ação especificada na regra é executada. Para uma mensagem m. um número arbitrário de ações foi executado (ou seja, o processamento da mensagem não para no primeiro sucesso).

    O seletor possui duas partes, separadas por um ponto: a origem da mensagem e a gravidade. Letras maiúsculas e minúsculas são iguais. Você também pode usar números (consulte /usr/include/syslog.h). Além das fontes definidas em syslog.3, você pode especificar marca(timestamps regulares) segurança(sinônimo obsoleto de auth) Além dos níveis de gravidade definidos em syslog.h, você pode usar avisar(sinônimo de aviso), erro(sinônimo de errar), pânico(sinônimo de emergir) As mensagens com um nível igual ou superior ao especificado no seletor e uma origem igual à especificada no seletor são consideradas válidas. Um asterisco antes de um ponto corresponde a qualquer fonte, depois de um ponto - a qualquer nível. Palavra Nenhum após o ponto - nenhum nível para a fonte fornecida. Você pode especificar várias fontes em um seletor (separadas por vírgulas). Vários seletores podem ser especificados em uma linha. A semântica não é clara: se você usar seletores positivos, a lógica OU se negativo ( Nenhum e um ponto de exclamação), então o lógico E.

    No novo syslogd (linux), o nível pode ser precedido por um sinal de igual - apenas mensagens com o nível especificado (mas não o mais alto) corresponderão ao seletor; ponto de exclamação - as mensagens com um nível igual ou superior não corresponderão; ponto de exclamação e igual não corresponderão a mensagens com um nível igual ao especificado.

    Como uma ação, você pode especificar:

    • nome de arquivo regular (caminho completo da raiz), menos na frente do nome desativa a sincronização de registro
    • canais nomeados - fifo (uma linha vertical é colocada na frente do nome), o próprio canal deve ser criado antes de iniciar o syslogd com o comando mkfifo
    • terminal ou console
    • @hostname (mensagens de passagem para registro remoto)
    • lista de usuários (separados por vírgulas), para cujos terminais a mensagem será enviada
    • um asterisco para enviar uma mensagem a todos os terminais (parede)

    Ao analisar um arquivo de configuração syslogd compara o endereço loghost(definido em / etc / hosts, não via DNS) com o endereço do seu computador e, se corresponder, define a variável LOGHOST... O syslog.conf é então passado pelo processador de macro m4 (1). Basicamente, isso é usado para que o mesmo arquivo de configuração possa ser usado em hosts cliente e servidor (do ponto de vista do syslog).

    Procedimento de partida e parada: /etc/init.d/syslog(links para ele nos diretórios /etc/rc?.d). O número do processo é armazenado em /etc/syslog.pid.

    O klogd lê as mensagens do kernel (por meio de / proc / kmsg ou chamadas de sistema), determina o nível, traduz endereços de comando em nomes de programa e envia uma mensagem para syslogd.

    Parâmetros de lançamento:

    • nível -c(mensagens deste nível e menos sérias serão enviadas para o syslog, e as mais sérias serão enviadas para o console; por padrão - 7; 0 não pode ser especificado)
    • -d(modo de depuração)
    • -f Nome do arquivo (logar no arquivo especificado em vez de syslog)
    • -eu(recarregar os símbolos do módulo no klogd já em execução, deve ser usado toda vez que um módulo é carregado ou descarregado; esperançosamente, as versões atuais do insmod, rmmod e modprobe fazem isso por conta própria)
    • -EU(recarregue os símbolos do kernel e do módulo no klogd já em execução)
    • -k Nome do arquivo (use o arquivo especificado como a tabela de símbolos do kernel em vez de /boot/System.map)
    • -n(não vá para o segundo plano; necessário para executar a partir do init)
    • -o(modo único - registra todas as mensagens acumuladas no buffer do kernel e sai)
    • -p(por precaução, recarregue a tabela de símbolos do módulo no momento da tradução do endereço - o kernel pode não ser capaz de fazer isso)
    • -s(use apenas chamadas de sistema e não vá para / proc / kmsg para obter as mensagens originais)
    • -v(mostrar a versão e terminar)
    • -x(não converta endereços em nomes)
    • -2 (mensagens de travamento do kernel - Oops! - são emitidas duas vezes: antes de converter endereços em nomes - para ksymoops - e depois)

    Níveis de mensagem do kernel (determinados pelo número entre colchetes angulares e convertidos para a gravidade do syslog, inalterados na saída do arquivo):

    • KERN_EMERG - 0 (sistema inutilizável)
    • KERN_ALERT - 1 (ação deve ser tomada imediatamente)
    • KERN_CRIT - 2 (condições críticas)
    • KERN_ERR - 3 (condições de erro)
    • KERN_WARNING - 4 (condições de aviso)
    • KERN_NOTICE - 5 (condição normal, mas significativa)
    • KERN_INFO - 6 (informativo)
    • KERN_DEBUG - 7 (mensagens de nível de depuração)

    Reação aos sinais:

    • SIGINT, SIGKILL, SIGTERM e SIGHUP - desligamento
    • SIGTSTP - parar de registrar
    • SIGCONT - currículo, possivelmente escolhendo outro
    • fonte de mensagens (/ proc / kmsg ou chamadas de sistema)
    • SIGUSR1 - Símbolos de Recarga dos Módulos
    • SIGUSR2 - recarregar símbolos do kernel e do módulo

    O número do processo é armazenado em /var/run/klogd.pid.

    Inicialização de registro: openlog- o prefixo padrão adicionado a todas as mensagens subsequentes é indicado (normalmente o nome do programa, número do processo entre colchetes e dois pontos); fonte e opções. closelog- finalizar o registro. syslog- logging (especifica a fonte, severidade e formato da string como em printf).

    logrotate(versão 3.2-1 / 3.3.2-1 / 3.5.9) - Luta contra o crescimento de logs: rotação (controle de versão), compressão, exclusão e envio de correio. É executado diariamente por cron ( /etc/cron.daily/logrotate) e permite processar logs se eles excederem o tamanho especificado ou no intervalo de tempo especificado. Permite que você processe não apenas os logs do syslog, mas também quaisquer outros programas. Parâmetros:

    • [-d](modo de depuração, nenhuma mudança real é feita)
    • [-f](faça alterações mesmo que logrotate não veja a necessidade - ele é usado quando alterações na lista de registros processados)
    • [-s statefilename ] (o estado atual dos logs é armazenado neste arquivo entre execuções, por padrão - /var/lib/logrotate.status)
    • configfilenames (nomes separados por espaços; a ordem é importante; se um nome de diretório for especificado, cada arquivo nele é considerado um arquivo de configuração; RH usa um arquivo /etc/logrotate.conf e diretório /etc/logrotate.d)

    O arquivo de configuração define parâmetros globais (um por linha) que definem os parâmetros padrão para todos os logs. Para cada lote de logs processados, parâmetros locais são especificados: o nome do arquivo base é especificado, seguido pelos parâmetros locais entre chaves, um por linha. O nome do arquivo pode ser indicado pelas regras do shell se contiver espaços ou outros caracteres especiais. Você pode especificar vários nomes de arquivo ou padrões de nome de arquivo separados por espaços (os padrões também seguem as regras do shell). O processamento de cada seção é tratado como uma única ação. As linhas que começam com o caractere "#" são comentários. Os parâmetros especificados no arquivo de configuração a seguir substituem os valores dos parâmetros especificados no arquivo anterior. Os parâmetros locais têm precedência sobre os parâmetros globais. A ordem dos arquivos no diretório de configuração é indefinida.

    Parâmetros:

    • comprimir | nocompressa(versões mais antigas são compactadas ou não compactadas com gzip)
    • compresscmd(define o programa de compressão, gzip por padrão)
    • descompactar cmd(define o programa de descompressão, por padrão - ungzip)
    • comprimir(define o sufixo para arquivos compactados)
    • opções de compressão(define os parâmetros do programa de compressão; o padrão é "-9", ou seja, a compressão máxima para gzip)
    • copytruncate | nocopytruncate(geralmente a versão antiga é renomeada e uma nova versão do registro é criada; quando este parâmetro é definido, logrotate copia o registro para um novo arquivo e então trunca o antigo; usado se o programa que está criando o registro não puder fechá-lo; registros feitos entre a cópia e o truncamento são perdidos; Mas ajuda se o programa que cria o log, em vez do modo anexar, simplesmente gravar em um arquivo usando um ponteiro interno?)
    • crio [ direitos de acesso proprietário grupo] | nocreate(imediatamente após renomear a versão antiga do diário e antes de chamar postrotate um novo log é criado com os atributos especificados - as permissões são definidas em octal, como em chmod.2; se os atributos não forem especificados, eles serão retirados do registro antigo)
    • Diário(a mudança de versão na série ocorre diariamente)
    • delaycompress | nodelaycompress(alguns programas não fecham imediatamente o log, caso em que a compressão deve ser adiada até o próximo ciclo)
    • erros o email (para quem enviar relatórios de bug)
    • extensão sufixo (define o sufixo adicionado aos nomes dos arquivos ao girar antes do sufixo de compressão)
    • vazio | notifempty(mude as versões mesmo se o arquivo estiver vazio; este é o padrão)
    • incluir Nome do arquivo | nome do diretório (substitui textualmente um arquivo ou todos os arquivos do diretório especificado; subdiretórios, arquivos especiais e arquivos com sufixos da lista de exclusões não são incluídos; não podem ser usados ​​dentro de uma seção)
    • correspondência o endereço | nomail(quando uma alteração de versão torna necessário excluir o log antigo, envie-o para o endereço especificado)
    • mail first(envie não a versão excluída do diário, mas a primeira)
    • maillast(enviar a versão excluída do log; este é o padrão)
    • Missok | Nomissingok(não envie mensagens de erro se o log estiver faltando)
    • por mês(a mudança de versão ocorre mensalmente)
    • olddir diretório | noolddir(durante uma mudança de versão, o log é movido para o diretório especificado; deve estar no mesmo dispositivo físico)
    • postrotate terminar script são executados como comandos shell após o processo de atualização)
    • pré-rodar(todas as outras linhas até a linha terminar script são executados antes do processo de atualização)
    • girar número (quantas versões antigas manter; se 0, então nenhuma)
    • Tamanho byte (a mudança de versão ocorre se o tamanho do log exceder o número especificado; você pode usar os sufixos "k" - kilobytes - e "M" - megabytes)
    • sharedscripts | nosharedscripts(executar comandos pré-rodar e postrotate apenas uma vez para todos os arquivos descritos na seção)
    • texto tabu [+ ] lista de sufixos (especificando uma lista de exceções de sufixo para incluir; se o sinal de mais for especificado, então adição, caso contrário, substituição; padrões: .rpmorig, .rpmsave, .rpmnew, ", v", .swp e "~")
    • semanalmente(a mudança de versão ocorre semanalmente)

    Na entrega RH /etc/logrotate.conf descreve os parâmetros e parâmetros globais para / var / log / wtmp e / var / log / lastlog e se refere ao diretório /etc/logrotate.d, no qual cada pacote grava parâmetros locais para seus logs.

    logwatch é uma estrutura para escrever programas (chamados filtros) para extrair informações úteis de registros numerosos, grandes e variados (não apenas syslog). O "pacote" contém vários filtros projetados para Red Hat Linux (algum tipo de versão antiga, já que inetd é mencionado em vez de xinetd), mas você terá que adaptá-los à situação específica. A última alteração foi feita pelo autor em setembro de 2000, portanto, não há necessidade de esperar por novos desenvolvimentos.

    Os filtros podem ser escritos em qualquer linguagem de programação, mas o autor do pacote prefere perl. Os filtros devem ser escritos de forma que leiam dados de stdin e enviem o resultado para stdout. Antes de chamar o filtro, as variáveis ​​de ambiente são definidas: LOGWATCH_DATE_RANGE, LOGWATCH_DETAIL_LEVEL, LOGWATCH_TEMP_DIR, LOGWATCH_DEBUG. O programa principal também é escrito em perl: /etc/log.d/scripts/logwatch.pl(/etc/log.d/logwatch, / usr / sbin / logwatch e /etc/cron.daily/00-logwatch são links simbólicos para ele).

    Diretório /etc/log.d/conf/logfiles/ contém arquivos de configuração de grupos de log, nos quais os registros dos serviços mantidos são armazenados. Cada grupo é descrito em um arquivo separado nome do grupo.conf, em que são definidos:

    • LogFile = nome do arquivo que contém o log ou padrão de nome; vários nomes ou padrões podem ser especificados; nomes m. relativo a LogDir
    • Archive = o nome do arquivo criado pelo logrotate da versão arquivada do log, ou um padrão de nomenclatura; vários nomes ou padrões podem ser especificados; nomes m. relativo a LogDir
    • nomes de filtro ( apenas uma vez, embora a outra seja mostrada!) a partir de /etc/log.d/scripts/shared/ Como
      *nome-filtro = parametros , por exemplo, para filtrar o log por data, se estiver escrito no formato syslog padrão, use a linha:
      * ApplyStdDate =

    Diretório /etc/log.d/conf/services/ contém os arquivos de configuração para os serviços cujas entradas de registro o logwatch processará. Cada serviço é descrito em um arquivo separado Nome do Serviço.conf, em que são definidos:

    • LogFile = nome do grupo de log
    • filtrar nomes de /etc/log.d/scripts/shared/ Como
      *nome-filtro = parametros antes do filtro de serviço
    • $nome-da-variável-ambiente = significado

    Diretório /etc/log.d/scripts/logfiles/ contém filtros para o processamento de grupos de registros: ao processar um grupo de registros, todos os arquivos do diretório /etc/log.d/scripts/logfiles/ nome do grupo usados ​​como filtros.

    Diretório /etc/log.d/scripts/services/ contém filtros para processar registros de serviços específicos.

    Diretório /etc/log.d/scripts/shared/ contém filtros gerais usados ​​em arquivos de configuração do grupo de registro:

    • applystddate - filtra o log pela data exigida, se estiver escrito no formato syslog (aqui e nos filtros privados por data, insira LANG = antes da data de chamada, caso contrário, março não coincide com março de forma alguma;)
    • expandrepeat - transforma as linhas da "última mensagem repetida" no número correspondente de linhas de mensagem da linha anterior
    • onlycontains - deixa apenas as linhas de registro que contêm a string especificada (coloquei aspas em torno de "$ *")
    • onlyservice - extrai do log em formato syslog as linhas relacionadas ao serviço especificado (o nome do serviço é passado como um parâmetro)
    • remove - deixa apenas as linhas de registro no formato syslog que não contêm a linha especificada ( Coloquei aspas em torno de "$ *" e fiz remove1, remove2, etc. já que eu não entendi como especificar vários subpadrões para egrep em uma linha; a propósito, os parâmetros são substituídos no shell, portanto, caracteres especiais também não podem ser usados)
    • removeheaders - remove os campos padrão (data, hora, nome do host, etiqueta do serviço e número do processo)
    • removeservice - extrai linhas do log em formato syslog que não estão relacionadas ao serviço especificado (o nome do serviço é passado como um parâmetro)

    Os parâmetros padrão são armazenados no arquivo /etc/log.d/conf/logwatch.conf (/etc/log.d/logwatch.conf tem um link simbólico para ele), comentários nos quais permitem que você entenda o significado do parâmetros:

    • LogDir - o diretório relativo ao qual os nomes de arquivos são considerados
    • MailTo - para quem enviar o relatório
    • Imprimir - em vez de enviar um relatório por correio, envie-o para stdout
    • Salvar - em vez de enviar o relatório por e-mail, ele o salvará no arquivo especificado
    • Arquivos - use versões de registros gerados por logrotate
    • Intervalo - intervalo de tempo considerado: Todos, Hoje, Ontem (dia do calendário de ontem)
    • Detalhe - o nível de detalhe do relatório: de 0 a 10 ou baixo, médio, alto
    • Serviço - Todos ou nome do filtro de /etc/log.d/scripts/services/ (vários filtros podem ser especificados)
    • LogFile - tudo ou o nome do grupo de log (vários grupos podem ser especificados)

    Parâmetros de lançamento:

    • --detalhe nível (nível de detalhe do relatório: alto, médio ou baixo)
    • --arquivo de log group-logs (processar apenas os logs deste grupo; o grupo é especificado por um nome simbólico no arquivo de configuração; vários grupos podem ser especificados)
    • --serviço Nome do Serviço (processar apenas as entradas nos registros relacionados a este serviço; o serviço é especificado por um nome simbólico no arquivo de configuração; vários serviços podem ser especificados; nome Tudo processamento de chamadas de registros para todos os serviços)
    • --imprimir(reporte para stdout)
    • --mailto o endereço (enviar um relatório para o endereço especificado)
    • --Salve  Nome do arquivo (gravar o relatório no arquivo especificado)
    • --arquivos(processa não apenas as versões atuais dos registros, mas também as cópias antigas criadas pelo logrotate)
    • --alcance intervalo de datas (processe apenas as entradas nos registros que se relacionam com o intervalo de tempo determinado: Ontem, Hoje, Tudo)

    O principal uso é incluir um arquivo 00-logwatch (começando em "00" para ser executado antes do logrotate) no diretório /etc/cron.daily, o que faz com que o logwatch seja executado diariamente com opções padrão.

    Infelizmente, todos os filtros são projetados para que os logs sejam gravados no mesmo host em que o serviço está sendo executado.

    Todos os logs são mantidos em um computador (se você tiver tendências paranóicas, pode gravar logs em dois servidores ao mesmo tempo).

    A correspondência entre o nome formal da fonte e o dispositivo ou programa real:

    • local0 - Cisco
    • local3 - ftp (há um nome de fonte especial, mas Solaris 2.5 não o conhece)
    • local4 - reservado para contabilidade
    • local5 - POP3 / IMAP
    • local6 - tac_plus>

    Uma tela para a porta 514 / udp deve ser aberta no servidor (você pode restringir os endereços de origem dos pacotes, mas isso só ajudará em acidentes). O início do syslogd (parâmetros em /etc/rc.d/init.d/syslog ou / etc / sysconfig / syslog) deve ser iniciado com as chaves "-r -m 0" (e também "-x" se o mesmo computador for executando o servidor DNS). Inicie o klogd com as opções "-2 -c 1". Configuração de Syslog.conf:

    • * .crit - mensagens de nível de gravidade CRIT e superior devem ser enviadas aos terminais e gravadas em um arquivo separado (chmod 600), suas mensagens devem ser enviadas para o servidor de backup; O sendmail considera as mensagens sobre problemas de recepção de correio como críticas
    • kern - cria um arquivo kern para todos os níveis de mensagens (chmod 600)
    • mail - cria um arquivo de e-mail para mensagens de todos os níveis (sem sincronização)
    • auth, authpriv - crie um arquivo seguro para mensagens de todos os níveis (chmod 600)
    • news - no diretório de notícias, crie um arquivo separado para cada nível de gravidade (depurar sem sincronização)
    • cron - cria um arquivo cron para mensagens de todos os níveis (cron no RH 6.2 e Solaris 2.5 não pode usar syslog)
    • local0 - cria um arquivo separado para cada nível de severidade no diretório cisco (errar e abaixo sem sincronização)
    • local3 - no diretório ftp, crie um arquivo separado para cada nível de gravidade (informações e depuração sem sincronização)
    • local5 - cria arquivo imap.log para mensagens de todos os níveis
    • local6 - cria um arquivo tac_plus.log para mensagens de todos os níveis
    • local7 - arquivo boot.log (mensagens quando o sistema inicializa e syslogd e klogd iniciam ou param)
    • todas as mensagens de nível INFO e superior que não entraram em um dos arquivos definidos acima, gravam no arquivo de mensagens (chmod 600)

    Em computadores clientes, configure o syslog de forma que todas as mensagens sejam enviadas ao servidor syslog, as mensagens de erro sejam duplicadas em / var / log / syslog, as mensagens de status crítico sejam duplicadas no console e nos terminais de usuário. Em máquinas Linux, também despeje as mensagens de inicialização no arquivo local (local7, boot.log). O servidor syslog de backup deve receber mensagens críticas da rede e gravá-las em um arquivo (buraco na tela, switch de inicialização "-r").

    logrotate: manter para sempre, alterar versões tão raramente quanto possível (mensalmente, exceto squid), despejar em diretórios separados (exceto squid) e compactar (em modo atrasado, exceto ftpd, linuxconf, sendfax), enviar erros e arquivos deletados para mim. Parâmetros de correspondência para syslog.

    Colocar uma barra vertical (|) na frente do nome do arquivo permitirá que você use fifo (primeiro a entrar - primeiro a sair, primeiro veio - primeiro saiu) ou tubo nomeado como receptor de mensagens. Antes de iniciar (ou reiniciar) o syslogd, você deve criar um fifo usando o comando mkfifo. Às vezes, fifos são usados ​​para fins de depuração.

    Terminal e Console

    Terminal como / dev / console.

    Maquina remota

    Para encaminhar mensagens para outro host, coloque o símbolo @ antes do nome do host. Observe que as mensagens não são encaminhadas do host de recebimento. (para que esta atribuição funcione no cliente e servidor no arquivo / etc / services a linha deve ser escrita syslog 514 / udp e a porta UTP 514 está aberta)

    uma lista de usuários

    Uma lista separada por vírgulas de usuários que recebem mensagens (se o usuário estiver conectado). Isso geralmente inclui o usuário root.

    Todos os usuários registrados

    Para notificar todos os usuários registrados com o comando wall, use o símbolo de asterisco (*).

    Um exemplo de um descomplicado syslog.conf:

    # Envie todas as mensagens do kernel para o console. # kern. * / dev / console # Todos os logs em nível de informação ou superior, exceto para mensagens de e-mail, e # não registra mensagens de autenticação e mensagens daemon cron! * .info; mail.none; authpriv.none; cron.none / var / log / messages # Grava mensagens contendo # informações de autenticação confidenciais em um arquivo separado, independentemente de seu nível. authpriv. * / var / log / secure # Todas as mensagens do sistema de e-mail também devem ser gravadas em um arquivo separado. mail. * - / var / log / maillog # Registrar as mensagens do planejador em / var / log / cron cron. * / var / log / cron # As mensagens de emergência devem ser recebidas imediatamente # todos os usuários do sistema * .emerg * # Salvar mensagens, notícias de nível crítico e superior em um arquivo separado. uucp, news.crit / var / log / spooler # Salvar mensagens de inicialização em boot.log local7. * /var/log/boot.log

    Como acontece com muitos arquivos de configuração, a sintaxe é a seguinte:

    • linhas que começam com # e linhas em branco são ignoradas.
    • O símbolo * pode ser usado para indicar todas as categorias ou todas as prioridades.
    • A palavra-chave especial nenhum indica que nenhum registro para esta categoria deve ser executado para esta ação.
    • Um hífen antes do nome do arquivo (como / var / log / maillog neste exemplo) indica que o log não deve ser sincronizado após cada entrada. No caso de uma falha do sistema, você pode perder informações, mas desabilitar a sincronização melhorará o desempenho.

    Na sintaxe do arquivo de configuração, você pode colocar antes da prioridade sinal! para indicar que a ação não deve ser aplicada, deste nível e acima... Da mesma forma, a prioridade pode ser dada a sinal = para indicar que a regra se aplica apenas a esse nível, ou != para indicar que a regra se aplica a todos os níveis, exceto este. Alguns exemplos são mostrados abaixo (muitos outros exemplos podem ser encontrados em man syslog.conf):

    # Envie todas as mensagens do kernel para / var / log / kernel. # Envia todas as mensagens críticas e superiores para a máquina sysloger remota e para o console # Envia todas as informações, mensagens de aviso e de aviso para / var / log / kernel-info # kern. * / Var / log / kernel kern.crit @sysloger kern .crit / dev / console kern.info; kern.! err / var / log / kernel-info # Envia todas as mensagens do sistema de correio, exceto o nível de informação em / var / log / mail. mail. *; mail.! = info / var / log / mail

    Tentei mostrar o trabalho do syslogd da forma mais clara possível no diagrama:

    Iniciando o daemon syslogd

    O daemon de registro é iniciado na fase de inicialização do sistema por meio de um script /etc/rc.d/init.d/syslog, no entanto, para definir os parâmetros de inicialização, não há necessidade de ajustar este script - a partir da versão 7.2, as opções de inicialização são lidas em um arquivo de configuração separado / etc / sysconfig / syslog (/ etc / default / syslogem debian).

    Aqui estão alguns possíveis Opções de inicialização do daemon syslogd:

    • -a / pasta / soquete- especificando um soquete de escuta adicional (não se esqueça de criar um soquete primeiro)
    • -d- modo de depuração. Nesse caso, o daemon não entra em segundo plano e envia todas as mensagens para o terminal atual;
    • -f nome do arquivo de configuração... Especifica o nome de um arquivo de configuração alternativo a ser usado em vez do /etc/syslog.conf padrão;
    • -l host-list- definir uma lista de hosts cujos nomes não devem ser registrados com a indicação do nome de domínio completo (FQDN - Full Qwalified Domain Name);
    • -m minutos- sysklogd lançado sem esta opção registra mensagens da categoria de marca (timestamps) a cada 20 minutos. Usando a opção -m, você pode alterar o intervalo entre as marcas ou cancelar completamente a emissão de tais mensagens;
    • -p socket- definir um socket UNIX alternativo (ao invés de escutar por padrão / dev / log);
    • -r- permissão para receber mensagens de hosts remotos;
    • -x- proibição de determinar o nome do host por seu endereço para evitar o congelamento ao trabalhar no mesmo host com o servidor DNS.
    • -v- mostrar a versão e terminar o trabalho

    Depois de iniciar o daemon syslogd, um arquivo de status é gerado / var / lock / subsys / syslog comprimento zero e arquivo com ID de processo /var/run/syslogd.pid.

    Usando o comando
    kill -SIGNAL `cat / var / run / syslogd.pid`

    pode ser enviado para o daemon syslogd um dos seguintes sinais: SIGHUP- reiniciando o demônio; SIGTERM- conclusão do trabalho; SIGUSR1- ativar / desativar o modo de depuração.

    Na verdade, existem dois daemons de registro em execução no sistema - syslogd e klogd... Ambos os daemons estão incluídos no pacote sysklogd.

    O daemon klogd responsável por registrar eventos que ocorrem em o núcleo do sistema... A necessidade de um daemon klogd separado é porque o kernel não pode usar a função syslog padrão. O ponto é que as bibliotecas C padrão (incluindo a biblioteca que contém a função syslog) devem ser usadas apenas aplicações convencionais... Como o kernel também precisa da funcionalidade de registro, ele inclui suas próprias bibliotecas que não estão disponíveis para os aplicativos. Portanto, o kernel usa seu próprio mecanismo de geração de mensagens.

    O daemon klogdé projetado para organizar o processamento dessas mensagens. Em princípio, ele pode fazer esse processamento de forma completamente independente e independente do syslogd, por exemplo, gravando essas mensagens em um arquivo, mas na maioria dos casos a configuração klogd padrão é usada, que envia todas as mensagens do kernel para o mesmo daemon syslogd.

    Rotação automática (atualização de arquivos completos) e arquivamento de registros

    Com o tempo, o arquivo de log tende a crescer, principalmente com o trabalho intensivo de qualquer serviço. Conseqüentemente, você precisa ser capaz de controlar o tamanho dos logs. Isso é feito com comandos logrotate o que geralmente é feito cron daemon... Falarei sobre o trabalho do cron nos próximos artigos. o objetivo principal comandos logrotateé fazer backup dos logs periodicamente e criar novos logs limpos. Várias gerações de logs são retidas e, quando o log da última geração atinge sua data de expiração, ele pode ser arquivado (compactado). O resultado pode ser enviado por correio, por exemplo, para o responsável pela manutenção dos arquivos.

    Para determinar a ordem de rotação e arquivamento de logs, use arquivo de configuração /etc/logrotate.conf ... Para diferentes periódicos, você pode definir uma frequência diferente, por exemplo, diária, semanal ou mensal, além disso, você pode ajustar o número de gerações acumuladas, bem como especificar se as cópias dos arquivos serão enviadas para o responsável pela manutenção arquivos e, em caso afirmativo, quando. Mostrado abaixo exemplo de arquivo /etc/logrotate.conf:

    # os parâmetros "padrão" são definidos primeiro (opções globais) # atualiza os arquivos de log semanalmente # mantém um arquivo de logs das últimas 4 semanas gire 4 # cria um novo arquivo (vazio) após a rotação (atualização) cria # descomente se você deseja que os arquivos salvos sejam compactados #compress # habilitar configurações de rotação do diretório especificado include /etc/logrotate.d # não armazenar wtmp ou btmp - as configurações de rotação de dados de log são as seguintes: / var / log / wtmp (missingok criar mensalmente 0664 root utmp rotate 1) / var / log / btmp (missingok mensal criar 0664 root utmp rotate 1) # logs de sistema específicos podem ser configurados abaixo

    As opções globais são colocadas no início arquivo logrotate.conf... Eles são usados ​​por padrão se nada mais específico for especificado em outro lugar. No exemplo, a rotação dos periódicos ocorre semanalmente e os backups são mantidos por quatro semanas. Assim que o diário é girado, um novo é criado automaticamente no lugar do antigo. Arquivo logrotate.conf pode conter especificações de outros arquivos. Portanto, inclui todos os arquivos do diretório /etc/logrotate.d.

    Este exemplo também contém regras especiais para / var / log / wtmp e / var / log / btmp(armazenamento de informações sobre tentativas bem-sucedidas e malsucedidas de login no sistema), que são alternadas mensalmente. Se os arquivos estiverem faltando, nenhuma mensagem de erro será exibida. Um novo arquivo é criado e apenas um backup é salvo.

    Neste exemplo, quando o backup atinge a última geração, ele é excluído porque não está definido o que fazer com ele.

    Log de backups também pode ser gerado quando os logs atingem um determinado tamanho e os scripts podem ser gerados a partir de conjuntos de comandos para executar antes ou depois de uma operação de backup. Exemplo:

    / var / log / messages (girar 5 e-mails [email protegido] tamanho 100k postrotate / usr / bin / killall -HUP syslogd endcript)

    Neste exemplo, a rotação / var / log / messages produzido quando atinge 100 KB. Cinco backups são acumulados e quando o backup mais antigo expira, ele é enviado para [email protegido] A palavra de comando postrotate permite que um script reinicie o daemon syslogd após a rotação ser concluída, enviando um sinal HUP. A palavra de comando endscript é necessária para encerrar o script e também se o script de pré-rotação estiver disponível. Veja as páginas man do logrotate para mais informações.

    Parâmetros fornecido no arquivo de configuração logrotate.conf:

    • comprimir| nocompressa(versões mais antigas são compactadas ou não compactadas com gzip)
    • compresscmd(define o programa de compressão, gzip por padrão)
    • descompactar cmd(define o programa de descompressão, por padrão - ungzip)
    • comprimir(define o sufixo para arquivos compactados)
    • opções de compressão(define os parâmetros do programa de compressão; o padrão é "-9", ou seja, a compressão máxima para gzip)
    • copytruncate| nocopytruncate(geralmente a versão antiga é renomeada e uma nova versão do registro é criada; quando este parâmetro é definido, logrotate copia o registro para um novo arquivo e então trunca o antigo; usado se o programa que está criando o registro não puder fechá-lo; registros feitos entre a cópia e o truncamento são perdidos; mas ajuda se o programa que cria o log, em vez do modo de acréscimo, simplesmente gravar em um arquivo usando um ponteiro interno?)
    • crio[grupo de proprietários de permissões] | nocreate(imediatamente após renomear a versão antiga do diário e antes de chamar o postrotate, um novo diário é criado com os atributos especificados - as permissões são definidas em octal, como em chmod.2; se nenhum atributo for especificado, eles serão retirados do antigo Diário)
    • Diário(a mudança de versão na série ocorre diariamente)
    • delaycompress| nodelaycompress(alguns programas não fecham imediatamente o log, caso em que a compressão deve ser adiada até o próximo ciclo)
    • erroso email(para quem enviar relatórios de bug)
    • extensãosufixo(define o sufixo adicionado aos nomes dos arquivos ao girar antes do sufixo de compressão)
    • vazio| notifempty(mude as versões mesmo se o arquivo estiver vazio; este é o padrão)
    • incluirNome do arquivo| nome do diretório (substitui textualmente um arquivo ou todos os arquivos do diretório especificado; subdiretórios, arquivos especiais e arquivos com sufixos da lista de exclusões não são incluídos; não podem ser usados ​​dentro de uma seção)
    • correspondênciao endereço| nomail(quando uma alteração de versão torna necessário excluir o log antigo, envie-o para o endereço especificado)
    • mail first(envie não a versão excluída do diário, mas a primeira)
    • maillast(enviar a versão excluída do log; este é o padrão)
    • Missok| Nomissingok(não envie mensagens de erro se o log estiver faltando)
    • por mês(a mudança de versão ocorre mensalmente)
    • olddirdiretório| noolddir(durante uma mudança de versão, o log é movido para o diretório especificado; deve estar no mesmo dispositivo físico)
    • postrotate(todas as outras linhas até a linha endcript são executadas como comandos shell após o processo de mudança de versão)
    • pré-rodar(todas as outras linhas até a linha do endcript são executadas antes do processo de mudança de versão)
    • girarnúmero(quantas versões antigas manter; se 0, então nenhuma)
    • Tamanhobyte(a mudança de versão ocorre se o tamanho do log exceder o número especificado; você pode usar os sufixos "k" - kilobytes - e "M" - megabytes)
    • sharedscripts| nosharedscripts(execute os comandos prerotate e postrotate apenas uma vez para todos os arquivos descritos na seção)
    • texto tabu[+] lista de sufixos(especificando uma lista de exclusões de sufixo para inclusão; se o sinal de mais for especificado, adição, caso contrário, substituição; por padrão: .rpmorig, .rpmsave, .rpmnew, ", v", .swp e "~")
    • semanalmente(a mudança de versão ocorre semanalmente)

    Explorando e monitorando registros

    As entradas de log geralmente contêm um carimbo de data / hora, o nome do host no qual o processo descrito está sendo executado e o nome do processo. Ver registros você pode usar um programa de paginação, por exemplo, menos, você pode pesquisar por entradas específicas (por exemplo, mensagens do kernel de um daemon específico) usando o comando grep:

    # less / var / log / messages # grep "ppp" / var / log / messages | cauda 17 de dezembro 16:34:25 proxy pppd: Conexão encerrada. 17 de dezembro 16:34:25 proxy pppd: Sair. 17 de dezembro 16:35:57 proxy pppd: LCP terminado por par (^ P] kV ^ @

    O computador pode não funcionar o tempo todo e desligar, digamos, à noite. Portanto, os registros em / var / log / messages são armazenados ciclicamente desde a inicialização até o desligamento do computador, isso pode ser visto nas mensagens:

    17 de dezembro 08:32:56 syslog-server syslogd 1.4-0: reiniciar. 17 de dezembro 08:32:56 syslog-server syslog: syslogd bem-sucedido 17 de dezembro 08:32:56 kernel do syslog-server: klogd 1.4-0, fonte de log = / proc / kmsg iniciado. 17 de dezembro 08:32:56 syslog-server syslog: o início do klogd foi bem-sucedido

    17 de dezembro 08:32:56 kernel do servidor syslog: linha de comando do kernel: auto BOOT_IMAGE = linux ro root = 303 BOOT_FILE = / boot / vmlinuz-2.4.2-2 17 de dezembro 08:32:56 kernel do servidor syslog: Memória: 125652k / 130560k disponível (código do kernel 1365k, 4200k reservado, dados 92k, inicialização 236k, highmem 0k) 17 de dezembro 08:32:56 kernel do servidor syslog: CPU: Intel (R) Pentium (R) 4 CPU 1,60 GHz revisão 02

    Além disso, neste arquivo você pode encontrar informações sobre a memória do disco (incluindo informações sobre a geometria do disco, estrutura da partição e interrupções usadas), informações sobre dispositivos periféricos, sobre como iniciar serviços e serviços individuais, informações sobre como conectar sistemas de arquivos e mensagens sobre o logon do usuário também como mensagens de erro.

    Às vezes pode ser necessário monitorar logs do sistema a fim de pesquisar eventos atuais. Por exemplo, você pode tentar capturar um evento raro no momento em que aconteceu. Neste caso, você pode usar o comando cauda com opção -f para rastrear o conteúdo do syslog. Exemplo:

    # tail -f / var / log / messages | grep syslog-server 17 de dezembro 16:46:09 syslog-server pppd: pptpd-logwtmp.so ip-up ppp0 maikop 94.77.0.150 17 de dezembro 16:46:09 syslog-server pppd: Script / etc / ppp / ip-up concluído (pid 12552), status = 0x0 17 de dezembro 16:46:49 syslog-server pptpd: CTRL: Cliente 85.175.197.65 conexão de controle iniciada 17 de dezembro 16:46:49 syslog-server pptpd: CTRL: Iniciando chamada (iniciando pptpd, abrindo GRE) 17 de dezembro 16:46:49 syslog-server pppd: Plugin /usr/lib/pptpd/pptpd-logwtmp.so carregado.

    Além dos arquivos de log especificados em /etc/syslog.conf, também existem outros arquivos, por exemplo, um arquivo que armazena informações sobre o processo de inicialização do sistema antes de iniciar o syslogd, bem como arquivos que têm um formato binário e armazenam informações sobre o último logon de usuário de entrada, todos os logins de usuário bem-sucedidos e todos os logons de usuário malsucedidos, respectivamente. Além disso, o diretório / var / log / pode conter os arquivos de log de daemons, como um servidor web ou um servidor proxy. O formato desses arquivos é semelhante aos logs do syslogd.

    Por fim, gostaria de enfatizar que esse protocolo não é muito seguro, tk. O syslog não contém nenhum meio de proteção contra falsificação de mensagens. Pior, o uso de UDP permite que invasores enviem mensagens em nome de qualquer host. Sua rede local deve ser protegida contra o recebimento de pacotes com endereços locais falsos (embora isso não o impeça de enviar mensagens falsas de dentro da rede local) e de receber pacotes fora da porta 514 / udp. Existem casos conhecidos de estouro de disco com mensagens falsas.

    O protocolo syslog e o UDP não fornecem entrega garantida (as mensagens podem ser perdidas durante o congestionamento da rede ou interceptadas, as mensagens corrompidas são excluídas sem aviso), sequência de entrega correta (a mensagem sobre o fim do processo pode vir antes da mensagem sobre seu início) , entrega prioritária.

    As mensagens não são mantidas em sigilo, pois são transmitidas em texto não criptografado.

    Se, ao configurar o gerador de mensagens, você especificar o endereço errado do coletor ou relé, então não haverá mensagens de erro - as mensagens serão excluídas (ou gravadas no log de outra pessoa).

    Vários projetos têm sido propostos para melhorar o protocolo syslog. Por exemplo, a RFC 3195 propõe um sistema de registro baseado em TCP (syslog-conn) para garantir que as mensagens sejam entregues na seqüência correta. O projeto syslog-sign se propõe a fornecer autenticação, ordenação, integridade de mensagem e detecção de mensagem ausente, gerando mensagens especiais contendo uma assinatura digital de um bloco de mensagens anteriores, mantendo o protocolo e formato syslog padrão e usando UDP.

    Vamos resumir:

    O Linux tem um único daemon responsável por registrar eventos no sistema local e em sistemas remotos. Todos os eventos são coletados do soquete / dev / log, porta UDP - 514, bem como do "auxiliar" - o daemon klogd, que envia mensagens do kernel. Todas as mensagens coletadas são filtradas pelo daemon syslogd por meio das regras no arquivo /etc/syslog.conf e distribuídas de acordo com as regras para os destinos apropriados. Os arquivos de log são periodicamente "truncados". A frequência é determinada pelo arquivo logrotate.conf e pelo comando logrotate, que é executado pelo planejador do sistema - cron.

    Isso é tudo por hoje. Espero ter descrito tudo da forma mais clara possível. Com o tempo, irei complementar o artigo!

    Atenciosamente, Mc.Sim!

    SERGEY SUPRUNOV

    Dicas do FreeBSD: usando syslog

    - Com licença, camaradas, tenho todas as jogadas anotadas!

    “O escritório está escrevendo”, disse Ostap.

    I. Ilf, E. Petrov "12 cadeiras".

    Registrar o trabalho de qualquer sistema, e acima de tudo do servidor, é um dos componentes mais importantes da administração. É nos arquivos de log que examinamos em primeiro lugar quando há alguns problemas no sistema. A partir daí, derivamos a confiança de que este ou aquele programa funciona conforme o esperado. Ao desenvolver aplicativos da web, o arquivo de log se torna a fonte mais importante de informações de depuração. Os recursos do daemon syslog, que é responsável por registrar as informações do sistema, serão discutidos.

    O que é syslog

    Syslog é um serviço centralizado que coleta e registra informações de log de vários componentes do sistema operacional e processos do usuário. Os programas de terceiros geralmente são capazes de trabalhar com seus arquivos de log por conta própria, embora muitos deles possam ser configurados para funcionar com o daemon syslogd. As vantagens da utilização do syslog incluem a possibilidade de controlar o processo de coleta das informações necessárias por meio de um único arquivo de configuração, o que garante a consistência dos arquivos de log recebidos e, consequentemente, simplifica seu gerenciamento.

    O serviço syslog é fornecido pelo daemon syslogd, que é iniciado automaticamente na inicialização do sistema. Está constantemente na memória, aguardando mensagens de outros processos e processando-as de acordo com suas configurações.

    Cada mensagem é caracterizada por um nível e uma facilidade. O nível especifica o grau de importância da mensagem em termos de funcionamento do sistema. O arquivo syslog.h define os seguintes níveis (prioridades):

    Tabela 1. Níveis de mensagem

    Nível

    Descrição

    emergir em pânico

    Estado de pânico

    alerta

    Uma condição que requer atenção imediata

    crit

    Condição crítica

    errar erro

    Outros erros de trabalho

    advertência, advertência

    Avisos

    perceber

    Mensagens que não são erros, mas devem ser observadas

    informação

    Mensagens de informação (operação normal)

    depurar

    Informações de depuração

    A Tabela 1 lista os níveis de mensagem em ordem decrescente. Essa ordem será necessária posteriormente na discussão da sintaxe do arquivo de configuração.

    Os designadores de nível de mensagem escritos na mesma linha (por exemplo, emerg e panic) são sinônimos e qualquer um deles pode ser usado. No entanto, panic, error e warn (listados em segundo lugar na tabela) estão obsoletos e devem ser evitados ao editar o arquivo de configuração. Em vez disso, use emerg, err e warning.

    As possíveis fontes da mensagem estão listadas na Tabela 2:

    Tabela 2. Fontes de mensagens

    Uma fonte

    Descrição

    kern

    Mensagens de kernel

    auth, authpriv

    segurança

    Mensagens de segurança (por exemplo, de um firewall)

    console

    Mensagens para o console (/ dev / console)

    syslog

    Mensagens nativas do Syslog

    cron

    Mensagens do subsistema Cron

    Mensagens de serviço de tempo

    Postagens Servidores FTP

    Imprimir mensagens do subsistema

    correspondência

    Mensagens dos correios

    notícias

    Mensagens de serviço de notícias

    uucp

    Postagens UUCP

    demônio

    Mensagens de outros daemons em execução no sistema

    do utilizador

    Mensagens de processo do usuário

    local0 - local7

    Pode ser usado para várias necessidades do usuário (às vezes também usado pelo sistema)

    Ao configurar um aplicativo para funcionar com o serviço syslog, verifique qual recurso ele está usando. Alguns programas permitem que você mesmo especifique a fonte. Por exemplo, o clamd daemon (o processo principal do antivírus clamav) usa local6 por padrão, mas permite que você especifique uma fonte diferente (o parâmetro LogFacility no arquivo de configuração). Em alguns casos, pode ser útil combinar suas mensagens com mensagens de serviços de correio, especificando LOG_MAIL como a fonte.

    Opções de inicialização do Daemon

    Uma lista completa de opções de inicialização pode ser encontrada na página man do syslogd. Aqui, consideraremos apenas alguns deles.

    Syslog é capaz de escrever mensagens de entrada em arquivos de log (que geralmente estão localizados no diretório / var / log), enviá-los para o console ou um terminal de usuário conectado, enviá-los para um host remoto ou canalizá-los para um utilitário externo para em processamento.

    Para rede, o syslog usa as portas 514 (UDP e TCP). O Syslogd, iniciado sem parâmetros adicionais, escutará essas portas para mensagens de entrada. A opção -s desativa as mensagens de entrada, mas os soquetes nas portas 514 ainda são criados para conexões de saída para que o syslogd possa enviar mensagens para hosts remotos. Dobrar a chave (-ss) também nega conexões de saída.

    Por padrão, syslogd é iniciado com a opção -s (consulte /etc/defaults/rc.conf, parâmetro syslogd_flags), portanto, as conexões de entrada são negadas. Se você deseja usar o serviço syslog do seu servidor para servir várias máquinas, adicione a seguinte linha a /etc/rc.conf:

    syslogd_flags = ””

    Isso substituirá o valor definido em /etc/defaults/rc.conf para que o syslogd possa controlar as conexões de entrada. Naturalmente, neste caso, é necessário garantir o nível de segurança exigido, excluindo a possibilidade de hosts estrangeiros gravarem qualquer coisa em seus logs. A opção -a permite definir restrições nas conexões de entrada (consulte man syslogd). Um firewall configurado corretamente também desempenha um papel importante.

    Outra opção útil, -l, permite que você especifique arquivos de soquete adicionais que o syslogd escuta além do / var / run / log padrão. Por exemplo, essa opção é necessária para que o syslog possa lidar com programas em execução em um ambiente chroot. Em particular, é assim que o named funciona desde o BIND 9. No FreeBSD 5.3, o syslogd é iniciado com as seguintes chaves:

    # ps -wax | grep syslog

    321 ?? Ss 0: 01.67 / usr / sbin / syslogd -l / var / run / log -l / var / named / var / run / log -s

    Sintaxe do arquivo de configuração

    O registro é configurado no arquivo /etc/syslog.conf. Nem é preciso dizer que apenas o usuário root pode editá-lo. Este arquivo contém dois tipos de strings - vamos chamá-los de "filtros" e "regras".

    A string de filtro especifica o programa ou host para aplicar as seguintes regras às mensagens. Um filtro como "! Prog" (ou "#! Prog") indica que as linhas a seguir se referem aos logs gerados pelo programa prog especificado. O sinônimo para esta entrada é "! + Prog". Por outro lado, a linha "! -Prog" significa que as seguintes regras se aplicarão a todas as mensagens, exceto aquelas provenientes do programa prog. É permitido listar vários programas separados por vírgulas, enquanto o sinal "+" ou "-" é aplicado a toda a lista.

    Se a string do filtro for especificada como "+ nome do host", o host especificado será usado como a origem das mensagens a serem processadas pelas regras subsequentes. Como no caso dos programas, o símbolo “-” indica que as regras se aplicarão a todas as mensagens, exceto aquelas provenientes do host especificado. Você pode especificar uma lista de hosts separados por vírgulas.

    O caractere "*" especificado como um programa ou host substituirá o filtro definido anteriormente. Ou seja, as regras especificadas após essa linha serão aplicadas a todas as mensagens. Os filtros com um nome de host ou programa são independentes uns dos outros e podem operar ao mesmo tempo. Por exemplo:

    # As regras localizadas aqui se aplicam a todas as mensagens

    Meu hospedeiro

    # As regras se aplicam a todas as mensagens de my.host

    Madeireiro

    # As regras se aplicam a mensagens do logger com my.host (filtro de host continua)

    # As regras se aplicam a mensagens de su com my.host

    # As regras se aplicam a mensagens do su de quaisquer hosts (o filtro do host foi cancelado, o filtro do programa continua)

    # As regras são aplicadas a todas as mensagens (o filtro do programa também é cancelado)

    As linhas da regra são as seguintes:

    facilidade. Destino de nível MP

    Aqui, facilidade é a fonte da mensagem ("*" significa qualquer fonte), nível é o nível de mensagens que serão processadas de acordo com esta regra. A palavra de serviço "nenhum", especificada em vez do nível, instrui para excluir completamente as mensagens desta fonte.

    CMP - operação de comparação (símbolos ">", "<», «=», «>=», «<=», а также символ отрицания «!»). Если символ сравнения не указан, подразумевается «больше или равно», то есть обрабатываются все сообщения уровня level и выше.

    Destino especifica onde esta mensagem deve ser salva. Pode ser um arquivo de log (o caminho completo é indicado, começando com "/"), o endereço do servidor remoto (começando com o símbolo "@"), um nome de usuário (as mensagens serão enviadas para o terminal para o qual este usuário está conectado). Além disso, a mensagem pode ser passada para um programa externo para processamento, para o qual o símbolo de pipe "|" é usado.

    Alguns exemplos de regras

    Todas as mensagens do kernel serão enviadas para o arquivo kern.log.

    kern. * /var/log/kern.log

    Todas as mensagens de erro, bem como mensagens de emergência, alerta e nível de crítica serão colocadas em all-err.log. Observe o hífen antes do nome do arquivo de log. Por padrão, as mensagens são armazenadas em buffer na memória e gravadas no disco conforme o buffer é preenchido. Isso reduz a carga no sistema de arquivos, mas pode fazer com que algumas informações sejam perdidas quando a máquina travar. O hífen na frente do nome do arquivo faz com que o daemon syslogd grave mensagens imediatamente no disco.

    * .err - / var / log / all-err.log

    As mensagens de depuração dos processos do usuário serão enviadas ao terminal ao qual o usuário vasya está conectado no momento.

    user.debug vasya

    Todas as mensagens de notícias e serviços de e-mail serão encaminhadas para a porta 514 da máquina syslog.host.ru.

    mail. *, news. * @ syslog.host.ru

    Todas as mensagens de serviço de impressão abaixo de aviso serão colocadas no arquivo especificado. Conforme declarado anteriormente, o padrão é maior ou igual à comparação, e o! ele inverte, substituindo-o por "menos". Se você precisa excluir um nível específico, você deve usar a construção "! =".

    lpr.! warning /var/log/printers.log

    Mensagens de nível de depuração (e apenas mensagens de depuração) com nível de instalação 0 e nível 3 serão enviadas para todos os terminais conectados.

    nível0, nível3. = depurar *

    Mensagens de serviço de tempo que são maiores do que críticas (ou seja, emergência e alerta) e menores ou iguais ao aviso (aviso, informação e depuração) serão enviadas para o ntpuser e terminais raiz.

    ntp.> crit,<=notice ntpuser,root

    Todas as mensagens de aviso, exceto aquelas dos serviços de e-mail, serão gravadas no arquivo warn.log.

    *. = aviso, mail.none /var/log/warn.log

    Nesse caso, todas as mensagens com nível maior ou igual a crit serão enviadas por e-mail para o usuário root.

    * .crit | mail -s “mensagem crítica” root

    Como você pode ver, o formato do arquivo de configuração permite que vários níveis, origens e destinos sejam listados em uma linha, o que torna a configuração mais flexível. Para que as alterações tenham efeito após a edição, você precisa enviar um sinal HUP para o processo syslogd:

    # kill –HUP `cat / var / run / syslog.pid`

    Note-se que se esta ou aquela mensagem cair sob a ação de várias linhas do arquivo de configuração, ela será processada de acordo com cada uma delas. Exemplo:

    mail. * / var / log / maillog

    *. = err /var/log/error.log

    Nesse caso, as mensagens mail.err irão para o maillog e para o error.log.

    Estratégia de arquivo de configuração

    Concluindo minhas considerações sobre o arquivo de configuração, direi algumas palavras sobre as estratégias para sua compilação. Além do muito popular "se ao menos funcionar", dois principais podem ser distinguidos, os quais chamaremos condicionalmente de "por fonte" e "por propósito".

    • A primeira estratégia, que pode ser observada em várias distribuições GNU / Linux, é escrever uma regra diferente para cada fonte de mensagem (ou um grupo de regras se as mensagens de níveis diferentes forem processadas de maneira diferente). Sua vantagem é a simplicidade de determinar onde as mensagens de serviços específicos são gravadas.
    • A estratégia “por destino” é criar, se possível, apenas uma linha para cada “destinatário” de uma mensagem, como um arquivo. Esta é a abordagem adotada, em particular, pelo FreeBSD. Como resultado, você pode determinar facilmente quais informações são registradas em um arquivo de log específico, mas, por exemplo, os destinos das mensagens do kernel devem ser coletados de todo o arquivo de configuração.

    Utilitário logger

    O sistema inclui um utilitário logger que permite enviar mensagens ao serviço syslog diretamente da linha de comando. É conveniente usá-lo ao testar regras de configuração, bem como ao desenvolver scripts para registrar seu trabalho. Exemplos:

    user $ logger -p user.err “Erro no programa do usuário!”

    usuário $ logger -h syslog.host.ru “Teste”

    O primeiro exemplo enviará uma mensagem ao usuário da facilidade de nível de erro, que será processada de acordo com o arquivo de configuração. O segundo comando enviará uma mensagem ao host remoto, a origem e o nível padrão serão definidos como user.notice.

    Usando mecanismos de rotação

    O mecanismo de registro discutido acima não fornece nenhum tipo de gerenciamento de arquivo de registro. As mensagens são simplesmente colocadas neles de acordo com as regras descritas no arquivo de configuração. Isso significa que os arquivos de log aumentarão constantemente e, se nada for feito, mais cedo ou mais tarde eles preencherão todo o espaço disponível na partição correspondente. Para evitar isso, um mecanismo de rotação é usado.

    Por exemplo, assim que o arquivo debug.log excede 100 MB, ele é renomeado para debug.log.0 e compactado em debug.log.0.bz2. Em vez disso, um novo debug.log é criado. Então, quando o tamanho do novo arquivo atinge 100 MB, debug.log.0.bz2 é renomeado para debug.log.1.bz2 e o procedimento acima é repetido. O sistema armazena apenas um determinado número de arquivos compactados, excluindo os mais antigos. Isso é rotação.

    Utilitário Newsyslog

    No FreeBSD, a rotação é controlada pelo utilitário newsyslog, que por padrão é executado no início de cada hora pelo daemon cron. Você pode alterar o período de rotação editando o arquivo / etc / crontab.

    Os parâmetros de rotação especificados no exemplo acima (tamanho do arquivo, embalagem), bem como vários outros, são definidos no arquivo de configuração /etc/newsyslog.conf. Para cada arquivo que precisa de rotação, ele contém uma linha de geralmente nove campos: nome do arquivo, proprietário e grupo, direitos de acesso, maior número no nome do arquivo, tamanho máximo do arquivo, período de rotação, sinalizadores adicionais e o caminho para o PID arquivo do aplicativo para enviar o sinal após a rotação, e o número do sinal a ser enviado. (Pode ser necessário enviar um sinal para um processo, por exemplo, se o processo mantém o arquivo de log aberto o tempo todo; do contrário, o descritor de arquivo usado não corresponderá ao arquivo recém-criado.) Alguns campos podem ser omitidos. Aqui estão dois exemplos, completos e típicos:

    / var / log / pflog root: wheel 600 3 100 * JB /var/run/pflog.pid 1

    De acordo com esta regra, o arquivo pflog deve ser sobrescrito assim que seu tamanho ultrapassar 100 MB (5º campo), independente do tempo (“*” no 6º campo). Os arquivos compactados terão nomes como pflog.X.bz2 (pflog.0.bz2, pflog.1.bz2, etc.) e X não pode ser maior que três (parâmetro 3 no 4º campo). O sinalizador J indica que o arquivo compactado deve ser compactado usando o utilitário bzip2. Graças ao sinalizador B, as mensagens de serviço sobre rotação não serão adicionadas aos arquivos arquivados e recém-criados, uma vez que o arquivo é percebido como binário. O arquivo recém-criado será propriedade do usuário root e do grupo wheel (este campo pode ter sido omitido, pois é o proprietário padrão). As permissões serão definidas como rw ------- (valor numérico 600), o que significa que apenas o proprietário pode ler e gravar neste arquivo. Finalmente, um sinal 1 (HUP) será enviado ao processo cujo PID está armazenado em /var/run/pflog.pid para reabrir seu arquivo de log.

    / var / log / maillog 640 7 * @ T00 J

    Esta regra especifica os parâmetros de rotação para o arquivo maillog: independentemente do tamanho (um asterisco no 5º campo), o arquivo será reescrito todas as noites às 00:00 (veja man newsyslog.conf para uma descrição detalhada do formato da hora). O arquivo deve ser compactado, os últimos 8 arquivos serão salvos (com números de 0 a 7 inclusive), o arquivo recém-criado será propriedade do usuário root (valor padrão, portanto o campo do proprietário é omitido) e terá rw-r ----- permissões.

    Você pode usar os utilitários zcat e bzcat (para gzip e bzip2, respectivamente) para visualizar os arquivos de log compactados. Midnight Commander invoca os utilitários apropriados automaticamente.

    Depois de editar o arquivo newsyslog.conf, nenhum sinal precisa ser enviado a lugar nenhum - a configuração será relida na próxima vez que o newsyslog for chamado.

    Observe que o utilitário newsyslog não está vinculado ao daemon syslogd. Ou seja, ele pode ser usado para girar quaisquer arquivos que precisem dele. Se a rotação estiver habilitada para logs que o aplicativo mantém por conta própria (por exemplo, para logs clamd ou squid), preste atenção especial em especificar o proprietário e os direitos de acesso. Especificá-los incorretamente pode levar ao fato de que, após a rotação, um aplicativo iniciado como um usuário sem privilégios não poderá gravar no arquivo recém-criado.

    Resumindo

    O sistema syslog é uma ferramenta muito poderosa e eficiente para registrar vários eventos que ocorrem no sistema. As configurações padrão são bastante equilibradas e funcionam bem para a maioria dos sistemas. No entanto, compreender como o syslog funciona permitirá que você melhore significativamente a qualidade do registro, personalizando o registro para atender às suas necessidades específicas.