เสริมความปลอดภัยให้ Backend Applications ด้วย NGINX App Protect - ตอนที่ 3 - ปรับแต่ง NGINX App Protect - Data Guard
Tags: nginx, waf, proen, appprotect
Published: 2021-09-24 13:26:03

*บทความนี้เป็นการใช้งาน 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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9kc9f9r3o03orx0timek.jpg)

ทดสอบการโจมตีด้วยเทคนิค Directory Traversal ไปยังไฟล์ htpasswd, ถูก Block โดย WAF นั่นคือ WAF ทำงานปกติ
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wt80qd7683rsqh90yosz.jpg)

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

ที่ NGINX Load Balancer เลือก Add-ons และ Install Root Access Add-ons, กด Install
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aninzcbae4gmdc57s08u.jpg)

รอติดตั้งประมาณ 10s แล้วกด Close
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l5sdu77pugwwemk6subs.jpg)

SSH ไปที่เครื่อง NGINX Load Balancer, ยกระดับสิทธิ์การใช้งานเป็น root โดยพิมพ์คำสั่ง 'sudo -i'
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hbmqgf74fx75d2acff3t.jpg)

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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ae1pax63a192xurkf7mv.jpg)

เรียกใช้ 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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o8hm7v8it6c01xfc63jq.jpg)

ทดสอบการใช้งาน โดยเรียกใช้หน้าที่มีข้อมูลบัตรเครดิตที่สมมติขึ้นมา พบว่ามีการ Mask ตัวเลขบางส่วนไว้ 
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z7e2freoqwe9t6ye1q3d.jpg)

เบื้องหลังคือการเรียกไปยัง Backend ที่มีการตั้งค่าผิดพลาด แสดงหมายเลขบัตรเครดิตโดยไม่ตั้งใจ
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3hghcr87szbjv6gw4bv6.png)

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

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

เข้าไปแก้ไขไฟล์ Policy
'vi /etc/app_protect/conf/NginxDataMasking.json'
แก้ไข blocking-setting โดยให้ block มีค่าเป็น true
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lgabv6l9eccroi78ori7.jpg)

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

ทดสอบเรียกอีกครั้ง จะพบว่าครั้งนี้ไม่มีการ mask data แล้ว แต่จะทำถูก Block ทันที ที่มีข้อมูลบัตรเครดิตกำลังจะถูกเปิดเผย
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mgyd2qap87jbpm6mf6ue.jpg)

สุดท้าย เรามาดูว่าถ้าไม่มี App Protect จะเกิดอะไรขึ้นครับ
'vi /etc/nginx/app-protect.conf'
เปลี่ยนค่า app_protect_enable ให้เป็น off
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k65dcga28pw586l5hqv6.jpg)

reload configuration
'nginx -s reload'

ทดสอบเรียกใช้งาน กรณีไม่มี App Protect คอยป้องกัน
ข้อมูลสำคัญหลุดรอดออกไปได้อย่างง่ายดาย
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7z1bg248t58o3sx4q4jj.jpg)

โดยสรุป 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