Home Server/Linux

vsftp에서 ftp접속은 허용하고 Shell 접속은 차단하기

realizm 2013. 8. 11. 00:42

vsftpd의 기본적인 로그인 계정은 리눅스의 계정을 사용합니다..


고로 ftp계정을 부여하려고 하면 shell과 ssh계정이 열려서 보여주고 싶지 않은것 까지 보여줄 수 가 있죠.


그에 대한 해결방안 입니다.



login user의 shell을 /bin/nologin 이나 /bin/false로 지정합니다.


새로 사용자를 추가하는경우

adduser --shell /bin/nologin ftpuser



기존에 있는 사용자의 경우 /etc/passwd파일을 편집해서 shell지정을 변경할 수 있습니다.

nano /etc/passwd



해당유저의 shell을 /bin/sh나 /bin/bash에서 /bin/nologin으로 변경해줍니다.



자 이제 shell이나 ssh로 로그인을 시도해보면 접속이 안되는것을 확인 할수 있습니다.



근데 ftp로 접속하려고 하면 invalid shell이라는 메시지가 나오면서 ftp로도 접속이 안됩니다.


이건 vsftp가 shell의 유효성을 체크하기 때문인데요..


이걸 해결하는 방법은 두가지가 있습니다.



1. /bin/nologin을 유효한 shell로 등록하는 방법

echo "/bin/nologin" >> /etc/shells


2. vsftp에서 shell의 유효성을 체크하지 않게 하는방법


nano /etc/pam.d/vsftpd



밑줄친 부분을 주석처리 함으로서 shell의 유효성을 체크하지 않게 앞에 #을 넣음으로서 주석처리해준다.

#auth required pam_shells.so

shell의 유효성체크를 하지 않게 하는 부분은 vsftp의 설정이 변경된 것이므로 vsftp를 재시작해준다.

/etc/init.d/vsftpd restart



이제 vsftp로는 접속이 되지만 shell로는 접속이 안되는 계정이 만들어졌습니다~