====== Servidor FTP amb ProFTPd ====== FTP (File Transfer Protocol) és un protocol de xarxa per transferència de fitxers entre diferents sistemes, basat en l'arquitectura client-servidor. Des d'un equip client es pot connectar a un servidor per descarregar arxius des d'ell o bé per enviar-li arxius, independentement del sistema operatiu utilitzat a cada equip. Un servidor FTP és un programa que s'executa en un servidor. La seva funció és permetre l'intercanvi de dades entre diferents servidors i/o ordinadors. Sovint, els servidors FTP no es troben als ordinadors personals, per tant un usuari utilitzarà el FTP per connectar-se remotament a un servidor i així intercanviar informació amb ell. ===== Configuració ===== A continuació es mostra el contigunt del fitxer de configuració del servidor FTP. Aquest fitxer consta de dues parts: la configuració general del servidor i la configuració dels hosts virtuals. ==== General ==== Include /modules.conf ServerType standalone UseIPv6 off Port 0 MaxInstances 30 MultilineRFC2228 on SocketBindTight on SystemLog TLSProtocol SSLv23 ControlsEngine on ControlsMaxClients 2 ControlsLog ControlsInterval 5 ControlsSocket /var/run/proftpd/proftpd.sock AdminControlsEngine on La directiva ''Port 0'' te associat el valor 0, per indicar al servidor que més avall hi ha definit un host virtual al port per defecte (port 21). ==== Hosts virtuals ==== ServerName "sermn.uab.cat" DeferWelcome off DenyAll Port 21 Umask 022 AuthPAM off DefaultServer on User nobody Group nogroup ExtendedLog AUTH DefaultRoot ~ IdentLookups off ShowSymlinks on TimeoutNoTransfer 600 TimeoutStalled 600 TimeoutIdle 1200 RootLogin off MaxLoginAttempts 3 RequireValidShell off DisplayLogin welcome.msg DisplayFirstChdir .message ListOptions "-l" DenyFilter \*.*/ TransferLog / MaxClientsPerHost 2 MaxClientsPerUser 2 MaxClients 0 "Full Server" DirFakeGroup on ftp DirFakeUser on ftp DirFakeMode 0000 AllowOverwrite on AllowRetrieveRestart on QuotaEngine on Ratios on DelayEngine on Proftpd només soporta hosts virtuals amb IPs diferents però soporta hosts virtuals amb la mateixa IP connectats a ports diferents. Si es volen definir més hosts virtuals, cal canviar el port que rep les connexins dels usuaris i la directiva ''DefaultServer'' ha de estar en ''off''. La resta dependran del la propia configuració del servidor virtual. ==== Usuaris virtuals amb mySQL ==== Per poder crear usuraris virtuals per al servidor FTP, s'ha creat una base de dades que conté la informació del usuaris del FTP amb la següent estrucura: ^ Camp ^ Tipus ^ Atributs ^ Nul ^ Predeterminat ^ Extra ^ | id | int(10) | UNSIGNED | No | | auto_increment | | username | varchar(32) | | No | | | | password | varchar(100) | | No | | | | uid | smallint(6) | | Sí | 32767 | | | gid | smallint(6) | | Sí | 32767 | | | homedir | varchar(100) | | No | /var/www/proftpd/default | | | shell | varchar(50) | | Sí | /sbin/nologin | | | actiu | tinyint(4) | | Sí | 1 | | | group | int(10) | UNSIGNED | No | 1 | | | count | int(11) | UNSIGNED | No | 0 | | | accessed | datetime | | No | 0000-00-00 00:00:00 | | Per configurar el nostre servidor, avanç de res cal instalar el modul ''proftpd_mysql''. Desprès es configurarà el servidor. Aquest és el contingut afegit (dins la directiva del virtual host) al fitxer de configuració per gestionar els usuaris de la base de dades: # Autentificacion bbdd mysql AuthOrder mod_sql.c SQLBackend mysql SQLAuthTypes Backend SQLAuthenticate users SQLConnectInfo @localhost SQLDefaultGID 32767 SQLDefaultUID 32767 SQLMinID 500 SQLUserInfo users username password uid gid homedir shell SQLUserWhereClause "actiu=1" SQLHomedirOnDemand on # Acutalització de la base de dades SQLLog PASS updatecount SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE username='%u'" users Cal destacar la comanda ''AuthOrder mod_sql.c'' que limita només connexions dels usuaris definits a una base de dades. ==== Connexió segura amb SSL/TLS ==== Un problema de FTP és que està pensat per oferir la màxima velocitat en la connexió, però no la màxima seguretat, ja que tot l'intercanvi d'informació (login i password de l'usuari al servidor, i la transferència de qualsevol arxiu), es realitza en text pla sense cap tipus de xifrat. Per configurar el nostre servidor amb connexions xifrades, cal generar un certificat RSA amb les calus publiques i privades. Desprès es configurarà el servidor. Aquest és el contingut afegit (dins la directiva del virtual host) al fitxer de configuració per gestionar connexions amb el protocol SSL/TLS: #Configuracio SSL TLSEngine on TLSRequired on TLSLog TLSRSACertificateFile TLSRSACertificateKeyFile TLSVerifyClient off TLSOptions NoCertRequest TLSRenegotiate required off La directiva '' TLSRequired on'' especifica que totes les connexions han d'anar xifrades. Per tant sera necessari connectar-se al servidor amb un client que suporti connexions FTPS. ==== Mòduls ==== Cal especificar quins mòduls a he carregar el nostres servidor per a poder dur a terme totes les tasque. Com podem observar, la primera línia del nostre fitxer de configuració ens está indicant que cal incloure el fitxer ''modules.conf'' el qual conte aquesta informació. El contigut d'aquest fitxer a de ser com el següent: ModulePath /usr/lib/proftpd ModuleControlsACLs insmod,rmmod allow user root ModuleControlsACLs lsmod allow user * LoadModule mod_ctrls_admin.c LoadModule mod_tls.c LoadModule mod_sql.c LoadModule mod_ldap.c LoadModule mod_sql_mysql.c LoadModule mod_quotatab.c LoadModule mod_quotatab_file.c LoadModule mod_quotatab_ldap.c LoadModule mod_quotatab_sql.c LoadModule mod_radius.c LoadModule mod_wrap.c LoadModule mod_rewrite.c LoadModule mod_ifsession.c ===== Enllaços ===== [[http://www.proftpd.org | Web oficial de ProFTPd]] [[http://www.proftpd.org/localsite/Userguide/linked/userguide.html | Guia d'usuari]] [[http://www.castaglia.org/proftpd/ | Documentació ]] [[http://www.proftpd.org/docs/directives/linked/configuration.html | Llistat de directives]] disponibles per al fitxer de configuració