사용자 관리는 리눅스 시스템 관리에서 중요한 일이다. 사용자 관리에 관련해서 많은 면이 있는데 강력한 비밀번호 정책이 그중에 하나다. 비밀번호를 강력하게 유지한다면 비인가자의 시스템 접근을 막을 수 있다. 리눅스의 디폴트 정책은 이미 안전하다고 할수 있지만, 조금 더 안전하도록 더 변경할 필요가 있다. (pwgen)

/etc/login.defs

기본(default) 비밀번호 항목을 지정하는 파일이다. 

  • PASS_MAX_DAYS : 비밀번호를 사용할 수 있는 최대 일 수
  • PASS_MIN_DAYS : 비밀번호를 바꾸는 사이의 최소 일 수
  • PASS_MIN_LEN : 비밀번호 최소 길이
  • PASS_WARN_AGE : 비밀번호 만료 전 경고 하는 날의 수

 

etc/pam.d/system-auth

PAM (Plaggable Authentication Module) 모듈을 사용해서 인증할 때 참조된다. 아래와 같이 설정 할 수 있다

password	requisite	pam_cracklib.so try_first_pass retry=4 minlen=12
  • difok : 새로운 암호와 이전 암호의 유사성 (기본값은 10 또는 암호 크기의 1/2 중 작은 값)
  • retry: 새 패스워드를 물어보는 횟수
  • unlock_time: 실패한 접근 후에 몇초 후에 접근을 허용할지에 대한 설정, 사용자가 특정 최대 횟수의 로그인 시도를 실패 한 후 계정이 잠귀었을 때 사용한다
  • deny: 몇번의 계정 접근 실패를 허용 할 지 여부, n번 패스워드 실패시 계정 잠금을 한다.
  • reset: 실패 횟수 안에서 로그인 하면 기존의 실패 횟수를 재설정 할 지 여부
  • no magic root: root 패스워드 실패시 횟수 기록만 하고 실제로 계정을 잠그지 않음
  • minlen: 새 패스워드의 최소 크기에 1을 더한 크기이다. 새 패스워드에 사용된 문자열의 길이 외에 각 문자 종류(숫자, 대문자, 소문자, 특수문자)를 사용한 것에 대해 각각 크레디트를 준다.
    ( 예 : minlen=12 일 경우, abcdefg01! (10자) 가 허용 된다. 왜냐면, 소문자 사용 1크레딧, 숫자 사용 1크래딧, 특수문자 사용 1크레딧을 얻었으므로, 총 문자의 길이는 12-3=9 자 이상이면 가능하다)
  • dcredit: 숫자가 가질수 있는 크레디트의 값의 최대값, 만약 패스워드에 N개 이하의 숫자를 사용했다면 사용된 숫자의 개수가 현재 정의된 minlen 값을 계산하는데 크레디트 값으로 적용한다. / 0보다 작을 경우, 비밀번호에 포함하여야 하는 숫자 문자의 수를 의미한다 (디폴트 : 1)
  • ucredit: 대문자가 가질수 있는 크레디트 값의 최대 값
  • lcredit: 소문자가 가질수 있는 크레디트 값의 최대 값
  • ocredit: 특수문자(앞서 정의된 숫자, 대문자 소문자를 제외한 나머지 문자)가 가질수 있는 크레디트 값의 최대 값 (각 항목에 -1을 주면 해당하는 문자를 포함시켜야 함)

 

credit의 계산 방법

//크레딧 계산하는 수도 코드
if (N > 0) :
    totalCredit += min(dcredit, len(password_digit)) 
if (N < 0) :  
    if (-credit < len(password_ditig) 
    	: return false
    totalCredit += min(-dcredit , len(password_ditig)); 

 

+ Recent posts