0% encontró este documento útil (0 votos)
26 vistas38 páginas

Servicio FTP

Cargado por

jairomateosgomez
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)
26 vistas38 páginas

Servicio FTP

Cargado por

jairomateosgomez
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

UNIDAD 4

SERVICIO FTP

(TEORÍA)
Unidad 4 Servicio FTP 2

Indice
1.- ESTRUCTURA DEL PROTOCOLO FTP..................................................................................3
1.1.- Servidor FTP........................................................................................................................ 3
1.2.- Cliente FTP.......................................................................................................................... 3
2.- INSTALACIÓN DEL CLIENTE FTP.....................................................................................4
3.- INSTALACIÓN DEL SERVICIO FTP...................................................................................4
3.1.- Conexión desde el cliente................................................................................................. 5
4.- CONFIGURACIÓN DEL SERVICIO FTP.............................................................................8
4.1.- Opciones del usuario local................................................................................................ 8
4.2.- Opciones de transferencia de archivos........................................................................9
4.3.- Creación de un nuevo usuarios del servicio FTP.......................................................10
5.- MODOS DE CONEXIÓN DEL CLIENTE FTP...................................................................12
5.1.- Modo Activo....................................................................................................................... 12
5.2.- Modo Pasivo....................................................................................................................... 13
5.3.- Modo Pasivo y Activo en Filezilla.................................................................................14
6.- TIPOS DE USUARIOS........................................................................................................... 15
6.1.- Crear un servidor FTP anónimo.....................................................................................16
7.- AÑADIMOS SEGURIDAD AL SERVICIO FTP................................................................19
7.1.- Configuramos el cortafuegos del servidor: ufw........................................................19
7.1.1- Configuramos los puertos........................................................................................ 24
7.2.- Seguridad con los usuarios locales..............................................................................26
7.2.1.- Permitir sólo el acceso al servicio FTP...............................................................26
7.2.2.- Enjaulamos al usuario............................................................................................. 28
7.3.- Configuramos VSFTPD con un certificado SSL/TLS.............................................30
7.3.1.- ¿Cómo es el cifrado SSL/TTL?............................................................................30
7.3.2.- Generamos el certificado SSL/TTL...................................................................32
8.- AÑADIMOS NUESTRO SITIO EN FILEZILLA............................................................37
Unidad 4 Servicio FTP 3

1.- ESTRUCTURA DEL PROTOCOLO FTP


El protocolo FTP utiliza una arquitectura cliente/servidor.

1.1.- Servidor FTP


• El servidor FTP, es un servicio que está instalado en un ordenador que hace

funciones de servidor, y que tiene como objetivo permitir el acceso para el

intercambio de los archivos que estén dentro de él, con otro equipo que se

conecte al servicio. El servidor FTP usa el puerto 20 y 21

• Es decir, el servidor FTP tiene la responsabilidad de procesar las peticiones

para descargar archivos.

1.2.- Cliente FTP


• Un cliente FTP es un software que el usuario de un protocolo FTP deberá

instalar en su equipo para poder acceder al servidor FTP para poder descargar

y cargar archivos.

• Es decir, el cliente FTP es el programa que los usuarios deben tener instalado

en su equipo para poder subir y bajar archivos. Se le llama “cliente” porque es el

cliente (usuario) que se conecta al servidor, aplicando el modelo cliente-servidor

de Internet.

• Pero no sólo puede realizar operaciones de transferencia de archivos, también

puede (si tiene los permisos necesarios) gestionar el espacio donde se

encuentran esos archivos compartidos, creando, renombrando o eliminando

directorios.
Unidad 4 Servicio FTP 4

• Los clientes que transfieren los archivos pueden estar dentro de la misma red

donde está configurado el servidor FTP, o fuera de ella (a través de Internet).

FTP utiliza dos puertos, uno para conexión y otro para envío de datos.

2.- INSTALACIÓN DEL CLIENTE FTP


• Actualizamos la máquina cliente

• Instalamos el paquete filezilla para disponer del cliente FTP Filezilla.

• Ejecutamos en la terminal el comando filezilla y comprobamos que se nos abre y

que ha quedado correctamente instalado.

• Al abrirse por primera vez nos pregunta si queremos que Filezilla almacene

nuestras contraseñas. Elegimos la opción “No guardar contraseñas”

3.- INSTALACIÓN DEL SERVICIO FTP


• Los protocolos empleados para la carga y descarga de archivos desde un

servidor FTP remoto requieren un software específico que debe instalarse en la

máquina. De este modo, cualquier cliente que lo solicite tendrá acceso remoto a

los archivos, tanto para cargarlos como para descargarlos.

• Para Ubuntu GNU/Linux se ha seleccionado la herramienta vsftpd (very secure

FTP) como servidor FTP. La elección se justifica por los motivos siguientes:

1. Se instala con facilidad y se puede configurar en modo consola.

2. Posee un módulo para Webmin.

3. Resulta muy eficiente como servidor anónimo. De hecho, este servidor

FTP lo utilizan sitios que deben soportar una gran cantidad de conexiones

anónimas simultáneas, como Debian (ftp.debian.org), el proyecto GNU

(ftp.gnu.org) o la empresa Red Hat (ftp.redhat.com) entre otros.


Unidad 4 Servicio FTP 5

Vamos a suponer que no tenemos acceso físico a nuestro servidor, por lo que

tendremos que trabajar la práctica en todo momento conectándonos desde el cliente

y accediendo de manera remota al servidor a través de la terminal

• Nos conectamos de manera remota al servidor usando protocolo SSH.

• Actualizamos el servidor

