🐋
Apuntes Sistemas
  • ⚓Presentación
  • 📊Sistemas y Servidores
    • Personalizar el prompt de Windows
    • Utilidad de manejo de apps para Windows
    • PRACTICA: Arranque dual Windows y Ubuntu
    • 🚧SysLinuxOS: el SO para ASIX
    • Comandos Linux
      • PRACTICA - Ejercicio de práctica comandos
      • 🚧Instalación de paquetes
      • Apuntes Linux: blue/red team
      • Ejemplos de bash
      • Listado de comandos de Linux
    • Comandos Windows
      • 🚧Apuntes Powershell
      • Bucles FOR con batch
      • Scripts de práctica de Windows
    • Prácticas con Windows 10
    • Configuración de netplan
    • Terminal shell
      • SSH
      • 🚧Ghostty
      • 🚧Warp: la terminal inteligente
      • tmux: paneles de terminal
      • Tabby: Mejorar terminal
      • Conexión SSH en red NAT con VirtualBox
      • TheFuck!: Corrección de comandos
      • Wave: Mejorar terminal Linux
      • 🚧Registros de sesiones
    • Instalación manual de Wordpress en CDMON
    • 🏗️Proxmox
    • 🚧TrueNAS
    • Docker
      • Instalación de Docker
      • Dockerfiles
      • Volúmenes de docker
      • Deployment web con Docker con ejemplos
        • 🚧PRACTICA: Node.js con docker
      • Docker Compose
        • Ejemplo 1: Implantación de Wordpress
        • Ejemplo 2: Implementación de servidor con Nginx, Flask y mySQL
        • Ejemplo 3: Implantación de onlyoffice
        • 🚧Ejemplo 4: Passbolt
        • 🚧PRACTICA: Creando una web de emulación de juegos con docker-compose
      • Monitorización con Grafana en Docker
      • Pi-hole con docker
      • Actividad clase: Deployment app
      • Proyectos self-hosted de docker
    • 🚧Ansible
      • Configuración de laboratorio de ansible
    • 🚧Monitorización de servicios y redes
      • Servicios y cronjobs
      • 1Panel
      • 🚧WatchYourLAN
      • 🚧Uptime-kuma
      • 🚧Netdata
      • 🚧Prometheus + Grafana + Loki
    • LDAP
      • 🚧Gestión gráfica de LDAP
      • Carpetas compartidas NFS
      • PRACTICA: Infraestructura LDAP
  • 🗃️Servicios
    • 🚧Servidor hosting público
    • DHCP
      • DHCP con Ubuntu
      • 🦖DHCP & DNS script
      • DHCP con Alpine
        • Alpine - configuración de red
    • DNS
      • 😡Comprobación DNS
      • Script para enumeración DNS
      • DNS con ubuntu server
      • 🏗️DNSmasq
      • 🚧Securizar servidor DNS
    • Web
      • IIS con Windows server
      • Apache
        • Instalación de LAMP en Ubuntu
          • Prueba de servidor LAMP
          • 🚧Configuración de seguridad de Ubuntu
          • Creación de un VirtualHost en LAMP
          • Creación de varios VirtualHosts en LAMP
          • 🚧Instalación por script de LAMP
        • Aplicaciones con LAMP
          • Instalación de WP en entorno LAMP
          • 🚧Instalación de MantisBT en LAMP
            • 👷Guía de MantisBT
          • 🚧Instalación de QDPM con LAMP
      • Nginx
        • Virtualhosts
        • Instalando Wordpress en nginx
      • 👷MEAN stack
      • 👷‍♂️Caddy
      • 🚧Plesk
      • 🚧Ajenti -Web interface
    • 🏗️Proxy
      • Nginx como proxy inverso y balanceador
      • 🚧Zoraxy
    • Mailing
      • 🚧Servidor Mail con cloudfare
      • 🚧Reenvío de correos de root
      • 🚧Roundcube como MUA
      • Comprobación ESMTP
      • 🚧Seguridad en mailing
      • 🚧Mailhog
    • 🏗️File transfer
      • 🚧FTP
      • Git
    • Sistemas de comunicación instantánea
      • Comunicación mediante CLI
      • Ejabberd - XMPP
        • 🚧Ejabberd con docker
      • 🚧Openfire - XMPP
      • 🚧Comunicaciones servidor-móvil
    • 🏗️Multimedia services
      • Stremio
      • Ver anime por CLI
      • Jellyfin
      • 🚧HLS sobre Apache
      • 🚧Servicio autohospedado de videoconferencia
      • 🚧Morphos: Conversor docs
      • 🚧Reproductores de música en CLI
      • 🚧Icecast - música en streaming
      • 🚧RTMP-HLS server
      • 🚧Guacamole
  • 🖱️Hardware
    • 🚧Identificando conectores
    • Curso de electrónica analógica
    • Alcanzar los 3200MHz con la RAM
    • Calculadora de cuellos de botella
    • 🚧PXE: Bootear sistemas en red
    • 🚧PRÁCTICA - Clonación de disco con Clonezilla
    • Logitech iFixit
  • 🕸️Redes
    • Apuntes IPv4 Alina
    • ¿Cómo diferenciar tantos elementos de red?
    • 🚧IPv6
    • PRÁCTICA - Subneteo con IPcalc en Linux
    • PRÁCTICA - Comandos de red en Windows
    • 🚧PRÁCTICA - Comandos de red en Linux
    • Herramientas de red
      • 🚧TCPDump: analizado de paquetes en red
      • PRÁCTICA - Netsh
      • 🚧PRÁCTICA - mtr.ping.pe
      • 🚧Netcat
    • Wireshark
    • VPN y escritorio remoto
      • Comunicación punto a punto con ngrok
      • 🚧VPN
    • Escaneo de red
      • PRÁCTICA - Mapeado de red con Draw.io
      • 🚧PRÁCTICA - Nmap/Zenmap
    • Redes inalámbricas
      • Wi-fi
        • 🚧PRÁCTICA - Configuración de router
        • 🚧PRÁCTICA - Como hacer un Wifi Heatmap
        • 🚧Seguridad de redes inalámbricas
        • PRÁCTICA - Crackear la contraseña del Wifi con WPA/WPA2
    • PRÁCTICA - Usar SSH en Cisco packet tracer
  • 🛑Ciberseguridad
    • 🚧Securizando un servidor Linux
      • Protégete de ataques de fuerza bruta con Fail2ban
      • Firewall
        • UFW (uncomplicated firewall)
          • GUFW - Interfaz gráfica de ufw
        • 🚧IPTables
        • 🚧PFsense
          • 🚧DMZ con PFsense
      • 🚧Passbolt: gestor de contraseñas autohospedado
      • 🚧Hashes y encriptación
      • 🚧Certificados SSL/TLS
      • Copias de seguridad
    • 🚧Alerta de escaneo de puertos
    • 🚧Google dorks
    • 🚧Enumeración DNS
    • Comandos destructivos de linux
    • Webs enseñanza cyber
    • Wireless Pentesting CheatSheet Github
    • The password game!
    • Personal Security Checklist
  • 🔌Arduino
    • Termómetro e higrómetros digitales y online con Arduino
    • Construyendo un coche multipropósito
      • Multi
      • Montaje del auto
    • Arduino con Sigfox para IoT
    • 10 proyectos de Arduino
  • 📚Recursos y libros
    • Media library: libros varios
    • Herramientas básicas de sysadmin
  • 🌍Sostenibilidad y digitalización
    • Portfolio curso digitalización MOOC
    • 🚧Explotación de recursos por IA
    • 🚧Nuevas tecnologias y comunicaciones
    • 🚧Enlaces sobre Inteligencia artificial
