우분투 리눅스 서버에 FTP 서버를 설치하자. + 가상 계정 설정.

FTP 서버는 종류가 다양하게 있지만 이번에 설치할 녀석은 vsftpd(https://security.appspot.com/vsftpd.html) 라는 녀석이다.

$ sudo apt-get install vsftpd

역시나 설치는 간단하다. 내가 이래서 우분투를 사랑한다.

설치를 하면서 서비스도 같이 실행 시켜 버리기 때문에 바로 이용할 수 있다.

하지만 최근 특별한 이유가 없다면 FTP 서버를 설치하지 않는 이유는 보안 문제 때문이다.
FTP를 이용한 공격 방법도 많이 알려져 있기 때문에 FTP 서비스를 실행만 하고 있어도 여기 저기에서 접근 시도가 많이 이루어 진다.
서비스를 실행한 상태에서 로그를 살펴 보면 확인 가능하다.

$ sudo tail -f /var/log/auth.log

SFTP로도 충분한 사람에겐 FTP는 사실 설치할 필요 없는 이유.

그럼에도 FTP 서버를 설치하였다면 좀 더 보안을 강화하여 가상 계정을 설정하는 방법이 있다.

서비스를 종료하고 설정 파일을 편집하자.

$ sudo service vsftpd stop
$ sudo vim /etc/vsftpd.conf

설정 파일 최하단에 아래 가상 계정 설정을 덧붙여 준다.

guest_enable=YES
virtual_use_local_privs=YES
write_enable=YES
pam_service_name=vsftpd.virtual
user_sub_token=$USER
local_root=/home/ftp/$USER
chroot_local_user=YES
hide_ids=YES
allow_writeable_chroot=YES

vsftpd 설정은 끝났으니 가상 계정을 생성할 준비를 하겠다.

우선 설치하고.

$ sudo apt-get install db-util

가상 계정 정보와 vsftpd를 연결 시켜줄 설정 파일을 생성, 편집.

$ sudo vi /etc/pam.d/vsftpd.virtual

아래 두 줄을 넣어 주면 된다.

auth required pam_userdb.so db=/etc/vsftpd/virtual-users
account required pam_userdb.so db=/etc/vsftpd/virtual-users

이제 준비는 다 된 것 같다.
가상 계정을 생성해 보자.

가상 계정 정보들은 일반 텍스트 파일로 생성해서 vsftpd에서 사용할 db 파일로 변환을 해주어야 하는데 누출되지 않고 잃어 버리지 않게 잘 관리해주어야 할 필요가 있다.

작성 방식은 아이디와 패스워드를 줄 바꿈으로 적어 주면 된다.

<아이디1>
<비밀번호1>
<아이디2>
<비밀번호2>

이런 식.

$ vi virtual-users.txt

생성 후 db 파일로 변환.

$ sudo db_load -T -t hash -f virtual-users.txt /etc/vsftpd/virtual-users.db

마지막으로 정말 마지막으로 virtual-users.txt에 추가한 가상 계정이 사용할 폴더를 생성하고 권한을 주면 끝.

$ sudo mkdir /home/ftp/[아이디1]
$ sudo chown ftp:ftp /home/ftp/[아이디1]

서비스 실행하고.

$ sudo service vsftpd start

FTP Client로 접속해서 테스트.

Advertisements