• Instalamos el paquete vsftpd

• Los comandos para detener, iniciar, reiniciar y ver el estado del servicio son

respectivamente:

service
service vsftpd
vsftpd stop
stop // service
service vsftpd
vsftpd start
start
service
service vsftpd
vsftpd restart
restart // service
service vsftpd
vsftpd status
status

• Comprueba el estado del servicio, páralo, inícialo y reinicialo

3.1.- Conexión desde el cliente

• Una vez instalado, ya podremos acceder al servidor FTP desde el cliente. Lo

haremos de tres maneras posibles:

1. A través de Nautilus: ftp://[IP del Servidor]


Unidad 4 Servicio FTP 6

2. A través de la terminal, con el comando: ftp [IP del Servidor]

• Para salir del servicio ejecutamos el comando exit

3. A través de FilezillaLo abrimos, y nos dirigimos a la barra superior

donde colocaremos la IP de nuestro servidor, el nombre de usuario y

password que tengamos configurado en el servidor.

• Pulsamos el botón “conexión rápida”

• Una vez que pulsamos sobre “conexión rápida”, vemos en la parte “registro de

mensajes” como nuestro cliente inicia la conexión con el servidor FTP que le

hemos indicado:
Unidad 4 Servicio FTP 7

• El programa Filezilla se divide en dos entornos, a la izquierda podemos ver los

directorios de nuestro sitio local (el ordenador desde donde nos conectamos) y

a la derecha los directorios remotos de nuestro servidor.

Ahora podemos pasar archivos de un sitio a otro, simplemente arrastrándolos

desde nuestro sitio local al directorio remoto.

• Intenta arrastrar un archivo desde algún directorio local a un directorio

remoto. ¿Has podido hacerlo Muestra una captura del mensaje que te da

Filezilla.
Unidad 4 Servicio FTP 8

4.- CONFIGURACIÓN DEL SERVICIO FTP


• El archivo de configuración de este servicio se denomina vsftpd.conf y se

encuentra en la ruta /etc.

4.1.- Opciones del usuario local

a) chroot_local_user Limitar el acceso a los usuarios locales

Esto permite “enjaular” a los usuarios locales (o del sistema) dentro de su

propio directorio personal. Si, queremos que cada usuario tenga acceso a su

propio directorio personal y no pueda salir de él, entonces tendríamos que

descomentar el parámetro “chroot_local_user” y cambiamos el valor de “NO” a

“YES”. De esta forma, los usuarios locales tendrán bloqueado el acceso a todos

los directorios, salvo al directorio personal, es más , su directorio personal será

el directorio raíz en su conexión al servidor FTP. . A esto se le conoce como

“enjaular al usuario local”.

De esta manera mantenemos la privacidad entre el resto de los usuarios.

En caso de que establezcamos chroot_local_user=YES, tendremos que darle al

usuario FTP permisos de escritura. Para ellos introducimos una nueva etiqueta:

allow_writeable_chroot=YES, que hará que el usuario tenga permisos de

escritura sobre el directorio donde lo hemos enjaulado.

b) chroot_list_enable y chroot_list_file

b1.- Si la etiqueta chroot_local_user tiene valor a “YES”

Con la etiqueta chroot_list_enable indicamos los usuarios no se les va a

“enjaular”. Es decir, aquellos que son la excepción y no serán enjaulados.

Estos usuarios deberán darse de alta manualmente en el archivo que

crearemos en la ruta /etc/vsftpd.chroot_list y esa ruta se le asignará a la


Unidad 4 Servicio FTP 9

etiqueta chroot_list_file. En este fichero se pondrán a los usuarios

“enjaulados” separados por líneas.

b2.- Si la etiqueta chroot_local_user está descomentada y tiene valor a “NO”

Con la etiqueta chroot_lis_enable indicamos que a los usuarios se les va a

“enjaular”. Aquellos usuarios que queramos que lo estén, deberán darse de

alta manualmente en el archivo que crearemos en la ruta por defecto

/etc/vsftpd.chroot_list y esa ruta se le asignará a la etiqueta

chroot_list_file. En este fichero se pondrán a los usuarios “enjaulados”

separados por líneas.

c) chmod_enable Permitir que el usuario cambie permisos en los archivos

Cuando está activada, se permite el comando FTP SITE CHMOD para los

usuarios locales. Este comando permite que los usuarios cambien los permisos en

los archivos.

4.2.- Opciones de transferencia de archivos

a) write_enable Permitir cambios en el sistema de archivos

Por defecto se tiene que ni los usuarios locales ni los anónimos pueden utilizar

los comandos FTP para subir o bajar archivos, o ejecutar comandos FTP para

modificar directorios, por eso la línea “#write_enable=YES” está comentada.

Si se quiere permitir al usuario usar comandos FTP, es necesario descomentarla.

b) download_enable Permitir descarga de archivos

Cuando está activada, se permiten las descargas de archivos.


Unidad 4 Servicio FTP 10

c) chown_uploads

Si está activada, todos los archivos cargados por los usuarios anónimos

pertenecen al usuario especificado en la directriz chown_username.

d) chown_username

Especifica la propiedad de los archivos cargados anónimamente si está activada

la directriz chown_uploads.

4.3.- Creación de un nuevo usuarios del servicio FTP


• Hasta ahora, nos hemos autentificado con las credenciales del usuario que

habíamos creado al instalar Ubuntu en nuestra máquina virtual y hemos

accedido al directorio de ese usuario.

• En esta práctica queremos que otro usuario use FTP con su propia cuenta y

directorio de ficheros, y para ellos sería interesante crear un usuario. Por

