viernes, 17 de enero de 2020

Script Tools para Fortigate 2/3




¡Hola compañeros!

Segunda entrada dedicada a herramientas creadas para firewalls Fortigate.

Esta entrada y la que viene serán cortas, ya que los scripts creados para tal son muy sencillos.

En este caso mostráre un script creado en Expect para realizar consultas por CLI al firewall, con destino de búsqueda el grupo de BLACKLIST creado en el post anterior.

De esta forma podremos consultar si una determinada dirección IP se encuentra como referencia dentro de este grupo o no.


Consultar direcciones IP 


Con la ejecución de este script, no introducimos ningún comando de configuración, simplemente realizamos consultas.

Como el output de este comando en crudo suele ser un tanto "simplón", he tenido que añadir la opción "-c" en el comando grep (grep -c), que de esta forma nos mostrará en cuantas líneas ha realizado match la dirección IP, por la tanto siempre deberá ser únicamente en 1, ya que no puede existir la dirección IP duplicada. En el caso de que no exista la dirección IP, obviamente no será matcheada en ninguna, por lo tanto el output será 0:

Así se muestra el output del comando normalmente:

output_show_fortigate_found
Dirección IP encontrada en el grupo Blacklist

output_show_fortigate_notfound
Dirección IP NO encontrada en el grupo Blacklist


Y así se muestra con la opción "-c" de GREP:

output2_show_fortigate_found
Dirección IP encontrada en el grupo Blacklist = 1

output2_show_fortigate_notfound
Dirección IP NO encontrada en el grupo Blacklist = 0

Código del Script:

#!/usr/bin/expect -f

# Variables
set IP [lindex $argv 0];
set timeout 2;

# Log file
log_user 0
log_file <PATH_SAVE_LOG>

# Execution command to client Fortigate CLI
spawn ssh -o "StrictHostKeyChecking=no" -o "UserKnownHostsFile=~/.ssh/known_hosts" <USER@IP> -p 22
expect "password: "
send "password\r"
expect "#"
send "show firewall addrgrp BLACKLIST | grep -c BL_$IP\r"
expect {
    "0" { puts "\n-- NOT FOUND - La dirección IP $IP NO se encuentra en el grupo BLACKLIST\n" }
    "1" { puts "\n++ FOUND - La dirección IP $IP se encuentra en el grupo BLACKLIST\n" }
}
send "exit\r"
expect "closed"

Como podéis ver, es bastante básico y me baso en el output 0 y 1 para determinar si la dirección IP se encuentra en el grupo indicado.

output_script_found
Output Script dirección IP encontrada
output_script_notfound
Output Script dirección IP NO encontrada

Dejo como siempre mi Github por si alguien lo quiere utilizar, modificar a su gusto, etc. Como ya sabéis, no es perfecto pero me sirve =P


Si alguno quiere dejar sus comentarios, ideas, opiniones, etc es libre de hacerlo y siempre son bienvenidos.

Gracias por leerme!

Saludos,
rekkatz.

0 comentarios:

Publicar un comentario