[Born2beroot] 5. 비밀번호 체계 도입

Yejin Kim·2022년 5월 8일
0

42 cursus

목록 보기
5/20

🔒 리눅스 비밀번호 체계 도입

default 비밀번호 정책 변경

  • vim /etc/login.defs
    다음과 같이 비밀번호 정책을 변경해 준다
  • PASS_MAX_DAYS
    30일로 변경하여 비밀번호가 30일마다 만료되도록 함
  • PASS_MIN_DAYS
    비밀번호를 최소 2일은 사용해야 변경할 수 있도록 함
  • PASS_WARN_AGE
    비밀번호 만료 7일 전에 사용자가 경고 메세지를 받을 수 있도록 함

PAM (Plaggable Authentication Module) 모듈을 사용해서 나머지 정책들도 설정

  1. sudo apt install libpam-cracklib
    모듈 설치를 먼저 진행
  2. vim /etc/pam.d/common-password

    아까 설치한 비밀번호 설정 모듈이 깔려 있음을 확인할 수 있다.
    기본적으로 정해져 있는 정책은 다음과 같다.
    • retry=3
      암호 입력을 횟수 3회로 설정
    • minlen=8
      암호 최소 길이를 8로 설정
    • difok=3
      기존 패스워드와 달라야 하는 문자의 수를 3으로 설정

위의 정책에서 수정 및 정책 추가를 하여 서브젝트의 요구사항을 만족시킨다.

  • minlen=10
    암호 최소 길이를 10으로 설정
  • difok=7
    이전 비밀번호에 포함되지 않는 문자를 최소 7개 이상 포함하도록 설정
  • ucredit=-1
    대문자 1개 이상 포함하도록 설정
  • dcredit=-1
    숫자 1개 이상 포함하도록 설정

    ()credit=N에서 N이 양수인지 음수인지에 따라 의미가 다름

    • N이 양수
      최대 N개 포함.
      단 minlen(비밀번호의 최소 길이)가 정해진 경우 (minlen 값 + N) 만큼 포함할 수 있음)
    • N이 음수
      최소 N개 포함
  • reject_username
    비밀번호에 유저명이 포함되지 않도록 설정
  • enforce_for_root
    루트 계정에도 해당 규칙을 적용하도록 설정

    루트 계정 비밀번호 변경 시 이전 비밀번호를 물어보지 않음
    따라서 이전 패스워드와의 유사도를 체크하지 않음
    → 서브젝트에서의 요구 사항을 예외처리 하지 않아도 자동적으로 적용 가능

  • maxrepeat=3
    같은 문자가 3번 이상 연속해서 나오지 않도록 설정

기존 계정에 변경된 정책 반영

기존에 존재하는 계정에는 변경된 정책이 반영되지 않음을 확인할 수 있다.

  • chage -l <사용자명>
    위 명령어로 해당 사용자 계정의 암호 정보를 알 수 있다.

yeji라는 계정을 새로 만들고 chage -l yeji를 해보면

위와 같이 정해준 정책이 잘 반영되어 있음을 확인할 수 있다.
하지만 기존에 있던 계정인 yejikim의 암호 정보는

위와 같이 새로 정해진 정책이 아닌 이전 정책이 여전히 반영되고 있다는 것을 알 수 있다.
따라서 정책이 반영되기 이전 계정인 root와 yejikim 계정의 비밀번호 정책을 chage 명령어로 별도 반영한다.

chage 명령어


서브젝트 요구사항에서는 -M, -m, -W 옵션을 요구하고 있으므로 이 옵션들을 반영시켜준다.

다시 확인해보면 yejikim과 root 계정에도 잘 반영이 되고 있음을 확인할 수 있다.

‼️ 동료 평가를 진행하며 알게된 것 ‼️
비밀번호 정책을 설정하기 위한 모듈 PAM에 내가 직접 설정하지 않은 기본적인 정책이 걸려있기도 하다.
평가를 진행하면서 내가 설정한 비밀번호 정책에 어긋나지 않는 Korea12345 로 비밀번호를 정하려고 했는데 불가능하다는 에러가 떠서 Fail을 받을 뻔했으나 🥲
https://unix.stackexchange.com/questions/121087/why-is-this-random-password-flagged-saying-it-is-too-simplistic-systematic
위의 link에서 알 수 있듯이 연속적인 알파벳이나 숫자에 제한이 기본적으로 걸려있다!!


참고 사이트

profile
The World Is My Oyster 🌏

0개의 댓글