A continuación se describen los pasos para configurar Firefox utilizando tomb para almacenar los datos de forma privada.
TL;DR: Ejecutar script setup-browsers-firefox
Creación de archivo tomb
Como se vió en el post anterior Mejorar la seguridad de archivos de Dropbox con tomb, aquí se desea también mejorar la seguridad de los archivos utilizados por el navegador Firefox (y algún otro llegado el momento), ya que en dichos archivos se encuentra el historial de navegación y las cookies de los sitios visitados, algunas de las cuales pueden ser de autenticación. O sea, en el peor de los casos si se comprometen las cookies de autenticación a varios sitios web un [adversario][eff adversary] podría impersonarnos.
Se crea un archivo tomb que contendrá los archivos utilizados por los navegadores y su clave asociada:
$ mkdir -p ~/graveyard
$ tomb dig -s 512 ~/graveyard/browsers.tomb
$ tomb forge -f ~/browsers.tomb.key
$ tomb lock -k ~/browsers.tomb.key ~/graveyard/browsers.tomb
Notas:
-
Se elige un tamaño de 512MB basado en el tamaño de los directorios utilizados por Firefox y Chromium actualmente en el sistema*. El tamaño se obtiene utilizando:
$ du -csh ~/.mozilla/firefox/ ~/.cache/mozilla ~/.config/chromium ~/.cache/chromium
Nota: se menciona Chromium ya que en el futuro se piensa agregar también sus archivos de configuración al archivo tomb.
-
Se utiliza la opción
-f
para forzar la operación, ya que no se tiene una particón swap encriptada.
Por último se abre el archivo tomb:
$ tomb open -f -k ~/browsers.tomb.key ~/graveyard/browsers.tomb /run/media/$USER/browsers
Para confirmar que fué montado correctamente se puede utilizar el comando mount
:
$ mount | grep browsers
/dev/mapper/tomb.browsers.1545654982.loop0 on /run/media/jmpc/browsers type ext4 (rw,nodev,noatime)
Copiado de profile de Firefox
A continuación se deben copiar los archivos utilizados por Firefox
dentro del archivo tomb. Esto se hará en el directorio
firefox-private
.
Nota: en esta etapa deben cerrarse Firefox para no tener problemas al mover los archivos.
Para copiar el profile utilizado por Firefox inspeccionar el archivo
~/.mozilla/firefox/profiles.ini
buscando el directorio (Path
) del profile
activo (Default=1
). Por ejemplo en:
[Profile1]
Name=default
IsRelative=1
Path=5l5xoitj.default-1518183650340
Default=1
el directorio del profile será:
~/.mozilla/firefox/5l5xoitj.default-1518183650340
. Este debe moverse a la
nueva ubicación en /run/media/$USER/browsers/firefox-private
:
$ mv ~/.mozilla/firefox/5l5xoitj.default-1518183650340 /run/media/$USER/browsers/firefox-private
Nota: no importa el profile dejado en el archivo profiles.ini
ya que cuando
vuelva a usarse Firefox normalmente se creará un nuevo profile con el nombre
del directorio que fué copiado.
Respecto al directorio caché utilizado por el profile anterior, este se
encuentra en el directorio
~/.cache/mozilla/firefox/5l5xoitj.default-1518183650340
, y será borrado para
no dejar información de navegación en el disco:
$ rm -fr ~/.cache/mozilla/firefox/5l5xoitj.default-1518183650340
Nota: a pesar de mover el profile del navegador al archivo tomb y borrar el directorio caché la información puede quedar en el disco, por lo que si esta desea borrarse definitivamente deberán seguirse otros pasos no detallados aquí.
Creación de bind-hooks
en archivo tomb
Para independizarse del punto de montaje del archivo tomb, se agregará un
bind-hooks
para montar el directorio del profile en ~/.firefox-private
:
$ cat > /run/media/$USER/browsers/bind-hooks <<'END'
firefox-private .firefox-private
END
Tambien nos aseguramos de que exista el punto de montaje:
$ mkdir -p ~/.firefox-private
Para probar que los bind-hooks
funcionan correctamente cerrar y volver a abrir
el archivo tomb:
$ tomb close browsers
$ tomb open -f -k ~/browsers.tomb.key ~/graveyard/browsers.tomb /run/media/$USER/browsers
$ mount | grep browsers
/dev/mapper/tomb.browsers.1545659868.loop0 on /run/media/jmpc/browsers type ext4 (rw,nodev,noatime)
/dev/mapper/tomb.browsers.1545659868.loop0 on /home/jmpc/.firefox-private type ext4 (rw,nodev,noatime)
Creación de scripts y archivos .desktop para utilizar el profile privado
En los pasos anteriores se movió el profile de Firefox al archivo tomb. Resta crear un script para utilizar dicho profile junto al archivo .desktop correspondiente para que sea agregado al menú del sistema.
Nota: en lo que sigue se almacenará el script en el directorio ~/bin
(se
supone que dicho directorio se encuentra en $PATH
) y el
archivo .desktop en el directorio ~/.local/share/applications
. Como
alternativa podrían utilizarse los directorios de sistema /usr/local/bin
y
/usr/local/share/applications
para que el uso de la configuración esté
disponible para todos los usuarios.
Se debe crear un script para ejecutar Firefox utilizando como profile el
directorio ~/.firefox-private
que es montado por tomb al abrir el archivo
~/graveyard/browsers.tomb
. Al script se le llamará firefox-private
.
La versión a ejecutar de Firefox será la última disponible que se encontrará
en el enlace simbólico /opt/firefox-latest
; ver el post
[Deshabilitando updates en firefox][post disabling-updates-in-firefox].
La opción de Firefox para especificar el profile a usar es --profile
.
Ya que el directorio ~/.firefox-private
es en realidad un punto de montaje
(montado utilizando la opción bind
por tomb
), se desea verificar que en el
directorio haya un filesystem montado para lo que se utilizará el comando
mountpoint
.
Por último en el script se agregarán mensajes de error en los casos en que el
directorio del profile no exista o no tenga un filesystem montado. Ya que el
script se puede ejecutar mediante consola o utilizando un lanzador del menú, se
desea utilizar la salida estandar o el programa zenity
, según sea el caso,
para mostrar los mensajes.
A continuación se lista el script ~/bin/firefox-private
que puede descargarse
aquí:
#!/bin/bash
set -e
show_error() {
if [[ $(readlink -f /proc/$(ps -o ppid:1= -p $$)/exe) = $(readlink -f "$SHELL") ]]; then
echo -e "$1"
elif [ -x /usr/bin/zenity ]; then
zenity --warning --width=500 --text "$1"
fi
}
if [ ! -d "$HOME/.firefox-private" ]; then
show_error "Directory $HOME/.firefox-private don't exist\nCreate it and reopen tomb file\n"
exit 1
elif ! mountpoint -q "$HOME/.firefox-private"; then
show_error "Directory $HOME/.firefox-private is not a mount point\nTry open tomb file\n"
exit 1
elif [ ! -d /opt/firefox-latest ]; then
show_error "Missing firefox installation in \`/opt/firefox-latest\`\n"
exit 1
fi
/opt/firefox-latest/firefox --profile "$HOME/.firefox-private" "$@"
Para agregar el script al menú bajo el nombre Firefox (private) se crea el
archivo ~/.local/share/applications/firefox-private.desktop
que pude
descargarse aquí:
[Desktop Entry]
Version=1.0
Name=Firefox private (latest)
GenericName=Web Browser
Comment=Browse the World Wide Web
Exec=bin/firefox-private %u
Terminal=false
X-MultipleArgs=false
Type=Application
Icon=/opt/firefox-latest/browser/chrome/icons/default/default128.png
Categories=Network;WebBrowser;
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/vnd.mozilla.xul+xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;
StartupWMClass=firefox-private
StartupNotify=true
Firefox como navegador web por defecto
Como se desarrolla en el post [Elegir aplicación por defecto de ~/.local/share/applications][post da from local share], debe ejecutarse:
$ for mimetype in x-scheme-handler/http x-scheme-handler/https text/html x-scheme-handler/about; do
gio mime $mimetype firefox-private.desktop
done
Shortcuts para Firefox
En este punto se configurará el shortcut <Ctrl><Alt>+F
para lanzar el
navegador web por defecto del sistema, que se desea configurar a la última
versión de Firefox utilizando el profile privado.
Ya que actualmente estoy utilizando los escritorios Gnome y Mate se agregarán los pasos para configurar el shortcut en ambos escritorios
Gnome
La documentación para agregar el shortcut al comando Firefox se puede encontrar en la ayuda de gnome: https://help.gnome.org/users/gnome-help/stable/keyboard-shortcuts-set.html.en.
Se debe modificar el shortcut Launch web browser.
Mate
Menú System > Preferences > Hardware > Keyboard Shortcuts y allí se ingresa el shortcut para la entrada Launch web browser.
También puede ejecutarse desde consola:
$ gsettings set org.mate.SettingsDaemon.plugins.media-keys www '<Primary><Alt>f'