[網管實作]FortiGate結合Line Notify來達成即時告警

針對告警功能常常使用到的就是Email的方式告知管理者,要不然就要用到資通安全威脅偵測管理(SOC)的特殊方式發送通報,當發生資安事件或是特定情況的時候必須要有一個手段通知管理者,許多廠牌的資安軟體或硬體都有一套不錯的通知措施,撇開最基本的EMAIL告警外當然我們也可以利用通訊軟體的方式來實作告警,這邊已LINE為例,LINE是家喻戶曉的通訊軟體其中Line Notify是免費的應用服務可以針對1對1、1對多的方式發送通知訊息。

準備事項:

FortiGate 設備 OS 6.0 UP

Apache nginx and 雲服務 支援PHP框架即可

LINE 帳號


首先我們要去官方註冊一組Line Notify的權杖用於FortiGate的通知授權

在選擇發行權杖的時候預設1對1 也就是 Line Notify 對 自己的LINE 發送,如果要1對多的話可以先在LINE創一個群組再把剛剛加進來的群組Line Notify的通知對象裡。

權杖金鑰

此時你會收到一個LINE通知 已發行個人存取權杖 基本上這邊的設定就告一段落。

申請 Line Notify 服務

接著我們需要一個平台去接收hook去把FortiGate POST 過來的資訊轉送出去基本上簡單架個Apache+PHP 在內網即可,這邊我是架在NAS下面PHP的部分語法如下>

<?php

$body = file_get_contents('php://input');


$headers = array(
    'Content-Type: multipart/form-data',
    'Authorization: Bearer 你的權杖'
);
$message = array(
    'message' => $body
);
$ch = curl_init();
curl_setopt($ch , CURLOPT_URL , "https://notify-api.line.me/api/notify");
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $message);
$result = curl_exec($ch);
curl_close($ch);



?>

弄完後把這個Code存成一份PHP檔,路徑大概像這樣

http://192.168.100.100/LineNotify.php

接著在FortiGate 在安全織網>自動化 新增一個自動化動作

取一個名稱然後在觸發器選事件日誌>Event (依照需求選擇對應事件類別)我這邊選擇管理者登入失敗,動作選擇Webhook

在Webhook 事件下建立相關資訊 協定方式要依照你所設定的環境調整,URL就是上面剛剛的PHP路徑

其中HTTP Body 的內容是有制式規範的如%%log.標題%%,這裡的標題是針對log顯示的標題如下圖,正常LOG收到的報文是長這樣,每個標題屬性對應不同的類別,以我的範例 %%log.msg%% 就是只取log的msg的值。

date=2022-11-27 time=15:09:07 idseq=228033320812806145 itime="2022-11-27 15:09:08" euid=3 epid=3 dsteuid=0 dstepid=3 logver=60 logid=0100046600 type="event" subtype="system" level="notice" msg="stitch:LineNotify is triggered." logdesc="Automation stitch triggered" eventtime=1669532947 stitch="LineNotify" trigger="LineNotify" devid="FGT90D3Z13011400" vd="root" csf="ZengHome" dtime="2022-11-27 15:09:07" itime_t=1669532948 devname="ZengHome"

結果如下

done! 這樣子就能達成事件發生時會使用LINE通知人了XD~~~我是阿俊 謝謝大家觀看

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

AbuseIPDB Contributor Badge
返回頂端