Archivos de Tags: Seguridad

Como conectar con los dominios .onion de Tor con Firefox en Linux

¿Estás buscando una forma sencilla de navegar por la red oculta de los dominios .onion?. Mucha gente probablemente usará algunos de los proxies disponibles para acceder a los dominios .onion. Desafortunadamente esto supone un problema de privacidad, debido a que el dueño del proxy puede espiar todas tus comunicaciones.

Así que voy a explicar en 3 sencillos pasos como configurar Firefox para acceder a los dominios .onion de forma directa a través de tu demonio Tor local. De esta forma, nos aseguramos que todo el tráfico va directo a través de la red tor.

  1. Instala el demonio Tor.
  2. Si usas una distribución Debian/Ubuntu esto es tan sencillo como:


    • sudo apt-get install tor
  3. Configurar Firefox para enviar a través de Tor las peticiones a los dominios .tor
  4. Esta es la parte interesante, debido a que queremos configurar Firefox para que solo envíe las peticiones a los dominios .onion a través de la red Tor, pero no queremos que Firefox envíe a través de Tor el resto de peticiones. Para conseguir esto vamos a usar un fichero de configuración proxy.

    • Guarda el siguiente contenido en un fichero (por ejemplo como ~/.proxy_pac)
      function FindProxyForURL(url, host) {
          isp = "PROXY ip_address:port; DIRECT";
          tor = "SOCKS 127.0.0.1:9050";
          if (shExpMatch(host,"*.onion")) {
              return tor;
          }
          return "DIRECT";
      }
      
    • Y configura Firefox para usar dicho fichero como fichero de configuración proxy en (Editar->Preferencias->Avanzado->Red->Ajustes->Dirección de configuración de proxy automático).
      • Has de usar la siguiente sintaxis: file://ruta-absoluta-al-fichero
      • Si o estás seguro, simplemente abre una nueva ventana de Firefox y en la barra de dirección (donde tecleas las direcciones Web) carga la siguiente dirección file://. Ahora navega por tu disco duro hasta donde has guardado el fichero de configuración del proxy que acabas de crear, hac click derecho encima del y selecciona Copiar Ruta del Enlace. Ahora pega dicho enlace en la configuración de Dirección de configuración de proxy automático.
  5. Configurar Firefox para enviar las peticiones DNS a través de un proxy SOCKS5
  6. El ultimo paso es decirle a Firefox que debe resolver las peticiones DNS a través del proxy SOCKS5 de Tor cuando intentas acceder a un dominio .onion. Por defecto, Firefox intentará resolver los dominios .onion usando tu servidor DNS local, por lo tanto no podrá resolver dichos dominios.
    Para arreglar esto, debemos activar la variable network.proxy.socks_remote_dns en la página de configuración avanzada:

    • En la barra de dirección (donde tecleas las direcciones Web), escribe about:config y presiona Enter. Esto abrirá una ventana donde puedes cambiar preferencias de Firefox avanzadas. Donde dice Buscar: arriba de todo. escribe network.proxy.socks. La lista de preferencias automáticamente cambiará para mostrar las preferencias del proxy.
      Selecciona network.proxy.socks_remote_dns haciendo click encima del una vez. Entonces, haz click derecho. Esto abre un pequeño menú de opciones. Selecciona Cambiar en el menú para cambiar su valor a true.

    Esto hará que firefox envíe las peticiones DNS para dominios .onion a través de tu demonio local Tor. Esto también añade privacidad ya que evita que las peticiones a los dominios .onion puedan ser interceptadas por tu servidor DNS local.

Ahora reinicia Firefox y deberías ser capaz de navegar por los dominios .onion directamente.

Desbloqueando una partición raiz encriptada con LUKS de forma remota con SSH

Si estas pensando en enviar un nuevo servidor a un datacenter remoto para colocación o simplemente has contratado uno o varios servidores en la nube, posiblemente habrás pensado que te gustaría cifrar el disco duro del servidor.

El problema es que si cifras el disco duro entero (la partición raíz) vas a necesitar algún sistema del tipo KVM para teclear la contraseña de forma remota cada vez que el servidor se reinicie… seguro??? No!

Gracias a este ingenioso truco, podrás introducir la contraseña de forma remota durante el proceso de arranque. Este truco consiste en embeber en el initramfs un pequeño servidor ssh (dropbear) que permite introducir la contraseña de la partición root durante el arranque ::

Para aquellos que tengan la suerte de usar Debian el procedimiento es tan sencillo y fácil como ::

1) Instala tu servidor con la partición root cifrada.

2) Instala los paquetes necesarios:

apt-get install openssh-server dropbear busybox

3) Copia la clave SSH que ha sido generada de forma automática

scp root@my.server.ip.addr:/etc/initramfs-tools/root/.ssh/id_rsa ~/id_rsa.initramfs

4) Si tu servidor obtiene la IP de forma automática (DHCP) ignora este paso, si no tienes que indicarle la IP en la linea de arranque del Kernel. Para ello edita el fichero /etc/default/grub y define la linea:

GRUB_CMDLINE_LINUX="ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>"