tanto, crearemos en el servidor un usuario llamado “user_ftp1”.

• Editamos el archivo /etc/passwd y verificamos que se ha creado el usuario en

nuestro sistema.

• Modifica el archivo de configuración para indicar que los usuarios van a estar

enjaulados.

• Accede a través de Filezilla con cada uno de los usuarios y verifica que los dos

usuarios sólo pueden acceder a sus directorios personales en el servidor.

Ejercicio.-

a) Vamos a modificar el archivo de configuración del servicio FTP, por tanto,

realizamos una copia del archivo por seguridad. En caso de que tengamos algún

problema, tenemos un respaldo con el archivo que acabamos de copiar.


Unidad 4 Servicio FTP 11

b) En ese archivo haremos una modificación para permitir que el usuario que

acabamos de crear tenga permisos de ejecución de comandos FTP, y pueda

crear directorios y subir y bajar archivos.

c) Reiniciamos el servicio FTP para que se apliquen los cambios.

d) Vemos el estado del servicio, el cual debe estar corriendo sin ningún error.

e) Nos salimos del servidor y volvemos al cliente

f) Desde el cliente abrimos Filezilla y desde esa aplicación haremos los siguiente:

▪ Crea en el servidor una carpeta dentro de /home/tu_usuario denominada

“Carpeta2”

▪ Dentro de ella, crea un archivo llamado “Archivo1”

▪ Crea en tu directorio local “Documentos” una carpeta denominada

“Carpeta1”

▪ Arrastra el “Archivo1” a la “Carpeta1”

▪ Renombra el “Archivo1” como “Archivo2”

▪ Sube el “Archivo2” a la “Carpeta2”

▪ Sube la “Carpeta1” al mismo directorio que “Carpeta2”

▪ Entra de manera remota por SSH al servidor y muestra que se ha creado

la “Carpeta1”, la “Carpeta2” con los diferentes archivos en su interior.

▪ Vuelve a Filezilla y elimina en tu máquina cliente el “Archivo1” y luego la

“Carpeta1”

▪ Borra la “Carpeta1” y “Carpeta2” del servidor

▪ Entra de nuevo de manera remota al servidor vía SSH y comprueba que

en el servidor no está ni la “Carpeta1” ni la “Carpeta2”.


Unidad 4 Servicio FTP 12

5.- MODOS DE CONEXIÓN DEL CLIENTE FTP


• FTP admite dos modos de conexión del cliente. Estos modos se denominan

Activo (o Estándar, o PORT, debido a que el cliente envía comandos tipo PORT

al servidor por el canal de control al establecer la conexión) y Pasivo (o PASV,

porque en este caso envía comandos tipo PASV). Tanto en el modo Activo como

en el modo Pasivo, el cliente establece una conexión con el servidor mediante el

puerto 21, que establece el canal de control.

5.1.- Modo Activo


• Este modo funciona cuando el cliente inicia la comunicación enviando un comando

PORT, a través de un puerto aleatorio mayor que el 1024, con un paquete

dirigido al puerto 21 del servidor. Esta conexión será la canal de control, ya

que es por donde el cliente enviará los comandos FTP. Una vez establecida la

conexión, el servidor inicia otra comunicación, pero esta vez en sentido inverso.

• El servidor, a través del puerto 20, se pone en contacto inmediatamente con el

puerto siguiente del cliente, es decir, imaginemos que el puerto utilizado en la

primera conexión por el cliente fue el 1035, entonces, el servidor FTP se pone

en contacto con el cliente por el puerto 1036 del cliente. Esta última conexión

será el canal de datos, ya que es por donde se enviarán los archivos.

• Una vez establecida la conexión, todas las transferencias de archivos se

realizan a través de los mismos puertos entre el cliente y el servidor. Por lo

tanto, es el cliente quien establece el canal de control, pero será el servidor

quien establece el canal de datos.


Unidad 4 Servicio FTP 13

• Lo anterior tiene un grave problema de seguridad, y es que la máquina cliente

debe estar dispuesta a aceptar cualquier conexión de entrada en un puerto

superior al 1024, con los problemas que ello implica debido a que los

cortafuegos que se instalen en el equipo cliente es seguro que rechacen la

conexión para evitar ataques a esas conexiones aleatorias de puerto. Para

solucionar esto se desarrolló el modo Pasivo.

5.2.- Modo Pasivo


• En el modo pasivo, el cliente también se pone en contacto con el puerto 21 del

servidor FTP a través de un comando PASV. El servidor, en lugar de iniciar una

segunda conexión de inmediato, responderá al cliente que sólo puede ponerse en

contacto con un segundo puerto diferente a la primera. Se realiza una segunda

conexión desde el cliente al servidor para la transferencia de datos.

• En este caso el firewall no bloquea el intento de comunicación entre el servidor

y el cliente, ya que ha sido el cliente quien inició la conexión ambas veces.


Unidad 4 Servicio FTP 14

5.3.- Modo Pasivo y Activo en Filezilla


• Abre Filezilla y pica sobre el menú Edición/Opciones

• En la ventana que se te abre selecciona el item FTP y cambia el modo de

transferencia de Activo a Pasivo y pulsa en aceptar.

• Reconectate a Filezilla y pasa desde el cliente al servidor un archivo de más de

10MB. Repite la misma operación y comprueba que operación de las dos se ha

realizado más rápido. Da una explicación.


Unidad 4 Servicio FTP 15

6.- TIPOS DE USUARIOS


• Para acceder a un servidor FTP, primero debemos iniciar sesión. El servidor FTP

