Linux 에서 비밀번호 복잡성 정책을 적용하는 방법

LinuxBeginner
지금 연습하기

소개

강력한 비밀번호 정책을 유지하는 것은 Linux 시스템을 안전하게 보호하는 데 매우 중요합니다. 이 튜토리얼에서는 Linux 비밀번호 정책의 기본 사항을 이해하고, 비밀번호 복잡성 요구 사항을 구성하며, 이러한 정책을 적용하여 Linux 환경의 전반적인 보안을 강화하는 방법을 안내합니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 중급 레벨의 실험이며 완료율은 69%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

Linux 비밀번호 정책 파일 이해

Linux 시스템은 비밀번호 정책을 관리하기 위해 여러 구성 파일을 사용합니다. 이 단계에서는 이러한 파일들을 살펴보고 비밀번호 관리에서의 역할을 이해해 보겠습니다.

비밀번호 정책 구성 파일 탐색

Ubuntu 에서 비밀번호 정책을 제어하는 주요 구성 파일을 살펴보겠습니다.

  1. 먼저, 데스크톱 환경에서 터미널 아이콘을 클릭하여 터미널을 엽니다.

  2. 기본 비밀번호 정책 설정을 포함하는 /etc/login.defs 파일을 살펴보겠습니다.

    cat /etc/login.defs | grep "^PASS_"

    다음과 유사한 출력을 볼 수 있습니다.

    PASS_MAX_DAYS   99999
    PASS_MIN_DAYS   0
    PASS_WARN_AGE   7

    이 설정은 다음을 제어합니다.

    • PASS_MAX_DAYS: 비밀번호가 유효한 최대 일수
    • PASS_MIN_DAYS: 비밀번호 변경 간의 최소 일수
    • PASS_WARN_AGE: 비밀번호 만료 전 경고 일수
  3. 또 다른 중요한 파일은 /etc/pam.d/common-password로, 비밀번호 인증을 위한 PAM (Pluggable Authentication Modules) 설정을 관리합니다.

    cat /etc/pam.d/common-password

    이 파일에는 복잡성 요구 사항을 포함하여 비밀번호 관리 방법을 구성하는 여러 줄이 포함되어 있습니다.

  4. 시스템은 pwquality 라이브러리를 사용하여 비밀번호 품질을 적용합니다. 설치되어 있는지 확인해 보겠습니다.

    dpkg -l | grep libpwquality

    설치되지 않은 경우 설치할 수 있습니다.

    sudo apt update
    sudo apt install -y libpam-pwquality
  5. 이제 비밀번호 품질 구성 파일을 살펴보겠습니다.

    cat /etc/security/pwquality.conf

    이 파일은 대부분의 줄이 #으로 주석 처리되어 있을 수 있으며, 이는 기본값이 사용되고 있음을 의미합니다.

비밀번호 정책 매개변수 이해

다음은 구성할 수 있는 주요 매개변수입니다.

  • minlen: 최소 비밀번호 길이
  • dcredit: 비밀번호의 숫자 신용도
  • ucredit: 대문자 신용도
  • lcredit: 소문자 신용도
  • ocredit: 특수 문자 신용도
  • retry: 새 비밀번호 입력 시도 횟수
  • enforce_for_root: root 사용자에 대해 이러한 정책을 적용할지 여부

이러한 매개변수는 Linux 시스템에서 비밀번호 복잡성 및 보안을 제어하기 위한 포괄적인 프레임워크를 제공합니다.

기본 비밀번호 정책 구성

이 단계에서는 /etc/login.defs 파일을 수정하여 비밀번호 만료 요구 사항을 설정함으로써 기본 비밀번호 정책을 구성합니다.

