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 אובונטו