<chapt id="log">Arquivos e daemons de Log
 <p>
A atividade dos programas são registradas em arquivos localizados 
em <![ %DEBIAN [ <file>/var/log</file> ]]>. Estes arquivos de registros são 
chamados de <em>logs</em> e contém a data, hora e a mensagem emitida pelo 
programa (violações do sistema, mensagens de erro, alerta e outros eventos) 
entre outros campos. Enfim, muitos detalhes úteis ao administrador tanto 
para acompanhar o funcionamento do seu sistema, comportamento dos programas 
ou ajudar na solução e prevenção de problemas. 
 <p>
Alguns programas como o <prgn>Apache</prgn>, <prgn>exim</prgn>, 
<prgn>ircd</prgn> e <prgn>squid</prgn> criam diversos arquivos 
de log e por este motivo estes são organizados em 
sub-diretórios (a mesma técnica é usada nos arquivos 
de configuração em <file>/etc</file>, conforme a padrão 
FHS atual). 


<sect>Formato do arquivo de log
 <p>
Um arquivo de log é normalmente composto pelos seguintes campos:
<example>
Data|Hora|Máquina|daemon|mensagem

</example>
O campo <em>máquina</em> é o nome do computador que registrou a mensagem 
(a máquina pode atuar como um servidor de logs registrando mensagens 
de diversos computadores em sua rede). O campo <em>daemon</em> indica 
qual programa gravou a <em>mensagem</em>. 
 <p>
