웹사이트 검색

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


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

CentOS 기반 배포판을 위한 보안 FTP 서버를 설정하려는 경우 CentOS에서 SSL/TLS를 사용하여 FTP 서버 보호를 읽어보세요.

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

요구사항

  1. Ubuntu에서 FTP 서버를 설치하고 구성해야 합니다.

더 진행하기 전에 이 문서의 모든 명령이 루트 또는 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 

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

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

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를 다음으로 제한합니다. 대신 ssl_tlsv1 옵션을 활성화하여 TLS를 사용하세요.

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단계: FTP를 안전하게 연결하기 위해 클라이언트에 FileZilla 설치

FileZilla는 SSL/TLS 등을 통한 FTP를 지원하는 강력하고 널리 사용되는 크로스 플랫폼 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. 설치가 완료되면 설치를 열고 파일=>사이트 관리자로 이동하거나 (Ctrl+S 누르기) >사이트 관리자 인터페이스는 아래에 있습니다.

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를 설정하는 데 문제가 있는 경우 아래 의견 양식을 사용하여 이 튜토리얼/주제에 관한 문제나 생각을 공유하세요.