admite tres tipos de cuentas de inicio de sesión de usuarios: usuarios reales,

invitados y anónimos.

▪ Anónimos: Este tipo de usuario se utiliza generalmente cuando el servidor

FTP se usa para distribuir cualquier tipo de archivos a un número muy

elevado de usuarios en una situación en la que la identificación no es muy

importante. Si por ejemplo hemos realizado una aplicación de software

libre y queremos distribuirla es una buena opción.

En este tipo de conexión solo se le pide al cliente un nombre de usuario

anónimo (generalemente por defecto es anonymous) y, si acaso (no

siempre), una contraseña que se refiere a cualquier dirección de correo

electrónico válida. Una vez nos hemos conectado al servidor tendremos

acceso al directorio anónimo y sus subdirectorios.

▪ Usuarios del sistema: En este caso los usuarios de FTP son los que

existen en la máquina en la que instalamos el servidor. Estos usuarios

podrán leer de y copiar a su directorio personal archivos remotamente.

Las mismas credenciales que tienen en la máquina serán las que necesiten

para conectarse a mediante FTP, es decir, se conectan al servidor FTP

con el usuario y contraseña de sistema.

▪ Usuarios invitados: son usuarios que no tienen cuentas de usuario en el

sistema servidor pero que pueden acceder al servicio FTP. Lo que lo

diferencia de los últimos dos tipos de usuarios (anónimos y locales) es que

este tipo de usuario solo podrá trabajar en un directorio de trabajo

destinado exclusivamente para él, evitando así que el este tenga acceso a

otras partes del sistema operativo. (Pero sin restringir los privilegios que

tiene sobre su propio directorio de trabajo).


Unidad 4 Servicio FTP 16

6.1.- Crear un servidor FTP anónimo.


• Un servidor FTP anónimo es un servidor que proporciona a los usuarios acceso a

los archivos sin necesidad de proporcionar identificación al usuario.

• Para permitir que usuarios anónimos se conecten a nuestro servidor utilizamos

la opción de configuración anonymous_enable,


anonymous_enable estableciendo el valor yes.

• Una vez encontrado el parámetro lo configuramos como queremos, en este caso

con el valor YES y descomentándolo si estuviera comentado. Guardamos los

cambios y para que el servidor los tenga en cuenta debemos reiniciar el servicio

FTP.

• Para acceder como usuario anónimo al servidor hay que poner:

Usuario: anonymous, ftp, o simplemente dejarlo en blanco.


Constraseña: en blanco.

• Si se activa el acceso anónimo el directorio por defecto se encuentra en

/srv/ftp.

• Por defecto está configurado para que los usuarios anónimos sólo puedan

descargarse ficheros de ese directorio. Además el usuario anónimo se

encuentra “enjaulado”, es decir, no pueden salir del directorio por defecto

/srv/ftp.

• De manera remota crea un directorio llamado “Carpeta_Anonimo” dentro de la

ruta /srv/ftp del servidor y crea en él un archivo llamado “Archivo_Anonimo”.

Conéctate por Filezilla como usuario anónimo y comprueba que tienes acceso al

directorio y archivo que acabas de crear y que la única operación que puedes
Unidad 4 Servicio FTP 17

hacer es la de descarga´(No puedes eliminar, ni subir, ni renombrar, etc). Tras

comprobarlo, elimina de manera remota el directorio y archivo.

• Como hemos visto, el directorio raíz para los usuarios anónimos es srv/ftp. Si

queremos configurar un directorio raíz diferente para este tipo de usuarios,

debemos crear la etiqueta anon_root asignándole el directorio que sea el

directorio raíz d este tipo de usuarios: anon_root=otro_directorio_distinto.

Por ejemplo:

✔ Creamos el directorio de nombre “publico” dentro de srv/ftp

✔ Creamos la etiqueta anon_root=/pub, que hará que el directorio raíz para

los usuarios anónimos sea /srv/ftp/pub

✔ Guardamos los cambios y reiniciamos el servicio. Es importante poner un comentario con


lo que hace la etiqueta, el creador y la
Fecha de creación

• Comprueba que se ha modificado el directorio raíz para el usuario anónimo. Para

ello crea la carpeta “Carpeta_Anónimo” dentro del directorio srv/ftp/pub y

conectate desde Filezillla como usuario anónimo.

• Si queremos limitar la tasa máxima de descarga (en bytes por segundo) para las

conexiones de los usuarios anónimos, hemos de crear la etiqueta

anon_max_rate y asignarle los bits por segundo como máximo en la descarga.

Por ejemplo, si escribo en el archivo de configuración anon_max_rate=1048576,

estaremos limitando la tasa máxima de descarga a 1GB/s. Esto tiene como

utilidad evitar que las conexiones de usuarios anónimos nos dejen sin velocidad

de subida. En caso de que comentemos la etiqueta o le asignemos el valor 0,

estaremos indicando que no existe límite de velocidad de descarga.


Unidad 4 Servicio FTP 18

• Si queremos que el servidor sea un servicio FTP anónimo, es decir, que sólo

atienda a usuarios anónimos, en este caso hemos de modificar las etiquetas

local_enable y anonymous_enable, estableciendo el valor de la primera a “NO” y

de la segunda a “YES”, es decir, local_enable=NO y anonymous_enable=YES, es

decir, que no se permiten usuarios locales sino sólo usuarios anónimos. Un

ejemplo de servidor FTP anónimo es https://ftp.uv.es/pub/

• Si queremos que el usuario anónimo pueda subir archivos al directorio que le

hemos asignado y en el que está enjaulado, tenemos que descomentar la

