AWS EC2에 FTP 서비스 설치와 운영(vsftpd 설치)

AWS EC2에 FTP 서비스 설치와 운영(vsftpd 설치)

아마존 EC2에 FTP 서비스를 하기 위해서 vsftpd를 설치하고 아래와 같이 설정한다. (우분투 기준)

 

1. 레포지토리 업데이트

sudo apt-get update

 

2. vsftpd 설치

sudo apt-get install vsftpd

 

3. 설치 후 /etc/vsftpd.conf 파일을 아래와 같이 수정한다.

write_enable=YES
local_umask=022
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=12000
pasv_max_port=12100

 

4. vsftpd 서비스를 재시작

sudo service vsftpd restart

 

5. 사용자 추가 : ftp user가 bash shell에 접근하는 것을 방지하기 위해 아래처럼 설정

sudo useradd -m john -d [접속할 홈디렉토리 패스] -s /usr/sbin/nologin
sudo passwd john

 

6. nologin shell을 위해 로그인 허용하기

/etc/shells를 열고 제일 아래줄에 아래 코드를 추가

/usr/sbin/nologin

 

7. FTP 클라이언트 프로그램으로 접속

 

오류 처리 : 530 login incorrect error 발생 시 아래와 같이 처리.

sudo apt-get remove vsftpd
sudo rm /etc/pam.d/vsftpd
sudo apt-get install vsftpd

 

참고 사이트

 

 

계정 퍼미션 설정

웹서비스의 홈디렉토리의 소유자를 www-data:www-data 로 변경하는 방법이 있다.

$ sudo chown -R www-data:www-data /home/unclepapa/public_html
위와 같은 방식은 www-data의 권한을 탈취당해도 www-data가 가진 권한이 매우 적기에 보안상 추천되고 있다.

하지만 이는 FTP 접속에 제한이 될 수 밖에 없는데 계정사용자가 홈디렉토리에 접속해도 소유권이 모두 www-data 이기에 업로드/수정이 불가능하게 된다.
FTP 사용에 편의를 위해서는 어떻게든 디렉토리와 파일의 소유권이 계정사용자를 포함해야 한다.

Owner 값은 id 값으로 중복될 수 없기때문에 www-data 값을 변경할 수는 없다.

Group 값은 중복될 수 있기때문에 www-data 의 group에 FTP 계정을 사용할 사용자를 추가할 수 있다.

$ sudo usermod -a -G www-data unclepapa
이 경우 기본적인 리눅스 umask 값에 의해 디렉토리 퍼미션이 755이기에 umask 값을 002로 변경하여 생성하는 디렉토리나 파일들이 775 / 664의 값을 갖도록 해야 파일의 업로드/수정이 가능해진다.

$ sudo chmod -R 775 /home/unclepapa/public_html
혹은 umask 값을 수정( 특정사용자의 umask 값을 변경하려면 ~/.bashrc 에 값을 적용)

$ sudo vi /etc/profile

umask 002