웹사이트 검색

CentOS 8에서 SSL/TLS를 사용하여 vsftp FTP 서버를 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. VSFTPD 설치
  3. VSFTPD용 사용자 만들기
  4. VSFTPD 구성
  5. 방화벽 및 SELinux 구성\n
  6. VSFTPD 서버에 연결
  7. TLS 지원으로 VSFTPD 구성
  8. VSFTPD TLS 연결 확인\n
  9. 결론

FTP는 서버와 클라이언트 간에 파일을 전송하는 데 널리 사용되는 프로토콜입니다. 오늘날 FTPD, VSFTPD, PROFTPD 및 pureftpd를 포함하여 많은 오픈 소스 FTP 서버를 사용할 수 있습니다. 그중 VSFTPD는 안전하고 빠르며 전 세계적으로 가장 널리 사용되는 프로토콜입니다. "매우 안전한 파일 전송 프로토콜 데몬"이라고도 합니다. 또한 SSL, IPv6, 명시적 및 암시적 FTPS를 지원합니다.

이 튜토리얼에서는 CentOS 8 서버에 VSFTPD를 설치하고 SSL/TLS로 보호하는 방법을 보여줍니다.

전제 조건

  • CentOS 8을 실행하는 서버.\n
  • 서버에 루트 암호가 구성되어 있습니다.\n

VSFTPD 설치

기본적으로 VSFTPD는 CentOS 8 기본 리포지토리에서 사용할 수 있습니다. 다음 명령을 실행하여 설치할 수 있습니다.

dnf install vsftpd -y

설치가 완료되면 VSFTPD 서비스를 시작하고 다음 명령을 사용하여 시스템 재부팅 후 시작되도록 활성화합니다.

systemctl start vsftpd
systemctl enable vsftpd

이 시점에서 VSFTPD 서버가 설치되어 실행 중입니다. 이제 다음 단계로 진행할 수 있습니다.

VSFTPD용 사용자 만들기

다음으로 VSFTPD에 대한 새 사용자를 생성해야 합니다. 따라서 이 사용자를 사용하여 FTP 서버에 액세스할 수 있습니다.

다음 명령을 실행하여 아래와 같이 vyom이라는 새 사용자를 만듭니다.

adduser vyom

그런 다음 다음 명령을 사용하여 사용자 vyom의 암호를 설정합니다.

passwd vyom

완료되면 다음 단계로 진행할 수 있습니다.

VSFTPD 구성

다음으로 아래와 같이 /etc/vsftpd 디렉터리에 있는 VSFTPD 기본 구성 파일을 엽니다.

nano /etc/vsftpd/vsftpd.conf

다음 줄을 변경합니다.

anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=NO

완료되면 파일을 저장하고 닫습니다. 그런 다음 VSFTPD 서비스를 다시 시작하고 다음 명령을 사용하여 서비스 상태를 확인합니다.

systemctl restart vsftpd
systemctl status vsftpd

다음 출력이 표시되어야 합니다.

? vsftpd.service - Vsftpd ftp daemon
   Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Fri 2020-02-21 00:43:57 EST; 6s ago
  Process: 2698 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS)
 Main PID: 2699 (vsftpd)
    Tasks: 1 (limit: 6102)
   Memory: 1020.0K
   CGroup: /system.slice/vsftpd.service
           ??2699 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf

Feb 21 00:43:57 centos8 systemd[1]: Stopped Vsftpd ftp daemon.
Feb 21 00:43:57 centos8 systemd[1]: Starting Vsftpd ftp daemon...
Feb 21 00:43:57 centos8 systemd[1]: Started Vsftpd ftp daemon.

이 시점에서 VSFTPD 서버가 구성됩니다. 이제 SELinux 및 방화벽을 통해 모든 VSFTPD를 진행할 수 있습니다.

방화벽 및 SELInux 구성

기본적으로 SELinux는 CentOS 8에서 활성화되어 있습니다. 따라서 VSFTPD에 대해 SELinux를 구성해야 합니다.

다음 명령을 사용하여 FTP 액세스를 허용하도록 SELinux를 구성할 수 있습니다.

setsebool -P allow_ftpd_full_access=1

다음으로 방화벽을 통한 FTP 서비스를 허용해야 합니다. 다음 명령으로 허용할 수 있습니다.

firewall-cmd --zone=public --permanent --add-service=ftp

그런 다음 방화벽 구성 변경 사항을 적용하기 위해 firewalld 서비스를 다시 로드합니다.

firewall-cmd --reload

이 시점에서 방화벽과 SELinux는 원격 시스템에서 들어오는 FTP 연결을 허용하도록 구성됩니다. 이제 FTP 연결 테스트를 진행할 수 있습니다.

VSFTPD 서버에 연결

이제 VSFTPD 서버가 설치 및 구성되었습니다. 이제 클라이언트 시스템에서 FTP 서버에 연결할 차례입니다.

