리눅스마스터1급 : 시스템 보안 관련 유틸리티 및 명령어 : PAM
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,247 조회
- 0 추천
- 목록
본문
리눅스마스터1급 : 시스템 보안 관련 유틸리티 및 명령어 : PAM
현재 리눅스 배포판에서 사용자 인증방식은 대부분이 PAM인증 방식을 사용한다.
과거 리눅스의 경우 /etc/passwd의 두 번째 필드를 읽어 거기에 salt를 붙혀 암호화를 하여 사용하였다.
그리고 사용자의 권한은 UID에 따라 서비스의 권한을 부여 받는다.
이러한 전통적인 방식은 네트워크의 속도가 빨라지고 시스템의 처리속도 및 분산 처리가 널리 퍼지면서 관리자와 어플리케이션 개발자에게는 많은 문제점을 야기 하며 안전하게 여겨졌던 전통적인 인증방식에 많은 취약점 및 문제점이 발견되면서 대안을 찾기 시작했으며 이렇게 탄생한 것이 PAM이다.
PAM은 사용자 정보의 저장 방법과 관계없이 어플리케이션들이 투명하게 사용자를 인증 할 수 있도록 해주며, PAM의 명칭에서도 보여주는 것처럼 인증 관련 모듈들로 구성이되어 권한을 차단, 부여, 인증 시 경고, 인증 권한 해지 등의 모듈들의 조합으로 다양한 형태로 구성 할 수 있다
① PAM의 설정 파일 위치
PAM을 구성하는 설정파일은 크게 2가지가 있다.
/etc/pam.d/ 아래에 서비스명 형태로 파일을 생성하여 설정하는 방식과 /etc/pam.conf 파일에 설정하는 방식이 있으며 이 두 가지 방식이 혼용하여 사용되는 경우도 있어 PAM설정을 변경하거나 확인할 때에는 이 두가지 모두 확인을 해봐야 한다.
② /etc/pam.d 사용 방법
|
|
|
| [root@sulinux pam.d]# cd /etc/pam.d/ [root@sulinux pam.d]# ls atd login runuser-l authconfig neat sabayon authconfig-gtk newrole screen authconfig-tui other secure-mcserv chfn passwd setup chsh pirut smtp config-util pm-hibernate smtp.sendmail crond pm-powersave sshd cvs pm-suspend su dateconfig pm-suspend-hybrid sudo eject poweroff sudo-i ekshell ppp su-l ..... |
|
|
|
|
위에서 보는 바와 같이 인증관련 명령이나 서비스에 따라 파일이 생성되어있다.
예를 들어 login에 관련된 PAM설정들을 확인해 보자.
|
|
|
| [root@sulinux pam.d]# cat login #%PAM-1.0 auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so auth include system-auth account required pam_nologin.so account include system-auth password include system-auth # pam_selinux.so close should be the first session rule session required pam_selinux.so close session optional pam_keyinit.so force revoke session required pam_loginuid.so session include system-auth session optional pam_console.so # pam_selinux.so open should only be followed by sessions to be executed in the user context session required pam_selinux.so open ..... |
|
|
|
|
위의 내용만으로는 이해하기가 힘들 것이다.
우선은 토큰구성에 대해 살펴보자.
③ 문법 구성
∙/etc/pam.d에서 구성
|
|
|
| module-type control-flag module-path arguments auth required pam_unix.so nulok |
|
|
|
|
∙pam.conf에서 구성
|
|
|
| service module-type control-flag module-path arguments login auth required pam_unix.so nulok |
|
|
|
|
④ 구성 토큰
ⓐ module-type : 어떤 형태로 인증을 할 것인지 정의한다.
같은 형식의 모듈이 여러가지가 사용될수 있으며 사용자 인증에 대한 다양한 요구사상을 충족 시킬 수 있다.
module-type은 4가지 형식을 지원한다.
∙auth : 해당 모듈의 경우 크게 두가지 인증방식을 가지고 있으며 첫 번째는 패스워드를 인증하는 방식이며 다른 하나는 자격을 증명하는 것이다.
자격을 증명한다는 것은 스마트카드등을 이용한 인증처럼 다양한 형태의 인증을 제공한다.
∙account : 인증이 아닌 계정관리를 수행하는 모듈이다.
시스템의 수용량이나 자원량 또는 위치에 따라 서비스에 접근이 허용되는지 패스워드를 사용가능 한지 결정한다.
∙session : 해당 모듈의 경우 인증 전후에 필요한 작업들을 지정한다.
홈디렉토리의 마운트/언마운트 , 로그인/로그아웃 사용자에게 제공하는 서비스등에 대한 제한을 한다.
∙password : 사용자가 그들의 인증을 변경하기 위한 방법을 제공한다.
일반적으로 이 방법은 패스워드이다.
ⓑ control-flag : control-flag는 성공 또는 실패 결과에 따라 어떻게 반응을 할지를 결정한다.
∙required : 해당인증이 성공하기 위해서는 지시된 모듈타입의 성공이 필수적으로 필요하다는 것을 의미한다.
다른 모듈들이 실행되기 전까지는 결과를 알 수 없다.
∙requisite : required 와 비슷하지만 해당 모듈이 실패 할 경우 바로 어플리케이션에 전달한다.
즉 실패할 경우 바로 인증이 거부 된다.
∙sufficient : 이전에 인증된 모듈이 모두 실패하더라고 해당 모듈만 성공한다면 인증이 성공한다.
∙optional : 이전이후 모듈들에서 명확한 성공과 실패가 없다면 해당 모듈의 결정에 따라 인증 결과가 결정된다.
ⓒ module-path : 동적으로 로드될 오브젝트 파일의 위치 및 파일명을 나타내며 “/” 로 시작할 경우는 완전한 경로명과 파일명을, 파일명만 기술할 경우는 /lib/security에서 해당 오브젝트를 로드 시킨다.
ⓓ arguments : 로드되는 오브젝트에 전달되는 인수를 지정 하는 부분이다.
관련자료
-
이전
-
다음