การส่ง Amazon GuardDuty ด้วย AWS Chatbot ไปยัง Slack

Amazon GuardDuty คือบริการตรวจจับภัยคุกคามที่คอยตรวจสอบบัญชี AWS โดยได้รับการพัฒนาอย่างต่อเนื่อง ซึ่งเป็นบริการที่อยู่ในตำแหน่งที่สำคัญ (Security) ดังนั้นจึงอยากจะมาแนะนำวิธีการใช้งานในบทความนี้

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

สวัสดีครับ POP จากบริษัท Classmethod (Thailand) ครับ

ครั้งนี้ผมจะมาแนะนำวิธีการส่ง Amazon GuardDuty ด้วย AWS Chatbot ไปยัง Slack

แผนภาพและบริการที่ใช้

Amazon GuardDuty

Amazon GuardDuty คือบริการตรวจจับภัยคุกคามที่คอยตรวจสอบบัญชี AWS และปริมาณงานของคุณจากกิจกรรมที่เป็นอันตรายอย่างต่อเนื่อง และส่งมอบข้อมูลด้านความปลอดภัยอย่างละเอียดเพื่อเพิ่มการแสดงผลและการแก้ไข

Amazon EventBridge

Amazon EventBridge เป็นบริการเหตุการณ์แบบไร้เซิร์ฟเวอร์ที่สามารถรับเหตุการณ์ กรอง แปลง กำหนดเส้นทาง และส่งเหตุการณ์จากแอปพลิเคชันที่เชื่อมต่อได้โดยไม่ต้องเขียนโค้ดที่กำหนดเองหรือจัดการและเตรียมเซิร์ฟเวอร์

Amazon SNS

Amazon SNS เป็นบริการแจ้งเตือนข้อความที่รวดเร็วและราคาไม่แพง

ดูข้อมูลเพิ่มเติมเกี่ยวกับ Amazon SNS ได้ที่บทความด้านล่างนี้

AWS Chatbot

AWS Chatbot เป็นบริการที่แจ้งเตือนเหตุการณ์ที่เกิดขึ้นไปยัง Slack และ Amazon Chime

การเปิดใช้งาน Amazon GuardDuty

การดำเนินการทั้งหมดบน AWS Management Console นับจากนี้จะดำเนินการในรีเจี้ยนสิงคโปร์ Asia Pacific (Singapore) ap-southeast-1

ค้นหา ?︎ GuardDuty แล้วเลือก GuardDuty

คลิก Get Started

คลิก Enable GuardDuty เพื่อเปิดใช้งาน (สำหรับการทดลองใช้งาน สามารถใช้งานได้ 30 วัน)

เมื่อเปิดใช้งานเสร็จแล้ว จะแสดงหน้าจออยู่ในฟังก์ชัน Findings แบบนี้

การสร้าง Channel ใน Slack

ต่อไปคือการตั้งค่าใน Slack ให้สร้าง Channel เตรียมไว้เพื่อใช้เชื่อมต่อกับ AWS Chatbot ซึ่งจะอธิบายในภายหลัง

เปิด Slack แล้วคลิก + ที่แท็บ Channels แล้วเลือก Create a channel

ครั้งนี้เราจะมาสร้างเป็น public channel ถ้าต้องการสร้างเป็น private channel ให้เปิดใช้งานที่ Make private
ที่นี้ให้ป้อน Name ที่ต้องการ เช่น tinnakorn_guardduty_test แล้วคลิก Create

คลิก หรือ Skip for now ก็ได้

เมื่อเสร็จแล้วจะได้ Channel แบบนี้

การตั้งค่า Amazon SNS

ค้นหา ?︎ SNS แล้วคลิก Simple Notification Service

คลิก Next step

แล้วตั้งค่า Details ในหน้า Create Topic ตามนี้
» Type: Standard
» Name: tinnakorn-guardduty-test-topic (ตั้งชื่อตามต้องการ)
» Display name: tinnakorn-guardduty-test-topic (ป้อนตามต้องการ)

