
חשיפה של שרת לינוקס לרשת היא בעצם כמו להציב מגנט לבוטים. אם לא הגדרתם אמצעי אבטחה, סביר להניח שכבר יש לכם אלפי ניסיונות התחברות כושלים ביומני ההתחברות שלכם; ישנן מכונות אוטומטיות שמנסות כל הזמן שילובי שם משתמש וסיסמה כדי לנסות להשתלט על המכונה שלכם באמצעות התקפות Brute-Force.
כאן נכנס לתמונה Fail2ban, כלי שפועל ככלב שמירה בלתי נלאה. זה לא חומת אש במובן הצר ביותר, אלא מנתח יומני מערכת , וכאשר הוא מזהה מישהו שמנסה לפרוץ פנימה, הוא טורק את הדלת בפניו על ידי חסימת כתובת ה-IP שלו באמצעות כלים כמו iptables או nftables. בואו נראה כיצד להגדיר אותו כך שיהפוך את השרת שלכם לאגוז קשה לפיצוח.
מה זה בעצם Fail2ban ואיך זה עובד?
במילים פשוטות, Fail2ban הוא דמון שמנטר באופן רציף את קבצי היומן של השירותים שלך. כאשר הוא מוצא דפוסים חשודים התואמים כללים מוגדרים מראש, הנקראים מסננים , הוא מתחיל לספור כשלים. אם כתובת IP מגיעה למגבלת הניסיונות המותרים בתוך זמן מסוים, התוכנית מבצעת פעולה , שבדרך כלל כוללת הוספת כתובת ה-IP הזו לרשימה השחורה של חומת האש.
תצורות אלו מאורגנות במה שנקרא jails . jail הוא בעצם קבוצת כללים המופעלים על שירות ספציפי (כגון SSH, Apache או MySQL). בדרך זו, ניתן לקבל מדיניות מחמירה מאוד לגישה מרחוק ומדיניות מתירנית יותר לשרת האינטרנט, מה שמבטיח שפולשים ייחסמו אוטומטית מבלי שתצטרכו לבדוק ידנית את הלוגים כל חמש דקות.

התקנה בהתאם להפצת הלינוקס שלך
בהתאם למערכת בה אתם משתמשים, הפקודה להתקנתה משתנה מעט, אך היא זמינה בדרך כלל כמעט בכל המאגרים הרשמיים.
- על אובונטו ודביאן: זה פשוט מאוד, אתה רק צריך לרוץ
sudo apt updateואחריוsudo apt install fail2ban. - על רוקי לינוקס או אלמה לינוקס: מכיוון שאלו הן הפצות ארגוניות, עליך תחילה להפעיל את מאגר EPEL באמצעות
sudo dnf install epel-releaseולאחר מכן להתקין את החבילה עםsudo dnf install fail2ban fail2ban-firewalld. - בלינוקס של אלפיין: השתמש במנהל ה-APK עם
sudo apk add fail2banומכיוון שהוא משתמש ב-OpenRC, עליך להפעיל אותו באמצעותsudo rc-update add fail2ban defaultולהתחיל את זה עםsudo rc-service fail2ban start.

