GNU/Linux >> Linux の 問題 >  >> Debian

pam_usb (fork) を使用してパスワードの代わりに USB フラッシュ ドライブを使用して Linux にログインする方法

pam_usb は、一般的な USB フラッシュ ドライブ、SD カード、MMC などで Linux のハードウェア認証を提供する PAM モジュールです。

これにより、USB スティックまたはメモリ カードをコンピュータに接続するだけで、パスワードなしでログインできます。この USB 認証は、スーパーユーザーを必要とする端末コマンドを実行するときにも機能します。たとえば、sudo を使用するときにパスワードを求められることはありません。

pam_usb は、B. ログイン マネージャー (GDM、Lightdm など) や su / sudo など、PAM をサポートするすべてのアプリケーションで動作します。

認証のために、pam_usb は USB フラッシュ ドライブ/メモリ カードのシリアル番号、モデルとメーカー、およびオプションのワンタイム パッド (OTP) を使用します。 One Time Pads が有効になっている場合 (これはデフォルトで有効になっていますが、無効にすることもできます)、USB/メモリー カード上のパブリック ユーザー パッド ファイルは、隠しフォルダーと呼ばれます。保存された .pamusb 秘密鍵は、ユーザーのホーム ディレクトリに保存されている同じ名前の隠しフォルダーに保存されます。

このツールの元の開発者は、2016 年 4 月以降、新しいコミットはなく、2011 年以降の新しいリリースもありませんでした。それ以来、さまざまなリポジトリでいくつかの改善が行われています。 pam_usb をさらに改善するために、他のリポジトリで以前に行われた作業も考慮して、ツールがフォークされました (これには、UDisk2 ポートなどの改善が含まれます)。

pam_usb 関数:

  • パスワードレス認証(メモリーカード・USB)。 pam_usb で設定した USB スティック / メモリ カードを接続してログインするだけです
  • USB スティック、SD カード、MMC などをサポート
  • デバイスの自動プローブ。 pam_usb では、USB フラッシュ ドライブをマウントする必要はありません。 USB デバイスの位置を特定し、UDisk を使用してそのデータに直接アクセスできます
  • USB フラッシュ ドライブを再フォーマットする必要はありません
  • USB シリアル番号、モデル、メーカーの確認
  • ワンタイム パッド (OTP) 認証をサポート
  • 2 要素認証として使用でき、Linux システムにログインするには USB スティックとパスワードの両方が必要です
  • 複数のマシンで同じメモリ カード/USB スティックを使用できます

pam_usb には 3 つのツールが付属しています:pamusb-agent これは、デバイスが認証または削除されたときにアクションを開始するために使用できます (たとえば、デバイスが削除されたときに画面をロックするコマンドを使用できます)、pamusb-conf これにより、pam_usb と pamusb-check のセットアップが容易になります。 これは、pam_usb 認証エンジンをスクリプトまたはアプリケーションに統合するために使用されます。

pam_usb は現在、ユーザーごとに複数のデバイスを追加することをサポートしていません。今のところ、pamusb-conf 構成済みのユーザーのデバイスは追加しません。ここでこの問題を追跡できます。

pam_usb はログインにのみ使用され、GNOME キーリングのロック解除やプライベート フォルダーの復号化には使用されません . GNOME Keyring は、パスワード以外によるロック解除をサポートしていないようです。 pam_usb の使用中に自動的にログインし、ペアリングされた USB フラッシュ ドライブが接続されている場合でも、GNOME キーチェーンのロック解除ダイアログ ボックスが表示され、ロック解除パスワードを入力するよう求められます。たとえば、指紋認証を使用している場合も同じことが起こります。

GDM と LightDM でこれを試しました。どちらの場合も、ログイン画面で自分のユーザー名をクリックし、Enter キーを押してログインする必要がありました。アカ​​ウントのパスワードを入力する必要はありませんでした.

[[編集]]以下のコメントで、開発者は、コードのセキュリティ レビューに関するヘルプを見つけようとしていたことを指摘しました。助けていただける場合は、github から連絡してください。

USB 関連:Ventoy (Linux および Windows) を使用して、ISO を USB スティックにコピーするだけで起動可能な USB ドライブを作成します

pam_usb (フォーク) のインストールとセットアップ

この pam_usb-fork は、どの Linux ディストリビューションの公式リポジトリにもパックされていませんでした。古いバージョン 0.5.0 (Python2 と Udisks1 を使用) はいくつかの Linux ディストリビューションで利用できますが、ほとんどのディストリビューションでは不足しています。

pam_usb フォーク開発者は、現在の Debian および Ubuntu バージョン (Linux Mint、Pop! _OS、および Debian または Ubuntu ベースのその他の Linux ディストリビューション) 用にこの pam_usb バージョンをパックしており、ここからダウンロードできます (そこから必要なのはlibpam-usb パッケージ)。

