lunes, 13 de agosto de 2012

Servidor FTP + LDAP + TLS + QUOTA (proftpd)


1. FTP

2. SERVIDOR FTP

FTP (File Transfer Protocol, puerto 21 TCP) es, como su nombre indica, un protocolo de transferencia de ficheros entre sistemas. Desde un equipo cliente conectamos a un servidor para descargar ficheros desde él o para enviarle nuestros propios archivos.

Entonces, un servidor FTP es aquel equipo que funciona para ofrecer ficheros a través del protocolo de FTP a clientes FTP o a un navegador que lo soporte. Un servidor FTP debe tener un software servidor de FTP que "escucha" de la red las conexiones que pidan desde otros equipos.

3. SISTEMA OPERATIVO

La presente instalación, se la hará en un Sistema Operativo Linux, Distribución Debian, Versión 6 (Squeeze).

4. PAQUETES INSTALADOS

proftpd, proftpd-mod-ldap, openssl, quota, libnss-ldapd, libpam-ldapd, nscd, nslcd

5. INSTALACIÓN DEL PAQUETES NECESARIOS

El servidor a utilizar será el PROFTPD, por ser uno de los más versátiles, seguros y características extendidas ya que se pretende configurar el servidor para un uso muy específico, se comenzará instalando los paquetes necesarios:

# apt-get install  proftpd proftpd-mod-ldap

Una vez instalado el servidor PROFTPD, el módulo para autenticación LDAP, las herramientas para autenticación segura SSL y el módulo de cuotas, se procederá a hacer algunos ajustes básicos en el archivo de configuración del servidor que se encuentra en /etc/proftd/proftpd.conf

5.1. CONFIGURACIÓN PROFTPD

Configurar de tal manera que no se permite el acceso a usuarios anónimos y si se permitan los usuarios locales:

Include /etc/proftpd/modules.conf

UseIPv6               off
IdentLookups          off

ServerName            "Mi Servidor FTP"
ServerType            standalone
DeferWelcome          off

MultilineRFC2228      on
DefaultServer         on
ShowSymlinks          on

TimeoutNoTransfer     600
TimeoutStalled        600
TimeoutIdle           1200

DisplayLogin          welcome.msg
DisplayChdir          .message true
ListOptions           "-l"

DenyFilter            \*.*/

DefaultRoot           ~  # Usuarios enjaulados

Port                  21

#PARA NO VERIFICAR EN EL DNS LAS ZONAS INVERSAS (EL ACTIVARLO RALENTIZA SU ACCESO)
UseReverseDNS                   off

<IfModule mod_dynmasq.c>
</IfModule>

MaxInstances          30

# Set the user and group that the server normally runs at.
User                  proftpd
Group                 nogroup

Umask                 022  022
AllowOverwrite        on

# IMPORTANTE DESCOMENTAR ESTA LÍNEA SI SE USA LDAP:
PersistentPasswd      off

TransferLog /var/log/proftpd/xferlog
SystemLog   /var/log/proftpd/proftpd.log

<IfModule mod_quotatab.c>
QuotaEngine off
</IfModule>

<IfModule mod_ratio.c>
Ratios off
</IfModule>

<IfModule mod_delay.c>
DelayEngine on
</IfModule>

<IfModule mod_ctrls.c>
ControlsEngine        off
ControlsMaxClients    2
ControlsLog           /var/log/proftpd/controls.log
ControlsInterval      5
ControlsSocket        /var/run/proftpd/proftpd.sock
</IfModule>

<IfModule mod_ctrls_admin.c>
AdminControlsEngine off
</IfModule>

Include /etc/proftpd/ldap.conf

# EL SIGUIENTE MODULO ES PARA USAR CONEXIONES SEGURAS (FTPS)
Include /etc/proftpd/tls.conf

5.2. AUTENTICACIÓN AL SERVIDOR POR MEDIO DE USUARIOS LDAP

Primeramente instalar los módulos para autenticación al servidor ldap:
# apt-get install libnss-ldapd libpam-ldapd nscd nslcd

En la instalación, el asistente irá pidiendo una serie de parámetros, para lo cual se deben elegir:

* La dirección ip o nombre del servidor ldap, y el puerto
ldap://ldapsrv:389/

* El nombre del dominio en el formato dc=:
dc=Mi,dc=Dominio,dc=com

* La versión de protocol ldap:
3

Una vez que se hayan instalado los paquetes necesarios, automáticamente se configurará el archivo /etc/nsswitch.conf para autenticación LDAP, para ello se puede verificar que:

passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap

Para verificar que se esté autenticando contra el servidor LDAP, se puede utilizar el comando id seguido de una cuenta de usuario del servidor LDAP, este debería devolver información referente al usuario:

# id diego.donoso
uid=9045(diego.donoso) gid=5000(operators) groups=5000(operators)

5.3. ASIGNACIÓN DE CUOTAS

Referirse al tutorial “Quotapara la instalación y configuración de cuotas de disco.

5.4. UTILIZANDO UN SERVIDOR SEGURO SSL

Primeramente instalar el módulos SSL:

# apt-get install openssl

Ahora se generarán los certificados, para ello primero crear una carpeta para guardarlo todo, luego generar la clave des3 del passphrase para el archivo server.key y copiar el resultado a server.key.passphrase

Por último, crear el certificado con SHA1 y 365 días de validez:

# openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus
.................++++++
.....................++++++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:
root@localhost:~/certs# cp server.key server.key.passphrase
root@localhost:~/certs# openssl rsa -in server.key.passphrase -out server.key
Enter pass phrase for server.key.passphrase:
writing RSA key

# openssl req -new -x509 -nodes -sha1 -days 365
/-key server.key -out server.crt
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:ES
State or Province Name (full name) [Some-State]:Barcelona
Locality Name (eg, city) []:Barcelona
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Yomismo
Organizational Unit Name (eg, section) []:Yomismo2
Common Name (eg, YOUR name) []:Manuko
Email Address []:manuko@222.lll

Por último, se deberá incluir los certificados en el archivo de configuración TLS del PROFTD /etc/proftdp/tls.conf:

<IfModule mod_tls.c>
TLSEngine                  on
TLSLog                     /var/log/proftpd/tls.log
#TLSProtocol                SSLv23
TLSOptions                 NoCertRequest AllowClientRenegotiations
TLSRSACertificateFile      /etc/proftpd/ssl/proftpd.cert.pem
TLSRSACertificateKeyFile   /etc/proftpd/ssl/proftpd.key.pem
TLSVerifyClient            off
TLSRequired                off
</IfModule>

6. RECOMENDACIONES

Es recomendable enjaular a los usuarios que acceden al servidor FTP, con el fin de que únicamente tengan acceso a su “home”, para evitar la manipulación de otros archivos pertenecientes a los demás usuarios, o inclusive archivos del mismo sistema que puedan afectar su operación.

No hay comentarios:

Publicar un comentario