0% encontró este documento útil (0 votos)
80 vistas15 páginas

Tema 3 - 2 FTP Linux vsftpd-7

1. El documento describe la instalación y configuración del servidor FTP vsftpd en Linux, incluyendo clientes FTP, permisos de usuario, y opciones de configuración. 2. Explica cómo permitir a usuarios del sistema descargar e incluso subir archivos mediante ajustes en el archivo de configuración vsftpd.conf. 3. También cubre temas como la creación de usuarios virtuales, limitaciones de conexión, y el uso del modo pasivo y SSL sobre FTP.

Cargado por

lasox60643
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
80 vistas15 páginas

Tema 3 - 2 FTP Linux vsftpd-7

1. El documento describe la instalación y configuración del servidor FTP vsftpd en Linux, incluyendo clientes FTP, permisos de usuario, y opciones de configuración. 2. Explica cómo permitir a usuarios del sistema descargar e incluso subir archivos mediante ajustes en el archivo de configuración vsftpd.conf. 3. También cubre temas como la creación de usuarios virtuales, limitaciones de conexión, y el uso del modo pasivo y SSL sobre FTP.

Cargado por

lasox60643
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 15

SERVIDOR FTP EN LINUX

vsftpd
ÍNDICE

1. Instalación y configuración por defecto del servidor FTP vsftpd ...................................... 4

2. Clientes FTP ............................................................................................................................. 5

3. Arranque, parada y reinicio del servicio vsftpd ................................................................... 7

4. Permisos.................................................................................................................................... 7

4.1. Permitir a usuarios del sistema descargar información .............................................. 7

4.2. Permitir usuarios del sistema subir y modificar la información. ................................ 7

4.2.1. Recordatorio sobre permisos en Linux ................................................................ 7

4.2.2. Subida y modificación de ficheros ........................................................................ 9

4.3. Evitar salir del home a los usuarios locales ................................................................. 9

4.3.1. Creación de usuarios en Linux............................................................................ 10

4.4. Indicar un único directorio de trabajo para todos los usuarios ................................ 11

4.5. Creación de usuarios virtuales ..................................................................................... 12

4.6. Limitaciones en las conexiones .................................................................................... 12

4.7. Configuración modo pasivo ........................................................................................... 13

4.8. Configuración de SSL sobre FTP. ............................................................................... 14

4.9. Otras opciones de configuración.................................................................................. 15

~2~
~3~
1. Instalación y configuración por defecto del servidor
FTP vsftpd
El programa servidor ftp que utilizaremos en Linux es vsftpd (very secure file
transfer protocol demon).

Podemos realizar su instalación mediante el comando: apt install vsftpd

La gestión y administración del servidor vsftpd se podrá realizar desde su fichero


de configuración, localizado en /etc/vsftpd.conf.

Al instalar el servicio vsftpd por defecto:

 El fichero de configuración creado es /etc/vsftpd.conf.

 Únicamente se permite la conexión de usuarios anónimos, pudiéndose utilizar


indistintamente anonymous y ftp, sin clave de conexión, que se crean en la
instalación, así como su grupo de pertenencia ftp.

 El directorio por defecto para la descarga de los usuarios anónimos del servicio
ftp se localiza en /srv/ftp, cuyo propietario es root y su grupo es ftp.

 El directorio de trabajo de usuarios anónimos es /srv/ftp y no pueden salir de él


hacia niveles superiores, aunque si pueden adentrarse en directorio hijos, en
caso de que existieran. Se suele utilizar el término “enjaulado”.

 Únicamente disponen de permiso de lectura, por lo que no pueden subir


información al servidor, solamente bajar.

 El puerto de atención de peticiones de conexión es el 21.

 Crea el archivo /etc/ftpusers con la lista de usuarios que no pueden conectarse


al servicio FTP.

~4~
2. Clientes FTP

Navegador web
El cliente por defecto FTP que podemos utilizar en cualquier sistema operativo es el
navegador web.

Línea de comandos
También se puede acceder al servicio FTP a través de la línea de comandos:
ftp [nombre_maquina | IP]

A continuación se muestran los comandos básicos:


Establecer conexión ftp nombre_servidor o bien ftp IP_servidor

Órdenes generales

help Muestra las órdenes disponibles

? Muestra las órdenes disponibles

help <orden> Muestra ayuda sobre la orden

