X

Linux SSH 加上 Google 兩階段認證服務檢核

Linux 的 SSH (OpenSSH) 想要使用 Google 的兩階段認證來確保登入安全, 要如何設定?

Linux SSH 加上 Google 兩階段認證服務檢核

兩階段認證 App 要先安裝

Linux 啟用/設定 兩階段認證 登入步驟

兩階段認證的設定下述分成 Server 設定 和 User 設定兩部份 (User 設定部份, 每個人、換手機時會用到)

Server 設定部份步驟

  1. sudo apt-get install libpam-google-authenticator # 會有 google-authenticator 的程式讓使用者產生所需 QR Code)
  2. sudo vim /etc/pam.d/sshd # 設定登入 PAM 檢查, 於檔案最後面加上下述
    auth required pam_google_authenticator.so
  3. sudo vim /etc/ssh/sshd_config # no -> yes
    ChallengeResponseAuthentication yes
  4. sudo /etc/init.d/ssh restart

User 設定部份步驟

  1. 執行下述前, 建議先進入 screen 或 tmux (QR Code 太大張的話, 要往上捲用), 下述設定會於自己目錄下存成一個設定檔: ~/.google_authenticator
  2. $ google-authenticator
    Do you want authentication tokens to be time-based (y/n) y
    
    https://www.google.com/chart?chs=200x200&chld=M|0&cht=qr&chl=otpauth://totp/xxx%3Fsecret%3DMKK123456
  3. 有很大的 QR Code 的圖, 接下來打開手機的 Google Authenticator APP. (若沒有看到圖, 或者遠端幫別人做的, 只需上傳上面網址給他, 讓他依照下述步驟掃圖即可)
    1. Google Authenticator App 右上角有個"筆"的符號
    2. 然後下方有 "+"
    3. 選 "掃描條碼"
    4. 掃描那張大的 QR Code 就可以了
  4. 下述這些資料請自己抄起來(登入不進去、手機沒電等, 可以臨時使用)
    Your new secret key is: AAABBCC1234567AA
    Your verification code is 123456
    
    Your emergency scratch codes are:
    12345688
    23456832
    23892387
    27893789
    93827941
  5. 再下來的所有問題都回答 y 即可:

    Do you want me to update your "/home/user/.google_authenticator" file (y/n) y

    Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks (y/n) y

    By default, tokens are good for 30 seconds and in order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. If you experience problems with poor time synchronization, you can increase the window from its default size of 1:30min to about 4min. Do you want to do so (y/n) y

    If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s. Do you want to enable rate-limiting (y/n) y

  6. ssh your.server.name # 測試
    Password: 輸入原本的密碼
    Verification code: 輸入 Authenticator key (手機上的那個數字)
  7. 到此就設定完成囉~

FAQ

  • 有產生過 Key 和 沒有 Key 的差異? (scp.. 其它程式自動話要使用)
    • 若有 key 的一樣直接進入, 沒有 key 的要輸入兩階段才可以進入
  • 新使用者, 都還沒辦法登入去操作 google-authenticator 等等的, 會發生什麼事? 要如何解決?
    • 若沒有產生 google-authenticator 的帳戶, 需要別人幫忙產生(寄 url) 或幫忙產生 key, 不然會一直出現密碼(輸入正確也無法登入), 完全不會出現 Verification code 可以輸入.
    • 解法1: 請可以登入的人, 切換成他的帳號(sudo su - user2), 幫他執行 google-authenticator, 把 QR code 那段網址丟給他, 讓他掃就可以進入. (註:此解法需注意這網址中間不會被人盜取,以確保安全性問題)
    • 解法2: 請他產生好 Key, 然後請別人幫他把 Key 放入, 先用 Key 登入後, 再來設定兩階段認證

相關網頁

Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post