Você está na página 1de 7

Sysadmin

syslog-ng

Congurando um servidor de log com o syslog-ng

O syslog-ng (syslog new generation) veio para suprir vrias das decincias do bom e velho

Registros histricos

syslog e bem mais exvel que seu antecessor. Aprenda neste artigo como montar um servidor de log com essa poderosa ferramenta.
por Flavio Ferraz

syslog o daemon padro para registro de eventos em sistemas Unix e similares. A estrutura do seu arquivo de congurao (syslog.conf) bem simples e se resume basicamente a duas opes: recursos (Facilities, erroneamente traduzido como facilidades por alguns), que especicam a procedncia da mensagem de log ou seja, que tipo de mensagem de log queremos gravar (como, por exemplo, ocorrncias em sistemas de email e autenticao) e prioridades, que de nem qual o nvel de importncia da mensagem a ser registrada e a etiquetam com pre xos como alert, crit e emerg, entre outros. (veja o t) Essa estrutura simples funciona razoavelmente bem numa congurao padro; porm, quando necessitamos de recursos como classicao mais abrangente dos eventos do sistema, tratamento avanado de rede, vericao de integridade das mensagens ou mesmo criptograa, o syslog comea a mostrar inecincia para atender s exigncias dos sistemas Unix atuais. O syslog-ng (syslog new generation) [1] surgiu para suprir essas decincias. Ele permite a adio de ltros entre as mensagens e a vericao de integridade, possui suporte a criptograa e pode ser utilizado em conjunto com programas como o ssh para autenticar ou criptografar mensagens de log que sero enviadas a hosts remotos. O programa foi originalmente escrito, e ainda mantido, por Balazs Scheidler.

Quadro 1: Sintaxe do syslog.conf


Um trecho do arquivo de congurao do syslog (syslog. conf), que segue o formato: recurso.prioridade arquivo de log.
mail.info -/var/log/mail.info mail.warn -/var/log/mail.warn mail.err /var/log/mail.err

56

abril 2005

edio 07 www.linuxmagazine.com.br

syslog-ng

Sysadmin

O cdigo fonte do programa pode ser obtido em [1]. Depois de descompact-lo (com
tar -zxvf syslog-ng-<verso>.tar. gz) basta entrar no diretrio recm-criado

Obtendo e instalando o syslog-ng

Quadro 2: Recomendaes da NBR ISO/IEC 17799


O registro dos servios do sistema e das atividades dos usurios to importante que a norma de segurana da informao NBR ISO/IEC 17799 no item 9.7.1 (registro de eventos) recomenda o seguinte: Convm que trilhas de auditoria, registrando as excees e outros eventos de segurana relevantes, sejam produzidas e mantidas por um perodo de tempo acordado, para auxiliar em investigaes futuras e na monitorao do controle de acesso. Convm que os registros (logs) de auditoria tambm incluam: a) identicao dos usurios; b)datas e horrios de entrada (log-on) e sada (log-off) no sistema; c) identidade do terminal ou, quando possvel, a sua localizao; d) registro das tentativas de acesso ao sistema aceitas e rejeitadas; e) registro das tentativas de acesso a outros recursos e dados aceitas e rejeitadas; Certos registros (logs) de auditoria, podem ser guardados como parte da poltica de reteno de registros ou devido aos requisitos para a coleta de evidncias.

(cd syslog-ng-<verso>/) e, como root, compil-lo com a tradicional seqncia ./ configure, make e make install. Para instalar o syslog-ng em um sistema Debian, basta usar o pacote .deb disponvel em [2] ou recorrer ao utilitrio apt-get, com o comando: apt-get install syslog-ng.

Por padro, o arquivo de congurao do syslog-ng se chama syslog-ng.conf e pode ser encontrado no diretrio /etc. Nesse arquivo podemos de nir regras para a gravao de mensagens de log a partir das seguintes diretivas: options{}, source{}, destination{}, filter{} e log{}. Cada uma delas pode conter conguraes adicionais que so usualmente separadas por um ponto-e-vrgula. A sintaxe utilizada no arquivo syslogng.conf muito similar estrutura usada em linguagens de programao e lembra um pouco a linguagem C. As declaraes so terminadas por ponto-e-vrgula; espaos em branco so ignorados e podem ser usados para aumentar a legibilidade do arquivo (veja a listagem 1).

