אבטח את חיבור ה- SSH של מערכת לינוקס שלך כדי להגן על המערכת ועל הנתונים שלך. מנהלי מערכות ומשתמשים ביתיים כאחד צריכים להקשיח ולאבטח מחשבים הפונים לאינטרנט, אך SSH עלול להיות מסובך. להלן עשרה זכיות מהירות קלות שיעזרו לך להגן על שרת SSH שלך.
יסודות האבטחה של SSH
SSH מייצג מעטפת מאובטחת . המשמעות של השם "SSH" היא בערך פרוטוקול SSH עצמו או כלי התוכנה המאפשרים למנהלי מערכת ולמשתמשים ליצור חיבורים מאובטחים למחשבים מרוחקים באמצעות פרוטוקול זה.
פרוטוקול SSH הוא פרוטוקול מוצפן שנועד לתת חיבור מאובטח ברשת לא מאובטחת, כמו האינטרנט. SSH בלינוקס בנוי על גרסה ניידת של ה- OpenSSH פּרוֹיֶקט. זה מיושם ב מודל שרת לקוח קלאסי , עם שרת SSH שמקבל חיבורים מלקוחות SSH. הלקוח משמש לחיבור לשרת ואל לְהַצִיג את ההפעלה למשתמש המרוחק. השרת מקבל את החיבור ו- מבצע המושב.
בתצורת ברירת המחדל שלה, שרת SSH יקשיב לחיבורים נכנסים בפרוטוקול בקרת השידור ( TCP ) יציאה 22. מכיוון שמדובר בתקן, נמל ידוע , זה יעד ל שחקני איומים ו בוטים זדוניים .
שחקני איום משיקים בוטים הסורקים מגוון כתובות IP המחפשים יציאות פתוחות. לאחר מכן נבדקים הנמלים כדי לבדוק אם קיימות נקודות תורפה שניתן לנצל. חשיבה, "אני בטוחה, יש יעדים גדולים וטובים ממני עבור הרעים לכוון אליהם", היא הנמקה שקרית. הרובוטים אינם בוחרים יעדים על סמך כל הכשרון; הם מחפשים באופן שיטתי מערכות שהם יכולים לפרוץ.
אתה מועמד לעצמך כקורבן אם לא אבטחת את המערכת שלך.
חיכוך ביטחוני
חיכוך ביטחוני הוא הגירוי - באיזו מידה שהוא - שמשתמשים ואחרים יחוו כאשר אתה מבצע אמצעי אבטחה. יש לנו זיכרונות ארוכים ויכולנו לזכור שהכנסנו משתמשים חדשים למערכת מחשב, ושמענו אותם שואלים בקול מחריד אם הם בֶּאֱמֶת היה צריך להזין סיסמה בכל פעם הם נכנסו למיינפריים. זה - מבחינתם - היה חיכוך ביטחוני.
(אגב, ההמצאה של הסיסמה מיוחסת לזכותה פרננדו ג'יי קורבטו , דמות נוספת בפנתיאון של מדעני המחשב שעבודתם המשולבת תרמה לנסיבות שהביאו להולדתו של יוניקס .)
הנהגת אמצעי אבטחה כרוכה בדרך כלל בחיכוך כלשהו למישהו. בעלי עסקים צריכים לשלם על זה. משתמשי המחשב יצטרכו לשנות את הנוהגים המוכרים שלהם, או לזכור סט אחר של פרטי אימות, או להוסיף צעדים נוספים כדי להתחבר בהצלחה. למנהלי המערכת תהיה עבודה נוספת כדי ליישם ולתחזק את אמצעי האבטחה החדשים.
התקשות ונעילת מערכת הפעלה כמו לינוקס או יוניקס יכולות להיות מעורבות מאוד, מהר מאוד. מה שאנחנו מציגים כאן הוא קבוצה של צעדים קלים ליישום שישפרו את האבטחה של המחשב שלך ללא צורך ביישומי צד שלישי ומבלי לחפור דרך חומת האש שלך.
צעדים אלה אינם המילה האחרונה בביטחון SSH, אך הם יעבירו אותך רחוק קדימה מהגדרות ברירת המחדל, וללא חיכוכים רבים מדי.
השתמש בפרוטוקול SSH גרסה 2
בשנת 2006 עודכן פרוטוקול SSH מגרסה 1 ל- גרסה 2 . זה היה שדרוג משמעותי. היו כל כך הרבה שינויים ושיפורים, במיוחד סביב הצפנה ואבטחה, שגרסה 2 אינה תואמת לאחור לגרסה 1. כדי למנוע חיבורים מלקוחות גרסה 1, אתה יכול לקבוע שהמחשב שלך יקבל רק חיבורים מלקוחות גרסה 2.
לשם כך, ערוך את
/ etc / ssh / sshd_config
קוֹבֶץ. אנו נעשה זאת רבות לאורך מאמר זה. בכל פעם שאתה צריך לערוך קובץ זה, זו הפקודה להשתמש:
sudo gedit / etc / ssh / sshd_config
הוסף את השורה:
פרוטוקול 2
ושמור את הקובץ. אנו נתחיל מחדש את תהליך הדמון של SSH. שוב, אנו נעשה זאת רבות לאורך מאמר זה. זו הפקודה לשימוש בכל מקרה:
הפעל מחדש את sshd
בואו לבדוק שההגדרה החדשה שלנו בתוקף. נקפוץ למכונה אחרת וננסה SSH למכונת הבדיקה שלנו. ואנחנו נשתמש ב-
-1
(פרוטוקול 1) אפשרות לכפות על
ssh
פקודה להשתמש בפרוטוקול גרסה 1.
ssh -1 [email protected]
נהדר, בקשת החיבור שלנו נדחית. בואו נבטיח שאנחנו עדיין יכולים להתחבר לפרוטוקול 2. נשתמש ב-
-2
(פרוטוקול 2) אפשרות להוכיח את העובדה.
ssh -2 [email protected]
העובדה ששרת SSH מבקש את הסיסמה שלנו הוא אינדיקציה חיובית לכך שהחיבור נוצר ואתם מתקשרים עם השרת. למעשה, מכיוון שלקוחות SSH מודרניים כברירת מחדל משתמשים בפרוטוקול 2, איננו צריכים לציין פרוטוקול 2 כל עוד הלקוח שלנו מעודכן.
ssh [email protected]
והחיבור שלנו מקובל. אז רק חיבורי פרוטוקול 1 החלשים והבטוחים פחות נדחים.
הימנע מנמל 22
יציאה 22 היא היציאה הסטנדרטית לחיבורי SSH. אם אתה משתמש ביציאה אחרת, זה מוסיף מעט ביטחון באמצעות סתום למערכת שלך. אבטחה באמצעות סתום מעולם לא נחשבת לאמצעי אבטחה אמיתי, והתמודדתי נגדה במאמרים אחרים. למעשה, חלק מבוטות ההתקפה החכמים יותר בודקים את כל היציאות הפתוחות וקובעים איזה שירות הם נושאים, במקום להסתמך על רשימת חיפושים פשוטה של יציאות ובהנחה שהם מספקים את השירותים הרגילים. אך שימוש ביציאה לא סטנדרטית יכול לעזור בהפחתת הרעש והתנועה הגרועה ביציאה 22.
כדי להגדיר תצורה של יציאה לא סטנדרטית, ערוך את קובץ התצורה של SSH:
sudo gedit / etc / ssh / sshd_config
הסר את ה- hash # מתחילת השורה "Port" והחלף את ה- "22" במספר היציאה שבחרת. שמור את קובץ התצורה והפעל מחדש את הדמון SSH:
הפעל מחדש את sshd
בואו נראה איזו השפעה הייתה לכך. במחשב השני שלנו, נשתמש ב-
ssh
פקודה להתחבר לשרת שלנו. ה
ssh
ברירת המחדל של הפקודה היא להשתמש ביציאה 22:
ssh [email protected]
הקשר שלנו נדחה. בואו ננסה שוב וציין יציאה 470, באמצעות האפשרות -p (יציאה):
ssh -p 479 [email protected]
החיבור שלנו מתקבל.
סינון חיבורים באמצעות עטיפות TCP
קל להבין את TCP Wrappers גש לרשימת השליטה . זה מאפשר לך לא לכלול ולאפשר חיבורים על בסיס מאפיינים של בקשת החיבור, כגון כתובת IP או שם מארח. יש להשתמש בעטיפות TCP בשילוב עם חומת אש מוגדרת כהלכה ולא במקום. בתרחיש הספציפי שלנו, אנו יכולים להדק דברים באופן משמעותי באמצעות עטיפות TCP.
עטיפות TCP כבר הותקנו על מכונת 18.04 LTS של אובונטו ששימשה לחקר מאמר זה. היה צריך להתקין אותו במנג'רו 18.10 ובפדורה 30.
כדי להתקין ב- Fedora, השתמש בפקודה זו:
sudo yum להתקין tcp_wrappers
כדי להתקין ב- Manjaro, השתמש בפקודה זו:
סודו פקמן - עטיפות tcp סיו
ישנם שני קבצים המעורבים. אחד מחזיק ברשימה המותרת, והשני מחזיק ברשימה שנדחתה. ערוך את רשימת הדחייה באמצעות:
sudo gedit /etc/hosts.deny
זה יפתח את
gedit
עורך עם קובץ הדחייה שטעון.
עליך להוסיף את השורה:
הכל הכל
ושמור את הקובץ. זה חוסם את כל הגישה שלא אושרה. כעת עלינו לאשר את הקשרים שאתה מעוניין לקבל. לשם כך, עליך לערוך את קובץ ההיתר:
sudo gedit /etc/hosts.allow
זה יפתח את
gedit
עורך עם קובץ ה- allow הנטען בתוכו.
הוספנו בשם הדמון SSH,
SSHD
, וכתובת ה- IP של המחשב שנאפשר ליצור חיבור. שמור את הקובץ, ובוא נראה אם ההגבלות וההרשאות תקפות.
ראשית, ננסה להתחבר ממחשב שאינו נמצא ב-
מארחים. מאפשרים
קוֹבֶץ:
הקשר נדחה. כעת ננסה להתחבר מהמחשב בכתובת IP 192.168.4.23:
החיבור שלנו מתקבל.
הדוגמה שלנו כאן היא קצת אכזרית - רק מחשב אחד יכול להתחבר. עטיפות TCP הן די תכליתיות וגמישות יותר מכך. זה תומך שמות מארח, תווים כלליים ומסכות רשת משנה כדי לקבל חיבורים מטווחי כתובות IP. מעודדים אותך בדוק את דף הגבר .
דחה בקשות חיבור ללא סיסמאות
למרות שזה נוהג רע, מנהל מערכת של לינוקס יכול ליצור חשבון משתמש ללא סיסמה. כלומר בקשות חיבור מרחוק מאותו חשבון לא יהיו עם סיסמה. קשרים אלה יתקבלו אך לא מאומתים.
הגדרות ברירת המחדל עבור SSH מקבלות בקשות חיבור ללא סיסמאות. אנו יכולים לשנות זאת בקלות רבה, ולוודא שכל החיבורים מאומתים.
עלינו לערוך את קובץ התצורה של SSH:
sudo gedit / etc / ssh / sshd_config
גלול בקובץ עד שתראה את השורה עם הכיתוב "#PermitEmptyPasswords no." הסר את החשיש
#
מתחילת השורה ושמור את הקובץ. הפעל מחדש את הדמון של SSH:
הפעל מחדש את sshd
השתמש במקשי SSH במקום בסיסמאות
מפתחות SSH מספקים אמצעי כניסה מאובטח לשרת SSH. ניתן לנחש סיסמאות, להיסדק או אילוץ אכזרי . מפתחות SSH אינם פתוחים להתקפות מסוג זה.
כשאתה מייצר מפתחות SSH, אתה יוצר זוג מפתחות. האחד הוא המפתח הציבורי, והשני הוא המפתח הפרטי. המפתח הציבורי מותקן בשרתים שאליהם ברצונך להתחבר. המפתח הפרטי, כפי שהשם מרמז, נשמר מאובטח במחשב שלך.
מקשי SSH מאפשרים לך ליצור חיבורים ללא סיסמה המאובטחים יותר - באופן אינטראקטיבי - מאשר חיבורים המשתמשים באימות סיסמה.
כאשר אתה מגיש בקשת חיבור, המחשב המרוחק משתמש בעותק של המפתח הציבורי שלך כדי ליצור הודעה מוצפנת הנשלחת חזרה למחשב שלך. מכיוון שהוא הוצפן עם המפתח הציבורי שלך, המחשב שלך יכול לבטל את הצפנתו עם המפתח הפרטי שלך.
המחשב שלך מוציא מההודעה קצת מידע, ובמיוחד מזהה ההפעלה, מצפין אותו ושולח אותו בחזרה לשרת. אם השרת יכול לפענח אותו באמצעות עותק המפתח הציבורי שלך, ואם המידע שבתוך ההודעה תואם את מה שהשרת שלח אליך, האישור שהחיבור שלך מגיע ממך.
כאן נוצר חיבור לשרת בתאריך 192.168.4.11, על ידי משתמש עם מפתחות SSH. שים לב שהם לא מתבקשים להזין סיסמה.
ssh [email protected]
מקשי SSH ראויים לעצמם מאמר. טוב, יש לנו אחד בשבילך. הנה כיצד ליצור ולהתקין מפתחות SSH .
קָשׁוּר: כיצד ליצור ולהתקין מפתחות SSH ממעטפת לינוקס
השבת אימות סיסמאות לגמרי
כמובן שההרחבה ההגיונית של השימוש במקשי SSH היא שאם כל המשתמשים המרוחקים ייאלצו לאמץ אותם, תוכלו לכבות לחלוטין את אימות הסיסמה.
עלינו לערוך את קובץ התצורה של SSH:
sudo gedit / etc / ssh / sshd_config
גלול בקובץ עד שתראה את השורה שמתחילה באימות #PasswordAuthentication כן. הסר את החשיש
#
מתחילת השורה, שנה את ה"כן "ל"לא" ושמור את הקובץ. הפעל מחדש את הדמון של SSH:
הפעל מחדש את sshd
השבת העברת X11
העברת X11 מאפשרת למשתמשים מרוחקים להריץ יישומים גרפיים מהשרת שלך במהלך הפעלת SSH. בידי שחקן איומים או משתמש זדוני, ממשק GUI יכול להקל על מטרותיהם הממאירות.
מנטרה סטנדרטית באבטחת סייבר היא אם אין לך סיבה בונאפיד להפעיל אותה, כבה אותה. אנו נעשה זאת על ידי עריכת קובץ התצורה של SSH שלך:
sudo gedit / etc / ssh / sshd_config
גלול בקובץ עד שתראה את השורה שמתחילה ב- "# X11 העברת מספר." הסר את החשיש
#
מתחילת השורה ושמור את הקובץ. הפעל מחדש את הדמון של SSH:
הפעל מחדש את sshd
הגדר ערך זמן קצוב לסרק
אם קיים חיבור SSH מבוסס למחשב שלך ולא הייתה בו פעילות במשך תקופה מסוימת, הוא עלול להוות סיכון אבטחה. יש סיכוי שהמשתמש עזב את שולחן העבודה שלו והוא עסוק במקום אחר. כל מי שעובר ליד שולחנו יכול לשבת ולהתחיל להשתמש במחשב שלהם ובאמצעות SSH, במחשב שלך.
הרבה יותר בטוח לקבוע מגבלת פסק זמן. חיבור ה- SSH יושמט אם התקופה הלא פעילה תואמת את מגבלת הזמן. שוב נערוך את קובץ התצורה של SSH שלך:
sudo gedit / etc / ssh / sshd_config
גלול בקובץ עד שתראה את השורה שמתחילה ב- "#ClientAliveInterval 0" הסר את הגיבוב
#
מתחילת השורה, שנה את הספרה 0 לערך הרצוי. השתמשנו 300 שניות, כלומר 5 דקות. שמור את הקובץ והפעל מחדש את הדמון של SSH:
הפעל מחדש את sshd
הגדר גבול לניסיונות סיסמה
הגדרת מגבלה על מספר ניסיונות האימות יכולה לסייע בניחוש סיסמאות והתקפות כוח אכזרי. לאחר המספר המיועד של בקשות האימות, המשתמש ינותק משרת SSH. כברירת מחדל, אין מגבלה. אבל זה מתקנה במהירות.
שוב, עלינו לערוך את קובץ התצורה של SSH:
sudo gedit / etc / ssh / sshd_config
גלול בקובץ עד שתראה את השורה שמתחילה ב- "# MaxAuthTries 0". הסר את החשיש
#
מתחילת השורה, שנה את הספרה 0 לערך הרצוי. השתמשנו ב -3 כאן. שמור את הקובץ בעת ביצוע השינויים והפעל מחדש את הדמון של SSH:
הפעל מחדש את sshd
אנו יכולים לבדוק זאת על ידי ניסיון להתחבר והזנת סיסמה שגויה במכוון.
שים לב שמספר MaxAuthTries נראה אחד יותר ממספר הניסיונות שהמשתמש הורשה. לאחר שני ניסיונות גרועים, משתמש הבדיקה שלנו מנותק. זה היה כאשר MaxAuthTries נקבע לשלוש.
השבת כניסות שורש
זה נוהג רע להיכנס כשורש במחשב הלינוקס שלך. עליך להיכנס כמשתמש רגיל ולהשתמש
סודו
לביצוע פעולות הדורשות הרשאות שורש. יתרה מכך, אתה לא אמור לאפשר ל- root להיכנס לשרת SSH שלך. יש לאפשר רק למשתמשים רגילים להתחבר. אם הם צריכים לבצע משימה ניהולית, עליהם להשתמש
סודו
גַם. אם נאלצתם לאפשר למשתמש שורש להתחבר, תוכלו לפחות להכריח אותם להשתמש במקשי SSH.
בפעם האחרונה נצטרך לערוך את קובץ התצורה של SSH שלך:
sudo gedit / etc / ssh / sshd_config
גלול בקובץ עד שתראה את השורה שמתחילה ב- "#PermitRootLogin prohibit-password" הסר את הגיבוב
#
מתחילת הקו.
- אם אתה רוצה למנוע כניסה של שורש בכלל, החלף את "סיסמת איסור" ב"לא ".
- אם אתה מתכוון לאפשר ל- root להיכנס אך לאלץ אותם להשתמש במקשי SSH, השאר את "סיסמת האיסור" במקום.
שמור את השינויים והפעל מחדש את הדמון SSH:
הפעל מחדש את sshd
הצעד האולטימטיבי
כמובן, שאם אינך זקוק כלל ל- SSH במחשב שלך, ודא שהוא מושבת.
להפסיק
השבתה של
אם אתה לא פותח את החלון, אף אחד לא יכול לטפס פנימה.