관리 메뉴

IT창고

리눅스 PAM2 본문

보안/Security

리눅스 PAM2

방구석여포 2018. 6. 28. 12:52

PAM의 모듈들에 대해 알아보겠습니다.


로그인 모듈을 알아보겠습니다.

/etc/pam.d/login 파일이 로그인 프로세스입니다.


가장 처음 auth된 PAM 모듈을 보면 pam_securetty.so파일이 있는데 이 모듈은 /etc/securetty 파일의 내용과 Login프로세스가 전달한 내용을 비교하는 모듈입니다.

man명령어로 pam_securetty를 입력하면 자세한 설명이 나와있습니다. 자신이 모르는 모듈이 나올경우 man으로 찾아보도록 합니다.

securetty파일에 tty가 콘솔의 터미널입니다. 만약 tty1(콘솔 1번 터미널)이 주석이나 아예없다면 콘솔의 1번 터미널로 접속이 불가능해집니다.

올바른 패스워드를 입력해도 접속이 불가능합니다. 테스트환경은 VMware이므로 ctal+alt+f2를 누르면 콘솔 2번 터미널로 바뀌게 됩니다. securetty파일에서는 tty1만 주석처리를 했기 때문에 콘솔 2번 터미널로는 접속이가능합니다.


/etc/pam.d/login파일에 보면 system-auth모듈이 있습니다. 

이 파일을 직접 열어보면 auth        sufficient    pam_unix.so nullok try_first_pass 부분이 있는데 여기서 nullok옵션이 있습니다. nullok 옵션은 비밀번호가 비어있는 경우 받아들이지 않는다는 옵션으로 만약 이 옵션을 지울경우 계정만 있으면 접속이 가능하게 됩니다.


 pam_nologin모듈에 대해 알아보겠습니다.

이 모듈은 간단한 모듈인데 만약 /etc/ 디렉토리안에 touch명령어로 /etc/nologin 이라는 파일이 존재할 경우  일반계정으로는 로그인이 불가능해 집니다. 자세한 내용은 man명령어로 pam_nologin모듈에 대해 살펴봅니다.



이번에는 pam_time.so 모듈에 대해 알아보겠습니다.

pam_time 모듈은 시간을 제한하는 모듈입니다.

pam_time.so 파일은 아래의 디렉토리에 위치합니다.


/etc/security 디렉토리에 가보면 time.conf파일이 존재합니다. 이 파일의 내용을 읽어들여 적용시키는 모듈이 pam_time 입니다. 


사용방법은 time.conf 파일에 서비스명;터미널;계정;시간 을 넣어주면 됩니다.

time.conf파일 아래에 이런식으로 넣어주면 login서비스가 root가 아닌 계정으로 금요일 17~18시 사이에는 로그인이 불가능하게 됩니다.


/etc/pam.d/login 파일에 보면 pam_time.so 모듈을 사용하고 있지는 않습니다.

이러한 모듈을 사용하기 위해서는 관리자가 직접 login파일에 넣어줘야만 합니다. 단 login파일은 콘솔접속에 관여하기 때문에 ssh접속 또한 제한하기 위해서는 /etc/pam.d/password-auth 파일을 수정하거나 time.conf파일에 서비스명을 login이 아닌 sshd로 넣어주면 됩니다. ex) sshd;*;!root;!Fr1700-1800 




pam_limits.so 모듈에 대해 알아보겠습니다.


이 모듈은 리소스를 제한하는 모듈입니다.

/etc/security/limits.conf 파일을 열어봅니다.

파일안을 보면 사용설명이 나와있습니다. <domain>  <type>  <item>  <value> 을 고려해서 이 파일 가장 아래에 옵션을 넣어줍니다.

내용을 보면 모든 도메인에 하드타입으로 프로세스를 5개로 제한과 최대로그인수를 2개로 제한하는 내용입니다.

콘솔에 적용한다면 /etc/pam.d/login 파일에 session  required pam_limits.so 를 추가하면 됩니다.




마지막으로 pam_tally2.so 모듈에 대해 알아보겠습니다.

pam_tally2 모듈은 접근 시도 횟수를 관리하는 모듈입니다.


콘솔에 적용한다면 /etc/pam.d/system-auth 파일에 원격 접속을 한다면 /etc/pam.d/password-auth 파일에 auth  required   pam_tally2.so  deny=2 unlock_time=30 를 추가합니다. 이 설정은 로그인 시 2번 이상 패스워드를 잘못 입력하면 30초 후에 다시 접근할수 있도록 하는 설정입니다.


pam_tally2 -u [username] 명령어는 해당 계정의 로그인 실패 횟수를 확인할수있으며 pam_tally2 -r 명령어는 실패횟수를 초기화하는 명령어 입니다.

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

리눅스 SELinux 1  (0) 2018.07.02
리눅스 서버 보안4  (0) 2018.06.29
리눅스 PAM1  (0) 2018.06.24
리눅스 iptables 심화  (0) 2018.06.24
리눅스 iptables 기초  (0) 2018.06.17
Comments