הקשחה של Dropbear SSH (על בסיס DietPi)

הקדמה

שם שירות: Dropbear
גרסה: 2020.81-3
מערכת הפעלה: לינוקס, DietPi 8

Dropbear SSH הינו תחליף SSH (שרת וקלינט) עבור מערכות משובצות (מערכת עם מעט יכולות של עיבוד, זכרון או/ו אחסון). האפשרויות אינן עשירות כאשר משווים ל-OpenSSH, אבל עדיין ניתן להקשיח במידה רבה את השירות.

אזהרה

הגדרות לא תקינות עלולות לנעול אותכם מחוץ לשרת\מחשב! שימו לב שיש לכם דרך אלטרנטיבית להתחבר בחזרה.

מיקום ההגדרות

במקרה של DietPi ההגדרות של Dropbear נמצאות בנתיב /etc/default/dropbear. בסעיפים הבאים ההתייחסות שלי לשינויים היא תמיד בקובץ זה.

שינוי פורט

שינוי פורט של שירות יכול להקשות בזיהוי של שירותים רצים, משתמש זדוני יצטרך לסרוק את כל טווח הפורטים (65535) ואז גם לבצע banner scan בשביל להסיק שמדובר בשירות SSH. ההקשחה הזו תעזור בלמנוע רעשי רקע וסורקים אוטומטיים, אך מומלץ לא להסתמך אך ורק על שיטה זו. זכרו אם מופעל לכם פיירוואל על האמצעי, לאפשר גישה לפורט החדש.

בכדי לשנות את הפורט, נעדכן את הפרמטר DROPBEAR_PORT, לדוגמה:

DROPBEAR_PORT=36022

ביטול התחברות ישירה של משתמש root

root הוא משתמש עם הרשאות מלאות למערכת הפעלה, במקרה ואין לכם קרנל מוקשח, אז הוא יוכל לבצע גם פעולות ברמת הקרנל (ring 0). בשל כוחו הרב, ושם משתמש קבוע, מומלץ למנוע התחברות ישירה בעזרת משתמש זה. החסימה הזו תשיג 2 מטרות, עכשיו התוקף יצטרך גם לנחש את השם משתמש איתו אפשר להתחבר, למשתמש הרגיל לא בהכרח יהיו גישות מלאות.

בכדי למנוע התחברות של המשתמש root, יש להוסיף את הפרמטר -w ל-DROPBEAR_EXTRA_ARGS, לדוגמה:

DROPBEAR_EXTRA_ARGS="-w"

ביטול הזדהות בעזרת ססמאות

הזדהות מבוסס ססמאות נחשבת לחלשה ופגיעה למתקפת Bruteforce, מומלץ לבטל את האפשרות להזדהות באמצעות ססמה ולהשתמש במפתח פרטי\ציבורי על-מנת להזדהות.

בכדי למנוע הזדהות בעזרת ססמה, יש להוסיף את הפרמטר -s ל-DROPBEAR_EXTRA_ARGS, לדוגמה:

DROPBEAR_EXTRA_ARGS="-w -s"

אופציות נוספות שאפשר לשקול

  • ניתוק אוטומית אחרי זמן השתהות (פרמטר -I <time in seconds> להוסיף ל-DROPBEAR_EXTRA_ARGS)
  • הצגת באנר לכל מי שהתחבר לשירות (לפני הזדהות) בכדי להציג אזהרה או תנאיים (המשתנה DROPBEAR_BANNER צריך להצביע על קובץ טקסט שיוצג).
הגדרות ותוצאת פלט לדוגמה
# the TCP port that Dropbear listens on
DROPBEAR_PORT=36022

# any additional arguments for Dropbear
DROPBEAR_EXTRA_ARGS="-s -g -w -k -I 900"

# specify an optional banner file containing a message to be
# sent to clients before they connect, such as "/etc/issue.net"
DROPBEAR_BANNER="/etc/issue.hkrim2"

# RSA hostkey file (default: /etc/dropbear/dropbear_rsa_host_key)
#DROPBEAR_RSAKEY="/etc/dropbear/dropbear_rsa_host_key"

# DSS hostkey file (default: /etc/dropbear/dropbear_dss_host_key)
#DROPBEAR_DSSKEY="/etc/dropbear/dropbear_dss_host_key"

# ECDSA hostkey file (default: /etc/dropbear/dropbear_ecdsa_host_key)
DROPBEAR_ECDSAKEY="/etc/dropbear/dropbear_ecdsa_host_key"

# Receive window size - this is a tradeoff between memory and
# network performance
DROPBEAR_RECEIVE_WINDOW=8196

לסיום

לא לשכוח שצריך לאתחל את השירות (תשאירו חיבור קיים לשירות, ותנסו להתחבר בחלון חדש):

sudo systemctl restart dropbear

ולעוד מידע, תקראו את ה-manual בעזרת man dropbear.