ProFTPD 1.3.3d unter Debian kompilieren / installieren (Lenny / Squeeze)
Auch wenn es sicherlich gute Alternativen zum ProFTPD als FTP-Server gibt, so ist man doch teilweise auf Servern mit bestehender ProFTPD-Installation darauf angewiesen, diesen auch weiterhin einzusetzen.
Leider gab es in letzter Zeit öfter Lücken in ProFTPD, so z.B. ein erst kürzlich geschlossener Pufferüberlauf in der Funktion sql_prepare_where, die einen dazu bewegen sollten, stets die aktuellste Version einzusetzen. Derzeit ist dies 1.3.3d, die aktuell per Debian Repository verfügbare Version jedoch ist Version 1.3.1 (Lenny) bzw. 1.3.3a (unter Debian Squeeze), wie ein einfaches “proftpd -v” beweist:
test-srv1:~# apt-get install proftpd
test-srv1:~# proftpd -v- ProFTPD Version 1.3.1
test-srv2:~# proftpd -v- ProFTPD Version 1.3.3a
Also kommt man nicht umher, sich ProFTPD selber aus den aktuellsten Sourcen zu kompilieren. Da dies gerne mal an fehlenden Abhängigkeiten scheitert, oder in einer ProFTPD Version endet, die nicht all jene Module beinhaltet welche die per “apt-get install proftpd” installierte Variante mit sich bringt, nachfolgend kurz einige Befehlszeilen, die ProFTPD so konfigurieren und kompilieren, dass das Ergebnis dem Funktionsumfang entspricht, den das Debian Paket mit sich bringt.
Die Anleitung ist für Debian Lenny und Squeeze verwendbar, bezieht sich um gewünschten Funktionsumfang jedoch auf das in Squeeze verteilte Paket. Unterschiede der Befehle sind jeweils markiert.
test-srv1:~# proftpd -VCompile-time Settings:Version: 1.3.1Platform: LINUXBuilt With:<< DIESEN BLOCK KOPIEREN >>
Jetzt installieren wir mit folgendem Kommando alle zum Kompilieren benötigten Programme und *-dev Versionen derer Module, die wir einkompilieren werden (hat ein wenig Trial & Error Arbeit gekostet):
test-srv1:~# apt-get install build-essential gettext make g++ libwrap0-dev postgresql-server-dev-8.3 libldap2-dev libmysql++-dev libpam0g-dev libssl-dev libsqlite3-dev unixodbc-dev libncurses5-dev libacl1-dev libcap-dev
Achtung: für Squeeze “postgresql-server-dev-8.3″ durch “postgresql-server-dev-all” ersetzen!
Nun aktuelle Sourcen von der offiziellen ProFTPD Quelle laden und entpacken:
test-srv1:/tmp# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.3d.tar.gz
test-srv1:/tmp# tar -xvf proftpd-1.3.3d.tar.gz
test-srv1:/tmp# cd proftpd-1.3.3d
test-srv1:/tmp/proftpd-1.3.3d#
Ein Modul (mod_vroot) müssen wir händisch nachladen und in den “contrib”-Ordner entpacken, da diese nicht in der heruntergeladenen Source mitgeliefert wird:
test-srv1:/tmp/proftpd-1.3.3d# cd contrib/
test-srv1:/tmp/proftpd-1.3.3d/contrib# wget http://www.castaglia.org/proftpd/modules/proftpd-mod-vroot-0.9.2.tar.gz
test-srv1:/tmp/proftpd-1.3.3d/contrib# tar -xvf proftpd-mod-vroot-0.9.2.tar.gz
test-srv1:/tmp/proftpd-1.3.3d/contrib# cd ..
Ein anschließendes ./configure mit den Anfangs per “proftpd -V” kopierten Parametern sollte jetzt ohne Fehler durchlaufen. (Befehl bitte selber aus der “proftpd -V”-Ausgabe kopieren!)
test-srv1:/tmp/proftpd-1.3.3d/# ./configure –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 –build x86_64-linux-gnu –with-shared=mod_site_misc:mod_load:mod_ban:mod_quotatab:mod_sql:
mod_sql_mysql:mod_sql_postgres: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_ifsession
Das nachfolgende “make” sollte ohne Probleme durchlaufen, ein darauf folgendes “make install” ebenfalls. Daraufhin kann erneut per “proftpd -v” die installierte Version geprüft werden:
test-srv1:/tmp/proftpd-1.3.3d# proftpd -v
ProFTPD Version 1.3.3d
Interessanter jedoch die Ausgabe von “proftpd -V” im Bereich der unterstützten Module bzw. Features:
test-srv1:/tmp/proftpd-1.3.3d# proftpd -V
…
Features:
+ Autoshadow support
+ Controls support
+ curses support
- Developer support
+ DSO support
+ IPv6 support
+ Largefile support
- Lastlog support
+ ncurses support
+ NLS support
+ OpenSSL support
+ POSIX ACL support
+ Shadow file support
+ Sendfile support
+ Trace support
…
Vergleicht man diese mit der ursprünglich installierten Version, so wird man (hoffentlich
) keine Unterschiede feststellen.
Related posts:
