כיצד לאבטח שרת SSH ב אובונטו 14.04
SSH (Secure Socket Shell) הוא ממשק שורת פקודה ופרוטוקול לקבלת גישה מאובטחת לשרת לינוקס מרוחק. הוא מספק תקשורת מאובטחת ומוצפנת ברשת ומאפשר להחליף נתונים על גבי ערוץ מאובטח בין שני שרתים. הוא בשימוש נרחב על ידי מנהלי מערכת לשלוט באינטרנט וסוגים אחרים של שרתים מרחוק. במאמר זה אנחנו הולכים להראות לך איך אתה יכול לאבטח את שרת SSH שלך.
הערה : מדריך זה מניח כי שרת SSH פועל Ubuntu 14.04, ואת מכונת הלקוח הוא לינוקס.
תחילת העבודה - התקן SSH
ראשית, עליך לעדכן את המערכת ולהתקין את החבילות הדרושות למערכת.
כדי לעדכן את המערכת ולהתקין את שרת SSH במחשב השרת, הפעל את הפקודה הבאה:
sudo apt- לקבל עדכון sudo apt- לקבל להתקין את OpenSsh שרת
כדי להתקין לקוח SSH במחשב הלקוח, הפעל את הפקודה הבאה:
sudo apt- לקבל להתקין את OpenSsh-client
הגדר SSH עבור התחברות חסרת סיסמה
ישנן שתי שיטות שונות של כניסה לשרת SSH: אחת היא אימות מבוסס סיסמאות והשני הוא אימות מבוסס מפתח. אימות סיסמה היא שיטה בסיסית מאוד אשר קל לשימוש סדק. שימוש באימות הסיסמה הוא מאוד לא בטוח, במיוחד אם המשתמש שלך משתמש בסיסמה חלשה. מצד שני, מפתחות SSH מספקים דרך קלה ובטוחה להיכנס לשרת מרוחק, ושיטה זו מומלצת לכל המשתמשים.
במחשב הלקוח שלך, צור מפתחות SSH באמצעות הפקודה הבאה:
cd ~ / .shsh ssh-keygen -t rsa
כל שעליך לעשות הוא ללחוץ על המקש Enter. זה יוצר שני קבצים: id_rsa.pub (מפתח ציבורי) ו id_rsa (מפתח פרטי).
זה יהיה פלט משהו שנראה כמו הבאה:
בשרת שלך, צור את התיקייה הבאה (אם היא לא קיימת):
mkdir -p ~ / .shsh /
חזרה למכשיר הלקוח שלך, העתק את הקובץ id_rsa.pub לשרת שלך באמצעות הפקודה הבאה:
scp -P "yourport" ~ / .shsh / id_rsa.pub שם משתמש @ serverip: ~ / .shsh
שנה את "yourport" למספר היציאה שבו שרת ה- SSH שלך משתמש (ברירת המחדל היא 22) ו- "serverip" לכתובת ה- IP של השרת.
במחשב השרת שלך, שנה את שם הקובץ ואת הרשאות ההתקנה.
~ / .shsh / id_rsa.pub >> ~ / .ssh / id_rsa.pub
כדי לבדוק אם שיטת האימות מבוססת מפתח, נסה להתחבר לשרת ה- SSH שלך ממחשב הלקוח:
ssh -P "yourport" שם משתמש @ serverip
אם אתה מצליח להתחבר מבלי להזין סיסמה, שיטת האימות מבוססת מפתח.
Secure SSH קובץ תצורה
"/ Etc / ssh / sshd_config" הקובץ הוא קובץ תצורת המערכת רחב SSH אשר מאפשר לך להגדיר אפשרויות שונות כדי לשפר את האבטחה של שרת SSH. תצורת ברירת המחדל בקובץ התצורה היא מאוד לא בטוחה, לכן עליך לערוך אותה תחילה ולהגדיר אפשרויות מתאימות לשיפור האבטחה.
כדי לערוך את הקובץ "/ etc / ssh / sshd_config", הפעל
sudo nano / etc / ssh / sshd_config
שינוי יציאת האזנה SSH
כברירת מחדל, SSH מקשיב ביציאה 22. תוקף משתמש בסורקי יציאות כדי לראות אם שירות SSH פועל או לא. מומלץ לשנות את יציאת ברירת המחדל.
כדי לשנות את יציאת ברירת המחדל ל- 2200, שנה את:
נמל 22
ל
יציאה 2200
השתמש בפרוטוקול 2 בלבד
גרסה 1 של הפרוטוקול מכיל פגיעויות אבטחה. פרוטוקול 2 הוא ערך ברירת המחדל ב- Ubuntu.
שנה את השורה המוצגת להלן:
פרוטוקול 2
הגבל את גישת המשתמשים
יש צורך לאפשר רק למשתמשים ספציפיים להיכנס ל- SSH. זה יכול לשפר את האבטחה שלך. כברירת מחדל, אפשרות זו אינה זמינה בקובץ תצורת SSH.
כדי לאפשר "user1" ו- "User2", הוסף את השורה הבאה:
משתמש
כדי להכחיש את "baduser1" ואת "baduser2", הוסף את השורה הבאה:
Baduser1 baduser2
השבת כניסה שורש
אין צורך להיכנס כשורש דרך ssh ברשת. משתמשים רגילים יכולים גם להשתמש su
או sudo
כדי לקבל גישה ברמת השורש. רוב התוקפים ינסו להשתמש במשתמש הבסיס כדי להיכנס. זהו סיכון אבטחה גדול, ולכן מומלץ לדחות את הכניסה שורש.
כדי להשבית התחברות שורש, שנה את השורה
PermitRootLogin ללא סיסמה
ל
הרשאה לא
הסתר את ההתחברות האחרונה
תוכל להסתיר מי נכנס בפעם האחרונה כאשר משתמש מתחבר.
לשם כך, לשנות את הקו
הדפס כן
ל
לא
הגבל את הממשק כדי להיכנס
כברירת מחדל, ssh יקשיב לכל ממשקי הרשת. אם ברצונך לאפשר חיבור SSH להתקבל מכתובות IP ספציפיות, באפשרותך לשנות את הקו
#ListenAddress ::
ל
192.168.1.20
השבת אימות סיסמה
שימוש באימות סיסמה הוא סיכון אבטחה גדול אם המשתמש שלך משתמש בסיסמה חלשה. מומלץ להשתמש במפתחות "ssh." מפתח "ssh" יכול להכיל יותר מ 600 תווים אקראיים ויהיה קשה לשבור.
לשם כך, לשנות את הקו
# סיסמה אימות כן
ל
סיסמה לא
השבת קבצי .rhosts
קובצי .rhosts מציינים אילו משתמשים יכולים לגשת לפקודות r (rsh, rcp, rlogin וכו ') במחשב המקומי ללא סיסמה. כברירת מחדל קובץ .rhosts מושבת; אם לא, ואז לשנות את השורות כפי שמוצג להלן.
IgnoreRhosts כן Rhosts אימות לא RSAAuthentication כן
השבת אימות מבוסס מארח
האימות מבוסס המארח של SSH בטוח יותר מאשר אימות rhosts. עם זאת, לא מומלץ המארחים אמון אחד בשני. כברירת מחדל, אפשרות זו מושבתת.
אם לא, ולאחר מכן לשנות את השורה המוצגת להלן.
Hostbased אימות לא
הגדר זמן חסכון ההתחברות
"LoginGraceTime" מציין כמה זמן לאחר בקשת חיבור השרת יחכה לפני ניתוק. מומלץ להקטין אותו ל -60 שניות.
לשם כך, לשנות את הקו
120
ל
LoginGraceTime 60
הגדרת חיבורי האתחול המרביים
הגדרת המספר המקסימלי המתאים של חיבורים בו זמנית כדי daemon SSH יכול להיות מועיל נגד התקפה בכוח הזרוע.
לשם כך, לשנות את הקו
#MaxStartups 10:30:60
ל
MaxStartups 2
השבת את ההעברה
טכניקת העברת הנמל משמשת את התוקפים לחיבורי רשת מנהרה דרך הפעלת SSH כדי להיכנס למערכות. מומלץ להשבית אפשרות זו.
לשם כך, לשנות את הקו
X11 העברה לאחור כן
ל
X11 העברה מחדש לא
רישום מידע נוסף
כברירת מחדל, SSH רושם הכל. אם ברצונך לרשום מידע נוסף כמו ניסיונות כניסה שנכשלו. אתה יכול לשנות את הערך של "VERBOSE".
לשם כך, לשנות את הקו
LogLevel מידע
ל
LogLevel VERBOSE
השבת סיסמאות ריקות
יש צורך למנוע משתמשים עם סיסמאות ריקות בשרת שלך. כברירת מחדל, PermitEmptyPasswords
מושבתת באובונטו.
אם לא, ולאחר מכן לשנות את השורה המוצגת להלן.
הרשאהמפתחים לא
קבע מרווח זמן קצוב לא פעיל
כברירת מחדל, אפשרויות אלה אינן זמינות בקובץ תצורת ברירת המחדל של SSH. מומלץ להגדיר זמן קצוב לא פעיל כדי למנוע הפעלה ssh ללא השגחה.
לשם כך, הוסף את השורות הבאות.
ClientAliveInterval 300 ClientAliveCountMax 0
מצב קפדני
זה ימנע את השימוש של ספריית הבית לא מאובטח הרשאות קובץ מפתח. כברירת מחדל, אפשרות זו מופעלת.
אם לא, ולאחר מכן לשנות את השורה הבאה.
StrictModes כן
עכשיו שמור ולצאת / etc / ssh / sshd_config הקובץ ולהפעיל מחדש את שרת SSH.
הפעלה מחדש
Secure מאובטח באמצעות TCP Wrappers
מעטפת TCP מספקת בקרת גישה מבוססת מארח לשירותי רשת המשמשים לסינון גישה לרשת לאינטרנט. ערוך את הקובץ "/etc/hosts.allow" כדי לאפשר SSH רק מ- 192.168.1.2 ו- 172.16.23.12.
sudo nano /etc / hosts.allow
הוסף את השורה הבאה:
sshd: 192.168.1.2 172.16.23.12
SSH מאובטח באמצעות iptables
כברירת מחדל, שרת SSH חייב לקבל רק חיבורים מה- LAN או מאתרים מרוחקים אחרים. מומלץ לאפשר רק כתובות IP ספציפיות לגשת ל- SSH ולחסום גישה ל- SSH לכתובות IP לא מורשות.
כדי לאפשר חיבורי SSH רק מתוך 192.168.1.2, הפעל את הפקודה הבאה:
sudo iptables -A INPUT -p tcp -m מצב - חדש - מקור 192.168.1.2 - דרכון 2200 -JCEPT
השבת את חיבור SSH מכל המארחים האחרים על-ידי הפעלת הפקודה הבאה:
supto iptables-INPUT -P tCP - dport 2200-D DROP
עכשיו שמור את הכללים החדשים שלך באמצעות הפקודה הבאה:
sudo iptables-save> /etc/iptables/rules.v4
סיכום
ההוראות לעיל הן טכניקות רבות עוצמה לאבטחת שרת SSH שלך. הודעה זו מכסה את כל המידע שרוב המשתמשים יצטרכו עבור שרת SSH. אם יש לך שאלות אל תהסס להגיב למטה.
הפניה: SSH אובונטו