ปกป้อง Zimbra OSE จากการโจมตีแบบ Brute Force และ DoS

Zimbra Collaboration Suite Open-Source Edition มีเครื่องมืออันทรงพลังมากมายเพื่อรับรองความปลอดภัยของข้อมูล ในหมู่พวกเขา โพสต์สกรีน - โซลูชั่นสำหรับการปกป้องเมลเซิร์ฟเวอร์จากการถูกโจมตีจากบอตเน็ต, ClamAV - โปรแกรมป้องกันไวรัสที่สามารถสแกนไฟล์และตัวอักษรขาเข้าเพื่อตรวจหาการติดไวรัสจากโปรแกรมที่เป็นอันตรายรวมถึง SpamAssassin - หนึ่งในตัวกรองสแปมที่ดีที่สุดในปัจจุบัน อย่างไรก็ตาม เครื่องมือเหล่านี้ไม่สามารถปกป้อง Zimbra OSE จากการโจมตีแบบดุร้ายได้ ไม่ใช่รหัสผ่านที่หรูหราที่สุด แต่ยังมีประสิทธิภาพค่อนข้างมากการใช้พจนานุกรมพิเศษนั้นเต็มไปด้วยความเป็นไปได้ที่จะแฮ็คได้สำเร็จพร้อมกับผลที่ตามมาทั้งหมด แต่ยังรวมถึงการสร้างภาระสำคัญบนเซิร์ฟเวอร์ซึ่งประมวลผลทั้งหมด ความพยายามแฮ็คเซิร์ฟเวอร์ด้วย Zimbra OSE ไม่สำเร็จ

ปกป้อง Zimbra OSE จากการโจมตีแบบ Brute Force และ DoS

โดยหลักการแล้ว คุณสามารถป้องกันตัวเองจากการใช้กำลังดุร้ายได้โดยใช้เครื่องมือมาตรฐานของ Zimbra OSE การตั้งค่านโยบายความปลอดภัยของรหัสผ่านช่วยให้คุณสามารถกำหนดจำนวนการพยายามป้อนรหัสผ่านที่ไม่สำเร็จ หลังจากนั้นบัญชีที่อาจถูกโจมตีจะถูกบล็อก ปัญหาหลักของแนวทางนี้คือสถานการณ์ที่เกิดขึ้นซึ่งบัญชีของพนักงานตั้งแต่หนึ่งคนขึ้นไปอาจถูกบล็อกเนื่องจากการโจมตีแบบดุร้ายโดยที่พวกเขาไม่มีอะไรทำ และการหยุดทำงานที่เกิดขึ้นในการทำงานของพนักงานอาจทำให้เกิดความสูญเสียครั้งใหญ่ บริษัท. นั่นคือเหตุผลว่าทำไมจึงเป็นการดีที่สุดที่จะไม่ใช้ตัวเลือกนี้ในการป้องกันการใช้กำลังดุร้าย

ปกป้อง Zimbra OSE จากการโจมตีแบบ Brute Force และ DoS

เพื่อป้องกันการใช้กำลังดุร้าย เครื่องมือพิเศษที่เรียกว่า DoSFilter จึงเหมาะสมกว่ามาก ซึ่งมีอยู่ใน Zimbra OSE และสามารถยุติการเชื่อมต่อกับ Zimbra OSE ผ่าน HTTP ได้โดยอัตโนมัติ กล่าวอีกนัยหนึ่ง หลักการทำงานของ DoSFilter นั้นคล้ายคลึงกับหลักการทำงานของ PostScreen เพียงแต่ใช้สำหรับโปรโตคอลอื่นเท่านั้น เดิมทีออกแบบมาเพื่อจำกัดจำนวนการกระทำที่ผู้ใช้คนเดียวสามารถทำได้ DoSFilter ยังสามารถให้การป้องกันแบบเดรัจฉานได้ด้วย ความแตกต่างที่สำคัญจากเครื่องมือที่มีอยู่ใน Zimbra ก็คือ หลังจากที่พยายามไม่สำเร็จจำนวนหนึ่ง จะไม่บล็อกตัวผู้ใช้เอง แต่จะบล็อกที่อยู่ IP ที่มีการพยายามลงชื่อเข้าใช้บัญชีใดบัญชีหนึ่งหลายครั้ง ด้วยเหตุนี้ ผู้ดูแลระบบจึงไม่เพียงแต่สามารถป้องกันการบังคับใช้อย่างดุร้ายเท่านั้น แต่ยังหลีกเลี่ยงการบล็อกพนักงานของบริษัทด้วยการเพิ่มเครือข่ายภายในของบริษัทลงในรายการที่อยู่ IP และเครือข่ายย่อยที่เชื่อถือได้