Congurando o syslog-ng

Listagem 1: Exemplo de arquivo syslog-ng.conf


01 options { long_hostnames(off); sync(0); }; 02 source src { unix-dgram("/dev/log"); internal(); }; 03 source src { unix-dgram("/dev/log"); internal(); udp(); }; 04 destination authlog { file("/var/log/auth.log" owner("root") group("adm") perm(0640)); }; 05 destination syslog { file("/var/log/syslog" owner("root") group("adm") perm(0640)); }; 06 destination console { usertty("root"); }; 07 destination console_all { file("/dev/tty8"); }; 08 filter f_authpriv { facility(auth, authpriv); }; 09 filter f_syslog { not facility(auth, authpriv); }; 10 log { source(src); filter(f_authpriv); destination(authlog); }; 11 log { source(src); filter(f_syslog); destination(syslog); };

Tabela 1: Opes globais


Opo
schain_hostnames( yes | no ) sskeep_hostnames( yes | no ) ssuse_fqdn( yes | no ) ssuse_dns( yes | no ) sstime_reopen( number ) sslog_fifo_syze( number ) sssync( number ) ssowner( string ) ssgroup( string ) ssperm( number ) ssdir_owner( string ) ssdir_group( string ) ssdir_perm( number )

Descrio Alm de mostrar o nome do host que enviou uma mensagem de log via protocolo UDP ou TCP, mostra o nome de todos os hosts que a manipularam ( valor padro=yes). Nomes dos hosts conveis para envio de mensagens via protocolo TCP/UDP (valor padro=no). Grava o nome completo dos hosts que enviaram mensagens via protocolo TCP/UDP (valor padro=no). Resolve o endereo IP dos hosts que enviaram mensagens via protocolo TCP/UDP (valor padro=yes). Nmero de segundos que uma conexo TCP aguarda antes de reconectar (valor padro=60). Nmero de mensagens que vo para a la na memria quando o syslog-ng est ocupado. Quando a la est cheia, as novas mensagens so bloqueadas (valor padro=100). Nmero de mensagens que so gravadas no arquivo de log antes dele ser sincronizado (valor padro=0) Dono dos arquivos de log criados pelo syslog-ng (valor padro=root). Grupo ao qual pertencem os arquivos de log criados pelo syslog-ng (valor padro=root) Permisses de acesso aos arquivos de log criados pelo syslog-ng. Dono dos diretrios criados pelo syslog-ng (valor padro=root). Grupo ao qual pertencem os diretrios criados pelo syslog-ng (valor padro=root). Permisso de acesso aos diretrios criados pelo syslog-ng (valor padro=0700).

abril 2005 www.linuxmagazine.com.br

edio 07

57

Sysadmin

syslog-ng

Tabela 2: Source Drivers para o syslog-ng


Source
internal() file("nome_do_arquivo" [opes]) pipe("nome_do_arquivo" ) unix_stream("nome_do_arquivo" [opes]) unix_dgram("nome_do_arquivo" [opes])

Descrio Recebe mensagens oriundas do daemon syslog-ng. Recebe mensagens do arquivo especial /proc/kmsg. Recebe mensagens de um named pipe. Recebe mensagens de sockets Unix no modo stream (com conexo). Recebe mensagens de sockets Unix no modo datagram (sem conexo).

