PAM을 이용한 로그인 제한

후배 한넘이 ‘사용자별로 접속할 수 있는 아이피 대역을 제한 할수는 없느냐’라는 질문을

해와서.. 나도 상당히 궁금해 졌다. 방법은 있을꺼 같은데…

먼저 떠오르는건 iptables, TCPWrapper 등인데…

단순히 아이피 대역을 제한하는 거면 몰라도

사용자 별로 따로 해주는 거라면 그것들로는 안될꺼 같았다.

그래서 생각한게 PAM(Pluggable Authentication Modules) 이다.

요새는 대부분 인증할 때 저넘을 거치니까 저기서 설정해주면 되지 않을까…

근데 문제는… 내가 PAM에 대해서 잘 모른다는 거다…-_-

그래도 머… 시간도 남고 해서… 함 찾아봤지…

정확하게는 잘 모르겠지만.. 대충 살펴본 봐로는

/etc/sevurity/access.conf(데비안 기준) 를 손봐주면 될꺼 같았다.

흠.. 근데 이거.. 파일을 열어서 설명을 읽어봐도 잘 모르겠다..-_-

그래서 몇번 읽어 보고, 포기하려다가 또 읽어 보고 생각 좀 해보니까 알겠네;;;

일단 파일의 형식은

    permission : user : origins

이렇게 된다.

permission은 + 또는 -가 오는데, +는 권한을 준다. -는 권한을 주지 않는다 이다.

그 다음에 user에서 접속을 제한하거나 허가할 user나 group 의 아이디가 온다.

여러개를 쓸 경우에는 스페이스로 구분하면되고, ALL 이라고 하면 전부,

EXCEPT xxx 하면 xxx는 제외하고이다. 이 두개를 섞어서 쓸수도 있다.

a, b, c를 제외한 전부 == ALL EXCEPT a b c <- 이렇게..

마지막으로 로그인을 시도하는 origins은 터미널 이라든가 아이피, 네트웍주소,

도메인명등이 온다. 역시 ALL, EXCEPT를 쓸수 있으며, 터미널 네임은 tty1 처럼

/dev를 떼고 쓰고, . 으로 시작하는 도메인명은 해당 도메인의 모든 호스트,

.으로 끝나는 아이피 주소는  네트웍 주소로 취급되어 해당 네트웍 주소에 속하는

모든 호스트와 매칭된다.

그리고 LOCAL 이라고 해서, localhost를 지칭하는데 쓸수도 있다.

실제 사용한 예를 보면

    -:charm:ALL EXCEPT LOCAL

charm이라는 계정은 로컬호스트를 제외하고는 접속을 제한하는 설정이다.

이외에도 몇가지 예가 설정파일에 주석으로 달려 있으니 참조하고…

여기서 끝이냐.. 하면 그건 아니다.

PAM을 사용하는 서비스(?)의 설정파일에서 이 access.conf 파일을 사용하도록

설정을 해줘야 한다. 이 쪽은 더 잘 모르겠지만…

login 설정 파일에 있는 부분을 보고했다.

ssh는 ssh라는 설정 파일이 따로 있으므로 여기다가

    account  required       pam_access.so

라고 추가해 준다.

자.. 그럼 이제 charm이라는 계정은 로컬호스트에서만 접속할 수 있게 되었다.

http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/pam.html