Hello,
If using Ubuntu 14.04.X with the latest version of ProFTPD available via apt-get AND using mod_tls then Read Ahead.
Else STOP.
Might work for other distros as well, but I did not try so I cannot say for sure if it will work.
As always, backup everything and do not attempt this on a production server. Test it on a virtual machine, or at least, do it after “rush hour”
ProFTPD prior to 1.3.5b is very slow to list directories when using FTP over TLS.
Downloading large number of files from many sub-directories is a pain. (very very slow).
The problem seems to be mod_tls.
I could not find a simple way to upgrade ProFTPD anywhere, so I am writing this little mini howto, maybe it helps someone.
Login via SSH
Backup your /etc/proftpd folder just in case.
Run: service proftpd stop
Run: wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.6rc2.tar.gz
Run: tar xf proftpd-1.3.6rc2.tar.gz
Run: cd proftpd-1.3.6rc2
Run: apt-get install build-essential libmysqlclient15-dev libpam-dev debhelper zlib1g-dev libpq-dev libldap2-dev libssl-dev libwrap0-dev libcap-dev autotools-dev dpatch libacl1-dev libattr1-dev unixodbc-dev libsqlite3-dev
Run: proftpd -V
It will display something like:
Built With:
configure ‘CFLAGS=-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security’ ‘CPPFLAGS=-D_FORTIFY_SOURCE=2’ ‘CXXFLAGS=-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security’ ‘FFLAGS=-g -O2’ ‘GCJFLAGS=-g -O2 -fstack-protector --param=ssp-buffer-size=4’ ‘LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro’ ‘–prefix=/usr’ ‘–with-includes=/usr/include/postgresql:/usr/include/mysql’ ‘–mandir=/usr/share/man’ ‘–sysconfdir=/etc/proftpd’ ‘–localstatedir=/var/run’ ‘–libexecdir=/usr/lib/proftpd’ ‘–enable-sendfile’ ‘–enable-facl’ ‘–enable-dso’ ‘–enable-autoshadow’ ‘–enable-ctrls’ ‘–with-modules=mod_readme’ ‘–enable-ipv6’ ‘–enable-nls’ ‘–enable-memcache’ ‘–with-lastlog=/var/log/lastlog’ ‘–enable-pcre’ ‘–build’ ‘x86_64-linux-gnu’ ‘–with-shared=mod_unique_id:mod_site_misc:mod_load:mod_ban:mod_quotatab:mod_sql:mod_sql_mysql:mod_sql_postgres:mod_sql_sqlite:mod_sql_odbc:mod_dynmasq:mod_quotatab_sql:mod_ldap:mod_quotatab_ldap:mod_ratio:mod_tls:mod_rewrite:mod_radius:mod_wrap:mod_wrap2:mod_wrap2_file:mod_wrap2_sql:mod_quotatab_file:mod_quotatab_radius:mod_facl:mod_ctrls_admin:mod_copy:mod_deflate:mod_ifversion:mod_tls_memcache:mod_geoip:mod_exec:mod_sftp:mod_sftp_pam:mod_sftp_sql:mod_shaper:mod_sql_passwd:mod_ifsession’ ‘build_alias=x86_64-linux-gnu’
Copy everything from “configure” to “gnu” to clipboard. (it may be a little different for you). Add a ./ in front
Run: ./configure ‘CFLAGS=-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security’ ‘CPPFLAGS=-D_FORTIFY_SOURCE=2’ ‘CXXFLAGS=-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security’ ‘FFLAGS=-g -O2’ ‘GCJFLAGS=-g -O2 -fstack-protector --param=ssp-buffer-size=4’ ‘LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro’ ‘–prefix=/usr’ ‘–with-includes=/usr/include/postgresql:/usr/include/mysql’ ‘–mandir=/usr/share/man’ ‘–sysconfdir=/etc/proftpd’ ‘–localstatedir=/var/run’ ‘–libexecdir=/usr/lib/proftpd’ ‘–enable-sendfile’ ‘–enable-facl’ ‘–enable-dso’ ‘–enable-autoshadow’ ‘–enable-ctrls’ ‘–with-modules=mod_readme’ ‘–enable-ipv6’ ‘–enable-nls’ ‘–enable-memcache’ ‘–with-lastlog=/var/log/lastlog’ ‘–enable-pcre’ ‘–build’ ‘x86_64-linux-gnu’ ‘–with-shared=mod_unique_id:mod_site_misc:mod_load:mod_ban:mod_quotatab:mod_sql:mod_sql_mysql:mod_sql_postgres:mod_sql_sqlite:mod_sql_odbc:mod_dynmasq:mod_quotatab_sql:mod_ldap:mod_quotatab_ldap:mod_ratio:mod_tls:mod_rewrite:mod_radius:mod_wrap:mod_wrap2:mod_wrap2_file:mod_wrap2_sql:mod_quotatab_file:mod_quotatab_radius:mod_facl:mod_ctrls_admin:mod_copy:mod_deflate:mod_ifversion:mod_tls_memcache:mod_geoip:mod_exec:mod_sftp:mod_sftp_pam:mod_sftp_sql:mod_shaper:mod_sql_passwd:mod_ifsession’ ‘build_alias=x86_64-linux-gnu’
Remember to paste your configure and not the above one.
Wait for it to finish.
Run: make
In case of errors, search the web for the error to see which dependencies are missing. If no errors reported, go to next step.
Run: make install
Run: service proftpd start
If everything is in order, you should have the latest version installed and running.
Also, in case you did not know, in your /etc/proftpd/modules.conf, comment #LoadModule mod_copy.c to prevent a serious security issue.
Hope it help someone.