초보자를 위한 pam.d를사용한 로그인 제한
작성자 정보
- 웹관리자 작성
- 작성일
컨텐츠 정보
- 25,625 조회
- 0 추천
- 목록
본문
[ 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
*접속허가는 +기호로, 접속거부는 - 기호를 사용한다
설정 후 저장. 설정한 파일을 적용하기 위해 로그인 파일을 엽니다. 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로는 로그인이 되지 않습니다. 이상입니다. [출처] 특정 사용자를 제외한 모든 로그인 제한하기|작성자 7meaning [출처] 리눅스에서 su 권한 제한하기|작성자 7meaning [출처] PAM 모듈을 사용하여 로그인 제한하기|작성자 7meaning |
관련자료
-
이전
-
다음