הגן על Zimbra OSE מכוח גס והתקפות DoS

ל-Zimbra Collaboration Suite Edition קוד פתוח יש כמה כלים רבי עוצמה כדי להבטיח אבטחת מידע. ביניהם פוסטמסך - פתרון להגנה על שרת דואר מפני התקפות מרשתות בוטים, ClamAV - אנטי וירוס שיכול לסרוק קבצים ומכתבים נכנסים לאיתור הדבקה בתוכנות זדוניות, וכן SpamAssassin - אחד ממסנני הספאם הטובים ביותר כיום. עם זאת, כלים אלה אינם מסוגלים להגן על Zimbra OSE מפני התקפות כוח גס. לא הסיסמאות האלגנטיות ביותר, אך עדיין די יעילות, אכיפות גסות באמצעות מילון מיוחד טומנות בחובן לא רק את הסבירות של פריצה מוצלחת עם כל ההשלכות הנובעות מכך, אלא גם ביצירת עומס משמעותי על השרת, שמעבד את כל ניסיונות לא מוצלחים לפרוץ שרת עם Zimbra OSE.

הגן על Zimbra OSE מכוח גס והתקפות DoS

באופן עקרוני, אתה יכול להגן על עצמך מפני כוח גס באמצעות כלי Zimbra OSE סטנדרטיים. הגדרות מדיניות אבטחת הסיסמה מאפשרות לך להגדיר את מספר ניסיונות הזנת הסיסמה הלא מוצלחים, שלאחריהם החשבון שעלול להיות מותקף נחסם. הבעיה העיקרית בגישה זו היא שנוצרים מצבים שבהם חשבונות של עובד אחד או יותר עלולים להיחסם עקב מתקפת כוח אכזרי שאין להם מה לעשות אליה, וההשבתה הנובעת מהעבודה של העובדים עלולה להביא להפסדים גדולים. החברה. לכן עדיף לא להשתמש באפשרות זו של הגנה מפני כוח גס.

הגן על Zimbra OSE מכוח גס והתקפות DoS

כדי להגן מפני כוח גס, מתאים הרבה יותר כלי מיוחד בשם DoSFilter, המובנה ב-Zimbra OSE ויכול לסיים אוטומטית את החיבור ל-Zimbra OSE באמצעות HTTP. במילים אחרות, עקרון הפעולה של DoSFilter דומה לעקרון הפעולה של PostScreen, רק שהוא משמש לפרוטוקול אחר. תוכנן במקור להגביל את מספר הפעולות שמשתמש בודד יכול לבצע, DoSFilter יכול גם לספק הגנה מכוח גס. ההבדל העיקרי שלו מהכלי המובנה ב-Zimbra הוא שאחרי מספר מסוים של ניסיונות לא מוצלחים, הוא לא חוסם את המשתמש עצמו, אלא את כתובת ה-IP שממנה נעשים ניסיונות מרובים להיכנס לחשבון מסוים. הודות לכך, מנהל מערכת יכול לא רק להגן מפני כוח גס, אלא גם להימנע מחסימת עובדי החברה על ידי הוספת הרשת הפנימית של החברה שלו לרשימת כתובות ה-IP ורשתות המשנה המהימנות.

היתרון הגדול של DoSFilter הוא שבנוסף למספר ניסיונות להתחבר לחשבון מסוים, באמצעות כלי זה ניתן לחסום אוטומטית את התוקפים שהשתלטו על נתוני האימות של עובד, ולאחר מכן התחברו בהצלחה לחשבון שלו והחלו לשלוח מאות בקשות לשרת.

אתה יכול להגדיר את DoSFilter באמצעות פקודות המסוף הבאות:

  • zimbraHttpDosFilterMaxRequestsPerSec — באמצעות פקודה זו, תוכל להגדיר את מספר החיבורים המרבי המותר למשתמש אחד. כברירת מחדל ערך זה הוא 30 חיבורים.
  • zimbraHttpDosFilterDelayMillis - באמצעות פקודה זו, ניתן להגדיר השהייה באלפיות שניות לחיבורים שיחרגו מהמגבלה שצוינה בפקודה הקודמת. בנוסף לערכי מספר שלמים, המנהל יכול לציין 0, כך שלא יהיה השהייה כלל, ו-1, כך שכל החיבורים החורגים מהמגבלה שצוינה פשוט נקטעו. ערך ברירת המחדל הוא -1.
  • zimbraHttpThrottleSafeIPs — באמצעות פקודה זו, מנהל המערכת יכול לציין כתובות 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 ובכך להגביר את האבטחה של תשתית ה-IT של הארגון שלכם.