เลื่อนลงมาด้านล่างสุด แล้วคลิก Create topic

การตั้งค่า AWS Chatbot

ค้นหา ?︎ AWS Chatbot แล้วคลิก AWS Chatbot

เมื่อเข้ามาแล้วจะเจอหัวข้อ Configure a chat client แล้วเลือก Chat client: Slack แล้วคลิก Configure client

เลือก Workspace ที่ด้านบนขวา แล้วตรวจสอบลิงก์ว่าเป็นของ Workspace ที่เราเลือกหรือไม่ จากนั้นคลิก Allow

เมื่อเสร็จแล้วจะแสดงหน้าจอแบบนี้

แล้วคลิก Configure new channel ที่หัวข้อ Configured channels

ตั้งค่าหน้า Configure Slack channel ดังนี้
หัวข้อ Configuration details
Configuration name: tinnakorn_guardduty_test (ป้อนชื่อตามต้องการ)

หัวข้อ Slack channel
Channel type: ⦿ Public (หากต้องการตั้งค่าเป็น Private ให้ดูที่ลิงก์บทความ วิธีแก้ปัญหาเมื่อไม่สามารถใช้ AWS Chatbot เชื่อมต่อกับ Private channel ของ Slack ได้ นี้)
Public channel name: เลือก Channel ใน Slack ที่สร้างเมื่อสักครู่นี้ เช่น tinnakorn_guardduty_test

หัวข้อ Permissions
Role name: tinnakorn_guardduty_test_role (ป้อนชื่อ Role ที่ต้องการ)

Channel guardrail policies
Policy name: ค้นหา AdministratorAccess แล้วติ๊ก ✅ AdministratorAccess

หัวข้อ Notifications
SNS topics
Region: เลือก Asia Pacific - Singapore
Topics: ค้นหาและติ๊ก ✅ Topics ที่สร้างใน Amazon SNS เช่น ✅ tinnakorn-guardduty-test-topic
แล้วคลิก Configure

เมื่อตั้งค่า Channel สำหรับ Workspace เสร็จเรียบร้อยแล้ว จะแสดงหน้าจอแบบนี้

การทดสอบส่ง Message

เมื่อเชื่อมต่อ AWS Chatbot ไปยัง Slack แล้ว เราจะมาทำการทดสอบกัน

คลิกเข้าไปที่ Configuration name ของเรา ตัวอย่างนี้คือ tinnakorn_guardduty_test

แล้วคลิก Send test message เมื่อมีข้อความแจ้งเตือนด้านบนแบบนี้แล้ว ให้เปิดดูที่ Channel ใน Slack ของเรา

ถ้ามีแจ้งเตือนของ AWS Chatbot Notification แบบนี้ ถือว่าการตั้งค่าการเชื่อมต่อ AWS Chatbot ไปยัง Slack เสร็จสมบูรณ์

การตรวจสอบการตั้งค่าใน Amazon SNS

ตรวจสอบผลการลงทะเบียนใน Subscription

ไปที่ Service Amazon SNS > Topics > [your_topic] (เช่น tinnakorn-guardduty-test-topic) แล้วดูที่แท็บ Subscriptions ด้านล่าง จะเห็นว่า Subscriptions ถูกสร้างขึ้นโดยอัตโนมัติ เพียงเท่านี้ก็สามารถเชื่อมต่อ Chatbot กับ SNS เข้ากันได้แล้ว

การตั้งค่า Amazon EventBridge

การตั้งค่านี้เราจะมาสร้าง Rule ใน Amazon EventBridge

ค้นหา ?︎ Amazon EventBridge แล้วคลิก Amazon EventBridge

เลือก ◎ EventBridge Rule แล้วคลิก Create rule

Step 1 Define rule detail:
Rule detail
Name: tinnakorn_guardduty_test_rule (ตั้งชื่อตามต้องการ)
Description: tinnakorn_guardduty_test_rule (ป้อนตามต้องการ)
Rule type: ◎ Rule with an event pattern
คลิก Next