ข้อได้เปรียบที่สำคัญของ DoSFilter ก็คือ นอกเหนือจากการพยายามลงชื่อเข้าใช้บัญชีใดบัญชีหนึ่งหลายครั้งแล้ว การใช้เครื่องมือนี้ช่วยให้คุณสามารถบล็อกผู้โจมตีที่ครอบครองข้อมูลการตรวจสอบสิทธิ์ของพนักงานได้โดยอัตโนมัติ จากนั้นจึงลงชื่อเข้าใช้บัญชีของเขาได้สำเร็จ และเริ่มส่งคำขอหลายร้อยรายการ ไปยังเซิร์ฟเวอร์

คุณสามารถกำหนดค่า DoSFilter ได้โดยใช้คำสั่งคอนโซลต่อไปนี้:

  • zimbraHttpDosFilterMaxRequestsPerSec — เมื่อใช้คำสั่งนี้ คุณสามารถตั้งค่าจำนวนการเชื่อมต่อสูงสุดที่อนุญาตสำหรับผู้ใช้หนึ่งราย โดยค่าเริ่มต้นค่านี้คือ 30 การเชื่อมต่อ
  • zimbraHttpDosFilterDelayMillis - การใช้คำสั่งนี้ คุณสามารถตั้งค่าการหน่วงเวลาเป็นมิลลิวินาทีสำหรับการเชื่อมต่อที่จะเกินขีดจำกัดที่ระบุโดยคำสั่งก่อนหน้า นอกจากค่าจำนวนเต็มแล้ว ผู้ดูแลระบบยังสามารถระบุ 0 เพื่อให้ไม่มีการหน่วงเวลาเลย และ -1 เพื่อให้การเชื่อมต่อทั้งหมดที่เกินขีดจำกัดที่ระบุถูกขัดจังหวะ ค่าเริ่มต้นคือ -1
  • zimbraHttpThrottleSafeIP — การใช้คำสั่งนี้ ผู้ดูแลระบบสามารถระบุที่อยู่ IP และซับเน็ตที่เชื่อถือได้ซึ่งจะไม่อยู่ภายใต้ข้อจำกัดที่ระบุไว้ข้างต้น โปรดทราบว่าไวยากรณ์ของคำสั่งนี้อาจแตกต่างกันไปขึ้นอยู่กับผลลัพธ์ที่ต้องการ เช่นโดยการป้อนคำสั่ง zmprov mcf zimbraHttpThrottleSafeIPs 127.0.0.1คุณจะเขียนทับรายการทั้งหมดโดยสมบูรณ์และเหลือที่อยู่ IP ไว้เพียงรายการเดียว หากเข้าคำสั่ง zmprov mcf +zimbraHttpThrottleSafeIPs 127.0.0.1ที่อยู่ IP ที่คุณป้อนจะถูกเพิ่มลงในรายการสีขาว ในทำนองเดียวกัน เมื่อใช้เครื่องหมายลบ คุณสามารถลบ IP ใดๆ ออกจากรายการที่อนุญาตได้

