ในยุคที่การโจมตีระบบมักเริ่มจาก “การลองล็อกอิน” อุปกรณ์เครือข่ายอย่าง FortiGate กลายเป็นหนึ่งในเป้าหมายที่ต้องเฝ้าระวังเป็นพิเศษ เพราะเป็นด่านหน้าที่ควบคุมทั้งการเชื่อมต่อ อินเทอร์เน็ต และการเข้าถึงระบบภายใน อาการที่พบได้บ่อย เช่น Admin Login Failed (พยายามเดารหัสผ่าน/ลองบัญชีผู้ดูแล) หรือแม้แต่ Admin Login Successful ที่เกิดขึ้นจาก IP แปลก ๆ หรือในช่วงเวลาที่ไม่ควรมีการเข้าระบบ ซึ่งอาจเป็นสัญญาณเตือนของการเข้าถึงที่ไม่ได้รับอนุญาต
บทความนี้จะอธิบายแนวทางการทำระบบแจ้งเตือนแบบเรียลไทม์ผ่าน Telegram Bot API เพื่อส่งข้อความถึงผู้ดูแลทันทีเมื่อ FortiGate ตรวจพบเหตุการณ์ “ล็อกอินแอดมินสำเร็จ/ล้มเหลว” เพื่อให้ทีมสามารถ “เห็นก่อน แก้ก่อน” ลดโอกาสที่เหตุผิดปกติจะถูกมองข้าม และยกระดับการเฝ้าระวังความปลอดภัยแบบที่ไม่ต้องเฝ้าหน้าจอตลอดเวลา
โดยเราจะแบ่งเป็น 2 ส่วนหลักๆในการทำ solution นี้ คือ
1.) สร้าง Telegram Bot API เพื่อจะใช้ในการ webhook
2. ทำ Automation บน Fortigate เพื่อ webhook ไปยัง Telegram API
1.) สร้าง Telegram Bot API เพื่อจะใช้ในการ webhook
เมื่อไปที่หน้า Telegram แล้ว ให้ Search BotFather แล้วพิมพ์คำสั่ง /newbot จากนั้นให้ทำตาม Step ดังรูป ว่าจะต้องใส่ค่าอะไรบ้าง เราจะใช้ค่า Token ของ Bot ของเรา เพื่อไปใช้ webhook บน Fortigate

2. ทำการสร้างกลุ่มเพื่อดึงบอทของเราเข้ามา

โดย account ของ bot เราจะเป็นชื่อในตาม Step 1 ที่เราได้ตั้งไว้

เมื่อสร้างกลุ่มมาแล้ว ให้พิมพ์ข้อความอะไรก็ได้ในกลุ่ม

จากนั้นให้พิมพ์ใน Browser ดังนี้ https://api.telegram.org/bot<BOT_TOKEN>/getUpdates ซึ่ง BOT_TOKEN คือ Token ที่เราได้จาก Bot ที่เราสร้างใน Step 1 สิ่งที่เราต้องการคือค่า chat_id ของกลุ่ม เพื่อที่จะนำไปบอก fortigate ว่าจะให้ webhook ไปที่ chat_id ของ telegram ไหน

ทีนี้ ลองส่งข้อความเทสว่าค่า chat_id ของเรา ถูกต้องจริงๆ โดย paste URL นี้ ลงบน browser https://api.telegram.org/bot<BOT_TOKEN>/sendMessage?chat_id=-5238201370&text=hello_from_test เราก็จะเห็นว่า มีข้อความถูกส่งมาในกลุ่มที่สร้างไว้ แสดงว่า token และ chat_id ของเรา ถูกต้องแล้วจริงๆ

2. ทำ Automation บน Fortigate เพื่อ webhook ไปยัง Telegram Bot API
Login เข้าหน้า Fortigate ไปที่เมนู Security Fabric เลือก Stitch –> Create new

ตั้งชื่อ Stitch –> Add Trigger –> เลือก Create new

เลือก FortiOS Event Log

ตั้งชื่อ Trigger –> เลือก Event เป็น Admin Login failed / และ Admin Login successful (จะเลือกเพิ่มเติมอีกก็ได้นะครับ) –> OK

คลิก Add Action –> Create

เลือก Action เป็น Webhook

ตั้งชื่อ Webhook
เลือก Protocol เป็น https
ค่า URL จะเป็น https://api.telegram.org/bot<BOT_TOKEN>/sendMessage
method = Post
HTTP Body จะเป็นค่าที่ส่งไปยังกลุ่ม Telegram ของเรา ว่าจะแสดงผลอะไรบ้าง ซึ่งจะแปะ template ไว้ประมาณนี้ครับ (แก้ไข chat_id ให้เป็นของตัวเองด้วยนะครับ)
{
“chat_id”: “-5238201370”,
“text”: “🔔 *FortiGate Admin Login*\n🏷️ device: *%%log.devname%%*\n\n📌 status: *%%log.logdesc%%*\n👤 user: `%%log.user%%`\n🌐 src: `%%log.srcip%%`\n🎯 dst: `%%log.dstip%%`\n🔐 method: `%%log.method%%`\n🕒 time: `%%log.date%% %%log.time%%`”,
“parse_mode”: “Markdown”
}
ตั้งค่า http header Content-Type : application/json
คลิก OK

เมื่อตั้งค่าเสร็จเรียบร้อยแล้ว หน้าตาของการตั้งค่าจะเป็นประมาณนี้ครับ

ทดสอบลอง login จะได้ผลลัพธ์ประมาณนี้ครับ

อย่างไรก็ตาม เพื่อนๆสามารถนำไปประยุกต์ได้หลายท่านะครับ ไม่ว่าจะเป็นการเช็ค ipsec tunnel site-to-site vpn, การเช็ค internet ว่า down ไหม เพื่อให้แจ้งเตือนเราได้ทันที จะได้แก้ไขได้อย่างทันทีครับ