pam_usb フォーク リポジトリには、Arch Linux / Manjaro PKGBUILD も利用可能 .

他の Linux ディストリビューションの場合は、ソースからビルドする必要があります .

開発者が提供する Debian パッケージから pam_usb (fork) をインストールする場合、インストール中にデバイスとユーザーを選択するよう求められます:

これが当てはまらない場合、または後で手動で行いたい場合は、pam_usb を次のように設定できます。 USB フラッシュ ドライブまたはメモリ カードを挿入し、次のコマンドを実行して、新しいデバイスを認証方法として追加します。

sudo pamusb-conf --add-device DEVICE_NAME

どこで DEVICE_NAME 好きなようにできます

次に、以下を使用してユーザーを pam_usb 構成に追加する必要があります。

sudo pamusb-conf --add-user USERNAME

どこで USERNAME USB / メモリ カード ベースの認証を有効にするユーザーです。

ユーザー名とデバイス情報は /etc/security/pam_usb.conf に保存されます ファイル。

以下を使用して、構成がすべて正しいかどうかを確認できます。

pamusb-check USERNAME

開発者が提供する DEB パッケージを使用している場合は、他に何も構成する必要がないことに注意してください。ただし、ソースから pam_usb をインストールした場合は、こちらで説明されているように、システム認証プロセスに pam_usb を追加する必要があります。

その他の pam_usb 構成オプションについては、構成 wiki ページを参照してください。

pam_usb を構成して、USB キー/メモリ カードが取り外されたときに画面をロックします (再挿入するとロックが解除されます)

pam_usb は、USB スティック / メモリ カードが挿入または取り外されたときに、pamusb-agent の助けを借りてコマンドを実行できます。

pam_usb wiki には、USB スティック / メモリ カードを取り外すときに画面をロックし、再挿入するときにロックを解除する構成の例があります。この例は Gnome では動作しなくなりました (ただし、置き換えれば他のデスクトップ環境でも動作するはずです) gnome-screensaver-command cinnamon-screensaver-command で Cinnamon デスクトップの場合、mate-screensaver-command MATEデスクトップなど)。 [[編集]] xdg-screensaver を代用できます (xdg-utils の一部 パッケージ;例えばxdg-screensaver lock 画面をロックし、xdg-screensaver reset ロックを解除します)。

USBスティック/メモリカードが取り外されたときにpam_usbで画面をロックし、デバイスが再接続されたら、systemを使用してLinuxディストリビューションでロックを解除します(GDM3を使用したGnomeでのみこの構成をテストしました。次の構成を使用しています(/etc/security/pam_usb.conf ):

...................................

<user id="USERNAME">

<device>DEVICE_NAME</device>

<!-- When the user "USERNAME" removes the usb device, lock the screen -->

<agent event="lock">

        <cmd>/usr/local/bin/screensaver-lock</cmd>        

    </agent>

    <!-- Resume operations when the usb device is plugged back and authenticated -->

    <agent event="unlock">     

        <cmd>/usr/local/bin/screensaver-unlock</cmd>       

    </agent>

</user>

...................................

これを機能させるために、2 つのスクリプトが使用されます。 /usr/local/bin/screensaver-lock 画面をロックするために使用され、 /usr/local/bin/screensaver-unlock 画面のロックを解除します。その内容は次のとおりです。

/usr/local/bin/screensaver-lock :

#!/bin/sh

SESSION=`loginctl list-sessions | grep USERNAME | awk '{print $1}'`

if [ -n $SESSION ]; then

        loginctl lock-session $SESSION

fi

/usr/local/bin/screensaver-unlock :

#!/bin/sh

SESSION=`loginctl list-sessions | grep USERNAME | awk '{print $1}'`

if [ -n $SESSION ]; then

        loginctl unlock-session $SESSION

fi

USERNAME の両方を置き換えます

あなたも好きかもしれません:KDE Con​​nect / GSConnect:Android デバイスを使用して Linux デスクトップをロック / ロック解除する方法

wiki.ubuntuusers.deの上


Debian
  1. Etcherを使用してLinuxでISOファイルをUSBドライブに書き込む方法

  2. ddコマンドを使用して起動可能なUSBドライブを作成する方法

  3. LinuxでLogrotateを使用してログファイルを管理する方法

  1. LinuxでLog2ramを使用してRAMにログファイルを書き込む方法

  2. UNIX または Linux で USB ディスク ドライブをマウントする方法

  3. USB フラッシュ ドライブに起動可能な Memtest86+ を作成する方法は?

  1. Linux用の起動可能なUSBドライブを作成する方法

  2. UbuntuまたはLinuxMintを使用して起動可能なLinuxUSBを作成する方法

  3. LinuxでUSBフラッシュドライブをマウントする方法