패스워드 관리 정책 / PAM을 이용한 인증관리

패스워드 정책

  • 대/소문자, 숫자, 특수문자를 혼용하여 8개 글자 이상의 패스워드를 사용
  • 동일 문자를 연속 4회 이상 사용 금지
  • 패스워드 히스토리를 관리하여 2~3개 이상의 동일 패스워드 사용금지
  • 패스워드 변경주기를 설정(패스워드 유효기간을 90일 이하로 설정)
  • 사전에 나오는 쉬운 단어나 이름은 패스워드로 사용하지 못하도록 설정
  • 기본 설정된 패스워드는 사용하지 못하도록 설정
  • 초기 부여된 패스워드는 사용자 최초 접속 시 변경하도록 설정

 

공격자 ==> crack(8글자 이상 + 숫자 + 특수문자)

 

패스워드 정책 설정 파일

Cent OS에서 실행합니다.

[root@localhost ~]# cd /etc/security
[root@localhost security]# ls -l

 

[root@localhost security]# nano pwquality.conf

 

dc redit = -1 => 숫자가 최소 1글자는 있어야 함

dc redit = 1 => '숫자 하나만 들어가면 돼'라는 의미

 

패스워드 기본값 설정 파일

  • 사용자 추가할 때 참고하는 메인 디렉터리
  • 패스워드 관련 설정(최대 사용기한, 최소 사용기한, 최소 길이, 만기 이전 경고 주는 날짜)
  • UID/GID의 최솟값 및 최댓값
  • 홈 디렉터리 생성 여부
  • 기본 umask 값
  • 패스워드에 적용되는 암호화 알고리즘 등이 정의되어 있는 파일

 

[root@localhost ~]# nano /etc/login.defs

 

/etc/shadow의 기본값은 어디에서 설정될까? 바로 이 파일에서 가져온 것입니다.

 

 

앞으로 생성하는 계정들의 default 값을 바꾸고 싶으면 이 부분을 수정하면 됩니다. 

 

 

'시스템 계정은 1~999, 일반계정은 1000번 이상이다'라는 것을 지정하는 곳도 이 파일입니다.

 

PAM을 이용한 인증관리

PAM은 중앙 집중형 인증 시스템입니다. 

 

PAM의 환경설정 파일에 들어가 보겠습니다.

[user@localhost 바탕화면]$ cd /etc/pam.d
[user@localhost pam.d]$ ls

 

[user@localhost pam.d]$ cat su

 

su 명령어는 관리자, 일반사용자 모두 사용가능하고, 로컬/원격 모두 사용가능합니다. 이러한 su의 보안정책을 모두 여기에 넣어놓은 것입니다. 

 

관리자 root는 로컬로 다이렉트로 들어가면 안 됩니다. 로컬이든 원격이든 관리자 ID로 로그인하는 것은 막아야 합니다. 관리자가 드러나면 위험하다고 판단하기 때문입니다. 

 

[실습1] 계정 root로 콘솔 로그인 막기

[root@localhost pam.d]# cat gdm-password

 

인증정책은 사용자인증, 패스워드 정책, 계정 정책, 사용자별 관련 프로세스 연동 정책이 있습니다. 

 

[root@localhost pam.d]# nano gdm-password

[내용입력]

auth required pam_succeed_if.so uid >= 1000

입력

=> pam_succed_if.so : UID가 1000일 경우에만 true 값을 반환하는 모듈 실패 시 아래 라인 실행

실행화면

 

root는 원래 로그인을 못하는데 왜 password를 물어보는 창에서 인증실패가 나올까?? 대부분 비밀번호가 틀려서 로그인이 안되었을 것이라 생각합니다. 

 

PAM을  설정 파일 구성

 

#1 Type

- 어떠 타입의 인증이 사용될 것인지를 알려주는 항목

#2 Control

- PAM이 무엇을 해야할지를 알려줌 

=> x는 예를 들어, auth required pam_succeed_if.so uid >= 1000 이 부분에서 pam_succeed_if.so uid >= 1000 값이 false일 때

=> o는 true일 때를 뜻한다.

 

[/etc/pam.d/system-auth : 로컬 로그인의 인증 설정]

위의 그림에서 auth required pam_succeed_if.so uid >= 1000 이 부분을 보면,

이것이 실행되는 방식은 pam_succeed_if.so uid >= 1000 이 값이 true일수도 있고 false일수도 있습니다. 이 값이 true라면 그때 required가 실행됩니다. 

현재 auth 정책이 5개 걸려있습니다. 첫 번째(auth required)가 false가 오면, 그다음 인증을 받습니다. (표랑 같이 봐)

sufficient는 성공일 경우 다음 실행을 하지 않습니다. 실패할 경우 다음을 실행합니다.