miércoles, 14 de mayo de 2014

Instalación y configuración de vsftpd en Linux

VSFTPD (Very Secure FTP Daemon) se utiliza para implementar servidores de archivos a través del protocolo de transferencia de archivos FTP (File Transfer Protocol), de esta forma tendremos un servidor rápido, ligero, seguro y de fácil configuración.

Instalación


Para instalarlo, solo tenemos que escribir el siguiente comando en nuestra consola:

Para CentOs, Fedora o RedHat
$ sudo yum -y install vsftpd

Para Ubuntu, Debian
$ sudo apt-get install vsftpd

Configuración


Una vez que tenemos instalado el vsftpd procederemos a configurarlo, crear usuarios y enjaularlos.

1. Editaremos el archivo vsftpd.conf que se encuentra en /etc/vsftpd/,

$ sudo nano /etc/vsftpd/vsftpd.conf

El archivo es fácil de entender, pero aquí explicaremos lo básico para configurar nuestro servidor FTP.

Usuario anónimo
Por defecto viene como YES, lo cambiamos a NO para no permitir el acceso de usuarios anónimos.
anonymous_enable=NO

Mensaje de Bienvenida
Aqui podemos colocar un mensaje de bienvenida al conectarse por FTP
ftpd_banner=Bienvenida al servidor FTP de pruebas

Permitir escritura en el servidor
Esta opción es importante ya que nos permitirá escribir en el servidor, por defecto viene como YES.
write_enable=YES

Sesiones locales
Permite que los usuarios locales puedan también iniciar sesión.
local_enable=YES

Enjaular usuarios
Aquí vienen tres lineas importante para enjaular a los usuarios y restringir el acceso a otras carpetas que no sean su directorio HOME.

Evita que los usuarios registrados puedan salir de su directorio HOME
chroot_local_user=YES

Habilita la lista de usuarios que serán enjaulados
chroot_list_enable=YES

Ruta de la lista de usuarios a enjaular, este archivo no existe lo crearemos después.
chroot_list_file=/etc/vsftpd/chroot_list

2. Creamos el archivo chroot_list en /etc/vsftpd/

$ sudo touch /etc/vsftpd/chroot_list
$ sudo nano /etc/vsftpd/chroot_list

En el archivo solo agregamos en forma de lista los usuarios a enjaular, una ves terminado de agregar, guardamos los cambios.
usuario1
usuarioftp2
otrousuario

3. Creamos los usuarios ftp
$ sudo useradd -d /var/www/html/homeusuario1 -s /bin/false -g ftp usuario1

-d, indicamos la carpeta HOME del usuario
-s, indicamos el shell del usuario
-g, indicamos el grupo al que pertenecerá el usuario

Nota:
Podemos colocar tanto /bin/false como /sbin/nologin en el shell del usuario con la finalidad de impedir el acceso al shell completo,  cada uno con algunas diferencias, /sbin/nologin evita la entrada por consola y ssh, en cambio /bin/false evita la entrada por consola, ssh y ftp, por eso en nuestro caso usaremos /bin/false ya que es mas restrictivo.

Sin embargo vsftpd utiliza PAM (Pluggable Authentication Modules) para autentificar a los usuarios y por ello no admite ningun shell que no este listado en /etc/shells, para ello tendremos que agregar este shell a nuestro archivo.

$ sudo nano /etc/shells

en el archivo agregamos /bin/false y guardamos los cambios
...
/bin/tcsh
/bin/csh
/bin/ksh
/bin/false
Sino realizamos estos cambio no podremos ingresar a través de FTP, mostrandonos un error de login del usuario.

4. Agregamos la contraseña al usuario
# passwd usuario1
Changing password for user usuario1
New UNIX password:

5. Iniciamos el servicio FTP
Iniciamos nuestro servicio vsftpd con cualquiera de los dos comandos:

# service vsftpd start
ó
# /etc/init.d/vsftpd start

Nota:
Es necesario verificar que el puerto 21 por TCP no este bloqueado en nuestro firewall, para ello tenemos que checarlo en nuestro servicio iptables.

6. Probamos nuestro servidor FTP
Podemos probar que todo funcione correctamente accesando a través de nuestro navegador con la IP de nuestro servidor (ftp://190.190.200.1)  donde se nos pedirá un usuario y contraseña que serán los que agregamos en el paso 4. Como observaremos solo tendremos acceso a nuestra carpeta HOME permitida.


Podemos también usar otro software como Filezilla© o el complemento Fireftp de Mozilla Firefox©.

Actualización 13/Abril/2016
Si se cuenta con un firewall perimetral para no abrir todos los puertos al permitir un FTP Pasivo, realizar las siguientes modificaciones:

1. Permitir un rango de puertos para la conexión del FTP Pasivo, para ello agregamos las siguientes lineas al archivo /etc/vsftpd/vsftpd.conf. El rango puede ser del 1024 al 65535, este rango es el que se debe habilitar en nuestro firewall perimetral.

pasv_min_port=60000
pasv_max_port=60009

2. Para no realizar más cambios a IPTABLES podemos utilizar el módulo Connection Track FTP, el cual abrira y cerrara el puerto (del rango definido) necesario para realizar la conexión mediante el siguiente comando:

/sbin/modprobe ip_conntrack_ftp

Si se desea que este comando sea persistente desde el inicio, habrá que agregar la línea anterior al archivo /etc/rc.local

No hay comentarios.:

Entradas Populares