![Logwatch 电子邮件被标记为垃圾邮件;如何停止机器人主机上的反向 DNS?](https://linux22.com/image/740993/Logwatch%20%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6%E8%A2%AB%E6%A0%87%E8%AE%B0%E4%B8%BA%E5%9E%83%E5%9C%BE%E9%82%AE%E4%BB%B6%EF%BC%9B%E5%A6%82%E4%BD%95%E5%81%9C%E6%AD%A2%E6%9C%BA%E5%99%A8%E4%BA%BA%E4%B8%BB%E6%9C%BA%E4%B8%8A%E7%9A%84%E5%8F%8D%E5%90%91%20DNS%EF%BC%9F.png)
有没有办法改变 Logwatch 设置,使其停止对所有尝试探测服务器或被阻止的主机执行反向 DNS 名称解析?
这些 URL 导致电子邮件被阻止,尤其是 Gmail,从而使 Logwatch 无法用作系统管理工具。
我更喜欢使用 Ubuntu 或 Debian 上预先存在的配置文件的答案,但我会采取任何我能得到的方法。
答案1
这个答案很大程度上受到了@RedScourge 的启发原始答案,但通过配置禁用并且仅在必要时LookupIP
对脚本进行微创更改。sshd
为了回应用户询问是否可以选择性地禁用某些服务的主机名主机名查找, A已向 logwatch 提交补丁,为 SSHD 启用此功能截至撰写本文时,该补丁尚未包含在标记版本中,但很容易在本地应用。作为额外的好处,这可以加快日志生成速度显著地如果您的服务器上有大量 SSH 尝试。
步骤 1:确保标志sshd_ip_lookup
由您本地版本的处理logwatch
。
打开
/usr/share/logwatch/scripts/services/sshd
并搜索sshd_ip_lookup
。如果您找不到对此标志的任何引用,那么...
a. 将
sshd
脚本复制到,这样如果更新/etc
就不会被覆盖logwatch
sudo cp /usr/share/logwatch/scripts/services/sshd /etc/logwatch/scripts/services/sshd
b.
/etc/logwatch/scripts/services/sshd
使用您喜欢的编辑器打开sudo nano /etc/logwatch/scripts/services/sshd
c. 修改脚本,内容来自这次提交即,
将以下内容粘贴到前面my $DebugCounter = 0;
(或顶部附近的任何位置):$main::DoLookup = $ENV{'sshd_ip_lookup'};
步骤 2:将标志设置sshd_ip_lookup
为No
- 使用您喜欢的编辑器创建/打开
/etc/logwatch/conf/services/sshd.conf
。 - 添加以下内容:
# Set to No to disable IP lookups $sshd_ip_lookup = No
尝试再次运行 logwatch!
附录:Google Mail(GMail)垃圾邮件检测
我也遇到过 Google 屏蔽 logwatch 电子邮件的情况。这些邮件从未进入收件人的垃圾邮件文件夹;Google 在邮件发出时就屏蔽了它们。@RedScourge 的分析认为这是由于 logwatch 报告中有大量域名造成的,这种分析似乎是正确的。这封电子邮件看起来一定充满了 Google 垃圾邮件过滤器的 URL。
我认为 Google Mail 在显示电子邮件时链接的 IP 地址与垃圾邮件过滤器在发送电子邮件之前认为是链接的 IP 地址之间存在关联。我注意到 Google Mail 链接了 中的 IP,123.123.123.123: X Time(s)
但没有链接 中的 IP 123.123.123.123 : X Time(s)
。考虑到这一点,我在“协商失败”和“非法用户来自”部分的 IP 后和冒号前加了一个空格。自从几周前这样做以来,我再也没有收到过 Google Mail 阻止的任何 logwatch 电子邮件。
变更内容包括/etc/logwatch/scripts/services/sshd
:
- 在节内
if (keys %NegotiationFailed) { ... }
,修改:
到:print " $Host: " . timesplural($HostTotal);
print " $Host : " . timesplural($HostTotal);
- 在节内
if (keys %IllegalUsers) { ... }
,修改:
到:print " $name: " . timesplural($totcount);
print " $name : " . timesplural($totcount);
显示这些变化的要点如下:这里。
笔记
我已经提交了一份愿望清单请求,希望将上游 logwatch 补丁添加到 Ubuntu 的 LTS 版本中。我不确定它是否会被批准,但您可以在此处订阅它以跟踪其状态:https://bugs.launchpad.net/ubuntu/+source/logwatch/+bug/1904362
答案2
可能的解决方案:
在 Ubuntu 18.04 LTS 中:
#First copy sshd script from default location to /etc location to have
#LogWatch override the default script even if there is a LogWatch package update
cp /usr/share/logwatch/scripts/services/sshd /etc/logwatch/scripts/services/sshd
#Then replace all occurrences of "my $name = LookupIP($ip);" with "my $name = $ip;"
sed -i "s/my \$name = LookupIP\(\$ip\);/my \$name = \$ip;/g" /etc/logwatch/scripts/services/sshd
或者,您可以手动编辑文件:
#vi /etc/logwatch/scripts/services/sshd
查找所有出现的“my $name = LookupIP($ip);”
替换为“my $name = $ip;”
起初我尝试简单地在 sshd 脚本顶部附近手动添加“my $DoLookup = 0;”,因为查看 /usr/share/logwatch/lib/Logwatch.pm 似乎表明设置此项将导致 LookupIP 函数跳过主机名查找,但这不起作用。