우분투와 vsftpd : 가상 유저(계정) 중심의 세팅 개념 정리

이 포스팅은 우분투에서 vsftpd로 가상계정 기반의 FTP 서버를 구축할 때
어떻게 틀을 짜면 보안에 유리하면서도 웹서버 용으로 무리 없는 환경이 나올지
백지상태의 분들께 세팅 개념(가이드)을 잡아드리는 것을 목적으로 합니다.
제가 제시하는 틀이 절대적으로 좋을거란 보장은 없습니다. 적당히 수정해 가면서 자신만의 틀을 완성하고 그 틀을 실현하기 위한 방법들을 모색해보세요.

시작합니다.

① vsftpd 가상 계정하나의 리눅스계정과 연결되어 소통합니다. 연결되는 리눅스계정이 뚫려서 서버를 휘젓고 다니면 가상계정들의 데이터도 위험하겠죠?
② 그래서 “로그인 후 작업 불가+home 디렉토리도 없는” 공갈 계정을 만들어서 vsftpd 가상 계정의 요청을 “전달하는 역할만” 하게끔 한다면 보안에 유리하겠죠.
   http://nemonein.egloos.com/5278392 ☜ PureFTP 프로그램으로 FTP서버 구축하는 과정 소개한 글인데 여기에 공갈계정 만드는 사례가 소개되어 있습니다.
③ 공갈계정의 데이터 저장용 디렉토리를 생성해 둡니다. 소유자&소유그룹도 당연히 공갈계정으로 설정해야겠죠.
④ SSH, SFTP를 구축한 적이 있다면 공갈 계정으로 SSH, SFTP 접속이 안되게끔 조치합니다.
⑤ vsftpd를 설치합니다.
⑥ 가상계정들의 ID&비밀번호를 vsftpd용 DB로 변환합니다.
⑦ ③에서 만든 디렉토리 하위에 가상계정들의 데이터가 저장용 디렉토리 생성. 소유자&소유그룹은 공갈계정으로 설정합니다.

⑧ vsftpd 설정파일(/etc/vsftpd.conf) 편집. 원본 설정파일은 vsftpd-ori.conf 로 저장해두면 좋겠죠? 연결되는 공갈계정과 pam파일명을 정의해주는 부분이 있으니까 집중하시고요, 옵션들의 역할을 잘 모르겠으면 설정파일 주석에 나온대로 vsftpd.conf.5 manual page 를 구글링해서 참고하세요. 영어라서 잘 모르겠다면 크롬 번역기능 활용해서 원본이랑 비교해가면서 보세요. vsftpd.conf 파일 작성사례가 궁금하다면 검색어를 최대한 짧게 구성해서 구글에 쳐보면 좋은 글들이 많이 나올겁니다.(예 : vsftpd 가상, vsftpd virtual 등등…) 그리고 local_umask=022 옵션 넣어두면 업로드하는 폴더는 755, 업로드하는 파일은 644권한을 자동으로 부여받게 되니까 웹서버 용으로 쓰기 좋을 겁니다.
⑨ vsftpd.conf 파일에서 user_config_dir 옵션 지정한 디렉토리에 들어가서 가상계정명으로 추가 설정파일 만들어줍니다. => 가상 유저마다 본인폴더 위로는 못 올라가게끔 꼭 세팅할 것. 그래야 가상계정 사용자가 시스템 파일들에 접근하지 못합니다.
⑩ /etc/pam.d/⑧에서 지정했던 pam파일명에서(없으면 gedit 등으로 생성) PAM 정보 설정. pam 파일은 가상유저들의 ID와 비밀번호가 정확한지 체크한 후 (FTP 사용을 위한) 공갈계정 로그인을 “허락”하는 역할을 합니다.
⑪ 서버 단에서의 설정은 끝났습니다. 터미널에서 vsftpd 서비스 실행시키고, 서비스 돌아가는지 확인합니다.
⑫ 서버 터미널에서 FTP 가상계정 접속이 잘 되는지 확인합니다. 로컬계정이나 ROOT 등은 접속이 안되게끔 조치하면 보안에 유리합니다. 로컬계정/루트계정은 SFTP 쓰세요. 느리더라도 안전합니다.
⑬ 공유기 쓰고 있다면 포트포워딩으로 포트를 적당히 개방해 줍니다.
⑮ FileZilla FTP 클라이언트로 외부접속+파일&폴더 업로드가 잘 되는지 확합니다. 파일 인코딩 옵션은 무조건 UTF-8로 하셔야 한글 안깨집니다.

여기까지가 최소. 여력이 된다면 SSL/TSL 연결도 구축합니다.

끝.
이걸 튜토리얼로 작성하게 될 날이 올지 모르겠습니다.
아무튼 이렇게 vsftpd 가상 유저 기반으로 돌아가께끔 해두면
거의 웹호스팅용 서버와 다를 바 없죠. 안전하고…
다양하게 활용해 보세요. ^^

CC BY-NC-ND 4.0