Lecciones de informática

Configurar y usar un servidor FTP en Ubuntu Linux. Servidor FTP simple basado en Ubuntu (vsftpd) Configuración de las carpetas de inicio del usuario

El Protocolo de transferencia de archivos (FTP) es un protocolo TCP para descargar archivos entre computadoras. En el pasado, también se utilizaba para cargar archivos, pero como ese método no utiliza cifrado, las credenciales de usuario y los datos se transfieren de forma clara y se interceptan fácilmente. Entonces, si está buscando una manera de cargar y descargar archivos de forma segura, consulte la sección sobre OpenSSH en Administración remota.

FTP funciona en un modelo cliente/servidor. El componente del servidor se llama demonio FTP. Escucha continuamente las solicitudes FTP de clientes remotos. Cuando se recibe una solicitud, gestiona el inicio de sesión y configura la conexión. Durante la sesión, ejecuta cualquiera de los comandos enviados por el cliente FTP.

El acceso a un servidor FTP se puede gestionar de dos formas:

En el modo anónimo, los clientes remotos pueden acceder al servidor FTP utilizando la cuenta de usuario predeterminada llamada "anónimo" o "ftp" y enviando una dirección de correo electrónico como contraseña. En el modo Autenticado un usuario debe tener una cuenta y una contraseña. Esta última opción es muy insegura y no debe utilizarse excepto en circunstancias especiales. Si desea transferir archivos de forma segura, consulte SFTP en la sección sobre OpenSSH-Server. El acceso de los usuarios a los directorios y archivos del servidor FTP depende de los permisos definidos para la cuenta utilizada al iniciar sesión. Como regla general, el demonio FTP ocultará el directorio raíz del servidor FTP y lo cambiará al directorio de inicio de FTP. Esto oculta el resto del sistema de archivos de las sesiones remotas.

vsftpd - Instalación del servidor FTP

vsftpd es un demonio FTP disponible en Ubuntu. Es fácil de instalar, configurar y mantener. Para instalar vsftpd puedes ejecutar el siguiente comando:

sudo apto instalar vsftpd

Configuración FTP anónima

De forma predeterminada, vsftpd no está configurado para permitir descargas anónimas. Si desea habilitar la descarga anónima, edite /etc/vsftpd.conf cambiando:

anónimo_enable=Sí

Durante la instalación, se crea un usuario ftp con un directorio de inicio /srv/ftp. Este es el directorio FTP predeterminado.

Si desea cambiar esta ubicación, a /srv/files/ftp por ejemplo, simplemente cree un directorio en otra ubicación y cambie el directorio de inicio del usuario ftp:

sudo mkdir /srv/archivos/ftp sudo usermod -d /srv/files/ftp ftp

Después de realizar el cambio, reinicie vsftpd:

Finalmente, copie todos los archivos y directorios que desee que estén disponibles a través de FTP anónimo a /srv/files/ftp, o /srv/ftp si desea utilizar el valor predeterminado.

Configuración FTP autenticada por el usuario

De forma predeterminada, vsftpd está configurado para autenticar a los usuarios del sistema y permitirles descargar archivos. Si desea que los usuarios puedan cargar archivos, edite /etc/vsftpd.conf :

write_enable=SÍ

Ahora reinicie vsftpd:

sudo systemctl reiniciar vsftpd.service

Ahora, cuando los usuarios del sistema inicien sesión en FTP, comenzarán en sus directorios de inicio, donde podrán descargar, cargar, crear directorios, etc.

De manera similar, de forma predeterminada, los usuarios anónimos no pueden cargar archivos al servidor FTP. Para cambiar esta configuración, debe descomentar la siguiente línea y reiniciar vsftpd:

anon_upload_enable=SÍ

Habilitar la carga FTP anónima puede representar un riesgo de seguridad extremo. Es mejor no habilitar la carga anónima en servidores a los que se accede directamente desde Internet.

El archivo de configuración consta de muchos parámetros de configuración. La información sobre cada parámetro está disponible en el archivo de configuración. Alternativamente, puede consultar la página de manual, man 5 vsftpd.conf para obtener detalles de cada parámetro.

Proteger FTP

Hay opciones en /etc/vsftpd.conf para ayudar a que vsftpd sea más seguro. Por ejemplo, los usuarios pueden limitarse a sus directorios personales descomentando:

chroot_local_user=SÍ

También puede limitar una lista específica de usuarios solo a sus directorios personales:

chroot_list_enable=SÍ chroot_list_file=/etc/vsftpd.chroot_list

Después de descomentar las opciones anteriores, cree un /etc/vsftpd.chroot_list que contenga una lista de usuarios, uno por línea. Luego reinicie vsftpd:

sudo systemctl reiniciar vsftpd.service

Además, el archivo /etc/ftpusers es una lista de usuarios a los que no se les permite el acceso FTP. La lista predeterminada incluye root, demonio, nadie, etc. Para deshabilitar el acceso FTP para usuarios adicionales, simplemente agréguelos a la lista.

FTP también se puede cifrar mediante FTPS. A diferencia de SFTP, FTPS es FTP sobre Secure Socket Layer (SSL). SFTP es una sesión similar a FTP a través de una conexión SSH cifrada. Una diferencia importante es que los usuarios de SFTP necesitan tener una cuenta shell en el sistema, en lugar de una shell sin inicio de sesión. Proporcionar un shell a todos los usuarios puede no ser ideal para algunos entornos, como un servidor web compartido. Sin embargo, es posible restringir dichas cuentas solo a SFTP y deshabilitar la interacción del shell. Consulte la sección sobre OpenSSH-Server para obtener más información.

Para configurar FTPS, edite /etc/vsftpd.conf y en la parte inferior agregue:

Además, observe las opciones relacionadas con el certificado y la clave:

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

De forma predeterminada, estas opciones están configuradas con el certificado y la clave proporcionados por el paquete ssl-cert. En un entorno de producción, estos deben reemplazarse con un certificado y una clave generados para el host específico. Para obtener más información sobre los certificados, consulte Certificados.

