관리 메뉴

IT창고

리눅스 PAM1 본문

보안/Security

리눅스 PAM1

방구석여포 2018. 6. 24. 03:33

리눅스의 PAM(Pluggable Authentication Modules)은 리눅스 시스템 및 어플리케이션에 제공되는 중앙 집중형 인증 프레임 워크로 PAM은 월래 솔라리스 운영체제용으로 구현되었는데 현재는 대부분의 리눅스 배포판에서 PAM을 사용하고 PAM프로젝트의 목적은 안전한 소프트웨어 개발을 자유롭게 할수있도록 인증체제를 제공합니다. 


PAM이 없던 이전에는 시스템에 설치된 각 프로그램(ex) telnet,ftp,login)이 개별적으로 인증을 진행했었는데 PAM을 사용하고부터는 중앙 집중형 인증을 통해 접근제어관리를 간소화하고 어플리케이션 개발 시 인증루틴을 작성하지 않아도 되기 때문에 개발의 시간을 단축할수있게 되었습니다.


PAM-aware에 대해 알아보겠습니다

PAM-aware는 PAM을 이용하여 인증을 진행할 수 있는 어플리케이션 혹은 PAM라이브러리 컴파일로 되어있는 어플리케이션입니다.


ldd [file_name] 명령어로 파일의 공유 라이브러리 종속성(연결)확인할수 있습니다.


PAM Authorizing Process에 대해 알아보겠습니다.

PAM Authorizing Process는 사용자나 프로세스가 PAM-aware 어플리케이션에 접근을 요청하면 다음 두가지 요소가 대상 인증 처리에 사용됩니다.


1.PAM-aware 어플리케이션의 설정파일(/etc/pam.d)

2.설정 파일이 사용하는 PAM모듈 (/lib64/security/)


PAM-aware Configuration File는 PAM설정 파일의 일반적인 형식입니다.


PAM 설정 파일 구조를 보면 아래와 같습니다.
Context(type)    Control Flag    PAM Module    Module Option

4가지의 필드로 나눠있으며 Context는 auth , account, password, session 4개가 있습니다.
auth는 계정의 암호검증 등 인증관리 서비스를 제공하고 account는 일일 엑세스 제한 기간 등, 계정 검증 서비스를 제공하고 password는 암호의 길이 제한 등, 계정의 암호를 관리하고 session은 정보를 보안 로그로 전송 등 인증 세션의 시작과 종료를 관리합니다. 

Understanding Control Flag 는 PAM설정 파일에 전반적인 상태를 결정하기 위한 컨트롤 플래그가 사용됩니다.
Control Flag는 required, requisite, include, substack 등이 있습니다.
required는 실패 시 다른 Context들이 스택에서 실행된 뒤 어플리케이션에 실패 상태를 리턴하고 requisite는 실패 시 다른 Context들이 스택에서 실행되지 않고 즉시 어플리케이션에 실패 상태를 리턴하고 include는 특정PAM설정 파일의 스택으로부터 모든 리턴상태를 가져와 이 스택의 최종 리턴상태에 포함하는데 지정된 설정 파일의 스택전체가 이 설정파일에 있는 효과를 볼수 있습니다.
substack은 include와 비슷하지만 반환 값에 따라 동작이 달라집니다.

Control Flag는 키워드와 리턴값+액션(Return Value + Action)으로 있는데 키워드는 required이며 리턴값+액션은 위의 사진에 [user_unknown=ignore success=ok ignore=ignore default=bad] 입니다. 

Return Value + Action은 반환된 모듈의 상태는 설정파일에 열고된 일련의 액션들을 통해 처리됩니다.
pam-devel.x86_64 패키지가 있는데 yum -y install pam-devel.x86_64 명령어로 설치하면 /usr/include/security/_pam_types.h 파일에 반환코드의 종류를 확인해볼수있습니다.


마지막으로 PAM의 Action을 알아보겠습니다.

Action으로 ignore, bad, die, ok, reset 등이 있습니다.

ignore는 모듈의 결과 값이 응용프로그램이 갖게될 결과 값에 영향을 주지 않습니다.

bad는 결과 값이 모듈 실패의 표시이며 이 모듈이 첫번째로 실패한 모듈이면 이 상태 값은 전체 모듈의 결과로 사용됩니다.

die는 bad와 같지만 모듈 수행이 중지되고 PAM이 응용프로그램으로 바로 리턴하는 점이 다릅니다.

ok는 PAM에게 관리자가 이 결과값이 모듈 전체의 결과 상태로 바로 사용이 가능함을 알려줍니다.

reset는 모듈들의 결과상태 기록을 지우고 다음 모듈로부터 새로 시작합니다.


'보안 > Security' 카테고리의 다른 글

리눅스 서버 보안4  (0) 2018.06.29
리눅스 PAM2  (0) 2018.06.28
리눅스 iptables 심화  (0) 2018.06.24
리눅스 iptables 기초  (0) 2018.06.17
리눅스 서버 보안3  (0) 2018.06.16
Comments