Step 2 Build event pattern:
เลื่อนลงมาด้านล่างสุดที่หัวข้อ Event pattern แล้วตั้งค่าตามนี้
» Event source: AWS services
» AWS service: GuardDuty
» Event type: GuardDuty Finding (เมื่อเลือกแล้วจะมี Code ปรากฏขึ้นมาใน Event pattern โดยอัตโนมัติ)
» คลิก Next

Step 3 Select target(s):
Target 1
Target types: AWS service
Select a target: เลือก SNS topic
Topic: ค้นหาและเลือก Topics ที่สร้างใน Amazon SNS เช่น tinnakorn-test-slack-topic
คลิก Next

Step 4 - optional Configure tags:
คลิก Next

Step 5 Review and create:
ตรวจสอบข้อมูลการตั้งค่าตั้งแต่ Step 1 - Step 4 แล้วคลิก Create rule

เมื่อสร้างเสร็จแล้วค้นหา Rule ของเรา แล้วคลิกเข้าไป

เมื่อเข้ามาแล้ว จะแสดงหน้าจอแบบนี้

เพียงเท่านี้การตั้งค่าทั้งหมดก็เสร็จเรียบร้อยแล้ว ทีนี้ก็จะทดสอบการส่งผลการตรวจจับของ GuardDuty ไปยัง Slack ในขั้นตอนถัดไป

การทดสอบส่ง Sample findingsInfo ของ GuardDuty ไปยัง Slack

ไปที่หน้า Service Amazon GuardDuty แล้วคลิก Settings จากเมนูด้านซ้าย

เลื่อนลงมาด้านล่างที่หัวข้อ Sample findings แล้วคลิก Generate sample findings แล้วรอผลการตรวจจับส่งไปยัง Slack สักครู่

การตรวจสอบ Findings ใน Amazon GuardDuty

ระหว่างรอผลการตรวจจับส่งไปยัง Slack ให้มาตรวจสอบ Findings ใน Amazon GuardDuty ก่อน

ไปที่หน้า Service Amazon GuardDuty แล้วเลือก Findings จากเมนูด้านซ้าย

จะเห็นว่ามี Findings (ผลการตรวจจับ) ที่เป็นตัวอย่างอยู่ที่หน้านี้ ซึ่งเราจะทำการทดสอบส่งผลการตรวจจับเหล่านี้ไปยัง Slack

ตรวจสอบผลการตรวจจับที่ส่งไปยัง Slack

ทีนี้ให้เปิด Slack ขึ้นมา แล้วไปที่ Channel ที่เราสร้างไว้ เช่น # tinnakorn_guardduty_test จะเห็นว่ามีผลการตรวจจับส่งเข้ามาแล้ว

เพียงเท่านี้การส่ง Findings (ผลการตรวจจับ) ไปยัง Slack ก็เสร็จเรียบร้อยแล้ว

Finding type

นอกจากนี้เราสามารถตรวจสอบ Type ของ Findings เพิ่มเติมได้ที่ลิงก์ด้านล่างนี้
ดูที่หัวข้อนี้: ความหมายของ GuardDuty finding

สรุป

Amazon GuardDuty เป็น Service ที่ได้รับการอัปเดตอย่างต่อเนื่อง เพราะเป็น Service ที่อยู่ในตำแหน่งที่สำคัญ (Security) อย่างน้อยเพื่อความปลอดภัยของธุรกิจของทุกท่าน แนะนำอย่างน้อยก็ควรเปิดไว้สำหรับ Main Region ที่ใช้งานอยู่ และถ้าเป็นไปได้ก็ให้เปิดการใช้งานไว้ทุก Region ก็จะเป็นการเพิ่มความปลอดภัยให้กับการใช้งานของเรา

ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ

POP จากบริษัท Classmethod (Thailand) ครับ !

Link อ้างอิง