User Tools

Site Tools


sermn_wiki:userpages:marta:ftp

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            <path>/modules.conf
   ServerType	        standalone
   UseIPv6            off
   Port               0
   MaxInstances       30
   MultilineRFC2228   on
   SocketBindTight    on
   SystemLog          <path>
   
   <IfModule mod_tls.c>
      TLSProtocol     SSLv23
   </IfModule>
   
   <IfModule mod_ctrls.c>
      ControlsEngine        on
      ControlsMaxClients    2
      ControlsLog           <path>
      ControlsInterval      5
      ControlsSocket        /var/run/proftpd/proftpd.sock
   </IfModule>
   
   <IfModule mod_ctrls_admin.c>
      AdminControlsEngine   on
   </IfModule>

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

<VirtualHost sermn.uab.cat>
      ServerName		"sermn.uab.cat"
      DeferWelcome		off
   
      <Limit WRITE>
         DenyAll
      </Limit>
   
      Port			21
      Umask			022
      AuthPAM			off
      DefaultServer		on
      User			nobody
      Group			nogroup
      ExtendedLog		<path> 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		<path>/<file>
      MaxClientsPerHost	2
      MaxClientsPerUser	2
      MaxClients		0 "Full Server"
      DirFakeGroup		on ftp
      DirFakeUser		on ftp
      DirFakeMode		0000
      
      <Directory />
         AllowOverwrite          on
         AllowRetrieveRestart    on
      </Directory>
      
      <IfModule mod_quota.c>
         QuotaEngine on
      </IfModule>
      
      <IfModule mod_ratio.c>
         Ratios on
      </IfModule>
      
      <IfModule mod_delay.c>
         DelayEngine on
      </IfModule>
</VirtualHost>

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) 32767
gid smallint(6) 32767
homedir varchar(100) No /var/www/proftpd/default
shell varchar(50) /sbin/nologin
actiu tinyint(4) 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          <dbname>@localhost <dbuser> <password>
   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
   <IfModule mod_tls.c>
      TLSEngine                       on
      TLSRequired                     on
      TLSLog                          <path>
      TLSRSACertificateFile           <path>
      TLSRSACertificateKeyFile        <path>
      TLSVerifyClient                 off
      TLSOptions                      NoCertRequest
      TLSRenegotiate                  required off
   </IfModule>

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

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
sermn_wiki/userpages/marta/ftp.txt · Last modified: 2011/03/02 01:32 by miquel