• Nenhum resultado encontrado

Nível de registro (prioridade)

No documento Hardening em Linux (páginas 79-84)

1 emerg: indicam condições de emergências do sistema;

1 Alert: problemas no sistema que necessitam de atenção imediata; 1 Crit: problemas fatais e condições críticas do sistema;

1 Debug: informações decodificadas de depuração dos processos em andamento; 1 err: mensagens de condições de erro geradas pelo STDERR;

1 Info: informações de programas em execução;

1 Notice: mensagens de condições normais, mas relevantes; 1 Warning: aviso padrão de execução de um processo; 1 None: mensagens genéricas.

H ar de ni ng e m L inu x

Por muito tempo o aplicativo padrão do Linux para gerenciamento de logs foi o Syslogd; todavia, muitas distribuições estão trazendo alternativas, como Syslog-ng e Rsyslog. Será usado neste capítulo um deamon muito melhorado em relação ao tradicional Syslod. O alvo neste capítulo será o deamon do Syslog-NG, que tem muitos mais recursos que o seu antecessor. Antes de instalar e vermos os arquivos de configuração do Syslog-NG, vamos entender como ele funciona.

A estrutura do Syslog-NG é como um quebra-cabeça: há várias peças separadas e temos de montá-las conforme desejamos para ter o nosso log personalizado.

O Syslog-NG possui três peças básicas: Source (Origem), Filter (Filtro) e Destination (Destino). Essas três peças unidas formarão o nosso log. Veja uma representação gráfica desse quebra-cabeça na figura a seguir.

Origem Filtro Destino

Origem LOG =

Filtro Destino

Com esse conceito em mente, pode-se instalar o Syslog-NG. # apt-get install syslog-ng

Depois de instalado o Syslog-NG, cria-se uma estrutura personalizada para os logs. Vamos utilizar o diretório /var/personal, que está em uma partição separada, para alocar essa nossa nova estrutura personalizada.

O arquivo de configuração base do Syslog-ng normalmente está localizado em /etc/syslog-ng/ syslog-ng.conf, no qual é definida a forma como será organizada nossa estrutura de logs e também recursos do próprio serviço. Entretanto, para tirar proveito, é importante entender como funciona o protocolo Syslog.

Primeiros vamos renomear o syslog-ng.conf original e criar um novo. # cd /etc/syslog-ng

# mv syslog-ng.conf syslog-ng.conf_original

Logo em seguida, temos a exemplificação de como criar uma nova com a estrutura a seguir, considerando as configurações globais.

# vi syslog-ng.conf #OPCÕES GLOBAIS Figura 3.1 Representação de módulos de configuração.

Ca pí tu lo 3 - H ar de ni ng e m s is te m a L in ux – R eg is tr o d e e ve nt os ( lo g) e H ID S options { long_hostnames(off);}; #OPÇÕES DE ORIGEM

source src { unix-dgram(“/dev/log”); internal();}; # OPCÕES DE FILTROS

filter f_authpriv { facility(auth, authpriv); }; filter f_syslog { not facility(auth, authpriv); }; 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_uucp { facility(uucp); }; filter f_news { facility(news); };

filter f_debug { not facility(auth, authpriv, news, mail); }; filter f_messages { level(info .. warn)

#vi syslog-ng.conf

and not facility(auth, authpriv, cron, daemon, mail, news); }; filter f_emergency { level(emerg); };

filter f_info { level(info); }; # vim /etc/syslog-ng/syslog-ng.conf filter f_notice { level(notice); }; filter f_warn { level(warn); }; filter f_crit { level(crit); }; filter f_err { level(err); };

filter f_cnews { level(notice, err, crit) and facility(news); }; filter f_cother { level(debug, info, notice, warn) or

facility(daemon, mail); };

filter ppp { facility(local2); };

# OPCÕES DE DESTINO

destination authlog { file(“/var/personal/auth.log” owner(“root”) group(“root”) perm(0640)); };

H ar de ni ng e m L inu x

destination syslog { file(“/var/personal/syslog” owner(“root”) group(“root”) perm(0640)); };

destination cron { file(“/var/personal/cron.log” owner(“root”) group(“root”) perm(0640)); };

destination daemon { file(“/var/personal/daemon.log” owner(“root”) group(“root”) perm(0640)); };

destination kern { file(“/var/personal/kern.log” owner(“root”) group(“root”) perm(0640)); };

destination lpr { file(“/var/personal/lpr.log” owner(“root”) group(“root”) perm(0640)); };

destination mail { file(“/var/personal/mail.log” owner(“root”) group(“root”) perm(0640)); };

destination user { file(“/var/personal/user.log” owner(“root”) group(“root”) perm(0640)); };

destination uucp { file(“/var/personal/uucp.log” owner(“root”) group(“root”) perm(0640)); };

destination mailinfo { file(“/var/personal/mail.info” owner(“root”) group(“root”) perm(0640)); };