? <orden> Muestra ayuda sobre la orden

status Muestra el estado actual de la sesión FTP

! <orden> Ejecuta la orden especificada en el equipo local

prompt Activa o desactiva la aparición de mensajes de confirmación cuando se completan las órdenes

ascii Fija el modo de transferencia ascii (texto plano)

binary Fija transferencia en binario (datos, ejecutables, texto con formato…)

passive Activa o desactiva el modo pasivo para la transferencia

Antes de realizar la transferencia, se selecciona el modo de transferencia. En general se


utiliza binary, utilizando ascii en caso de archivos de texto sin formato. Si no se especifica,
el servidor decide el modo más adecuado.

Órdenes para iniciar o terminar una sesión

open <servidor> Inicia una sesión FTP con un servidor remoto, especificado por su dirección IP o su FQDN

close Termina la sesión actual pero no sale del programa

disconnect Termina la sesión actual pero no sale del programa

bye Termina la sesión y sale del programa FTP

quit Termina la sesión y sale del programa FTP

user <nombre> Inicia una sesión FTP con el nombre de usuario indicado

~5~
Órdenes para el manejo de directorios

ls <ruta> Muestra el contenido del directorio especificado en el servidor

dir <ruta> Muestra el contenido del directorio especificado en el servidor

mdir <ruta> Muestra el contenido del directorio especificado en el servidor. Admite caracteres comodín

cd <directorio> Cambio de directorio en el servidor remoto

lcd <directorio> Cambio de directorio en el equipo local

mkdir <directorio> Crea el directorio en el servidor remoto

rmdir <directorio> Elimina el directorio en el servidor remoto

pwd Muestra el directorio actual en el servidor remoto

Órdenes para el manejo de archivos

put <arch1> <arch2> Copia el fichero <arch1> del sistema local en el sistema remoto con nombre
<arch2>

mput <archivos> Copiado de múltiples ficheros desde el sistema local al sistema remoto

get <arch1> <arch2> Copia el fichero <arch1> del sistema remoto en el sistema local con nombre
<arch2>

mget <archivos> Copiado de múltiples ficheros desde el sistema remoto al sistema local

delete <archivo> Elimina el archivo especificado en el servidor remoto

mdelete <archivos> Borrado de múltiples ficheros en el sistema remoto

rename <arch1> <arch2> Cambia el nombre del archivo <arch1> situado en el sistema remoto por <arch2>

Para hacer transferencias múltiples de archivos sin tener que confirmar cada archivo,
primero se ejecuta prompt, y después mget o mput, según corresponda.

Clientes gráficos
En el caso de Linux se pueden instalar varios clientes. A continuación se deja un enlace
donde se explican los diferentes clientes gráficos en Linux:
FTP client list and installation on Ubuntu 20.04 Linux Desktop/Server - Linux Tutorials -
Learn Linux Configuration

En el siguiente enlace se muestran varios clientes gráficos de FTP para Windows/Linux:

7 clientes FTP gratis para Windows, macOS, GNU/Linux, Android e iOS (xataka.com)

~6~
3. Arranque, parada y reinicio del servicio vsftpd
Se debe tener en cuenta que por cada modificación que se hace sobre el fichero
vsftpd.conf se debería reiniciar el servicio vsftpd para que se activen las nuevas
modificaciones.
 systemctl stop vsftpd
 systemctl start vsftpd
 systemctl restart vsftpd
 systemctl status vsftpd

4. Permisos

4.1. Permitir a usuarios del sistema descargar información


Los usuarios anónimos se habilitan mediante: anonymous_enable=YES

Para permitir a los usuarios del sistema conectarse deberemos indicar


local_enable=YES, con ello permitimos la conexión al servidor de los usuarios locales
únicamente para bajadas de información y con su home como directorio de trabajo.

4.2. Permitir usuarios del sistema subir y modificar la información.


Antes de hablar de la posibilidad de subir información al servidor, deberíamos
hacer un pequeño recordatorio sobre permisos de fichero y directorio en Linux.

4.2.1. Recordatorio sobre permisos en Linux


Cuando creamos un fichero en Linux, por defecto se le asignan permisos de lectura
y escritura que se pueden representar mediante tres dígitos decimales, donde el primer
dígito se corresponde con el valor asignado al usuario, el segundo al grupo y el tercero al
resto de usuarios.