etiqueta anon_upload_enable=YES,
anon_upload_enable=YES siempre y cuando esté habilitada la opción

general de permitir subir ficheros (write_enable).

✔ Establece srv/ftp/pub como directorio raíz del usuario anónimo

✔ Crea la carpeta “Prueba” dentro del directorio pub

✔ Le damos los permisos RWX al directorio Prueba:

chmod 757 srv/ftp/pub/Prueba

✔ Desde Filezilla sube como usuario anónimo un archivo a la carpeta Prueba.

• Si queremos que los usuarios anónimos puedan crear directorios o archivos, se

debe descomentar la etiqueta anon_mkdir_write_enable=YES.


anon_mkdir_write_enable=YES Accede como

usuario anónimo y crea la carpeta “Prueba2” dentro de la carpeta prueba. Crea

también el archivo “Archivo1”. Intenta ahora renombrar o borrar la carpeta o el

archivo.

• Para que los usuarios anónimos tengan acceso de escritura (puedan borrar o

renombrar una carpeta o archivo), debemos de crear una etiqueta nueva:

anon_other_write_enable=YES. Créala en el archivo de configuración y prueba a

renombrar y luego borrar la carpeta “Prueba2” que creaste antes.


Unidad 4 Servicio FTP 19

• Restituye el archivo de configuración con el que tienes de seguridad para poder

continuar.

7.- AÑADIMOS SEGURIDAD AL SERVICIO FTP


En este apartado vamos a ver varios aspectos a tener en cuenta al configurar nuestro
servidor FTP para mejorar la seguridad del mismo.

7.1.- Configuramos el cortafuegos del servidor: ufw


• ufw es un cortafuegos para establecer reglas en "iptables", las tablas de

firewall nativas en Linux. Puesto que iptables tiene una

sintaxis relativamente compleja, es aconsejable como

alternativa utilizar UFW para realizar su configuración.

• Primero veamos si el ufw está activado en el servidor o no. Ejecuta el siguiente

comando para ver el estado: sudo ufw status. Esto puede devolver dos posibles

salidas:

a) ufw: command not found: Esto significa que no tenemos instalado el

cortafuegos en el servidor. Lo instalaremos con el siguiente comando:

sudo ap-get install ufw

a continuación lo activamos:

sudo ufw enable

b) status: inactive: Esto significa que lo tenemos instalado, pero no está

activo.

• Activa ufw en tu sistema


Unidad 4 Servicio FTP 20

Comandos en línea usados en ufwl

Función Comando
Enciende el firewall sudo ufw enable
Apaga el firewall sudo ufw disable
Recarga el firewall sudo ufw reload
Muestra estatus sudo ufw status
Muestra estatus detallado sudo ufw status verbose
Muestra Lista de Reglas
sudo ufw status numbered
Numerada
Bloquea todo el tráfico de
sudo ufw default deny incoming
entrada
Permite todo el tráfico de
sudo ufw default allow incoming
entrada
Bloquea todo el tráfico saliente sudo ufw default deny outgoing
Permite todo el tráfico saliente sudo ufw default allow outgoing
Bloquea el puerto X en el TCP sudo ufw deny X/tcp
Permite el puerto X en el TCP sudo ufw allow X/tcp
Bloquea el puerto X solo para una
sudo ufw deny from 192.60.90.55 to any port X
persona específica
Permite el puerto X solo para una
sudo ufw allow from 192.60.90.55 to any port X
persona específica
Bloquea el puerto X solo para una
sudo ufw deny from 192.60.90.0/24 to any port X
red específica
Permite el puerto X solo para una
sudo ufw allow from 192.60.90.0/24 to any port X
red específica
Permite un rango de puertos TCP sudo ufw allow 2500:5000/tcp
Elimina un número de regla sudo ufw delete n

• Seguramente, una vez que hemos activado ufw en el servidor, si nos vamos

ahora al cliente y reiniciamos la configuración de red, nos hayamos quedado sin

acceso a Internet. Vamos a configurar el firewall. Esta operación es muy

parecida a la que hicimos en la primera práctica y la haremos desde el servidor,

ya que no podemos acceder a él de manera remota.


Unidad 4 Servicio FTP 21

PASO 1 [Habilitamos el reenvío o enrutamiento]

• ¿Que es el reenvío de IP?

Se trata del envío de paquetes de red desde una interfaz de red a otra en el

mismo dispositivo. Debemos habilitar el reenvío en caso de que queramos que

nuestro sistema actúe como un enrutador que transfiere paquetes IP de una

red a otra. En nuestro caso el reenvío es desde la interfaz enp0s3 a la interfaz

enp0s8

Reenvío

Internet
Internet
enp0s3 enp0s8

• ¿Cómo habilitar el reenvío?

En los sistemas Linux, el reenvío se controla mediante la variable del kernel

llamada ip_forward. Los posibles valores de esta variable son:

a) Si ip_forward es 0, significa que el reenvío no está disponible

b) Si ip_forward es 1, entonces el reenvío sí está disponible.

Por tanto, para permitir el reenvío, establecemos el valor de dicha variable a 1.

Por defecto su valor es 0.


Unidad 4 Servicio FTP 22

Para ello, editamos el archivo sysctl.conf que se encuentra en el directorio

/etc/ufw y descomentamos la línea net/ipv4/ip_forward = 1.

• Ahora editamos el archivo ufw del directorio /etc/default y veamos si el

parámetro “DEFAULT_FORWARD_POLICY” tiene el valor “ACCEPT”. En caso

de tener el valor “DROP” tendríamos que modificarlo a “ACCEPT”.