Ahora reinicie vsftpd y los usuarios no anónimos se verán obligados a utilizar FTPS:

sudo systemctl reiniciar vsftpd.service

Para permitir a los usuarios con un shell de /usr/sbin/nologin acceder a FTP, pero no tienen acceso al shell, edite /etc/shells agregando el shell nologin:

# /etc/shells: shells de inicio de sesión válidos /bin/csh /bin/sh /usr/bin/es /usr/bin/ksh /bin/ksh /usr/bin/rc /usr/bin/tcsh /bin/tcsh / usr/bin/esh /bin/dash /bin/bash /bin/rbash /usr/bin/screen /usr/sbin/nologin

Esto es necesario porque, de forma predeterminada, vsftpd usa PAM para la autenticación y el archivo de configuración /etc/pam.d/vsftpd contiene:

autenticación requerida pam_shells.so

El módulo PAM de shells restringe el acceso a los shells enumerados en el archivo /etc/shells.

Los clientes FTP más populares se pueden configurar para conectarse mediante FTPS. El cliente FTP de línea de comando lftp también tiene la capacidad de usar FTPS.

En esta guía le diremos cómo instalar un servidor FTP en un VPS con sistema operativo Ubuntu. Usaremos el servidor vsftpd, que se considera el servidor FTP más rápido y seguro para sistemas UNIX.

ftp o F ile t transferir PAG rotocol es un protocolo para recibir y transmitir archivos en la red. Utilizando un modelo cliente/servidor y seguridad SSL/TLS, FTP permite a los usuarios intercambiar archivos con computadoras remotas de forma segura, eficiente y confiable mediante la transferencia de datos a través del protocolo TCP/IP.

FTP funciona de manera similar a HTTP o SMTP, con la única diferencia de que es responsable de transferir datos de forma segura de un remitente a un destinatario, en lugar de una página web de un servidor a un usuario o un correo electrónico a través de Internet. Esta guía cubre la creación de un servidor FTP en la versión 16.04 del sistema operativo Ubuntu.

Nota: La guía actual se basa en la versión 16.04 del sistema operativo Ubuntu. Pero puedes aplicar los mismos pasos para crear un servidor FTP en Ubuntu 14.04.

En primer lugar, actualicemos todos los paquetes antes de instalar el demonio vsftpd. Para hacer esto, ejecute el comando:

Sudo apt-obtener actualización

Espere hasta que se completen todos los procesos y verá un mensaje de confirmación:

Luego instale el demonio vsftpd con el siguiente comando:

Sudo apt-get install vsftpd

Recibirá una notificación solicitando confirmación, haga clic en Y Y Ingresar para continuar con la instalación.

Una vez que se complete la instalación, hagamos una copia de seguridad del archivo de configuración original para que podamos comenzar con un archivo de configuración limpio:

Sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.original

Ahora podemos pasar al siguiente paso y configurar el firewall.

Paso 2: permitir el tráfico FTP en el firewall

Para permitir que un servidor FTP implementado en el sistema operativo Ubuntu se comunique con el mundo exterior, debe configurar una ruta a través del firewall. Primero, veamos si el firewall está habilitado. Ejecute el siguiente comando para determinar el estado:

Estado de sudo ufw

Si ve un mensaje como este:

Ufw: comando no encontrado

Esto significa que el firewall no está instalado y puede continuar con el siguiente paso.

Si el resultado muestra reglas o un mensaje de que el firewall está activo, debe determinar cómo procesará el tráfico FTP. Hagamos lo siguiente, abramos los puertos 20 y 21 para el tráfico FTP; los puertos 40000-50000 se reservarán como un rango de puertos pasivos que eventualmente se establecerá en el archivo de configuración; El puerto 990 se utilizará cuando TLS esté habilitado. Ejecutemos los siguientes comandos:

Sudo ufw permitir 20/tcp sudo ufw permitir 21/tcp sudo ufw permitir 990/tcp sudo ufw permitir 40000:50000/tcp

Ahora veamos el estado:

El resultado se verá así:

Estado de salida: activo A la acción desde -- -- -- -- -- -- 990 / tcp ALLOW en cualquier lugar 20 / tcp ALLOW en cualquier lugar 21 / tcp ALLOW en cualquier lugar 40000 : 50000 / tcp ALLOW en cualquier lugar 20 / tcp (v6) ALLOW en cualquier lugar ( v6) 21 / tcp (v6) PERMITIR en cualquier lugar (v6) 990 / tcp (v6) PERMITIR en cualquier lugar (v6) 40000 : 50000 / tcp (v6) PERMITIR en cualquier lugar (v6)

Ahora, todos los puertos necesarios están abiertos y disponibles para nosotros y podemos pasar al siguiente paso.

Paso 3: crear un directorio de usuarios

En el tercer paso para crear un servidor FTP de Ubuntu, debe seleccionar un usuario que se conectará a través de FTP. Para hacer esto, cree un nuevo usuario ejecutando el siguiente comando:

sudo adduser alex

Complete la contraseña y otros detalles cuando se le solicite. Idealmente, desde una perspectiva de seguridad, FTP debería limitarse a un directorio específico. Vsftpd usa chroot para crear esta protección. Con chroot habilitado, el usuario local está limitado a su directorio de inicio (predeterminado). Sin embargo, puede ser que debido a la seguridad de vsftpd, el usuario no pueda crear nada en el directorio. No vamos a eliminar los permisos de escritura del directorio de inicio; en su lugar, crearemos un directorio ftp que se comportará como un chroot sin dejar de poder escribir, lo que permitirá almacenar archivos. Utilice este comando para crear el directorio FTP:

sudo mkdir /home/alex/ftp

Establecer propiedad:

sudo chown nadie: nogroup /home/alex/ftp

Finalmente, elimine los permisos de escritura:

