Entradas etiquetadas con SSH
Autenticación de SSH con clave pública usando PuTTYgen
23 sep
Hola!
Muy buenas a todos/as!
Cuando configuramos un servidor SSH en nuestro servidor es bueno configurar algunas cosas para hacerlo un poco mas seguro y sencillo de administrar.
Una de las cosas que podemos configurar es acceder a los servidores con clave pública. Para que sea mas sencillo de crear y administrar crearemos las claves con PuTTYgen y lo configuraremos en el servidor para poder acceder.
Primero necesitaremos Putty
Una vez instalado abrimos PuTTYgen y le damos a Generar una nueva clave. Empezará a crear una clave mientras movemos el ratón. Ponemos un comentario y ponemos la clave a la clave pública con la que nos autenticaremos.
Guardamos la clave pública y la clave privada. Copiamos la clave pública al servidor.
En el servidor configuramos la clave para poder acceder
Creamos la carpeta de SSH
usuario@servidor: mkdir ~/.ssh
Asignamos los permisos a la carpeta
usuario@servidor: chmod 700 ~/.ssh
Ahora convertimos la clave que hemos creado con PuTTYgen a formato de clave SSH
usuario@servidor: ssh-keygen -if clave_publica > clave_publica_ssh
Ahora ya tenemos la clave en formato ssh, así que la copiaremos a las claves autorizadas que pueden acceder
usuario@servidor: cat clave_publica_ssh >> ~/.ssh/authorized_keys
Asignamos los permisos al fichero de claves autorizadas
usuario@servidor: chmod 600 ~/.ssh/authorized_keys
Ahora configuramos ssh para que sólo se pueda entrar mediante clave pública
usuario@servidor: nano /etc/ssh/sshd_config
Ahroa buscamos y sustituímos estos valores por los que dejo aquí
PermitRootLogin no PasswordAuthentication no UsePAM no
Dejamos los valores en no y reiniciamos el servicio.
En Putty en el apartado de Data configuramos la clave privada poniendo el archivo .ppk que guardamos antes.
Y hasta aquí ya está todo.
Un saludo
msntunnel: Tuneliza conexiones TCP usando MSN Messenger
10 jun
Como hace bastante tiempo que no publico nada tengo un montoooooon de basura arrinconada en los portátiles; y por esto, he abierto un proyecto en googlecode (rusoblancogarbage) para ir subiendo todos los scripts y códigos curiosos que tengo por aquí.
Para empezar he subido msntunnel.py, este pequeño script permite conectarte a un puerto de un host remoto usando como pasarela una conexion de MSN Messenger.
Teoría
La teoría es bien simple, en la máquina origen de la conexión se pone un puerto a la escucha que es leido por msntunnel.py, cada uno de los paquetes que se leen en ese socket se codifica en base64 y se mandan usando una cuenta de messenger como un mensaje de chat a una segunda cuenta de messenger manejada por otro proceso msntunnel.py en el host remoto, el mensaje se decodifica y se envía al host (normalmente localhost) y puerto de destino.
Ejemplo

No os distraigais con el pedazo de esquema que he hecho con el Dia; os pongo un ejemplo.
Digamos que tenemos dos cuentas de MSN Messenger (host_a@hotmail.com y host_b@hotmail.com) previamente asociadas entre si como contactos.
Si quisiéramos conectarnos al puerto 22 de HOST B desde HOST A haríamos lo siguiente:
En HOST A:
root@host_a# python msntunnel.py -u host_a@hotmail.com -p passhosta -r host_b@hotmail.com -L 2222
En HOST B:
root@host_b# python msntunnel.py -u host_b@hotmail.com -p passhostb -r host_a@hotmail.com -R 127.0.0.1 -P 22
Una vez ejecutados estos comandos en sus respectivas máquinas deberíamos tener el puerto 2222 abierto en HOST A que corresponde con el puerto 22 en HOST B.
Ventajas
- La ventaja principal de este tipo de tunneling es que no es necesario conocer la dirección IP de la máquina destino ya que todo el routing de mensajes se hace a través de un servidor externo.
- Otra de las ventajas es que no existe comunicación directa entre las máquinas y por lo tanto es un poquito más dificil de rastrear.
Limitaciones
- En esta versión no se verifica que el tamaño del paquete codificado en base64 sea lo suficientemente pequeño para que el protocolo de messenger lo admita, por lo tanto los paquetes grandes dan un error de envio (más bien creo que no llegan xD). Lo dicho, como ésta versión falla con paquetes grandes, lo mejor es que la probeis con algo como SSH o quizas sea suficiente con bajar el MTU de loopback (no lo he probado).
- Otra limitación es la velocidad que se ve bastante afectada.
- El canal de comunicación es controlado por un tercero (Microsoft) por lo que la modificación/intercepción/almacenamiento de la comunicación es posible para el.
Posibilidades
- No sería demasiado complicado reescribir modificar el código para usar interfaces TUN en vez de sockets y así poder tener más libertad en la conexión.
- Otra mejora interesante sería permitir la comunicación simultanea con más de una cuenta de messenger de la lista de contactos y así tener un auténtico servicio de VPN sin un servidor dedicado (OpenVPN/Hamachi por messenger x”D).
- Incluir otros servicios de mensajería instantanea como jabber, icq, irc…
Descargas
- msntunnel.py
- msnlib: a Python MSN messenger protocol library and client (dependencia)
.png)









