セキュリティを強化するために、 時間ベースの認証トークン LinuxPCにログインするためのパスワードと同様に。このソリューションは、Google認証システムと他のTOTPアプリを使用します。
このプロセスは、Ubuntu14.04で標準で実行されました Unityデスクトップ およびLightDMログインマネージャですが、原則はほとんどのLinuxディストリビューションとデスクトップで同じです。
以前にお見せしました SSH経由のリモートアクセスにGoogle認証システムを要求する方法 、およびこのプロセスは似ています。これにはGoogle認証システムアプリは必要ありませんが、TOTP認証スキームを実装する互換性のあるアプリで動作します。 Authy 。
Google AuthenticatorPAMをインストールします
関連: Google Authenticator Two-FactorAuthenticationでSSHを保護する方法
これをSSHアクセス用に設定する場合と同様に、最初に適切なPAM(「pluggable-authenticationmodule」)ソフトウェアをインストールする必要があります。 PAMは、さまざまなタイプの認証方法をLinuxシステムにプラグインしてそれらを要求できるようにするシステムです。
Ubuntuでは、次のコマンドでGoogle認証システムPAMをインストールします。ターミナルウィンドウを開き、次のコマンドを入力してEnterキーを押し、パスワードを入力します。システムは、LinuxディストリビューションのソフトウェアリポジトリからPAMをダウンロードし、インストールします。
sudo apt-get install libpam-google-authenticator
他のLinuxディストリビューションでも、このパッケージを簡単にインストールできるようにしておく必要があります。Linuxディストリビューションのソフトウェアリポジトリを開いて、検索を実行してください。最悪のシナリオでは、あなたは見つけることができます GitHubのPAMモジュールのソースコード 自分でコンパイルします。
前に指摘したように、このソリューションはGoogleのサーバーに「電話をかける」ことに依存していません。標準のTOTPアルゴリズムを実装しており、パソコンにインターネットアクセスがない場合でも使用できます。
認証キーを作成する
次に、秘密の認証キーを作成して、スマートフォンのGoogle認証システムアプリ(または同様のアプリ)に入力する必要があります。まず、Linuxシステムにユーザーアカウントとしてログインします。ターミナルウィンドウを開き、 google-authenticator コマンド。タイプ Y ここのプロンプトに従います。これにより、現在のユーザーアカウントのディレクトリにGoogle認証システム情報を含む特別なファイルが作成されます。
また、その2要素認証コードをスマートフォンのGoogle認証システムまたは同様のTOTPアプリに取り込むプロセスについても説明します。システムでスキャン可能なQRコードを生成することも、手動で入力することもできます。
スマートフォンを紛失した場合にログインに使用できる緊急スクラッチコードを必ず書き留めてください。
コンピューターを使用するユーザーアカウントごとに、このプロセスを実行します。たとえば、パソコンを使用しているのがあなただけの場合は、通常のユーザーアカウントで1回だけ使用できます。パソコンを使用している人が他にいる場合は、自分のアカウントにログインして、自分のアカウントに適切な2要素コードを生成してログインできるようにする必要があります。
認証を有効にする
ここで物事は少し厄介になります。 SSHログインで2要素を有効にする方法を説明したとき、SSHログインにのみ必要でした。これにより、認証アプリを紛失した場合や問題が発生した場合でも、ローカルでログインできるようになりました。
ローカルログインに対して2要素認証を有効にするため、ここで潜在的な問題が発生します。問題が発生した場合、ログインできない可能性があります。そのことを念頭に置いて、グラフィカルログインでのみこれを有効にする手順を説明します。これにより、必要に応じてエスケープハッチが提供されます。
Ubuntuでのグラフィカルログインに対してGoogle認証システムを有効にする
テキストプロンプトからログインするときの要件をスキップして、グラフィカルログインに対してのみ2段階認証をいつでも有効にすることができます。つまり、仮想端末に簡単に切り替えてログインし、変更を元に戻すことができるため、問題が発生した場合にGogoleAuthenciatorは必要ありません。
確かに、これは認証システムに穴を開けますが、 システムに物理的にアクセスできる攻撃者は、とにかくすでにそれを悪用することができます 。そのため、SSHを介したリモートログインには2要素認証が特に効果的です。
LightDMログインマネージャーを使用するUbuntuでこれを行う方法は次のとおりです。次のようなコマンドを使用して、編集用にLightDMファイルを開きます。
すど げぢt /えtc/ぱm。d/ぃghtdm
(これらの特定の手順は、LinuxディストリビューションとデスクトップがLightDMログインマネージャーを使用している場合にのみ機能することに注意してください。)
ファイルの最後に次の行を追加して、保存します。
認証が必要ですpam_google_authenticator.sonullok
最後の「nullok」ビットは、2要素認証を設定するためにgoogle-authenticatorコマンドを実行していなくても、ユーザーがログインできるようにシステムに指示します。設定している場合は、時間制限のあるコードを入力する必要があります。入力しない場合は入力しません。 「nullok」を削除すると、Google認証システムコードを設定していないユーザーアカウントはグラフィカルにログインできなくなります。
次回ユーザーがグラフィカルにログインすると、パスワードの入力を求められ、スマートフォンに表示されている現在の確認コードの入力を求められます。確認コードを入力しないと、ログインできません。
最も一般的なLinuxデスクトップセッションマネージャーはPAMを使用するため、プロセスは他のLinuxディストリビューションやデスクトップでもかなり似ているはずです。適切なPAMモジュールをアクティブ化するには、同じようなもので別のファイルを編集する必要があります。
ホームディレクトリ暗号化を使用する場合
Ubuntuの古いリリースは簡単に提供しました 「ホームフォルダの暗号化」オプション パスワードを入力するまで、ホームディレクトリ全体が暗号化されます。具体的には、これはecryptfsを使用します。ただし、PAMソフトウェアはデフォルトでホームディレクトリに保存されているGoogle認証システムファイルに依存しているため、ログインする前に暗号化されていない形式でシステムで利用できることを確認しない限り、暗号化によってPAMによるファイルの読み取りが妨げられます。 README 非推奨のホームディレクトリ暗号化オプションをまだ使用している場合にこの問題を回避する方法の詳細については、
Ubuntuの最新バージョンは フルディスク暗号化 代わりに、上記のオプションで正常に機能します。特別なことをする必要はありません
助けて、壊れた!
グラフィカルログインに対してこれを有効にしただけなので、問題が発生した場合は簡単に無効にできます。 Ctrl + Alt + F2などのキーの組み合わせを押して、仮想端末にアクセスします ユーザー名とパスワードを使用してそこにログインします。次に、sudo nano /etc/pam.d/lightdmなどのコマンドを使用して、ターミナルテキストエディタで編集するためにファイルを開くことができます。使用する Nanoのガイド 行を削除してファイルを保存すると、通常どおりに再度ログインできるようになります。
他のPAM構成ファイルに「authrequiredpam_google_authenticator.so」という行を追加することで、他の種類のログイン(場合によってはすべてのシステムログイン)にGoogle認証システムを強制的に要求することもできます。これを行う場合は注意してください。また、「nullok」を追加して、セットアッププロセスを完了していないユーザーでもログインできるようにすることをお勧めします。
このPAMモジュールの使用方法と設定方法の詳細については、次のURLを参照してください。 GitHub上のソフトウェアのREADMEファイル 。