domingo, 20 de septiembre de 2015

INSTALACIÓN DE VSFTP EN RASPBERRY Pt.1

FTP es un protocolo de transmisión de archivos entre cliente y servidor muy común para el intercambio de ficheros, como por ejemplo, para un servidor web.
Hoy explicaremos cómo instalar el programa "vsftpd" que servirá como servicio en La Raspberry PI 2.

Para instalar la aplicación abrimos nuestro terminal y escribimos:

$ sudo apt-get install vsftpd

Una vez instalado, vamos al archivo de configuración para modificar ciertos parámetros:

$ sudo nano /etc/vsftpd.conf

Nos detendremos en  los  más importantes a la hora de configurarlo:


listen = YES                        #Para que se inicie el servicio con el sistema.
listen_port=8080                 #Puerto de escucha. Recomendable cambiarlo por razones de                                                        #seguridad.
pasv_enable=YES               #Conexión en modo pasivo (más seguro).
pasv_promiscuous=YES     # Modo promíscuo
pasv_min_port=3000           # Rango mínimo de los puertos en modo pasivo.
pasv_max_port=3099          # Rango máximo de los puertos en modo pasivo.
anonymous_enable = NO    #No permitimos que usuarios anónimos puedan conectarse a                                                          #nuestro servidor. 
local_enable = YES              #Para poder conectarse con los usuarios locales del servidor                                                            #donde está instalado.
write_enable = YES              #Si quieres que los usuarios puedan escribir y no sólo                                                                      #descargar.
local_umask = 022                #Esta máscara hace que cada vez que subas un archivo, sus                                                           #permisos sean 755 (recomendable).
userlist_enable=YES            #Lista de usuarios que se podrán conectar por ftp.
userlist_deny=NO                 #Lista de usuarios a los que se les prohibirá el acceso. 
userlist_file=/etc/user_list    #Archivo y ruta que contiene los usuarios permitidos. Hay                                                                 #que crearlo, y se rellenara con los nombres de los usuarios                                                             #en cada fila.
vsftpd_log_file=/var/log/vsftpd.log       #Archivo que contendrá los logs del servicio FTP.
chroot_local_user = YES        # Para enjaular a los usuarios en un directorio específico.
chroot_list_enable = YES       #Sirven para que los usuarios locales puedan navegar por                                                               #todo el árbol de directorios del servidor.
chroot_list_file = /etc/vsftpd.chroot_list    # Lista de usuarios que podrán acceder al                                                                     #árbol de directorios.


Indicamos el fichero donde están listados los usuarios que pueden navegar hacía arriba por los directorios del servidor, lo normal es que sea el administrador del servidor y poco más.
El fichero “vsftpd.chroot_list” y “user_list” no suele existir así que debemos crearlo y editarlo. 

En “user_list” incluimos a los usuarios que queremos que puedan contectarse al servidor:

$ sudo nano /etc/user_list

En “vsftpd.chroot_list” asignameros los nombres de usuarios que queremos que puedan listar todos los directorios del servidor y no sólo el suyo asignado por FTP (administradores,..):

$ sudo nano /etc/vsftpd.chroot_list

Basta con escribir solo el nombre del usuario en cada fila. 
Para que jerarquizar todo perfectamente, crearemos un grupo y unos usuarios exclusivamente para conectarse vía ftp.

Creamos primero el grupo:

$ sudo groupadd ftpusers.

Después creamos un usuario ftp in que tenga derecho a un shell:

$ sudo useradd -g ftpusers -s /bin/false -d /home/ftp/usuario usuario

Las opciones son:

-g ftpusers: el usuario pertenece al grupo ftpusers.
-d /home/ftp/usuario: el directorio principal del usuario es /home/ftp/usuario. 
-s /bin/false: el Shell fantasma que no va a poder utilizar el usuario.

Asignamos una contraseña al nuevo usuario:

$ sudo passwd usuario

Hay que tener en cuenta que el protocolo FTP no deja escribir al usuario en la carpeta raíz en la que está enjaulado. Por ello hay que tener cuidado con los permisos que otorgamos. 

Si tenemos permiso de escritura, ejecución y lectura en la raíz, al conectarnos con Filezilla nos devolverá el siguiente error:
“500 OOPS: vsftpd: refusing to run with writable root inside chroot()”

Una solución es quitarle los permisos de escritura a esa carpeta, y darle la propiedad a root. Esto hará que el usuario no pueda hacer nada en su propia carpeta, así que lo mejor es crearle otra dentro con permisos normales para que pueda utilizarla.

$ sudo chown root /home/ftp
$ sudo chmod 755 /home/ftp/usuario
$ sudo mkdir /home/ftp/usuario/personal
$ sudo chown usuario:ftpusers /home/ftp/usuario/personal

Reiniciamos el servicio "vsftp":

$ /etc/init.d/vsftpd

Ya podremos conectarnos mediante algún cliente FTP, como Filezilla, a través del usuario creado, y a su vez enjaular a éste en el directorio creado para tal uso.

Debido a que el protocolo FTP no encripta la información, estamos expuestos a que nos puedan robar fácilmente cualquier información (usuario y contraseña,…). Por ello, es recomendable sólo utilizar este protocolo en una pequeña LAN doméstica, ¡nunca fuera de ella!.

Sin embargo, en el próximo tutorial veremos cómo aumentar la seguridad  "vsftpd" y como crear y configurar certificados para asegurar un poco más las conexiones desde el exterior
.
Hasta otra….

3 comentarios:

  1. Gracias por este magnífico tutorial, pero tengo un problema, y es que al instalar el programa no "se crea" el archivo de configuración que como señalas debe estar en el directorio /etc. He intentado reinstalarlo varias veces sin resultado, sin embargo en /etc/init.d, se puede ver el programa. Con un "top" sin embargo veo que no se esta ejecutando. ¿Alguna idea de por que ocurre esto? Gracias de antemano.

    ResponderEliminar
  2. Gracias por este magnífico tutorial, pero tengo un problema, y es que al instalar el programa no "se crea" el archivo de configuración que como señalas debe estar en el directorio /etc. He intentado reinstalarlo varias veces sin resultado, sin embargo en /etc/init.d, se puede ver el programa. Con un "top" sin embargo veo que no se esta ejecutando. ¿Alguna idea de por que ocurre esto? Gracias de antemano.

    ResponderEliminar
  3. Según me has respondido personalmente, tu problema se ha resuelto a la quinta instalación, lo que es bastante extraño. Esto puede deberse a múltiples causas.
    Si el demonio está activo lo puedes comprobar con:
    ps -aux | grep vsftpd
    Si ves el proceso activo, quiere decir que el archivo de configuración existe.
    Puedes encontrarlo, por ejemplo, con el comando "find":
    find / -name vsftpd.conf
    Así podrás saber la ruta exacta donde se encuentra el archivo de configuración.
    De todas formas, sigue siendo extraño que este archivo esté fuera del directorio /etc.
    Antes de instalar cualquier paquete, actualiza los repositorios:
    apt-get update
    apt-get upgrade
    Es solo mi humilde recomendación....

    ResponderEliminar