Ejemplo: Fichero con 640: 6 → Propietario; 4 → Grupo; 0 → Resto de usuarios.

~7~
Los valores numéricos representan algunos de los siguientes valores o su suma, de
tal manera que:

 1 → Permiso de ejecución (001)


 2 → Permiso de escritura (010)
 4 → Permiso de lectura (100)

Sumas de los valores anteriores:


 1+2=3 → Permisos de ejecución y escritura.

 4+2=6 → Permisos de escritura y lectura.

Los permisos pueden ser modificados para que se asignen otros distintos a los que
vienen por defecto, para ello utilizaremos el comando umask.

Generalmente el valor por defecto de umask es 022 en casi todas las distribuciones
Linux a nivel de sistema operativo, aunque es configurable. En el caso de los permisos
por defecto en vsftpd, el valor de umask es 077, es decir, los permisos finales de subida
aplicados a los ficheros es 600 (rw-------).

Los permisos por defecto de los ficheros son 666 y los de los directorios 777
partiendo de ésta base, para determinar los permisos de creación de ficheros y de
directorios tenemos que restar los valores de umask de los permisos por defecto del
sistema.

Ejemplos:

Directorios
Permisos por defecto para directorios: 777

Permisos definidos en umask: 022

Operación: restarle el umask a los permisos de defecto: 777 – 022 = 755

Los directorios se crearán con permisos de lectura, escritura y ejecución para el


propietario y solo de lectura y ejecución para el grupo y todos los demás.

Ficheros
Permisos por defecto para ficheros: 666

Permisos definidos en umask: 022

Operación: restarle el umask a los permisos de defecto:

666 – 022 = 644

En el S.O., los ficheros se crearán con permisos de lectura y escritura para el


propietario y solo de lectura para el grupo y todos los demás.

~8~
4.2.2. Subida y modificación de ficheros
Para permitir la subida y modificación de ficheros deberíamos desmarcar dos
líneas:

 write_enable=YES, con ello permitimos cualquier operación que conlleve


escritura en el servidor, como subir información, borrarla, renombrarla, crear
directorios, …

 local_umask=022, vsftpd incluye por defecto una umask de 077 y con este
comando podemos modificarlo al valor deseado. El valor que incluye en el
ejemplo termina fijando unos permisos tras la subida de 644, con ello
posibilitaremos la creación de directorios y ficheros con los permisos
normalmente utilizados por defecto en todas las distribuciones Linux, es decir:

o Directorios: con control total para el propietario y permisos de lectura


y ejecución para el grupo y todos los demás.

o Ficheros: con permisos de lectura y escritura para el propietario y


lectura para el grupo y todos los demás.

Evidentemente, como administradores del servicio podemos modificar el valor


de local_umask para especificar el deseado en cada caso.

4.3. Evitar salir del home a los usuarios locales


Una opción muy extendida y que añade seguridad el servidor ftp es evitar que los
usuarios puedan salir de su home y navegar libremente por el sistema, con los riesgos
para la seguridad que conlleva. Para ello se utiliza el entorno chroot (jaula chroot) que
viene de change root o cambiar raíz.

Cuando se conecta un usuario local hay dos opciones:


 Se conecta como usuario del sistema, en cuyo caso su directorio home es el
suyo propio como usuario del sistema (/home/nombre_usuario) y tiene como
directorio raíz el propio directorio del sistema completo. Este usuario puede
descargarse archivos de todo el sistema de archivos, en función de los
permisos asignados.

~9~
 Se conecta como usuario del sistema, pero se le cambia su directorio raíz a
su directorio home, con lo que no tiene disponible el resto del sistema de
archivos. Para ello hay que activar la directiva siguiente:
chroot_local_user=YES

Puede ocurrir que nos interese que algunos usuarios puedan salir de su home
asignado, como para el caso de usuarios administradores u otros. En estas ocasiones
deberíamos indicar que utilice una lista de usuarios a los que se permite salir de su home,
así como el fichero contenedor de dicha lista, para ello deberíamos desmarcar dos líneas:

 chroot_list_enable=YES, con lo que especificamos que utilizaremos una lista


para identificar los usuarios a los que evitar salir del home.

 chroot_list_file=/etc/vsftpd.chroot_list, para indicar el fichero contenedor de