비밀번호 만료 매개변수 설정

  1. 먼저 원본 파일의 백업을 만듭니다.

    sudo cp /etc/login.defs /etc/login.defs.backup
  2. 이제 nano 를 사용하여 편집을 위해 파일을 엽니다.

    sudo nano /etc/login.defs
  3. 편집기에서 다음 매개변수를 찾습니다 (Ctrl+W 를 사용하여 검색).

    PASS_MAX_DAYS
    PASS_MIN_DAYS
    PASS_WARN_AGE
  4. 이러한 값을 변경하여 보다 안전한 비밀번호 만료 정책을 구현합니다.

    • PASS_MAX_DAYS99999에서 90으로 변경합니다 (비밀번호는 90 일 후에 만료됨).
    • PASS_MIN_DAYS0에서 7로 변경합니다 (비밀번호 변경 간 최소 7 일).
    • PASS_WARN_AGE7에서 14로 변경합니다 (비밀번호 만료 14 일 전에 사용자에게 경고).
  5. Ctrl+O 를 누른 다음 Enter 를 눌러 파일을 저장하고 Ctrl+X 로 종료합니다.

  6. 변경 사항을 확인합니다.

    cat /etc/login.defs | grep "^PASS_"

    다음과 같은 내용이 표시되어야 합니다.

    PASS_MAX_DAYS   90
    PASS_MIN_DAYS   7
    PASS_WARN_AGE   14

새 사용자에 대한 정책 테스트

이러한 정책이 어떻게 적용되는지 확인하기 위해 테스트 사용자를 만들어 보겠습니다.

  1. 새 사용자를 만듭니다.

    sudo useradd -m testuser
  2. 새 사용자의 비밀번호를 설정합니다.

    sudo passwd testuser

    메시지가 표시되면 간단한 비밀번호를 입력합니다 (이후 단계에서 강화할 예정입니다).

  3. 새 사용자에 대한 비밀번호 만료 정보를 확인합니다.

    sudo chage -l testuser

    설정에 따라 비밀번호 만료 날짜를 표시하면서 이 새 사용자에게 비밀번호 정책이 적용되었음을 확인할 수 있습니다.

이러한 변경 사항은 새 계정 또는 비밀번호가 변경될 때만 적용됩니다. 기존 계정은 수동으로 업데이트할 때까지 이전 설정을 유지합니다.

비밀번호 복잡성 요구 사항 구성

이 단계에서는 시스템에서 강력한 비밀번호를 적용하기 위해 비밀번호 복잡성 규칙을 구성합니다.

비밀번호 복잡성 규칙 설정

  1. 먼저 PAM 구성 파일의 백업을 만듭니다.

    sudo cp /etc/pam.d/common-password /etc/pam.d/common-password.backup
  2. 이제 편집을 위해 파일을 엽니다.

    sudo nano /etc/pam.d/common-password
  3. pam_pwquality.so를 포함하는 줄을 찾습니다. 다음과 유사할 수 있습니다.

    password        requisite                       pam_pwquality.so retry=3
  4. 복잡성 요구 사항을 추가하도록 이 줄을 수정합니다. 다음으로 바꿉니다.

    password        requisite                       pam_pwquality.so retry=3 minlen=12 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 enforce_for_root

    이 구성은 다음을 의미합니다.

    • minlen=12: 최소 비밀번호 길이는 12 자입니다.
    • dcredit=-1: 최소 1 개의 숫자가 필요합니다.
    • ucredit=-1: 최소 1 개의 대문자가 필요합니다.
    • lcredit=-1: 최소 1 개의 소문자가 필요합니다.
    • ocredit=-1: 최소 1 개의 특수 문자가 필요합니다.
    • enforce_for_root: 이러한 정책을 root 사용자에게도 적용합니다.
  5. Ctrl+O 를 누른 다음 Enter 를 눌러 파일을 저장하고 Ctrl+X 로 종료합니다.

