서버 설치 · 5 min read · Sep 23, 2025

Ubuntu 24.04에 Pure-FTPd 설치하기

Pure-FTPd는 Ubuntu 및 기타 Linux 배포판에서 사용할 수 있는 무료 오픈 소스 FTP 서버 소프트웨어입니다. 보안, 성능 및 사용 용이성에 중점을 두고 설계된 Pure-FTPd는 가상 사용자 지원, TLS/SSL을 사용한 암호화된 연결 및 다양한 인증 메커니즘과 같은 강력한 기능을 제공합니다. 또한 대역폭 제한, 사용자 권한 제한 및 익명 FTP 액세스 활성화와 같은 기능도 제공합니다. Pure-FTPd는 다른 FTP 서버에 비해 구성의 간단함으로 인해 자주 선택되며, Ubuntu 시스템에서 소규모 및 대규모 배포 모두에 인기 있는 선택입니다.

파일 전송 프로토콜(FTP)은 클라이언트와 서버 간에 네트워크(예: 인터넷)를 통해 파일을 전송하는 데 사용되는 표준 네트워크 프로토콜입니다. 1970년대 초에 개발된 FTP는 사용자가 원격 서버에서 파일을 업로드, 다운로드 및 관리할 수 있도록 합니다. FTP는 연결을 제어하는 명령 채널과 파일을 전송하는 데이터 채널의 두 채널을 사용하여 작동합니다. FTP는 능동 모드 또는 수동 모드에서 작동할 수 있으며, 이는 서버와 클라이언트가 연결을 설정하는 방식을 결정합니다. 파일 전송에 널리 사용되지만, FTP는 로그인 자격 증명을 포함한 데이터가 일반 텍스트로 전송되기 때문에 보안이 취약하다고 여겨집니다. 이 가이드에서는 Pure-FTPd를 구성하여 FTPS(SSL/TLS를 통한 FTP)를 사용하여 FTP를 안전하게 만드는 방법을 보여드리겠습니다.

이 튜토리얼은 Ubuntu에 Pure-FTPd를 설치하고 구성하는 과정을 단계별로 안내합니다.

Pure-FTPd 설치를 위한 전제 조건

설치를 진행하기 전에 다음을 확인하십시오:

  • Ubuntu 서버 설정
  • sudo 권한이 있는 사용자 계정에 대한 액세스

Pure-FTPd의 단계별 설치

시스템 패키지 업데이트

먼저 시스템의 패키지 목록을 업데이트합니다:

sudo apt update

Pure-FTPd 설치

다음으로, 다음 명령을 사용하여 Pure-FTPd를 설치합니다:

sudo apt install pure-ftpd

보안을 강화하기 위한 Pure-FTPd 구성

안전한 환경 설정

FTP 사용자를 위한 전용 그룹을 생성합니다:

sudo groupadd ftpgroup

Pure-FTPd용 사용자를 생성합니다:

sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser

사용자 액세스 관리

FTP 서버에 사용자를 추가하려면:

sudo pure-pw useradd [username] -u ftpuser -g ftpgroup -d /home/ftpusers/[username]  
sudo pure-pw mkdb

[username]을 원하는 사용자 이름으로 바꾸십시오.

안전한 데이터 전송을 위한 TLS 구성

자체 서명된 인증서를 생성합니다:

sudo openssl req -x509 -nodes -days 730 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

TLS를 활성화하기 위해 Pure-FTPd 구성을 수정합니다:

echo 1 | sudo tee /etc/pure-ftpd/conf/TLS  
sudo service pure-ftpd restart

고급 구성 옵션