โปรดทราบว่า DoSFilter อาจสร้างปัญหาหลายประการเมื่อใช้ส่วนขยาย Zextras Suite Pro เพื่อหลีกเลี่ยงปัญหาเหล่านี้ เราขอแนะนำให้เพิ่มจำนวนการเชื่อมต่อพร้อมกันจาก 30 เป็น 100 โดยใช้คำสั่ง zmprov mcf zimbraHttpDosFilterMaxRequestsPerSec 100. นอกจากนี้ เราขอแนะนำให้เพิ่มเครือข่ายภายในองค์กรในรายการเครือข่ายที่อนุญาต ซึ่งสามารถทำได้โดยใช้คำสั่ง zmprov mcf +zimbraHttpThrottleSafeIPs 192.168.0.0/24. หลังจากทำการเปลี่ยนแปลง DoSFilter แล้ว อย่าลืมรีสตาร์ทเมลเซิร์ฟเวอร์ของคุณโดยใช้คำสั่ง zmmailboxdctl รีสตาร์ท.

ข้อเสียเปรียบหลักของ DoSFilter คือมันทำงานในระดับแอปพลิเคชันดังนั้นจึงสามารถจำกัดความสามารถของผู้โจมตีในการดำเนินการต่าง ๆ บนเซิร์ฟเวอร์เท่านั้น โดยไม่จำกัดความสามารถในการเชื่อมต่อกับทางเหนือ ด้วยเหตุนี้ คำขอที่ส่งไปยังเซิร์ฟเวอร์เพื่อตรวจสอบสิทธิ์หรือส่งจดหมาย แม้ว่าจะล้มเหลวอย่างเห็นได้ชัด แต่ก็ยังแสดงถึงการโจมตี DoS แบบเก่าที่ดี ซึ่งไม่สามารถหยุดได้ในระดับสูงเช่นนี้

เพื่อรักษาความปลอดภัยเซิร์ฟเวอร์องค์กรของคุณอย่างสมบูรณ์ด้วย Zimbra OSE คุณสามารถใช้โซลูชันเช่น Fail2ban ซึ่งเป็นเฟรมเวิร์กที่สามารถตรวจสอบบันทึกระบบข้อมูลสำหรับการดำเนินการซ้ำ ๆ และบล็อกผู้บุกรุกโดยการเปลี่ยนการตั้งค่าไฟร์วอลล์ การบล็อกในระดับต่ำทำให้คุณสามารถปิดการใช้งานผู้โจมตีได้ในขั้นตอนของการเชื่อมต่อ IP ไปยังเซิร์ฟเวอร์ ดังนั้น Fail2Ban จึงสามารถเสริมการป้องกันที่สร้างโดยใช้ DoSFilter ได้อย่างสมบูรณ์แบบ มาดูกันว่าคุณสามารถเชื่อมต่อ Fail2Ban กับ Zimbra OSE ได้อย่างไร และด้วยเหตุนี้จึงเพิ่มความปลอดภัยให้กับโครงสร้างพื้นฐานด้านไอทีขององค์กรของคุณ

เช่นเดียวกับแอปพลิเคชันระดับองค์กรอื่นๆ Zimbra Collaboration Suite Open-Source Edition จะเก็บบันทึกการทำงานโดยละเอียด ส่วนใหญ่จะเก็บไว้ในโฟลเดอร์ /opt/zimbra/log/ ในรูปแบบของไฟล์. นี่เป็นเพียงบางส่วนเท่านั้น:

  • mailbox.log - บันทึกบริการไปรษณีย์ของท่าเทียบเรือ
  • audit.log - บันทึกการตรวจสอบสิทธิ์
  • clamd.log — บันทึกการทำงานของโปรแกรมป้องกันไวรัส
  • freshclam.log - บันทึกการอัพเดตแอนติไวรัส
  • Convertd.log - บันทึกตัวแปลงไฟล์แนบ
  • zimbrastats.csv - บันทึกประสิทธิภาพของเซิร์ฟเวอร์

บันทึกของ Zimbra ยังสามารถพบได้ในไฟล์ /var/log/zimbra.logซึ่งบันทึกของ Postfix และ Zimbra จะถูกเก็บไว้

เพื่อปกป้องระบบของเราจากการใช้กำลังดุร้าย เราจะตรวจสอบ กล่องจดหมาย.log, ตรวจสอบ.log и zimbra.log.