כמו כל יישום אחר ברמה ארגונית, Zimbra Collaboration Suite Edition קוד פתוח שומרת יומנים מפורטים של עבודתה. רובם מאוחסנים בתיקייה /opt/zimbra/log/ בצורה של קבצים. הנה רק כמה מהם:

  • mailbox.log — יומני שירות הדואר המזח
  • audit.log - יומני אימות
  • clamd.log - יומני פעולות של אנטי וירוס
  • freshclam.log - יומני עדכוני אנטי וירוס
  • convertd.log - יומני ממיר קבצים מצורפים
  • zimbrastats.csv - יומני ביצועי שרת

ניתן למצוא גם יומני זימברה בקובץ /var/log/zimbra.log, שבו נשמרים יומנים של Postfix ושל Zimbra עצמה.

על מנת להגן על המערכת שלנו מכוח גס, אנו ננטר mailbox.log, יומן ביקורת и zimbra.log.

כדי שהכל יעבוד, יש צורך ש-Fail2Ban ו-iptables יותקנו על השרת שלך עם Zimbra OSE. אם אתה משתמש באובונטו, אתה יכול לעשות זאת באמצעות הפקודות dpkg -s fail2ban, אם אתה משתמש ב- CentOS, אתה יכול לבדוק זאת באמצעות הפקודות yum list מותקנת fail2ban. אם אין לך את 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, dest=admin@company.ru, sender=fail2ban@company.ru]
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, dest=support@company.ru]
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, dest=support@company.ru ]
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, dest=support@company.ru]
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, dest=support@company.ru]
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, dest=support@company.ru]
logpath = /var/log/zimbra.log
bantime = -1
maxretry = 5

למרות שהדוגמה הזו די כללית, עדיין כדאי להסביר כמה מהפרמטרים שאולי תרצה לשנות בעת הגדרת Fail2Ban בעצמך:

  • התעלם - באמצעות פרמטר זה אתה יכול לציין ip ספציפי או רשת משנה שממנה Fail2Ban לא אמור לבדוק כתובות. ככלל, הרשת הפנימית של הארגון וכתובות מהימנות אחרות מתווספות לרשימת הכתובות שמתעלמות מהן.
  • Bantime - הזמן שעבורו ייאסר העבריין. נמדד בשניות. ערך של -1 פירושו איסור קבוע.
  • מקסטרי - המספר המרבי של הפעמים שכתובת IP אחת יכולה לנסות לגשת לשרת.
  • Sendmail — הגדרה המאפשרת לשלוח הודעות דוא"ל אוטומטית כאשר Fail2Ban מופעל.
  • למצוא זמן — הגדרה המאפשרת לך להגדיר את מרווח הזמן שאחריו כתובת ה-IP יכולה לנסות לגשת שוב לשרת לאחר מיצוי המספר המרבי של ניסיונות לא מוצלחים (פרמטר maxretry)

לאחר שמירת הקובץ עם הגדרות Fail2Ban, כל מה שנותר הוא להפעיל מחדש את הכלי הזה באמצעות הפקודה הפעלה מחדש של השירות fail2ban. לאחר ההפעלה מחדש, יומני הזמברה הראשיים יתחילו להיות במעקב מתמיד לצורך תאימות לביטויים רגולריים. הודות לכך, מנהל המערכת יוכל למעשה לחסל כל אפשרות של תוקף לחדור לא רק לתיבות הדואר של Zimbra Collaboration Suite-Open-Source Edition, אלא גם להגן על כל השירותים הפועלים בתוך Zimbra OSE, וגם להיות מודע לכל ניסיונות להשיג גישה לא מורשית .

לכל השאלות הקשורות ל-Zextras Suite, ניתן ליצור קשר עם נציגת Zextras, Ekaterina Triandafilidi, במייל katerina@zextras.com

מקור: www.habr.com

הוספת תגובה