다음은 Ubuntu의 /etc/pure-ftpd/conf/ 디렉토리에서 Pure-FTPd에 대해 구성할 수 있는 일반 설정 목록입니다. 구성 파일 이름은 굵게 표시되어 있습니다.

  • AltLog: 대체 로깅 방법을 지정합니다. 예를 들어, AltLog clf:/var/log/pureftpd.log는 W3C 형식으로 전송을 기록합니다.
  • AnonymousOnly: 활성화하면(AnonymousOnly라는 이름의 파일을 생성하여) 서버가 익명 로그인을 허용하도록 제한합니다.
  • AntiWarez: 이 파일이 존재하면 사용자가 서버에 이미 존재하는 파일을 업로드하는 것이 금지됩니다.
  • AutoRename: 동일한 이름의 파일이 존재하는 경우 업로드된 파일의 이름을 자동으로 변경합니다.
  • Bind: 서버를 특정 IP 주소 및 포트에 바인딩합니다. 예를 들어, Bind 21은 모든 사용 가능한 주소에서 포트 21에 바인딩합니다.
  • BrokenClientsCompatibility: FTP 표준을 엄격하게 준수하지 않는 FTP 클라이언트와의 호환성을 활성화합니다.
  • ChrootEveryone: 활성화하면 모든 사용자가 자신의 홈 디렉토리로 제한됩니다.
  • CreateHomeDir: 사용자가 로그인할 때 홈 디렉토리가 존재하지 않으면 자동으로 생성합니다.
  • CustomerProof: 클라이언트 구성 및 명령에서 발생하는 일반적인 실수에 대한 저항력을 증가시킵니다.
  • Daemonize: 이 파일이 존재하면 Pure-FTPd가 데몬으로 실행됩니다.
  • DisplayDotFiles: 점 파일(숨김 파일)이 표시되는지 여부를 제어합니다.
  • DontResolve: 로깅 및 대역폭 제어를 위한 DNS 해석을 방지하여 성능을 향상시킬 수 있습니다.
  • ExtAuth: 사용자 인증을 위한 외부 프로그램을 지정합니다.
  • ForcePassiveIP: 서버가 수동 모드 클라이언트에게 특정 IP 주소를 보고하도록 강제합니다.
  • FSCharset: 파일 시스템 문자 집합을 설정하며, 비 ASCII 파일 이름에 유용합니다.
  • IPv4Only 또는 IPv6Only: 서버가 IPv4 또는 IPv6 주소만 수신하도록 제한합니다.
  • KeepAllFiles: 서버에서 파일 삭제를 방지합니다.
  • LDAPConfigFile: 인증을 위한 LDAP 구성 파일의 경로를 지정합니다.
  • LimitRecursion: 재귀 깊이 및 디렉토리 목록에 표시되는 파일 수를 제한합니다.
  • MaxClientsNumber: 동시에 연결할 수 있는 최대 클라이언트 수를 제한합니다.
  • MaxClientsPerIP: 단일 IP 주소에서의 동시에 연결 수를 제한합니다.
  • MaxDiskUsage: 디스크 사용 비율을 제한합니다.
  • MaxIdleTime: 클라이언트를 연결 해제하기 전의 최대 유휴 시간을 분 단위로 설정합니다.
  • MaxLoad: 특정 시스템 부하를 초과할 경우 클라이언트를 연결 해제하거나 새로운 연결을 거부합니다.
  • MinUID: 로그인 시 최소 UID를 설정합니다. UID가 낮은 사용자는 로그인할 수 없습니다.
  • MySQLConfigFile: 데이터베이스 기반 인증을 위한 MySQL 구성 파일의 경로를 지정합니다.
  • NoAnonymous: 이 파일이 존재하면 익명 로그인을 비활성화합니다.
  • NoChmod: 서버에서 CHMOD 명령을 비활성화합니다.
  • NoRename: 사용자가 파일 이름을 변경하지 못하도록 방지합니다.
  • PassivePortRange: 수동 연결을 위한 포트 범위를 정의합니다(예: 30000 35000).
  • PerUserLimits: 사용자별로 제한을 설정합니다.
  • PureDB: PureDB 사용자 데이터베이스 파일의 경로를 지정합니다.
  • Quota: 사용자 쿼타 제한을 설정합니다.
  • SyslogFacility: 로깅을 위한 syslog 시설을 정의합니다.
  • TLSCipherSuite: 암호화된 연결을 위한 허용된 TLS 암호를 지정합니다.
  • TrustedGID: 로그인에 대한 신뢰할 수 있는 그룹 ID 목록을 지정합니다.
  • UMask: 파일 생성을 위한 기본 umask를 설정합니다.
  • UnixAuthentication: UNIX 비밀번호 데이터베이스에 대한 인증을 활성화합니다.
  • UploadScript: 성공적인 업로드 후 실행할 스크립트를 지정합니다.

이 목록은 가장 일반적으로 사용되는 구성 옵션을 포함하지만, 전체 목록은 아닙니다. 항상 공식 Pure-FTPd 문서를 참조하거나 다음 명령을 사용하여 가장 정확하고 포괄적인 정보를 확인하십시오.

pure-ftpd-wrapper --help

예시

