#1. install openssl devel package. sudo apt-get install -y gcc make libssl-dev #2. install pureftpd #wget -P /tmp https://download.pureftpd.org/pub/pure-ftpd/releases/pure-ftpd-1.0.45.tar.bz2 tar jxpf /tmp/pure-ftpd-1.0.45.tar.bz2 cd pure-ftpd-1.0.45 ./configure \ --prefix=/usr/local/pureftpd \ --with-puredb \ --with-quotas \ --with-virtualchroot \ --with-diraliases \ --with-altlog \ --with-rfc2640 \ --with-tls \ --with-ftpwho \ --without-inetd \ --without-usernames \ --with-uploadscript make sudo make install #3. create user sudo mkdir /data sudo groupadd -g 911 ftpgroup sudo useradd -g ftpgroup -d /dev/null -s /usr/sbin/nologin -u 911 ftpuser #sudo useradd -g ftpgroup -d /dev/null -s /usr/sbin/nologin -u 912 ftp sudo ln -s /usr/local/pureftpd/bin/pure-pw /usr/local/bin/pure-pw (echo Npasswd; echo Npasswd) | sudo pure-pw useradd mac1 -u ftpuser -d /data/mac1 -m #4. modify configuration sudo sed -i '77c\NoAnonymous yes' /usr/local/pureftpd/etc/pure-ftpd.conf sudo sed -i '125c\PureDB /usr/local/pureftpd/etc/pureftpd.pdb' /usr/local/pureftpd/etc/pure-ftpd.conf sudo sed -i '302c\AltLog clf:/var/log/pureftpd.log' /usr/local/pureftpd/etc/pure-ftpd.conf sudo sed -i '334c\CreateHomeDir yes' /usr/local/pureftpd/etc/pure-ftpd.conf sudo sed -i '417c\TLS 2' /usr/local/pureftpd/etc/pure-ftpd.conf #sudo sed -i '427c\TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:!SSLv3' /usr/local/pureftpd/etc/pure-ftpd.conf sudo sed -i '440c\IPV4Only yes' /usr/local/pureftpd/etc/pure-ftpd.conf #5. create cert sudo mkdir -p /etc/ssl/private sudo openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 2048 sudo openssl req -x509 -nodes -newkey rsa:2048 -sha256 -days 999 \ -subj "/C=CN/ST=ISPC/L=CQin/O=conn/OU=ca/CN=5050ca/emailAddress=mac@conn.com" \ -keyout /etc/ssl/private/pure-ftpd.pem \ -out /etc/ssl/private/pure-ftpd.pem sudo chmod 600 /etc/ssl/private/pure-ftpd-dhparams.pem sudo chmod 600 /etc/ssl/private/pure-ftpd.pem #6. config start systemctl service cat <<EOF | sudo tee /lib/systemd/system/pure-ftpd.service [Unit] Description=Pure-FTPd FTP server After=syslog.target network.target [Service] Type=forking PIDFile=/var/run/pure-ftpd.pid ExecStart=/usr/local/pureftpd/sbin/pure-ftpd /usr/local/pureftpd/etc/pure-ftpd.conf [Install] WantedBy=multi-user.target EOF sudo systemctl enable pure-ftpd sudo systemctl start pure-ftpd