הגנה על השרת שלך מהתקפות ברוט פורס היא חובה. השאלה היא, איך בדיוק? מזל שלך, Fail2Ban זמין כאן כדי להגן על השרת שלך, אך יש צורך להתאים את התצורה המוגדרת כברירת מחדל של Fail2Ban לצורכי אבטחה אופטימליים. אך אל תדאג, המדריך הזה יכול לעזור לך.
במדריך זה, תלמד כיצד להגדיר את Fail2Ban ולהגן מהתקפות ברוט פורס על ידי מאבטח את שרת ה־SSH שלך.
מוכן? המשך לקרוא כדי לייעל את האבטחה של שרת ה־SSH שלך!
דרישות מוקדמות
מדריך זה כולל הוראות שלב אחר שלב. אם ברצונך לעקוב, הקפד לוודא שיש לך את הדברים הבאים במקום:
- שרתי Ubuntu ו־Debian – מדריך זה משתמש בשרת הרצה Ubuntu 18.04 LTS כדי להגדיר את Fail2Ban ובשרת Debian 10 לבדיקת הגדרות האיסור של Fail2Ban.
- גישת Root או הרשאות sudo על השרת כדי לבצע פקודות כמנהל מערכת.
- Fail2Ban הותקן בשרת Ubuntu או Debian.
הגדרת חומת אש בסיסית
Fail2Ban מגן על השרת שלך על ידי מעקב אחר הלוגים וחסימת כתובות IP שביצעו מספר ניסיונות כניסה רבים בתקופת זמן מסוימת. אך קודם כל, יש להגדיר חומת אש בסיסית כדי שתוכל להוסיף כללים לחסימת פעולות זדוניות על השרת שלך.
1. ראשית, הפעל את פקודת service
למטה כדי לעצור את Fail2Ban (fail2ban stop
) מהרצה. עצור את Fail2Ban כאשר אתה עושה שינויים בקבצי התצורה שלך כדי שתוכל לבדוק את השינויים ולוודא שהם עובדים כצפוי.

2. הפעל את פקודת apt install
כדי להתקין את Sendmail
ואת IPTables-persistent
. Sendmail הוא תוכנה שFail2Ban משתמשת בה כדי להודיע לך כאשר היא חוסמת כתובת IP. IPTables-persistent הוא תוכנה ששומרת על הגדרות התצורה ששינית בקובץ /etc/sysconfig/iptables.
יש להתקין את התוכניות הללו כדי לשמור על הגדרות הגימור של הגדרת האש אפ, גם אם משהו בלתי צפוי קורה, כמו קריסת חשמל.
כעת הרץ כל פקודת iptables
למטה כדי להגדיר את האש שלך. הפקודות הללו לא יצורפו לך כל פלט, אלא יוסיפו ארבעה כללים לאש שלך. כללים אלו יאפשרו או יחסמו חיבורים לשרת שלך.

4. הרץ את הפקודת iptables
למטה כדי לצפות בסיכום של מה שהגדרת באש שלך.
למטה, מודגשים הכללים שהוספת לאש שלך.

5. לאחר מכן, הרץ את הפקודות הבאות כדי לשמור את הכללים שלך בקובץ /etc/sysconfig/iptables-config ולהתחיל את שירות ה- Fail2Ban. הקובץ iptables-config מכיל את כל הכללים הקבועים של האש שלך.
Fail2Ban יוסיף באופן אוטומטי כמה כללים לאש שלך כדי להגן על השרת שלך.
6. לבסוף, הרץ שוב את הפקודת iptables
למטה כדי לצפות בכללי האש שלך.
כפי שמודגש באדום למטה, הכללים החדשים ש- Fail2Ban הוסיף לאש שלך.