PASO 2 [Habilitamos el enmascaramiento]

• ¿En qué consiste enmascarar una red?

El enmascaramiento de red es una función de NAT que permite traducir todas

las direcciones IPs privadas de una red a una sola dirección IP pública. Esto

hace posible que los usuarios de una red privada puedan salir a internet con una

sola dirección IP pública ya que esta dirección Pública es la que forma parte de

la red de Internet.
Unidad 4 Servicio FTP 23

Enmascaramiento

192.168.1.5 •
enp0s3 enp0s8

Internet
Internet

172.114.55.33

192.168.1.9

192.168.1.12

¿Cómo hacemos el enmascaramiento?

• Vamos a modificar un archivo de configuración, por lo que hacemos una copia y

modificamos el original. Luego borramos la copia.

• Para habilitar el enmascaramiento, será necesario configurar la tabla nat,

agregando las reglas al archivo /etc/ufw/before.rules. Editamos el archivo y

pegamos las siguientes líneas justo al final del fichero:


Unidad 4 Servicio FTP 24

• Cerramos el archivo guardando los cambios.

• Recargamos ufw y a continuación vemos su estado.

7.1.1- Configuramos los puertos


• Si nos vamos al cliente, comprueba que aun no tienes acceso ni a Internet, ni

acceso al servidor FTP, ni acceso al servidor por SSH.

• Vamos a ver los puertos que debemos abrir para permitir las conexiones que nos

interesan.
Unidad 4 Servicio FTP 25

• Abre los siguientes puertos:

 Puerto con el que te conectes al servidor por SSH.

Mira el estado de ufw y verifica que el puerto se ha añadido. Comprueba

que ya puedes acceder al servidor de manera remota.

A partir de ahora, sigue el tema de manera remota de nuevo desde

el cliente.

 Puertos para la conexión al servidor FTP

Mira el estado de ufw y verifica que los puertos se han añadido.

Comprueba desde el cliente que te puedes conectar al servidor FTP.

 Puerto para el servicio DNS

Mira el estado de ufw y verifica que los puertos se han añadido.

Comprueba desde el cliente que te puedes conectar al servidor FTP.

 Puerto 990 que utilizaremos cuando se active el TLS

Mira el estado de ufw y verifica que el puerto se han añadido. Esto nos

servirá cuando creemos nuestro sertificado TTL/SSL

 Los puertos del 40000 al 50000, que se reservarán para el rango de

puertos pasivos que se establecerá en el archivo de configuración

• Muestra la lista de reglas numerada. Tiene que quedarte de esta manera:


Unidad 4 Servicio FTP 26

7.2.- Seguridad con los usuarios locales

7.2.1.- Permitir sólo el acceso al servicio FTP


• Ya tenemos dos usuarios creados con cuenta local en el sistema, uno que se creó

cuando instalamos el servidor y otro que has creado en esta práctica:

user_ftp1.

• Un paso más en la seguridad de nuestro servidor FTP es evitar que este usuario

que hemos creado, inicie sesión en el servidor desde la terminal o incluso se

logen si tienen una GUI instalada para el acceso. Para evitar esto y que sólo

tengan acceso al servicio FTP, debemos cambiar en el servidor el valor de la

shell para este usuario.

• Creamos el archivo solo_FTP en el directorio /bin y escribimos en él:

#!/bin/bash

echo “********************************************”

echo “* ¡¡ATENCIÓN!!! *”

echo “* "ESTA CUENTA SÓLO TIENE ACCESO FTP. *"

echo “* *”

echo “********************************************”
Unidad 4 Servicio FTP 27

• En ese archivo ponemos el mensaje “”¡¡¡ATENCIÓN!!!” “ESTA CUENTA SÓLO

TIENE ACCESO FTP” por si por ejemplo intenta acceder al servidor a un

servicio que no sea FTP.

• Damos permiso de ejecución: sudo chmod a+x /bin/solo_FTP

• Creamos la nueva shell: sudo nano /etc/shells y escribimos al final

/bin/solo_FTP

• Le asignamos la nueva shell que hemos establecido al usuario FTP que creamos:

sudo usermod user_ftp1 -s /bin/solo_FTP

• Con esto tenemos que el usuario tan sólo va a tener acceso FTP al servidor.

• Intenta acceder de manera remota al servidor por SSH desde el cliente y

comprueba que no tienes acceso y que te salta el mensaje de alarma que has

creado.

• Ahora, desde el servidor, cierra la sesión (no reinicies) e intenta logarte de

nuevo como user_ftp1. ¿Qué ocurre?

• De esta forma, el usuario user_ftp1 no tiene acceso al servidor, tan sólo tiene

acceso mediante FTP. Conéctate con ese usuario con Filezilla. ¿Tiene acceso?
Unidad 4 Servicio FTP 28

7.2.2.- Enjaulamos al usuario


• Para dar mayor seguridad, además de negarle el acceso al servidor, vamos a

enjaularlo en su directorio asignado en el servidor FTP.

• Vamos a dar permisos de lectura y escritura al usuario enjaulados. Para ello en

el archivo de configuración deben estar descomentadas las siguientes

etiquetas:

a) local_enable=YES

Con esto estamos indicando que se permiten usuario locales

b) write_enable=YES

Con esto estamos indicando que tienen permiso de lectura y escritura

c) chroot_local_user=YES

Con esto estamos indicando que los usuarios están enjaulados

• Añadimos manualmente la siguiente línea que no existe en el archivo de

configuración: allow_writeable_chroot=YES.

Con esta línea estamos indicando que los usuarios enjaulados tienen permiso de