sudo chmod a - con home/alex/ftp

Ahora, usando el siguiente comando, verifique los permisos:

sudo ls - la /home/alex/ftp

En la salida veremos algo como esto:

total 8 dr - xr - xr - x 2 nadie nogroup 4096 29 de junio a las 11:32. drwxr - xr - x 3 alex alex 4096 29 de junio a las 11:32. .

En el siguiente paso crearemos un archivo que contiene directorios y sus permisos:

sudo mkdir /home/alex/ftp/files sudo chown alex : alex /home/alex/ftp/files

Y finalmente, agreguemos un archivo de prueba al directorio que usaremos al probar algo:

echo "archivo de muestra vsftpd" | sudo tee /home/alex/ftp/files/sample. TXT

Paso 4: configurar vsftpd

Para continuar instalando el servidor FTP en Ubuntu VPS, necesitamos configurar vsftpd y nuestro acceso FTP. En este tutorial, permitiremos que un usuario se conecte vía FTP usando una consola local. La configuración de dos pasos necesaria para esto ya está instalada en el archivo de configuración ( vsftpd.conf). Primero, verifique que la configuración del archivo coincida con la que se enumera a continuación:

sudo nano /etc/vsftpd. conf. . . # ¿Permitir FTP anónimo? (Deshabilitado por defecto). anónimo_enable = NO # # Descomentar esto para permitir que los usuarios locales inicien sesión. local_enable = SÍ. . .

En el mismo archivo, sigamos eliminando. # encender habilitar_escritura:

. . . write_enable = SÍ. . .

También descomentaremos Chroot para asegurarnos de que el usuario que se conecta vía FTP tenga acceso a los archivos dentro del directorio permitido:

. . . chroot_local_user = SÍ. . .

También será necesario agregar algunos valores nuevos manualmente. Simplemente puedes pegarlos al final del archivo. En primer lugar, token_sub_usuario agregue local_root a la ruta del directorio. Esto permitirá que la configuración funcione para el usuario actual y cualquier otro usuario que se agregue más adelante:

user_sub_token=$USUARIO local_root=/home/$USUARIO/ftp

Para asegurarnos de que haya suficientes conexiones disponibles, limitaremos la cantidad de puertos utilizados en el archivo de configuración:

pasv_min_port = 40000 pasv_max_port = 50000

En este tutorial planeamos otorgar acceso de forma individual, así que configuremos la configuración para otorgar acceso solo a los usuarios que se agregan directamente a la lista:

userlist_enable = SÍ userlist_file = /etc/vsftpd. lista de usuarios lista de usuarios_deny = NO

Bandera lista de usuarios_deny es responsable de cambiar la lógica, cuando se establece en “NO”, solo tienen acceso aquellos usuarios que están en la lista. Cuando termine, haga clic en CTRL+X y confirme guardar los cambios en el archivo.

Finalmente, sigamos creando y agregando nuestro usuario al archivo:

eco "alex" | sudo tee - a /etc/vsftpd . Lista de usuarios

Comprobemos que el usuario está realmente activo ejecutando el comando:

gato /etc/vsftpd. Lista de usuarios

La conclusión debería ser “ Alex”, como se muestra en la captura de pantalla:

Reinicie el demonio usando el siguiente comando para iniciar los cambios de configuración:

sudo systemctl reiniciar vsftpd

Paso 5: crear un FTP seguro

De forma predeterminada, FTP no realiza ningún cifrado de datos, por lo que usaremos TLS/SSL para cuidar la seguridad. Como primer paso, necesitamos crear un certificado SSL y usarlo para proteger nuestro servidor FTP de Ubuntu. Primero, ejecutemos el siguiente comando:

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

Bandera - días hace que el certificado tenga una validez de un año e incluimos la clave privada RSA de 2048 bits en el mismo comando. Cuando se le solicite la información requerida, ingrésela en el campo provisto.

Después de crear el certificado, abra nuevamente el archivo de configuración:

Sudo nano /etc/vsftpd.conf

Al final del archivo hay una línea con " _rsa" Comenta estas dos líneas:

# rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem # rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

En su lugar, apuntaremos el archivo de configuración al certificado que creamos. Añade estas líneas:

Rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem

Ahora habilitaremos SSL y nos aseguraremos de que solo los usuarios con SSL habilitado puedan contactarnos. cambiar el valor ssl_enable en :

ssl_enable = SÍ

Ahora agregue las siguientes líneas para continuar creando seguridad (esto evitará conexiones anónimas mediante SSL):

Allow_anon_ssl=NO force_local_data_ssl=SÍ force_local_logins_ssl=SÍ

Configure TLS usando:

ssl_tlsv1=SÍ ssl_sslv2=NO ssl_sslv3=NO

Aquí agregaremos 2 opciones más. En primer lugar, reutilizar SSL no será necesario porque podría provocar roturas a un gran número de clientes. En segundo lugar, utilizaremos un código de cifrado de alta seguridad, lo que hará que la longitud de la clave sea igual (o superior) a 128 bits.

Require_ssl_reuse=NO ssl_ciphers=ALTO

Reiniciemos nuevamente para que los cambios surtan efecto:

Sudo systemctl reinicia vsftpd

¡Maravilloso! Entonces ha configurado el servidor FTP en su VPS Ubuntu para que funcione con el protocolo SSL/TLS.

Paso 6: comprobar la conexión mediante FileZilla

Hoy en día, los clientes FTP admiten la configuración del cifrado TLS, por lo que esta es una gran oportunidad para comprobar si nuestro servidor FTP de Ubuntu está funcionando como debería. Para probar la conexión usaremos . Para comenzar, inicie FileZilla haciendo clic en el icono Administrador del sitio.

Haga clic en el botón Nuevo sitio En la ventana que aparece, comience a completar la información sobre el servidor FTP de Ubuntu.