이렇게 하려면 클라이언트 시스템으로 이동하고 다음 명령을 실행하여 FTP 서버에 연결하십시오.

ftp 172.20.10.3

아래와 같이 FTP 사용자와 비밀번호를 입력하라는 메시지가 표시됩니다.

Connected to 172.20.10.3.
220 (vsFTPd 3.0.3)
Name (172.20.10.3:root): vyom
331 Please specify the password.
Password:
230 Login successful.

연결이 성공적으로 설정되면 다음 출력이 표시됩니다.

Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

이제 exit를 입력하고 Enter 버튼을 눌러 FTP 세션을 종료합니다.

TLS 지원으로 VSFTPD 구성

보안상의 이유로 SSL/TLS로 FTP 전송을 암호화하는 것이 좋습니다. 이렇게 하려면 SSL 인증서를 생성하고 이를 사용하도록 VSFTPD 서버를 구성해야 합니다.

먼저 시스템에 OpenSSL 패키지를 설치해야 합니다. 다음 명령으로 설치할 수 있습니다.

dnf install openssl -y

설치가 완료되면 SSL 인증서를 저장할 새 디렉터리를 만듭니다.

mkdir /etc/ssl/private

다음으로 다음 명령을 사용하여 자체 서명된 인증서를 생성합니다.

openssl req -newkey rsa:2048 -nodes -keyout /etc/ssl/private/vsftpd.key -x509 -days 365 -out /etc/ssl/private/vsftpd.crt

아래와 같이 필요한 모든 정보를 제공하십시오.

Generating a RSA private key
...+++++
...........+++++
writing new private key to '/etc/ssl/private/vsftpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:GUJ
Locality Name (eg, city) [Default City]:JUN
Organization Name (eg, company) [Default Company Ltd]:IT
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:ftpserver
Email Address []:

SSL 인증서를 생성한 후 이 인증서를 사용하도록 VSFTPD를 구성해야 합니다.

아래와 같이 VSFTPD 기본 구성 파일을 엽니다.

nano /etc/vsftpd/vsftpd.conf

파일 끝에 다음 줄을 추가합니다.

#Path of the SSL certificate
rsa_cert_file=/etc/ssl/private/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key
#Enable the SSL
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
#TSL is more secure than SSL so enable ssl_tlsv1_2.
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
#Enable SSL debugging to store all VSFTPD log.
debug_ssl=YES

완료되면 파일을 저장하고 닫습니다. 그런 다음 VSFTPD 서비스를 다시 시작하여 변경 사항을 적용합니다.

systemctl restart vsftpd

이 시점에서 VSFTPD 서버는 SSL 인증서를 사용하도록 구성됩니다. 이제 다음 단계로 진행할 수 있습니다.

VSFTPD TLS 연결 확인

VSFTPD 서버는 이제 SSL/TLS 지원으로 보호됩니다. 다음으로 아래와 같이 명령줄에서 FTP 서버에 연결해 보십시오.

ftp 172.20.10.3

다음 출력에 오류가 표시되어야 합니다.

Connected to 172.20.10.3.
220 (vsFTPd 3.0.2)
Name (172.20.10.3:root): vyom
530 Non-anonymous sessions must use encryption.
Login failed.
421 Service not available, remote server has closed connection
ftp> 

명령줄 클라이언트에서 VSFTP 서버에 연결할 수 없습니다. SSL/TLS 지원을 지원하지 않기 때문입니다.

따라서 TLS 연결을 지원하는 FTP 클라이언트를 사용하여 VSFTPD 연결을 다운로드하고 테스트해야 합니다.

이렇게 하려면 클라이언트 시스템으로 이동하여 FileZilla 클라이언트 패키지를 설치합니다.

FileZilla를 설치한 후 아래와 같이 FileZilla 소프트웨어를 엽니다.

다음으로 아래와 같이 사이트 관리자를 엽니다.

새 사이트 버튼을 클릭하여 아래와 같이 새 FTP 연결을 추가합니다.

FTP 서버 IP를 제공하고, FTP 프로토콜을 선택하고, "TLS를 통한 명시적 FTP 사용"을 선택하고, 비밀번호 요청을 선택하고, FTP 서버의 사용자 이름을 제공하고, 연결 버튼을 클릭합니다. 아래와 같이 FTP 사용자의 비밀번호를 입력하라는 메시지가 표시됩니다.

FTP 비밀번호를 입력하고 확인 버튼을 클릭합니다. 아래와 같이 SSL/TLS 연결에 사용되는 인증서를 확인하라는 메시지가 표시됩니다.

확인 버튼을 클릭하여 인증서를 확인합니다. 연결이 성공적으로 설정되면 다음 화면이 표시됩니다.

결론

위 가이드에서는 CentOS 8에 VSFTPD 서버를 설치했습니다. 또한 SSL/TLS 인증서를 사용하도록 VSFTPD 서버를 구성했습니다. 이제 FTP 서버가 보호되었습니다. 궁금한 점이 있으면 언제든지 문의해 주세요.