User Tools

Site Tools


sermn_wiki:userpages:marta:ftp

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
sermn_wiki:userpages:marta:ftp [2008/11/14 11:43]
marta
sermn_wiki:userpages:marta:ftp [2011/03/02 01:32] (current)
miquel
Line 1: Line 1:
-<note important> **En construcción** </note>+====== 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)  |          | 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          <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 =====
 +
 +[[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ó
  
  
  
sermn_wiki/userpages/marta/ftp.1226659413.txt.gz · Last modified: 2008/11/14 11:43 by marta