Saltando bloqueos de los ISP: HAProxy y autossh

¡Este último mes podríamos decir que he estado muy entretenida! Hace ya casi dos años, un cliente vino a mi harto de que los proveedores de hosting le cerrasen el servidor, durante todo este tiempo de maravilla, hasta que hace un mes y medio Movistar y Vodafone bloquearon el dominio. Ahí es cuando el cliente me contactó de nuevo para realizar un análisis y un informe pericial. El motivo es que el cliente no está realizando ningún acto delictivo que lleve a los proveedores de hosting e ISP a bloquear el servicio, aún así, lo hacen, estamos delante de un caso de Internet Blackout, bloqueo interesado de un servicio en concreto para que los usuarios no puedan acceder a él. ¿Algo ha tenido que ver el recién finalizado y polémico Mundial de Fútbol en Qatar?.

En la fecha del bloqueo del dominio del cliente, mi propuesta al identificar que el bloqueo se estaba realizando a nivel de dominio (que no de DNS, ya que estos si resolvían), le propuse al cliente de registrar otro dominio. La solución funcionó durante 2 semanas más hasta que Movistar y Vodafone bloquearon la dirección IP, como tal, la solución de añadir mas dominios apuntando al servidor, ya no era útil. Por mas INRI, el bloqueo se extendió a más ISP, aislando casi por completo el servidor de Internet (y no sólo en España, otros países de Europa y LatinoAmérica se vieron afectados), pero no todos lo bloquearon!

A partir de aquí se empezó a …

Replicar un servidor de DNS de un maestro a un esclavo

Tenemos que montar 2 servidores de DNS, un maestro y un esclavo, el esclavo simplemente va a recibir las actualizaciones del maestro, así que los cambios sólo los vamos a realizar al servidor de DNS maestro.

Instalamos bind en ambos equipos

# apt-get install bind9

Y creamos los ficheros de zona en /var/lib/bind/, por ejemplo el de capa8.cat…

Securizando los accesos a un sistema GNU/Linux

Cuando tenemos una maquina expuesta directamente a internet es realmente muy importante tener primero de todo una buena política de passwords, además de realizar 4 cambios para aumentar la seguridad frente ataques por fuerza bruta.

Lo primero de todo y muy recomendable es no permitir el login de root (si se precisa acceso hacerlo vía pre-sharedkey):…

conexión RDP sobre guifi + tunnel ssh

Esta tarde he recibido una llamada de mi hermano comentándome que no podía conectar a la FTP de Olot.

En Olot tenemos una nanostation loco m5 que se conecta a un supernodo a apenas 500 metros, este supernodo está conectado a otro que está también a unos 500 metros aproximadamente.

La cosa es que hacía ping a la ip de la FTP pero no podía acceder y necesitaba acceder a su máquina para verificar cual era el problema. Como usa windows la forma que tenía de conectarme a su ordenador era mediante RDP (escritorio remoto de windows).…

historias de túneles ssh: acceder a webs prohibidas por tu ip

Pues esto, nos encontramos en un sitio con unas ips un poco raras, y la web de loquo nos dice que no se aceptan visitas des de el país en qué estoy (WTF!). Pero en casa si me dejaba acceder. Solución? túnel ssh a saco :D

Pero aquí la cosa se complica, la web, la muy cabronceta tiene un redirect a la url, así que hemos tenido que hacer un par de cositas mas además del túnel que inicialmente lo había hecho pasar por el 8080 (puerto al azar), así que la actuación ha sido distinta:

paramos el apache porque vamos a hacer el túnel en el puerto 80
# /etc/init.d/apache2 stop

para crear un puerto 80 se requieren derechos de root
# ssh -L 80:www.loquo.com:80 laura@213.98.143.33

luego engañamos a nuestro hosts
# vi /etc/hosts
127.0.0.1  localhost www.loquo.com loquo.com

en el navegador:
http://www.loquo.com

recordad en vaciar el buffer….

Y ale, ya he podido publicar el anuncio… por cierto… alquilo dos habitaciones, si hay algún interesado……

túneles ssh inversos

Ya hace unos días que ando hablando de túneles ssh (con la opción -L), pues ahora vamos a hacer lo mas difícil todavía.

Nos encontramos que tenemos una maquina detrás de una conexión de la cual no es posible redirigir los puertos a la maquina que nos interesa, pero esta máquina si tiene acceso ssh a otra máquina.

Desde la maquina la cual no tenemos acceso y queremos acceder a ella vamos a ejecutar esto:

$ ssh -nNT -R 2222:localhost:22 blackhold@fermat.marsupi.org

luego en la maquina servidor.dominio.org vemos que se ha creado una nueva conexión en el puerto 2222:

fermat:/home/blackhold# netstat -lanp |grep 2222
tcp        0      0 127.0.0.1:2222          0.0.0.0:*               LISTEN      16618/sshd: blackho
tcp6       0      0 ::1:2222                :::*                    LISTEN      16618/sshd: blackho

