今回はPowerShellでFortigateの情報を取得してみました。
1. Fotrtigateとは?
FortiGateは、米国フォーティネット社(Fortinet,Inc.)が生産している世界シェアNo.1のUTMブランドです。
日本でもUTM市場でナンバー1のシェアを誇っていて、利用している企業もかなり多いと思います。
2. Fortigate REST APIとは?
通常、Fortigateに登録されている情報を取得するには、Webコンソールにログオンしてから、各項目の情報を取得する必要があります。
ただし、その場合はスクリプトなどでの自動操作やチェックなどを実施するには不向きです。
FortigateにはREST APIの機能を標準で備えており、APIを利用することでスクリプトからの操作を行うことができます。
今回はPowerShellでFortigateの情報を取得してみました。
3. 準備:Powershell FGTモジュールのインストール
PowerShellには標準でREST APIを操作するコマンドの「Invoke-RestMethod
」などもあり、簡単にRESTでのやり取りを行うことができます。
ただし、FortigateのREST API用として、さらに簡単に操作することができる「PowerFGT」というモジュールがありますので、ありがたくそれを利用させて頂きます。
https://github.com/FortiPower/PowerFGT
Powershellコンソールを起動してインストールしておきます。
ちなみに、管理者としてPowershellコンソールの起動が必要です。
PS C:\WINDOWS\system32> Install-Module PowerFGT 信頼されていないリポジトリ 信頼されていないリポジトリからモジュールをインストールしようとしています。このリポジトリを信頼する場合は、Set-PSReposit ory コマンドレットを実行して、リポジトリの InstallationPolicy の値を変更してください。'PSGallery' からモジュールをインストールしますか? [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "N"): A
4. PowerShellスクリプト(サンプル)
それでは、実際のPowershellスクリプトになります。
今回はFortigate内のローカルユーザの一覧を取得して、さらに有効なユーザを取得してみました。
今回はadminを利用していますが、パラメータは適宜変更してください。
Import-Module PowerFGT $FORTIGATE = "192.168.1.1" $USER = "admin" $PASSWORD = ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force Connect-FGT $FORTIGATE -SkipCettificateCheck -Username $USER -Password $PASSWORD $FGTUsers = Get-FGTUserLocal foreach ($FGTUser in $FGTUsers) { # 無効なユーザをスキップ if($FGTUser.status -eq 'disable'){ continue } Write-Host ("Username:"+$FGTUser.name) }
これでFortigateに登録されているローカルユーザの一覧を取得することができました。
他にも色々と利用することができますのでPowerFGTサイトやFortigate公式サイトを参照してみるといいかもしれません。
PowerShellの学習におすすめの書籍
PowerShellクックブック [オライリー]
私も実際に持っていますが、間違いなくこの本はオススメできます。オライリーシリーズなので定評があるというだけでなく,実際に良書だと思います。
オライリー社の書籍というと初心者にはとっつきにくイメージがありますが、この書籍に掲載されている例は基本的なものが多く,入門者が使い方を覚えるためには丁度よいレベルの本だと感じます。
今回は以上となります。
コメント