Complete los campos obligatorios con información sobre su servidor FTP Ubuntu recién creado. Como lo configuramos usando TLS, podemos verificar la configuración de cifrado en " FTP explícito sobre TLS” posición. La ventana de configuración final se ve así:

Una vez configurado, presione Conectar y aparecerá una ventana pidiéndole que ingrese la contraseña del usuario FTP.

Finalmente, deberá verificar el certificado SSL en su servidor FTP en Ubuntu VPS.

Después de la confirmación, el directorio raíz con el archivo de prueba aparecerá en su pantalla.

¡Esto es todo! Ahora puede realizar cualquier transferencia de archivos desde su computadora al servidor FTP de Ubuntu y viceversa.

Conclusión

En este tutorial, caminamos paso a paso para crear una forma segura para que un usuario local transfiera archivos a través de FTP con SSL/TLS en un servidor FTP de Ubuntu. También probamos las conexiones usando FileZilla para asegurarnos de que todo funcionara.

FTP (Protocolo de transferencia de archivos): protocolo de transferencia de archivos. El protocolo FTP le permite transferir y descargar archivos desde el servidor. Hoy en día, este protocolo no es muy popular porque no admite el cifrado de datos. En lugar de FTP, utilizan el protocolo SFTP (transferencia de datos vía SSH), así como el protocolo SCP. Este artículo analiza la configuración de un servidor FTP normal basado en Ubuntu.

El protocolo FTP opera en modo cliente-servidor. El servidor escucha constantemente las solicitudes de clientes remotos en el puerto 21. Cuando se recibe una solicitud, controla la entrada y establece una conexión. Durante la sesión, el servidor ejecuta los comandos enviados por el cliente FTP. TCP se utiliza como protocolo de capa de transporte. FTP utiliza dos tipos de conexiones para transferir datos:

  1. Conexión de control (puerto 21)
  2. Conexión de datos (en modo activo puerto 20, en modo pasivo cualquier puerto mayor que 1024)

La separación entre conexión de control y conexión de datos es eficiente. Esto permite transferir comandos y archivos de forma independiente unos de otros.

FTP admite dos tipos de autenticación:

  1. Anónimo (ftp o inicio de sesión anónimo, contraseña – correo electrónico)
  2. Autorizado (cada usuario tiene su propio nombre de usuario y contraseña)

Cuando se trabaja a través del protocolo FTP se pueden establecer dos modos entre el cliente y el servidor: activo y pasivo. La conexión de control es la misma para el modo Activo y Pasivo. El cliente inicia una conexión TCP desde un puerto dinámico (1024 - 65535) al puerto número 21 en el servidor FTP, después de lo cual se produce la autenticación. Otras acciones dependen del modo seleccionado.

En modo activo, después de la autenticación, el cliente también informa al servidor su número de puerto (del rango dinámico 1024 - 65535) para que el servidor pueda conectarse al cliente para establecer una conexión de datos. El servidor FTP se conecta al número de puerto del cliente especificado utilizando el puerto TCP número 20 para la transferencia de datos.

En modo pasivo, después de la autenticación, el servidor le dice al cliente el número de puerto TCP (del rango dinámico 1024 - 65535) al que puede conectarse para establecer una conexión de datos.

Por lo tanto, en modo activo, el servidor es el iniciador de la conexión cuando se conecta con el cliente. En modo pasivo, el iniciador de la conexión es el cliente.

El modo activo es "dañino" para el cliente en el sentido de que cuando un servidor se conecta a él en un puerto aleatorio, lo más probable es que dicha conexión sea bloqueada por el firewall del lado del cliente. Por tanto, es necesario abrir puertos en el lado del cliente, lo que genera agujeros de seguridad. Por otro lado, este modo será útil para el servidor, ya que para la transferencia de datos se utiliza el conocido puerto 20.

El modo pasivo es “perjudicial” para el servidor, pero “beneficioso” para el cliente. El cliente realizará ambas conexiones al servidor, pero una de ellas será a un puerto alto aleatorio; dicha conexión será bloqueada por el firewall del lado del servidor.

El modo pasivo se utiliza normalmente cuando hay un firewall entre el cliente y el servidor.

Los comandos FTP más populares son:

Equipo Descripción
USUARIO Especificar nombre de usuario
APROBAR Especificar contraseña
LISTA Ver contenidos del directorio
CWD Cambiar el directorio actual
RETROCEDER Transferir un archivo del servidor al cliente
DETENER Transferir un archivo del cliente al servidor
TIPO Establecer modo de transferencia
DELEÁTUR Eliminar un archivo
MDK Crear directorio
RMD Eliminar directorio
PASV Usar modo pasivo
ABANDONAR Cerrar sesión y desconectarse

FTP tiene tres modos de transferencia:

  1. Streaming: transferencia continua de datos como un flujo (sin procesamiento, procesamiento realizado por TCP)
  2. Bloque: FTP divide los datos en bloques (encabezado, campo de datos, tamaño de archivo en bytes) y los transfiere a TCP.
  3. Modo de compresión con un único algoritmo.

El servidor FTP es una “biblioteca” de archivos de un hosting, que se utiliza para almacenar archivos de diferentes formatos. Los servidores ftp más populares son vsftpd y proftpd. Se necesitan servidores FTP para alojar grandes volúmenes de datos para descarga pública y privada. A menudo, los servidores se utilizan para el acceso anónimo (invitado) a distribuciones de software, música y fotografías de código abierto. El acceso de usuarios anónimos permite, por regla general, sólo ver directorios y descargar la información necesaria, pero en algunos servidores es al revés: hay directorios especiales donde cualquier usuario puede cargar un archivo para compartir.

Con el acceso no anónimo hay más posibilidades, pero se limitan al directorio donde se concede el acceso.

Pasemos a configurar el servidor. Trabajaremos con tal esquema.

Tanto el administrador como el usuario tendrán acceso al servidor FTP. El administrador y el usuario tienen acceso autorizado. En este caso, es necesario configurar los derechos de acceso para que el administrador tenga acceso ilimitado y el usuario tenga acceso solo a su directorio de inicio. También necesita configurar el acceso anónimo.

