Ubuntu에서 SSL / TLS를 사용하여 보안 FTP 서버 설정


이 튜토리얼에서는 Ubuntu 16.04/16.10에서 SSL/TLS를 사용하여 FTP 서버 (VSFTPD는 \"Very Secure FTP Daemon\"의 약자)를 보호하는 방법을 설명합니다.

CentOS 기반 배포 용 보안 FTP 서버를 설정하려는 경우 다음을 읽을 수 있습니다. – CentOS에서 SSL/TLS를 사용하여 FTP 서버 보안

이 가이드의 여러 단계를 수행 한 후에는 안전한 데이터 전송을 위해 FTP 서버에서 암호화 서비스를 활성화하는 것이 중요하다는 것을 알게 될 것입니다.

  1. You must Install and Configure a FTP Server in Ubuntu

계속 진행하기 전에이 기사의 모든 명령이 루트 또는 sudo 권한있는 계정으로 실행되는지 확인하십시오.

1 단계 : Ubuntu에서 FTP 용 SSL / TLS 인증서 생성

1. SSL/TLS 인증서 및 키 파일이없는 경우 저장하기 위해/etc/ssl/아래에 하위 디렉토리를 만드는 것으로 시작합니다.

$ sudo mkdir /etc/ssl/private

2. 이제 아래 명령을 실행하여 단일 파일에 인증서와 키를 생성 해 보겠습니다.

$ sudo openssl req -x509 -nodes -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem -days 365 -newkey rsa:2048

위의 명령은 아래 질문에 답하라는 메시지를 표시합니다. 시나리오에 적용 할 수있는 값을 입력하는 것을 잊지 마십시오.

Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:Lower Parel
Locality Name (eg, city) [Default City]:Mumbai
Organization Name (eg, company) [Default Company Ltd]:TecMint.com
Organizational Unit Name (eg, section) []:Linux and Open Source
Common Name (eg, your name or your server's hostname) []:tecmint
Email Address []:[email protected]

2 단계 : Ubuntu에서 SSL / TLS를 사용하도록 VSFTPD 구성

3. VSFTPD 구성을 수행하기 전에 UFW 방화벽이 활성화 된 사용자의 경우 포트 990 및 40000-50000을 열어 TLS 연결과 수동 포트의 포트 범위를 각각 VSFTPD 구성 파일에 설정해야합니다.

$ sudo ufw allow 990/tcp
$ sudo ufw allow 40000:50000/tcp
$ sudo ufw status

4. 이제 VSFTPD 구성 파일을 열고 SSL 세부 정보를 정의합니다.

$ sudo vi /etc/vsftpd/vsftpd.conf
OR
$ sudo nano /etc/vsftpd/vsftpd.conf

그런 다음 ssl_enable 옵션을 추가하거나 찾은 다음 해당 값을 YES로 설정하여 SSL 사용을 활성화합니다. TLS가 SSL보다 더 안전하므로 VSFTPD가 대신 TLS를 사용하도록 제한합니다. " ssl_tlsv1 옵션 :

ssl_enable=YES
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

5. 다음으로 다음과 같이 # 문자를 사용하여 아래 줄을 주석 처리합니다.

#rsa_cert_file=/etc/ssl/private/ssl-cert-snakeoil.pem
#rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

그런 다음 아래 행을 추가하여 SSL 인증서 및 키 파일의 위치를 정의하십시오.

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

6. 이제 익명 사용자가 SSL을 사용하지 못하도록 차단 한 다음 모든 비 익명 로그인이 데이터 전송에 보안 SSL 연결을 사용하고 로그인 중에 암호를 보내도록해야합니다.

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

7. 또한 아래 옵션을 사용하여 FTP 서버에 더 많은 보안 기능을 추가 할 수 있습니다. require_ssl_reuse = YES 옵션을 사용하면 SSL 세션 재사용을 나타 내기 위해 모든 SSL 데이터 연결이 필요합니다. 제어 채널과 동일한 마스터 비밀을 알고 있음을 증명합니다. 그래서 우리는 그것을 비활성화해야합니다.

require_ssl_reuse=NO

또한 ssl_ciphers 옵션을 사용하여 VSFTPD가 암호화 된 SSL 연결을 허용 할 SSL 암호를 설정할 수 있습니다. 이렇게하면 다음과 같은 취약점을 발견했을 가능성이있는 특정 암호를 사용하려는 공격자의 모든 노력을 좌절시킬 수 있습니다.

ssl_ciphers=HIGH

8. 이제 패시브 포트의 포트 범위 (최소 및 최대 포트)를 정의하겠습니다.

pasv_min_port=40000
pasv_max_port=50000

9. SSL 디버깅을 활성화하려면 openSSL 연결 진단이 VSFTPD 로그 파일에 기록됩니다. debug_ssl 옵션을 사용할 수 있습니다.

debug_ssl=YES

마지막으로 파일을 저장하고 닫습니다. 그런 다음 VSFTPD 서비스를 다시 시작하십시오.

$ systemctl restart vsftpd

3 단계 : Ubuntu에서 SSL / TLS 연결로 FTP 확인

10. 위의 모든 구성을 수행 한 후 아래와 같이 명령 줄에서 FTP를 사용하여 VSFTPD가 현재 SSL/TLS 연결을 사용하고 있는지 테스트합니다.

아래 출력에서 VSFTPD는 암호화 서비스를 지원하는 보안 클라이언트에서 사용자 (비 익명) 로그인 만 허용 할 수 있다는 오류 메시지가 있습니다.

$ ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : ravi
530 Non-anonymous sessions must use encryption.
Login failed.
421 Service not available, remote server has closed connection
ftp>

명령 줄은 암호화 서비스를 지원하지 않으므로 위의 오류가 발생합니다. 따라서 암호화 서비스가 활성화 된 FTP 서버에 안전하게 연결하려면 FileZilla와 같이 기본적으로 SSL/TLS 연결을 지원하는 FTP 클라이언트가 필요합니다.

4 단계 : 클라이언트에 FileZilla를 설치하여 FTP를 안전하게 연결

FileZilla는 강력하고 널리 사용되는 크로스 플랫폼 FTP 클라이언트로 SSL/TLS를 통한 FTP 등을 지원합니다. Linux 클라이언트 시스템에 FileZilla를 설치하려면 다음 명령을 사용하십시오.

--------- On Debian/Ubuntu ---------
$ sudo apt-get install filezilla   

--------- On CentOS/RHEL/Fedora --------- 
# yum install epel-release filezilla

--------- On Fedora 22+ --------- 
$ sudo dnf install filezilla

12. 설치가 완료되면이를 열고 File => Sites Manager로 이동하거나 Ctrl + S를 눌러 아래의 Site Manager 인터페이스를 가져옵니다.

13. 이제 호스트/사이트 이름을 정의하고, IP 주소를 추가하고, 사용할 프로토콜, 암호화 및 로그온 유형을 아래 스크린 샷과 같이 정의합니다 (시나리오에 적용되는 값 사용).

새 사이트/호스트 연결을 구성하려면 새 사이트 버튼을 클릭합니다.

Host:  192.168.56.10
Protocol:  FTP – File Transfer Protocol
Encryption:  Require explicit FTP over   #recommended 
Logon Type: Ask for password	        #recommended 
User: username

14. 그런 다음 위의 인터페이스에서 연결을 클릭하여 암호를 입력 한 다음 SSL/TLS 연결에 사용되는 인증서를 확인하고 확인을 한 번 더 클릭하여 FTP 서버에 연결합니다.

15. 이제 TLS 연결을 통해 FTP 서버에 성공적으로 로그인 했어야합니다. 아래 인터페이스에서 자세한 정보를 보려면 연결 상태 섹션을 확인하십시오.

16. 마지막으로 로컬 컴퓨터에서 파일 폴더의 FTP 서버로 파일을 전송하고 FileZilla 인터페이스의 하단에서 파일 전송에 관한 보고서를 확인합니다.

그게 다야! "암호화 서비스를 활성화하지 않고 FTP 서버를 설치하면 특정 보안 문제가 있음을 항상 기억하십시오. 이 자습서에서 설명했듯이 SSL/TLS 연결을 사용하여 Ubuntu 16.04/16.10에서 보안을 구현하도록 FTP 서버를 구성 할 수 있습니다.

FTP 서버에서 SSL/TLS를 설정하는 데 문제가있는 경우 아래 의견 양식을 사용하여이 자습서/주제에 대한 문제 나 생각을 공유하십시오.