lunes, 9 de noviembre de 2009

Ubuntu + Putty ssh con llaves!!!

Buenas tardes, esta vez vamos a hacer unas cosillas que por lo general deberia hacer un administrador de sistemas que tiene a su cargo varios equipos corriendo Linux/Unix.

En mi caso tengo varios servicios corriendo sobre LInux y otros sobre Unix, hablo de Unix por que FreeBSD es un Unix no Linux.

Bien, mi estacion de trabajo se basa en Ubuntu 9.04, y de ahi adminstro todos mis equipos, soy fan de putty, ssh es una bendicion del senor para nosotros los administradores de equipo Linux/Unix.

Por seguridad, es preferible accesar a nuestros servidores atraves de un canal seguro como ssh, no instalar nada referente a Xorg y por ultimo nunca accesar con ssh atraves de username + password.

Por que no falta el chistosito que va a querer tratar de entrar a nuestros equipos usando fuerza bruta, un password mezclado y con mas de 8 caracteres es bueno, pero para que permitir esto, nomas gasta nuestro preciado cpu.

Por ello el metodo de clave publica+clave privada es una gran solucion.

Vamos a empezar, ya tenemos instalado putty + putty-tools. En windows el puttygen es un cliente grafico, aqui en nuestros mundo Linux/Unix creo que es solo via consola, no problema estamos acostumbrados a estos pequenos inconvenientes, aunque tiene su gran ventaja...

Supongamos que en ubuntu mi usuario es "morrito", entonces abrimos una terminal y por default nos va a poner en el home folder del usuario "morrito".

Generamos un folder llamado keys:

mkdir keys

Accesamos ese folder:

cd keys

Lo que sigue es la generacion de las llaves, para ellos vamos a usar el comando puttygen con los siguientes paramatros:

-t rsa
-b 1024
-O private
-o nombrearchivo

Asi que lo hacemos:

morrito@ubuntu:~/keys$ puttygen -t rsa -b 1024 -O private -o ubuntu
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++
+++++
Enter passphrase to save key:
Re-enter passphrase to verify:

Pueden o no darle una password, yo en mi caso no lo deseo. Solo le doy enter+enter y listo, tengo un archivo llamado ubuntu con mi llave publica y privada:

Al abrirlo tenemos algo asi:

cat ubuntu

PuTTY-User-Key-File-2: ssh-rsa
Encryption: none
Comment: rsa-key-20091109
Public-Lines: 4
AAAAB3NzaC1yc2EAAAABJQAAAIBzhdRANoU6VDfC+HxZaLnpI8FsJNKpZbENyh2e
3ar5m+WL+8XW2vFG3SADN0EJFBcuJmF3pz6cSyb18k0AeX5Z1yfOwA2tZhlYQIet
qF/cP2JMgYIOGZWZF24cXC5BvZ0xHIjPaI7SIMxpa14HRy0T32rrL3Gwl81PrqMa
e06cUw==
Private-Lines: 8
AAAAgAY+ldn1G/VQqRF1NydtcdVAM/gB/YydtosfrpL3OaygpJ/Ia48SwO8S3yLE
t2hGRnEygc8dzAhyw9Xxa/IwFKrVzR3jTP1RQ0mnNJJJNt5QyMEk85RkI8fbTgLn
zz4y3PPvaKvLtDHtXdvXlXvLxqojd8d12DnzZkSvTR9bOSX9AAAAQQDfhwr3zpGE
2ty7HmuJoKhTZO6zwnhtZn0e+9lHGYYZ6Rf3imsYr7KaU9Z0Z35UdDm8YEgtAFgo
SKBXGQ1Un/cPAAAAQQCEThrbLs2B4ajwHK/USCMVe2iiJVxvmSqfTw1Umrz2vHhX
7foXWYPfMC/iqRa43Y6S4rj+UShYoLisd0kPDWZ9AAAAQEkmMSahz7hVq8qPrvJP
Xe0hDSFK79Ll+gMy3Hnao1ls7/7SSq8qF3m5kYyHnpaRZAhCx7/zuqk5OuYO5h0i
f2Q=

Aqui tenemos dos secciones, la seccion publica y privada, vamos separando las secciones, empezamos por seccion publica:

