|
1.
Introdução
Mais registros devem ser adicionados para pegar avisos ou erros que podem
indicar um ataque em progresso ou uma invasão com sucesso. Indivíduos maliciosos
freqüentemente escaneiam ou fazem sondas antes de atacar.
Também é vital que seus arquivos de registro sejam de fácil legibilidade e
manuseio. O Gentoo Linux permite que você escolha 3 loggers diferentes durante a
instalação.
1.
Registros: syslogd
O syslogd é o logger mais comum para Linux e Unix em geral. Ele não vem com
rotação de registros. Esta função é feita rodando
/usr/sbin/logrotate em um serviço de cron (o logrotate é
configurado em /etc/logrotate.conf). A freqüência com que a rotação
de arquivos deve ser feita depende da carga do sistema.
Abaixo está o syslog.conf padrão com algumas funções adicionais.
Nós descomentamos as linhas cron e tty e adicionamos um servidor
de registros locais. Para melhorar a segurança, você pode adicionar registros em
dois locais.
Listagem de código 1.1: /etc/syslog.conf |
# /etc/syslog.conf Arquivo de configuração para o syslogd.
#
# Para mais informações leia as manpages syslog.conf(5).
# Isto vem do Debian, estamos usando por enquanto
# Daniel Robbins, 5/15/99
#
# Primeiro alguns arquivos de log padrão. Arquivo por instalação.
#
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
local6.debug /var/log/imapd.log
#
# Registros para o sistema de correios. Dividido para
# facilitar a escrita de scripts para interpretar os arquivos
#
mail.info -/var/log/mail.info
mail.warn -/var/log/mail.warn
mail.err /var/log/mail.err
# Registros para sistemas 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-todos'.
#
*.=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 e alertas são enviados para todos logados.
#
*.emerg *
*.=alert *
#
# Eu gosto de ter mensagens mostradas no console, mas em um console
# virtual normalmente deixo ocioso.
#
daemon,mail.*;\
news.=crit;news.=err;news.=notice;\
*.=debug;*.=info;\
*.=notice;*.=warn /dev/tty8
#Configurar um servidor de registros remoto
*.* @logserver
# O pipe nomeado /dev/xconsole é para o utilitário `xconsole'. Para usá-lo,
# você deve invocar `xconsole' com a opção `-file':
#
# $ xconsole -file /dev/xconsole [...]
#
# NOTE: ajuste a linha abaixo, ou você ficará louco se você tiver um
# site grande..
#
#daemon.*,mail.*;\
# news.crit;news.err;news.notice;\
# *.=debug;*.=info;\
# *.=notice;*.=warn |/dev/xconsole
local2.* --/var/log/ppp.log
|
Indivíduos maliciosos quase certamente irão tentar apagar seus traços, tanto
editando como apagando arquivos de registros. Você pode dificultar a vida deles
registrando em um ou mais servidores de registro remotos em outras máquinas.
Obtenha mais informações sobre o syslogd executando man syslog.
1.
Metalog
O metalog de Frank Dennis não é
capaz de registrar em um servidor remoto, mas ele tem vantagens em relação a
performance e flexibilidade de registros. Ele pode fazer registros por nome de
programa, urgência, instalação (como o syslogd), e vem com analisador de
expressões regulares (regex), que você pode usar para iniciar scripts externos
quando certos padrões são encontrados. Ele também é muito bom para tomar ações
quando necessárias.
A configuração padrão é geralmente suficiente. Se você quiser ser notificado por
e-mail quando um erro com senhas ocorrer, use um dos seguintes scripts.
Para postfix:
Listagem de código 1.1: /usr/local/sbin/mail_pwd_failures.sh para postfix |
#! /bin/sh
echo "$3" | mail -s "Warning (program : $2)" root
|
Para netqmail:
Listagem de código 1.1: /usr/local/sbin/mail_pwd_failures.sh para netqmail |
#!/bin/sh
echo "To: root
Subject:Failure (Warning: $2)
$3
" | /var/qmail/bin/qmail-inject -f root
|
Lembre-se de tornar o script executável rodando /bin/chmod +x
/usr/local/sbin/mail_pwd_failures.sh
A seguir, descomente a linha de comando debaixo de "Erros de senha" no
/etc/metalog/metalog.conf assim:
Listagem de código 1.1: /etc/metalog/metalog.conf |
command = "/usr/local/sbin/mail_pwd_failures.sh"
|
1.
Syslog-ng
O syslog-ng fornece algumas das mesmas funções do syslog e metalog, com uma
pequena diferença. Ele pode filtrar mensagens com base no nível e conteúdo (como
o metalog), fornecer registro remoto como o syslog, lidar com registros do
syslodg (mesmo correntes do Solaris), escrever em um TTY, executar programas, e
pode agir como um servidor de registros. Basicamente, é o melhor dos dois
loggers combinados com configuração avançada.
Abaixo está o arquivo de configuração clássica levemente modificado.
Listagem de código 1.1: /etc/syslog-ng/syslog-ng.conf |
options { chain_hostnames(off); sync(0); };
#fonte de onde ler o registro
source src { unix-stream("/dev/log"); internal(); };
source kernsrc { file("/proc/kmsg"); };
#definir destinos
destination authlog { file("/var/log/auth.log"); };
destination syslog { file("/var/log/syslog"); };
destination cron { file("/var/log/cron.log"); };
destination daemon { file("/var/log/daemon.log"); };
destination kern { file("/var/log/kern.log"); };
destination lpr { file("/var/log/lpr.log"); };
destination user { file("/var/log/user.log"); };
destination mail { file("/var/log/mail.log"); };
destination mailinfo { file("/var/log/mail.info"); };
destination mailwarn { file("/var/log/mail.warn"); };
destination mailerr { file("/var/log/mail.err"); };
destination newscrit { file("/var/log/news/news.crit"); };
destination newserr { file("/var/log/news/news.err"); };
destination newsnotice { file("/var/log/news/news.notice"); };
destination debug { file("/var/log/debug"); };
destination messages { file("/var/log/messages"); };
destination console { usertty("root"); };
destination console_all { file("/dev/tty12"); };
destination xconsole { pipe("/dev/xconsole"); };
#criar filtros
filter f_authpriv { facility(auth, authpriv); };
filter f_syslog { not facility(authpriv, mail); };
filter f_cron { facility(cron); };
filter f_daemon { facility(daemon); };
filter f_kern { facility(kern); };
filter f_lpr { facility(lpr); };
filter f_mail { facility(mail); };
filter f_user { facility(user); };
filter f_debug { not facility(auth, authpriv, news, mail); };
filter f_messages { level(info..warn)
and not facility(auth, authpriv, mail, news); };
filter f_emergency { level(emerg); };
filter f_info { level(info); };
filter f_notice { level(notice); };
filter f_warn { level(warn); };
filter f_crit { level(crit); };
filter f_err { level(err); };
filter f_failed { match("failed"); };
filter f_denied { match("denied"); };
#conectar filtro e destino
log { source(src); filter(f_authpriv); destination(authlog); };
log { source(src); filter(f_syslog); destination(syslog); };
log { source(src); filter(f_cron); destination(cron); };
log { source(src); filter(f_daemon); destination(daemon); };
log { source(kernsrc); filter(f_kern); destination(kern); };
log { source(src); filter(f_lpr); destination(lpr); };
log { source(src); filter(f_mail); destination(mail); };
log { source(src); filter(f_user); destination(user); };
log { source(src); filter(f_mail); filter(f_info); destination(mailinfo); };
log { source(src); filter(f_mail); filter(f_warn); destination(mailwarn); };
log { source(src); filter(f_mail); filter(f_err); destination(mailerr); };
log { source(src); filter(f_debug); destination(debug); };
log { source(src); filter(f_messages); destination(messages); };
log { source(src); filter(f_emergency); destination(console); };
#registro padrão
log { source(src); destination(console_all); };
|
O syslog-ng é muito fácil de configurar, mas também é muito fácil de esquecer de
algo no arquivo de configuração, que é enorme. O autor ainda promete algumas
funções adicionais como criptografia, autenticação e controle de MAC (Mandatory
Access Control). Com essas opções, será perfeito para registros de rede, já que
o indivíduo malicioso não poderá espionar o registro.
E o syslog-ng ainda tem outra vantagem: não tem que ser rodado como
administrador (root)!
1.
Análise de registros com o Logcheck
Lógico, cuidar de registros sozinhos é só metade da batalha. Uma aplicação como
o Logcheck pode tornar a análise de registros mais fácil. O Logcheck é um
script, acompanho de um binário chamado logtail, que roda de seu daemon
do cron e verifica atividades suspeitas em seus arquivos contra um conjunto de
regras. Ele então manda a saída como correio para a caixa de entrada do root.
Logcheck e logtail são parte do pacote app-admin/logsentry.
O Logcheck usa quatro arquivos para filtrar entradas de registro importantes das
não importantes. Esses arquivos são logcheck.hacking, que contém
mensagens conhecidas de ataques de invasão, logcheck.violations,
que contém padrões indicando violações de segurança,
logcheck.violations.ignore, que contém palavras-chave provavelmente
relacionadas com o arquivo de violações, permitindo que entradas normais sejam
ignoradas, e logcheck.ignore, que mantém aquelas entradas a serem
ignoradas.
Aviso:
Não deixe o logcheck.violations.ignore em branco. O Logcheck
usa grep para interpretar registros, algumas versões dele tomarão um
arquivo vazio como um wildcard. Todas violações serão, portanto, ignoradas.
|
|