Con tecnología de GitBook
En esta página
  • Conexión
  • Seguridad
  • Instalación y configuración de vsftpd en Ubuntu:
  • Conexión desde FileZilla Client
  • Configurar conexión SFTP con VSFTP
  • Cambiar la configuración SSHD
  • Crea usuarios, contraseñas y directivas
  • Conexión con Ubuntu server
  • Acciones dentro de FTP
  1. Servicios
  2. File transfer

FTP

Significa Protocolo de Transferencia de Archivos (File Transfer Protocol en inglés), se trata de un estándar de red utilizado para transferir archivos de un host a otro a través de una red TCP/IP, como Internet en un modelo cliente-servidor. El cliente es la aplicación que se utiliza para conectarse al servidor FTP y realizar operaciones de transferencia de archivos y el servidor es el sistema que aloja los archivos y proporciona acceso a ellos a través de la red.

Conexión

  • Antes de realizar cualquier transferencia de archivos, el cliente debe establecer una conexión con el servidor.

  • La conexión FTP puede ser en modo activo o pasivo. En modo activo, el cliente abre un puerto para recibir datos, mientras que en modo pasivo, el servidor abre un puerto para la transferencia de datos.

  • Una vez establecida la conexión, el cliente envía comandos al servidor y el servidor responde a esos comandos. Algunos comandos FTP comunes incluyen:

    • USER y PASS: para autenticación del usuario.

    • PWD y CWD: para conocer y cambiar el directorio de trabajo.

    • LIST o NLST: para listar archivos en el directorio actual.

    • GET y PUT: para descargar y cargar archivos, respectivamente.

