כיצד להפעיל אימות דו-שלבי (2FA) עבור SSH בלינוקס
במאמר זה, נראה לכם כיצד להפעיל אימות דו-שלבי (2FA) עבור כניסת SSH ללינוקס באמצעות Google PAM (מודול אימות ניתן לחיבור) ואפליקציית Microsoft Authenticator למכשירים ניידים. אימות דו-שלבי מאפשר לכם להוסיף שכבת אבטחה נוספת בעת אימות במחשב מארח Linux באמצעות SSH. לאחר הפעלת אימות דו-שלבי, יהיה עליכם להזין סיסמה דיגיטלית חד פעמית (TOTP) מהסמארטפון שלכם בנוסף לשם המשתמש והסיסמה שלכם (או מפתח RSA) ל-SSH ללינוקס.
התקן את האפליקציה Microsoft Authenticator למכשירים ניידים בטלפון החכם שלך (היא זמינה הן ב- Google Store והן ב- App Store).
במדריך זה, בחרתי ב- Microsoft Authenticator מכיוון שאני כבר משתמש בו לאימות MFA ב- Azure. אם תרצה, תוכל להשתמש במקום זאת במאמת Google.
עכשיו אתה צריך להתקין ולהגדיר את Google PAM על מארח לינוקס שלך:
התחבר למארח Linux שלך באמצעות SSH;
-
התקן את מאמת Google PAM באמצעות מנהל החבילות שלך:
Debian/Ubuntu:sudo apt-get install libpam-google-authenticatorRHEL/CentOS/פדורה:
yum install google-authenticator הפעל את הפקודה:
google-authenticatorהכלי ייצור ויציג קוד QR בקונסולה:
הפעל את האפליקציה Microsoft Authenticator בטלפון החכם שלך. בחר הוסף חשבון -> חשבון אישי -> סרוק קוד QR;
סרקו את קוד ה-QR באמצעות האפליקציה. ערך חדש עבור שם המשתמש והשרת שלך יופיע ביישום Authenticator. תשתמש בפריט זה כדי לקבל את הסיסמה החד-פעמית כדי להתחבר למארח שלך;
שים לב שמפתח סודי וקודי חירום מוצגים בקונסולת Linux שלך; תזדקק לקודים אלה כדי להתחבר למארח שלך אם תאבד/תשבור את הטלפון החכם שלך. שמור אותם במקום בטוח!
-
לאחר מכן Google Authenticator מציג כמה שאלות נוספות:
האם ברצונך שאסימוני אימות יהיו מבוססי זמן?
Y -> Enterהאם ברצונך שאעדכן את הקובץ "/home/sysops/.google_authenticator "?
Y -> Enterהאם ברצונך לא לאפשר שימושים מרובים באותו אסימון אימות?
Y -> Enterכברירת מחדל, אסימונים טובים למשך 30 שניות...
Y -> Enterכברירת מחדל, האסימון החד-פעמי משתנה כל 30 שניות. זוהי האפשרות הטובה ביותר עבור רוב המקרים. עם זאת, חשוב שמארח Linux והטלפון החכם שלך יהיו מסונכרנים בזמן.
האם ברצונך לאפשר הגבלת תעריפים?
Y -> Enterאתה יכול להגדיר את כל ההגדרות בבת אחת:
google-authenticator -t -f -d -w 3 -e 5 -r 3 -R 30-t - מאפשר כניסה באמצעות קוד חד פעמי
-f - שומר את התצורה ל~/.google_authenticator
-d - שולל שימוש בקודים קודמים
-w 3 - מאפשר שימוש באסימון אחד קודם ואחד עוקב (אם הזמן אינו מסונכרן)
-e 5 - מייצר 5 קודי חירום
-r 3 -r 30 - מאפשר שימוש בלא יותר מ-3 כניסות כל 30 שניות-
לאחר מכן הוסף את ההוראה הבאה ל- /etc/pam.d/sshd:
auth required pam_google_authenticator.so nullokאפשרות nullok מאפשרת למשתמש שלא הגדיר אימות דו-שלבי להיכנס באמצעות שם משתמש וסיסמה. לאחר הגדרת תצורה ובדיקה של אימות דו-שלבי, מומלץ להשבית את האפשרות לדרוש שימוש באימות דו-שלבי.
לאחר מכן ערוך /etc/ssh/sshd_config:
sudo mcedit /etc/ssh/sshd_configשנה את
ChallengeResponseAuthenticationערך ל
Yes:
ChallengeResponseAuthentication yesשמור את השינויים ב- sshd_config והפעל מחדש את SSHD:
service ssh restart
לאחר מכן נסה להתחבר למארח Linux שלך באמצעות SSH. תתבקש להזין קוד אימות לפני הזנת סיסמה.
פתח את היישום Authenticator בטלפון החכם שלך ומצא את המשתמש של מארח Linux שלך. הזן קוד סיסמה חד-פעמי בן 6 תווים שהמאמת יצר עבורך בקונסולה.
שים לב שקוד הסיסמה החד-פעמי תקף לזמן מוגבל (30 שניות כברירת מחדל). אם הזנת את הקוד הנכון, תתבקש להזין את סיסמת המשתמש שלך בלינוקס.
אם הכניסה מצליחה, השורה הבאה מופיעה ביומן האימות:
cat /var/log/auth.logJul 20 11:12:22 srvubun01 sshd(pam_google_authenticator)[6242]: Accepted google_authenticator for sysopsאם הקוד השגוי מוזן, יומן הרישום מציג שגיאות:
Jul 20 11:14:20 srvubun01 sshd(pam_google_authenticator)[6436]: Invalid verification code for sysops
Jul 20 11:14:22 srvubun01 sshd[6436]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.10.15 user=sysopsאם ברצונכם להשתמש באימות דו-שלבי יחד עם אימות מפתח SSH, הוסיפו את ההוראות הבאות ל-/etc/ssh/sshd_config:
PasswordAuthentication no
PubkeyAuthentication yes
AuthenticationMethods publickey,keyboard-interactive






