jueves, 13 de octubre de 2016

Cliente Putty: Ejecutar comando remoto con parámetro variable. Ejemplo de banear ip remota.

Estimados amigos de Inseguros !!!

Vamos a comentar un pequeño truco que he necesito aplicar en un cliente para facilitarte la vida, o realmente, para hacérsela más compleja?

La cuestión es una infraestructura interna con varios servers y un firewall perimetral. En este caso un Sonic Wall. Tenemos eventos del IDS, del WAF, de Fail2ban, tenemos eventos por todos lados.

Una de las cosas que me gusta es hacer un BAN de las ip que detecto maliciosas, al menos durante 15 días.

Para ello me gusta tener un equipo linux, suelo usar OSSIM para ejecutar un comando que banea en el firewall. Un script sencillo al que le paso por parámetro la IP, y el se encarga de crear el Object y meterlo en una Address List.

Cada firewall funciona de distinta manera, pero casi siempre suele ser ese el orden, crear un objeto IP y luego asignarlo a un grupo. Una regla de firewall clásica de block tiene como ip origen cualquiera del grupo...De momento nada nuevo cierto?

Los distintos servidores se conectan al SSH de OSSIM, le pasan la IP, y este se conecta al firewall para banear. Me gusta hacerlo así ya que si el fabricante del firewall cambia algún valor o sintaxis... me ahorro cambiarlo en un sitio. Aparte, en ese servidor "de baneos" escribo unos logs y envío unos correos... Lo normal.


Ahora se me presenta un caso, y es que el cliente quiere banear direcciones ip a mano, pero el proceso de entrar al firewall es lento. Hacer Login, no se lo sabe de memoria, navegar... Podría usar el script de OSSIM, pero tendría que hacer login.

Como último reto, el cliente usa WINDOWS, por lo que usa PUTTY para conectarse a los sistemas del pinguino.

Para solventar el problema, he usado un cliente Putty de línea de comandos llamado PLINK.

Ahora creo un script en BATCH para que me pida la IP, con esa IP se conectará a un ssh que previamente tengo guardado en mis sesiones de Putty, y monta el comando. Una vez montado lo ejecuta. La lógica es muy sencilla aunque se que poco elegante:

@echo off
SET /P variable=[introduzca la dirección IP que desea banear]
set PARAMETER=%variable%
echo /var/scripts/ban_sonic_manual.sh %PARAMETER% > commands.txt
plink.exe -load "OSSIM" -l root -pw "tuclave" -m commands.txt

Como verás, existe un pequeño fallo... y es que aparece a fuego la clave. Esto es algo que debemos cuidar y que los auditores de seguridad intentarán explotar en procesos de auditoria. También puedes añadir del commands.txt && ECHO Y si te preocupa que el comando deje huella de la última IP baneada...


Guardamos el fichero como .bat y acceso directo a donde nos plazca...

Para solventar el uso de la clave ssh a fuego, podemos hacer como hacemos con nuestros servers/clientes en linux, generamos la clave privada en el servidor con una frase, la importamos en putty y de esta manera no nos pedirá clave. Otra opción es simplemente borrar el parámetro de contraseña, y que en cada ejecución nos pida la clave del ssh. Cada entorno y nivel de seguridad requerirá una solución u otra

El procedimiento para usar clave privada sin contraseña en putty es tan sencillo como seguir este manual.

También puedes usar este pequeño truco para conectarte a cualquier servidor SSH directamente, y ejecutar un iptables o cualquier comando que necesites, que requiera de un parámetro.

Espero que te sirva de ayuda el truco y las ideas presentadas.

Gracias por leerme !!!