パスワードと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-passwordpam_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 gmailKeePassXC の使用
# Install
sudo apt install keepassxc
# Or use snap
sudo snap install keepassxcKeePassXC は、以下をサポートする機能豊富なグラフィカル パスワード マネージャーです。
- 暗号化されたパスワードデータベースストレージ
- パスワードの自動入力
- 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 nulloknullok パラメーターを使用すると、2FA を構成していないユーザーが通常どおりログインできるようになります。すべてのユーザーが設定されたら削除してください。
SSH ログインの 2FA の有効化
# Edit PAM SSH configuration
sudo nano /etc/pam.d/sshd追加:
auth required pam_google_authenticator.soSSH サーバー構成を編集します。
sudo nano /etc/ssh/sshd_config# Enable keyboard-interactive authentication
KbdInteractiveAuthentication yes
# Require key + TOTP dual authentication
AuthenticationMethods publickey,keyboard-interactiveSSH を再起動します。
sudo systemctl restart sshsudo の 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_keyssudo のセキュリティ キーを有効にする
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.soSSH のセキュリティ キーの有効化
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@serverPAM 認証フローの構成
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=900sudo 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ベストプラクティス
- 大文字、小文字、数字、特殊文字を含む 12 文字以上のパスワードを使用してください。
- サービスごとに異なるパスワードを使用し、パスワード マネージャーを使用してください。
- 2FA をサポートするすべてのサービスで 2FA を有効にします。
- バックアップ コードと回復キーを安全に保存します。
- 複数のセキュリティ キーをバックアップとして登録します。
- パスワードは定期的に変更します。ただし、あまり頻繁に変更しないでください (90 日ごとで十分です)。
- 失敗したログイン レコードを監視して、ブルート フォース攻撃を早期に検出します。