หยุด fail2ban หยุด / เริ่มการแจ้งเตือน


15

หากเซิร์ฟเวอร์รีสตาร์ทหรือแม้ว่า 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 จะหยุด แต่ก็ยังหยุดการแจ้งเตือนห้ามฉันจะให้มันหยุดเพื่อแจ้งเตือนฉันเมื่อกระบวนการเริ่ม / หยุด?

ขอบคุณ

คำตอบ:


10

ดูที่action.d/mail.confหรือaction.d/sendmail.confควบคุมเมลสำหรับ start / stop / ban


นี้ไม่ได้ทำเคล็ดลับ ผมคิดว่ามีบางไฟล์อื่น ๆ เพื่อแก้ไขเพราะผมให้ได้รับอีเมลนี้น่ารำคาญ :(
Kreker

@ เครเกอร์มันใช้งานได้สำหรับฉันและ OP ที่น่าจะเป็นเหตุผลที่พวกเขาทำเครื่องหมายว่าเป็นที่ยอมรับ หากมันไม่ได้ผลสำหรับคุณคุณอาจจะมีการกำหนดค่าที่แตกต่างกันหรือคุณกำหนดค่าบางอย่างผิดหรือเปล่า?
user9517

ในการกำหนดค่าของ fail2ban ฉันใช้ sendmail เป็น mta ดังนั้นมันจึงโหลด action.d / sendmail.conf ฉันมีการติดตั้งตามปกติจาก apt-get
Kreker

9

ไม่จำเป็นต้องแก้ไขในไฟล์ใด ๆ jail.confมันขึ้นอยู่กับการกำหนดค่าของคุณ

หากคุณกำหนดค่าmta = sendmailคุณสามารถ จำกัด ไฟล์ให้แคบลงaction.d/sendmail-*ได้

action = %(action_*)sจากนั้นคุณต้องมองไปที่คุณ หากคุณกำหนดค่า

"action_": ความคิดเห็น "actionstart" & "actionstop" ใน action.d / sendmail .conf

"action_mw": ความคิดเห็น ... ใน action.d / sendmail -whois.conf

"action_mwl": ความคิดเห็น ... ใน action.d / sendmail -whois-lines.conf

หากคุณกำหนดค่า mta เป็น "mail" เพียงแค่เปลี่ยนsendmailเป็นmailและกำหนดค่าไฟล์เฉพาะ

อย่าลืมรีสตาร์ทหลังจากแสดงความคิดเห็นไฟล์!


ดังนั้นฉันควรแก้ไขไฟล์ใด .confหรือ.local? แต่บางทีฉันก็ไม่เข้าใจเพราะคำตอบนี้เก่ามาก คำตอบของ Jim ทำงานได้ในปี 2019
Jack Miller

9

ในการแก้ไขปัญหานี้ใน Fail2Ban v0.9.1 (จาก epel repository) บน CentOS 7 (RHEL 7) คุณสามารถแทนที่ sendmail ที่เริ่มต้นและหยุดการกระทำ (ตั้งเป็นไม่มีอะไร) ใน /etc/fail2ban/action.d/sendmail-common ในประเทศ ฉันสร้างไฟล์นี้โดยใช้คำสั่งเหล่านี้เป็น root:

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 ครั้งถัดไปจะยังคงทริกเกอร์การแจ้งเตือนการหยุดคุก แต่ไม่ใช่การเริ่มต้นหนึ่งครั้ง จากนั้น conf ใหม่มีการโหลดและการแจ้งเตือนดังนั้นไม่หยุดจะถูกเรียกอีกครั้ง
หมิ่น

1
@BernardRosset ใช้งานได้จริง แต่ต้องมี fail2ban 0.9 หรือสูงกว่าและบางคนไม่ได้แก้ไขไฟล์กำหนดค่าที่จัดส่งมาและได้ จำกัด การเปลี่ยนแปลง.localไฟล์ไว้ ทุกอย่างใน 0.9 สามารถถูกแทนที่ได้จาก.localไฟล์ แต่สิ่งนี้ไม่เป็นความจริงใน 0.8 และก่อนหน้านี้
Michael Hampton

นี่คือคำตอบที่ถูกต้อง มันต้องลงคะแนนอย่างแน่นอน!
Jack Miller

7

วิธีเดียวที่ฉันพบการปิดใช้งานการแจ้งเตือน START / STOP ที่จะแสดงความคิดเห็นออกactionstartและactionstopส่วนในทั้งหมด ของไฟล์เหล่านี้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

ใน config ของฉันเอาต์พุตจะ'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

actionstart แทนที่และคำจำกัดความ actionstop ใน โดยการสร้างไฟล์/etc/fail2ban/action.d/sendmail-common.conf/etc/fail2ban/action.d/sendmail-common.local

เพิ่มข้อความด้านล่างลงในไฟล์นี้

[Definition]
actionstart =
actionstop =

ตอนนี้คุณไม่ได้รับจดหมายใด ๆ เมื่อเริ่ม / หยุดบริการ fail2ban


ควรค่าแก่การชี้ให้เห็นว่าคุณต้องตรวจสอบให้แน่ใจว่ามีการตั้งค่าการอนุญาตอย่างถูกต้องในไฟล์ (เช่น0644และเป็นเจ้าของโดยroot) วันนี้ฉัน
Pezholio

0

ฉันพบวิธีที่ง่ายและรวดเร็วในการทำสิ่งนี้:

cdใน/etc/fail2ban/action.dไดเรกทอรีของคุณ

จากนั้นก็แทนที่คำแถลงการกระทำแต่ละอย่างด้วยตัวคุณเองซึ่งสำหรับฉันนั้นว่างเปล่า

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 ใช้ "mail" เพื่อส่งอีเมล:

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

มันสามารถทำได้ในรหัสบรรทัดเดียว / คำสั่งที่ซ้ำทุกไฟล์และวนรอบคำ แต่ฉันพยายามที่จะทำให้มันชัดเจนที่สุด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.