martes, 19 de enero de 2016

Autenticacion de usuarios mediante llaves públicas y privadas.


SSH y autentificación mediante clave pública/privada
Para dar un poco más de seguridad y comodidad al acceso por SSH a nuestros servidores, hemos decidido utilizar autentificación mediante clave pública/privada junto a SSH.
El esquema es el siguiente: un servidor SSH posee una lista de claves públicas cada una asociada a un usuario. Cuando uno de dichos usuarios trata de conectarse al servidor SSH, el servidor comprueba que efectivamente el cliente es quién dice ser mediante un algoritmo de clave privada/pública, de manera que solo el cliente legítimo que posea la correspondiente clave privada podrá autentificarse.
Así, para ponerlo en marcha es necesario generar un par de claves (privada y pública) en el cliente, y enviar la clave pública al servidor.
Por otro lado el cliente almacena la clave pública del servidor, de manera que cuando el cliente se conecta al servidor puede comprobar que el servidor es efectivamente quién dice ser.
A ello:
La generación de la pareja de claves en el cliente se realiza mediante el comando ssh-keygen:
$ ssh-keygen  -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/NaSz/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/NaSz/.ssh/id_rsa.
Your public key has been saved in /home/NaSz/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx jcarlos@c-one
Es posible proteger el uso de las llaves mediante una clave, de manera
que cuando se vayan a usar ésta sea solicitada. Si se deja en blanco no
se pide contraseña.

Las claves se almacenan por defecto en ~/.ssh/, quedando el directorio así:

$ ls -l
total 12
-rw-------  1 jcarlos jcarlos  883 2005-08-13 14:16 id_rsa
-rw-r--r--  1 jcarlos jcarlos  223 2005-08-13 14:16 id_rsa.pub
-rw-r--r--  1 jcarlos jcarlos 1344 2005-08-04 02:14 known_hosts

id_rsa es la clave privada,  
id_rsa.pub es la clave pública, y 
known_hosts son las claves públicas de los servidores conocidos.

Ahora se debe copiar la clave pública al servidor, al fichero ~/.ssh/authorized_keys.
Para ello se utiliza el comando ssh-copy-id

$ssh-copy-id -i ~/.ssh/id_rsa.pub jcarlos@c-one
$ssh-copy-id -i ~/.ssh/id_rsa.pub jcarlos@c-one

ssh-copy-id es un script que se conecta al servidor ssh indicado mediante ssh,
hace login y copia el archivo indicado por la opción -i en el fichero ~/.ssh/authorized_keys,
además de tocar los permisos para dar seguridad (como impedir el acceso a miembros del grupo).

La primera vez que tratemos de conectar al servidor mediante ssh se nos
pedira que confirmemos la clave pública del mismo (como hemos dicho, el
cliente guarda también una copia de la clave pública del servidor para
comprobar que efectivamente es el servidor que el cliente busca),
de manera que ésta queda guardada, normalmente, en ~/.ssh/known_hosts

Midiendo la performance de Apache Server.



Compartiremos con Uds. el uso de AB (Apache Benchmarking Tool), una aplicación que nos ayudará a determinar el rendimiento de nuestros servidores Apache.
AB es una herramienta de evaluación comparativa de Apache. Está diseñada para dar una impresión de cómo una instalación de Apache funciona. Este pequeño tutorial en especial muestra cómo la instalación es capaz de servir varias peticiones por segundo.Para ello , procederemos a instalar AB en CentOS 6.5.
Pasos :
·         Instalamos Apache : yum install httpd-* apr-util
·         Ejecutamos AB con el comando : ab -n 100 -c 10 http://localhost/ 
(Por fines educativos , solo hacemos las pruebas a nuestro propio servidor)
Dónde: 
-n = requests . Numero de requests a realizar.

-c = concurrency . Numero de los múltiples requests que se lanzarán.

 Entre los parámetros de respuesta podemos ver algunos que son muy interesantes como por ejemplo:
-       La cantidad de pedidos que el servidor pudo servir por segundo (Requests per second).
-        La tasa de transferencia (transfer rate).
-       El tiempo que llevo hacer el test (Time Taken for test).
-       Detalle de porcentaje de conexiones según el tiempo que tomaron.
Hay muchas más opciones interesantes  en AB como la opción de exportar (-e) a un csv o txt los resultados de las pruebas, etc.-: ab -n 100 -c 10 -e  pruebas_httpd.csv  http://localhost/
Podemos destacar que el mismo sirve para medir de forma completa la performance de nuestro servidor Apache , y definir en base a ello los cambios o implementaciones que precisemos hacer , de acuerdo a la carga que esperamos para el sitio publicado.