pwquality.conf 에서 추가 매개변수 구성

  1. 이제 추가 제어를 위해 pwquality 구성 파일을 수정해 보겠습니다.

    sudo cp /etc/security/pwquality.conf /etc/security/pwquality.conf.backup
    sudo nano /etc/security/pwquality.conf
  2. 다음 줄의 주석을 해제 (시작 부분의 ## 제거) 하고 수정하거나, 존재하지 않는 경우 추가합니다.

    minlen = 12
    dcredit = -1
    ucredit = -1
    lcredit = -1
    ocredit = -1
    difok = 4
    enforce_for_root = 1

    difok = 4 매개변수는 이전 비밀번호와 다른 문자가 최소 4 개 이상 필요합니다.

  3. Ctrl+O 를 누른 다음 Enter 를 눌러 파일을 저장하고 Ctrl+X 로 종료합니다.

새 비밀번호 복잡성 정책 테스트

  1. 테스트 사용자의 비밀번호를 변경하여 새 정책을 테스트해 보겠습니다.

    sudo passwd testuser
  2. password123과 같은 간단한 비밀번호를 입력해 보십시오. 시스템은 복잡성 요구 사항을 충족하지 못하여 거부해야 합니다.

  3. 이제 Secure@Password123과 같이 모든 요구 사항을 충족하는 복잡한 비밀번호를 시도해 보십시오.

    모든 것을 올바르게 구성했다면 시스템이 이 비밀번호를 허용해야 합니다.

복잡성 요구 사항은 사용자가 강력한 비밀번호를 생성하도록 보장하여 공격자가 비밀번호를 추측하거나 크래킹하기 어렵게 만듭니다.

비밀번호 기록 제어 구현

이 단계에서는 사용자가 최근 비밀번호를 재사용하는 것을 방지하기 위해 비밀번호 기록 제어를 구성합니다.

비밀번호 기록 구성

  1. 먼저, 아직 수행하지 않았다면 PAM 구성 파일의 백업을 만듭니다.

    sudo cp /etc/pam.d/common-password /etc/pam.d/common-password.backup2
  2. 편집을 위해 파일을 엽니다.

    sudo nano /etc/pam.d/common-password
  3. pam_unix.so를 포함하는 줄을 찾습니다. 다음과 유사할 수 있습니다.

    password        [success=1 default=ignore]      pam_unix.so obscure use_authtok try_first_pass sha512
  4. remember 매개변수를 추가하도록 이 줄을 수정합니다. 줄 끝에 remember=5를 추가합니다.

    password        [success=1 default=ignore]      pam_unix.so obscure use_authtok try_first_pass sha512 remember=5

    이렇게 하면 사용자가 가장 최근의 5 개의 비밀번호를 재사용하는 것을 방지합니다.

  5. Ctrl+O 를 누른 다음 Enter 를 눌러 파일을 저장하고 Ctrl+X 로 종료합니다.

비밀번호 기록 작동 방식 이해

remember=5 매개변수는 시스템에 각 사용자의 마지막 5 개 비밀번호의 해시를 저장하도록 지시합니다. 사용자가 비밀번호를 변경하려고 시도하면 시스템은 새 비밀번호를 저장된 이러한 해시와 비교하여 재사용되지 않도록 합니다.

비밀번호 기록은 /etc/security/opasswd 파일에 저장됩니다. 이 파일이 있는지 확인해 보겠습니다.

ls -la /etc/security/opasswd

이 파일이 존재하지 않으면, 새 정책이 적용된 상태에서 첫 번째 사용자가 비밀번호를 변경할 때 자동으로 생성됩니다.

비밀번호 기록 테스트

  1. 테스트 사용자의 비밀번호를 여러 번 변경하여 기록 메커니즘이 작동하는지 확인해 보겠습니다.

    sudo passwd testuser
  2. Complex@Password1과 같은 복잡한 비밀번호를 설정합니다.

  3. 이제 즉시 다시 변경해 보십시오.

    sudo passwd testuser
  4. 동일한 비밀번호를 다시 설정해 보십시오. 시스템은 기록 정책으로 인해 거부해야 합니다.

  5. 다른 비밀번호로 몇 번 더 시도한 다음 이전 비밀번호를 재사용해 보십시오. 가장 최근의 5 개 비밀번호는 재사용할 수 없음을 알 수 있습니다.

이 비밀번호 기록 메커니즘은 비밀번호 재사용을 방지하여 또 다른 보안 계층을 추가합니다. 이는 일반적인 보안 취약점입니다.

기존 사용자에게 비밀번호 정책 적용

이 마지막 단계에서는 새로운 비밀번호 정책을 기존 사용자에게 적용하고 사용자 비밀번호 정보를 관리하는 방법을 배웁니다.

비밀번호 만료 관리 이해

/etc/login.defs에서 비밀번호 정책을 변경하면 새 설정은 새로 생성된 사용자에게만 적용되거나 기존 사용자를 수동으로 업데이트할 때만 적용됩니다. 기존 사용자를 관리하는 방법을 살펴보겠습니다.

  1. 먼저, 사용자 계정의 현재 상태를 확인합니다.

    sudo chage -l labex

    이렇게 하면 현재 사용자에 대한 비밀번호 만료 정보가 표시됩니다.

  2. 다음 로그인 시 사용자가 비밀번호를 변경하도록 강제하려면:

    sudo chage -d 0 testuser

    이렇게 하면 마지막 비밀번호 변경 날짜가 0 으로 설정되어 다음 로그인 시 비밀번호 변경이 강제됩니다.

  3. 비밀번호 만료 날짜를 수동으로 설정하려면:

    sudo chage -E $(date -d "90 days" +%Y-%m-%d) testuser

    이렇게 하면 계정 만료 날짜가 오늘부터 90 일로 설정됩니다.

기존 사용자에 대한 최대 비밀번호 사용 기간 설정

최대 비밀번호 사용 기간 정책을 기존 사용자에게 적용하려면:

sudo chage -M 90 testuser

이렇게 하면 사용자의 최대 비밀번호 사용 기간이 90 일로 설정됩니다.

기존 사용자에 대한 최소 비밀번호 사용 기간 설정

최소 비밀번호 사용 기간 정책을 기존 사용자에게 적용하려면:

sudo chage -m 7 testuser

이렇게 하면 사용자의 최소 비밀번호 사용 기간이 7 일로 설정됩니다.

기존 사용자에 대한 비밀번호 만료 경고 설정

비밀번호 만료 경고 정책을 기존 사용자에게 적용하려면:

sudo chage -W 14 testuser

이렇게 하면 사용자의 비밀번호 만료 경고 기간이 14 일로 설정됩니다.

사용자 비밀번호 정보 보기

여러 명령을 사용하여 사용자의 비밀번호 정보를 확인할 수 있습니다.

  1. 모든 로컬 사용자 계정을 봅니다.

    cat /etc/passwd
  2. 특정 사용자의 비밀번호 상태를 확인합니다.

    sudo passwd -S testuser
  3. 특정 비밀번호 설정을 가진 사용자를 나열합니다.

    awk -F: '($3 >= 1000) {print $1}' /etc/passwd

    이렇게 하면 시스템의 모든 일반 사용자 (UID >= 1000) 가 나열됩니다.

모든 사용자에게 정책 적용

새로운 비밀번호 정책을 시스템의 모든 일반 사용자에게 적용하려면 간단한 스크립트를 사용할 수 있습니다. 다음은 예시입니다.

for user in $(awk -F: '($3 >= 1000) && ($3 < 60000) {print $1}' /etc/passwd); do
  echo "Updating password policy for user: $user"
  sudo chage -M 90 -m 7 -W 14 $user
done

이 스크립트는 새로운 비밀번호 만료 정책으로 모든 일반 사용자를 업데이트합니다.

이러한 정책을 기존 사용자에게 적용하면 전체 시스템에서 일관된 비밀번호 보안을 보장할 수 있습니다.

요약

이 랩에서는 Linux 에서 강력한 비밀번호 정책을 구성하고 적용하는 방법을 배웠습니다. 다음을 수행했습니다.

  1. 비밀번호 정책을 제어하는 주요 구성 파일을 탐색했습니다.
  2. 정기적인 비밀번호 업데이트를 보장하기 위해 기본적인 비밀번호 만료 정책을 구성했습니다.
  3. 안전한 비밀번호를 적용하기 위해 강력한 비밀번호 복잡성 요구 사항을 구현했습니다.
  4. 비밀번호 재사용을 방지하기 위해 비밀번호 기록 제어를 설정했습니다.
  5. 기존 사용자에게 비밀번호 정책을 적용하는 방법을 배웠습니다.

이러한 비밀번호 정책 구성은 안전한 Linux 환경을 유지하는 데 필수적입니다. 강력한 비밀번호 요구 사항, 정기적인 비밀번호 순환을 구현하고 비밀번호 재사용을 방지함으로써 무단 액세스 및 잠재적인 침해에 대한 시스템의 보안 태세를 크게 개선했습니다.

효과적인 비밀번호 정책은 포괄적인 보안 전략의 한 측면일 뿐임을 기억하십시오. 정기적인 시스템 업데이트, 적절한 사용자 관리 및 지속적인 보안 모니터링과 같은 다른 보안 조치와 결합해야 합니다.