En Ubuntu, el demonio vsftpd está disponible para el servidor DHCP. Instalamos un servidor DHCP, esto se hace con el comando:

testServer$ sudo apt-get install vsftpd

De forma predeterminada, la carga anónima está deshabilitada. Debe cambiar la configuración en el archivo /etc/vsftpd.conf.

testServer$ sudo nano /etc/vsftpd.conf

Allí encontramos la línea “anonymous_enable” y le asignamos el valor “Sí”. Esta línea es responsable del acceso al servidor FTP para usuarios anónimos.

También necesitas descomentar dos líneas: “write_enable” y “chroot_local_user”. La primera línea es responsable de la capacidad de escribir en el servidor, la segunda línea bloquea la capacidad de los usuarios locales de subir a un directorio superior a su carpeta de inicio.

Al final del archivo de configuración agregamos dos configuraciones:

Estas configuraciones establecen carpetas de inicio para usuarios locales y anónimos.

Guarde la configuración del archivo usando la combinación de teclas Ctrl + X (cuando se le solicite reemplazar el archivo actual, seleccione Sí). A continuación debe reiniciar el servidor FTP con el comando

testServer$ servicio sudo vsftpd reiniciar

La siguiente etapa es la creación de usuarios.

Crea un superusuario con el comando:

testServer$ sudo adduser superusuario

Dale una contraseña:

testServer$ sudo contraseña superusuario

Le damos derechos ilimitados:

testServer$ sudo adduser superusuario sudo

Crea un usuario normal:

testServer$ sudo adduser usuario

Dale una contraseña:

testServer$ sudo contraseña usuario

Ingrese la nueva contraseña de UNIX: 12345

Cree un grupo de usuarios para administrar carpetas:

testServer$ sudo addgroup groupl

testServer$ sudo nano /etc/group

Busque la línea "groupl" usando Ctrl + W.

Agregamos nuestros usuarios superusuario y usuario a esta línea.

Crear carpetas para usuarios:

testServer$ sudo mkdir /srv/ftp/upload

testServer$ sudo mkdir /srv/ftp/superusuario

testServer$ sudo mkdir /srv/ftp/usuario

Establecer derechos de acceso a carpetas:

testServer$ sudo chmod 700 /srv/ftp/superusuario

testServer$ sudo chmod 770 /srv/ftp/usuario

testServer$ sudo chmod 575 /srv/ftp/subir

Cambiar propietarios de carpetas:

testServer$ sudo chown superusuario: /srv/ftp/superusuario

testServer$ sudo chown usuario:groupl /srv/ftp/usuario

testServer$ sudo chown:groupl /srv/ftp/upload

Así, obtenemos la siguiente imagen:

  1. Solo el usuario superusuario tiene acceso a la carpeta de superusuario, él también es el propietario de esta carpeta
  2. Tanto el usuario como el superusuario tienen acceso a la carpeta de usuario. Esto se debe a que configuramos los permisos en 7. 7 0. El segundo siete establece todos los derechos para el grupo de usuarios, al que agregamos superusuario.
  3. Tanto el usuario como el superusuario tienen acceso completo a la carpeta de carga. Para todos los demás, solo se establecen permisos de lectura y ejecución. 5 75 . 5 = 101 (en binario). 101~rx. Es decir, otros usuarios (y esto incluye a los anónimos) no pueden escribir nada en la carpeta de carga.

Comprobamos los derechos de acceso y los propietarios con el comando:

servidordeprueba$ ls -l /srv/ftp

Para verificar el acceso al servidor FTP, debe escribir en la barra de direcciones de cualquier navegador:

ftp://172.16.1.2

En este caso, iniciamos sesión como usuario anónimo, ya que no ingresamos nombre ni contraseña.

Vemos tres carpetas. superusuario/, subir/, usuario/. Como iniciamos sesión como usuario anónimo, solo tenemos acceso a la carpeta subir/.

Para iniciar sesión como superusuario, ingrese:

ftp:// [correo electrónico protegido]

Ingrese su nombre de usuario: superusuario, contraseña: 12345 . Como superusuario tenemos acceso a todas las carpetas.

Comprobemos al usuario habitual por última vez. Para evitar tener que introducir tu usuario y contraseña cada vez que inicies sesión, puedes escribir lo siguiente en la barra de direcciones:

ftp://usuario: [correo electrónico protegido]

Bajo usuario solo podemos acceder a carpetas. subir/ Y usuario/. A la carpeta superusuario/ Acceso cerrado.

Apoya el proyecto

Amigos, el sitio web de Netcloud se desarrolla día a día gracias a su apoyo. Planeamos lanzar nuevas secciones de artículos, así como algunos servicios útiles.

Tienes la oportunidad de apoyar el proyecto y aportar cualquier cantidad que consideres necesaria.

De vez en cuando, cada administrador de sistemas necesita un servidor FTP, la mayoría de las veces esto se debe a la necesidad de garantizar el intercambio automático de información entre aplicaciones, por ejemplo, durante el intercambio automático de una base de información distribuida 1C, o para acceder a archivos. en un servidor web. Hoy te contamos cómo crear un servidor de este tipo en la plataforma Ubuntu en menos de media hora.

Pero primero, un poco de teoría. El protocolo FTP (File Transfer Protocol) está pensado, como su nombre indica, para transferir archivos y apareció en 1971, pero a pesar de su avanzada antigüedad sigue siendo muy utilizado hasta el día de hoy. Aunque su uso hoy en día es de naturaleza más técnica, los usuarios finales suelen utilizar un navegador y el protocolo HTTP para acceder a los datos. Las ventajas de FTP incluyen la capacidad de reanudar la descarga de un archivo cuando se pierde la conexión y la capacidad de leer archivos y escribirlos con la misma facilidad. Pero también hay desventajas, la más grave es la baja seguridad, por lo que se debe prestar la mayor atención a esta cuestión.