כיוון את הגדרות Fail2Ban המקומי שלך
עכשיו שיש לך חומת אש בסיסית פועלת, זה הזמן להתאים את קובץ התצורה של Fail2Ban המקומי שלך כדי להוסיף יותר שליטה על האבטחה של השרת שלך. המדריך הזה משתמש בקובץ ההגדרות /etc/fail2ban/jail.conf מאחר והוא מכיל את כל האפשרויות הנדרשות להגדרת הגדרות גלובליות עבור יישום Fail2Ban.
אולי ברצונך ליצור כללים מותאמים אישית עבור שרת SSH שלך. אם כן, תיצור קובץ חדש בשם jail.local (מבוסס על הקובץ jail.conf) ותכניס את הכללים הספציפיים ל-SSH לתוך הקובץ jail.local. בעזרת כך, תוכל לדרוס הגדרות בקובץ jail.conf עבור השרת שלך.
1. הרץ את הפקודה awk
לביצוע הפעולות הבאות:
- הדפס את התוכן (
'{ printf "# "; print; }'
) של קובץ/etc/fail2ban/jail.conf
. - צור קובץ בשם jail.local (מבוסס על הקובץ jail.conf), שתוכל להשתמש בו כדי לדרוס את הגדרות הברירת מחדל בקובץ jail.conf.
- שדרג את התוכן של קובץ
/etc/fail2ban/jail.conf
לפקודתtee
. על ידי כך תוכל לכתוב את תוכן הקובץjail.conf
למערכת הקבצים המקומית שלך (/etc/fail2ban/jail.local
).

2. לאחר שיצרת את הקובץ jail.local, הרץ את הפקודה ls
למטה. הפקודה מציגה את תוכן ספריית ה- Fail2Ban של השרת (/etc/fail2ban
) כדי לוודא שהקובץ jail.local נוצר בצורה נכונה.
אם אתה רואה את הקובץ החדש jail.local, כפי שמוצג למטה, אז הקובץ המקומי שלך נוצר בצורה נכונה.

3. פתח את הקובץ /etc/fail2ban/jail.local בעורך הטקסט המועדף עליך ונווט אל החלק [ssh].
בטל את ההערה מהאפשרויות [sshd] ו־enabled על ידי מחיקת הסמל # מלפניהן, כפי שמוצג למטה, כדי לאפשר SSH.
מנקודה זו ועד סוף המדריך, הסר את הסמל # מלפני חלקים או אפשרויות כדי לאפשר אותם.

4. גלול למטה ובטל את ההערה מהחלק [DEFAULT] כפי שמוצג למטה. חלק זה הוא המקום שבו אתה מגדיר את הגדרות ברירת המחדל ל־Fail2Ban. כל הגדרות בחלק זה ייחוד על כל jails שבהן פועל Fail2Ban.

5. לאחר מכן, גלול למטה אל החלק bantime, וקבע את bantime למשך 60 דקות. האפשרות bantime מגדירה את כמות הזמן, בדקות, שכתובת ה־IP מושעית לאחר ניסיון כניסה נכשל.
הגדרת בזמן בינוי ברירת המחדל היא 600 שניות (10 דקות). ניתן להתאים אישית את ההגדרה הזו, אך חשוב לשים לב שככל שהגדרת בזמן בינוי תהיה נמוכה יותר, השרת שלך יחווה עומס נוסף.

6. נווט לאפשרויות findtime ו-maxretry. שמור על הערכים של findtime (10m) והורד את הערך של maxretry ל-3.
האפשרות findtime מגדירה את כמות הזמן, בדקות, שכתובת IP יכולה לנכות בניסיון התחברות לפני שהיא נחסמת. בעוד האפשרות maxretry מגדירה את מספר נסיונות ההתחברות הנכשלים לפני שכתובת ה-IP נחסמת.
הגדרת ברירת המחדל של findtime היא 10 דקות, ושל maxretry היא 5 דקות. כתוצאה מכך, כתובת IP שנכשלת להתחבר 5 פעמים בתקופה של 10 דקות תחוסם.

7. גלול למטה, הסר את ההערה והגדר את האפשרויות destemail, sender, ו-mta:
- destemail – הזן כתובת דוא"ל למערכת Fail2Ban לשלוח התראות אליה.
- sender – הגדר את השדה "מאת" בדוא"ל שFail2Ban שולחת ל-destemail.
- mta – שמור על הברירת מחדל (sendmail) והואר את האפשרות mta שמגדירה את סוחף הדוא"ל ש- Fail2Ban משתמשת לשליחת התראות.

