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 alexComplete 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/ftpEstablecer propiedad:
sudo chown nadie: nogroup /home/alex/ftpFinalmente, elimine los permisos de escritura:
sudo chmod a - con home/alex/ftpAhora, usando el siguiente comando, verifique los permisos:
sudo ls - la /home/alex/ftpEn 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/filesY 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. TXTPaso 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/ftpPara 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 = 50000En 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 = NOBandera 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 usuariosComprobemos que el usuario está realmente activo ejecutando el comando:
gato /etc/vsftpd. Lista de usuariosLa 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 vsftpdPaso 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 SÍ:
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:
- Conexión de control (puerto 21)
- 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:
- Anónimo (ftp o inicio de sesión anónimo, contraseña – correo electrónico)
- 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:
- Streaming: transferencia continua de datos como un flujo (sin procesamiento, procesamiento realizado por TCP)
- Bloque: FTP divide los datos en bloques (encabezado, campo de datos, tamaño de archivo en bytes) y los transfiere a TCP.
- 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:
- Solo el usuario superusuario tiene acceso a la carpeta de superusuario, él también es el propietario de esta carpeta
- 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.
- 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.
- Cree un nuevo usuario llamado newftpuser: sudo adduser newftpuser
- Agregue el usuario a la lista de usuarios FTP permitidos: echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list
- 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.