서버 설정 · 3 min read · Nov 27, 2025

CentOS 7에서 PureFTPd 컴파일하는 방법

CentOS 7에서 PureFTPd 컴파일하는 방법

버전 1.0
저자: Till Brehm
howtoforge를 Twitter에서 팔로우하세요

이 튜토리얼에서는 CentOS 7에서 소스에서 PureFTPd를 컴파일하는 단계를 설명합니다. Pure-ftpd는 Linux 시스템 사용자, puredb, MySQL 및 PostgeSQL과 같은 다양한 인증 백엔드를 지원하는 경량의 안정적인 FTP 데몬입니다. 나중에 ISPConfig 3에 pure-ftpd를 사용할 것이므로 MySQL / Mariadb 지원으로 컴파일할 것입니다.

이 가이드는 EPEL이 CentOS 7에 대한 pure-ftpd 패키지를 출시할지 불확실했기 때문에 ISPConfig 3 완벽한 서버 튜토리얼을 위해 처음 작성되었습니다. CentOS 7 지원을 추가하기 위해 이 패키지가 필요했습니다. 며칠 전 EPEL에서 준비된 pure-ftpd .rpm을 출시했으며, 완벽한 서버 튜토리얼에 사용할 것이고 대부분의 사용자에게는 EPEL rpm을 사용하는 것이 더 편리하고 권장됩니다. 그럼에도 불구하고 사용자 정의 빌드에 유용할 수 있으므로 자체 pure-ftpd 패키지를 빌드하는 단계를 문서화하겠습니다.

빌드 환경 준비

CentOS 개발 툴체인을 설치합니다.

yum -y groupinstall ‘Development Tools’

MariaDB 개발 파일을 설치합니다.

yum -y install mariadb-devel

pure-ftpd 소스 파일을 다운로드하고 아카이브를 압축 해제합니다.

cd /usr/local/src
wget http://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.36.tar.bz2
tar xvjpf pure-ftpd-1.tar.bz2
cd pure-ftpd-1

빌드를 준비하기 위해 configure 명령을 실행합니다. 모든 컴파일 옵션에 대한 개요를 보려면 ./configure –help를 실행합니다.

./configure –prefix=/usr –bindir=/usr/bin –sbindir=/usr/sbin –libexecdir=/usr/libexec –datadir=/usr/share –sysconfdir=/etc –sharedstatedir=/usr/com –localstatedir=/var –libdir=/usr/lib64 –includedir=/usr/include –infodir=/usr/share/info –mandir=/usr/share/man –with-mysql –with-virtualchroot –with-everything

그리고 pure-ftpd 바이너리를 컴파일합니다:

make

make install

구성 파일 및 시작 스크립트 생성

먼저 시작 스크립트를 생성합니다. 이 빌드에서는 CentOS 6.5의 시작 스크립트를 사용할 것이며, 이는 CentOS 7에서도 잘 작동합니다.

nano /etc/init.d/pure-ftpd

#!/bin/bash
#
# Pure-ftpd FTP 서버의 시작 스크립트  $Revision: 1.1 $
#
# chkconfig: - 85 15
# 설명: Pure-FTPd는 Troll-FTPd를 기반으로 한 FTP 서버 데몬입니다.
# 프로세스 이름: pure-ftpd
# pidfile: /var/run/pure-ftpd.pid
# 구성: /etc/pure-ftpd/pure-ftpd.conf

# 함수 라이브러리 소스.
. /etc/init.d/functions

# 네트워킹 구성 소스.
. /etc/sysconfig/network

# 네트워킹이 구성되었는지 확인합니다.
# [ ${NETWORKING} = "no" ] && exit 0

RETVAL=0

prog="pure-ftpd"

# pure-ftp 바이너리의 경로.
fullpath=/usr/sbin/pure-ftpd
pureftpwho=/usr/sbin/pure-ftpwho
pure_config=/etc/pure-ftpd/pure-ftpd.conf
pure_launch_script=/usr/sbin/pure-config.pl

start() {
        echo -n "$"Starting $prog: "
        daemon "$pure_launch_script $pure_config --daemonize > /dev/null"
        RETVAL=$?
        [ $RETVAL = 0 ] && touch /var/lock/subsys/pure-ftpd
        echo
}

stop() {
        echo -n "$"Stopping $prog: "
        killproc pure-ftpd
        RETVAL=$?
        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/pure-ftpd
        echo
}

