강좌
클라우드/리눅스에 관한 강좌입니다.
해킹&보안 분류

리눅스마스터1급 : 시스템 보안 관련 유틸리티 및 명령어 : PAM

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

리눅스마스터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-type4가지 형식을 지원한다.

 

 

 

 

auth : 해당 모듈의 경우 크게 두가지 인증방식을 가지고 있으며 첫 번째는 패스워드를 인증하는 방식이며 다른 하나는 자격을 증명하는 것이다.

 

 

 

자격을 증명한다는 것은 스마트카드등을 이용한 인증처럼 다양한 형태의 인증을 제공한다.

 

 

 

 

account : 인증이 아닌 계정관리를 수행하는 모듈이다.

 

 

 

시스템의 수용량이나 자원량 또는 위치에 따라 서비스에 접근이 허용되는지 패스워드를 사용가능 한지 결정한다.

 

 

 

 

session : 해당 모듈의 경우 인증 전후에 필요한 작업들을 지정한다.

 

 

 

홈디렉토리의 마운트/언마운트 , 로그인/로그아웃 사용자에게 제공하는 서비스등에 대한 제한을 한다.

 

 

 

 

password : 사용자가 그들의 인증을 변경하기 위한 방법을 제공한다.

 

 

 

일반적으로 이 방법은 패스워드이다.

 

 

 

control-flag : control-flag는 성공 또는 실패 결과에 따라 어떻게 반응을 할지를 결정한다.

 

 

 

 

required : 해당인증이 성공하기 위해서는 지시된 모듈타입의 성공이 필수적으로 필요하다는 것을 의미한다.

 

 

 

다른 모듈들이 실행되기 전까지는 결과를 알 수 없다.

 

 

 

requisite : required 와 비슷하지만 해당 모듈이 실패 할 경우 바로 어플리케이션에 전달한다.

 

 

 

즉 실패할 경우 바로 인증이 거부 된다.

 

 

 

 

sufficient : 이전에 인증된 모듈이 모두 실패하더라고 해당 모듈만 성공한다면 인증이 성공한다.

 

 

 

 

optional : 이전이후 모듈들에서 명확한 성공과 실패가 없다면 해당 모듈의 결정에 따라 인증 결과가 결정된다.

 

 

 

 

module-path 동적으로 로드될 오브젝트 파일의 위치 및 파일명을 나타내며 “/” 로 시작할 경우는 완전한 경로명과 파일명을, 파일명만 기술할 경우는 /lib/security에서 해당 오브젝트를 로드 시킨다.

 

 

 

 

arguments : 로드되는 오브젝트에 전달되는 인수를 지정 하는 부분이다.

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,043 명
  • 현재 강좌수 :  35,853 개
  • 현재 접속자 :  67 명