> For the complete documentation index, see [llms.txt](https://books.spartan-cybersec.com/cppj/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://books.spartan-cybersec.com/cppj/transferencia-de-archivos/despligue-de-servicio-ftp.md).

# Despligue de servicio FTP

El protocolo FTP (File Transfer Protocol) es uno de los métodos más comunes para transferir archivos entre sistemas. Aquí te explico varias formas de desplegar un servicio FTP que debería conocer un hacker, utilizando diferentes herramientas y configuraciones en diversos sistemas operativos.

## <mark style="color:green;">1.</mark> <mark style="color:green;"></mark><mark style="color:green;">**vsftpd (Very Secure FTP Daemon) en Linux**</mark>

`vsftpd` es uno de los servidores FTP más seguros y populares en Linux.

**Instalación y Configuración:**

1. **Instalar vsftpd:**

   ```bash
   sudo apt-get install vsftpd
   ```
2. **Configurar vsftpd:** Edita el archivo de configuración `/etc/vsftpd.conf`:
   * Permitir acceso anónimo (opcional):

     ```makefile
     anonymous_enable=YES
     ```
   * Permitir acceso local:

     ```makefile
     local_enable=YES
     write_enable=YES
     ```
3. **Reiniciar el servicio vsftpd:**

   ```bash
   sudo systemctl restart vsftpd
   ```
4. **Agregar usuarios al servicio FTP (si no se permite el acceso anónimo):**

   ```bash
   sudo useradd -m -s /bin/false ftpuser
   sudo passwd ftpuser
   ```

## <mark style="color:green;">2.</mark> <mark style="color:green;"></mark><mark style="color:green;">**ProFTPD (Professional FTP Daemon) en Linux**</mark>

`ProFTPD` es un servidor FTP flexible y altamente configurable.

**Instalación y Configuración:**

1. **Instalar ProFTPD:**

   ```bash
   sudo apt-get install proftpd
   ```
2. **Configurar ProFTPD:** Edita el archivo de configuración `/etc/proftpd/proftpd.conf`:
   * Habilitar acceso anónimo (opcional):

     ```mathematica
     <Anonymous ~ftp>
       User ftp
       Group nogroup
       UserAlias anonymous ftp
       RequireValidShell off
       MaxClients 10
     </Anonymous>
     ```
3. **Reiniciar el servicio ProFTPD:**

   ```bash
   sudo systemctl restart proftpd
   ```

## <mark style="color:green;">3.</mark> <mark style="color:green;"></mark><mark style="color:green;">**Pure-FTPd en Linux**</mark>

`Pure-FTPd` es un servidor FTP seguro y fácil de configurar.

**Instalación y Configuración:**

1. **Instalar Pure-FTPd:**

   ```bash
   sudo apt-get install pure-ftpd
   ```
2. **Configurar Pure-FTPd:** Crear un usuario virtual:

   ```bash
   sudo pure-pw useradd ftpuser -u ftpuser -d /home/ftpusers/ftpuser
   sudo pure-pw mkdb
   ```
3. **Reiniciar el servicio Pure-FTPd:**

   ```bash
   sudo systemctl restart pure-ftpd
   ```

## <mark style="color:green;">4.</mark> <mark style="color:green;"></mark><mark style="color:green;">**Serv-U FTP Server en Windows**</mark>

`Serv-U FTP Server` es un servidor FTP robusto para Windows, utilizado tanto en entornos personales como empresariales.

**Instalación y Configuración:**

1. **Descargar e instalar Serv-U FTP Server** desde el sitio web oficial.
2. **Configurar Serv-U FTP Server** utilizando la interfaz gráfica:
   * Crear un nuevo dominio FTP.
   * Configurar usuarios y permisos.
   * Especificar las rutas de los directorios compartidos.
3. **Iniciar el servicio FTP** desde la interfaz de administración.

## <mark style="color:green;">5.</mark> <mark style="color:green;"></mark><mark style="color:green;">**FileZilla Server en Windows**</mark>

`FileZilla Server` es una opción popular y gratuita para configurar un servidor FTP en Windows.

**Instalación y Configuración:**

1. **Descargar e instalar FileZilla Server** desde el sitio web oficial.
2. **Configurar FileZilla Server**:
   * Abrir FileZilla Server Interface.
   * Crear usuarios y asignarles contraseñas.
   * Configurar directorios compartidos y permisos.
3. **Iniciar el servicio FTP** desde la interfaz de administración.

## <mark style="color:green;">6.</mark> <mark style="color:green;"></mark><mark style="color:green;">**Utilizando Python para un servidor FTP rápido**</mark>

Python puede ser utilizado para crear un servidor FTP rápido y simple, útil para pruebas y transferencias rápidas.

**Ejemplo utilizando pyftpdlib:**

1. **Instalar pyftpdlib:**

   ```bash
   pip install pyftpdlib
   ```
2. **Iniciar el servidor FTP:**

   ```bash
   python -m pyftpdlib -p 21
   ```

## <mark style="color:green;">7.</mark> <mark style="color:green;"></mark><mark style="color:green;">**Utilizando Docker para un servidor FTP**</mark>

Docker puede ser utilizado para desplegar rápidamente un servidor FTP utilizando contenedores.

**Ejemplo con vsftpd:**

1. **Crear un archivo Dockerfile** para configurar el contenedor:

   ```Dockerfile
   FROM fauria/vsftpd
   ```
2. **Construir y ejecutar el contenedor Docker:**

   ```bash
   docker build -t my-vsftpd .
   docker run -d -p 21:21 -p 21100-21110:21100-21110 -e FTP_USER=user -e FTP_PASS=pass -v /host/path:/home/vsftpd --name vsftpd my-vsftpd
   ```

Estas son algunas de las formas más comunes de desplegar un servicio FTP. La elección del método depende del entorno y las necesidades específicas del pentest. Cada método tiene sus propias ventajas y configuraciones específicas que pueden ser explotadas o utilizadas para diversos propósitos.
