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