EXPERTOS EN PROTEGER APLICACIONES O SERVICIOS

 In general, técnica

Si eres Sysadmin, SecAdmin, Security Engineer o, si  simplemente quieres aprender,  estos son los temas que trataré en esta publicación:

En mi día a día como Security Enginner cuando reviso firewalls fortigate que estan configurados para proteger servicios, me encuentro multitud de situaciones, tanto en el ámbito de la ciberseguridad como redes o comunicaciones, y en la mayoría de ellas coinciden en algo.

Suele ser que las organizaciones, cuando ya han pasado el primer escalón, me refiero a darse cuenta que necesitan incluir o añadir seguridad en sus procesos, comunicaciones y servicios, y que una vez esto está implantado, casi nunca se está utilizando debidamente o apenas se está utilizando por desconocimiento.

¿Porqué ocurre esto?

Esto ocurre porque vivimos en un sector que cambia con rapidez y debemos ir adaptando nuestros procesos, servicios y tecnologías constantemente, lo que requiere de que nos rodeemos de gente cualificada para ello.

Afortunadamente para las empresas, no siempre se necesita contratar internamente estos recursos con el 100% de dedicación, ya que posiblemente no sea necesario, pero sí deben rodearse externamente de consultores y perfiles que dominen la materia para que les puedan acompañar en el proceso cambiante del mundo IT.

En este post te contaré cómo puedes sacar partido a ese FortiGate de FORTINET que tienes instalado para proteger el perímetro, y es que este fabricante está constantemente sacando nuevas o mejorando las funcionabilidades existentes.

Para ello primero deberás aprender un poquito de Python, tranquilo es muy guiado y te doy todo lo que necesitas para ponerlo en marcha.

Primero te cuento un resumen de lo que vamos hacer:

Crear una api en Python para las pruebas
Crear reglas en Firewall FortiGate

Crear reglas en WAF FortiGate

Aprenderás qué FortiGate tiene WAF.
Aprenderás a habilitar el modo proxy y activar firmas.
Aprenderás a aplicar dichas firmas en una política.
Aprenderás a bloquear intrusos de orígenes maliciosos.

Secron Ciberseguridad

Ahora vamos a preparar un laboratorio, en este ejemplo está montado he instalado sobre un Linux, concretamente sobre un Ubuntu server en mi Orange PI

Entorno  del laboratorio de pruebas 

Tanto el servidor Ubuntu como el Fortigate deben estar en la misma red o verse por alguna de sus interfaces, o esto no tendría sentido.

También lo puede reproducir con Windows, gracias a Python puedes hacerlo, en ese caso tendrás que bajarte el instalador de Python y ver como instalar las dependencias que te menciono más abajo.

1 – Una Aplicación Web programada con Python para ver en consola las peticiones recibidas.

1 – Firewall FortiGate versión 6.2.9.

He estimado 5 min. de lectura y unos cuantos más, si queréis reproducirlo.

  • ¿Qué aprenderás?
  • ¿Qué FortiGate tiene WAF?
  • Habilitar el modo y activar firmas.
  • Aplicar dichas firmas en una política.
  • Bloquear intrusos de orígenes maliciosos.

Preparando nuestro server web y nuestra API para la prueba de concepto.

Recuerda necesitamos un Ubuntu server, instalar Python y un FortiGate.

Instrucciones de instalación en un Ubuntu server, funciona tanto con Python como Python3

El primer paso es instalar Python y los módulos que necesitamos:

apt install python python-pip
pip install flask request
#Con Python3 
apt install python3 python3-pip
pip3 install flask request

Primero crearemos una aplicación en Python que simplemente nos mostrará las peticiones recibidas que han atravesado el firewall, guardaremos este código como api.py

import flask
from flask import request

app = flask.Flask(__name__)
app.config["DEBUG"] = True
@app.route('/', methods=['POST'])
def result(): 
                  data = request.data 
                  #mostramos el data recibido
                  print(data) 
                  return 'Received !' # response to your request.
'''EJECUCION DE LA APP'''
if __name__ == '__main__': 
              app.run(host="0.0.0.0", port=8080, debug=False)

app.run()

Para ejecutarlo teclearemos: python api.py .

En el caso de Python3, tecleamos python3 api.py .

Pasos  a seguir en el FortiGate:

Necesitaremos 2 políticas, la primera será la encargada de eliminarnos el tráfico con posibles orígenes maliciosos y la segunda política mejora la seguridad, activando WAF en la publicación de servicios, editaremos el perfil por defecto y activaremos reglas de detección que vienen desactivadas para sacarle el máximo provecho.

Habilitando el modo WAF

Clonamos el perfil y modificaremos una para aumentar el nivel de seguridad o detección

Habilitando el bloqueo de XSS y otros

Habilitando modo Proxy en la política desde la versión 6 es posible.

Aprovechando las listas de reputación de IP de Fortiguard añadiremos: 

Y en la política quedaría algo así:

Sí es cierto que podríamos cambiar el perfil de seguridad y ajustarlo a un servidor web Linux, por ejemplo Nginx o Apache.

La diferencia está en que en este paso el servidor web es la misma aplicación en Python, por lo tanto habría que buscar vulnerabilidades, y su firma correspondiente a la aplicación que estamos publicando.

En nuestro caso, para la prueba de concepto, sólo se pretende mostrar el WAF.

En resumen tendremos algo así:

Probando un ataque sencillo de XSS con Javascript con todos los perfiles menos el WAF:

Se aprecia claramente como la API de laboratorio creada recibe el ataque, ya que el firewall no lo filtra.

Pero si activamos el perfil que hemos creado y tenemos en cuenta que en el modo proxy debemos decirle el tipo de petición o puerto que el proxy debe gestionar ( all HTTP)  o 8080 HTTP.

dominio.local:8080/?query=<script>alert("hackeado")</script>

Observamos que al atacante le bloquea la petición. Esta petición no llegará a nuestra API.

Porque ha sido bloqueada por el módulo de WAF.

Si buscamos información en los logs :

Recordar que la firmas son limitadas en el módulo WAF que viene con FortiGate, pero si las activamos y personalizamos nuestras REGEX, podemos sacarle un buen provecho.

La mejor forma de proteger algo es conocer cómo funciona/cómo se explota para ponerlo a prueba, las funcionalidades on/off y GUI están muy bien pero debemos profundizar en lo que hacemos para asegurarnos que realmente funciona.

Una POC siempre viene bien para comprobar realmente que las cosas funcionan.

Espero que os haya gustado, si alguna vez necesitáis ayuda o tenéis dudas, desde Secron puedo ayudarte.

Si te interesa el contenido puedes acceder al blog y suscribirte, te avisaré con las nuevas publicaciones.

Recent Posts

Leave a Comment