la lista. Se debe tener en cuenta que se deberá crear dicho fichero de texto
plano y su contenido será el nombre del usuario al que evitar salir. En caso de
querer incluir más usuarios, se especificará su nombre de forma individual en
líneas separadas.

Existe el archivo /etc/ftpusers donde se indican los usuarios a los que no se les
permite utilizar el servicio ftp.

4.3.1. Creación de usuarios en Linux


Para poder especificar usuarios a encerrar y otros para no encerrar debemos tener
más usuarios en el sistema. Para crear usuarios tenemos varias opciones. La más
eficiente y directa es adduser.

sudo useradd -m -g Usuarios -G gestion - s /bin/bash usuario

Explicación:
 -m: Crear automáticamente la carpeta del usuario en la carpeta
/Home/<NombreUsuario>
 -g: grupo principal al que será agregado
 -G: grupos secundarios al que pertenecerá.
 -s: shell que utilizara por defecto el usuario.
 usuario: Nombre del usuario.

~ 10 ~
Después de este comando queda asignar la contraseña, para ello utilizamos el
comando «passwd».
sudo passwd usuario

La anterior es la forma estándar y recomendada, pero también se puede hacer por


pasos de la siguiente forma.
 Creación del usuario:
sudo useradd usuario
 Asociación de una contraseña:
sudo passwd usuario
 Creación de la carpeta del usuario:
sudo mkdir /Usuarios/Clase1/usuario
 Ponemos como propietario de esa carpeta al usuario que hemos creado:
sudo chown usuario:usuario -R /Usuarios/Clase1/usuario
 Le asignamos los atributos de «755»:
sudo chmod 755 -R /Usuarios/Clase1/usuario
 Asignamos la carpeta al usuario como su carpeta personal:
sudo usermod -d /Usuarios/Clase1/usuario usuario
 Ahora únicamente queda asignar a qué grupos va a pertenecer. Esto lo
podemos hacer de dos maneras, mediante el comando «adduser», o editando
el fichero «/etc/group/». Ejemplo con adduser:
sudo adduser usuario grupo
 Finalmente, fijamos la shell:
sudo usermod -s /bin/bash

Para comprobar la correcta creación del usuario, podemos ejecutar:


cat /etc/passwd

4.4. Indicar un único directorio de trabajo para todos los usuarios


En algunas ocasiones nos puede interesar que todos los usuarios locales tengan
como directorio de trabajo una misma carpeta del disco, para ello deberemos incluir una
nueva línea que, por comodidad, añadiremos al final del fichero vsftpd.conf:
local_root=ruta_de_la_carpeta.

Ejemplo: local_root=/srv/ftp_local

No sólo debemos añadir la línea indicando la carpeta local en el fichero de


configuración de vsftpd, ya que es necesario crear dicha carpeta con unos permisos
especiales, es decir:
 Perteneciente al grupo ftp.
 Control total al propietario como al grupo.
 Permiso de lectura y ejecución para otros.

Por último, debemos añadir al grupo ftp todos los usuarios del sistema que tendrán
acceso a dicha carpeta.

Nota. En nuestro caso utilizaremos un servidor sin entorno gráfico, por lo que
necesitarás conocer los comandos para crear una carpeta, modificar sus permisos y
añadir usuarios a un grupo concreto.

~ 11 ~
4.5. Creación de usuarios virtuales
vsftpd permite la conexión de usuarios virtuales además de usuarios anónimos y usuarios
locales. Es decir, es posible crear cuentas de usuarios virtuales, que no existen en el
sistema operativo, pero que tienen acceso al servicio ftp.

Se debe crear un grupo controlado por el servicio de vsftpd. Todos los usuarios virtuales
pertenecerán a dicho grupo:
> groupadd grupoftp

Tras ello crear el home donde se va a alojar el usuario:


> mkdir /home/grupoftp/usuario

Crear un shell virtual o fantasma, para que los usuarios no puedan conectarse a una
sesión del sistema operativo.
> mkdir /bin/grupoftp

Tras ello editar el siguiente archivo:


> nano /etc/shells

Agregar al final del archivo /etc/shells.


/bin/grupoftp

Crear usuarios para nuestro servicio ftp mediante el siguiente comando:


> useradd -g ftp -d /home/grupoftp/usuario -s /bin/grupoftp usuario

Agregarle una contraseña al usuario creado:


> passwd usuario
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
>

Darle permiso al usuario pueda ser el dueño de su home:.


