DEV Community

Cover image for เสริมความปลอดภัยให้ Backend Applications ด้วย NGINX App Protect - ตอนที่ 3 - ปรับแต่ง NGINX App Protect - Data Guard
terngr
terngr

Posted on • Updated on

เสริมความปลอดภัยให้ Backend Applications ด้วย NGINX App Protect - ตอนที่ 3 - ปรับแต่ง NGINX App Protect - Data Guard

*บทความนี้เป็นการใช้งาน NGINX Plus และ NGINX App Protect บน Proen Cloud จะมีค่าใช้จ่าย Subscription แบบรายเดือนครับ

ในตอนที่ 1 และ 2 เราได้ติดตั้ง NGINX Plus, NGINX App Protect รวมถึงการ Configure transparent mode

ตอนที่ 1 - ติดตั้ง NGINX Plus และ NGINX App Protect
https://bit.ly/napproen

ตอนที่ 2 - ปรับแต่ง NGINX App Protect - transparent mode
https://bit.ly/napproen-ep2

วันนี้เราจะลงไปดู Protection Mechanism ตัวแรกครับ - Data Guard

ข้อมูลที่เราส่งผ่านไปมา อาจมีข้อมูลสำคัญ เช่นหมายเลขบัตรเครดิต หมายเลข SSN หากมีจุดใดจุดหนึ่งตั้งค่าไว้ผิดพลาด จะทำให้ข้อมูลเหล่านี้หลุดรอดออกไปได้ง่าย

App Protect - Data Guard จะช่วย Mask หรือ เบลอข้อมูลสำคัญเหล่านี้ครับ
โดยเราจะทำต่อจากตอนที่ 1

ทดสอบเข้าใช้งานแบบปกติ สามารถใช้งานเว็บแบบปกติได้
Alt Text

ทดสอบการโจมตีด้วยเทคนิค Directory Traversal ไปยังไฟล์ htpasswd, ถูก Block โดย WAF นั่นคือ WAF ทำงานปกติ
Alt Text

ก่อนการปรับแต่ง เราจำเป็นต้องใช้สิทธิ์ root เพื่อแก้ไข WAF Policies

ที่ NGINX Load Balancer เลือก Add-ons และ Install Root Access Add-ons, กด Install
Alt Text

รอติดตั้งประมาณ 10s แล้วกด Close
Alt Text

SSH ไปที่เครื่อง NGINX Load Balancer, ยกระดับสิทธิ์การใช้งานเป็น root โดยพิมพ์คำสั่ง 'sudo -i'
Alt Text

List file NGINX App Protect Policy โดย
'cd /etc/app_protect/conf'
'ls'
จะพบไฟล์ Policy เดิมที่มีอยู่แล้วครับ ให้เราทำการสร้างไฟล์ Policy ใหม่ขึ้นมา ชื่อ NginxDataMasking.json

'vi NginxDataMasking.json'
Configure ตามนี้ครับ

{
"policy": {
"name": "nginx_default_policy",
"template": { "name": "POLICY_TEMPLATE_NGINX_BASE" },
"applicationLanguage": "utf-8",
"enforcementMode": "blocking",
"blocking-settings": {
"violations": [
{
"name": "VIOL_DATA_GUARD",
"alarm": true,
"block": false
}
]
},
"data-guard": {
"enabled": true,
"maskData": true,
"creditCardNumbers": true,
"usSocialSecurityNumbers": true,
"enforcementMode": "ignore-urls-in-list",
"enforcementUrls": []
}
}
}

อธิบาย
เรามีการกำหนดให้เปิดใช้งาน data-guard โดยตั้ง enabled เป็น true
กำหนดให้มีการ Mask Data เป็น True
กำหนด Data ที่เข้าข่ายจะทำการ Mask ก็คือ creditCardNumber และ usSocialSecurityNumbers

ส่วนการทำ blocking-settings มีการตั้งให้ block เป็น false หมายความว่า หากมีข้อมูลบัตรเครดิต หลุดรอดออกมา จะไม่ Block แต่จะแสดงผลโดย Mask Data บางส่วนไว้ให้นั่นเองครับ

เมื่อเราสร้างไฟล์ Policy บน NginxDataMasking.json แล้ว ขั้นต่อมาเราจะกำหนดให้ App Protect เลือกใช้ Policy จากไฟล์ NginxDataMasking.json ครับ

'vi /etc/nginx/app-protect.conf'
Alt Text

เรียกใช้ Policy ที่เพิ่งสร้างใหม่ และ Comment Policy เดิมไว้
app_protect_policy_file "/etc/app_protect/conf/NginxDataMasking.json";

ทำการ Save ไฟล์