destination mailwarn { file(“/var/personal/mail.warn” owner(“root”) group(“root”) perm(0640)); };

destination mailerr { file(“/var/personal/mail.err” owner(“root”) group(“root”) perm(0640)); };

destination newscrit { file(“/var/personal/news/news.crit” owner(“root”) group(“root”) perm(0640)); };

destination newserr { file(“/var/personal/news/news.err” owner(“root”) group(“root”) perm(0640)); };

destination newsnotice { file(“/var/personal/news/news.notice” owner(“root”) group(“root”) perm(0640)); };

destination debug { file(“/var/personal/debug” owner(“root”) group(“root”) perm(0640)); };

destination messages { file(“/var/personal/messages” owner(“root”) group(“root”) perm(0640)); };

destination console { usertty(“root”); }; destination console_all { file(“/dev/tty8”); }; destination xconsole { pipe(“/dev/xconsole”); };

destination ppp { file(“/var/personal/ppp.log” owner(“root”) group(“root”) perm(0640)); };

Ca pí tu lo 3 - H ar de ni ng e m s is te m a L in ux – R eg is tr o d e e ve nt os ( lo g) e H ID S

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(src); 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_uucp); destination(uucp); }; 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_news); filter(f_crit); destination(newscrit); };

log { source(src); filter(f_news); filter(f_err); destination(newserr); };

log { source(src); filter(f_news); filter(f_notice); destination(newsnotice); };

log { source(src); filter(f_debug); destination(debug); }; log { source(src); filter(f_messages); destination(messages); }; log { source(src); filter(f_emergency); destination(console); }; log { source(src); filter(f_cnews); destination(xconsole); }; log { source(src); filter(f_cother); destination(xconsole); }; log { source(src); filter(ppp); destination(ppp); };

Feita essa configuração, e lembrando a figura do quebra-cabeça, vamos entender o arquivo do Syslog-NG.

Para analisá-lo por partes: primeiro, a origem.

source src { unix-dgram(“/dev/log”); internal();};

As linhas começam com a palavra source (origem), e logo em seguida vem src, que pode ser qualquer palavra desde que depois possamos entender a que se refere.

Essa origem que aponta para /dev/log são logs locais, ou seja, a origem em questão são todos os logs gerados pelo nosso sistema. Essa é a nossa primeira peça do quebra-cabeça, a nossa origem, mas ainda não estamos fazendo nada com ela.

H ar de ni ng e m L inu x

Depois da origem, nós temos algumas linhas relacionadas à parte de filtro. Vamos a alguns exemplos.

filter f_authpriv { facility(auth, authpriv); };

As linhas de filtro começam com a palavra filter, e em seguida vem f_authpriv, para a qual, assim como nas linhas de origem, nós podemos definir o nome que quisermos, mas sempre é bom adotarmos um padrão para um melhor controle. Por exemplo, adotamos o padrão de que todos os filtros comecem com f_ e o nome do filtro.

Essa linha está criando um filtro somente com as facilidades (facility), auth e authpriv em todos os níveis (level), ou seja, esse filtro engloba todas as mensagens de autenticação, sejam elas avisos, informações, emergências, críticas ou qualquer um dos outros níveis.

filter f_syslog { not facility(auth, authpriv); };

Esse exemplo é o contrário do primeiro, pois está criando um filtro chamado f_syslog, que engloba todas as facilidades e níveis, com exceção das facilidades auth e authpriv.

filter f_cron { facility(cron); };

filter f_kern { facility(kern); };

Exemplo de dois filtros: o f_cron, que registrará todas as mensagens relacionadas ao cron; e o f_kern, que registrará todas as mensagens relacionadas ao kernel.

filter f_messages { level(info .. warn)

and not facility(auth, authpriv, cron, daemon, mail, news); }; Esse já é um filtro mais elaborado. Com o nome de f_messages, engloba todas as facilidades, com exceção de auth, authpriv, cron, daemon, mail e news, nos níveis info até warn.

Os filtros são nossa segunda peça do quebra-cabeça. Fizemos todos os filtros que dese- jamos, mas até aqui não os utilizamos.

A parte seguinte do arquivo é a que trata os destinos (destination). Esses destinos são onde os logs serão gravados.

Vejamos o exemplo.

destination authlog { file(“/var/personal/auth.log” owner(“root”) group(“root”) perm(0640)); };

destination syslog { file(“/var/personal/syslog” owner(“root”) group(“root”) perm(0640)); };

destination cron { file(“/var/personal/cron.log” owner(“root”) group(“root”) perm(0640)); };

Seguindo o mesmo padrão das outras configurações, origem e filtro, os destinos começam com a palavra “destination”, e depois vem o nome que escolhermos. Esses destinos apontam para dentro do diretório /var/personal (diretório que adotamos na nossa estrutura personalizada) e para os arquivos que serão criados, que são os arquivos de logs.

Saiba mais

No documento Hardening em Linux (páginas 79-84)