웹사이트 검색

CentOS VPS에서 SSL/TLS를 사용하도록 vsftpd를 구성하는 방법


소개

경고: FTP는 안전하지 않습니다! FTP 대신 SFTP 사용을 고려하십시오.

FTP 또는 파일 전송 프로토콜은 로컬 서버와 원격 서버 간에 파일을 전송하는 방법입니다. 매우 인기 있고 유비쿼터스이지만 이 파일 전송 방법의 사용은 디자인에 내재된 보안 부족으로 인해 선호도가 떨어졌습니다.

매우 유능한 대안은 위에서 언급한 SFTP입니다. 이 프로토콜은 SSH를 통한 파일 공유를 구현합니다. FTP를 반드시 사용해야 하는 경우 최소한 SSL/TLS 인증서로 연결을 보호해야 합니다.

이 가이드에서는 CentOS 6.4 VPS에서 TLS/SSL 인증서를 사용하도록 vsftpd를 구성합니다.

vsftpd 설치

vsftpd 서버는 CentOS의 기본 리포지토리에서 사용할 수 있습니다. 다음을 입력하여 설치할 수 있습니다.

sudo yum install vsftpd

이제 vsftpd 서버가 VPS에 설치되었습니다. 다음 섹션에서 몇 가지 연결 옵션을 구성할 수 있습니다.

vsftpd에 대한 기본 설정 구성

CentOS의 vsftpd에 대한 기본 구성 파일은 /etc/vsftpd/ 디렉토리에 보관됩니다. vsftpd.conf라고 합니다.

루트 권한으로 편집기에서 이 파일을 엽니다.

sudo nano /etc/vsftpd/vsftpd.conf

보안을 강화하고 연결 옵션을 설정하려면 이 파일에서 일부 기본 매개변수를 조정해야 합니다.

가장 먼저 할 일은 익명 사용자를 비활성화하는 것입니다. 이 옵션은 대규모 공용 파일 덤프(예: 공용 소프트웨어 리포지토리)에는 적합할 수 있지만 개인 FTP 서버에는 거의 적합하지 않습니다.

anonymous_enable=NO

익명 사용자를 비활성화하고 있으므로 시스템에서 사용자를 인증할 수 있는 방법을 제공해야 합니다. 우리는 로컬 사용자를 허용할 것입니다. 즉, vsftpd는 Linux 시스템 사용자 및 인증을 사용하여 로그인할 수 있는 사람을 결정합니다.

이를 활성화하려면 이 옵션이 설정되어 있는지 확인하십시오.

local_enable=YES

또한 쓰기 액세스를 허용하여 자료를 업로드하고 콘텐츠를 수정할 수 있습니다.

write_enable=YES

또한 사용자를 각자의 홈 디렉토리로 제한하려고 합니다. 이에 대한 옵션은 다음과 같습니다.

chroot_local_user=YES

이는 기본(비SSL) FTP 구성에 충분합니다. 나중에 SSL 기능을 추가할 예정입니다.

파일을 저장하고 닫습니다.

FTP 사용자 생성

로컬 사용자를 사용하고 chroot 환경을 사용하여 홈 디렉토리에 제한하도록 선택했습니다.

다음 명령을 사용하여 새 사용자를 만듭니다.

sudo adduser ftpuser

다음을 입력하여 새 사용자에게 암호를 할당합니다.

sudo passwd ftpuser

CentOS 6.4의 vsftpd 버전은 이전 버전이므로 일부 최신 버전보다 설정의 이 부분이 더 쉽습니다.

vsftpd로 SSL 구성

vsftp가 SSL과 함께 작동하도록 하기 위한 첫 번째 단계는 SSL 인증서를 만드는 것입니다. 우리는 실제로 SSL의 후속이며 더 안전한 프로토콜인 TLS를 사용할 것입니다.

파일을 저장할 SSL 디렉토리 내에 하위 디렉토리를 생성합니다.

sudo mkdir /etc/ssl/private

단일 파일에 인증서와 키를 생성하려면 다음 명령을 사용할 수 있습니다.

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