FTP admite dos modos de transferencia de datos ASCII y binario. El primero se utiliza para archivos de texto, mientras que el modo binario se utiliza para archivos como imágenes o programas ejecutables.

Seguridad

  • El puerto estándar para conexiones FTP no seguras es el puerto 21.

  • FTPS puede funcionar en dos modos: explícito y implícito:

    • En el modo explícito, el más común, se utiliza el mismo puerto 21 que FTP no seguro, y la seguridad se inicia mediante un comando específico (por ejemplo, AUTH TLS).

    • En el modo implícito, el servidor FTPS espera conexiones seguras directamente en el puerto 990.

  • SFTP no utiliza el mismo protocolo que FTP. En lugar de eso, se ejecuta sobre una conexión segura SSH (Secure Shell) en el puerto 22.

Instalación y configuración de vsftpd en Ubuntu:

VSFTPD (Very Secure FTP Daemon) es un servidor FTP de código abierto y ampliamente utilizado que se centra en la seguridad y la eficiencia. Está diseñado para minimizar el riesgo de ataques y vulnerabilidades.

A continuación te enseño como instalar y configurar el servicio en un servidor Debian/Ubuntu:

1- Instalar vsftpd: Abre una terminal en tu servidor Ubuntu y ejecuta los siguientes comandos para instalar vsftpd:

sudo apt update
sudo apt install vsftpd

2- Haz una copia de respaldo:

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bkp

3- Configurar vsftpd: Edita el archivo de configuración (vsftpd.conf) para ajustar la configuración según tus necesidades:

sudo nano /etc/vsftpd.conf

Asegúrate de tener las siguientes líneas descomentadas o añade estas configuraciones al final del archivo:

write_enable=YES
local_umask=022

Al terminar, guarda los cambios y cierra el editor.

4- Reiniciar vsftpd: Después de realizar cambios en la configuración, reinicia el servicio vsftpd para aplicarlos:

sudo service vsftpd restart

5- Creamos usuario FTP

Con la sintaxis de debajo podemos crear un usuario de svftpd:

sudo useradd -m [username]
sudo passwd [username]

6- Conecta al servidor FTP

Conecta el servidor FTP usando:

sudo ftp [system_name]

Reemplaza[system_name] con el nombre de tu servidor.

Por ejemplo:

Después de conectar con el servidor, haz login con la cuenta que hemos creado.

Conexión desde FileZilla Client

  1. Abrir FileZilla Client: Inicia FileZilla Client en tu máquina cliente.

  2. Configurar la conexión:

    En la barra superior de FileZilla, ves a "Gestor de sitios" y crea un sitio nuevo encontrarás campos para introducir la información de conexión.

    • Ingresa la dirección IP o el nombre de dominio de tu servidor en el campo "Host".

    • Selecciona "FTP - File Transfer Protocol" en el campo "Protocolo" y añade el puerto 21 para una conexión FTP normal.

    • Ingresa tu nombre de usuario y contraseña que configuraste en el servidor vsftpd.

    • Haz clic en el botón "Conectar" para establecer la conexión.

  3. Transferir archivos:

    • Una vez conectado, verás dos paneles. El de la izquierda es tu sistema local y el de la derecha es el sistema remoto (tu servidor). Puedes arrastrar y soltar archivos entre estos paneles para transferirlos.

