PAM
- 사용자가 시스템의 서비스를 사용하는데는 사용자의 신원을 확인하는 인증(authentication)이 필요
- 우분투에서는 많은 프로그램이 중앙 집중화된 인증 기법을 사용
- 이 기법이 바로 PAM
- PAM은 'pluggable authentication modules'의 약자로 삽입형 인증 모듈이라고 번역할 수 있음
- PAM은 모듈 방식으로 구성되어 있어 시스템 관리자가 필요에 따라
인증 모듈을 추가, 삭제, 편집할 수 있음
PAM 설정 파일 |
- PAM 모듈은 '/etc/pam.d' 디렉터리에 설정 파일을 가지고 있음 - 설정 파일은 각 서비스별로 존재 - 'sshd'나 'samba', 'crond', 'vsfptd' 등 서비스에 대한 설정 파일도 있음을 확인 - 패키지가 설치되면서 서비스 이름과 같은 이름으로 PAM 설정 파이르 '/etc/pma.d' 디렉터리에 생성한 것
|
PAM 설정 파일 형식 - <모듈 종류> <제어 플래그> <모듈 이름> <모듈 인자> |
1) 모듈 종류 - auth : * 사용자를 인증하는데 사용 * 예를 들어 암호가 정확한지를 확인 * 그룹 지정에도 적용 - account : * 접근이 허용되는지를 확인 * 사용자 계정이 유효한지 또는 사용자가 해당 날자에 로그인할 수 있는지를 확인 - password : * 사용자 계정의 암호를 바꾸는데 사용 - session : * 사용자의 세션을 설정하고 관리 * 사용자의 홈 디렉터리를 마운트하는 것과 같이 접근을 허용하는데 필요한 부가적인 작업을 수행 2) 제어 플래그 - 모든 PAM 모듈은 수행 후에 성공이나 실패를 생성 - 제어 플래그는 특정 모듈의 성공과 실패를 어떻게 처리할 것인지를 알려줌 - required : * 인증을 계속하기 위해 반드시 성공해야함. * 실패하면 사용자는 다른 모든 모듈의 테스트가 끝날 때까지 결과를 받지 못 함. - requisite : * 인증을 계속하기 위해 반드시 성공해야함. * 그러나 만약 이 지점에서 실패하면 사용자는 실패에 대한 메시지를 즉시 받음 - sufficient : * 실패하면 이 모듈의 결과는 무시됨 * 만약 이 모듈이 성공하고 앞선 required 모듈 중 실패가 없으면 인증 성공을 리턴 - optional : * 해당 인터페이스에 다른 모듈이 없는 경우에만 성공과 실패가 중요 - include : * 인자로 지정된 설정 파일의 내용을 모두 포함 - substack : * include와 같이 인자로 지정된 설정 파일의 내용을 모두 포함하나 서브 스택의 동작 결과에 따라 나머지 모듈을 통과하지 않는다는 점이 다름
3) 모듈 이름 - 모듈 이름에는 삽입 가능한(pluggable) 모듈의 이름을 지정 - 예전 버전에서는 모듈의 절대 경로를 사용 - 현재는 PAM 모듈이 '/lib/i386-linux-gnu/security' 디렉터리에 위치 - 디렉터리 이름은 생략하고 모듈 이름만 지정 - PAM 모듈의 위치는 리눅스 배포판에 따라 다르므로 위치를 잘 확인해야함 4) 모듈 인자 - 모듈인자는 인증 과정에서 정보가 필요한 일부 모듈에 정보를 전달 |
PAM 파일의 예 1 #%PAM_1.0 2 auth required pam_securetty.so 3 auth required pam_unix.so null 4 auth required pam_nologin.so 5 account required pam_unix.so 6 password required pam_cracklib.so retry=3 7 password required pam_unix.so shadow null use_authok 8 session required pam_unix.so |
1) - 1행은 주석으로 #로 시작하는 문장 2) - PAM 파일에는 같은 모듈 인터페이스를 가진 모듈이 여러 개 설정될 수 있음 - pam_securetty.so : * 만약 사용자가 root로 로그인하려고 할 때 해당 터미널이 '/etc/securetty' 파일에 등록되어 있어야함 * 터미널이 등록되어 있지 않으면 'Login incorrect' 메시지가 출력되고 로그인에 실패 - pam_unix.so nullok : * 사용자에게 암호를 입력하도록 프롬프르트를 출력 * 입력한 암호가 '/etc/shadow'에 등록된 암호와 같은지를 확인 * nullok 인자는 pam_unix.so 모듈이 빈 암호도 허용한다는 것을 의미 - 첫 번째 인증 모듈에서 실패했다고 하더라도 모두 실행 - 이는 사용자가 어느 단계에서 인증에 실패했는지를 모르게 하기 위함 - 해커는 시스템에 침입하기 위해 이런 사소한 정보도 활용할 수 있기 때문 3) - 5행의 account required pam_unix.so 는 계정의 정상 여부를 확인하는데 필요한 모듈 - pam_unix.so 모듈은 계정이 만료되지는 않았는지, 정해진 기간에 암호를 변경했는지 등을 확인 4) - 6행의 password required pam_cracklib.so retry=3 은 만약 암호가 만료된 경우 pam_cracklib.so 모듈이 새 암호를 입력하도록 프롬프트를 출력 - 새로 입력한 암호가 사전 기반으로 쉽게 해독될 수 있는 것인지를 검사 - retry=3 은 보다 강력한 암호를 만들 수 있는 세 번의 기회를 주는 것 5) - 7행의 password required pam_unix.so shadow null user_authok는 만약 프로그램이 사용자의 암호를 바꾸려면 반드시 pam_unix.so 모듈의 password 인터페이스를 사용하도록 하는 것 - shadow 인자는 사용자의 암호를 변경할 때 shadow 암호를 생성하도록 함 - nullok는 암호를 변경할 때 빈 암호를 허용하는 것 - use_authok 인자는 해당 모듈에서 패스워드 프롬프트를 출력하지 않고, 안선 모듈에서 입력받은 암호를 받아들이도록 함 - 새 암호는 pam_cracklib.so를 통과한 보다 강력한 암호를 사용 6) - 8행의 session required pam_unix.so 는 전체 세션을 관리하기 위해 pam_unix.so 모듈을 사용한다는 것을 나타냄 - '/var/log/secure' 파일에 로그 기록을 남김 |
'OS > Linux - Ubuntu' 카테고리의 다른 글
[Linux - 리눅스 / Ubuntu - 우분투] 시냅틱 패키지 관리자 - synaptic (0) | 2015.05.13 |
---|---|
[Linux - 리눅스 / Ubuntu - 우분투] 리눅스 보안 - 요약 (0) | 2015.05.13 |
[Linux - 리눅스 / Ubuntu - 우분투] 보안 관리 도구(1) - NMap (0) | 2015.05.12 |
[Linux - 리눅스 / Ubuntu - 우분투] 방화벽 관리 - ufw, gufw (0) | 2015.05.12 |
[Linux - 리눅스 / Ubuntu - 우분투] 시스템 로그 - /var/log (0) | 2015.05.11 |