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
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./bin/tcsh
/bin/csh
/bin/ksh
/bin/false
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.:
Publicar un comentario