Particularmente en mi trajin diario administro muchos servidores UNIX/Linux en forma remota mediante el protocolo de acceso encriptado SSH. Buena cantidad de estos equipos se encuentran accesibles desde Internet y por lo tanto quedan expuestos a posibles atacantes. Es una tarea basica de un SysAdmin reducir las posibilidades de exposición de los servicios hacia Internet a dichos atacantes. Para ello existen, en el caso de SSH desde tips y herramientas para reforzar la configuración del mismo, y principalmente el mismo manual de ssh. Tal es así que en esas busquedas locas que realizo por la net me tope con Pam_Captcha. PAM Captcha realiza una implementacion de preautenticacion mediante ingreso de código captcha en interfaz asccii para prevalidar el acceso e intentar reducir los ataques de fuerza bruta que se puedan efectuar contra nuestro servidor SSH.
Que es PAM? : Son las siglas de Pluggable Authentication Modules, o traduciendo seria Módulos de Autentificacion Conectables, que en un sistema GNU/Linux actual es el núcleo de las autenticaciones de los usuarios que permiten acceder a las aplicaciones o servicios del sistema. Debido a su característica modular es posible entre otras posibilidades la combinación de mecanismos de autentificacion del usuario, que es lo que vamos a hacer en el presente articulo.
Implementando PAM_Captcha Para poner a funcionar empezamos por descargarlo de:
http://www.semicomplete.com/projects/pam_captcha/
$ wget -c http://semicomplete.googlecode.com/files/pam_captcha-1.5.tar.gz
$ tar xvfz pam_captcha-1.5.tar.gz
$ cd pam_captcha-1.5
$ sudo make
Si tuviste algún problema al compilar se deben instalar las siguientes dependencias, Figlet y los headers del paquete de las librerias de PAM. En mi caso particular (uso Debian Squeeze) instale los módulos libpam0g-dev y figlet, dependencias para que se compile correctamente el modulo.
$ sudo apt-get install libpam0g-dev figlet
Una vez ejecutado el:
$ sudo make
dentro del directorio que descomprimimos, y si vemos que no se genero ningún error, ya deberíamos tener disponible el archivo libpam_captcha.so en el directorio. Cambiamos los permisos del archivo a
$ sudo chmod 644 libpam_captcha.so
y lo copiamos al directorio donde se localicen los modulos de PAM, en mi caso:
$ sudo cp libpam_captcha.so /lib/security
A continuación modificamos el archivo de configuración de PAM para Ssh en /etc/pam.d/sshd, añadiendo la siguiente linea:
auth requisite pam_captcha.so math randomstring
Los parámetros finales son opciones del modulo Pam, donde math muestra como captcha un calculo aritmético simple, randomstring una cadena aleatoria de caracteres y números, y dda es una opción que solo existe a niveles de diversión
. Luego hay que modificar algunos parámetros de configuración del demonio SSH, para ellos cambiamos el siguiente archivo:
/etc/ssh/sshd_config
añadiendo o modificando las lineas a los siguientes valores:
PasswordAuthentication no
ChallengeResponseAuthentication yes
Luego de esto reiniciamos el servidor ssh
$ sudo /etc/init.d/ssh restart
Y listo !
. Espero les sirva. Saludos a todos. Dejo un screencast con un paso a paso de como se vería la implementacion y el funcionamiento de Pam_Capchat:
Enlace directo a vimeo: http://vimeo.com/15587452