서버 설치 · 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 updatePure-FTPd 설치
다음으로, 다음 명령을 사용하여 Pure-FTPd를 설치합니다:
sudo apt install pure-ftpd보안을 강화하기 위한 Pure-FTPd 구성
안전한 환경 설정
FTP 사용자를 위한 전용 그룹을 생성합니다:
sudo groupadd ftpgroupPure-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.pemTLS를 활성화하기 위해 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/의 로그를 확인하여 비정상적인 활동이나 오류를 확인하십시오.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.