# 호출된 방법을 확인합니다.
case "$1" in
        start)
                start
                ;; 
        stop)
                stop
                ;; 
        restart)
                stop
                start
                ;; 
        reload)
        echo -n "$"Reloading $prog: "
                killproc pure-ftpd -HUP
                RETVAL=$?
                echo
                ;; 
        condrestart)
                if [ -f /var/lock/subsys/pure-ftpd ] ; then
                        stop
                        # 경합 방지
                        sleep 3
                        start
                fi
                ;; 
        status)
                status pure-ftpd
                RETVAL=$?
                if [ -f $pureftpwho ] && [ $RETVAL -eq 0 ] ; then
                        $pureftpwho
                fi
                ;; 
        *)
                echo "$"Usage: pure-ftpd {start|stop|restart|reload|condrestart|status}"
                RETVAL=1
esac
exit $RETVAL

chmod +x /etc/init.d/pure-ftpd
mkdir /etc/pure-ftpd/

cp configuration-file/pure-ftpd.conf /etc/pure-ftpd/pure-ftpd.conf
cp configuration-file/pure-config.pl /usr/sbin/pure-config.pl
chmod 744 /etc/pure-ftpd/pure-ftpd.conf
chmod 755 /usr/sbin/pure-config.pl

그런 다음 시스템 시작 링크를 생성하고 PureFTPd를 시작합니다:

chkconfig –levels 235 pure-ftpd on
systemctl start pure-ftpd.service

이제 PureFTPd를 구성하여 FTP 및 TLS 세션을 허용합니다. TLS 없이 FTP는 모든 비밀번호와 모든 데이터가 일반 텍스트로 전송되기 때문에 매우 안전하지 않은 프로토콜입니다. TLS를 사용하면 전체 통신을 암호화할 수 있으므로 FTP가 훨씬 더 안전해집니다.

TLS에는 OpenSSL이 필요합니다. OpenSSL을 설치하려면 다음과 같이 실행합니다:

yum -y install openssl

/etc/pure-ftpd/pure-ftpd.conf를 엽니다…

vi /etc/pure-ftpd/pure-ftpd.conf

FTP 및 TLS 세션을 허용하려면 TLS를 1로 설정합니다:

[...]
# 이 옵션은 세 가지 값을 허용할 수 있습니다:
# 0 : SSL/TLS 암호화 계층 비활성화(기본값).
# 1 : 전통적인 세션과 암호화된 세션 모두 수락.
# 2 : SSL/TLS 보안 메커니즘을 사용하지 않는 연결을 거부,
#     익명 세션 포함.
# 이 내용을 맹목적으로 주석 해제하지 마십시오. 다음을 확인하십시오:
# 1) 서버가 SSL/TLS 지원으로 컴파일되었는지(--with-tls),
# 2) 유효한 인증서가 있는지,
# 3) 호환 가능한 클라이언트만 로그인할 수 있습니다.

TLS                      1
[...]

TLS를 사용하려면 SSL 인증서를 생성해야 합니다. 나는 /etc/ssl/private/에 생성하므로 먼저 해당 디렉토리를 생성합니다:

mkdir -p /etc/ssl/private/

그 후, 다음과 같이 SSL 인증서를 생성할 수 있습니다:

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

국가 이름 (2자리 코드) [XX]: <– 귀하의 국가 이름을 입력하십시오 (예: “DE”).
주 또는 지방 이름 (전체 이름) []: <– 귀하의 주 또는 지방 이름을 입력하십시오.
지역 이름 (예: 도시) [기본 도시]: <– 귀하의 도시를 입력하십시오.
조직 이름 (예: 회사) [기본 회사]: <– 귀하의 조직 이름을 입력하십시오 (예: 귀하의 회사 이름).
조직 단위 이름 (예: 섹션) []: <– 귀하의 조직 단위 이름을 입력하십시오 (예: “IT 부서”).
공통 이름 (예: 귀하의 이름 또는 서버의 호스트 이름) []: <– 시스템의 완전한 도메인 이름을 입력하십시오 (예: “server1.example.com”).
이메일 주소 []: <– 귀하의 이메일 주소를 입력하십시오.

SSL 인증서의 권한을 변경합니다:

chmod 600 /etc/ssl/private/pure-ftpd.pem

마지막으로 PureFTPd를 재시작합니다:

systemctl stop pure-ftpd.service
systemctl start pure-ftpd.service

그게 다입니다. 이제 FTP 클라이언트를 사용하여 연결을 시도할 수 있습니다. 그러나 FTP 클라이언트를 TLS를 사용하도록 구성해야 합니다.

링크

  • pure-ftpd
Share: X/Twitter LinkedIn

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

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