8. נווט לאפשרויות הפעולה, כפי שמוצג למטה, ובטל את ההערה באפשרות הaction_mwl. בעזרת כך, תאפשר ל־Fail2Ban לשלוח אימיילים של logwatch אליך. תוכל לבדוק את האימיילים של logwatch כדי לחקור עוד אפשרויות בעיות אבטחה אפשריות בשרת שלך.
שמור את השינויים וצא מהעורך הטקסט.

9. כעת הפעל את הפקודות הבאות כדי לאתחל את השירות fail2ban
שלך.
10. לבסוף, הרץ את הפקודה הבאה כדי לבדוק את status
השירות fail2ban
שלך. sudo service fail2ban status
אם השירות Fail2Ban פועל, תקבל פלט כמו בדוגמה למטה.
אם השירות Fail2Ban פועל, תקבל פלט כמו בדוגמה למטה.

בדיקת הגדרות החסימה שלך
כרגע תצורת Fail2Ban שלך מוגדרת, אז עכשיו הגיע הזמן לבדוק אם ההגדרות לחסימה פועלות בפועל. נסה לבצע מספר כניסות SSH נכשלות לשרת ה־Fail2Ban שלך משרת משני וראה האם השרת המשני נחסם.
1. התחבר לשרת המשני שלך (Debian), והרץ את הפקודה הבאה כדי להתחבר ב־SSH לשרת ה־Fail2Ban שלך.
הדגמה הזו משתמשת בשרת Debian 10 עם כתובת IP של 134.122.20.103 כדי להתחבר ב־ssh
לשרת ה־fail2ban
שיש לו כתובת IP של 69.28.83.134
.
2. הזן סיסמה אקראית כאשר יתבקש ולחץ על Enter.
עם הניסיון הראשון, שרת ה-Fail2Ban יעצור את ניסיון הכניסה ל-SSH וידפיס את ההודעה Permission denied, כפי שמוצג למטה. חזור על ניסיון הכניסה ל-SSH עוד שניים עד שלוש פעמים, ושרת ה-Fail2Ban בסופו יפסיק להגיב לניסיונות הכניסה ל-SSH שלך.
בנקודה זו, לא תקבל הודעת Permission denied יותר אלא מסך ריק. מקבלים מסך ריק מציינים שהשרת השני שלך (Debian) אובחן על ידי שרת ה-Fail2Ban.

אולם אולי כבר יש לך רשימה של כתובות IP לחסום משרת ה-Fail2Ban שלך. אם כן, פתח את הקובץ jail.local ונווט לסעיף [DEFAULT]. הסר את ההערה מהאפשרות ignoreip וקבע את כתובות ה-IP לחסום, כפי שמוצג למטה.
הכתובת יכולה להיות או כתובת IPv4 או IPv6 נפרדות, או להיות מופרדות בפסיקים.

3. בשרת ה-Fail2Ban שלך (Ubuntu), הפעל מחדש את הפקודה iptables
למטה כדי להציג את כללי הגנת הגישה שלך.
שים לב למטה שישנה כלל חדש שמסרב לניסיונות הכניסה ל-SSH מכתובת ה-IP 134.122.20.103.
תקבל גם דוא"ל מ-Fail2Ban לאחר החסימה המוצלחת, עם קובץ לוג מצורף אם יש לך את sendmail הוגדר בשרת ה-Fail2Ban שלך. הודעת הדוא"ל מציינת שה-Fail2Ban הצליח לעצור התקפת כוח פרצוף ושמר על השרת שלך מפני נזקים אפשריים.

סיכום
במהלך המדריך הזה, למדת כיצד להגדיר את Fail2Ban על שרת Ubuntu. בנקודה זו, אתה אמוזה בידע כדי להגן על השרת SSH שלך מתקיפות כוח גורם.
עכשיו, למה לא לקחת את הידע החדש שלך לשלב נוסף? אולי להתחיל עם חסימת כתובות IP בכל היציאות עם Fail2Ban על מארח Docker?