FTP, al igual que PPTP, utiliza diferentes conexiones para enviar comandos y transferir datos. Al iniciar una conexión, el cliente envía comandos de control al puerto 21 del servidor, que a su vez establece una conexión saliente para la transferencia de datos en el puerto 20, el puerto en el lado del cliente se determina como resultado de la negociación. Sin embargo, si el cliente está detrás de NAT, la conexión no se puede establecer de esta manera, por lo que se desarrolló un modo pasivo FTP adicional, cuando la conexión para la transferencia de datos no la establece el servidor, sino el cliente, pero con los parámetros especificados. por el servidor. Estos puntos deben tenerse en cuenta al reenviar FTP y al configurar un filtro de red.

Para nuestro servidor usaremos vsftpd- servidor FTP simple, rápido y seguro. Dado que servirá tanto para redes externas como internas, tiene sentido agregar esta función a nuestro . La instalación del servidor es extremadamente sencilla:

Apto-obtener instalación vsftpd

El servidor se configura a través de un archivo de configuración. /etc/vsftpd.conf tiene una estructura simple, está bien comentada y permite configurar un servidor sin instrucciones y con conocimientos mínimos. Consideremos sus principales parámetros.

El servidor se puede iniciar constantemente, como servicio, o iniciar cuando sea necesario, la primera opción es más adecuada para nosotros:

Escuchar = SÍ

Esta opción tiene una entrada mutuamente excluyente, a la que se le debe dar la siguiente forma:

Escuchar_ipv6=NO

Permitamos que solo los usuarios locales inicien sesión:

Anónimo_enable=NO
local_enable=SÍ

Permitamos que los usuarios escriban archivos e indiquemos al servidor que establezca automáticamente los derechos necesarios (755 para carpetas y 644 para archivos):

Write_enable=SÍ
local_umask=022

Si necesita configurar un conjunto diferente de derechos: 775 y 664, entonces umask debe ser igual a 002.

De forma predeterminada, el servidor usa la hora GMT, para que los archivos se configuren en su zona horaria, use la opción:

Use_localtime=SÍ

Habilitemos el registro de archivos cargados y descargados:

Xferlog_enable=SÍ

Permitamos que el servidor establezca conexiones para transmitir datos en el puerto 20 (modo activo):

Conectar_desde_puerto_20=SÍ

Las siguientes opciones especifican la ubicación y el formato para almacenar registros:

Xferlog_file=/var/log/vsftpd.log
xferlog_std_format=SÍ

Establezcamos tiempos de espera de sesión:

Idle_session_timeout=600
tiempo_conexión_datos=120

Además, por motivos de seguridad, aislamos al usuario en su directorio personal e inmediatamente le permitimos escribir en su raíz:

Chroot_local_user=SÍ
enable_writeable_chroot=SÍ

Para trabajar correctamente con datos de texto, puede habilitar el soporte ASCII; esto permitirá, al transferir un archivo de texto de un sistema Windows a UNIX (Linux), reemplazar correctamente los saltos de línea de CR+LF a LF para mostrar correctamente el contenido y realizar la conversión inversa al transferirlo de nuevo.

Ascii_upload_enable=SÍ
ascii_download_enable=SÍ

Solo puedes habilitar una opción, para cargar o descargar. Tenga en cuenta que al transferir un archivo binario en modo ASCII, este último puede dañarse.

Una opción bastante interesante:

Ls_recurse_enable=SÍ

Permite la navegación recursiva de directorios, por un lado es conveniente, por otro lado puede causar una gran carga en el servidor si, por ejemplo, obtiene una lista de un directorio que contiene una gran cantidad de archivos y directorios.

El resto de opciones las dejamos por defecto, aunque puedes editar el saludo del servidor escribiendo lo que quieras:

Ftpd_banner=Bienvenido a Roga i Kopyta LLC FTP

Al final del archivo de configuración, estableceremos la configuración para el modo pasivo; se recomienda configurar explícitamente los puertos para que pueda especificarlos durante el reenvío si el servidor está detrás de NAT o en reglas de firewall:

Pasv_enable=SÍ
pasv_min_port=62000
pasv_max_port=62999

Reinicie el servidor (esto debe hacerse cada vez que realice cambios en la configuración):

Reinicio del servicio vsftpd

e intente conectarse con cualquier cliente FTP utilizando las credenciales de un usuario existente. Debemos ingresar a su directorio personal y aislarnos en él.

Si se produce un error debido al funcionamiento incorrecto de vsftpd y el sistema de seguridad seccomp:

500 OOPS: prctl PR_SET_SECCOMP falló

agregue una opción no documentada al archivo:

Seccomp_sandbox=NO

Sin embargo, recuerda que FTP es un protocolo inseguro, por lo que permitir el acceso de cualquier usuario local al servidor, como se hace ahora, no es la mejor opción. Para evitar esta situación, vsftpd tiene un mecanismo de control de usuario incorporado. Agreguemos la opción al archivo de configuración:

Lista de usuarios_enable=SÍ

y cree un archivo de lista de usuarios:

Toque /etc/vsftpd.user_list

vsftpd predeterminado prohíbe acceso al servidor para los usuarios especificados en esta lista incluso antes de ingresar una contraseña, es decir, Implementa el principio de permitir a todos los que no están prohibidos. Pero sería mucho mejor implementar un enfoque diferente: todo aquel que no esté permitido, está prohibido. Aquellos. permitir acceso sólo a usuarios específicos. Para hacer esto, agregue una opción:

Lista de usuarios_deny=NO

Ahora sólo los usuarios especificados explícitamente tendrán acceso al servidor FTP; deben especificarse en vsftpd.lista_usuario uno por línea, por ejemplo:

Ivánov
petrov