tcp([ip(adrress)] [port(#)] [max-connections(#)]) Recebe mensagens de um determinado host remoto via protocolo TCP em uma porta especca (valor padro=514), podendo receber qualquer mensagem TCP que entre pela interface de rede local (valor padro=all). udp([ip(address)] [port(#)])

Recebe mensagens de um determinado host remoto via protocolo UDP em uma porta especca (valor padro=514), podendo receber qualquer mensagem UDP que entre pela interface de rede local (valor padro=all).

As opes globais so conguradas atravs da diretiva options{} do arquivo syslog-ng.conf. So genricas e podem, inclusive, ser utilizadas dentro de outras declaraes. A tabela 1 lista algumas das opes mais comuns.

Opes Globais

Sources
A diretiva source identica a origem das mensagens de log. Para isso, ela possui parmetros conhecidos como drivers. Veja o exemplo a seguir:
source s_local { unix-stream(/dev/log); internal(); };

O syslog-ng reconhece um nmero bastante alto de source drivers. Alm de capturar logs de sockets do Unix, aceita mensagens enviadas via conexo TCP, protocolo UDP, named pipes ou arquivos especiais (denidos no /proc). Veja na tabela 2 quais so os source drivers suportados. Os drivers tcp() e udp() lem mensagens oriundas de hosts remotos atravs dos protocolos TCP e UDP, respectivamente. A porta padro utilizada pelo syslog-ng a 514, que por sua vez ca em escuta em todas as interfaces. O exemplo a seguir mostra a declarao source para os drivers tcp() e udp() com IP e porta denidos:
source s_tcp { tcp( ip(192.168.33.33) port (4455) ); };

Na linha acima ns criamos um source chamado s_local que, por sua vez, ir obter mensagens de log do socket /dev/ log (eventos locais do sistema) e dos processos locais do syslog-ng. O driver que utilizamos, unix-stream, especco para capturar mensagens de registro vindas dos sockets de um sistema Unix.

source s_udp { udp(); };

No exemplo acima o source s_tcp ir receber mensagens de log provenientes do endereo IP 192.168.33.33 na porta 4455 e o source s_udp ir aceitar mensagens UDP vindas de qualquer endereo IP na porta 514 em todas as interfaces locais.

Tabela 3: Destinations
Driver
file("filename[$MACROS]")

Descrio Grava mensagens para arquivos de log em formato texto padro ASCII. Se o arquivo no existir, o syslog-ng ir cri-lo. As macros podem ser passadas como opes para os drivers ou no lugar do nome de um arquivo. Nesse caso, possvel simular nomes de arquivos dinmicos. Transmite mensagens via protocolo TCP para uma porta especca (a porta padro a 514) em um dado host ou endereo IP. Transmite mensagens via protocolo UDP para uma porta especca (a porta padro a 514) em um dado host ou endereo IP. Envia mensagens para named pipes como /dev/xconsole.
/dev/log.

tcp("address" [port(#);]) udp("address" [port(#);]) pipe("pipename") unix_stream("filename" [options]) unix_dgram("filename" [options]) usertty(username) program("/caminho/para/o/programa")

Envia mensagens estabelecendo conexes do tipo stream para um socket do Unix como

Envia mensagens sem estabelecer conexo no modo datagram para um socket do Unix como /dev/log. Envia mensagens para usurios especcos no console. Envia mensagens para a entrada padro do programa especicado.

58

abril 2005

edio 07 www.linuxmagazine.com.br

syslog-ng

Sysadmin

Destinations
O syslog-ng pode ser congurado para enviar mensagens de log para vrios destinos: arquivos ASCII, named pipes, hosts remotos via protocolos TCP e UDP, TTYs (terminais), sockets do Unix e entrada padro de programas. A tabela 3 mostra os tipos de destino permitidos no syslog-ng e que, assim como na declarao source, tambm so conhecidos como drivers. Quando especicamos um nome de arquivo como destino para gravar mensagens, podemos usar macros para criar esse nome ou parte dele, de acordo com a convenincia desejada. (tabela 4) Por exemplo, para gravar mensagens de log em um arquivo que corresponda ao dia da semana, podemos usar a macro WEEKDAY: Macro
PROGRAM HOST FACILITY

Tabela 4: Macros suportadas em destinos le()


Signicado O nome do programa que envia a mensagem. O nome do host que originou a mensagem. O recurso para o qual a mensagem foi gerada. Para designar o nvel de prioridade. O ano atual. O ms atual. O dia atual. O nome do dia da semana (Monday, Tuesday, etc) A hora atual. O minuto atual. O segundo atual.

PRIORITY ou LEVEL (sinnimos) YEAR MONTH DAY WEEKDAY HOUR MIN SEC

destination d_logdia { file("/var/log/$WEEKDAY"); };

Filters
As opes de ltragem do syslog-ng so extremamente poderosas e, ao contrrio do syslog, que faz o roteamento das mensagens baseado apenas em prioridade/nvel e recurso, o syslog-ng pode fazer a ltragem pelo nome do programa que emite a mensagem de log e do host que as envia. possvel inclusive montar ltros com expresses regulares e utilizar os operadores lgicos and, or e not. A declarao filter{} consiste do nome do ltro e um ou mais critrios conectados por operadores bem denidos. (tabela 5) Veja a seguir alguns exemplos de uso da declarao filter{}:

Quanto s opes de destino, ainda possvel determinar o dono, o grupo e as permisses de acesso para o arquivo de log. Observe:
destination d_userlog { file("/var/log/userlog" owner(user) U group(wheel) perm(0640)); };

No exemplo, o arquivo userlog pertencer ao usurio user, grupo wheel e ser criado com a permisso 640.

abril 2005 www.linuxmagazine.com.br

edio 07

59

Sysadmin

syslog-ng

filter f_authpriv {facility(auth, U authpriv);}; filter f_debug {not facility(auth, U authpriv, news, mail);}; filter f_messages {level(info .. warn) U and not facility(auth, authpriv, cron, U daemon, mail, news); }; filter f_suportematch { host("suporte") U and match("sshd"); };

No primeiro exemplo, o ltro f_authpriv pega todas as mensagens grava-

das pelos recursos auth e authpriv. O segundo ltro, f_debug, captura todas as mensagens de log para todos os recursos, com exceo de auth, authpriv, news e mail. O terceiro ltro, f_messages, captura todas as mensagens de nvel info e warn para todos os recursos com exceo de auth, authpriv, cron, daemon, mail e news. J o quarto ltro, f_suportematch, captura os logs provenientes do host suporte que contenham a string sshd.

A diretiva log {} concentra as declaraes de origem, ltro e destino para denir as opes com as quais as mensagens sero gravadas. Na ltima linha do exemplo, usamos o source s_local que especica a origem do log como o Unix socket /dev/log; o ltro f_suportematch captura as mensagens de log provenientes do host suporte que contenham a string sshd; por m, o destino d_userlog ir gravar o log no arquivo /var/log/userlog. O arquivo pertence ao usurio user e ao grupo wheel e ter a permisso de acesso 640.

Criaremos tambm uma opo de destino chamada linuxsshd para receber as mensagens de log da mquina linux que contenham a palavra sshd e envi-las ao arquivo /var/log/linuxsshd.log:
destination linuxsshd { file("/var/log/U linuxsshd.log" owner("root") group("adm") U perm(0640)); };

Congurando as opes de ltragem


Utilizando a declarao lter, criaremos um ltro chamado f_linux, para capturar os logs provenientes do host linux:
filter f_linux { host(linux); };

Congurando o servidor
Bem, agora que j conhecemos a estrutura do syslog-ng podemos comear a congurar o servidor de log. O arquivo de congurao do servidor o /etc/ syslog-ng/syslog-ng.conf. Para fazer com que o syslog-ng receba logs de outros hosts, devemos usar o driver udp() no estado source:
source src { unix-dgram(/dev/log); U internal(); udp(); };

Criaremos um ltro chamado f_linuxmatch, para capturar os logs vindos do host

linux que contenham a string sshd:


filter f_linuxmatch { host(linux) and U match(sshd); };

A diretiva log serve para combinar os elementos que foram denidos nas outras declaraes (source, filter e destination), a m de elaborar as regras para gravao das mensagens de log. Veja um exemplo:
source s_local { unix-stream("/dev/U log"); internal(); }; filter f_suportematch { host("suporte") U and match("sshd"); }; destination d_userlog { file("/var/log/U userlog" owner(user) group(wheel) U perm(0640)); }; log { source(s_local); filter(f_U suportematch); destination(d_userlog); };

Log Statements

Em nosso exemplo, iremos capturar os logs provenientes do host linux. As mensagens sero gravadas no arquivo linux. log que est dentro do diretrio /var/log. Criaremos uma opo de destino chamada linuxlog, para gravar as mensagens oriundas do host linux. Perceba que com a opo destination podemos especicar um arquivo de log separado para cada mquina cliente:
destination linuxlog { file("/var/log/U linux.log" owner("root") group("adm") U perm(0640)); };

Como vimos, na congurao das opes de log que agregamos as declaraes source, lter e destination para formar uma nica opo para gravao das mensagens. Vamos criar uma entrada para capturar os logs da mquina linux:
log { source(src); filter(f_linux); U destination(linuxlog); };

Congurando as opes de log

Agora criamos uma entrada para capturar os logs desta mquina que contenham a palavra sshd.
log { source(src); filter(f_linuxmatch); U destination(linuxsshd); };

Tabela 5: Funes da diretiva lter()


Funo(critrio)
facility(facility-name) priority(priority-name) priority(priority-name1, priority-name2) level(priority-name) program(program-name) host(hostname) match(regular-expression) filter(filter-name)

Descrio Recurso pelo qual a mensagem ser ltrada. Prioridade das mensagens. As prioridades, separadas por vrgulas, podem ser expressas como alta ou baixa. As mesmas prioridades. Programa que emite a mensagem. Host do qual as mensagens foram recebidas. Expresses regulares que sero avaliadas no corpo da mensagem. Outros ltros a serem avaliados.

60

abril 2005

edio 07 www.linuxmagazine.com.br

syslog-ng

Sysadmin

Tabela 6: Tabela verdade para pacotes UDP


Ao Resultado Porta aberta um pacote UDP recebido nada retornado Porta fechada um pacote UDP recebido um pacote icmp3 retornado Porta em DROP um pacote UDP recebido nada retornado Porta em REJECT um pacote UDP recebido um pacote icmp3 retornado

Depois de denir as opes necessrias no arquivo de congurao do servidor (sylog-ng.conf) devemos reiniciar o daemon do syslog-ng. Em um sistema Debian, por exemplo, basta executar como root os dois comandos mostrados a seguir:
# /etc/init.d/syslog-ng stop # /etc/init.d/syslog-ng start

Reiniciando o syslog-ng

Congurando o cliente
O arquivo de congurao do cliente o mesmo do servidor, ou seja, /etc/sylogng/syslog-ng.conf. No cliente syslog-ng, denimos como os arquivos de log sero enviados para o servidor. Primeiro indicamos o socket /dev/log como o lugar para onde sero enviados os logs locais.
source src { unix-dgram("/dev/log"); U internal(); };

destination d_udp { udp("192.168.0.161" U port(514)); };

A porta padro usada pelo servidor a 514 e o protocolo da camada de transporte o UDP. Use o comando netstat para saber se a porta 514 est aberta e se o processo do syslog-ng est ouvindo a rede por ela:
# netstat -anpd | grep 514

Devemos especicar o endereo IP do host para onde a mensagem de log ser enviada (servidor de log). Usamos para isso uma declarao de destino. Por exemplo, para enviar as mensagens de log ao servidor 192.168.0.161, a seguinte linha dever ser acrescentada:

O syslog-ng trabalha com os mesmos nveis e recursos de seu predecessor syslog. Vamos criar um ltro chamado f_envio que ir capturar mensagens de log nos nveis: info, warn, err e crit e recursos: auth, authpriv, daemon, mail, news, cron e user. As mensagens de log que vamos enviar para o servidor devem corresponder aos critrios estabelecidos nesse ltro. Para isso, a linha a seguir dever ser acrescentada ao arquivo de congurao do syslog-ng:
filter f_envio { level(info, warn, err, U crit) and facility(auth, authpriv, U daemon, mail, news, cron, user); };

abril 2005 www.linuxmagazine.com.br

edio 07

61

Sysadmin

syslog-ng

Listagem 2: Sugesto de rewall


01 #!/bin/bash 02 PF="/sbin/iptables" 03 CL="192.168.2.2" 04 SV="192.168.2.135" 05 $PF -P INPUT DROP 06 $PF -P FORWARD DROP 07 $PF -P OUTPUT ACCEPT 08 $PF -A INPUT -s $CL -d $SV -p icmp --icmp-type 8 -j ACCEPT 09 $PF -A INPUT -s $CL -d $SV -p icmp --icmp-type 0 -j ACCEPT 10 $PF -A INPUT -s $CL -d $SV -p udp --sport 1024:65535 --dport 514 -j ACCEPT 11 $PF -A INPUT -s 0/0 -d $SV -p udp --dport 514 -j REJECT

de congurao mais organizada que a do syslog e com mais opes. Os ltros so poderosos, permitindo at que se use a lgica booleana (and, or e not) para ltragem das mensagens. Mas, entre todas as vantagens, o fato de poder organizar de uma maneira simples um arquivo de log separado para cada cliente o que o torna mais vivel que o syslog padro.

Leitura Adicional
A segurana de servidores Linux, e a manuteno correta de seus arquivos de log parte dela, um assunto extenso demais para ser coberto em apenas um artigo nesta revista. Para os interessados no assunto, recomendamos a leitura do livro Building Secure Servers with Linux [5] , escrito por Michael D. Bauer e publicado pela editora OReilly. O dcimo captulo trata justamente sobre o syslog-ng, e pode ser baixado gratuitamente, no formato PDF, no site da editora em [6] . Infelizmente, o livro ainda no tem uma verso em portugus.

Nas opes de log, novamente iremos agregar as declaraes source, filter e destination para formar uma nica opo de log personalizada. Assim, para enviar os tipos de log denidos no ltro f_envio ao destino d_udp (que corresponde ao servidor de log cujo endereo IP 192.168.0.161), a linha a seguir dever ser acrescentada ao arquivo de congurao do syslog-ng:
log { source(src); filter(f_envio); U destination(d_udp); };

Finalmente, para enviar seu log personalizado com as opes de ltragem para o servidor, reinicie o daemon do syslog-ng. Em um sistema Debian podemos executar os seguintes comandos:
# /etc/init.d/syslog-ng stop # /etc/init.d/syslog-ng start

Novamente, verique se a porta 514 est aberta e se o processo do syslog-ng est ouvindo nela.
# netstat -anpd | grep 514

extremamente importante congurarmos um rewall no servidor de logs. Nessa mquina, a nica porta que dever car aberta a porta 514/UDP (porta padro do syslog-ng) e as nicas mquinas que devero ter acesso ao servidor so as mquinas clientes. Antes de construirmos nosso script de rewall, devemos saber o que acontece quando enviamos um pacote UDP para uma porta numa das situaes mostradas na tabela 6.

Firewall para o servidor de log

Veja na listagem 2 uma sugesto de rewall para o servidor de log. Nesse script a varivel CL corresponde ao endereo IP do cliente e a varivel SV corresponde ao IP do servidor. interessante deixar entrar no servidor pacotes icmp tipo 8 (echo request) e tipo 0 (echo reply) provenientes da mquina cliente, para testarmos a conexo entre cliente e servidor. Observe que todos os pacotes UDP oriundos da mquina cliente com destino porta 514/UDP do servidor so aceitos; porm os pacotes UDP enviados por qualquer outro host com destino porta 514/ UDP do servidor sero bloqueados pelo rewall com um REJECT. De acordo com a tabela verdade, quando enviamos um pacote UDP para uma porta em REJECT, um erro icmp tipo 3 retornado, no caso do iptables um icmp-port-unreachable. Mas quando enviamos um pacote UDP para uma porta que est fechada, tambm devolvido um erro icmp3. Essa situao poder gerar um falso positivo quando algum usar um programa de varredura, como o nmap, para vericar a situao da porta, pois o programa poder acusar que a porta est fechada, quando na verdade, est ltrada com REJECT no rewall. O port scanner nmap [3] poder ser utilizado para testar seu novo rewall:
# nmap -sU -P0 -n -p 514 ip_do_servidor

Informaes
[1] Pgina ocial do syslog-ng: http://www.balabit.com/downloads/ syslog-ng/1.5 [2] BalaBit IT Security: http://www.balabit.hu/ downloads/security/ [3] nmap: http://www.insecure.org/ [4] hping: http://wiki.hping.org/ [5] Building Secure Servers with Linux, Michael D.
Bauer, Editora OReilly

[6] System log management and monitoring: http://www.oreilly.com/catalog/ bssrvrlnx/chapter/ch10.pdf [7] Manual de referncia do Syslog-ng: http://www.balabit.com/products/ syslog_ng/reference/book1.html [8] Intrusion Detection with Snort, Jack Koziol, Sams Publishing: http://www.sams publishing.com/title/157870281X/

A ferramenta hping [4] pode ser usada para ver as respostas enviadas pelo servidor:
# hping --udp ip_do_servidor -c 3 -p 514

Sem dvida, o syslog-ng uma alternativa exvel para a construo de um servidor de logs. A estrutura do seu arquivo

Flvio Ferreira da Cunha um entusiasta de sistemas Unix. Formado em Redes de computadores pela FASP, possui tambm a cobiada certicao LPIC2. Atualmente trabalha na empresa 4LINUX como consultor e instrutor.

62

abril 2005

edio 07 www.linuxmagazine.com.br

Sobre o autor