停止fail2ban停止/启动通知


14

如果服务器重新启动,或者即使fail2ban已停止/启动,它也会发送通知。

[asterisk-iptables]
enabled  = true
filter   = asterisk
action   = iptables-allports[name=ASTERISK, protocol=all]
           sendmail-whois[name=ASTERISK, dest=blah@foo.com, sender=blah@foo.com] 
logpath  = /var/log/asterisk/messages
maxretry = 5
bantime = 259200

删除sendmail-whois可以停止它,但是它也可以停止禁令通知,如何开始/停止进程时停止通知我呢?

谢谢

Answers:


10

查看action.d/mail.confaction.d/sendmail.conf控制邮件的启动/停止/禁止。


这并不能解决问题。我认为还有其他一些文件需要编辑,因为我不断收到这封烦人的电子邮件:(
Kreker

@Kreker它为我和OP工作,这可能就是为什么他们将其标记为已接受。如果对您不起作用,则可能是您使用了其他配置或配置错误?
user9517'5

在fail2ban的配置中,我将sendmail用作mta,因此它加载了action.d / sendmail.conf。我从apt-get获得了正常安装
Kreker

9

无需在任何文件中修复此问题。这取决于您在中的配置jail.conf

如果进行了配置mta = sendmail,则可以缩小文件范围action.d/sendmail-*

然后,你必须看看你的action = %(action_*)s。如果您配置

“ action_”:在action.d / sendmail .conf中注释“ actionstart”和“ actionstop”

“ action_mw”:在action.d / sendmail -whois.conf中进行评论

“ action_mwl”:在action.d / sendmail -whois-lines.conf中进行评论

如果将mta配置为“邮件”,则只需将sendmail更改为mail并配置特定文件。

评论文件后,别忘了重新启动!


那我应该编辑哪个文件呢?.conf还是.local?但是也许我只是不明白,因为这个答案太老了。吉姆的答案将在2019
杰克·米勒

9

要在CentOS 7(RHEL 7)上的Fail2Ban v0.9.1(从epel存储库)中解决此问题,您可以在/etc/fail2ban/action.d/sendmail-common中覆盖sendmail的启动和停止操作(将它们设置为空)。本地。我通过以超级用户身份运行以下命令来创建此文件:

cat << EOF >> /etc/fail2ban/action.d/sendmail-common.local
# Override the Fail2Ban defaults in sendmail-common.conf with these entries

[Definition]
# Disable email notifications of jails stopping or starting
actionstart =
actionstop =
EOF
cat /etc/fail2ban/action.d/sendmail-common.local

这实际上并没有帮助解决问题,因为该.local变体将在.conf文件之后加载,但是两者仍将在配置操作的文件中的定义之前加载(send)mail-*.conf。除了编辑动作文件,别无其他方法,最简洁/最简单的方法是after在指向相同包含的文件中添加一个挂钩。cf. osso.nl/blog/fail2ban-started-e-mail-disable。您还可以复制所有这些文件并创建一个完整的其他分支,即custommail-*.conf,避免修改默认文件。
伯纳德·罗塞特

在centOS7中,这是唯一真正有用的建议。当然,下次fail2ban重新启动仍会触发stop jails通知,但不会触发启动通知。然后会加载新的conf,因此不会再次触发停止通知
lese

1
@BernardRosset这确实有效,但是它需要fail2ban 0.9或更高版本,并且有人还没有修改出厂的配置文件并将其更改限制在.local文件中。可以从.local文件中覆盖0.9中的所有内容,但在0.8及更低版本中并非如此。
迈克尔·汉普顿

这是正确的答案。当然需要投票!
杰克·米勒

7

我发现禁用启动/停止通知的唯一方法是注释掉所有 这些文件中的actionstartactionstop部分:action.d/

mail-buffered.conf
mail.conf
mail-whois.conf
mail-whois-lines.conf
sendmail-buffered.conf
sendmail.conf
sendmail-whois.conf
sendmail-whois-lines.conf

3

尝试将先前答案的点点滴滴整理在一起,并附上一些更多的详细信息和冗长的命令。

jail.{conf,local}定义邮件的发送方式。默认情况下为sendmail。检查:

grep 'mta *=' jail.{conf,local}

要查看为监狱配置了哪些开始/停止操作,请使用 fail2ban-client -d

将两者放在一起:

mta=$(grep 'mta *=' /etc/fail2ban/jail.{conf,local} | awk '{print $NF}')
fail2ban-client -d | awk "/action(start|stop).*$mta/ {print \$4}" | sort -u

在我的配置中,输出是'sendmail-whois-lines',要编辑的文件。假设您的配置位于/ etc / fail2ban下,则完整文件名为/etc/fail2ban/action.d/sendmail-whois-lines.conf

但是,正如Rabin所述,请勿直接编辑该文件,因为在更新期间它将被覆盖。相反,创建/etc/fail2ban/action.d/sendmail-whois-lines.local(或action.d/file-name.local配置中正确的任何内容)并添加以下行:

[Definition]
actionstart =
actionstop  =

或者,对于那些懒得查找和创建正确文件的懒惰人:

mta=$(grep 'mta *=' /etc/fail2ban/jail.{conf,local} | awk '{print $NF}')
fail2ban-client -d \
| awk "/action(start|stop).*$mta/ {print \$4}" \
| sort -u \
| while read f; do \
    f=${f//\'/}
    f="/etc/fail2ban/action.d/${f/%,/}.local"
    cat <<EOF >>"$f"
[Definition]
actionstart =
actionstop  =
EOF
done

1

/etc/fail2ban/action.d/sendmail-common.conf通过创建文件来覆盖actionstart和actiontop定义 /etc/fail2ban/action.d/sendmail-common.local

将下面的文本添加到此文件

[Definition]
actionstart =
actionstop =

现在,您在fail2ban服务的启动/停止时没有收到任何邮件。


值得指出的是,您需要确保在文件上正确设置了权限(即0644并由拥有root)。今天对我如此。
Pezholio

0

我发现了一种快速简便的方法:

cd进入您的/etc/fail2ban/action.d目录。

然后,用您自己的替换每个actionstart语句,对我来说这是空白。

for FILE in *mail* ; do echo -e "actionstart =\nactionstop =\n" >> $FILE ; done

这会将新的actionstart和actionstop部分添加到每个发出的文件中。

1行,工作完成。


0

不知道建议更改该软件包随附的默认文件(如此处建议的那样),下次您更新它们时,它们将被覆盖。

只需将您在这种情况下使用的操作复制sendmail-whois到新文件中,即可随意命名,例如sendmail-mod即可随意,在此文件中,您需要注释掉(或删除)actionstart / actionstop部分。

接下来,在配置文件(jail.conf / jail.local)中更改操作,以使用新操作。

从:

action   = iptables-allports[name=ASTERISK, protocol=all]
           sendmail-whois[name=ASTERISK, dest=blah@foo.com, sender=blah@foo.com] 

至:

action   = iptables-allports[name=ASTERISK, protocol=all]
           sendmail-mod[name=ASTERISK, dest=blah@foo.com, sender=blah@foo.com] 

0

首先,正如某些人提到的那样,创建一个“ .local”文件并在其中进行更改似乎比编辑原始的“ .conf”文件更好,后者可能会在以后的更新中被覆盖。

最重要的是,基于这个出色的链接:http : //tonesworld.co.uk/fail2ban-disable-stop-and-start-emails/,我执行了以下步骤,并解决了该问题:

1. 创建一个新文件并对其进行编辑:

sudo nano /etc/fail2ban/action.d/stop-start.local

2. 粘贴到内部(然后退出并保存):

[Definition]

actionstart =

actionstop =

3.如果fail2ban使用“邮件”发送电子邮件:

sudo ln -s /etc/fail2ban/action.d/stop-start.local /etc/fail2ban/action.d/mail-buffered.local

sudo ln -s /etc/fail2ban/action.d/stop-start.local /etc/fail2ban/action.d/mail-whois-common.local

sudo ln -s /etc/fail2ban/action.d/stop-start.local /etc/fail2ban/action.d/mail-whois-lines.local

sudo ln -s /etc/fail2ban/action.d/stop-start.local /etc/fail2ban/action.d/mail-whois.local

sudo ln -s /etc/fail2ban/action.d/stop-start.local /etc/fail2ban/action.d/mail.local

如果fail2ban使用“ sendmail”发送电子邮件:

sudo ln -s /etc/fail2ban/action.d/stop-start.local /etc/fail2ban/action.d/sendmail-buffered.local

sudo ln -s /etc/fail2ban/action.d/stop-start.local /etc/fail2ban/action.d/sendmail-common.local

sudo ln -s /etc/fail2ban/action.d/stop-start.local /etc/fail2ban/action.d/sendmail-geoip-lines.local

sudo ln -s /etc/fail2ban/action.d/stop-start.local /etc/fail2ban/action.d/sendmail-whois-ipjailmatches.local

sudo ln -s /etc/fail2ban/action.d/stop-start.local /etc/fail2ban/action.d/sendmail-whois-ipmatches.local

sudo ln -s /etc/fail2ban/action.d/stop-start.local /etc/fail2ban/action.d/sendmail-whois-lines.local

sudo ln -s /etc/fail2ban/action.d/stop-start.local /etc/fail2ban/action.d/sendmail-whois-matches.local

sudo ln -s /etc/fail2ban/action.d/stop-start.local /etc/fail2ban/action.d/sendmail-whois.local

sudo ln -s /etc/fail2ban/action.d/stop-start.local /etc/fail2ban/action.d/sendmail.local

4. 重新开始应用更改:

sudo service fail2ban restart

最后说明:在应用这些更改后的第一时间,您仍会看到“停止”消息,因为尚未应用新的更改。


0

这是我的解决方案,创建一个bash文件并运行:

#!/bin/bash
echo Start ...
BASE_PATH="/etc/fail2ban/action.d/"
FILES="${BASE_PATH}mail-buffered.conf
${BASE_PATH}mail.conf
${BASE_PATH}mail-whois.conf
${BASE_PATH}mail-whois-lines.conf
${BASE_PATH}sendmail-buffered.conf
${BASE_PATH}sendmail.conf
${BASE_PATH}sendmail-whois.conf
${BASE_PATH}sendmail-whois-lines.conf"
echo $FILES
for f in $FILES
    do
        temp1=${f}.temp1
        awk '/^[^   ]/ { comment=0 }
             /^actionstart/ { comment=1 } 
             comment {$0 = "#" $0}
             { print }' $f > $temp1 && mv -f $temp1 $f || rm -f $temp1
        temp2=${f}.temp2
        awk '/^[^   ]/ { comment=0 }
             /^actionstop/ { comment=1 } 
             comment {$0 = "#" $0}
             { print }' $f > $temp2 && mv -f $temp2 $f || rm -f $temp2
    done

代码的第一部分定义了要更改的文件列表,第二部分基本上使用awk命令注释掉了这些部分。

可以用一行代码/命令来完成,该代码/命令迭代所有文件并循环遍历单词,但是我尝试使其尽可能清楚。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.