Skip to Content

パスワードと2FA

強力なパスワード ポリシーと 2 要素認証 (2FA) は、ユーザー アカウントを保護するための 2 つの重要な防御線です。この記事では、パスワード ポリシーを構成し、Ubuntu 26.04 で 2 要素認証を有効にする方法について説明します。

強力なパスワードポリシー

パスワード品質チェックツールのインストール

sudo apt install libpam-pwquality

パスワードポリシーの構成

パスワード品質構成ファイルを編集します。

sudo nano /etc/security/pwquality.conf

一般的な構成オプション:

# Minimum password length minlen = 12 # Minimum number of character classes (uppercase, lowercase, digits, special characters) minclass = 3 # Minimum number of uppercase letters ucredit = -1 # Minimum number of lowercase letters lcredit = -1 # Minimum number of digits dcredit = -1 # Minimum number of special characters ocredit = -1 # Number of characters that must differ from the old password difok = 5 # Prevent using the username as part of the password usercheck = 1 # Limit consecutive identical characters maxrepeat = 3 # Limit consecutive characters of the same class maxclassrepeat = 4 # Reject palindrome passwords palindrome = 1 # Reject common dictionary words dictcheck = 1

パスワード有効期限ポリシーの構成

# Edit global settings sudo nano /etc/login.defs
# Maximum password age (days) PASS_MAX_DAYS 90 # Minimum password age (days) PASS_MIN_DAYS 7 # Password expiration warning days PASS_WARN_AGE 14 # Minimum password length PASS_MIN_LEN 12

特定のユーザーのパスワードポリシーの設定

# Set maximum password age to 90 days sudo chage -M 90 username # Set minimum password age to 7 days sudo chage -m 7 username # Set 14-day expiration warning sudo chage -W 14 username # Immediately require password change sudo chage -d 0 username # View user password policy sudo chage -l username

パスワード履歴(古いパスワードの再利用防止)

PAM 構成を編集します。

sudo nano /etc/pam.d/common-password

pam_unix.so を含む行を見つけて、remember パラメーターを追加します。

password [success=1 default=ignore] pam_unix.so obscure use_authtok try_first_pass yescrypt remember=12

これにより、ユーザーは最後の 12 個のパスワードを再利用できなくなります。

パスワード管理ツール

コマンドラインパスワードマネージャー: pass

# Install sudo apt install pass # Initialize (requires a GPG key) gpg --gen-key pass init "your-gpg-id" # Add a password pass insert email/gmail pass insert -m server/production # multi-line mode # View a password pass email/gmail # Generate a random password pass generate web/newsite 20 # List all passwords pass ls # Search pass find gmail

KeePassXC の使用

# Install sudo apt install keepassxc # Or use snap sudo snap install keepassxc

KeePassXC は、以下をサポートする機能豊富なグラフィカル パスワード マネージャーです。

  • 暗号化されたパスワードデータベースストレージ
  • パスワードの自動入力
  • TOTP の 2 要素認証
  • ブラウザの統合
  • SSH エージェントの統合

Google 認証システム (TOTP 2FA)

インストールと初期化

# Install the PAM module sudo apt install libpam-google-authenticator # Run initialization as a regular user google-authenticator

初期化中に推奨される選択肢は次のとおりです。

Do you want authentication tokens to be time-based (y/n) y # Choose y for time-based tokens (TOTP) # A QR code will be displayed -- scan it with an authenticator app # Recommended apps: Google Authenticator, Authy, Microsoft Authenticator, FreeOTP Do you want me to update your "/home/user/.google_authenticator" file? (y/n) y Do you want to disallow multiple uses of the same authentication token? (y/n) y # Choose y to prevent token replay By default, a new token is generated every 30 seconds. Do you want to change the size of the time skew window? (y/n) n Do you want to enable rate-limiting? (y/n) y # Choose y to limit attempt frequency

表示された緊急バックアップコードは必ず保存してください。

ローカル ログインの 2FA の有効化

sudo nano /etc/pam.d/common-auth

ファイルの末尾に以下を追加します。

auth required pam_google_authenticator.so nullok

nullok パラメーターを使用すると、2FA を構成していないユーザーが通常どおりログインできるようになります。すべてのユーザーが設定されたら削除してください。

SSH ログインの 2FA の有効化