묻는 질문을 작성하십시오. 가장 중요한 것은 연결에 사용할 IP 주소 또는 도메인 이름인 서버의 "일반 이름\입니다.

vsftpd 구성 파일에 SSL 세부 정보 추가

이제 새 키를 가리키도록 구성을 변경하고 보안 연결을 구성해야 합니다.

vsftpd 구성 파일을 루트로 다시 엽니다.

sudo nano /etc/vsftpd/vsftpd.conf

파일의 맨 아래로 스크롤하십시오. 여기에 SSL/TLS 정보를 추가합니다.

인증서와 키 파일의 위치를 지정해야 합니다. 실제로 두 정보를 하나의 파일로 결합했으므로 두 옵션 모두 동일한 파일을 가리킵니다.

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

다음으로 이러한 파일의 사용을 활성화하고 익명 사용자를 비활성화해야 합니다. 또한 데이터 전송 및 로그인 루틴 모두에 SSL을 사용해야 합니다. 이렇게 하면 보안이 필수가 됩니다.

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

다음으로 SSL보다 안전한 TLS로 연결 유형을 제한합니다. 명시적으로 TLS를 허용하고 SSL 사용을 거부하여 이를 수행합니다.

ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

완료하기 전에 몇 가지 구성 옵션을 더 추가합니다.

require_ssl_reuse=NO
ssl_ciphers=HIGH

파일을 저장하고 닫습니다.

변경 사항을 적용하려면 vsftp를 다시 시작해야 합니다.

sudo /etc/init.d/vsftpd restart

또한 재부팅할 때마다 자동으로 시작되도록 구성합니다.

sudo chkconfig vsftpd on

FileZilla로 vsftpd 서버에 연결하는 방법

SSL 및 TLS 연결은 대부분의 최신 FTP 클라이언트에서 가능합니다. 플랫폼 간 호환성으로 인해 보안 연결을 사용하도록 FileZilla를 설정하는 방법을 보여줍니다. 컴퓨터에 적합한 설치 절차를 사용하여 클라이언트를 이미 설치했다고 가정합니다.

FileZilla 프로그램을 엽니다. 인터페이스에서 아이콘을 클릭하여 "사이트 관리자\를 열 수 있습니다. 이 그림의 맨 왼쪽에 있는 아이콘처럼 보일 것입니다.

팝업되는 새 인터페이스에서 왼쪽 하단 모서리에 있는 "새 사이트\ 버튼을 클릭해야 합니다. 나중에 쉽게 식별할 수 있도록 서버 연결 이름을 지정합니다.

"호스트\ 필드에 IP 주소를 입력하고 프로토콜 드롭다운 메뉴에서 "FTP - 파일 전송 프로토콜\을 선택합니다. 암호화 드롭다운에서 "TLS를 통한 명시적 FTP 필요\를 선택합니다.

로그인 유형 메뉴에서 "암호 요청\을 선택합니다. "사용자\ 필드에 대해 생성한 FTP 사용자를 입력합니다.

이제 패널 하단에서 "연결\을 클릭할 수 있습니다. FTP 사용자의 비밀번호를 입력하라는 메시지가 표시됩니다.

다음 단계는 TLS를 사용하여 원격 서버에 연결하고 있다는 첫 번째 신호입니다. 사용 중인 인증서를 수락하라는 메시지가 표시됩니다.

실제로 올바른 위치에 연결하고 있는지 확인하기 위해 인증서를 만들 때 입력한 정보를 볼 수 있어야 합니다.

인증서를 승인하여 연결을 설정하십시오.

결론

이 구성은 올바른 방향으로 나아가는 단계이지만 연결을 설정하기 전에는 여전히 보안 문제가 있습니다. 이러한 우려로 인해 인터넷에 개방된 대부분의 설정에서는 피해야 합니다. SFTP는 익숙하지만 보안을 신뢰할 수 있는 일부 동일한 도구를 사용할 수 있는 기능을 원하는 경우 훌륭한 대안입니다.

저스틴 엘링우드