Skip to Content

비밀번호 및 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-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 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 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 보안 키를 지원합니다.

  • 유비키 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. 실패한 로그인 기록을 모니터링하여 무차별 대입 공격을 조기에 감지합니다.