# Edit PAM SSH configuration sudo nano /etc/pam.d/sshd

追加:

auth required pam_google_authenticator.so

SSH サーバー構成を編集します。

sudo nano /etc/ssh/sshd_config
# Enable keyboard-interactive authentication KbdInteractiveAuthentication yes # Require key + TOTP dual authentication AuthenticationMethods publickey,keyboard-interactive

SSH を再起動します。

sudo systemctl restart ssh

sudo の 2FA を有効にする

sudo nano /etc/pam.d/sudo

@include common-auth の後に追加します。

auth required pam_google_authenticator.so

これには、sudo を使用するたびに確認コードが必要です。

ハードウェア セキュリティ キー (FIDO2/U2F)

サポートされているデバイス

Ubuntu 26.04 は、次のような FIDO2/U2F セキュリティ キーをサポートします。

  • YubiKey 5 シリーズ
  • Google Titan セキュリティ キー
  • Feitian ePass FIDO
  • ソロキー

インストールと構成

# Install the PAM U2F module sudo apt install libpam-u2f # Install management tools sudo apt install pamu2fcfg

セキュリティキーを登録する

# Create configuration directory mkdir -p ~/.config/Yubico # Register the first key (insert the security key and touch it) pamu2fcfg > ~/.config/Yubico/u2f_keys # Register a backup key (append mode) pamu2fcfg -n >> ~/.config/Yubico/u2f_keys

sudo のセキュリティ キーを有効にする

sudo nano /etc/pam.d/sudo

@include common-auth の前に追加します。

auth sufficient pam_u2f.so

ログイン用のセキュリティキーを有効にする

sudo nano /etc/pam.d/gdm-password

追加:

auth required pam_u2f.so

SSH のセキュリティ キーの有効化

OpenSSH 8.2+ は、FIDO2 キーをネイティブにサポートします。

# Generate a FIDO2 SSH key ssh-keygen -t ed25519-sk -C "your_email@example.com" # Or use a resident key (does not require the corresponding hardware key for the public key in .ssh/authorized_keys on the server) ssh-keygen -t ed25519-sk -O resident -C "your_email@example.com" # Deploy the public key to the server ssh-copy-id -i ~/.ssh/id_ed25519_sk.pub user@server

PAM 認証フローの構成

PAM 制御フラグについて

フラグ説明
required成功しなければなりません。障害が発生した場合は他のモジュールのチェックを継続します
requisite成功しなければなりません。失敗したらすぐに戻る
sufficient成功するとすぐに合格します。障害のチェックを継続する
optional成功または失敗は最終結果に影響しません

多要素認証の組み合わせ例

パスワード + TOTP:

# /etc/pam.d/common-auth auth required pam_unix.so auth required pam_google_authenticator.so

パスワード + セキュリティ キー (セキュリティ キーはオプション):

auth required pam_unix.so auth sufficient pam_u2f.so auth required pam_google_authenticator.so

アカウント ロックアウト ポリシー

ログイン失敗時のロックアウトの構成

sudo nano /etc/pam.d/common-auth

ファイルの先頭に以下を追加します。

auth required pam_faillock.so preauth silent deny=5 unlock_time=900 auth [default=die] pam_faillock.so authfail deny=5 unlock_time=900
sudo nano /etc/pam.d/common-account

追加:

account required pam_faillock.so

パラメータの説明:

  • deny=5: 5 回失敗するとロックされる
  • unlock_time=900: 900 秒間ロック (15 分)

ロックアウトステータスの管理

# View a user's failed attempts sudo faillock --user username # Unlock a user sudo faillock --user username --reset # View all locked users sudo faillock

ベストプラクティス

  1. 大文字、小文字、数字、特殊文字を含む 12 文字以上のパスワードを使用してください。
  2. サービスごとに異なるパスワードを使用し、パスワード マネージャーを使用してください。
  3. 2FA をサポートするすべてのサービスで 2FA を有効にします。
  4. バックアップ コードと回復キーを安全に保存します。
  5. 複数のセキュリティ キーをバックアップとして登録します。
  6. パスワードは定期的に変更します。ただし、あまり頻繁に変更しないでください (90 日ごとで十分です)。
  7. 失敗したログイン レコードを監視して、ブルート フォース攻撃を早期に検出します。