사용자 관리는 리눅스 시스템 관리에서 중요한 일이다. 사용자 관리에 관련해서 많은 면이 있는데 강력한 비밀번호 정책이 그중에 하나다. 비밀번호를 강력하게 유지한다면 비인가자의 시스템 접근을 막을 수 있다. 리눅스의 디폴트 정책은 이미 안전하다고 할수 있지만, 조금 더 안전하도록 더 변경할 필요가 있다. (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의 계산 방법
- 모든 숫자(대문자, 소문자, 특수문자 / 이하는 숫자로 씀) 는 1포인트를 더하지만 오직 dcredit (ucredit, lcredit, ocredit) 까지만 더한다.
- 즉, len(password) + min(dcredit, len(password_digit))을 비밀번호 길이 (minlen)과 비교하는 방법으로 계산한다
- 자세한 코드는 아래 링크를 참고 :
https://www.networkworld.com/article/2726217/how-to-enforce-password-complexity-on-linux.html
//크레딧 계산하는 수도 코드
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));
'정보보안' 카테고리의 다른 글
[사이버위협] 사이버위협 경보 단계 (0) | 2020.02.25 |
---|---|
[스텔스 스캔] ACK 스캔 (0) | 2019.10.17 |
[윈도우] 윈도우 운영체제의 관리 공유 (Administrative shares) (0) | 2019.10.08 |
TCP 세션 하이제킹 (0) | 2019.08.21 |
NAT (Network Address Translation) (0) | 2019.08.20 |