Configurar conexión SFTP con VSFTP

Recuerda, como he explicado arriba, FTPS implícito es un método de FTPS que permite a los clientes conectarse a un puerto implícito (Puerto 990, que ya tiene conexiones seguras integradas) sin tener que solicitar que haya una. El FTPS implícito utiliza un puerto dedicado para permitir que el puerto 21 quede abierto. Este se considera mucho más estricto cuando se trata de establecer una conexión segura.

Lo primero va a ser comprobar que está instalado openssh, esto lo podemos hacer con el siguiente comando:

dpkg -l | grep ssh

Cambiar la configuración SSHD

Una vez instalado ssh y vsftpd, puedes editar el archivo de configuración del SSH daemon. Puedes abrirlo usando el editor Nano:

sudo nano /etc/ssh/sshd_config

Luego añade lo siguiente:

Match Group sftpgroup
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

Esto permitirá a los usuarios del sftpgroup a acceder al directorio de home a través de SFTP.

Reinicia el servicio para aplicar los cambios:

sudo systemctl restart sshd

Crea usuarios, contraseñas y directivas

El siguiente paso es crear un nuevo grupo sftpgroup y un nuevo usuario sftpuser, quienes por motivos de seguridad sólo podrán acceder al servidor SFTP de Ubuntu y no al servicio SSH.

sudo groupadd sftpgroup

El nuevo usuario se agrega al grupo SFTP con la opción -G. -d establece el directorio de inicio y -s establece las reglas de acceso al shell.

sudo useradd -G sftpgroup -d /srv/sftpuser -s /sbin/nologin sftpuser

Establecemos la contraseña ahora:

passwd P@ssw0rd

Ahora vamos a crear el directorio Chroot con el objetivo de crea una zona de pruebas para los procesos que se están ejecutando actualmente. Primero que nada necesitamos configurar una nueva carpeta:

mkdir -p /srv/sftpuser
#Le fijamos la propiedad de la carpeta
sudo chown root /srv/sftpuser
#Otorgamos permisos correspondientes
sudo chmod g+rx /srv/sftpuser

Y ahora podemos crear una subcarpeta y poner el sftpuser como propietarios:

mkdir -p /srv/sftpuser/data
chown sftpuser:sftpuser /srv/sftpuser/data

Conexión con Ubuntu server

Puedes crear una conexión al servidor SFTP a través de la barra de comandos SFTP o mediante un cliente FTP con GUI como Filezilla.

Ingrese el comando sftp, seguido del usuario y nombre de host o la dirección IP del servidor SFTP.

sftp -P PORT sftpuser@SERVER-IP

Deberás reemplazar PORT por el puerto que hayas puesto o el 22 por defecto. Cambia sftpuser por el usuario creado anteriormente y SERVER-IP por la IP del servidor o el host configurado.

Acciones dentro de FTP

Comando
Ejemplo
Definición

put

put /path/to/file1/on/local1 /data/

Subir archivos, recuerda que el usuario solo se ha configurado para tener permisos de escritura en ciertos directorios.

ls

ls /data

Listar archivos y directorios

AnteriorFile transferSiguienteGit

Última actualización hace 2 días

Filezilla es la solución más sencilla usada de cliente para el uso de FTP.

Descargar e instalar FileZilla Client: Si no tienes FileZilla Client instalado en tu máquina cliente, descárgalo e instálalo desde .

https://filezilla-project.org/
🗃️
🏗️
🚧
Page cover image
Diferencia conexión explicita/implicita
Ventana de Filezilla client
Resultado, si aparece como "ii" es que está bien
Connecting to the ftp server in Ubuntu.