lectura y escritura en el directorio en el que se encuentran enjaulados. Fuera

de ese directorio no tienen permiso ya que ni siquiera van a tener acceso.

• Por último, para nuestros dos usuarios enjaulados, vamos a indicar cual será su

directorio donde van a poder trabajar en el servidor FTP y vamos a dotarlos de

permisos suficientes. Fuera de ese directorio, nuestros usuarios no van a poder

moverse.

Ejecutamos los siguientes comandos:

➢ Creamos la carpeta /FTP/Archivos dentro de su directorio de inicio

sudo mkdir -p /home/user_ftp1/FTP/Archivos


Unidad 4 Servicio FTP 29

➢ Le quitamos todos los permisos de la carpeta /FTP

sudo chmod 550 /home/user_ftp1/FTP

➢ Le otorgamos todos los permisos en la carpeta /archivos

sudo chmod 750 /home/user_ftp1/FTP/Archivos

➢ Hacemos que el usuario user_ftp1 sea propietario del directorio FTP y

de todo lo que se encuentre debajo de ese directorio.

sudo chown -R user_ftp1: /home/user_ftp1/ftp

• Repetimos los anteriores 4 comandos para el usuario con el que instalaste el

servidor Ubuntu

• Añadimos las siguientes tres líneas con las que configuramos el modo pasivo de

conexión:

a) pasv_enable=YES

b) pasv_min_port=41000

c) pasv_max_port=42000.

Con estas tres líneas estamos configurando el modo pasivo de conexión. El

servidor FTP utiliza por defecto en modo Activo los puertos 20 y 21 en TCP, en

este tema vamos a usar las dos opciones Activo y Pasivo.

Para el modo Pasivo es necesario declarar un grupo de puertos que por supuesto

no puede contener ningún puerto que pueda estar comprometido por otro

servicio. Para este caso escogemos del 41000 al 42000 que ya sabemos que

están dentro de grupo de puertos que abrimos al configurar el firewall del

servidor.

• Con esto ya hemos terminado la configuración de seguridad para los usuarios

que se conecten. Por un lado no pueden conectarse al servidor, y por otro están

enjaulados en sus directorios de trabajo.


Unidad 4 Servicio FTP 30

7.3.- Configuramos VSFTPD con un certificado SSL/TLS


• Por defecto, FTP no hace ninguna encriptación de datos, por lo que el usuario y

la contraseña viajan sin cifrar, con el riesgo que ello supone. Para evitar eso,

utilizaremos SSL/TTL para garantizar la seguridad.

• SSL/TLS es un protocolo o regla de comunicación que permite a los sistemas

informáticos comunicarse entre sí en Internet de forma segura.

7.3.1.- ¿Cómo es el cifrado SSL/TTL?


• Cifrar un mensaje significa codificar el mensaje original para que

solo pueda ser descifrado por el destinatario que queramos. Por

ejemplo, podemos cambiar la palabra “HOLA” a “KRÑD” al mover

cada letra del alfabeto dos lugares hacia adelante. El destinatario conoce la

regla (o clave) e invierte cada letra en dos lugares para leer la palabra real.

• El cifrado SSL/TLS se basa en este concepto con dos claves diferentes para

cifrar y descifrar un mensaje.

• Los dos tipos de claves son:

1. Clave pública

El navegador y el servidor web se comunican codificando y decodificando

información mediante pares de claves públicas y privadas. La clave

pública es una clave criptográfica que el servidor FTP proporciona al

cliente FTP en el certificado SSL/TLS. El cliente FTP utiliza la clave

para cifrar la información antes de enviarla al servidor FTP.

2. Clave privada

Solo el servidor FTP tiene la clave privada. Un archivo cifrado con la

clave privada solo se puede descifrar con la clave pública y viceversa.


Unidad 4 Servicio FTP 31

• Por tanto, el servidor FTP cifra sus mensajes con su clave privada, y el cliente

FTP los descifra con la clave pública del servidor.

Por otro lado, el cliente FTP cifra sus mensajes con la clave pública del servidor

FTP y este los descifrará con su clave privada.

Servidor FTP Cliente FTP

Servidor FTP
Cliente FTP
Unidad 4 Servicio FTP 32

• Autenticación: El servidor FTP envía la clave pública del certificado SSL/TLS al


cliente FTP. El cliente FTP verifica el certificado , por lo tanto puede verificar
que el servidor FTP es quien dice ser.

7.3.2.- Generamos el certificado SSL/TTL


• Como hemos visto, TLS/SSL funciona mediante el uso de una combinación de un

certificado público o clave pública y una clave privada. La clave SSL se

mantiene secreta en el servidor. Se utiliza para cifrar el contenido enviado a

los clientes. El certificado SSL se comparte públicamente con cualquiera que

solicite el contenido.

• Usa el siguiente comando y asegúrate de estar conectado de manera remota al

servidor para instalar allí el certificado:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout

/etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

• Veamos al detalle qué significa ese comando:

 openssl: Esta es la herramienta básica de línea de comandos para crear y

administrar certificados, claves y otros archivos OpenSSL.

 req: Especifica el uso del estándar X.509 para la creación de

certificados. Para crear un nuevo certificado X.509, utilizamos req.

 -x509: Indicamos que vamos a crear un certificado autofirmado en lugar

de generar una solicitud de firma de certificado, como sucedería

normalmente. Un certificado autofirmado es un certificado SSL que no

ha sido validado por una Autoridad de certificación (CA). Eso es lo que

significa que está firmado por uno mismo


Unidad 4 Servicio FTP 33

Un certificado autofirmado contiene:

a) Una clave púbica,

