Skip to main content

Instalación de Gophish

Para realizar la instalación de Gophish en sistema Docker es necesario tener docker instalado Instalar Docker en Debian 11/12.

Creación de directorio

Crear el directorio para la configuración del contenedor de docker. Puede cambiar la ruta al que más le convenga.

mkdir /docker/gophish -p
cd /docker/gophish

Ficheros de configuración para docker

Necesitaremos mínimo 2 ficheros para iniciarlizar el docker, el docker-compose y un fichero config.json

config.json

En este fichero se definen ciertas configuraciones respecto a la aplicación web gophish como los puertos de escucha, ips desde las cuales está permitido acceder, si usar conexión HTTPS (TLS) o HTTP plano y los certificados a usar.

{
  "contact_address": "",
  "db_name": "sqlite3",
  "db_path": "gophish.db",
  "migrations_prefix": "db/db_",
  "admin_server": {
    "api_key_init": "dba840fa0f7e03851ca695801f41c4a50fbbdb653ece0e2cdebbcb2977e5dfe1",
    "cert_path": "/run/secrets/admin_fullchain.pem",
    "key_path": "/run/secrets/admin_privkey.pem",
    "listen_url": "0.0.0.0:3333",
    "use_tls": false
  },
  "phish_server": {
    "cert_path": "/run/secrets/phish_fullchain.pem",
    "key_path": "/run/secrets/phish_privkey.pem",
    "listen_url": "0.0.0.0:8080",
    "use_tls": false
  }
}

Como se puede ver, tanto para el bloque admin_server como para phish_server existen los campos

Parámetro Valores Descripción
listen_url 0.0.0.0:8080 Indica la ip desde la cual estará disponible la web y el puerto. En el caso de 0.0.0.0 indica que será accesible desde cualquiera de las interfaces de la máquina donde está montado el sistema.
use_tls true
false
Permite especificar si la web admin/phish va a hacer uso de certificado SSL (HTTPS). Si va a usar un nginx/apache como reverse-proxy, entonces lo puede dejar en false.
cert_path ruta al certificado tls Solo es necesario si ha indicado el parámetro use_tls como true. Entonces ha de indicar la ruta donde estará el certificado.
key_path ruta al fichero .key tls Solo es necesario si ha indicado el parámetro use_tls como true. Entonces ha de indicar la ruta donde estará el fichero .key

En el caso del bloque de server aparece un parámetro adicional que es api_key_init, el cual contiene la API KEY. Genere una nueva por temas de seguridad con el comando

TO-DO

docker-compose.yml

A continuación genere el fichero docker-compose.yml con el siguiente contenido.

---
version: "3.7"

secrets:
  config_json:
    file: ./config.json
  admin_fullchain_pem:
    file: ./src/secrets/admin_fullchain.pem
  admin_privkey_pem:
    file: ./src/secrets/admin_privkey.pem
  phish_fullchain_pem:
    file: ./src/secrets/phish_fullchain.pem
  phish_privkey_pem:
    file: ./src/secrets/phish_privkey.pem

services:
  gophish:
    image: cisagov/gophish:0.0.8
    ports:
      - target: 3333
        published: 3333
        protocol: tcp
        mode: host
      - target: 8080
        published: 3380
        protocol: tcp
        mode: host
    secrets:
      - source: config_json
        target: config.json
#      - source: admin_fullchain_pem
#        target: admin_fullchain.pem
#      - source: admin_privkey_pem
#        target: admin_privkey.pem
#      - source: phish_fullchain_pem
#        target: phish_fullchain.pem
#      - source: phish_privkey_pem
#        target: phish_privkey.pem

En caso de que haya seleccionado en el fichero config.json use_tls a true en alguno de los bloques de web, deberá añadir aquí el certificado de cada uno de ellos nombrandolos tal como se puede ver en el bloque secrets superior y descomente la lineas acordes en el apartado secrets inferior. Guarde los cambios y ejecute

docker-compose up

Podrá ver como se descarga la imagen, se crea el container y se inicializa el docker. Sin embargo se quedará como en la ventana de logs y si pulsa CTRL+C se detendrá el container. Puede realizar dos opciones:

docker container start gophish_gophish_1

El cual encenderá el docker o bien directamente lanzar el comando

docker compose up --detach

Accediendo al portal de administración

Una vez inicializado el docker, al intentar acceder nos faltará saber la contraseña que viene por defecto. Antiguamente el usuario era admin y la contraseña gophish, sin embargo aunque en la versión de docker el usuario admin se ha mantenido, la contraseña se genera aleatoriamente. Para verla , deberá revisar los logs del docker con el comando.

docker logs gophish-gophish-1

Una vez obtenida la contraseña, acceda mediante el navegador a la web de administración con

http://IP_DEL_SERVIDOR:3333/

introduzca la contraseña y ya estará en el portal de administración.

Configurando HTTPS con Nginx ProxyPass

Nginx va a ser el encargado de activar el TLS en la web de administración y la web de phishing.

TO-DO