tenshi e logfiles

2

Estou prestes a configurar Tenshi para obter trechos de registro importantes. Tudo funciona bem, exceto se eu adicionar alguns logs do apache2,

# /etc/tenshi/tenshi.conf

...
set logfile /var/log/apache2/error.log

Eu também criei um Tenshi include para apache2 , mas não funciona.

# /etc/tenshi/includes-active/apache2

group ^apache2:

trash ^apache2: \[client \d+\.\d+\.\d+\.\d+\] client denied by server configuration:
trash ^apache2: \[client \d+\.\d+\.\d+\.\d+\] Directory index forbidden by Options directive:

group_end

Pergunta: O que há de errado com a configuração e como criar uma inclusão para registros não padrão?

    
por slm 05.01.2014 / 18:47

3 respostas

0

Eu finalmente consegui isso:

Em tenshi.conf use:

set logprefix ^(\[[^\]]+\]\s)

Isso evita que os arquivos de log analisados atinjam a fila noprefix .

Meu arquivo de log de erros do apache2 é assim:

[Thu Jan 23 23:36:40 2014] [error] [client 255.255.255.255] File does not exist: /var/www/whatever.html

Portanto, em includes-active/apache2 você precisa ter a mesma regex, ou seja,

group ^\[[^\]]+\]\s

trash \[error\].*?  File does not exist:

group_end

Obrigado a vocês, fechem mas não usam charuto.

    
por 23.01.2014 / 23:46
3

tenshi é apenas um script Perl para que você possa modificá-lo da maneira que desejar. Para mostrar o que está acontecendo quando você executa seus comandos, você pode usar os recursos de depuração muito úteis do tenshi .

Error_log do meu Apache

Eu coloquei o error_log do meu Apache no mesmo diretório que tenshi e modifiquei o arquivo tenshi.conf para executar como eu e usar o diretório local.

##
## tenshi 0.14 sample conf
##

# general settings

set uid saml
set gid saml

set pidfile /home/saml/tenshi/tenshi-0.14/tenshi.pid
set logfile /home/saml/tenshi/tenshi-0.14/error_log
...
...
critical ^\[client.*
# ^^^^--- above line matches this ---vvvvv
# [client 74.221.219.48] script '/home/httpd/html/wp-login.php' not found or unable to stat, referer: http://ww

Um teste executado

Agora, quando eu executo, a seguinte saída é produzida:

$ ./tenshi -f -d 2 -c tenshi.conf 

Tambémnomeuarquivotenshi.confestavaestalinha:

setqueuenoprefixtenshi@localhostsysadmin@localhost[now]tenshiunprefixedalert

Terestalinhafoipegarminharegraeagirsobreela,nestecaso,estavatentandomeenviaramensagemacima.

Logprefix de Tenshi

Se eu definir a opção de configuração de acordo com a documentação do tenshi :

set logprefix \[client

Agora recebo as mensagens do meu Apache error_log registradas conforme o esperado.

[MAIN]  got message: [client 192.3.183.22] script '/home/httpd/html/wp-login.php' not found or unable to stat, referer: http://www.lamolabs.org/blog/wp-content/plugins/cleaner-gallery/readme.html
[MAIN]  got message: [client 188.247.132.250] script '/home/httpd/html/wp-login.php' not found or unable to stat, referer: http://www.lamolabs.org/
[MAIN]  got message: [client 188.247.132.250] script '/home/httpd/html/wp-login.php' not found or unable to stat, referer: http://www.lamolabs.org/
[MAIN]  got message: [client 188.247.132.250] script '/home/httpd/html/wp-login.php' not found or unable to stat, referer: http://www.lamolabs.org/
[MAIN]  got message: [client 192.95.43.193] script '/home/httpd/html/wp-login.php' not found or unable to stat, referer: http://www.lamolabs.org/blog/date/2010/03/page/2/
[MAIN]  got message: [client 88.245.191.59] script '/home/httpd/html/wp-login.php' not found or unable to stat
[MAIN]  got message: [client 88.245.191.59] script '/home/httpd/html/wp-login.php' not found or unable to stat

EDIT # 1

Não tive sucesso em descobrir como fazer o trash como você. Então eu mandei um email para Inversepath perguntando como alguém iria fazer isso.

EDIT#2

Bershquebrouotruquecomessaconfiguração.Vocêtemquequebrarologprefixnoparêntese,assim:

setlogprefix^(\[client)...trash^\[client.*

Agora,quandoeuexecutonovamenteotenshi,receboumasaídaquemostraqueeleestádetectandooslogsdomeuApacheerror_log.

Umexemplodegrupo

Sequisermosfiltrarospadrõesdegrupoprovenientesdeerror_log,agruparemosnossasregrasusandoomesmologprefixregex.

setlogprefix^(\[client)...group^(\[client)trash^.*notfoundorunabletostat,referer:http://www.lamolabs.org/blog/6194/.*trash^.*notfoundorunabletostat,referer:http://www.lamolabs.org/blog/wp-content/plugins/.*group_end

Agora,quandoexecutarmostenshinovamente,obteremosessasaída.

Na saída acima, podemos ver que as regras trash em nosso group ^(\[client) estão sendo correspondidas (elas são as linhas vermelhas) e estão mascarando o conteúdo dessas linhas.

    
por 23.01.2014 / 08:39
2

tenshi , por padrão, apenas verifica arquivos em estilo syslog e descarta arquivos de log que não correspondem a eles.

veja o trecho relevante da tenshi documentação :

set logprefix <regexp>

All valid syslog messages are parsed by default, while non-syslog ones are discarded unless the special noprefix queue is set. This option allows to define an additional valid prefix for watching other type of logs. If the regexp is matched then the prefix is removed from the log and the first grouped string is used for the hostname field. This may be specified multiple times to watch many different non-syslog logs.

, a solução é usar a fila noprefix para seus arquivos de log apache2 .

uma alternativa seria fazer apache usar o syslog para fazer login ...

    
por 22.01.2014 / 10:16