針對告警功能常常使用到的就是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通知 已發行個人存取權杖 基本上這邊的設定就告一段落。

接著我們需要一個平台去接收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~~~我是阿俊 謝謝大家觀看