웹사이트 검색

CentOS 7에서 보안 파일 전송을 위해 SSL/TLS를 사용하여 FTP 서버를 보호하는 방법


원래 설계에 따라 FTP(파일 전송 프로토콜)는 안전하지 않습니다. 즉, 사용자 자격 증명과 함께 두 시스템 간에 전송되는 데이터를 암호화하지 않습니다. 이는 데이터 보안은 물론 서버 보안에도 막대한 위협을 가하고 있습니다.

이 튜토리얼에서는 CentOS/RHEL 7 및 Fedora의 FTP 서버에서 데이터 암호화 서비스를 수동으로 활성화하는 방법을 설명합니다. SSL/TLS 인증서를 사용하여 VSFTPD(Very Secure FTP Daemon) 서비스를 보호하는 다양한 단계를 살펴보겠습니다.

전제 조건:

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

시작하기 전에 이 튜토리얼의 모든 명령은 root로 실행됩니다. 그렇지 않으면 루트 계정을 사용하여 서버를 제어하지 않는 경우 sudo 명령을 사용하여 루트 권한을 얻으십시오.

1단계. SSL/TLS 인증서 및 개인 키 생성

1. SSL/TLS 인증서와 키 파일을 저장할 /etc/ssl/ 아래 하위 디렉터리를 만드는 것부터 시작해야 합니다. :

mkdir /etc/ssl/private

2. 그런 다음 아래 명령을 실행하여 vsftpd에 대한 인증서와 키를 단일 파일로 생성합니다. 사용된 각 플래그에 대한 설명은 다음과 같습니다.

  1. req – X.509 인증서 서명 요청(CSR) 관리를 위한 명령입니다.
  2. x509 – X.509 인증서 데이터 관리를 의미합니다.
  3. – 인증서가 유효한 일수를 정의합니다.
  4. newkey – 인증서 키 프로세서를 지정합니다.
  5. rsa:2048 – RSA 키 프로세서는 2048비트 개인 키를 생성합니다.
  6. keyout – 키 저장 파일을 설정합니다.
  7. out – 인증서 저장 파일을 설정합니다. 인증서와 키는 모두 동일한 파일(/etc/ssl/private/vsftpd.pem)에 저장됩니다.
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단계. SSL/TLS를 사용하도록 VSFTPD 구성

3. VSFTPD 구성을 수행하기 전에 99040000-50000 포트를 열어 TLS 연결과 패시브 포트의 포트 범위를 허용해 보겠습니다. VSFTPD 구성 파일에 각각 정의하려면 다음을 수행하십시오.

firewall-cmd --zone=public --permanent --add-port=990/tcp
firewall-cmd --zone=public --permanent --add-port=40000-50000/tcp
firewall-cmd --reload

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

vi /etc/vsftpd/vsftpd.conf

ssl_enable 옵션을 찾아 해당 값을 YES로 설정하여 SSL 사용을 활성화합니다. 또한 TSL이 SSL보다 안전하므로 VSFTPD가 TLS를 사용하도록 제한합니다. 대신 ssl_tlsv1_2 옵션을 사용하세요.

ssl_enable=YES
ssl_tlsv1_2=YES
ssl_sslv2=NO
ssl_sslv3=NO

5. 그런 다음 아래 줄을 추가하여 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 옵션을 사용하여 암호화된 SSL 연결에 VSFTPD가 허용할 SSL 암호를 선택해야 합니다. 이는 다음에서 취약점을 발견한 특정 암호를 강제로 적용하려는 공격자의 노력을 크게 제한할 수 있습니다.

ssl_ciphers=HIGH

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

pasv_min_port=40000
pasv_max_port=50000

9. 선택적으로 SSL 디버깅을 허용합니다. 즉, openSSL 연결 진단이 debug_ssl 옵션을 사용하여 VSFTPD 로그 파일에 기록됩니다.

debug_ssl=YES

모든 변경 사항을 저장하고 파일을 닫습니다. 그런 다음 VSFTPD 서비스를 다시 시작해 보겠습니다.

systemctl restart vsftpd

3단계: SSL/TLS 연결을 사용하여 FTP 서버 테스트

10. 위 구성을 모두 수행한 후 다음과 같이 명령줄에서 FTP 사용을 시도하여 VSFTPD가 SSL/TLS 연결을 사용하고 있는지 테스트합니다.

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>

위 스크린샷에서 VSFTPD는 암호화 서비스를 지원하는 클라이언트에서만 사용자 로그인을 허용할 수 있다는 오류가 있음을 알 수 있습니다.

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

4단계: FTP 서버에 안전하게 연결하기 위해 FileZilla 설치

11. FileZilla는 기본적으로 SSL/TLS 연결을 지원하는 현대적이고 대중적이며 중요한 크로스 플랫폼 FTP 클라이언트입니다.

Linux에 FileZilla를 설치하려면 아래 명령을 실행하십시오.

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

--------- On Debian/Ubuntu ---------
sudo apt-get 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 서버에 연결하려면 추가 정보:

이 단계에서는 TLS 연결을 통해 FTP 서버에 성공적으로 로그인해야 합니다. 아래 인터페이스에서 자세한 내용을 보려면 연결 상태 섹션을 확인하세요.

15. 마지막으로 로컬 컴퓨터에서 파일 폴더의 FTP 서버로 파일을 전송해 보세요. FileZilla 인터페이스 하단을 살펴보세요. 파일 전송에 관한 보고서.

그게 다야! 이 튜토리얼에서 보여드린 것처럼 SSL/TLS 연결을 사용하도록 구성하지 않는 한 FTP는 기본적으로 안전하지 않다는 점을 항상 명심하세요. 아래 피드백 양식을 통해 이 튜토리얼/주제에 대한 생각을 공유하세요.