b) Información acerca del propietario del certificado y la firma del

propietario.

c) Y una clave privada asociada

 -nodes: Esto le indica a OpenSSL que omita la opción de proteger el

certificado con una frase de contraseña. Se necesita poder leer el

archivo sin intervención del usuario cuando se inicia el servidor. Una

frase de contraseña evitaría que esto suceda porque los usuarios

tendrían que ingresarla después de cada reinicio.

 -days 365: Esta opción establece el período de tiempo que el certificado

se considerará válido. En este caso, está fijado por un año.

 -newkey rsa:2048: Esto especifica que queremos generar un nuevo

certificado y una nueva clave al mismo tiempo. La clave será necesaria

para firmar el certificado, por lo que debe crearse junto con el

certificado. Con rsa:2048 indicamos que vamos a crear una clave RSA de

2048 bits.

 -keyout: Esta línea le dice a OpenSSL dónde colocar el archivo de clave

privada generado que se está creando.

 -out: Esto le indica a OpenSSL dónde colocar el certificado que se está

creando

• Ahora nos va a pedir de manera opcional que ingresemos una serie de datos

personales correspondientes en cada campo que nos aparece. Rellenamos todos

los datos para comprobarlos posteriormente cuando nos conectemos desde el

cliente.
Unidad 4 Servicio FTP 34

• Durante la creación del certificado, hay que estar pendientes, porque nos indica

la ruta donde nos va a crear el certificado. La línea en concreto pondrá:

writing new private key to ‘ruta_donde_lo_crea’

• Cuando termines de crear el certificado, abre el archivo de configuración del

servicio FTP y comenta las últimas dos líneas del archivo que empiezan por

“rsa_”:

Ponemos las dos siguientes líneas:

Con esto, lo que estamos haciendo es apuntar el archivo de configuración a la

dirección del certificado que acabamos de crear. Es decir, vamos a indicar que

utilice el certificado que hemos creado diciéndole la ruta dónde se encuentra

tanto el certificado público (rsa_cert_file) como nuestra clave privada

(rsa_private_key_file)

El archivo de configuración debe quedarnos así:


Unidad 4 Servicio FTP 35

Ahora comprobaremos que tenemos habilitado SSL viendo que la etiqueta

ssl_enable tiene el valor YES. Esta opción habilita el soporte SSL para vsftpd

Debajo escriberemos las siguientes líneas:

 allow_anon_ssl=NO

Con esa línea evitamos el inicio de sesión cifrado SSL/TLS

anónimo, es decir, evitamos a los usuarios invitados.

 force_local_data_ssl=YES

 force_local_logins_ssl=YES

Con estas dos líneas anteriores vamos a forzar el cifrado

SSL/TLS tanto del nombre de usuario/contraseña como de sus

datos para mantenerlos seguros.

 ssl_tlsv1=YES

 ssl_sslv2=NO

 ssl_sslv3=NO
Unidad 4 Servicio FTP 36

Ahora vamos a insertar las tres líneas anteriores, de las cuales,


la primera nos va a forzar a utilizar el cifrado mejor y más
potente que ofrece TLS y las dos últimas va a deshabilitar el
cifrado SSL que es menos seguro:

 require_ssl_reuse=YES

En esta línea indicamos que no es necesario reutilizar SSL, lo que

hará que la conexión sea más segura. Es posible que esto no sea

compatible con algunos clientes FTP más antiguos. Si tienes

problemas de conexión, configurar esta opción en "NO".

 ssl_ciphers=HIGH

Continuando con nuestras mejoras de seguridad, en esta línea

agregaremos protección adicional contra ataques Man In The

Middle (MITM) ya que indicamos que utilizaremos suites de

encriptación de alto cifrado, lo que significa que las longitudes

de claves son iguales o superiores a 128 bits, es decir, requerirá

que el servidor utilice conjuntos de cifrado más potentes .

• Ya hemos configurado el servidor FTP para que funcione con el protocolo


SSL/TLS. Cierra el archivo de configuración guardando los cambios.

• Reinicia el servicio FTP y comprueba el estado viendo que está cargado (loaded)
y activo (active)

• Ahora en el siguiente apartado vamos a configurar nuestro sitio en el cliente


para probar la seguridad que acabamos de implementar en nuestro servidor
FTP.
Unidad 4 Servicio FTP 37

8.- AÑADIMOS NUESTRO SITIO EN FILEZILLA


• La mayoría de los clientes de FTP admiten configuraciones de cifrado TLS, por

lo que vamos a comprobar si nuestro servidor FTP de Ubuntu funciona con ese

cifrado.

• Vamos a crear nuestro sitio.

Para ello, desde Filezilla

pulsamos sobre el icono de

gestor de sitios.

• En la ventana que se abre, vamos a comenzar a ingresar los detalles del servidor

FTP de Ubuntu. Le damos el nombre del sitio: Server2SMR y pulsamos aceptar


Unidad 4 Servicio FTP 38

• Ahora podemos meter los datos de nuestro sitio

• Luego haz clic en el botón “Nuevo sitio” y en la ventana que aparece

comenzamos a ingresar los detalles del servidor FTP de Ubuntu.

• Completa todos los detalles requeridos con la información del servidor FTP de

Ubuntu recién creada. Como lo configuramos para usar TLS, también podemos

marcar el cifrado para que sea explícitamente FTP sobre TLS. La configuración

final debería verse así:

• Conéctate ahora desde el cliente Fitezilla para comprobar que la conexión


funciona sobre TLS y mira el certificado si los datos son los que introdujiste al
crearlo.

También podría gustarte