המחבר בחר בקרן התוכנה החופשית והפתוחה לקבל תרומה כחלק מתוכנית כתיבה למענה.
הקדמה
כאשר אתה מסתכל על יומני אימות, יתכן ותראה מספר ניסיונות הכניסה לא מוצלחים מכמה כתובות IP שונות. ניסיונות הכניסה לא מוצלחים הללו יכולים להגיע מצומת ברשת רובוטים שסורקת את הרשת כולה בחיפוש אחר שרתים שבהם הכניסה פתוחה עם פרטי גישה ברירת מחדל. בעוד שרוב האנשים יהיו עם סיסמה מאובטחת או מפתחות SSH שמונעים מתוקפים להתחבר לשרת שלהם, יתכן ויהיו שרתים כמה שייכים לסריקה זו. אם כי יתכן שלא תוכל להימנע מהתקפות אלה, תוכל להאט אותן באמצעות tarpits.
במדריך זה, תתקין ותגדיר Endlessh, תרפיט ששולח לאט באופן אינסופי באנר ארוך לכל משתמש שמנסה להתחבר. תגדיר גם את שירות SSH לרוץ בפורט שונה, מה שיעשה את יומני האימות שלך קריאים יותר.
לאחר השלמת המדריך הזה, תוכל להתחבר לשרת שלך באמצעות פורט שאינו סטנדרטי, בעוד שכל בוטים שסורקים את השרת שלך יגלו כי הם מבזבזים את זמנם בדפוק על דלת שלא תיפתח אף פעם.
דרישות קדם
כדי להשלים את המדריך הזה, ייתכן ותצטרך את הפריטים הבאים:
- שרת Ubuntu עם משתמש non-root בעל גישת sudo, חומת אש, ולפחות 1GB של RAM, אשר ניתן להגדיר באמצעות המדריך הגדרת השרת הראשונית עם Ubuntu 22.04.
- Git מותקן על השרת שלך, אשר ניתן להשלים עם המדריך התקנת Git.
שלב 1 – העברת SSH לפורט לא סטנדרטי
בשלב זה, תעביר את SSH לפורט לא סטנדרטי כדי לשחרר פורט עבור Endlessh. מאחר שלרשתות הבוטנטים אין משאבים אין סופיים, הן בדרך כלל סורקות רק את פורט ה־SSH המוגדר כברירת מחדל (22
). על ידי העברת SSH שלך לפורט לא סטנדרטי, תוכל לתפוס את הבוט בתחנת הדלק של Endlessh.
כדי להתחיל, צור גיבוי של קובץ התצורה של SSH מהשרת שלך עם הפקודה הבאה:
קובץ זה יכול לשמש לשחזור ההגדרות המקוריות אם משהו לא עובד או אם החלטת להחזיר את SSH לפורט המוגדר כברירת מחדל.
פתח את קובץ התצורה של SSH /etc/ssh/sshd_config
באמצעות ננו או עורך הטקסט המועדף עליך:
אתר את השורה #Port 22
. הסר את ההערה מהשורה על ידי הסרת התו #
, ואז שנה את הפורט לפורט שאינו בשימוש על ידי השרת שלך:
...
Port 2222
...
דוגמה לפורט שבדרך כלל לא משמש הוא 2222
. ניתן לבחור כל פורט שברצונך להשתמש בו עבור החיבורים החוזרים של SSH שלך. שמור וסגור את הקובץ.
אם השרת שלך משתמש בגישת מסנן כמו ufw
, עליך לאפשר תעבורה לפורט החדש:
לאחר מכן, הפעל מחדש את שירות ה-SSH:
בהפעלת חיבור חדש בסשן טרמינל נפרד, נסה להתחבר לשרת שלך באמצעות הפורט החדש:
אזהרה: אל תסגור את הסשן הפעיל של SSH שלך אלא אם אתה מאשר שאתה יכול להשתמש ב-SSH על פורט החדש. אם אין באפשרותך להתחבר דרך הפורט החדש, אתה סופג סיכון לאבד גישה לשרת שלך על ידי סגירת הסשן. אם אינך יכול להתחבר לשרת שלך בסשן טרמינל נפרד, תוכל לשחזר את הגדרות ה-SSH המקוריות שלך על ידי הרצת הפקודות הבאות:
אם אתה נתקל בבעיות נוספות, בדוק שהשירות של SSH הופעל מחדש בהצלחה ובדוק את הגדרות הגישה שלך כדי לוודא שהפורט 2222
מקבל תעבורת tcp.
כאשר אתה מאשר שניתן לך ליצור חיבור חדש לפורט 2222
, תוכל לסגור את הטרמינל המקורי שלך בבטחה. כאשר אתה מתחבר לשרת שלך בעתיד, תצטרך תמיד לציין את הפורט החדש, כמו כן:
עכשיו שהעברת את SSH בהצלחה לפורט שאינו סטנדרטי, הגיע הזמן להתקין את Endlessh.
שלב 2 – התקנת Endlessh
Endlessh אין לו חבילה רשמית, לכן תעתיק את המאגר כדי לבנות אותו באופן ידני. תשתמש ב-Git כדי להעתיק את המאגר, בחבילת build-essential
(לקידום הפרוייקט), ובחבילת libc6-dev
.
התקן את החבילות הנדרשות באמצעות מנהל החבילות apt:
אשר את ההתקנה עם y
כאשר יתבקש.
לאחר מכן, העתק את מאגר ה-Endlessh מ-GitHub לתיקיית הבית שלך:
עבור אל תיקיית הפרוייקט והשתמש בפקודת make
כדי לקמפל את Endlessh:
כעת תוכל להתחיל את Endlessh עם הפקודה הבאה:
כדי לבדוק ש-Endlessh עובד, תנסה להתחבר באמצעות SSH לפורט 22
עם הדגל המפורט -v
, שיציג את הבאנר האינסופי שמועבר. בחלון טרמינל חדש, התחבר באמצעות SSH לפורט 22
עם אחת מהפקודות הבאות:
כאשר הסשן החדש שלך מנסה להתחבר לפורט 22
, תראה מחרוזת של תווים אקראיים מופיעה בטרמינל החיבור כל 10 שניות עד שהסשן נסגר, כמו בפלט הבא:
Outputdebug1: kex_exchange_identification: banner line 0: NvnHF>]&W4p+tg*"+
debug1: kex_exchange_identification: banner line 1: n<
debug1: kex_exchange_identification: banner line 2: @/O5c0/;>1b{qd(M,vK
debug1: kex_exchange_identification: banner line 3: i+ OZ
debug1: kex_exchange_identification: banner line 4: yn
debug1: kex_exchange_identification: banner line 5: T[V\\[HUg
כאשר אישרת שהוא עובד על ידי ניסיון להתחבר בסשן חדש, תוכל לסגור את הטרמינל החדש ולעצור את Endlessh באמצעות Ctrl+C
בסשן הטרמינל המקורי שלך.
בשלב זה, הורדת ובנית את Endlessh מהמקור. לאחר מכן, תכנן ותפעיל אותו כשירות כדי לשמור על קיומו לאחר התנתקות ואיתחול של השרת.
שלב 3 – הגדרת Endlessh
בשלב זה, תכין את Endlessh כשירות שתישאר פעילה לאחר סיום ההפעלה שלך ואחרי איתחולי המערכת.
העבר את הקובץ הבינארי המקומפל לתיקיית /usr/local/bin
:
הזן את הסיסמה שלך אם יתבקש.
העתק את קובץ השירות מהפרוייקט לתיקיית /etc/systemd/system
:
תשנה קצת את קובץ השירות כדי להריץ את Endlessh על פורטים שנמצאים מתחת ל־1024
. פתח את קובץ השירות ב־nano או בעורך הטקסט האהוב עליך:
מצא את הקטע הקשור להפעלת Endlessh על פורטים שנמצאים מתחת ל־1024
.
עדכן את הקובץ על ידי הסרת ה־#
מתחילת השורה עם AmbientCapabilities=CAP_NET_BIND_SERVICE
והוספת ה־#
לתחילת השורה PrivateUsers=true
, כמו כן:
...
## אם ברצונך ש-Endlessh יתקשר בפורטים < 1024
## 1) הרץ:
## setcap 'cap_net_bind_service=+ep' /usr/local/bin/endlessh
## 2) הסר את הערה משורה הבאה
AmbientCapabilities=CAP_NET_BIND_SERVICE
## 3) הוסף ערה לשורה הבאה
#PrivateUsers=true
...
שמור וצא מהקובץ.
אחר כך, תאפשר את הריצה של Endlessh על פתחים שנמוכים מ- 1024
, המכונים גם כ- פתחי יתרון של דומיין האינטרנט. הגדר את היכולה הזו עבור הקובץ הבינארי של Endlessh בעזרת פקודת setcap
:
תצטרך להגדיר קובץ תצורה עבור Endlessh כדי לספר לו איזה פתח להשתמש. צור ופתח קובץ תצורה בשם /etc/endlessh/config
:
בקובץ התצורה, הגדר את הפתח לשימוש כ- 22
:
Port 22
שמור וסגור את הקובץ.
כעת אתה יכול להתחיל את שירות ה-Endlessh באופן עמיד:
כולל --now enable
תעשה את השירות עמיד לאחר האתחול מחדש של השרת שלך.
כדי לבדוק שהשירות התחיל בהצלחה, תוכל להשתמש בפקודת systemctl status
:
אם התחיל בהצלחה, תראה פלט כזה:
Output● endlessh.service - Endlessh SSH Tarpit
Loaded: loaded (/etc/systemd/system/endlessh.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2022-04-22 11:20:39 UTC; 1 months 11 days ago
Docs: man:endlessh(1)
Main PID: 34007 (endlessh)
Tasks: 1 (limit: 1081)
Memory: 380.0K
CGroup: /system.slice/endlessh.service
└─34007 /usr/local/bin/endlessh
אם הוא מופעל, תוכל לנסות להתחבר בפתח 22
בשיחה טרמינלית חדשה:
מכיוון שה- tarpit שלך רץ, הסשן הטרמינלי החדש לא יוכל להתחבר וירוץ באופן רציני עד שתעצור באופן ידני עם Ctrl+C
בטרמינל המתחבר.
אם ברצונך לעצור את השירות מלרוץ, תוכל להשתמש בפקודה הבאה:
לאחר הפסקת השירות, תוכל להשתמש בהוראות השחזור של SSH בהזהרת שלב 1 כדי לשחזר את התצורה המקורית של השרת שלך. תוכל להפעיל שוב את השירות עם sudo systemctl --now enable endlessh
מבלי לעבור שוב דרך התהליך המתקני, אך ודא ש-SSH לא רץ על פתח 22
כאשר אתה עושה זאת.
סיכום
התקנת והגדרת Endlessh הושלמה בהצלחה, סייעת לניקוי יומני האימות שלך, והתכוננת לבזבז את הזמן של רובוטי SSH אקראיים.
לאחר שהגדרת את פורקת ה-Endlessh שלך, כדאי לך לסקור את ההמלצות לאבטחת השרתים שלך.
Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-an-endlessh-tarpit-on-ubuntu-22-04