Public-Lines: 4
AAAAB3NzaC1yc2EAAAABJQAAAIBzhdRANoU6VDfC+HxZaLnpI8FsJNKpZbENyh2e
3ar5m+WL+8XW2vFG3SADN0EJFBcuJmF3pz6cSyb18k0AeX5Z1yfOwA2tZhlYQIet
qF/cP2JMgYIOGZWZF24cXC5BvZ0xHIjPaI7SIMxpa14HRy0T32rrL3Gwl81PrqMa
e06cUw==

Ahora la seccion privada:

Private-Lines: 8
AAAAgAY+ldn1G/VQqRF1NydtcdVAM/gB/YydtosfrpL3OaygpJ/Ia48SwO8S3yLE
t2hGRnEygc8dzAhyw9Xxa/IwFKrVzR3jTP1RQ0mnNJJJNt5QyMEk85RkI8fbTgLn
zz4y3PPvaKvLtDHtXdvXlXvLxqojd8d12DnzZkSvTR9bOSX9AAAAQQDfhwr3zpGE
2ty7HmuJoKhTZO6zwnhtZn0e+9lHGYYZ6Rf3imsYr7KaU9Z0Z35UdDm8YEgtAFgo
SKBXGQ1Un/cPAAAAQQCEThrbLs2B4ajwHK/USCMVe2iiJVxvmSqfTw1Umrz2vHhX
7foXWYPfMC/iqRa43Y6S4rj+UShYoLisd0kPDWZ9AAAAQEkmMSahz7hVq8qPrvJP
Xe0hDSFK79Ll+gMy3Hnao1ls7/7SSq8qF3m5kYyHnpaRZAhCx7/zuqk5OuYO5h0i
f2Q=

A nuestros servidores remotos, vamos a darle la seccion publica y nos vamos a firmar con la seccion privada.

Actualmente accesamos via ssh atraves de usuario+password, lo tenemos que hacer para poder llevar a cabo esto.

Accesamos a nuestro servidor corriendo centos 5.4, lo hacemos con root, ya dentro de la consola, nos vamos a el foder de ssh:

cd .ssh

Ahi dentro acreamos un archivo de nombre "authorized_keys":

touch authorized_keys

lo abrimos y estar limpio, ahi dentro pegamos la seccion publica de nuestra nueva llave y la dejamos toda en una sola linea:

AAAAB3NzaC1yc2EAAAABJQAAAIBzhdRANoU6VDfC+HxZaLnpI8FsJNKpZbENyh2e
3ar5m+WL+8XW2vFG3SADN0EJFBcuJmF3pz6cSyb18k0AeX5Z1yfOwA2tZhlYQIet
qF/cP2JMgYIOGZWZF24cXC5BvZ0xHIjPaI7SIMxpa14HRy0T32rrL3Gwl81PrqMa
e06cUw==

Recordar, debe quedar todo en una sola linea, al inicio de la linea deben agregar este parametro:

ssh-rsa

Entonces quedaria asi:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIBzhdRANoU6VDfC+HxZaLnpI8FsJNKpZbENyh2e
3ar5m+WL+8XW2vFG3SADN0EJFBcuJmF3pz6cSyb18k0AeX5Z1yfOwA2tZhlYQIet
qF/cP2JMgYIOGZWZF24cXC5BvZ0xHIjPaI7SIMxpa14HRy0T32rrL3Gwl81PrqMa
e06cUw==

No importa que aqui no se observe, pero en su archivo debe todo quedar en una sola linea, y debe iniciar con el parametro "ssh-rsa", seguido de un espacio y enseguida toda su firma.

Salvamos.

Lo que sigue es abrir el putty, configurar la cuenta para su cliente, ahora lo que cambia es como autentificarse, aqui se van a la seccion: Connection->SSH->Auth.

Ahi viene un campo donde le vamos a dar la clave privada de nosotros, recuerda el archivo de nombre "ubuntu"?

Bueno pues ese archivo lo guardamos en /home/morrito/keys/, se lo damos a putty.
Nos vamos a la seccion: Connection->Data y ahi le ponemos el nombre del usuario del servidor remoto con el cual nos deseamos autentificar, en nuestro caso es "root".

Salvamos y ahora si, cuando nos logiemos no nos debe pedir ya mas el usuario o password, se tiene que ir derechito.

Esta es la forma mas segura de accesar via ssh a un servidor.

Lo mismo hacemos con FreeBSD, esto me ha funcionado con Gentoo, FreeBSD, Centos, tanto desde Windows como Linux.

Saludos!!!

No hay comentarios: