install vsftpd | zuhdi.org

Install vsftpd

Environment

  • Debian 9.7 x64
  • GCC 6.3.0 20170516
  • vsftpd 3.0.3

Excerpt

Log 2019 / 05

1. Pre

root@athos:~# apt-get update && apt-get -y upgrade && apt-get -y dist-upgrade

root@athos:~# apt-get -y --no-install-recommends install build-essential dirmngr

root@athos:~# wget -q https://security.appspot.com/downloads/vsftpd-3.0.3.tar.gz

root@athos:~# wget -q https://security.appspot.com/downloads/vsftpd-3.0.3.tar.gz.asc

2. Verify Signature

root@athos:~# gpg --recv-keys 3C0E751C
gpg: directory '/root/.gnupg' created
gpg: keybox '/root/.gnupg/pubring.kbx' created
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key AA62EC463C0E751C: public key "Chris Evans <chris@scary.beasts.org>" imported
gpg: Total number processed: 1
gpg:               imported: 1

root@athos:~# gpg --list-keys 3C0E751C
pub   dsa1024 2004-06-29 [SC]
      8660FD3291B184CDBC2F6418AA62EC463C0E751C
uid           [ unknown] Chris Evans <chris@scary.beasts.org>
sub   elg1024 2004-06-29 [E]

root@athos:~# gpg --verify vsftpd-3.0.3.tar.gz.asc
gpg: assuming signed data in 'vsftpd-3.0.3.tar.gz'
gpg: Signature made Sat 25 Jul 2015 02:06:55 AM UTC
gpg:                using DSA key AA62EC463C0E751C
gpg: Good signature from "Chris Evans <chris@scary.beasts.org>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 8660 FD32 91B1 84CD BC2F  6418 AA62 EC46 3C0E 751C

3. Compile vsftpd

root@athos:~# tar -xf vsftpd-3.0.3.tar.gz

root@athos:~# cd vsftpd-3.0.3/

root@athos:~/vsftpd-3.0.3# make

root@athos:~/vsftpd-3.0.3# ls -lF vsftpd
-rwxr-xr-x 1 root root 143544 May 25 09:07 vsftpd*

root@athos:~/vsftpd-3.0.3# cp vsftpd /usr/local/bin/

root@athos:~/vsftpd-3.0.3# cp vsftpd.8 /usr/share/man/man8/

root@athos:~/vsftpd-3.0.3# cp vsftpd.conf.5 /usr/share/man/man5/

root@athos:~/vsftpd-3.0.3# mkdir /etc/vsftpd/

root@athos:~/vsftpd-3.0.3# cp vsftpd.conf /etc/vsftpd/vsftpd.conf.sample

root@athos:~/vsftpd-3.0.3# cd

root@athos:~# vsftpd -version
vsftpd: version 3.0.3

4. Configure vsftpd.conf

cat <<EOF > /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=600
data_connection_timeout=120
ftpd_banner=FTP service!
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
allow_writeable_chroot=YES
listen=YES
EOF

root@athos:~# cat <<EOF > /etc/vsftpd/vsftpd.conf
> anonymous_enable=NO
> local_enable=YES
> write_enable=YES
> local_umask=022
> anon_upload_enable=NO
> anon_mkdir_write_enable=NO
> dirmessage_enable=YES
> xferlog_enable=YES
> connect_from_port_20=YES
> xferlog_file=/var/log/vsftpd.log
> xferlog_std_format=YES
> idle_session_timeout=600
> data_connection_timeout=120
> ftpd_banner=FTP service!
> chroot_local_user=YES
> chroot_list_enable=YES
> chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
> allow_writeable_chroot=YES
> listen=YES
> EOF

5. systemd

cat <<EOF > /etc/systemd/system/vsftpd.service
[Unit]
Description=vsftpd FTP server
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/vsftpd /etc/vsftpd/vsftpd.conf
ExecReload=/bin/kill -HUP $MAINPID
ExecStartPre=-/bin/mkdir -p /var/run/vsftpd/empty

[Install]
WantedBy=multi-user.target
EOF

root@athos:~# cat <<EOF > /etc/systemd/system/vsftpd.service
> [Unit]
> Description=vsftpd FTP server
> After=network.target
>
> [Service]
> Type=simple
> ExecStart=/usr/local/bin/vsftpd /etc/vsftpd/vsftpd.conf
> ExecReload=/bin/kill -HUP $MAINPID
> ExecStartPre=-/bin/mkdir -p /var/run/vsftpd/empty
>
> [Install]
> WantedBy=multi-user.target
> EOF

root@athos:~# systemctl enable --now vsftpd
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service 
  → /etc/systemd/system/vsftpd.service.

root@athos:~# systemctl status vsftpd
● vsftpd.service - vsftpd FTP server
   Loaded: loaded (/etc/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2019-05-25 10:23:42 UTC; 30s ago
  Process: 2662 ExecStartPre=/bin/mkdir -p /var/run/vsftpd/empty (code=exited, 
    status=0/SUCCESS)
 Main PID: 2665 (vsftpd)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/vsftpd.service
           └─2665 /usr/local/bin/vsftpd /etc/vsftpd/vsftpd.conf

Hugo. Malte Kiefer & Zuhdi Najib.