A menos que se especifique lo contrario, cuando se conectan mediante FTP, los usuarios son llevados a su directorio de inicio. Esto no siempre es conveniente; a menudo es necesario redirigirlos a otro directorio. Si esta es una carpeta común para todos, digamos /var/ftp, entonces puede configurar la opción:

raíz_local=/var/ftp

Lo que redirigirá a todos los usuarios al directorio especificado y los aislará allí.

Esta es la situación más simple, las tareas reales suelen ser más complicadas, digamos que necesitamos configurar al usuario Ivanova como directorio raíz. /var/www/ejemplo1.com y petrov /var/www/ejemplo2.com para que cada uno de ellos trabaje con su propia carpeta. Para estos fines, puede utilizar otra característica de vsftpd: la configuración del usuario que anula la configuración del archivo de configuración principal.

Para hacer esto, agregue una opción:

User_config_dir=/etc/vsftpd_user_conf

Luego crearemos el directorio en sí.

Mkdir /etc/vsftpd_user_conf

Para establecer la configuración propia del usuario en este directorio, debe crear un archivo con el nombre del usuario y agregarle las opciones necesarias. Los cambios se aplican sin reiniciar el servidor FTP la próxima vez que el cliente se conecte.

Creemos un archivo con la configuración de Ivanov:

Toque /etc/vsftpd_user_conf/ivanov

y agregarle una opción:

Local_root=/var/www/example1.com

La próxima vez que se conecte, el directorio raíz del usuario cambiará al especificado. También en este archivo podemos configurar cualquier opción personal, por ejemplo, otras máscara o permisos de archivos. Sin embargo, aquí no podemos usar configuraciones globales: conexión, registro, opciones de autenticación, simplemente serán ignoradas.

Si necesita ocultar a los verdaderos propietarios de archivos y carpetas, puede utilizar la opción:

Ocultar_ids=SÍ

En este caso, en lugar de propietarios y grupos reales, se indicará ftp:ftp, esto puede ser útil en el caso de un servidor público o si hay extraños en la lista de usuarios a quienes no desea revelar los nombres de usuario reales. de su sistema.

Como puede ver, creamos un servidor FTP funcional en menos de media hora.

F TP (Protocolo de transferencia de archivos) es un protocolo de red estándar que se utiliza para transferir archivos hacia y desde una red remota. Para una transferencia de datos más segura y rápida, utilice SCP.

Hay muchos servidores FTP de código abierto disponibles para Linux. Los más populares y utilizados son PureFTPd, ProFTPD y vsftpd. En este artículo instalaremos vsftpd. Este es un servidor FTP estable, seguro y rápido. También le mostraremos cómo configurar vsftpd para restringir el acceso de los usuarios a su directorio personal y cifrar todas las transmisiones usando SSL/TLS.

Aunque este artículo está escrito para Ubuntu 18.04, las mismas instrucciones se aplican a Ubuntu 16.04 y a cualquier distribución basada en Debian, incluidos Debian, Linux Mint y Elementary OS.

Requisitos previos

Instalación de vsftpd en Ubuntu 18.04

El paquete vsftpd está disponible en los repositorios. Para instalarlo, simplemente ejecute los siguientes comandos:

Sudo apt actualizar sudo apt instalar vsftpd

El servicio vsftpd se iniciará automáticamente una vez que se complete el proceso de instalación. Compruébalo imprimiendo el estado del servicio:

Estado de sudo systemctl vsftpd

El resultado se verá así, indicando que el servicio vsftpd está activo y ejecutándose:

* vsftpd.service - servidor FTP vsftpd Cargado: cargado (/lib/systemd/system/vsftpd.service; habilitado; preestablecido del proveedor: habilitado) Activo: activo (en ejecución) desde el lunes 15 de octubre de 2018 a las 03:38:52 PDT; Hace 10 minutos PID principal: 2616 (vsftpd) Tareas: 1 (límite: 2319) CGroup: /system.slice/vsftpd.service `-2616 /usr/sbin/vsftpd /etc/vsftpd.conf

Configurando vsftpd

El servidor vsftpd se puede configurar editando el archivo /etc/vsftpd.conf. La mayoría de las configuraciones están documentadas dentro de un archivo de configuración. Para conocer todas las opciones disponibles, visite la página oficial de vsftpd.

En las siguientes secciones, veremos algunas de las configuraciones importantes necesarias para configurar una instalación segura de vsftpd.

Comience abriendo el archivo de configuración vsftpd:

Sudo nano /etc/vsftpd.conf

1. Acceso FTP

Permitimos que solo los usuarios locales accedan al servidor FTP, busquen las directivas anonym_enable y local_enable y verifiquen que su configuración coincida con las siguientes líneas:

/etc/vsftpd.conf

Anonymous_enable=NO local_enable=SÍ

2. Habilitar descarga

Descomente la configuración write_enable para permitir cambios en el sistema de archivos, como cargar y eliminar archivos.

/etc/vsftpd.conf

Write_enable=SÍ

3. Chroot

Para evitar que los usuarios de FTP accedan a archivos fuera de sus directorios personales, descomente la configuración chroot.

/etc/vsftpd.conf

Chroot_local_user=SÍ

De forma predeterminada, para evitar vulnerabilidades de seguridad, cuando chroot está habilitado, vsftp se negará a cargar archivos si se puede escribir en el directorio en el que están bloqueados los usuarios.

  • Método 1.– La forma recomendada de permitir descargas es habilitar chroot y configurar directorios FTP. En este artículo, crearemos un directorio ftp dentro de la casa del usuario que servirá como chroot y escribiremos un directorio de carga para cargar archivos.

    /etc/vsftpd.conf

    User_sub_token=$USUARIO local_root=/home/$USUARIO/ftp

  • Método 2. Otra opción es agregar la siguiente directiva al archivo de configuración vsftpd. Utilice esta opción si debe otorgar acceso de escritura al directorio de inicio de su usuario.

    /etc/vsftpd.conf

    Allow_writeable_chroot=SÍ

4. Conexiones FTP pasivas

vsftpd puede usar cualquier puerto para conexiones FTP pasivas. Especificaremos un rango de puertos mínimo y máximo y luego abriremos el rango en nuestro firewall.

Agregue las siguientes líneas al archivo de configuración:

/etc/vsftpd.conf

Pasv_min_port=30000 pasv_max_port=31000

5. Restringir el inicio de sesión de usuarios

Para permitir que solo ciertos usuarios inicien sesión en el servidor FTP, agregue las siguientes líneas al final del archivo:

/etc/vsftpd.conf

Userlist_enable=SÍ userlist_file=/etc/vsftpd.user_list userlist_deny=NO

Cuando esta opción está habilitada, debe especificar explícitamente qué usuarios pueden iniciar sesión agregando nombres de usuario al archivo /etc/vsftpd.user_list (un usuario por línea).

6. Garantizar la transmisión mediante SSL/TLS

Para cifrar transferencias FTP usando SSL/TLS, necesita tener un certificado SSL y configurar su servidor FTP para usarlo.

Puede utilizar uno firmado por una autoridad certificadora confiable o crear un certificado autofirmado.

Si tiene un dominio o subdominio que apunta a la dirección IP de su servidor FTP, puede crear fácilmente un certificado SSL gratuito para el cifrado.

En este artículo, generaremos un certificado SSL autofirmado utilizando el comando openssl.

El siguiente comando creará una clave privada de 2048 bits y un certificado autofirmado que es válido por 10 años. Tanto la clave privada como el certificado se guardarán en un mismo archivo:

Sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Ahora que se ha creado el certificado SSL, abra el archivo de configuración vsftpd:

Sudo nano /etc/vsftpd.conf

Busque las directivas rsa_cert_file y rsa_private_key_file, cambie su valor pam en la ruta del archivo y establezca la directiva ssl_enable en YES:

/etc/vsftpd.conf

Rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES

A menos que se especifique lo contrario, el servidor FTP solo utilizará TLS para proporcionar conexiones seguras.

Reinicie el servicio vsftpd

Una vez que haya terminado de editar, el archivo de configuración vsftpd (excluyendo los comentarios) debería verse así:

/etc/vsftpd.conf

Listen=NO listening_ipv6=SÍ unlimited_enable=NO local_enable=SÍ write_enable=SÍ dirmessage_enable=SÍ use_localtime=SÍ xferlog_enable=SÍ connect_from_port_20=SÍ chroot_local_user=SÍ Secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/ etc/ SSL/ private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 userlist_enable=YES userlist_file=/etc/vsftpd.us er_list userlist_deny=NO

Guarde el archivo y reinicie el servicio vsftpd para que los cambios surtan efecto:

Sudo systemctl reinicia vsftpd

Abriendo el cortafuegos

Si está utilizando un firewall UFW, debe permitir el tráfico FTP.

Para abrir el puerto 21 (puerto de comando FTP), el puerto 20 (puerto de datos FTP) y 30000-31000 (rango de puerto pasivo), ejecute los siguientes comandos:

Sudo ufw permite 20:21/tcp sudo ufw permite 30000:31000/tcp

Para evitar el bloqueo abriremos el puerto 22:

Sudo ufw permite OpenSSH

Vuelva a cargar las reglas de UFW deshabilitando y volviendo a habilitar UFW:

Sudo ufw deshabilitadosudo ufw enable

Para probar los cambios:

Sudo ufw status Estado: activo A acción desde -- ------ ---- 20:21/tcp ALLOW Anywhere 30000:31000/tcp ALLOW Anywhere OpenSSH ALLOW Anywhere 20:21/tcp (v6) ALLOW Anywhere (v6) ) 30000:31000/tcp (v6) PERMITIR en cualquier lugar (v6) OpenSSH (v6) PERMITIR en cualquier lugar (v6)

Crear un usuario FTP

Para probar nuestro servidor FTP, crearemos un nuevo usuario.

  • Si ya tiene un usuario al que desea otorgarle acceso FTP, omita el paso 1.
  • Si ha configurado enable_writeable_chroot=YES en su archivo de configuración, omita el paso 3.
  1. Cree un nuevo usuario llamado newftpuser: sudo adduser newftpuser
  2. Agregue el usuario a la lista de usuarios FTP permitidos: echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list
  3. Cree un árbol de directorio FTP y establezca los permisos correctos: sudo mkdir -p /home/newftpuser/ftp/uploadsudo chmod 550 /home/newftpuser/ftpsudo chmod 750 /home/newftpuser/ftp/uploadsudo chown -R newftpuser: /home/newftpuser /ftp

    Como se discutió en la sección anterior, el usuario podrá cargar sus archivos al directorio ftp/upload.

En este punto, su servidor FTP es completamente funcional y debería poder conectarse a su servidor con cualquiera que pueda configurarse para usar cifrado TLS, como FileZilla.

Deshabilitar el acceso al shell

De forma predeterminada, al crear un usuario, a menos que se especifique explícitamente, el usuario tendrá acceso al servidor SSH.

Para deshabilitar el acceso al shell, crearemos un nuevo shell que simplemente imprimirá un mensaje informándole al usuario que su cuenta está limitada solo al acceso FTP.

Cree un shell /bin/ftonly y hágalo ejecutable:

Echo -e "#!/bin/sh\necho "Esta cuenta está limitada únicamente al acceso FTP."" | sudo tee -a /bin/ftponlysudo chmod a+x /bin/ftponly

Agregue el nuevo shell a la lista de shells válidos en el archivo /etc/shells

Eco "/bin/ftonly" | sudo tee -a /etc/shells

Cambie el shell del usuario a /bin/ftonly:

Sudo usermod newftpuser -s /bin/ftponly

Conclusión

En este artículo, aprendió cómo instalar y configurar un servidor FTP rápido y seguro en su sistema Ubuntu 18.04.