ubuntu前書き_認証要素_は、システムへのログインなどのアクションを実行する権限があることを証明するために使用される単一の情報です。_認証チャネル_は、認証システムがユーザーに要素を配信する方法、またはユーザーに返信を要求する方法です。パスワードとセキュリティトークンは、認証要素の例です。コンピューターと電話はチャネルの例です。SSHはデフォルトで認証にパスワードを使用します。ほとんどのSSH強化手順では、代わりにSSHキーを使用することを推奨しています。これはまだ単一の要因にすぎません。悪意のある攻撃者がコンピューターを侵害した場合、彼らはあなたの鍵を使用してサーバーも侵害する可能性があります。それに対処するため、このチュートリアルでは、多要素認証を設定します。多要素認証(MFA)は、認証またはログインするために複数の要素を必要とします。これは、悪意のある攻撃者がコンピューターや携帯電話などの複数のものを侵害する必要があることを意味します。多くの場合、さまざまなタイプの要因は次のように要約されます。パスワードやセキュリティの質問など、*知っている*ものオーセンティケーターアプリやセキュリティトークンなど、*持っている*もの指紋や声など、あなたが*している*もの一般的な要因の1つは、Google認証システムのようなOATH-TOTPアプリです。OATH-TOTP(オープン認証の時間ベースのワンタイムパスワード)は、ワンタイムパスワード(通常は30秒ごとにリサイクルされる6桁の数字)を生成するオープンプロトコルです。この記事では、SSHキーに加えてOATH-TOTPアプリを使用してSSH認証を有効にする方法について説明します。SSH経由でサーバーにログインするには、2つのチャネルで2つの要素が必要になるため、パスワードやSSHキーだけよりも安全です。前提条件このチュートリアルを実行するには、次のものが必要です。14.04ドロップレット1つ。SSHキーが追加されたsudo非ルートユーザー。[この初期サーバーセットアップチュートリアル]。[Android])。ステップ1-libpam-google-authenticatorのインストールこのステップでは、GoogleのPAMをインストールして構成します。Module_の略であるPAMは、Linuxシステムでユーザーを認証するために使用される認証インフラストラクチャです。GoogleはOATH-TOTPアプリを作成したため、TOTPを生成し、あらゆるOATH-TOTPアプリと完全に互換性のあるPAMも作成しました。最初に、Ubuntuリポジトリキャッシュを更新します。update次に、PAMをインストールします。libpam-google-authenticatorPAMがインストールされたら、PAMとともにインストールされたヘルパーアプリを使用して、2番目の要素を追加するユーザーのTOTPキーを生成します。このキーは、システム全体ではなく、ユーザーごとに生成されます。TOTP認証アプリを使用するすべてのユーザーは、ログインしてヘルパーアプリを実行し、独自のキーを取得する必要があります。google-authenticatorコマンドを実行すると、いくつかの質問が表示されます。最初のものは、認証トークンを時間ベースにする必要があるかどうかを尋ねます。このPAMでは、時間ベースまたはシーケンシャルベースのトークンを使用できます。tokens_を使用すると、コードは特定のポイントで開始され、使用するたびにコードが増分されます。_時間ベースのトークン_を使用すると、特定の時間が経過するとコードがランダムに変更されます。Authenticatorのようなアプリが予想しているので、時間ベースに固執します。(y/n)この質問に答えると、大きなQRコードを含む多くの出力が過去にスクロールします。パスワードマネージャーなどの安全な場所に、秘密鍵、検証コード、緊急スクラッチコードを必ず記録してください。この時点で、携帯電話の認証アプリを使用してQRコードをスキャンするか、秘密キーを手動で入力します。QRコードが大きすぎてスキャンできない場合は、QRコードの上にあるURLを使用して小さいバージョンを取得できます。追加されると、アプリで30秒ごとに変更される6桁のコードが表示されます。残りの質問は、PAMに機能方法を伝えます。それらを1つずつ確認します。+`ファイルに書き込みます。「いいえ」と言うと、プログラムは終了し、何も書き込まれません。認証システムは動作しません。(y/n)ここで「はい」と答えると、各コードを使用後すぐに期限切れにすることで、リプレイ攻撃を防ぎます。これにより、攻撃者が使用したばかりのコードをキャプチャしてログインすることを防ぎます。(y/n)ここで「はい」と答えると、移動する4分間のウィンドウで最大8つの有効なコードが許可されます。いいえと答えることにより、1:30のローリングウィンドウ内で有効なコードを3つに制限します。1:30の時間帯に問題がなければ、より安全な選択はありません。(y/n)レート制限とは、リモートの攻撃者が特定の数の推測のみを試みてからブロックされることを意味します。以前にレート制限をSSHに直接設定していなかった場合、今すぐそれを行うことは優れた強化技術です。次のステップは、TOTPキーを使用するようにSSHを構成することです。PAMについてSSHに通知し、それを使用するようにSSHを構成する必要があります。+`またはお好みのテキストエディターを使用して編集します。/etc/pam.d/sshdファイルの最後に次の行を追加します。common-password最後にある「nullok」という言葉は、この認証方法がオプションであることをPAMに伝えます。これにより、OATH-TOTPキーを持たないユーザーは、引き続きSSHキーを使用してログインできます。すべてのユーザーがOATH-TOTPキーを取得したら、この行の「nullok」を削除してMFAを必須にすることができます。ファイルを保存して閉じます。次に、この種の認証をサポートするようにSSHを構成します。編集のためにSSH構成ファイルを開きます。yes」に設定します。.ファイルを保存して閉じ、SSHを再起動して構成ファイルを再ロードします。restartステップ3-SSHをMFAに対応させるこの手順では、SSHキーが機能するかどうかをテストします。別のターミナルを開いて、サーバーにSSHで接続してみます。確認コードまたはパスワードを入力せずに、SSHキーを使用してこの2番目のセッションにログインしたことがわかります。これは、SSHキーが他のすべての認証オプションをデフォルトでオーバーライドするためです。TOTPコードを使用し、パスワードの代わりにSSHキーを使用するようにSSHに指示する必要があります。次に、sshd構成ファイルを再度開きます。これにより、パスワードを要求しないようにSSHに指示します。.次に、ファイルの下部に次の行を追加します。これは、どの認証方法が必要かをSSHに伝えます。yesファイルを保存して閉じます。sshd構成ファイルを開きます。`#`文字を追加してコメントアウトします。これは、パスワードの入力を求めないようにPAMに指示します。+`にしないようにSSHに指示しました。.ファイルを保存して閉じ、SSHを再起動します。restartサーバーに再度ログインしてみてください。SSHキーで部分的に認証され、確認コードの入力を求められたことを確認する必要があります。これは次のようになります。apから確認コードを入力すると、サーバーにログインします。これで、SSHに対してMFAが有効になりました!結論セキュリティを強化するシステムと同様に、そのセキュリティを管理する責任を負います。この場合、SSHキーまたはTOTPシークレットキーが失われないことを意味します。場合によっては何かが起こり、キーを制御できなくなる可能性があります。サーバーへのアクセスを回復するためのいくつかの提案を次に示します。TOTPアプリを紛失した場合、またはアクセスできない場合、*復旧コードを確認コードとして使用します。これは、新しい携帯電話を入手し、古い携帯電話からキーをエクスポートするのを忘れた場合、または携帯電話の電源が切れた場合に発生します。秘密鍵とバックアップを紛失した場合、DigitalOceanコントロールパネルからコンソールを使用してログインします。これにより、PAMが設定を認識せず、コードの入力を求められなくなります。+」に「nullok」が追加されていることを確認してください。これを変更する場合は、必ずSSHを再起動してください。その後、新しいキーに置き換えることができます。MFAトークン)があることにより、外部エージェントがSSHを介してマシンにブルートフォースすることをほぼ不可能にし、セキュリティを大幅に強化しました。