איך להגדיר את Endlessh Tarpit על Ubuntu 22.04

המחבר בחר בקרן התוכנה החופשית והפתוחה לקבל תרומה כחלק מתוכנית כתיבה למענה.

הקדמה

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

במדריך זה, תתקין ותגדיר Endlessh, תרפיט ששולח לאט באופן אינסופי באנר ארוך לכל משתמש שמנסה להתחבר. תגדיר גם את שירות SSH לרוץ בפורט שונה, מה שיעשה את יומני האימות שלך קריאים יותר.

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

דרישות קדם

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

שלב 1 – העברת SSH לפורט לא סטנדרטי

בשלב זה, תעביר את SSH לפורט לא סטנדרטי כדי לשחרר פורט עבור Endlessh. מאחר שלרשתות הבוטנטים אין משאבים אין סופיים, הן בדרך כלל סורקות רק את פורט ה־SSH המוגדר כברירת מחדל (22). על ידי העברת SSH שלך לפורט לא סטנדרטי, תוכל לתפוס את הבוט בתחנת הדלק של Endlessh.

כדי להתחיל, צור גיבוי של קובץ התצורה של SSH מהשרת שלך עם הפקודה הבאה:

  1. sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

קובץ זה יכול לשמש לשחזור ההגדרות המקוריות אם משהו לא עובד או אם החלטת להחזיר את SSH לפורט המוגדר כברירת מחדל.

פתח את קובץ התצורה של SSH /etc/ssh/sshd_config באמצעות ננו או עורך הטקסט המועדף עליך:

  1. sudo nano /etc/ssh/sshd_config

אתר את השורה #Port 22. הסר את ההערה מהשורה על ידי הסרת התו #, ואז שנה את הפורט לפורט שאינו בשימוש על ידי השרת שלך:

/etc/ssh/sshd_config
...
Port 2222
...

דוגמה לפורט שבדרך כלל לא משמש הוא 2222. ניתן לבחור כל פורט שברצונך להשתמש בו עבור החיבורים החוזרים של SSH שלך. שמור וסגור את הקובץ.

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

  1. sudo ufw allow 2222/tcp

לאחר מכן, הפעל מחדש את שירות ה-SSH:

  1. sudo systemctl restart sshd

בהפעלת חיבור חדש בסשן טרמינל נפרד, נסה להתחבר לשרת שלך באמצעות הפורט החדש:

  1. ssh sammy@your_server_ip -p 2222

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

  1. sudo cp /etc/ssh/sshd_config.bak /etc/ssh/sshd_config
  2. sudo systemctl restart sshd

אם אתה נתקל בבעיות נוספות, בדוק שהשירות של SSH הופעל מחדש בהצלחה ובדוק את הגדרות הגישה שלך כדי לוודא שהפורט 2222 מקבל תעבורת tcp.

כאשר אתה מאשר שניתן לך ליצור חיבור חדש לפורט 2222, תוכל לסגור את הטרמינל המקורי שלך בבטחה. כאשר אתה מתחבר לשרת שלך בעתיד, תצטרך תמיד לציין את הפורט החדש, כמו כן:

  1. ssh sammy@your_server_ip -p 2222

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

שלב 2 – התקנת Endlessh

Endlessh אין לו חבילה רשמית, לכן תעתיק את המאגר כדי לבנות אותו באופן ידני. תשתמש ב-Git כדי להעתיק את המאגר, בחבילת build-essential (לקידום הפרוייקט), ובחבילת libc6-dev.

התקן את החבילות הנדרשות באמצעות מנהל החבילות apt:

  1. sudo apt install build-essential libc6-dev

אשר את ההתקנה עם y כאשר יתבקש.

לאחר מכן, העתק את מאגר ה-Endlessh מ-GitHub לתיקיית הבית שלך:

  1. git clone https://github.com/do-community/endlessh

עבור אל תיקיית הפרוייקט והשתמש בפקודת make כדי לקמפל את Endlessh:

  1. cd endlessh
  2. make

כעת תוכל להתחיל את Endlessh עם הפקודה הבאה:

  1. sudo ./endlessh -v -p 22

כדי לבדוק ש-Endlessh עובד, תנסה להתחבר באמצעות SSH לפורט 22 עם הדגל המפורט -v, שיציג את הבאנר האינסופי שמועבר. בחלון טרמינל חדש, התחבר באמצעות SSH לפורט 22 עם אחת מהפקודות הבאות:

  1. ssh sammy@your_server_ip -v
  1. ssh sammy@your_server_ip -p 22 -v

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

Output
debug1: 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:

  1. sudo mv ./endlessh /usr/local/bin/

הזן את הסיסמה שלך אם יתבקש.

העתק את קובץ השירות מהפרוייקט לתיקיית /etc/systemd/system:

  1. sudo cp util/endlessh.service /etc/systemd/system/

תשנה קצת את קובץ השירות כדי להריץ את Endlessh על פורטים שנמצאים מתחת ל־1024. פתח את קובץ השירות ב־nano או בעורך הטקסט האהוב עליך:

  1. sudo nano /etc/systemd/system/endlessh.service

מצא את הקטע הקשור להפעלת Endlessh על פורטים שנמצאים מתחת ל־1024.

עדכן את הקובץ על ידי הסרת ה־# מתחילת השורה עם AmbientCapabilities=CAP_NET_BIND_SERVICE והוספת ה־# לתחילת השורה PrivateUsers=true, כמו כן:

/etc/systemd/system/endlessh.service
...
## אם ברצונך ש-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:

  1. sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/endlessh

תצטרך להגדיר קובץ תצורה עבור Endlessh כדי לספר לו איזה פתח להשתמש. צור ופתח קובץ תצורה בשם /etc/endlessh/config:

  1. sudo mkdir /etc/endlessh
  2. sudo nano /etc/endlessh/config

בקובץ התצורה, הגדר את הפתח לשימוש כ- 22:

/etc/endlessh/config
Port 22

שמור וסגור את הקובץ.

כעת אתה יכול להתחיל את שירות ה-Endlessh באופן עמיד:

  1. sudo systemctl --now enable endlessh

כולל --now enable תעשה את השירות עמיד לאחר האתחול מחדש של השרת שלך.

כדי לבדוק שהשירות התחיל בהצלחה, תוכל להשתמש בפקודת systemctl status:

  1. sudo systemctl status endlessh

אם התחיל בהצלחה, תראה פלט כזה:

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 בשיחה טרמינלית חדשה:

  1. ssh sammy@your_server_ip

מכיוון שה- tarpit שלך רץ, הסשן הטרמינלי החדש לא יוכל להתחבר וירוץ באופן רציני עד שתעצור באופן ידני עם Ctrl+C בטרמינל המתחבר.

אם ברצונך לעצור את השירות מלרוץ, תוכל להשתמש בפקודה הבאה:

  1. sudo systemctl --now disable endlessh

לאחר הפסקת השירות, תוכל להשתמש בהוראות השחזור של 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