강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

초보자를 위한 pam.d를사용한 로그인 제한

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문


[ PAM 모듈을 사용하여 로그인 제한하기 ]

 

PAM 모듈이란?

Pluggable Authentication Modules. 사용자 인증 모듈 
윈도우의 로컬보안정책과 비슷하다. 라우터로 치면 액세스리스트나 마찬가지

 

 

 


/etc/pam.d 폴더에 가서 목록을 보면 이와 같은 파일들이 있습니다. 이중 로그인 파일을 열어보겠습니다.



vi /etc/pam.d/login



맨 밑 줄에

session  required pam_limits.so

이 항목을 추가한 후 저장합니다. 제한 기능을 사용하겠다는 뜻입니다.

그 다음



vi /etc/security/time.conf

 


보이는 화면에서 초록색 줄이 쳐진 부분이 예시입니다. 앞에 주석(#)이 달려있기 때문에 수행되고 있지는 않습니다.

예문을 해석하자면 다음과 같습니다.

 

xsh 서비스; 모든 터미널; root ; 주말 0~24시를 제외하고 -> 주말을 제외하고 모든 터미널에서 root가 xsh 서비스를 실행한다.

 

이것을 토대로 문장을 작성해 보겠습니다. 저는 user1이라는 사용자를 평일에만 로그인 가능하게 할 생각입니다.

 

login;ttyp1-5;user1;!wd0000-2400

 

이렇게 작성한 후, 저장 및 종료합니다.

이제 user1의 최대로그인 횟수를 2로 막아보겠습니다.



vi /etc/security/limits.conf

 

파일을 쭉 내리면 맨 아래에 네 개의 필드가 보입니다.

여기에 구성방식을 추가합니다.

 

* hard maxlogins 2

 

필드 사이를 띄어쓸 때는 반드시 탭 키를 써주시는 게 좋습니다.

이제 저장한 후에 확인해 보겠습니다.

 

 

1터미널에서 첫번째 로그인입니다.



무사히 로그인 되었습니다.

그 다음 2터미널에서도 user1로 로그인해 보았습니다.



역시 로그인이 잘 됩니다.

이제 3터미널에서 user1 로그인을 시도합니다.



패스워드를 입력합니다.



다시 로그인 화면으로 돌아옵니다.

최대 로그인 횟수 2를 넘었기 때문에, 더이상은 로그인할 수 없습니다.

 

 

이런 방식으로 ssh 로그인도 제한할 수가 있습니다.



vi /etc/security/time.conf


 

아까 user1 로그인 명령문을 썼던 부분에 login 대신 sshd를 써주면 됩니다.

su 권한 제한하기 ] 

 

su 명령어는 유저가 루트(관리자)의 권한을 넘겨받는 명령어입니다. 따라서 되도록이면 su를 쓸 수 없도록 막는 게 좋습니다.

PAM 모듈을 써서 su 권한을 제한해 보겠습니다.

 

먼저 su 파일을 엽니다.

 

 

vi /etc/pam.d/su


위와 같은 내용이 좌르륵 나옵니다.

그중 6번 줄에 있는 "#auth required pam_wheel.so user_uid"에서 맨앞에 있는 주석(#)을 지워줍니다.



지운 후 저장.

그 다음 su를 허락할 유저그룹을 설정하기 위해 그룹 파일을 엽니다.



vi /etc/group



화면을 죽 내려가다 보면 wheel로 시작하는 필드가 보입니다.

 

wheel:x:10:계정명

 

계정명 부분에 su를 허락할 계정을 써준 후 저장합니다.

저는 root, user1을 썼습니다.

 

이제 직접 로그인해서 확인해 보겠습니다.



user1으로 로그인합니다.



su 명령어 선언 후, 패스워드를 치니 쉘이 정상적으로 떨어집니다.

명령어가 먹혔다는 의미입니다. (쉘이 깜박거리는 커서를 의미한다는 건 아시죠?)


 

user2에서 똑같이 작업합니다.

 

 

 

su 명령어를 써도 패스워드가 맞지 않는다는 오류가 계속 뜹니다.

user2로는 su 명령어를 쓸 수 없습니다.

 

[ 특정 사용자를 제외한 모든 로그인 제한하기 ]

 

 

 

먼저 로그인 접근 권한을 설정하는 파일을 열어보겠습니다.

 


vi /etc/security/access.conf



여기에서 로그인 제한 설정을 하면 됩니다. 저는 root와 user1을 제외한 모든 로그인을 막아보겠습니다.

- : ALL except root user1 : ALL

 

*접속허가는 +기호로, 접속거부는 - 기호를 사용한다
*사용자는 계정명, 그룹명 또는 ALL로 표시된다
*접속위치는 터미날명, 컴퓨터이름, 도메인명, IP주소로 표시한다.

 

설정 후 저장.

설정한 파일을 적용하기 위해 로그인 파일을 엽니다.



vi /etc/pam.d/login



파일 내용을 보면 서비스가 좌르륵 나와 있습니다.

내용에 문장을 추가합니다.

account  required  pam_access.so

 

저는 5번째 줄에 명령어를 추가했습니다. 명령어는 맨 아랫줄에 추가해주셔도 상관 없습니다.

 

sshd 파일에서도 똑같은 작업을 해줍니다.



vi /etc/pam.d/sshd



account  required  pam_access.so

 

위와 같이 명령어를 추가해준 후, 저장 및 종료

 

 

이제 테스트해 보겠습니다.

먼저 user1으로 로그인합니다.



로그인 쉘이 잘 떨어졌습니다.

 

 

user2에서도 로그인을 시도해봅니다.




 

패스워드를 제대로 쳤지만 다시 로그인 화면이 나옵니다. user2로는 로그인이 되지 않습니다.

이상입니다.

관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,017 명
  • 현재 강좌수 :  35,690 개
  • 현재 접속자 :  233 명