> cd /home/grupoftp
> chown usuario.grupoftp usuario/

Ya puede acceder el usuario virtual usuario al servicio FTP.

4.6. Limitaciones en las conexiones


En el servidor vsftpd se pueden establecer varias limitaciones sobre las conexiones o
sesiones establecidas por los clientes. Vamos a ver varios ejemplos de limitaciones y las
directivas necesarias para realizarlas.

Puedes comprobar que se pueden establecer varias sesiones simultáneas con un mismo
servidor, incluso desde una misma máquina cliente. Para limitar a tres el máximo de
conexiones realizadas desde una misma dirección IP de cliente y que puedan establecer
conexiones simultáneas un máximo de diez clientes:

~ 12 ~
Para limitar la máxima velocidad de transferencia de los usuarios anónimos a 20
KBytes/seg y de los usuarios locales a 50 Kbytes/seg:

Para establecer que se desconecte a un cliente, si está inactivo durante seis minutos:

Durante una transferencia de un archivo grande, se transfieren varios bloques de datos.


Puede establecerse una limitación para que cuando haya inactividad excesiva durante
una transferencia se cancele la transferencia. Para especificar que el tiempo máximo de
inactividad durante una transferencia sea de 2 minutos:

Para establecer en 20 segundos el tiempo máximo que un cliente tiene para responder a
una conexión activa:

Para listar recursivamente dentro de un directorio (muestra el contenido de todos los


subdirectorios a partir de la carpeta donde está situado el usuario):
ls_recurse_enable=YES

Para habilitar que se pueda visualizar un mensaje cuando entras a un directorio:


dirmessage_enable=YES
Para ello se debe crear un archivo (del nombre que se quiera, en este caso .mensaje),
dentro del directorio en el que al hacer el cambio se va a mostrar el mensaje. Tras hacerlo
indicar en vsftpd.conf el fichero que contiene el mensaje:
message_file=.mensaje

4.7. Configuración modo pasivo


Es necesario habilitar una serie de directivas en el fichero de configuración para poder
habilitar el modo pasivo en el servidor (puertos > 1024):

pasv_enable=YES
pasv_min_port=puertoInicio
pasv_max_port=puertoFin
pasv_address=IPServidor
listen=YES
listen_ipv6=NO

Desde el cliente, por línea de comandos:

 Una vez configurado el servidor, cuando el cliente quiera activar/desactivar el modo


pasivo para la transferencia de datos deberá usar el comando passive:

~ 13 ~
El puerto elegido en este caso para la transferencia de datos es 39*256+38=10022

 Para conectarnos en modo pasivo desde un cliente Linux:

ftp -p servidor

 Para conectarnos en Windows en modo pasivo:

ftp servidor
ftp> quote pasv

4.8. Configuración de SSL sobre FTP.


Vamos a configurar vsftpd para que acepte conexiones seguras (TLS/SSL/SFTP)

¿Por qué es tan importante que el servidor acepte conexiones seguras? El protocolo FTP,
aunque muy práctico no codifica los datos ni siquiera de los credenciales del usuario. El
hecho de que alguien pudiera capturar un paquete en la ruta, sería muy grave para la
seguridad del sistema, tened en cuenta que los servicios de FTP normalmente tienen
acceso a datos relevantes. La solución es utilizar un protocolo seguro.

SSL sobre FTP

Lo primero que debemos hacer es instalar ssh: apt-get install openssh

Tras ello debemos generar un certificado que almacenaremos en /etc/vsftpd y le daremos


un tiempo de vida de un año (365 días). La instrucción es la siguiente:

> openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

Ahora sólo nos queda modificar el fichero de configuración. Probablemente no estarán las
siguientes líneas escritas, por lo que podéis añadirlas al final del mismo.

~ 14 ~
Tras reiniciar el servicio ya podemos conectarnos. Deberemos indicarle a nuestro cliente
de FTP los mismos datos que antes pero escogiendo:

Tipo de servidor: SFTP, SSH FTP


Puerto: 22

4.9. Otras opciones de configuración.


Existen otras muchas posibilidades de configuración para lo que se debería
consultar el manual de Linux sobre vsftpd.conf, mediante el comando:

man vsftpd.conf

También podemos consultar el manual online en la siguiente página:


http://vsftpd.beasts.org/vsftpd_conf.html

~ 15 ~

También podría gustarte