reload NGINX เพื่อใช้ Configuration ใหม่, ถ้าไม่มี output ใด ๆ ออกมา แสดงว่า reload สำเร็จ, แต่หากได้ข้อความ Error ให้เช็คว่ามีการใช้ tab หรือไม่(ใช้ tab ไม่ได้ครับ) หรือการใส่ , {} ตรงตามตัวอย่างไหม, หรือติดต่อทีมงานให้ช่วย Support ได้ครับ
Alt Text

ทดสอบการใช้งาน โดยเรียกใช้หน้าที่มีข้อมูลบัตรเครดิตที่สมมติขึ้นมา พบว่ามีการ Mask ตัวเลขบางส่วนไว้
Alt Text

เบื้องหลังคือการเรียกไปยัง Backend ที่มีการตั้งค่าผิดพลาด แสดงหมายเลขบัตรเครดิตโดยไม่ตั้งใจ
Alt Text

จะเห็นได้ว่า เราสามารถป้องกันข้อมูลบัตรเครดิตได้แล้วครับ

ต่อมา เราจะ Configure ให้ App Protect ทำการ Reject ทันที หากมีข้อมูลบัตรเครดิตหลุดรอดออกมา โดยไม่ต้อง masking data

เข้าไปแก้ไขไฟล์ Policy
'vi /etc/app_protect/conf/NginxDataMasking.json'
แก้ไข blocking-setting โดยให้ block มีค่าเป็น true
Alt Text

จากนั้นทำการ reload NGINX configuration
'nginx -s reload'

ทดสอบเรียกอีกครั้ง จะพบว่าครั้งนี้ไม่มีการ mask data แล้ว แต่จะทำถูก Block ทันที ที่มีข้อมูลบัตรเครดิตกำลังจะถูกเปิดเผย
Alt Text

สุดท้าย เรามาดูว่าถ้าไม่มี App Protect จะเกิดอะไรขึ้นครับ
'vi /etc/nginx/app-protect.conf'
เปลี่ยนค่า app_protect_enable ให้เป็น off
Alt Text

reload configuration
'nginx -s reload'

ทดสอบเรียกใช้งาน กรณีไม่มี App Protect คอยป้องกัน
ข้อมูลสำคัญหลุดรอดออกไปได้อย่างง่ายดาย
Alt Text

โดยสรุป NGINX App Protect - Data Guard จะช่วยปกป้อง Sensitive Data โดยสามารถเลือกได้ว่าจะบล็อกทั้งหมด หรือยอมให้ข้อมูลอื่นๆผ่านโดยเลือก Mask เฉพาะ Sensitive Data ก็ได้ครับ

ปัจจุบันความปลอดภัยของข้อมูล โดยเฉพาะข้อมูลส่วนบุคคลมีความสำคัญที่ต้องเก็บรักษาเป็นอย่างดี หากข้อมูลลูกค้าที่มีธุรกรรมร่วมกับเราถูกเผยแพร่ จะส่งผลต่อความน่าเชื่อถือแน่นอนครับ บน Proen Cloud มี App Protect ให้พร้อมปกป้องหลังบ้านของเราได้ทันที


Series: เสริมความปลอดภัยให้ Backend Applications ด้วย NGINX App Protect

เสริมความปลอดภัยให้ Backend Applications ด้วย NGINX App Protect - ตอนที่ 1 - ติดตั้ง NGINX Plus และ NGINX App Protect
https://bit.ly/napproen

เสริมความปลอดภัยให้ Backend Applications ด้วย NGINX App Protect - ตอนที่ 2 - ปรับแต่ง NGINX App Protect - transparent mode
https://bit.ly/napproen-ep2

เสริมความปลอดภัยให้ Backend Applications ด้วย NGINX App Protect - ตอนที่ 3 - ปรับแต่ง NGINX App Protect - Data Guard
https://bit.ly/napproen-ep3

เสริมความปลอดภัยให้ Backend Applications ด้วย NGINX App Protect - ตอนที่ 4 - ปรับแต่ง NGINX App Protect - HTTP Compliance
https://bit.ly/napproen-ep4


สัปดาห์หน้า พบกับ Protection Mechanism ถัดไป ติดตามได้ที่
FB Page: นั่งเล่น NGINX
https://web.facebook.com/NungLenNGINX
FB Group: ร่วมพูดคุยและแลกเปลี่ยนความรู้ไปกับเรา NGINX Super User TH
https://web.facebook.com/groups/394098015436072

เริ่มต้นใช้งานได้ที่ https://app.manage.proen.cloud/
มีทีม Support ให้ครับ
อีกหนึ่งช่องทาง nginx@mfec.co.th

Discussion (0)