เพื่อให้ทุกอย่างทำงานได้ จำเป็นต้องติดตั้ง Fail2Ban และ iptables บนเซิร์ฟเวอร์ของคุณด้วย Zimbra OSE หากคุณใช้ Ubuntu คุณสามารถทำได้โดยใช้คำสั่ง dpkg -s ล้มเหลว 2banหากคุณใช้ CentOS คุณสามารถตรวจสอบได้โดยใช้คำสั่ง ติดตั้งรายการ yum แล้ว failed2ban. หากคุณไม่ได้ติดตั้ง Fail2Ban การติดตั้งก็จะไม่มีปัญหา เนื่องจากแพ็คเกจนี้มีอยู่ในที่เก็บมาตรฐานเกือบทั้งหมด

เมื่อติดตั้งซอฟต์แวร์ที่จำเป็นทั้งหมดแล้ว คุณสามารถเริ่มตั้งค่า Fail2Ban ได้ ในการดำเนินการนี้ คุณจะต้องสร้างไฟล์การกำหนดค่า /etc/fail2ban/filter.d/zimbra.confซึ่งเราจะเขียนนิพจน์ทั่วไปสำหรับบันทึก Zimbra OSE ที่จะจับคู่การพยายามเข้าสู่ระบบที่ไม่ถูกต้องและทริกเกอร์กลไก Fail2Ban นี่คือตัวอย่างเนื้อหาของ zimbra.conf พร้อมด้วยชุดนิพจน์ทั่วไปที่สอดคล้องกับข้อผิดพลาดต่างๆ ที่ Zimbra OSE ส่งออกเมื่อความพยายามในการรับรองความถูกต้องล้มเหลว:

# Fail2Ban configuration file
 
[Definition]
failregex = [ip=<HOST>;] account - authentication failed for .* (no such account)$
                        [ip=<HOST>;] security - cmd=Auth; .* error=authentication failed for .*, invalid password;$
                        ;oip=<HOST>;.* security - cmd=Auth; .* protocol=soap; error=authentication failed for .* invalid password;$
                        ;oip=<HOST>;.* security - cmd=Auth; .* protocol=imap; error=authentication failed for .* invalid password;$
                        [oip=<HOST>;.* SoapEngine - handler exception: authentication failed for .*, account not found$
                        WARN .*;ip=<HOST>;ua=ZimbraWebClient .* security - cmd=AdminAuth; .* error=authentication failed for .*;$

ignoreregex =

เมื่อคอมไพล์นิพจน์ทั่วไปสำหรับ Zimbra OSE แล้ว ก็ถึงเวลาที่จะเริ่มแก้ไขการกำหนดค่าของ Fail2ban เอง การตั้งค่าของยูทิลิตี้นี้จะอยู่ในไฟล์ /etc/fail2ban/jail.conf. ในกรณีที่เรามาสร้างสำเนาสำรองโดยใช้คำสั่ง cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak. หลังจากนั้นเราจะลดขนาดไฟล์นี้ให้เหลือประมาณรูปแบบต่อไปนี้:

# Fail2Ban configuration file
 
[DEFAULT]
ignoreip = 192.168.0.1/24
bantime = 600
findtime = 600
maxretry = 5
backend = auto
 
[ssh-iptables]
enabled = false
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, [email protected], [email protected]]
logpath = /var/log/messages
maxretry = 5
 
[sasl-iptables]
enabled = false
filter = sasl
backend = polling
action = iptables[name=sasl, port=smtp, protocol=tcp]
sendmail-whois[name=sasl, [email protected]]
logpath = /var/log/zimbra.log
 
[ssh-tcpwrapper]
enabled = false
filter = sshd
action = hostsdeny
sendmail-whois[name=SSH, dest=support@ company.ru]
ignoreregex = for myuser from
logpath = /var/log/messages
 
[zimbra-account]
enabled = true
filter = zimbra
action = iptables-allports[name=zimbra-account]
sendmail[name=zimbra-account, [email protected] ]
logpath = /opt/zimbra/log/mailbox.log
bantime = 600
maxretry = 5
 
