[우분투 16.04] vsftpd로 패시브모드 FTPS(FTPES) 서버 구축 - 1

위 글에서 패시브 모드 설정까지 진행했었죠?

이제 FTPS(FTPES) 연결을 설정하겠습니다.

먼저 인증서를 만들어야 하는데요, 인증서는 openssl 패키지를 써서 발행합니다.


▲ 위의 스크린 샷을 참고하여 PC에 openssl 패키지가 설치되어 있는지 확인하고(아마 기본설치 되어 있을 겁니다.), 없으면 설치해 주세요(터미널 창에서 sudo apt-get install openssl 입력).


※ OpenSSL 참고 문서들

   https://www.openssl.org/docs/

   https://www.feistyduck.com/library/openssl-cookbook/


이제 인증서 파일을 만들어 줍니다. 4096비트로 만들고, 갱신기간은 3650일(10년)으로 넉넉하게. ^^;;

터미널 창에 sudo openssl req -x509 -days 3650 -newkey rsa:4096 -nodes -keyout /etc/vsftpd/ssl/vsftpd.pem -out /etc/vsftpd/ssl/vsftpd.pem 라고 쳐주세요(아래 스크린 샷 참고.). 붉게 표시한 인증서 파일의 경로는 원하는대로 바꾸셔도 됩니다.


▲ 저는 가상계정 리스트 관리공간을 미리 만들 겸 /etc/vsftpd/ 디렉토리를 생성하고, 하위에 ssl이라는 인증서 저장용 디렉토리를 만든 다음 진행했습니다.


Country Name (2 letter code) [AU]:

State or Province Name (full name) [Some-State]:

Locality Name (eg, city) []:

Organization Name (eg, company) [Internet Widgits Pty Ltd]:

Organizational Unit Name (eg, section) []:

Common Name (e.g. server FQDN or YOUR name) []:

Email Address []:

이런 입력 란들은 별 의미가 없습니다. 적당히 채우거나 .을 넣어서 비우세요. 엔터 쳐서 넘겨도 됩니다.


※ 인증서 생성 명령어의 의미가 궁금하면 터미널 창에서 man req 라고 쳐보세요. 그러면 req 커맨드에 대한 매뉴얼을 볼 수 있습니다. 다른 OpenSSL 커맨드들이 궁금하다면 openssl help 라고 쳐보세요.


▲ 파일관리자 프로그램으로 인증서 생성 경로에 접근해보면 pem 파일을 확인할 수 있을 겁니다. 더블클릭 해보니까 4096비트라고 잘 나오네요.


이제 vsftpd 설정파일에 SSL(TLS) 적용 옵션과 인증서 위치를 넣어줄 차례입니다.

터미널 창에서 sudo gedit /etc/vsftpd.conf 라고 입력하여 설정파일을 띄웁니다. 그리고 하단에 아래의 내용을 추가하고 저장+빠져나옵니다.

(설정파일에 기본 설정값이 아래의 내용과 겹치는 부분이 있다면 해당 기본 설정값은 주석처리(앞에 #붙이기) 하거나 지워주세요. 겹치는 “기본 설정” 항목은 rsa_cert_file | rsa_private_key_file | ssl_enable 입니다.)


########### SSL(TLS) 활성화 ###########

ssl_enable=YES


########### 로그인할 때 클라이언트가 반드시 TLS를 사용하기 ###########

allow_anon_ssl=NO

force_local_data_ssl=YES

force_local_logins_ssl=YES

ssl_tlsv1=YES

ssl_sslv2=NO

ssl_sslv3=NO

require_ssl_reuse=NO

ssl_ciphers=HIGH


########### SSL 인증서/비밀키 경로 ###########

rsa_cert_file=/etc/vsftpd/ssl/vsftpd.pem

rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.pem


(인증서 경로는 본인이 생성한 위치와 일치시켜야 하겠죠? 만약 자체 인증서 대신 Let's Encrypt 인증서를 쓰고자 한다면 Let's Encrypt 인증서를 발급받은 다음

rsa_cert_file=/etc/letsencrypt/live/블라블라/cert.pem

rsa_private_key_file=/etc/letsencrypt/live/블라블라/privkey.pem

처럼 인증서 경로를 바꿔주면 되겠습니다.)

이후 vsftpd 서비스를 재시작하여 설정파일을 반영합니다.


▲ 이렇게 하면 되겠죠?



이제 파일질라 클라이언트 프로그램으로 localhost 접속 테스트(vsftpd 구축한 컴퓨터에서 자체 테스트) 해보세요. 파일질라에는 주소 자동보정 기능이 있으니까 vsftpd.conf 파일에서 pasv_address 주소 수정을 따로 안하셔도 될 거예요. 만약 localhost 접속이 안된다면 첫번째 글(링크)의 최하단을 참고하여 설정파일의 pasv_address 주소를 외부IP/공유기 내부망 IP/DDNS 주소로 수정 후 vsftpd 서비스를 재시작하고 해당 주소로 접속 테스트해 보세요.


▲ 이렇게 인증서 확인 창이 뜨면 성공입니다.


▲ 참고로 접속 설정은

일반 탭 - 암호화 : TLS를 통한 명시적 FTP 필요

전송 설정 탭 - 전송 모드 : 수동형

문자셋 탭 - UTF-8로 강제 설정

이렇게 하면 됩니다.


로컬 테스트를 성공했다면...

방화벽(iptable 등) 사용자 분들께서는 vsftpd용 포트를 풀어주고,

(우분투 데스크톱 버전은 기본적으로 방화벽이 해제되어 있기 때문에 방법을 다루지 않겠습니다. 저도 잘 몰라요.)

공유기 사용자 분들께서는 DDNS로 주소 고정+포트포워딩(포트트리거)로 공유기 방화벽의 포트를 뚫어주면 외부에서도 접속 가능할 겁니다.


※ 테스트가 잘 안된다! 자꾸 실패한다! 하는 분들께서는 터미널 창에서

sudo service vsftpd stop 이라고 쳐서 vsftpd 서비스를 중단시킨 뒤에

sudo vsftpd /etc/vsftpd.conf 라고 쳐보면 구문오류가 어디서 났는지 비교적 정확하게 알려줄 겁니다. 적당히 수정하고

sudo service vsftpd start 라고 쳐서 서비스를 시작 후 테스트해 보세요. 성공할 때까지 이 과정을 반복하시고요.


글이 길어졌네요. 다음 글에서 가상계정 만들어서 우분투 깡통계정에 연결하는 과정을 다뤄 보겠습니다.

반응형