Como no hemos indicado nada antes de 2222: sólo va a hacer bind en local, pero como comentaba en otro post, si quieres que sea accesible por todas las ip bastaría poner un 0.0.0.0: delante del 2222:

Si hacemos un ssh (en este caso porque estamos mapeando el puerto 22) en local a la maquina que si es accesible desde internet en el puerto 2222, vamos a conectarnos a la maquina inaccesible desde internet.

Mis agradecimientos a marc0s.…

mas batallitas y los túneles ssh como protagonistas

Pues por fin me he ido un par de días a la playa, olas, aire marino, arena, agua salada, guiris y… ¡antenas de guifi.net!

La cuestión es que siempre que estoy dentro de guifi.net acceder a servicios como irc o ssh es un verdadero martirio y pueden sacar de quicio a mas de uno. Así que hoy voy a contar la solución chapuzera que he hecho para poder usar un sistema de mensajería como podría ser irc por irssi.

Podría usar clientes como xchat o estos que permiten la configuración del proxy, pero algunas veces no sé por qué historias no llegan a conectarse, además de que soy bastante tostorrona y me empeño en usar las cosas que realmente me gustan :D así que IRSSI!

El manual de hoy tiene un poco de trampa, ya que para hacer esto es necesario tener en algún punto de la red de guifi.net una maquina con acceso ssh. Pongamos el caso de una friki que se va de fin de semana en casa de los padres y los ha enredado para tener una antena de guifi.net en casa (caso nada extraño en esta red).
La otra es que la otra máquina tiene que tener salida a internet (caso tampoco extraño ya que si eres un friki que estás haciendo esto es posible que en casa tengas un supernodo con un servidor proxy para ofrecer el ancho de banda que no usas a los usuarios de la red).…

login ssh por shared key + rsync con puerto ssh !=22

Algunas veces tenemos la necesidad de automatizar procesos y estos requieren muchas veces nuestra intervención, algunos de los programas que ejecutamos tienen la opción de poner el password, pero esto queda un poco feo, ya que si en la maquina en el momento de la ejecución del script hace un `ps aux` es posible que pueda ver el password del usuario que estamos usando para hacer la tarea programada, así que para ello vamos a usar un método de autentificación mediante clave compartida.

Vamos a tener el caso donde el usuario root quiere pasar unos ficheros por rsync a otro servidor y no queremos que nos pida el password, para hacerlo un poco mas complicado, el puerto por defecto de ssh de la maquina remota no va a ser el puerto por defecto, sino el 23 (para decir un numero cualquiera).…

Sincronización de directorios remotos y locales con Unison

Venga, otro post de estos técnicos que tanto os gustan… muchos de vosotros conoceréis rsync, pero tiene la pega que es unidireccional, pero por suerte existe el unison, tiene una versión de consola y una versión gtk y es multiplataforma.

Ahora mismo nos vamos a centrar en el entorno de consola (¡yo administro servidores sin ratón!), además de que es super simple y sólo cabe comentar un par de cosas.…

cssh

Administradores de sistemas, que estáis hasta los * de entrar cada día a tropocientas maquinas y ejecutar los mismos comandos!, llega cssh, haz lo que debas una sola vez!

cssh es un script escrito en perl que te permite hacer login en varias maquinas a la vez y ejecutar el mismo comando en todas ellas.

el programa está aún en fase muy inicial, pero ya es usable.

Pues empezamos. Hay la forma larga (que no me ha funcionado) y la corta (que si).

Empezamos por la corta para quien quiera tener el cssh funcionando en menos de un periquete.

Vamos a la página de nuestros queridos repositorios debian (ahora mismo me encuentro instalando el cssh desde una mumuntu 9.04, disculpad, una ubuntu 9.04 (en qué estaría pensando!).

http://packages.debian.org/sid/clusterssh

# dpkg -i clusterssh_3.27-1_all.deb
# apt-get -f install

y ya lo tenemos funcionando.

Si no te funciona dejo la forma larga, pero yo desistí.

# cd /home/laura/bin
# wget -c http://cssh.sourceforge.net/files/cssh_alpha/0.03/cssh.tar.bz2
o
# wget -c http://cssh.sourceforge.net/files/cssh_beta/0.03/cssh_beta-0.03.2.2.tar.bz2

Los descomprimimos y tratamos de ejecutar el install.sh

Lo mas probable es que si no trabajamos en perl no tengamos la mayoria de modulos necesarios de perl y será necesario instalarlos.
Primero probaremos que los tenemos instalados ejecutando:

# perl -MNet::SSH::Perl -e ‘print “okn”‘

Si sale un ok quiere decir que los tenemos instalados, en caso contrario deberemos ejecutar

# perl -MCPAN -e ‘install Net::SSH::Perl’

Y nos empezará a preguntar un montón de cosas (la instalación dura varios minutos y requiere nuestra atención).

http://cssh.sourceforge.net/docs/cssh_man.html