SSH認証:SSHキーまたは使い捨てパスワード

SSH認証:SSHキーまたは使い捨てパスワード

私はUbuntu 10.04 Linuxサーバーを持っており、通常はSSHアクセスにSSHキー認証(自宅のコンピュータで)を使用しています。ただし、パスワードが公開される可能性がある潜在的に保護されていないコンピュータ(インターネットカフェ、図書館のパブリックコンピュータなど)からリモートでSSHを接続する必要がある場合があります。この場合、次の使い捨てパスワードシステムを使用したいと思います。OTPWまたはスティーブギブソン完璧な紙のパスワード

サーバーをどのように構成しますか?まずSSHキーを確認してからOTPWシステムを使用してください。認証のため? (2人のユーザーを作成する必要がありますか?)

答え1

この方法は、1つの認証方法を確認しませんが、安全でない、または信頼できないコンピュータでOTPを使用してログインする問題を解決します。

複数のポート(公開鍵認証用の1つ、OTP認証用の1つ)をリッスンするようにSSHデーモンを構成するには、sshd_configファイルに別のポート番号を追加するだけです。

Port 22 # For key-based auth
Port 60000 # For OTP-based auth

2-FAはGoogleの2段階認証技術に基づいています。ライブラリーとプログラムをインストールするには、次のようにします。

$ sudo apt-get install libpam-google-authenticator

また、スマートフォンにGoogle Authenticatorアプリをインストールしてください。インストール後、端末からプログラムを起動します。

$ google-authenticator

これにより、バーコード、秘密、スクラッチコードが提供されます。それらを安全に守ってください!携帯電話にアクセスできない場合や緊急にアクセスする必要がある場合は、このコードが唯一の方法です。このバックアップメカニズムの重要性を過小評価しないでください。これは長期的な問題を引き起こす可能性があります。 Google Authenticatorを使用するようにPAMモジュールを設定します。

$ sudo nano /etc/pam.d/sshd

パスワードログインを無効にするには、@include common-auth行の前に#を追加してください。また、ファイルの下部に以下を追加します。

auth required pam_google_authenticator.so

OTP認証を有効にするには:

$ sudo nano /etc/ssh/sshd_config

フレーズを含む行を見つけて、「ChallengeResponseAuthenticationno」から「yes」に変更します。

設定PermitRootLogin noしてPasswordAuthentication no

ファイルの最後に「match」パラメータを使用して、そのポートからコンピュータにアクセスするために使用する必要がある認証メカニズムを決定します。例:

Match LocalPort 22
    PasswordAuthentication no
    AuthenticationMethods publickey
    PubKeyAuthentication yes
Match LocalPort 60000
    AuthenticationMethods keyboard-interactive:pam

「keyboard-interactive:pam」パラメータは、SSHデーモンがPAMモジュールデーモン(以下に設定されています)に移動し、そこに指定されているように認証するように強制します(したがって、行をハッシュしてPAMモジュールでパスワードログインを無効にする必要があります/etc/pam.d/sshd)。common-auth変更を適用するには、SSHデーモンを再起動することを忘れないでください。

$ sudo /etc/init.d/sshd restart

次に、信頼できないシステムでは、SSHを介してポート60000(または設定したポート)に接続し、OTPを使用して認証します。

答え2

編集:私の質問に答えて申し訳ありません! (他の2つの答えは優れていますが、質問に完全に答えるわけではありません。しかし、まだ非常に役に立ちます!)

これOTPasswordプラグイン認証モジュールLinux用PAMでは、Steve Gibsonの完全なペーパー暗号化システムを実装しています。インストール後にPPP認証を受けます。しかし、SSHキーバイパスはどうですか?このウェブサイトのよくある質問は、この質問に対する回答です。

リモートシステムに頻繁にログインする信頼できるコンピュータがある場合は、SSHキーを使用してください。を使用して作成し、ssh-keygen新しい ~/.ssh/id_rsa.pub をリモートシステムの ~/.ssh/authorized_keys にコピーします。SSHがキーを使用してユーザーを認証すると、PAMは無視されます。

自動で便利に!

編集する:Google OTPそして二重セキュリティ良い解決策のようです。使い捨て紙のパスワードを提供せず、代わりにスマートフォンを使用して絶えず変化するパスワードを生成します。TOTPキー。 (Duo Securityは、複数の使い捨てパスワードを含むテキストメッセージを送信して愚かなマシンでも機能しますが、Duo Securityはローカルではないため、サーバーに依存する必要があります...)

答え3

代替手段としてOTPを使用した公開鍵認証(それはその意味ですか?):

  1. パスワード置換による公開鍵認証は、OpenSSHの基本的な動作です。
  2. パスワードを確認する方法は、PAM設定ファイルで最もよく定義されています。

答え4

これは簡単かもしれませんが、避けるべきいくつかの落とし穴があります。

ほとんどの設定変更は、通常/etc/ssh/sshd_configにあるsshd_configファイルで実行する必要があります。

すでに共有キーを実行しているので、ここではスキップします。

注目したい行は次のとおりです。

PasswordAuthentication yes

知っておくべきことは、ログインできる人と方法が限られていることです。可能な限り最小のユーザーグループへのアクセスを制限するには、以下のすべてが必要です。

PermitEmptyPasswords no
AllowUsers [email protected].*
AllowGroups sshusers

ここで設定できるさまざまなオプションがあります。マニュアルページ利用可能な完全なオプションについて学びます。

SSH権限のみのグループを設定することをお勧めします。

下のロゴも強くおすすめ:

PermitRootLogin no

鍵が送信/再検証されない場合、デーモンはパスワードを要求します。必要に応じてOTPWバリアを追加できますが、理論的には暗号化された環境なので、必ずしも必要ではありません。 OTPW情報を見てみると、接続したコードに次のような内容があるようです。2003年に最後に更新されました同僚のレビューを受けていない場合は、使用を消極的にしたでしょう。それ以来、セキュリティコーディングの実践と環境全体が大幅に変わりました。

関連情報