כיצד להפעיל אימות דו-שלבי (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 על מארח לינוקס שלך:

  1. התחבר למארח Linux שלך באמצעות SSH;

  2. התקן את מאמת Google PAM באמצעות מנהל החבילות שלך:
    Debian/Ubuntu:

    sudo apt-get install libpam-google-authenticator 

    RHEL/CentOS/פדורה:

    yum install google-authenticator

  3. הפעל את הפקודה:

    google-authenticator
  4. הכלי ייצור ויציג קוד QR בקונסולה:

  5. הפעל את האפליקציה Microsoft Authenticator בטלפון החכם שלך. בחר הוסף חשבון -> חשבון אישי -> סרוק קוד QR;

  6. סרקו את קוד ה-QR באמצעות האפליקציה. ערך חדש עבור שם המשתמש והשרת שלך יופיע ביישום Authenticator. תשתמש בפריט זה כדי לקבל את הסיסמה החד-פעמית כדי להתחבר למארח שלך;

  7. שים לב שמפתח סודי וקודי חירום מוצגים בקונסולת Linux שלך; תזדקק לקודים אלה כדי להתחבר למארח שלך אם תאבד/תשבור את הטלפון החכם שלך. שמור אותם במקום בטוח!

  8. לאחר מכן Google Authenticator מציג כמה שאלות נוספות:

  9. האם ברצונך שאסימוני אימות יהיו מבוססי זמן?

    Y -> Enter
  10. האם ברצונך שאעדכן את הקובץ "/home/sysops/.google_authenticator "?

    Y -> Enter
  11. האם ברצונך לא לאפשר שימושים מרובים באותו אסימון אימות?

    Y -> Enter
  12. כברירת מחדל, אסימונים טובים למשך 30 שניות...

    Y -> Enter

    כברירת מחדל, האסימון החד-פעמי משתנה כל 30 שניות. זוהי האפשרות הטובה ביותר עבור רוב המקרים. עם זאת, חשוב שמארח Linux והטלפון החכם שלך יהיו מסונכרנים בזמן.

  13. האם ברצונך לאפשר הגבלת תעריפים?

    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 שניות

  14. לאחר מכן הוסף את ההוראה הבאה ל- /etc/pam.d/sshd:

    auth required pam_google_authenticator.so nullok

    אפשרות nullok מאפשרת למשתמש שלא הגדיר אימות דו-שלבי להיכנס באמצעות שם משתמש וסיסמה. לאחר הגדרת תצורה ובדיקה של אימות דו-שלבי, מומלץ להשבית את האפשרות לדרוש שימוש באימות דו-שלבי.

  15. לאחר מכן ערוך /etc/ssh/sshd_config:

    sudo mcedit /etc/ssh/sshd_config
  16. שנה את

    ChallengeResponseAuthentication

    ערך ל

    Yes

    :

    ChallengeResponseAuthentication yes
  17. שמור את השינויים ב- sshd_config והפעל מחדש את SSHD:

    service ssh restart

לאחר מכן נסה להתחבר למארח Linux שלך באמצעות SSH. תתבקש להזין קוד אימות לפני הזנת סיסמה.

פתח את היישום Authenticator בטלפון החכם שלך ומצא את המשתמש של מארח Linux שלך. הזן קוד סיסמה חד-פעמי בן 6 תווים שהמאמת יצר עבורך בקונסולה.

שים לב שקוד הסיסמה החד-פעמי תקף לזמן מוגבל (30 שניות כברירת מחדל). אם הזנת את הקוד הנכון, תתבקש להזין את סיסמת המשתמש שלך בלינוקס.

אם הכניסה מצליחה, השורה הבאה מופיעה ביומן האימות:

cat /var/log/auth.log
Jul 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