FortiGate

Primeros pasos con Rest API’s de Fortigate

Las API’s ayudan y mucho ha generar automatismos e integrar tecnología Fortinet con el resto de fabricantes, ya que se trata de una funcionalidad estándar en la industria. Desde Fortixpert te animamos a que empieces a practicar con Rest API de Fortigate porque de bien seguro verás beneficios en su uso.

Lo primero que tienes que tener en cuenta es que cualquier petición Rest API tiene que autenticarse como medida de seguridad. Hay dos formas de autenticar estas peticiones Rest API: por sesión o por token.

  • Session-based authentication

Como su nombre indica, la autenticación es válida por inicio de sesión al tratarse de claves temporales. El usuario debe enviar una solicitud de inicio de sesión para obtener una cookie de autenticación y un token CSRF para usar en solicitudes posteriores. Se necesitan estos dos valores:

    • Cookie de autenticación: El API proporciona una cookie de autenticación (APSCOOKIE) después de un correcto inicio de sesión. Todas las solicitudes posteriores deben incluir esta cookie para ser autorizadas por la API. Cualquier solicitud sin la cookie o con una cookie que no coincida, se le negará el acceso a la API (error HTTP 401).
    • CSRF Token: Los Tokens de CSRF son valores alfanuméricos que se transmiten entre el cliente y el servidor para garantizar que el envío del formulario del usuario no se origine a partir de un acceso externo. El token de CSRF está disponible en la cookie ccsrftoken de la sesión, y debe incluirse en el encabezado de solicitud bajo el nombre X-CSRFTOKEN.

Un ejemplo para conseguir ambos valores:

curl -X POST \

  https://XXXXXXXXXXXXXXXX/logincheck \

  -H ‘Content-Type: application/x-www-form-urlencoded’ \

  -d ‘username= XXXXXXXXXX&secretkey=XXXXXXXXXX&ajax=1′

                Una vez que hayas recibido un estado de inicio de sesión exitoso, Fortigate enviará los dos valores en las cookies de sesión:

    • APSCOOKIE_<NUMBER>: Esta cookie te autentica con FortiGate. Debe presentar esta cookie con cada solicitud posterior que realice después de iniciar sesión.
    • Ccsrftoken: Este es el token CSRF. Se debe proporcionar el valor de esta cookie como un encabezado X-CSRFTOKEN.

Un ejemplo de como añadir un objeto tipo dirección ip en Fortigate (utilizando los dos valores anteriores) mediante curl:

curl -X POST \

‘https://XXXXXXXXXXXXXXXX/api/v2/cmdb/firewall/address?vdom=root&access_token=XXXXXXXXXX‘ \  -H ‘Content-Type: application/json’ \  -H ‘X-CSRFTOKEN: XXXXXXXXXX‘ \ -H ‘content-type: multipart/form-data’; \ -F type=ipmask \ -F name=test \ -F subnet=1.1.1.1/32

                                Sustituye por tus valores:

      • https = valor ip address de FG
      • access_token = valor cookie APSCOOKIE
      • X-CSRFTOKEN = valor cookie ccsrftoken
  • Token-based authentication

La autenticación se realiza a través de un único token API estático. A diferencia del sistema anterior, este token es estático y se genera al crear un usuario de tipo “Rest-API”, es decir, un usuario administrador Rest-API tiene asociado un token autogenerado que sirve para autenticar cualquier petición API contra Fortigate.

Tres cosas a tener en cuenta: 1) ten habilitado el acceso HTTPS desde la interface destino; 2) esta disponible a partir de la versión 5.6 y en adelante; 3) solo el usuario super-admin puede crear usuarios de tipo Rest-API.

Para crear este usuario Rest-API, ves via Web-GUI a: System à Administrator à Create New àREST API admin. Una vez creado con autenticación por PKI (opcional), Trusted host (obligatorio) y admin Group (obligatorio), nos aparecerá el token autogenerado por Fortigate.

Mismo ejemplo curl que el anterior pero usando el token generado para el usuario Rest-API:

curl -X POST \

‘https://XXXXXXXXXXXXXXXX/api/v2/cmdb/firewall/address?vdom=root&access_ token=XXXXXXXXXXXXXXXX‘ \ -H ‘Content-Type: application/json’ \ -H ‘content-type: multipart/form-data’; \ -F name=test2 \ -F subnet=1.1.1.1/32

Sustituye por tus valores:

      • https = valor ip address de FG
      • access_token = valor Token del Usuario Rest-API
Tags

Contenidos relacionados

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *