API on FortiNet: FortiOS REST APIを使ってみる

* There is a new entry for FortiOS Rest API at ‘Fortigate RestAPI Config Backup – FortiOS 6.0.4’. Fortinet calls session based cookie –which is explained here, as legacy. If you are using FortiOS 5.6.1 or newer you can use API Token authentication as shown in the link above.

* このポストではセッションベースでの認証を紹介しています。ただし、この方法は将来的には廃止される予定なので、トークンベースでの認証をおすすめします。‘Fortigate RestAPI Config Backup – FortiOS 6.0.4’

このエントリーはFortiOSでのREST APIの概要と、REST APIを使ってFortigateから情報を取得するところまで。

API概要


FortiOSのREST APIは以下のように大きく二部構成になっている

CMDB API

  • Retrieve object meta data (default, schema)
  • Retrieve object/table (with filter, format, start, count, other flags)
  • Create object
  • Modify object l Delete object
  • Clone object
  • Move object

Monitor API

  • Retrieve/Reset endpoint stats (with filter, start, count)
  • Perform endpoint operations
  • Upload/Download file
  • Restore/Backup config
  • Upgrade/Downgrade firmware
  • Restart/Shutdown FGT

REST API関連のドキュメントは一般公開サイトでは見当たらず(特にFortiOS)、パートナーポータルにもない。

CiscoのASAやJuniperのSRXと違って、CLIで設定している人が少ないくAPIを使う人が少ない(=需要が少ない)という発想から基本非公開にしているのか、それとも単純に何もしていないのかは疑問。FWの中ではかなりメジャーな部類に入ると思うのだが。

ラボ環境を作る


AWSでFortigateVMを立ち上げる。

    1. FWを立ち上げる
    2. sshでFWにアクセス
    3. 起動時の設定で既にREST APIは使えるが、API用のユーザーを作成

APIを使ってみる


FortiOSのAPI認証は二種類あり、ユーザー名とパスワードを使用して認証用Cookieを取得する方法と、事前にTOKENを発行しておく二種類の方法がある。今回は前者を使う。

これを実行するとこんな感じで情報が返ってくる