Este contenedor ejecuta un servidor web que sirve a un navegador Firefox real cuando navega a él. Debajo del capó, el contenedor ejecuta XRDP sobre Apache Guacamole para servir la ventana Firefox.

Este proyecto se inspiró en esta publicación de blog. La creación de Ivonet es realmente genial, pero pensé que construiría la mía y agregaría algunas mejoras. Primero, actualicé la imagen de guacamole Apache a una más actual. Luego cambié el navegador a Firefox y descubrí cómo las extensiones laterales para que ya estén horneados en el navegador cuando construyes la imagen. Por último, creé un filtro SECComps Whitelist para mayor seguridad.
Esta construcción incluye Firefox y la extensión de PIA VPN. El Dockerfile también ha comentado líneas para Ublock Origin, DecentRaleyes y Privacy Badger. Se les ha comentado para ayudar con la estabilidad, pero puede descomponer fácilmente para satisfacer sus necesidades.
Esta imagen se publica en Docker Hub, y puede ejecutarla con el comando:
$ docker run -d --rm --shm-size=1G -p 8080:8080 --name foxception lawndoc/foxception:latest
Es importante incluir todas las banderas para que este contenedor Docker se ejecute y cierre correctamente. Le recomiendo que lea sobre todas las banderas que se usan y lo que significan (ver nota importante a continuación).
Puede ejecutar esta imagen con un filtro SECComp para minimizar las syscalls permitidas del contenedor en caso de explotación exitosa. Para hacer esto, clona este repositorio, crea una imagen con el script proporcionado y se ejecuta con el filtro SECComp proporcionado:
$ git clone https://github.com/lawndoc/foxception.git
$ cd foxception
$ ./build.sh
$ sudo docker run -d --shm-size=1G -p 8080:8080 --security-opt seccomp=foxception_seccomp.json --name foxception lawndoc/foxception:latest
El filtro SECComp se realizó con esta herramienta que registra todas las syscalls hechas en el núcleo y luego genera un filtro SECComps cuando detiene el contenedor. El filtro provisto permite que solo las syscalls requeridas para este contenedor funcionen según lo previsto. Recomiendo usar el filtro SECComp porque no he realizado ningún tipo de análisis de vulnerabilidad en este servicio (consulte la nota importante a continuación).
Además, tenga en cuenta que si modifica demasiado el contenedor, puede requerir syscalls adicionales que no sean blancas por el filtro SECComp proporcionado. En ese escenario, puede usar la herramienta mencionada anteriormente para generar un nuevo filtro.
Para elegir sus propias extensiones predeterminadas, debe agregar el archivo XPI al directorio/usr/share/mozilla/extensions/{EC8030F7-C20A-464F-9B0E-13A3A9E97384}/
El archivo debe llamarse <APP ID> .xpi donde <App ID> es la ID de aplicación del complemento. Por ejemplo, {EC8030F7-C20A-464F-9B0E-13A3A9E97384} es la ID de aplicación de Firefox, y es el nombre del directorio al que debe agregar los archivos XPI. Puede encontrar la ID de aplicación/extensión de cualquier complemento que ya tenga al acercarse: depuración en su navegador Firefox local.
Para descargar una extensión, simplemente haga un rizo como en DockerFile. Puede obtener la URL de descarga del archivo XPI del complemento yendo al sitio web de Firefox complementos y flotando o haciendo clic con el botón derecho en el botón "Agregar a Firefox".
Dependiendo de su configuración, este navegador puede estar expuesto a Internet. Dado que se está ejecutando en su red, cualquier cosa que se haga en el navegador se volverá vinculada a la red de host. Por lo tanto, asegúrese de saber de dónde se puede acceder y controlar el acceso con firewalls, htpasswd, etc. Además, no he realizado ningún análisis de vulnerabilidad en este contenedor, por lo que puede hacer las cosas que no pretendía hacer. Por esa razón, también debe ejecutar este contenedor con el filtro SECComp proporcionado como se instruyó anteriormente.