다음은 /etc/pure-ftpd/conf/의 Pure-FTPd 설정 목록과 이들이 수용하는 값의 유형을 설명하는 예시입니다:

  • AltLog: AltLog clf:/var/log/pureftpd.log - 예시: clf:/var/log/pureftpd.log
  • AnonymousOnly: AnonymousOnly라는 이름의 파일을 생성하여 활성화합니다. - 값 필요 없음.
  • AntiWarez: AntiWarez라는 이름의 파일을 생성하여 활성화합니다. - 값 필요 없음.
  • AutoRename: AutoRename라는 이름의 파일을 생성하여 활성화합니다. - 값 필요 없음.
  • Bind: Bind 21 - 예시: 192.168.0.1,21
  • BrokenClientsCompatibility: BrokenClientsCompatibility라는 이름의 파일을 생성하여 활성화합니다. - 값 필요 없음.
  • ChrootEveryone: ChrootEveryone라는 이름의 파일을 생성하여 활성화합니다. - 값 필요 없음.
  • CreateHomeDir: CreateHomeDir라는 이름의 파일을 생성하여 활성화합니다. - 값 필요 없음.
  • CustomerProof: CustomerProof라는 이름의 파일을 생성하여 활성화합니다. - 값 필요 없음.
  • Daemonize: Daemonize라는 이름의 파일을 생성하여 활성화합니다. - 값 필요 없음.
  • DisplayDotFiles: DisplayDotFiles라는 이름의 파일을 생성하여 활성화합니다. - 값 필요 없음.
  • DontResolve: DontResolve라는 이름의 파일을 생성하여 활성화합니다. - 값 필요 없음.
  • ExtAuth: ExtAuth /path/to/authenticator - 예시: /usr/local/bin/myauth
  • ForcePassiveIP: ForcePassiveIP 192.168.0.1 - 예시: 192.168.0.1
  • FSCharset: FSCharset utf-8 - 예시: utf-8
  • IPv4Only 또는 IPv6Only: IPv4Only 또는 IPv6Only라는 이름의 파일을 생성하여 활성화합니다. - 값 필요 없음.
  • KeepAllFiles: KeepAllFiles라는 이름의 파일을 생성하여 활성화합니다. - 값 필요 없음.
  • LDAPConfigFile: LDAPConfigFile /etc/pure-ftpd/ldap.conf - 예시: /etc/pure-ftpd/ldap.conf
  • LimitRecursion: LimitRecursion 10000 8 - 예시: 10000 8 (10000 파일, 8 레벨 깊이)
  • MaxClientsNumber: MaxClientsNumber 50 - 예시: 50
  • MaxClientsPerIP: MaxClientsPerIP 8 - 예시: 8
  • MaxDiskUsage: MaxDiskUsage 95 - 예시: 95 (95 퍼센트)
  • MaxIdleTime: MaxIdleTime 15 - 예시: 15 (15 분)
  • MaxLoad: MaxLoad 4.0 - 예시: 4.0
  • MinUID: MinUID 1000 - 예시: 1000
  • MySQLConfigFile: MySQLConfigFile /etc/pure-ftpd/mysql.conf - 예시: /etc/pure-ftpd/mysql.conf
  • NoAnonymous: NoAnonymous라는 이름의 파일을 생성하여 활성화합니다. - 값 필요 없음.
  • NoChmod: NoChmod라는 이름의 파일을 생성하여 활성화합니다. - 값 필요 없음.
  • NoRename: NoRename라는 이름의 파일을 생성하여 활성화합니다. - 값 필요 없음.
  • PassivePortRange: PassivePortRange 30000 35000 - 예시: 30000 35000
  • PerUserLimits: PerUserLimits 8 - 예시: 8 (사용자당 8개의 동시 연결)
  • PureDB: PureDB /etc/pure-ftpd/pureftpd.pdb - 예시: /etc/pure-ftpd/pureftpd.pdb
  • Quota: Quota 1000M - 예시: 1000M (1000 메가바이트)
  • SyslogFacility: SyslogFacility ftp - 예시: ftp
  • TLSCipherSuite: TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3 - 예시: HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3
  • TrustedGID: TrustedGID 1000 - 예시: 1000
  • UMask: UMask 133:022 - 예시: 133:022 (파일: 133, 디렉토리: 022)
  • UnixAuthentication: UnixAuthentication라는 이름의 파일을 생성하여 활성화합니다. - 값 필요 없음.
  • UploadScript: UploadScript /path/to/script - 예시: /usr/local/bin/uploadscript

이 예시는 Pure-FTPd의 다양한 옵션을 구성하는 방법을 명확히 해야 합니다.

모니터링 및 유지 관리

정기적으로 /var/log/pure-ftpd/의 로그를 확인하여 비정상적인 활동이나 오류를 확인하십시오.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.