신규 쉘을 생성하여 차단하는 방법
# 여기서는 proftp를 사용한다고 가정합니다.
보통 adduser로 유저를 생성하게 되면, ssh접속권한과 ftp접속 권한을 모두 가지게 된다.
이때 서버를 잘 모르는 사람에게는 ssh(서버에 접속할수 있는 권한)은 주지 않고, ftp만 접속할수 있게끔 설정을 해주는것이 보안에 유리하다.
다음과 같은 방법으로 한다.
1. adduser로 계정을 생성한다.
2. 후에 /etc/passwd 파일에서 해당 계정의 사용쉘을 다음과 같이 해준다.
photosell:x:504:504::/home/photosell:/bin/noshell
저장하고 나와서 빈쉘을 만든다.
3. #touch /bin/noshell
4. #chmod 755 /bin/noshell
5. proftp의 설정파일에서
DefaultRoot ~ !groupname
옵션의 주석을 풀어준다. 해당 계정은 자신이 / 이므로 더이상 위로 올라가지 못하도록 하는것이다.
그리고 다음과 같은 옵션이 off로 되어있는지 확인한다.
6. RequireValidShell off
7. vi /etc/shells
(현재 사용가능한 쉘들이 나열되어있다. – 이파일안에 있는 쉘들만이 접속을 할수가 있다.)
8. shells 파일안에 noshell이란 쉘을 등록시켜 주게 되면 된다.
(직접 쉘 생성 외에도 shells파일에 있는 /sbin/nologin 으로 변경해줘도 된다.)
그렇게 되면 ssh로 접속을 하게되면 패스워드가 틀렸다고 나오며, ftp로 접속시에는 정상 접속이 가능하게 된다.
참고 사이트
http://faq.hostway.co.kr/?mid=Linux_ETC&page=9&document_srl=1375
그런데, 위의 방법대로 진행하면 ftp가 접속 되지 않는다. 이에 따른 해결방법은 아래의 2가지로 해결이 가능하다.
- /etc/shells에 추가하는 방법
- /etc/pam.d/vsftpd를 수정하는 방법