[zimbra-audit]
enabled = true
filter = zimbra
action = iptables-allports[name=zimbra-audit]
sendmail[name=Zimbra-audit, [email protected]]
logpath = /opt/zimbra/log/audit.log
bantime = 600
maxretry = 5
 
[zimbra-recipient]
enabled = true
filter = zimbra
action = iptables-allports[name=zimbra-recipient]
sendmail[name=Zimbra-recipient, [email protected]]
logpath = /var/log/zimbra.log
bantime = 172800
maxretry = 5
 
[postfix]
enabled = true
filter = postfix
action = iptables-multiport[name=postfix, port=smtp, protocol=tcp]
sendmail-buffered[name=Postfix, [email protected]]
logpath = /var/log/zimbra.log
bantime = -1
maxretry = 5

แม้ว่าตัวอย่างนี้จะค่อนข้างทั่วไป แต่ก็ยังคุ้มค่าที่จะอธิบายพารามิเตอร์บางตัวที่คุณอาจต้องการเปลี่ยนแปลงเมื่อตั้งค่า Fail2Ban ด้วยตัวเอง:

  • ไม่สนใจ — การใช้พารามิเตอร์นี้ทำให้คุณสามารถระบุ IP หรือซับเน็ตเฉพาะที่ Fail2Ban ไม่ควรตรวจสอบที่อยู่ ตามกฎแล้ว เครือข่ายภายในขององค์กรและที่อยู่ที่เชื่อถือได้อื่น ๆ จะถูกเพิ่มเข้าไปในรายการเครือข่ายที่ถูกละเว้น
  • แบนไทม์ — เวลาที่ผู้กระทำผิดจะถูกแบน วัดเป็นวินาที ค่า -1 หมายถึงการแบนถาวร
  • แม็กซ์เรทรี — จำนวนครั้งสูงสุดที่หนึ่งที่อยู่ IP สามารถพยายามเข้าถึงเซิร์ฟเวอร์ได้
  • ส่งอีเมล์ — การตั้งค่าที่ให้คุณส่งการแจ้งเตือนทางอีเมลโดยอัตโนมัติเมื่อ Fail2Ban ถูกทริกเกอร์
  • หาเวลา — การตั้งค่าที่ให้คุณกำหนดช่วงเวลาหลังจากที่ที่อยู่ IP สามารถลองเข้าถึงเซิร์ฟเวอร์ได้อีกครั้ง หลังจากหมดจำนวนความพยายามที่ไม่สำเร็จสูงสุดแล้ว (พารามิเตอร์ maxretry)

หลังจากบันทึกไฟล์ด้วยการตั้งค่า Fail2Ban สิ่งที่เหลืออยู่คือการรีสตาร์ทยูทิลิตี้นี้โดยใช้คำสั่ง บริการล้มเหลว 2ban รีสตาร์ท. หลังจากการรีสตาร์ท บันทึกหลักของ Zimbra จะเริ่มได้รับการตรวจสอบอย่างต่อเนื่องเพื่อให้สอดคล้องกับนิพจน์ทั่วไป ด้วยเหตุนี้ ผู้ดูแลระบบจึงสามารถขจัดความเป็นไปได้ที่ผู้โจมตีจะเจาะเข้ามาไม่เพียงแต่ในกล่องจดหมาย Zimbra Collaboration Suite Open-Source Edition เท่านั้น แต่ยังปกป้องบริการทั้งหมดที่ทำงานภายใน Zimbra OSE และยังรับรู้ถึงความพยายามใดๆ ในการเข้าถึงโดยไม่ได้รับอนุญาต .

สำหรับคำถามทั้งหมดที่เกี่ยวข้องกับ Zextras Suite คุณสามารถติดต่อตัวแทนของ Zextras Ekaterina Triandafilidi ทางอีเมล [ป้องกันอีเมล]

ที่มา: will.com

เพิ่มความคิดเห็น