[ pam_smb 활용 ]
PAM이란 이름 그대로 유닉스 계열에서 인증 기능을 담당하는 모듈을 말한다. 플러그로 사용할 수 있다는 의미는 하나의 서비스를 위한 인증 모듈을 필요에 따라 추가하고 변경하는 것이 자유롭기 때문이다. 따라서 다양한 인증 정보를 사용하는 PAM 라이브러리만 존재한다면 PAM을 지원하는 모든 유닉스 서비스에 대해 이것을 적용할 수 있다(대표적으로 login/telnet, ssh, pop3/imap, smtp-authen 등은 모두 PAM을 지원한다).
pam_smb란 이러한 PAM 라이브러리의 하나로 SMB 서버의 인증 기능을 사용할 수 있다. pam_smb를 사용한다면 자신의 유닉스, 리눅스 서버의 계정 사용자들을 위해 다양한 계정 정보를 유지할 필요가 없게 된다. 특히, 가동되는 삼바 서버를 가지고 있다면 /etc/shadow 파일을 사용해 별도의 계정 정보를 관리할 필요 없이 smbpasswd의 계정 정보만으로 사용자를 관리할 수 있는 것이다.
PAM 모듈의 기능은 이러한 인증 작업 이외에도 다양하고 체계가 깊지만 여기서는 단순하게 pam_smb를 설정하는 방법에 대해서만 다루겠다. pam_smb 라이브러리는 삼바 홈페이지(http://www.samba.org)나 소스포지(http://sourceforge.net)에서 구할 수 있다. configure, make, make install로 이어지는 간단한 설치 방법을 따르고 있으므로 여기서는 2.0 버전을 기준으로 pam_smb를 설정하는 방법에 대해서만 소개하겠다. pam_smb의 설정 작업은 모두 세 단계로 이루어진다. 각 단계를 따라가 보자.
pam_smb_auth.so가 인증을 의뢰할 NetBIOS 서버를 지정한다. /etc/pam_smb.conf 파일이 이러한 정보를 저장하는 데 사용된다. NetBIOS 서버는 도메인(또는 워크그룹) 단위로 중복되어 설정할 수 있다. 다음은 두 개의 NetBIOS 인증 단위를 설정하는 예다.
/etc] cat /etc/pam_smb.conf
DOMAIN1,MAINSYS,BAKCSYS
MYWORK,HOST1,HOST1
첫 번째 줄은 MAINSYS를 PDC(Primary Domain Controller)로, BACKSYS를 BDC(Backup Domain Controller)로 사용하는 DOMAIN1에 인증을 요구하는 설정이다. 이 경우 도메인 이름은 의미가 전혀 없으며 중요한 것은 오직 인증 서버인 MAINSYS와 BACKSYS 뿐이다. 두 번째 줄은 MYWORK라는 워크그룹에서 운영되는 HOST1이라는 삼바 서버에 인증을 의뢰하는 방법이다. pam_smb.conf의 규칙에 따라 하나의 도메인(워크그룹)은 반드시 두 개의 인증 서버를 열거해야 하므로 하나의 삼바 서버만이 사용되는 경우라면 같은 이름을 반복해 적으면 그만이다.
짿 이제 pam_smb_auth.so는 인증 과정을 MAINSYS와 HOST1에 각각 의뢰하게 된다. 인증 서버 선정은 역순으로 진행되어 우선 HOST1에 인증을 시도할 것이고, 이것이 실패하면 MAINSYS에 인증을 시도할 것이다. pam_smb_auth.so는 유닉스 암호 파일을 이용하는 인증 기능을 포함하므로 네트워크 서버를 이용한 인증 과정이 실패했다면 일반적인 유닉스 인증을 시도할 것이다. 주의할 점은 인증 서버로 열거되는 MAINSYS, BACKSYS, HOST1 등의 이름이 자신의 /etc/hosts 파일에 정의되어 있어야 한다는 점이다. 매우 당연한 부분이겠지만 자주 잊어버리는 일이 발생하는 것 같다.
이제 pamsmbd를 가동할 수 있다. 특별한 인자를 요구하지 않으므로 단순히 명령어를 실행하는 것만으로 끝난다.
/etc] /usr/local/sbin/pamsmbd
pamsmbd는 pam_smb 작동을 위해 필수적으로 요구되는 것이므로 유닉스 시스템의 가동과 함께 시작될 수 있도록 시작 스크립트를 제작하든지, 일반적으로 사용되는 초기 스크립트의 마지막에 추가해 두는 것이 좋을 것이다(필자는 S69inet 초기화 스크립트의 마지막에 추가하는 방법을 주로 사용한다).
쨁 pam_smb의 작동을 위해서는 PAM 플러그인을 자신의 인증에 사용할 수 있도록 pam.conf 파일을 수정할 필요가 있다. 일반적인 방법이라면 pam_smb_auth 인증 방법을 사용하고자 하는 네트워크 서비스에 required 방법으로 연결시킬 것이다. 솔라리스나 FreeBSD 등에서는 다음과 같이 설정하면 된다.
/etc] cat >> /etc/pam.conf
other auth required /usr/lib/security/pam_smb_auth.so.1
^D
만약 리눅스를 사용한다면 각 서비스에 대한 pam.conf 파일은 /etc/pam.d 디렉토리에 서비스 별로 분할되어 있을 것이다. 자신이 원하는 서비스 설정 파일에 적절한 내용을 추가하면 된다. 가령 텔넷이나 login 서비스에 pam_smb를 적용하려고 한다면 다음과 같이 할 수 있다.
/etc/pam.d] cat >> system-auth
auth sufficient /lib/security/pam_smb_auth.so
pam_smb 사용에는 두 가지 주의할 점이 있다. 첫째, pam_smb는 PAM 라이브러리만 제공할 뿐이지 NSS(Name Service Switch) 라이브러리는 제공하지 않는다. 그러므로 pam_smb를 통한 인증이 가능하기 위해서는 해당 계정의 ID, uid 번호, gid 번호 등을 포함하는 정보가 /etc/passwd에 존재해야 한다. 단, /etc/shadow 파일에는 계정 정보를 포함할 필요가 없다. 둘째, 리눅스 시스템에서 pam_smb 1.× 버전을 사용하는 것은 권장되지 않는다. 이것은 pam_smb의 버그라기보다는 리눅스의 login 프로그램의 버그에서 유인된 것으로 보안상 위험이 있으므로 주의하기 바란다.
pam_smb 활용