비밀번호 및 2FA
강력한 비밀번호 정책과 2단계 인증(2FA)은 사용자 계정을 보호하기 위한 두 가지 중요한 방어선입니다. 이 문서에서는 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 OTP(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.sosudo를 사용할 때마다 확인 코드가 필요합니다.
하드웨어 보안 키(FIDO2/U2F)
지원되는 장치
Ubuntu 26.04은 다음과 같은 FIDO2/U2F 보안 키를 지원합니다.
- 유비키 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일마다 충분함).
- 실패한 로그인 기록을 모니터링하여 무차별 대입 공격을 조기에 감지합니다.