我在服务器上使用 SSLH 来接受端口 443 上的 SSL 和 SSH 连接。
由于 sshd 和 apache2 的日志显示来自 127.0.0.1 的每个通过 SSLH 传入的连接,我想将 SSLH 的日志添加到 Logwatch。
为了实现这一点,我首先将有关 sslh 的所有条目过滤到一个单独的日志文件中,其中包含以下代码/etc/rsyslog.d/sslh.conf
:
if $programname == 'sslh' then /var/log/sslh.log
if $programname == 'sslh' then ~
在文件中,/etc/logwatch/conf/logfiles/sslh.conf
我添加了以下内容来告诉 Logwatch 有关日志文件的信息:
LogFile = /var/log/sslh.log
LogFile = /var/log/sslh.log.0
Archive = /var/log/sslh.log.*.gz
*ApplyStdDate =
中的服务定义/etc/logwatch/conf/services/sslh.conf
如下所示:
Title = "SSLH SSH / HTTPS Multiplexer"
LogFile = sslh
最后,我添加了/etc/logwatch/scripts/services/sslh
包含以下内容的服务脚本:
#!/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$'
当我使用显式指定的服务 sslh 运行 Logwatch 时,一切都像魅力一样工作,我得到了所需时间跨度的过滤输出:
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 #########################
该问题发生在常规操作中,当像这样调用Logwatch时:
logwatch --mailto [email protected]
我将 Logwatch 的输出重定向到一个文件中,并发现了一些奇怪的行,例如,其中 sslh 被列为禁用:
Service List:
[0] = all
[1] = -zz-network
[2] = -zz-sys
[3] = -eximstats
[4] = -sslh
sslh
在 Logwatch 输出中进行 Grepping会产生以下结果:
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
在弄清楚我对 Logwatch 有关 sslh 的配置有效后,当我显式指定服务 sslh 时,我完全不知道为什么在定期运行 Logwatch 时排除 sslh。
即使类别“SSLH”也不包含在电子邮件中,无论有或没有任何内容。
任何帮助,将不胜感激。