תצורת אב: הסוד של קובץ ה-.local
טעות נפוצה מאוד היא לערוך את הקובץ ישירות. jail.confאל תעשה את זה! ניתן להחליף את הקובץ הזה כשאתה מעדכן את המערכת. כלל הזהב הוא ליצור עותק בשם jail.localכל פרמטר שתוסיף לקובץ השני הזה יקבל עדיפות על פני המקור, והשינויים שלך יימחקו. בטוח מפני עדכונים.
כדי להתחיל, ניתן לשכפל את הקובץ המקורי באמצעות sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local ולאחר מכן פתח אותו עם העורך המועדף עליך, כגון nano או vim. בקטע [בְּרִירַת מֶחדָל] כאן אתה מגדיר את ההתנהגות הכוללת של המערכת:
- זמן בטל: משך הזמן שבו כתובת ה-IP הזדונית תישאר קפואה. ניתן לציין זאת בשניות או באמצעות 'm' לדקות (לדוגמה, 10 דקות).
- זמן מציאת: מרווח הזמן שבו Fail2ban בודק שגיאות. אם מישהו נכשל 5 פעמים בשעה אך זמן החיפוש הוא 10 דקות, הוא לא ייחסם.
- מקסטרי: מספר הניסיונות הכושלים המותרים לפני שהמערכת אומרת מספיק וחסום את ה-IP.
- אי-התעלמות: חיוני כדי להימנע מחסימת עצמך. כאן עליך להזין את כתובת IP ציבורית או טווח ה-VPN שלך.
הגנה על שירותים ספציפיים צעד אחר צעד
לאחר שתצורת ההגדרות הכלליות הוגדרה, הגיע הזמן להפעיל את בתי הכלא עבור השירותים שמעסיקים אותך ביותר. כדי שההגנה תפעל, עליך להגדיר enabled = true במקטע המתאים לו בתוך jail.local.
גישת SSH (הנקודה הקריטית ביותר)
פורט 22 הוא היעד מספר אחת. תצורה חזקה תגדיר maxretry = 3 ו bantime = 3600 (שעה אחת). Fail2ban יקרא את הקובץ. /var/log/auth.log (בדביאן/אובונטו) או / var / log / secure (ב-CentOS/RHEL) כדי לזהות כשלים באימות ולסגור גישה לתוקף.
שרתי אינטרנט (אפאצ'י ו-Nginx)
אם יש לכם אתר אינטרנט או חנות מקוונת, בוטים ינסו לגשת לנתיבים רגישים כגון /wp-admin o /login.phpניתן ליצור פילטרים מותאמים אישית ב /etc/fail2ban/filter.d/ כדי לזהות דפוסים אלה. לדוגמה, כדי הגן על וורדפרסשגיאות 403 או ניסיונות כושלים מנוטרים ב wp-login.php, חסימת ה-IP אם היא חורגת מהמגבלות שנקבעו בכלי Apache או Nginx.
מסדי נתונים ו-FTP
עבור MySQL, ניתן לנטר את יומן השגיאות עבור הביטוי הגישה נדחתה עבור המשתמשבמקרה של FTP (כגון ProFTPD), חיוני לוודא ש- logpath התאם את הנתיב בפועל ליומני הרישום שלך, כי אם Fail2ban לא ימצא את קובץ הלוג, ההגנה פשוט לא תעבוד.
ניהול מתקדם עם fail2ban-client
לא תמיד צריך לערוך קבצים ולהפעיל מחדש את השירות כדי לבצע שינויים מהירים. הפקודה fail2ban-client זה מאפשר לך לנהל את המערכת תוך כדי תנועה מהקונסול.
כדי לראות אילו בתי כלא פעילים וכמה כתובות IP חסומות, השתמשו ב- sudo fail2ban-client statusאם אתם רוצים להתעמק בשירות, כמו SSH, הפעילו sudo fail2ban-client status sshdיתר על כן, אם בטעות חסמת עמית לעבודה או שתוכלו לשחרר את כתובת ה-IP במהירות בעצמכם באמצעות הפקודה sudo fail2ban-client set sshd unbanip IP_A_DESBLOQUEAR.
תחזוקה ופתרון תקלות
אם שמתם לב ש-Fail2ban אינו חוסם כראוי, המקום הראשון לחפש הוא קובץ היומן של הכלי עצמו. /var/log/fail2ban.log. באמצעות tail -f ניתן לראות בזמן אמת מי נחסם ומדוע.
זכור ש-Fail2ban שומר את סטטוס הנעילה במסד נתונים של SQLite ב- /var/lib/fail2ban/fail2ban.sqlite3לכן, אם תפעילו מחדש את השרת, כתובות ה-IP שנחסמו יבוטלו. יישאר חסום עד שתקופת העונש שלך תפוג. בכל פעם שאתה מבצע שינויים בקבצי תצורה, אל תשכח להחיל את השינויים באמצעות sudo systemctl restart fail2ban.
יישום כלי זה הופך את השרת שלך ממטרה קלה למבצר אוטומטי, מפחית את עומס המעבד על ידי סילוק תעבורה זדונית בשכבת הרשת ומאפשר לך לישון בשקט בידיעה שבוטים לא יוכלו לפרוץ פנימה באמצעות כוח ברוט. על ידי שילוב השימוש בקבצי .local, ניהול של jails ספציפיים וניטור יומני רישום מתמיד, אתה משיג מערכת הגנה מעמיקה החיונית לכל מנהל מערכת לינוקס.
