h1

vsftpd (Very Secure FTP Daemon)

03/02/2012

Probablemente el servidor FTP más estable, rápido y seguro para sistemas tipo UNIX.

Temas a tratar:

1. Archivos de configuración
2. Enjaulado de usuarios (chroot)
3. FTP seguro (FTPS) sobre el protcolo SSL/TLS (certificados de seguridad)
4. Modo Pasivo vs Modo Activo
5. Apertura de puertos Router + Firewall
6. Configuración cliente Filezilla para conexión FTPES (FTP sobre SSL/TLS Explícito).
7. FTPS vs SFTP

1. Principales archivos de configuración

/etc/vsftpd.conf  –> Archivo de configuración principal.
/etc/init.d/vsftpd –> script de control (start/stop/status). También podemos utilizar rcvsftpd.
/etc/vsftpd.chroot_list –> Archivo enjaulado de usuarios.
/srv/ftp –> Directorio archivos servidos por vsftpd.
/etc/pam.d/vsftpd –> Archivo de configuración de PAM.
/usr/share/doc/packages/vsftpd/ –> Directorio archivos de documentación.
/usr/share/man/man5/vsftpd.conf.5.gz –> Página de manual 5 (man vsftpd.conf)

La ubicación de los archivos de configuración puede variar de una versión – distribución a otra. Para conocer la ubicación exacta podemos ejecutar (en sistemas rpm):
rpm -q -l vsftpd

2. Enjaulado de usuarios (chroot)

El enjaulado es una técnica mediante la cuál se proporciona al usuario una acceso limitado al sistema de ficheros Linux. Normalmente se realiza el enjaulado dentro de la home de cada usuario y el acceso se limita a ésta, de forma que el directorio raíz para un usuario enjaulado / se corresponde con el directorio home real /home/usuario del sistema de archivos.

Para realizar el enjaulado de usuarios realizaremos los siguientes pasos:

· Creamos el directorio para ser usado como home de los usarios a enjaular:
mkdir /srv/ftps
· Creamos nuestro usuario ftp, por ejemplo morfeo, cuyo directorio home sea el directorio enjaulado de ftp (/srv/ftps). En OpenSuse utilizaremos YaST para realizar este paso.

También podríamos escribir el siguiente comando: useradd -d /srv/ftps morfeo
Para poner una contraseña al usuario: passwd morfeo

· Los permisos de /srv/ftps deberian quedar de la siguiente manera:
4 drwxr-xr-x 2 neo  users 4096 ene 29 19:18 ftps

Podemos modificar los permisos con chmod, el propietario con chown y el grupo con chgrp.

· En /etc/vsftpd.conf cambiamos las siguientes opciones:

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

· Debemos crear el archivo vacío vsftpd.chroot_list:
touch /etc/vsftpd.chroot_list

3. FTP seguro (FTPS) sobre el protcolo SSL/TLS

VSFTPD puede ser configurado fácilmente para utilizar los protocolos SSL (Secure Sockets Layer, o Nivel de Zócalo Seguro), y TLS (Transport Layer Security, o Seguridad para Nivel de Transporte) a través de un certificado RSA.

· Como root accedemos al directorio /etc/ssl
· Ejecutamos lo siguiente para generar el certificado:
openssl req -x509 -nodes -days 720 -newkey rsa:1024 -keyout private/vsftpd.key -out certs/vsftpd.crt
· Rellenamos los datos del certificado: código 2 letras (país), Estado o provincia, Ciudad, Nombre empresa, etc..
· Cambiamos los permisos delcerticado y la firma:
chmod 400 certs/vsftpd.crt private/vsftpd.key

Ahora editamos el archivo /etc/vsftpd.conf

# Especificar cualquier rango arbitrario, y estrecho, de puertos para
# conexiones pasivas.
pasv_min_port=30300
pasv_max_port=30309
# Habilita el soporte de TLS/SSL
ssl_enable=YES
# Deshabilita o habilita utilizar TLS/SSL con usuarios anónimos
allow_anon_ssl=NO
# Obliga a utilizar TLS/SSL para todas las operaciones, es decir,
# transferencia de datos, y autenticación de usuarios locales.
# Establecer el valor NO, hace que sea opcional utilizar TLS/SSL.
force_local_data_ssl=YES
force_local_logins_ssl=YES
# Se prefiere TLSv1 sobre SSLv2, y SSLv3
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
# Rutas del certificado, y firma digital
rsa_cert_file=/etc/ssl/certs/vsftpd.crt
rsa_private_key_file=/etc/ssl/private/vsftpd.key

4.Modo Pasivo vs Modo Activo

Configuraremos nuestro vsftpd en modo pasivo puesto que es más seguro que el modo activo.

pasv_enable=YES
pasv_address= ip_pública(externa)
pasv_addr_resolve=NO
pasv_min_port=30000
pasv_max_port=30100

5. Apertura de puertos Router + Firewall

· Debemos abrir el puerto 21 y el rango 30000-30100 (pasv_min_port-pasv_max_port) en el NAT de nuestro Router:

NAT: puertos 21, 30000-30100

NAT: puertos 21, 30000-30100

En Ip Adress ponemos la ip interna de nuestro servidor ftp.

También debemos cambiar (o deshabilitar) el puerto 21, que el propio router utiliza para la gestión del mismo, por otro, por ejemplo: el 212

FTP gestión router

FTP gestión router

· Debemos crear una excepción en el cortafuegos para el vsftpd. Lo haremos de forma gráfica mediante el YaST:

Firewall YaST

Firewall YaST

6. Configuración cliente Filezilla para conexión FTPES (FTP sobre SSL/TLS Explícito).

Existen dos diferentes métodos para realizar una conexión SSL/TLS a través de FTP. La primera y más antigua es a través del FTPS Implícito (Implicit FTPS), que consiste en cifrar la sesión completa a través de los puertos 990 (FTPS), y 998 (FTPS Data), sin permitir negociación con el cliente, el cual está obligado a conectarse directamente al servidor FTPS con el inicio de sesión SSL/TLS. El segundo método, que es el recomendado por el RFC 4217, y el utilizado por Vsftpd, es FTPS Explícito (Explicit FTPS o FTPES), donde el cliente realiza la conexión normal a través del puerto 21, y permitiendo negociar, de manera opcional, una conexión TLS.

Filezilla –> Archivo –> Gestor de sitios

Filezilla FTPES

Filezilla FTPES

Una vez iniciada la conexión nos aparecerá el certificado de seguridad SSL/TLS que deberemos aceptar.

Certificado SSL/TLS

Certificado SSL/TLS

Ahora ya podemos disfrutar de nuestro servidor ftps con usuario enjaulado.

7. FTPS vs SFTP

FTPS (FTP/SSL) es la forma realizar transferencias seguras de archivos a través de FTP utilizando SSL o TLS utilizando el puerto 21. Son mecanismos muy diferentes a los del protocolo SFTP (SSH File Transfer Protocol) que utiliza el canal seguro SSH mediante el puerto 22.

Fuente

http://www.alcancelibre.org/staticpages/index.php/09-como-vsftpd
http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-es-4/s1-ftp-vsftpd-conf.html

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: