การส่ง Amazon GuardDuty ด้วย AWS Chatbot ไปยัง Slack
สวัสดีครับ 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
คลิก 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
แล้วตั้งค่า 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) ครับ !