PlusMagi's Blog By Pitt Phunsanit Cybersecurity,Database ปิดหรือลบบริการที่ไม่จำเป็น (Unnecessary Services/Ports) ออกจากระบบ

ปิดหรือลบบริการที่ไม่จำเป็น (Unnecessary Services/Ports) ออกจากระบบ

ในโลกของโครงสร้างพื้นฐานไอทีที่ซับซ้อน ความปลอดภัยไม่ได้เป็นเพียงแค่การติดตั้งไฟร์วอลล์ภายนอกเท่านั้น แต่ต้องเริ่มต้นจากการลดพื้นที่ผิวการโจมตี (Attack Surface Management) โดยการตรวจสอบและปิดบริการ (Services) หรือพอร์ต (Ports) ที่ไม่ได้ใช้งานออกจากระบบอย่างเคร่งครัด การเปิดเผยบริการที่ไม่จำเป็นออกสู่เครือข่ายภายนอก เปรียบเสมือนการเปิดประตูทิ้งไว้ให้ผู้ไม่หวังดีสามารถสอดส่องหาช่องโหว่ได้ตลอดเวลา

หลักการ Least Privilege ใน PostgreSQL

หัวใจสำคัญของการรักษาความปลอดภัยทางไซเบอร์คือหลักการสิทธิ์ขั้นต่ำที่สุด (Principle of Least Privilege) ซึ่งหมายถึงการให้สิทธิ์ในการเข้าถึงทรัพยากรหรือบริการเท่าที่จำเป็นต่อการทำงานเท่านั้น สำหรับระบบฐานข้อมูล PostgreSQL การเปิดพอร์ต 5432 ออกสู่สาธารณะโดยไม่มีการจำกัดสิทธิ์ ถือเป็นช่องโหว่ที่ร้ายแรงที่สุด

การ Hardening ระบบ PostgreSQL ไม่ได้หมายถึงการลบบริการออกทั้งหมด แต่คือการกำหนดขอบเขตการเข้าถึงอย่างละเอียด โดยการใช้ไฟล์การกำหนดค่า pg_hba.conf เพื่อควบคุมว่า IP Address ใดบ้างที่สามารถเชื่อมต่อกับบริการใด และด้วย Authentication Method ใดเท่านั้น

ขั้นตอนการจำกัดการเข้าถึง (Access Restriction)

แทนที่จะปล่อยให้ทุกการเชื่อมต่อเป็นไปได้ คุณต้องกำหนดกฎที่เข้มงวดที่สุดเท่าที่จะทำได้ ตัวอย่างเช่น หากแอปพลิเคชันของคุณมาจากเซิร์ฟเวอร์ภายใน (192.168.1.100) เท่านั้น คุณไม่ควรอนุญาตให้ IP อื่นๆ เชื่อมต่อได้เลย

SQL

# TYPE  ST  DATABASE        USER            ADDRESS                 METHOD</code>
# อนุญาตเฉพาะการเชื่อมต่อจาก IP ภายในเท่านั้น (192.168.1.100) สำหรับฐานข้อมูล 'app_db' ด้วย User 'app_user'
host    app_db  app_user  192.168.1.100/32  md5

คำสั่งข้างต้นเป็นการจำกัดการเข้าถึงอย่างชัดเจนที่สุด: host คือประเภทการเชื่อมต่อ, app_db คือฐานข้อมูลเป้าหมาย, app_user คือผู้ใช้ที่ได้รับสิทธิ์, 192.168.1.100/32 คือการจำกัดแหล่งที่มาของ IP ให้แคบที่สุด, และ md5 คือวิธีการยืนยันตัวตนที่ปลอดภัย

การปิดบริการที่ไม่จำเป็น (Beyond pg_hba.conf)

นอกจาก pg_hba.conf แล้ว การป้องกันที่สมบูรณ์ต้องรวมถึงการตั้งค่าระดับระบบปฏิบัติการ (OS Level) ด้วย คุณควรใช้ Firewall ของระบบ เช่น ufw หรือ iptables เพื่อให้แน่ใจว่าพอร์ต 5432 จะเปิดรับการเชื่อมต่อจาก IP ที่กำหนดไว้ใน pg_hba.conf เท่านั้น และปิดพอร์ตอื่นๆ ทั้งหมด เช่น พอร์ตสำหรับเครื่องมือบริหารจัดการที่ไม่จำเป็นออกไป

การดำเนินการเหล่านี้เป็นการสร้างเกราะป้องกันหลายชั้น (Defense in Depth) ทำให้แม้ว่าจะมีช่องโหว่ในระดับแอปพลิเคชัน ก็ยังถูกจำกัดการเข้าถึงในระดับเครือข่าย

บทสรุป

การจัดการพื้นผิวการโจมตีของ PostgreSQL เป็นกระบวนการที่ต่อเนื่อง ไม่ใช่การทำครั้งเดียวจบ การทบทวนกฎ pg_hba.conf และการตรวจสอบ Firewall อย่างสม่ำเสมอ จึงเป็นสิ่งจำเป็นสำหรับ Senior Architect ทุกคน เพื่อให้มั่นใจว่าระบบฐานข้อมูลของคุณทำงานภายใต้หลักการสิทธิ์ขั้นต่ำที่สุด และพร้อมรับมือกับภัยคุกคามทางไซเบอร์ได้อย่างมีประสิทธิภาพ