O uso dos utilitários do console pode ajudar muito na pesquisa e monitoração 
dos logs, por exemplo, para obter todas as mensagens do daemon 
<prgn>kernel</prgn> da estação de trabalho <tt>wrk1</tt>, eliminando 
os campos "wrk1" e "kernel": 
<example>
cat /var/log/*|grep 'wrk1'|grep 'kernel'|awk '{print $1 $2 $3 $6 $7 $8 $9 $10 $11 $12}'
</example>
Os parâmetros "$1", "$2" do comando <prgn>awk</prgn> indica que campos serão 
listados, (omitimos $4 e $5 que são respectivamente "wrk1" e "kernel"). 
<![ %AVANCADO [ Um bom utilitário para monitoração de logs está documentado em 
<ref id="log-uteis-logcheck">. ]]>


<sect>Daemons de log do sistema
 <p>
Os daemons de log do sistema registram as mensagens de 
saída do kernel (<prgn>klogd</prgn>) e sistema (<prgn>syslogd</prgn>) nos 
arquivos em <![ %DEBIAN[ <file>/var/log</file> ]]>. 
 <p>
A classificação de qual arquivo em <![ %DEBIAN [ <file>/var/log</file> ]]> 
receberá qual tipo de mensagem é controlado pelo arquivo de configuração 
<![ %DEBIAN [ <file>/etc/syslog.conf</file> ]]> através de 
<em>facilidades</em> e <em>níveis</em> (veja <ref id="log-syslogd-exemplo"> 
para detalhes).


<sect1 id="log-syslogd">syslogd
 <p>
Este daemon controla o registro de logs do sistema.
 <p>
<tt>syslogd [<em>opções</em>]</tt>
 <p>
<![ %OPCOES [
<taglist compact>
 <tag><em>opções</em></tag>
 <tag>-f</tag>
 <item>
 Especifica um arquivo de configuração alternativo ao <file>/etc/syslog.conf</file>.

 <tag>-h</tag>
 <item>
 Permite redirecionar mensagens recebidas a outros servidores de logs 
 especificados. 

 <tag>-l [computadores]</tag>
 <item>
 Especifica um ou mais computadores (separados por ":") que deverão ser 
 registrados somente com o nome de máquina ao invés do FQDN (nome completo, 
 incluindo domínio). 
 
 <tag>-m [minutos]</tag>
 <item>
Intervalo em <em>minutos</em> que o syslog mostrará a mensagem <tt>--MARK--</tt>. 
O valor padrão padrão é 20 minutos, 0 desativa. 

 <tag>-n</tag>
 <item>
Evita que o processo caia automaticamente em background. Necessário principalmente
se o <prgn>syslogd</prgn> for controlado pelo <prgn>init</prgn>.

 <tag>-p [soquete]</tag>
 <item>
Especifica um soquete UNIX alternativo ao invés de usar o padrão 
<file>/dev/log</file>.

 <tag>-r</tag>
 <item>
Permite o recebimento de mensagens através da rede através da porta UDP 514. 
Esta opção é útil para criar um servidor de logs centralizado na rede.  
Por padrão, o servidor <prgn>syslog</prgn> rejeitará conexões externas. 

 <tag>-s [domínios]</tag>
 <item>
Especifica a lista de domínios (separados por ":") que deverão ser retirados 
antes de enviados ao log.

<![ %AVANCADO [
 <tag>-a [soquetes]</tag>
 <item>
Especifica soquetes adicionais que serão monitorados. Esta opção será necessária 
se estiver usando um ambiente <prgn>chroot</prgn>. É possível usar até 19 soquetes 
adicionais 

 <tag>-d</tag>
 <item>
Ativa o modo de depuração do <prgn>syslog</prgn>. O syslog permanecerá operando 
em primeiro plano e mostrará as mensagens no terminal atual. ]]> 

</taglist> ]]>
Na distribuição 
<![ %DEBIAN[ <prgn>Debian</prgn>, o daemon <prgn>syslogd</prgn> é iniciado 
através do script <file>/etc/init.d/sysklogd</file>. ]]>


<sect2 id="log-syslogd-exemplo">Arquivo de configuração <file>syslog.conf</file>
 <p>
O arquivo de configuração <![ %DEBIAN [ <file>/etc/syslog.conf</file> ]]> possui 
o seguinte formato: 
<example>
facilidade.nível                    destino
</example>
A <em>facilidade</em> e <em>nível</em> são separadas por um "."
e contém parâmetros que definem o que será registrado nos arquivos 
de log do sistema: 
<list compact>
 <item>
<tt>facilidade</tt> - É usada para especificar que tipo de programa está 
enviando a mensagem. Os seguintes níveis são permitidos (em ordem alfabética):

 <list compact>
  <item><tt>auth</tt> - Mensagens de segurança/autorização (é recomendável usar 
authpriv ao invés deste).
  <item><tt>authpriv</tt> - Mensagens de segurança/autorização (privativas).
  <item><tt>cron</tt> - Daemons de agendamento (<prgn>cron</prgn> e 
  <prgn>at</prgn>).
  <item><tt>daemon</tt> - Outros daemons do sistema que não possuem facilidades 
específicas.
  <item><tt>ftp</tt> - Daemon de ftp do sistema.
  <item><tt>kern</tt> - Mensagens do kernel.
  <item><tt>lpr</tt> - Subsistema de impressão.
  <item><tt>local0 a local7</tt> - Reservados para uso local.
  <item><tt>mail</tt> - Subsistema de e-mail.
  <item><tt>news</tt> - Subsistema de notícias da USENET.
  <item><tt>security</tt> - Sinônimo para a facilidade <tt>auth</tt> (evite usa-la).
  <item><tt>syslog</tt> - Mensagens internas geradas pelo <prgn>syslogd</prgn>.
  <item><tt>user</tt> - Mensagens genéricas de nível do usuário.
  <item><tt>uucp</tt> - Subsistema de UUCP.
  <item><tt>*</tt> - Confere com todas as facilidades.
 </list> 
Mais de uma facilidade pode ser especificada na mesma linha do 
<file>syslog.conf</file> separando-as com ",".

 <item>
<tt>nível</tt> - Especifica a importância da mensagem. Os seguintes níveis são
permitidos (em ordem de importância invertida; da mais para a menos importante):
 <list compact>
  <item><tt>emerg</tt> - O sistema está inutilizável.
  <item><tt>alert</tt> - Uma ação deve ser tomada imediatamente para resolver 
o problema.
  <item><tt>crit</tt> - Condições críticas.
  <item><tt>err</tt> - Condições de erro.
  <item><tt>warning</tt> - Condições de alerta.
  <item><tt>notice</tt> - Condição normal, mas significante.
  <item><tt>info</tt> - Mensagens informativas.
  <item><tt>debug</tt> - Mensagens de depuração.
  <item><tt>*</tt> - Confere com todos os níveis.
  <item><tt>none</tt> - Nenhuma prioridade.
 </list>
Além destes níveis os seguintes sinônimos estão disponíveis: 
<list compact>
 <item><tt>error</tt> - Sinônimo para o nível err.
 <item><tt>panic</tt> - Sinônimo para o nível emerg.
 <item><tt>warn</tt> - Sinônimo para o nível warning.
</list>

 <item>
<tt>destino</tt> - O destino das mensagens pode ser um arquivo, um pipe 
(se iniciado por um "|"), um computador remoto (se iniciado 
por uma "@"), determinados usuários do sistema (especificando 
os logins separados por vírgula) ou para todos os usuários logados 
via <prgn>wall</prgn> (usando "*").
</list>
Todas as mensagens com o nível especificado e superiores a esta especificadas
no <prgn>syslog.conf</prgn> serão registradas, de acordo com as opções 
usadas. Conjuntos de <em>facilidades</em> e <em>níveis</em> podem ser 
agrupadas separando-as por ";". 
<![ %OBS [
 <p>
OBS1: Sempre use TABS ao invés de espaços para separar os parâmetros do 
<file>syslog.conf</file>.
 <p>
OBS2: Algumas facilidades como <tt>security</tt>, emitem um beep de 
alerta no sistema e enviam uma mensagem para o console, como forma de alerta 
ao administrador e usuários logados no sistema.  ]]>
 <p>
Existem ainda 4 caracteres que garantes funções especiais: "*", "=", 
"!" e "-":
<list compact>
 <item>"*" - Todas as mensagens da <em>facilidade</em> especificada 
serão redirecionadas.
 <item>"=" - Somente o <em>nível</em> especificado será registrado.
 <item>"!" - Todos os <em>níveis</em> especificados e maiores NÃO serão 
registrados. 
 <item>"-" - Pode ser usado para desativar o sync imediato do arquivo após
sua gravação.
</list>
Os caracteres especiais "=" e "!" podem ser combinados em uma mesma 
regra. 
<![ %EXEMPLO [
 <p>
Exemplo: Veja abaixo um exemplo de um arquivo <file>/etc/syslog.conf</file> 
padrão de sistemas <prgn>Debian</prgn>
<example>
#
# Primeiro alguns arquivos de log padrões. Registrados por facilidade
#

auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
cron.*                         /var/log/cron.log
daemon.*                        -/var/log/daemon.log
kern.*                          -/var/log/kern.log
lpr.*                           -/var/log/lpr.log
mail.*                          /var/log/mail.log
user.*                          -/var/log/user.log
uucp.*                          -/var/log/uucp.log

#
# Registro de logs do sistema de mensagens. Divididos para facilitar
# a criação de scripts para manipular estes arquivos.
#
mail.info                       -/var/log/mail.info
mail.warn                       -/var/log/mail.warn
mail.err                        /var/log/mail.err

# Registro para o sistema de news INN
#
news.crit                       /var/log/news/news.crit
news.err                        /var/log/news/news.err
news.notice                     -/var/log/news/news.notice

#
# Alguns arquivos de registro "pega-tudo".
# São usadas "," para especificar mais de uma prioridade (por 
# exemplo, "auth,authpriv.none") e ";" para especificar mais de uma 
# facilidade.nível que será gravada naquele arquivo.
# Isto permite deixar as regras consideravelmente menores e mais legíveis
#
*.=debug;\
        auth,authpriv.none;\
        news.none;mail.none     -/var/log/debug
*.=info;*.=notice;*.=warn;\
        auth,authpriv.none;\
        cron,daemon.none;\
        mail,news.none          -/var/log/messages

#
# Emergências são enviadas para qualquer um que estiver logado no sistema. Isto
# é feito através da especificação do "*" como destino das mensagens e são
# enviadas através do comando wall.
#
*.emerg                         *

#
# Eu gosto de ter mensagens mostradas no console, mas somente em consoles que 
# não utilizo.
#
#daemon,mail.*;\
#       news.=crit;news.=err;news.=notice;\
#       *.=debug;*.=info;\
#       *.=notice;*.=warn       /dev/tty8

# O pipe /dev/xconsole é usado pelo utilitário "xconsole". Para usa-lo,
# você deve executar o "xconsole" com a opção "-file":
# 
#    $ xconsole -file /dev/xconsole [...]
#
# NOTA: ajuste as regras abaixo, ou ficará maluco se tiver um um site 
# muito movimentado...
#
daemon.*;mail.*;\
        news.crit;news.err;news.notice;\
        *.=debug;*.=info;\
        *.=notice;*.=warn       |/dev/xconsole

# A linha baixo envia mensagens importantes para o console em que 
# estamos trabalhando logados (principalmente para quem gosta de ter 
# controle total sobre o que está acontecendo com seu sistema).
*.err;kern.debug;auth.notice;mail.crit	/dev/console

</example> ]]>


<sect1 id="log-klogd">klogd
 <p>
Este daemon controla o registro de mensagens do kernel. 
<![ %DESCRICAOD [ Ele monitora as mensagens do kernel e as envia para o 
daemon de monitoramento <prgn>syslogd</prgn>, por padrão. ]]>
 <p>
<tt>klogd [<em>opções</em>]</tt>
 <p>
<![ %OPCOES [
<taglist compact>
 <tag><em>opções</em></tag>
 <tag>-d</tag>
 <item>
 Ativa o modo de depuração do daemon

 <tag>-f [arquivo]</tag>
 <item>
Envia as mensagens do kernel para o arquivo especificado ao invés de enviar 
ao daemon do <prgn>syslog</prgn>

 <tag>-i</tag>
 <item>
Envia um sinal para o daemon recarregar os símbolos de módulos do kernel.

 <tag>-I</tag>
 <item>
Envia um sinal para o daemon recarregar os símbolos estáticos e de módulos 
do kernel.

 <tag>-n</tag>
 <item>
Evita a operação em segundo plano. Útil se iniciado pelo <prgn>init</prgn>

 <tag>-k [arquivo]</tag>
 <item>
Especifica o arquivo que contém os símbolos do kernel. Exemplos deste arquivo 
estão localizados em <![ %DEBIAN [ <file>/boot/System.map-xx.xx.xx</file>. ]]>

<![ %AVANCADO [
 <tag>-o</tag>
 <item>
Faz com que o daemon leia e registre todas as mensagens encontradas nos buffers 
do kernel, após isto o daemon é encerrado.
 
 <tag>-p</tag>
 <item>
Ativa o modo paranóia. Isto fará o <prgn>klogd</prgn> somente carregar detalhes 
sobre os módulos quando os caracteres <tt>Oops</tt> forem detectados nas 
mensagens do kernel. É recomendável ter sempre a última versão do klogd e evitar 
a utilização desta opção em ambientes críticos. 

 <tag>-s</tag>
 <item>
Força a utilização da interface de chamadas do sistema para comunicação com o 
kernel. 

 <tag>-x</tag>
 <item>
Esconde tradução EIP, assim ele não lê o arquivo <![ %DEBIAN [ 
<file>/boot/System.map-xx-xx-xx</file>. ]]> 
]]>

</taglist> ]]>
A especificação de um arquivo com a opção <tt>-k</tt> é necessária se desejar
que sejam mostradas a tabela de símbolos ao invés de endereços numéricos 
do kernel. 


<sect id="log-logger">logger
 <p>
Este comando permite enviar uma mensagem nos log do sistema. 
<![ %DESCRICAOD [ A mensagem é enviada aos logs via daemon 
<prgn>syslogd</prgn> ou via soquete do sistema, é possível 
especificar a prioridade, nível, um nome identificando o 
processo, etc. Seu uso é muito útil em shell scripts ou em 
outros eventos do sistema. ]]>
 <p>
<tt>logger [<em>opções</em>] [<em>mensagem</em>]</tt>
 <p>
<![ %OPCOES [ 
Onde:
<taglist compact>
 <tag><em>mensagem</em></tag>
 <item>
 Mensagem que será enviada ao daemon <em>syslog</em>

 <tag><em>opções</em></tag>
 <tag>-i</tag>
 <item>
 Registra o PID do processo

 <tag>-s</tag>
 <item>
 Envia a mensagem ambos para a saída padrão (STDOUT) e syslog.

 <tag>-f [arquivo]</tag>
 <item>
 Envia o conteúdo do arquivo especificado como <em>mensagem</em> ao syslog. 

 <tag>-t [nome]</tag>
 <item>
 Especifica o nome do processo responsável pelo log que será exibido antes 
 do PID na mensagem do syslog.

 <tag>-p [prioridade]</tag>
 <item>
Especifica a prioridade da mensagem do syslog, especificada como 
<tt>facilidade.nível</tt>. Veja os tipos de prioridade/níveis em 
<ref id="log-syslogd-exemplo">. O valor padrão <em>prioridade.nível</em> 
é <em>user.notice</em>

<![ %AVANCADO [
 <tag>-u [soquete]</tag>
 <item>
Envia a mensagem para o [soquete] especificado ao invés do syslog ]]>

</taglist> ]]>
Mais detalhes sobre o funcionamento sobre o daemon de log do sistema 
<prgn>syslogd</prgn>, pode ser encontrado em <ref id="log-syslogd">
<![ %EXEMPLO [
 <p>
Exemplos: <tt>logger -i -t focalinux Teste teste teste</tt>, 
<tt>logger -i -f /tmp/mensagem -p security.emerg</tt> ]]>


    <![ %AVANCADO [
<sect id="log-uteis">Programas úteis para monitoração e gerenciamento de arquivos 
de logs
 
<sect1 id="log-uteis-logcheck">logcheck
 <p>
É um programa usado para enviar um e-mail periodicamente ao administrador do 
sistema (através do <prgn>cron</prgn> ou outro daemon com a mesma função) 
alertando sobre os eventos que ocorreram desde a última execução do programa. As 
mensagens do <prgn>logcheck</prgn> são tratadas por arquivos em 
<file>/etc/logcheck</file> e organizadas em categorias antes de ser enviada por 
e-mail, isto garante muita praticidade na interpretação dos eventos ocorridos no 
sistema. 
 <p>
As categorias são organizadas da mais importantes para a menos importante, e 
vão desde "Hacking em andamento" (providências devem ser tomadas imediatamente 
para resolver a situação) até "eventos anormais do sistema" (mensagens de 
inicialização, mensagens dos daemons do sistema, etc.). 
 <p>
O tipo de mensagem que será incluída/ignorada nos logs enviados podem 
ser personalizadas pelo administrador do sistema através dos arquivos/diretórios 
dentro de <file>/etc/logcheck</file>. Nomes de arquivos/diretórios contendo 
a palavra "ignore" são usados para armazenar expressões regulares que NÃO 
serão enviadas pelo <prgn>logcheck</prgn>. É permitido o uso de expressões 
regulares <prgn>perl/sed</prgn> para especificar as mensagens nos 
arquivos de log. 


<sect1 id="log-uteis-logrotate">logrotate
 <p>
Usado para fazer backups dos logs atuais do sistema 
(programado via <prgn>cron</prgn>, ou outro daemon com a mesma função) e 
criando novos arquivos de logs que serão usados pelo sistema. Opcionalmente 
os arquivos de logs antigos serão compactados para diminuir a utilização de 
espaço em disco ou enviados por e-mail ao administrador. A rotação dos arquivos de 
logs proporciona maior agilidade quando precisamos encontrar algum detalhe útil 
(que seria mais difícil de se achar em um arquivo de log de 10MB ou maior). 
 <p>
A rotação de logs é feita de acordo com o tamanho do arquivo de logs especificado, 
mas a opção <em>-f</em> pode ser usada para "forçar" a rotação de logs. A opção 
<em>-d</em> fornece mais detalhes sobre o que o <prgn>logrotate</prgn> está 
fazendo. 
Seu arquivo principal de configuração é o <file>/etc/logrotate.conf</file>. 
Um modelo deste tipo de arquivo é o seguinte: 
<example>
#### Estas opções afetam globalmente o funcionamento do logrotate
# roda os arquivos de log semanalmente
weekly

# mantém as últimas 4 cópias de logs anteriores
rotate 4

# Erros de não existência dos logs são enviados para o usuário root
mail root

# Cria novos arquivos de log (vazios) após rodar os antigos
create

# Descomente isso se desejar seus arquivos de logs compactados. O parâmetro
# delaycompress é usado para que o primeiro log rodado seja mantido 
# descompactado
compress
delaycompress

# Executam os scripts em prerotate e postrotate a cada vez que os logs 
# forem rodados. 
nosharedscripts

# Definimos um diretório que poderá conter definições individuais para 
# diversos serviços no sistema, eles podem ir neste arquivo mas 
# diversas configurações individuais podem deixar a interpretação
# deste arquivo confusa.
include /etc/logrotate.d


# Define opções específicas para a rotação mensal de /var/log/wtmp, o novo arquivo 
# de log somente será rodados caso tenha mais de 5MB (size 5M), será criado 
# com a permissão 0664 e pertencerá ao usuário root grupo utmp
# (create 0664 root utmp) e será mantida somente uma cópia do log anterior.
# (rotate 1)
/var/log/wtmp {
    monthly
    create 0664 root utmp
    size 5M
    rotate 1
}

# Define opções específicas para a rotação mensal de /var/log/btmp, se o arquivo 
# não existir não será necessário gerar alertas (missinkok) que serão enviados 
# ao administrador. O novo arquivo criado deverá ter a permissão 0664 com o 
# dono root e grupo utmp (create 0664 root utmp) e será 
# mantida somente uma cópia do log anterior.
/var/log/btmp {
    missingok
    monthly
    create 0664 root utmp
    rotate 1
}

# Define opções específicas para a rotação mensal de /var/log/lastlog, o novo 
# arquivo será criado com a permissão 0664 com o dono root e grupo 
# utmp e será mantida somente uma cópia do arquivo de log anterior 
# (rotate 1).
/var/log/lastlog {
    missingok
    monthly
    create 0664 root utmp
    rotate 1
}

# Define opções específicas para a rotação diária de /var/log/messages, o 
# arquivo será rodado se atingir o tamanho de 1Mb, então o
# novo arquivo será criado com as mesmas permissões do arquivo anterior. 
# O comando killall -1 syslogd será executado após a rotação 
# para que o daemon syslogd funcione corretamente mas somente uma vez
# durante a rotação de vários arquivos de logs (sharedscripts). 
# Serão mantidas as 10 últimas cópias do arquivo /var/log/messages 
# compactadas (o parâmetro compress foi especificado na seção global deste
# arquivo de configuração).
/var/log/messages {
    daily
    size 1M
    sharedscripts
    postrotate
      /sbin/killall -1 syslogd
    endscript
    rotate 10
}

# Define opções específicas para a rotação mensal dos arquivos em /var/log/mirror/*, 
# a falta desses arquivos não precisa ser notificada ao administrador (missingok), 
# mesmo assim o parâmetro "nomail" evitará isto de qualquer forma. Os logs 
# rodados não serão compactados (nocompress) e serão mantidas as últimas 7 cópias
# dos logs.
/var/log/mirror/* {
   montly
   nomail
   missingok
   nocompress
   rotate 7
}
	    
# logs específicos do sistema podem ser configurados aqui. As opções padrões e 
# definidas na seção global deste arquivo serão usadas para processar os 
# arquivos de logs restantes. 

</example>
Qualquer definição de parâmetro especificado no arquivo de configuração, 
substituirá as definições anteriores. Quando o número máximo de logs 
mantidos pela opção <em>rotate [num]</em> é atingida, os logs eliminados 
serão enviados para o usuário especificado na opção <em>mail [email]</em>. 
A utilização da diretiva <em>nomail</em> evita isso. 
 <p>
Quando for utilizar coringas para se referir a determinados arquivos 
dentro de um diretório, não utilize a sintaxe "log-xxx-*" porque isto 
forçaria a recompactação de arquivos ".gz" já feitas, gerando arquivos
do tipo <file>.gz.gz...</file> e derrubando o processamento da sua máquina
gerada por um loop de compactação e enchendo as entradas de diretório. 
Prefira usar a sintaxe <file>log-xxx-*.log</file> (ou outra, modificando 
a configuração do programa que gera os logs).
<![ %OBS [
 <p>
<strong>OBS:</strong> É importante enviar um sinal HUP ao programa que grava 
para aquele arquivo de log para que não ocorram problemas após a rotação, 
isto é feito usando o parâmetro <em>postrotate</em>. ]]>


<sect id="log-server">Configurando um servidor de logs
 <p>
As mensagens das máquinas de sua rede podem ser centralizadas em uma única 
máquina, isto facilita o gerenciamento, análise e solução de problemas que 
ocorrem nas máquinas da rede. Mais importante ainda é que qualquer invasão 
a estação de trabalho não será registrada localmente (podendo ser 
apagada posteriormente pelo invasor, isso é comum). 
<taglist compact>
 <tag>Configurando o servidor de logs</tag> 
 <item>
Adicione a opção <em>-r</em> ao iniciar o daemon <prgn>syslogd</prgn> para 
aceitar logs enviados das máquinas clientes. Na distribuição <prgn>Debian</prgn> 
modifique o arquivo <file>/etc/init.d/sysklogd</file> colocando a opção 
<em>-r</em> na variável <var>SYSLOGD</var> e reinicie o serviço usando 
<tt>./sysklogd restart</tt>. 
 <p>
Adicionalmente poderão ser usadas as opções <em>-l máquina</em> (é um "L" 
minúsculo não uma letra "I") para registrar o nome FQDN da máquina e <em>-h</em> 
para redirecionar conexões a outros servidores de logs 
(veja <ref id="log-syslogd">). 

 <tag>Configurando máquinas cliente</tag>
 <item>
Modifique o arquivo <file>/etc/syslogd.conf</file> 
(veja <ref id="log-syslogd-exemplo"> colocando o nome do computador seguido 
de "@" para redirecionar as mensagens dos logs:
<example>
auth,authpriv.*                 @servlog
*.*;auth,authpriv.none          @servlog
cron.*                          @servlog
daemon.*                        @servlog
kern.*                          -/var/log/kern.log
kern.*						@servlog
lpr.*                           @servlog
mail.*                          /var/log/mail.log
user.*                          -/var/log/user.log
user.*						@servlog
uucp.*                          -/var/log/uucp.log

</example>
E reinicie o daemon <prgn>syslogd</prgn> da máquina cliente para re-ler o 
arquivo de configuração: <tt>killall -HUP syslogd</tt> ou 
<tt>/etc/init.d/sysklogd restart</tt>. 

</taglist>

<![ %OBS [
 <p>
<strong>OBS1:</strong> Mantenha o relógio do servidor de logs sempre 
atualizado (use o <prgn>chrony</prgn> ou outro daemon de sincronismo NTP 
para automatizar esta tarefa). 
 <p>
<strong>OBS2:</strong> É interessante compilar um daemon <prgn>syslogd</prgn> 
personalizado modificando o nome e localização do arquivo 
<file>/etc/syslog.conf</file> para enganar possíveis invasores. Isto pode 
ser modificado no arquivo <file>syslogd.c</file> na linha:
<example>
#define _PATH_LOGCONF   "/etc/syslog.conf"

</example>
Use a imaginação para escolher um nome de arquivo e localização que dificulte 
a localização deste arquivo. 
 <p>
<strong>OBS3:</strong> Em uma grande rede, é recomendável configurar um 
computador dedicado como servidor de log (desativando qualquer outro 
serviço) e configurar o <prgn>iptables</prgn> para aceitar somente o tráfego 
indo para a porta UDP 514 (syslogd):
<example>
iptables -P INPUT DROP
iptables -A INPUT -p udp --dport 514 -j ACCEPT

</example>
<![ %CONSTRUCAO [
Esta é uma configuração simples, para fazer algo mais completo 
veja <ref id="fw-iptables">.  Adicionalmente configure o serviço 
<prgn>ssh</prgn> para ter acesso a máquina de log quando não tiver 
acesso físico facilitado a máquina (veja <ref id="s-ssh">). ]]> ]]>

  ]]>
  