
FTP(File Transfer Protocol)는 네트워크를 통해 파일을 주고받는 데 널리 사용되는 가볍고 효율적인 프로토콜입니다. 하지만 한 가지 치명적인 단점이 있습니다. 바로 데이터가 평문(plain text)으로 전송된다는 점입니다. 즉, 전송 과정이 암호화되지 않기 때문에 도청이나 변조와 같은 보안 위협에 그대로 노출될 수 있습니다.
다행히 ProFTPD와 같은 최신 FTP 서버는 SSL/TLS를 지원합니다. 이를 활용하면 두 시스템 간의 파일 전송이 효율적일 뿐만 아니라 암호화를 통해 훨씬 안전해집니다. 이 글에서는 Ubuntu 22.04 환경에서 TLS가 적용된 ProFTPD를 설치하고 설정하는 방법을 단계별로 살펴보겠습니다.
ProFTPD란 무엇인가?
ProFTPD는 로컬 머신과 웹 서버 간에 FTP 연결을 구축할 수 있게 해주는 오픈소스 기반의 안정적인 FTP 서버입니다. 설정이 간편하며 Unix/Linux 서버와 완벽하게 호환되는 것이 특징입니다.
ProFTPD 설치 전 요구 사항
ProFTPD 설치를 시작하기 전에 다음 조건을 충족해야 합니다.
- Ubuntu Server 22.04
- 서버에 대한 root 권한
위 요구 사항을 충족했다면 바로 ProFTPD 서버 설치를 진행할 수 있습니다.
1단계: Ubuntu 업데이트 및 업그레이드
ProFTPD를 설치하기 전에 먼저 명령줄에서 Ubuntu 패키지 목록을 업데이트합니다. 다음 명령어를 실행하세요.
sudo apt-get update -yupdate 명령은 패키지 목록만 갱신합니다. 실제 패키지까지 최신 버전으로 올리려면 아래 명령어를 실행합니다.
sudo apt-get upgrade -y업그레이드 내용을 시스템에 적용하려면 Linux를 재부팅해야 합니다.
reboot2단계: Ubuntu에 ProFTPD 서버 설치
이제 ProFTPD를 설치할 차례입니다. 다음 명령어를 실행하여 서버를 설치합니다.
sudo apt install proftpd -y설치가 완료되면 정상적으로 설치되었는지 확인해야 합니다. 가장 간단한 방법은 설치된 서비스의 버전을 확인하는 것입니다.
sudo proftpd --version터미널에 버전 번호가 출력되면 ProFTPD 설치가 성공적으로 완료된 것이며, 시스템에 서버가 준비된 상태입니다.
3단계: ProFTPD 서비스 시작 및 활성화
이제 ProFTPD를 사용할 수 있지만, 먼저 서비스를 시작해야 합니다. 다음 명령어를 실행하세요.
sudo systemctl start proftpd서비스를 시작한 후, 부팅 시 자동 실행되도록 활성화합니다.
sudo systemctl enable proftpd마지막으로 서비스 상태를 확인하여 ProFTPD가 정상적으로 동작 중인지 점검합니다.
sudo systemctl status proftpd
위 화면처럼 ProFTPD 데몬이 active 상태로 정상 실행 중이라면 모든 준비가 끝난 것입니다.
Linux에서 ProFTPD 구성하기
ProFTPD의 설정 파일은 /etc/proftpd 디렉터리에 위치합니다. nano 편집기로 파일을 열어보겠습니다.
sudo nano /etc/proftpd/proftpd.conf
설정 파일에는 다양한 지시자(directive)가 포함되어 있습니다. 그중 DefaultRoot 지시자는 FTP 서버가 어떤 디렉터리를 기준으로 파일을 제공할지 지정합니다.
DefaultRoot /home/Linux/Docs특정 사용자가 지정된 디렉터리에만 접근하도록 제한할 수도 있습니다.
DefaultRoot /home/linux Tom
DefaultRoot / Emma이렇게 설정하면 Tom은 /home/linux 디렉터리에만 로그인할 수 있지만, Emma는 시스템 전체에 접근 권한을 갖게 됩니다.
또한 ServerName 지시자를 사용해 서버 이름을 지정할 수도 있습니다.
ServerName "My ProFTPD"ProFTPD 서버용 사용자 계정 생성
보안 측면에서 FTP 서버에는 권한이 제한된 별도의 사용자 계정을 만드는 것이 좋습니다. 해당 사용자는 자신의 홈 디렉터리 안에서만 파일을 업로드하거나 다운로드할 수 있어야 합니다.
아래 명령어로 ProFTPD 사용자를 생성합니다. username 부분은 실제 사용하려는 계정 이름으로 바꿔 입력하세요.
sudo useradd -m username생성한 사용자의 비밀번호는 다음 명령어로 설정합니다.
sudo passwd usernameProFTPD에 SSL/TLS 적용하기
FTP 연결을 보호하려면 SSL/TLS를 활용해야 합니다. 여기서는 SSL 인증서를 사용해 ProFTPD를 구성하는 방법을 알아보겠습니다.
ProFTPD 서버용 인증서를 발급하려면 시스템에 OpenSSL이 필요합니다. 다음 명령어로 OpenSSL을 설치합니다.
sudo apt-get install openssl -yProFTPD 서버용 인증서 생성
OpenSSL 설치가 완료되면 아래 명령어로 서버용 인증서를 생성할 수 있습니다.
sudo openssl req -x509 -newkey rsa:1024 -keyout /etc/ssl/private/proftpd.key -out /etc/ssl/certs/proftpd.crt -nodes -days 365이 명령어는 OpenSSL에게 ProFTPD 서버용 인증서와 개인 키를 발급하도록 요청합니다. 생성된 인증서는 365일간 유효합니다.
명령어를 실행하면 인증서에 포함될 정보(일반적으로 조직 이름과 주소 등)를 입력하라는 안내가 나타납니다. 정보 입력을 마치면 인증서와 개인 키가 생성됩니다.
이후 보안을 위해 두 파일의 권한을 소유자만 읽고 쓸 수 있도록 변경합니다.
sudo chmod 600 /etc/ssl/private/proftpd.key
sudo chmod 600 /etc/ssl/certs/proftpd.crt이제 ProFTPD 설정 파일을 다시 엽니다.
sudo nano /etc/proftpd/proftpd.conf아래 줄을 찾아 맨 앞의 #(주석 문자)를 제거하여 활성화합니다.
Include /etc/proftpd/tls.conf파일을 저장하고 닫은 뒤, TLS 설정 파일을 엽니다.
sudo nano /etc/proftpd/tls.conf파일에서 아래 항목들을 찾아 주석을 해제합니다.
<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv23그리고 다음 항목도 활성화합니다.
TLSRSACertificateFile /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile /etc/ssl/private/proftpd.key아래 두 줄 역시 주석을 제거합니다.
TLSOptions AllowClientRenegotiationsTLSRequired on모든 설정을 저장하고 파일을 닫았다면, 변경 사항을 적용하기 위해 ProFTPD 서비스를 재시작합니다.
sudo systemctl restart proftpdUbuntu에서 ProFTPD 제거하기
시스템에서 ProFTPD를 삭제하려면 먼저 서비스를 중지해야 합니다.
sudo systemctl stop proftpd
이제 다음 Linux 명령어로 ProFTPD를 완전히 제거할 수 있습니다.
sudo apt-get autoremove proftpd-dev
sudo apt-get purge proftpd-basic이 명령어들을 실행하면 ProFTPD 관련 패키지와 설정이 시스템에서 완전히 삭제됩니다.
TLS가 적용된 FTP 서버로 안전하게 파일 전송하기
ProFTPD는 강력한 보안 기능을 제공할 뿐만 아니라 빠르고 효율적인 데이터 교환을 보장합니다. 특히 다양한 설정 옵션을 제공한다는 점이 큰 장점으로, 사용자 환경에 맞게 세밀하게 구성할 수 있습니다.
FTP는 여전히 신뢰할 수 있는 파일 전송 방식이지만, SFTP나 rsync 같은 다른 대안들도 존재합니다. 자신의 시스템과 용도에 가장 적합한 기술을 선택하면 더욱 편리하고 안전하게 작업할 수 있습니다.