หลังจากที่ข่าว MongoDB จำนวนมากทั่วโลกโดนโจมตีโดย Ransomware ก็ทำให้เหล่า Admin ทั้งหลายต้องมาคิดถึงวิธีการป้องกัน MongoDB กันว่าจะป้องกัน Hacker เหล่านั้นได้อย่างไร ทาง techsuii.com เลยจะโพสต์วิธีการป้องกันเบื้องต้นเพื่อป้องกันกับภัยคุกคามแบบนี้ครับ

ก่อนอื่นทำความเข้าใจก่อนว่า  MongoDB มีรายละเอียดเบื้องต้นดังนี้

  1. File Configuration อยู่ที่ /etc/mongodb.conf
  2. มีการให้บริการอยู่ที่ TCP port 27017
  3. MongoDB server version ล่าสุดคือ: 3.4.1

ทีนี้เรามาเริ่มกันเลยครับ

1. กำหนด Network Interface ให้ปลอดภัย

เราสามารถกำหนด binding interface(Interface ที่ให้บริการ) ของ MongoDB ได้ โดยเข้าไปแก้ไขที่ /etc/mongodb.conf กำหนดให้ bindIp เป็น 127.0.0.1 เพื่อให้สามารถเข้าถึงได้จากเครื่องตนเองเท่านั้น

หากมีการแยก Application Server กับ MongoDB Server ก็แนะนำให้กำหนดเป็น IP Internal เท่านั้น ไม่แนะนำให้เป็น 0.0.0.0 ครับ

2. สร้าง Access Control

โดยปกติแล้ว MongoDB จะไม่มีการจัดการ Authentication แต่อย่างใด เราสามารถสร้าง Access Control ของ MongoDB ได้โดย

– ใช้คำสั่ง mongo เพื่อเชื่อมต่อเข้าไปใน MongoDB

$ mongo

– หลังจากเชื่อมต่อได้สำเร็จแล้ว ให้สร้าง user Administrator ขึ้นมาโดยใช้คำสั่ง

> use admin

> db.createUser({user:”techsuii”,pwd:”yourpassword”, roles:[{role:”userAdminAnyDatabase”,db:”admin”}]})

เป็นการสร้าง user techsuii โดยกำหนด password เป็น yourpassword และกำหนด role เป็น administrator ใน database admin ครับ

– จากนั้นออกจาก MongoDB

> exit

screen-shot-2560-01-10-at-18-25-07

– เข้าไปกำหนดใน /etc/mongodb.conf ให้มีการใช้งาน access control โดยกำหนดใน configuration เป็น

– จากนั้น restart service

$ service mongodb restart

หรือไม่ก็

$ systemctl restart mongodb.service

จากนั้นทดสอบ access control โดยใช้คำสั่งเป็น

$ mongo -u techsuii -p –authenticationDatabase admin

จากนั้นใส่ password

screen-shot-2560-01-10-at-18-28-02

3. หากต้องการใช้ SSL สามารถทำได้ดังนี้

– สร้าง folder เก็บ cert ของ MongoDB

$ mkdir /etc/ssl/mongodb

– เข้าไปยัง path ดังกล่าว

$ cd /etc/ssl/mongodb

– สร้าง cert & key

$ sudo openssl req -new -x509 -days 365 -out mongodb-server-cert.crt -keyout mongodb-server-cert.key

screen-shot-2560-01-10-at-18-32-00

– สร้าง pem ไฟล์โดยการผสมไฟล์ cert & key เข้าด้วยกัน

$ bash -c ‘cat mongodb-server-cert.key mongodb-server-cert.crt > mongodb-server.pem’

– กำหนด configuration ใน mongodb.conf

# SSL options
# Enable SSL on normal ports
sslOnNormalPorts = true
# SSL Key file and password
sslPEMKeyFile = /etc/ssl/mongodb/mongodb-server.pem
sslPEMKeyPassword = password #password ที่เรากำหนดตอนสร้าง key

– จากนั้น restart service

$ service mongodb restart

หรือไม่ก็

$ systemctl restart mongodb.service

ทดสอบเข้าใช้งานโดยใช้คำสั่งเป็น

$ mongo –ssl -u techsuii -p –authenticationDatabase admin

4. หมั่น update อยู่เป็นประจำ

สิ่งที่เราไม่อาจลืมได้คือการคอยหมั่น update software ให้เป็น version ล่าสุด หรือมีการ patch ปิดช่องโหว่อยู่เสมอครับ