別の要素を追加して、SSHログインの認証を強化したいと思います。パスコードジェネレーターデバイス、または携帯電話のパスコード生成アプリケーションです。デフォルト設定の明白なオプションは、固定パスワードとキーペアのみです。これどうやってするの?
(パスワードとパスコードジェネレーターを使用する場合、これは 2要素認証 (2FA)を提供します。パスワードは「私が知っていること」であり、パスコードは「持っているもの」です。)
これを行う1つの方法は、Googleが提供する Google Authenticator というツールを使用することです。
インストール libpam-google-authenticator
Sudo apt-get install libpam-google-authenticator
/etc/pam.d/sshd
を編集してモジュールを含めます:
sudoedit /etc/pam.d/sshd
そして、ファイルのtopにこの行を含め、保存します:
auth required pam_google_authenticator.so
SSH構成ファイルを編集して、チャレンジをオンにします。
sudoedit /etc/ssh/sshd_config
を選択し、応答認証を次から変更します。
ChallengeResponseAuthentication no
に
ChallengeResponseAuthentication yes
そして、ファイルを保存します。
Sudo restart ssh
はSSHを再起動します
google-authenticator
を実行します
別のデバイスで認証コードを受信するには、これらのいずれかが必要です。
パスワードと使い捨てのパスコードを組み合わせることは、2要素認証であることに注意してください。「知っていること」(パスワード)と「持っているもの」(パスコード生成デバイス)を組み合わせます。一方、使い捨てのパスコードとSSHキーペアを組み合わせた場合、それはすべて「持っているもの」になります。 2つの認証要素が同じタイプの場合、2要素認証はありません。これは「1.5因子認証」と呼ばれることもあります。
Google Authenticatorはパーソナルサーバーには適していますが、既存のIDインフラストラクチャとうまく連携していない場合があります。他のオプションを調べたい場合は、RADIUSを認証プロトコルおよびpam-radiusプラグインとして使用することを検討してください。エンタープライズ指向の2要素認証システムはすべて、半径をサポートしています。 buntuにpam-radiusを介したWiKID二要素認証 を追加する方法に関するドキュメントを作成しました。
Radiusを使用すると、SSH以外のシステムを同じ認証サーバーに結び付けることができます。また、認証リクエストをfreeradius経由でLDAPにルーティングし、次に2FAサーバーにルーティングして、認証と認証を分離することもできます。 AD btwでも同じことができます。
前に説明したように、/etc/pam.d/sshd
のtopではなくtopに次の行を配置することを皆さんに勧めます(現在修正済みです)。
auth required pam_google_authenticator.so
そうしないと、システムはパスワードにブルートフォース攻撃にさらされるのままになり、2要素認証の最初の部分であるパスワードが危険にさらされます。
最初に確認コードを求められ、次にパスワードが求められます(コードが正しいかどうかは関係ありません)。どちらかが間違っている場合は、両方を再度入力する必要があります。他の方法で設定することもできますが、現在のデフォルトのubuntu(15.04)sshd設定で説明するのは少し難しい変更です。
それが必要な理由の詳細については、この問題を確認してください。