Usando el formato especificado en el archivo Documentation/nfsroot.txt de la documentación del Kernel de Linux. Por ejemplo:

GRUB_CMDLINE_LINUX="ip=192.168.122.192::192.168.122.1:255.255.255.0::eth0:none"

Recarga la configuración de grub

update-grub

5) Reinicia

reboot

6) Y desbloquea de forma remota!

ssh -o "UserKnownHostsFile=~/.ssh/known_hosts.initramfs" \
	-i "~/id_rsa.initramfs" root@my.server.ip.addr \
	"echo -ne \"MyS3cr3tK3y\" >/lib/cryptsetup/passfifo"

Y para aquellos que no tengan la suerte de usar Debian, así como para aquellos que si tengan esa suerte pero quieran conocer más detalles sobre este procedimiento, os pego el contenido del fichero cryptsetup/README.remote de Debian que seguro que encontrareis muy útil :)

$ zcat /usr/share/doc/cryptsetup/README.remote.gz

unlocking rootfs via ssh login in initramfs
-------------------------------------------

You can unlock your rootfs on bootup from remote, using ssh to log in to the
booting system while it's running with the initramfs mounted.


Setup
-----

For remote unlocking to work, the following packages have to be installed
before building the initramfs: dropbear busybox

The file /etc/initramfs-tools/initramfs.conf holds the configuration options
used when building the initramfs. It should contain BUSYBOX=y (this is set as
the default when the busybox package is installed) to have busybox installed
into the initramfs, and should not contain DROPBEAR=n, which would disable
installation of dropbear to initramfs. If set to DROPBEAR=y, dropbear will
be installed in any case; if DROPBEAR isn't set at all, then dropbear will only
be installed in case of an existing cryptroot setup.

The host keys used for the initramfs are dropbear_dss_host_key and
dropbear_rsa_host_key, both located in/etc/initramfs-tools/etc/dropbear/.
If they do not exist when the initramfs is compiled, they will be created
automatically. Following are the commands to create them manually:

# dropbearkey -t dss -f /etc/initramfs-tools/etc/dropbear/dropbear_dss_host_key
# dropbearkey -t rsa -f /etc/initramfs-tools/etc/dropbear/dropbear_rsa_host_key

As the initramfs will not be encrypted, publickey authentication is assumed.
The key(s) used for that will be taken from
/etc/initramfs-tools/root/.ssh/authorized_keys.
If this file doesn't exist when the initramfs is compiled, it will be created
and /etc/initramfs-tools/root/.ssh/id_rsa.pub will be added to it.
If the latter file doesn't exist either, it will be generated automatically -
you will find the matching private key which you will later need to log in to
the initramfs under /etc/initramfs-tools/root/.ssh/id_rsa (or id_rsa.dropbear
in case you need it in dropbear format). Following are the commands to do the
respective steps manually:

To create a key (in dropbear format):

# dropbearkey -t rsa -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear

To convert the key from dropbear format to openssh format:

# /usr/lib/dropbear/dropbearconvert dropbear openssh \
	/etc/initramfs-tools/root/.ssh/id_rsa.dropbear \
	/etc/initramfs-tools/root/.ssh/id_rsa

To extract the public key:

# dropbearkey -y -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear | \
	grep "^ssh-rsa " > /etc/initramfs-tools/root/.ssh/id_rsa.pub

To add the public key to the authorized_keys file:

# cat /etc/initramfs-tools/root/.ssh/id_rsa.pub >> /etc/initramfs-tools/root/.ssh/authorized_keys

In case you want some interface to get configured using dhcp, setting DEVICE= in
/etc/initramfs-tools/initramfs.conf should be sufficient.  The initramfs should
also honour the ip= kernel parameter.
In case you use grub, you probably might want to set it in /boot/grub/menu.lst,
either in the '# kopt=' line or appended to specific 'kernel' line(s).
The ip= kernel parameter is documented in Documentation/nfsroot.txt in the
kernel source tree.


Issues
------

Don't forget to run update-initramfs when you changed the config to make it
effective!

Collecting enough entropy for the ssh daemon sometimes seems to be an issue.
Startup of the ssh daemon might be delayed until enough entropy has been
retrieved. This is non-blocking for the startup process, so when you are at the
console you won't have to wait for the sshd to complete its startup.


Unlocking procedure
-------------------

To unlock from remote, you could do something like this:

# ssh -o "UserKnownHostsFile=~/.ssh/known_hosts.initramfs" \
	-i "~/id_rsa.initramfs" root@initramfshost.example.com \
	"echo -ne \"secret\" >/lib/cryptsetup/passfifo"

This example assumes that you have an extra known_hosts file 
"~/.ssh/known_hosts.initramfs" which holds the cryptroot system's host-key,
that you have a file "~/id_rsa.initramfs" which holds the authorized-key for
the cryptroot system, that the cryptroot system's name is
"initramfshost.example.com", and that the cryptroot passphrase is "secret"

-- <debian@x.ray.net>, Wed, 30 Sep 2009

(English) War Games

Disculpa, pero esta entrada está disponible sólo en English.