Estou usando o SSLH no meu servidor para aceitar as conexões SSL e SSH na porta 443.
Como os logs do sshd e do apache2 mostram cada conexão de entrada via SSLH proveniente de 127.0.0.1, eu quero adicionar o log do SSLH ao Logwatch.
Para conseguir isso, eu primeiro filtrava todas as entradas referentes ao sslh em um arquivo de log separado com o seguinte código em /etc/rsyslog.d/sslh.conf
:
if $programname == 'sslh' then /var/log/sslh.log
if $programname == 'sslh' then ~
No arquivo /etc/logwatch/conf/logfiles/sslh.conf
, adicionei isso para informar ao Logwatch sobre o arquivo de log:
LogFile = /var/log/sslh.log
LogFile = /var/log/sslh.log.0
Archive = /var/log/sslh.log.*.gz
*ApplyStdDate =
A definição de serviço em /etc/logwatch/conf/services/sslh.conf
se parece com isso:
Title = "SSLH SSH / HTTPS Multiplexer"
LogFile = sslh
Por fim, adicionei o script de serviço /etc/logwatch/scripts/services/sslh
com este conteúdo:
#!/bin/bash
echo "Date Range: $LOGWATCH_DATE_RANGE"
echo "Detail Level: $LOGWATCH_DETAIL_LEVEL"
echo "Temp Dir: $LOGWATCH_TEMP_DIR"
echo "Debug Level: $LOGWATCH_DEBUG"
grep -v 'forwarded to SSL$'
Quando executo o Logwatch com o serviço sslh explicitamente especificado, tudo funciona como um encanto e recebo a saída filtrada para o tempo desejado:
logwatch --service sslh --output stdout
################### Logwatch 7.4.0 (05/02/12) ####################
Processing Initiated: Fri Jul 12 11:37:46 2013
[…]
##################################################################
--------------------- SSLH SSH / HTTPS Multiplexer Begin ------------------------
Jul 11 22:51:13 example sslh[2225]: connection from […].adsl.alicedsl.de:3643 to […].yourvserver.net:https forwarded from localhost:59788 to localhost:https
Jul 11 22:51:13 example sslh[2225]: connection from […].adsl.alicedsl.de:3644 to […].yourvserver.net:https forwarded from localhost:59789 to localhost:https
[…]
---------------------- SSLH SSH / HTTPS Multiplexer End -------------------------
###################### Logwatch End #########################
O problema ocorre na operação regular, ao chamar Logwatch assim:
logwatch --mailto [email protected]
Eu redirecionei a saída do Logwatch para um arquivo e encontrei algumas linhas estranhas como essa, por exemplo, onde sslh está listado como desativado:
Service List:
[0] = all
[1] = -zz-network
[2] = -zz-sys
[3] = -eximstats
[4] = -sslh
Grepping para sslh
na saída da Logwatch produziu isto:
root:~# grep -r -i -n sslh ~/logwatch_out
38:[4] = -sslh
75:[4] = -sslh
4747:ReadConfigFile: Opening /etc/logwatch/conf/services/sslh.conf
4748:ReadConfigFile: Read Line: Title = "SSLH SSH / HTTPS Multiplexer"
4749:ReadConfigFile: Name=Title, Value="SSLH SSH / HTTPS Multiplexer"
4750:ReadConfigFile: Read Line: LogFile = sslhReadConfigFile: Name=LogFile, Value=sslh
6431:ReadConfigFile: Opening /etc/logwatch/conf/logfiles/sslh.conf
6432:ReadConfigFile: Read Line: LogFile = /var/log/sslh.log
6433:ReadConfigFile: Name=LogFile, Value=/var/log/sslh.log
6434:ReadConfigFile: Read Line: LogFile = /var/log/sslh.log.0
6435:ReadConfigFile: Name=LogFile, Value=/var/log/sslh.log.0
6436:ReadConfigFile: Read Line: Archive = /var/log/sslh.log.*.gz
6437:ReadConfigFile: Name=Archive, Value=/var/log/sslh.log.*.gz
6527:[85] = sslh
6594:[47] = sslh
6867:Service Name: sslh
6868: Logfile = sslh
7181:Logfile Name: sslh
7183: Logfile = /var/log/sslh.log
Depois de descobrir que minha configuração para o Logwatch referente a sslh funciona, quando especifico o serviço sslh explicitamente, não tenho absolutamente nenhuma idéia, porque o sslh é excluído ao executar o Logwatch regularmente.
Mesmo a categoria "SSLH" não está incluída no E-Mail, com ou sem conteúdo.
Qualquer ajuda seria apreciada.