เสริมความปลอดภัยให้ Backend Applications ด้วย NGINX App Protect - ตอนที่ 1 - ติดตั้ง NGINX Plus และ NGINX App Protect
Tags: nginx, waf, nginxplus, proen
Published: 2021-09-10 10:02:15

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


ช่วงนี้มีข่าวคราวการถูกโจมตีเยอะพอสมควรเลยครับ เครื่องมือที่จะช่วยป้องกันในระดับ Application ก็คือ Web Application Firewall - WAF

การทำงานเมื่อมี requests เข้ามาจะผ่าน WAF ก่อน หากตรงกันกับ Signatures ที่เราระบุไว้บน WAF จะถือเป็นการโจมตี ทำให้ Requests ถูก Block และการโจมตีก็จะไปไม่ถึง Backend Application

วันนี้เรามาดูวิธีติดตั้งใช้งาน NGINX WAF ซึ่งโดยปกติจะต้อง Install และ Configure โดยผู้เชี่ยวชาญเพื่อให้ WAF สามารถปกป้อง Web Application ของเราได้อย่างแท้จริง แต่วันนี้จะเป็นการติดตั้งบน Proen-Cloud ที่สามารถ Provision WAF ที่ได้มาตรฐานมาใช้งาน และสามารถเริ่มต้นได้ไม่ยาก

เรามาเริ่มจากหน้า Login ครับ เข้าไปที่ https://app.manage.proen.cloud/
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/61iaaa35wa9rqvm7yvgh.jpg)

จากนั้นทำการติดตั้ง NGINX Plus ก่อน โดยกดไปที่ NEW ENVIRONMENT และเลือก NGINX Plus
ในขั้นตอนนี้ เราจะตั้งชื่อให้ Environment ของเราด้วยก็ได้ จะได้ subdomain ภายใต้ proen.cloud
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3i44dil1fd4pmqi4eubt.jpg)

Backend Application จะนำ Application ที่เราต้องการมาติดตั้งครับ, รองรับ Docker Image ด้วย, หรือเลือกจาก Templates ที่มีให้, ในตัวอย่างเลือกเป็น .NET Core จากนั้นกด Create
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gufqzbj9m9vc8j3n4mqk.jpg)

เมื่อ Proen Cloud ทำการสร้าง Environment เสร็จแล้ว ให้ทดสอบโดยกดเข้าไปที่ลิงค์
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jmor9sj1hxt6tqtwdjsz.jpg)

สามารถเข้าใช้งาน Backend Application .NET Core ได้ โดยการเข้าใช้งาน จะเป็นการเรียกผ่าน NGINX Plus ก่อน แล้วเรียกต่อไปยัง .NET Core
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9herccynpj21ysl1dfa3.jpg)

หากต้องการใช้ Domain ของเราเอง ไม่ใช้ subdomain ของ Proen, สามารถเพิ่ม Public IPv4 ขึ้นมาใช้งานได้ แล้วปรับตั้ง DNS ให้ชี้มาที่ IP ของเรา

ที่บรรทัด Public IPv4 กดเครื่องหมาย +
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tyxoo4zejlgpvimle4s5.jpg)

ใส่จำนวน IPv4 ที่ต้องการ ในที่นี้คือ 1 IP กด Apply
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ndswd1gjgt6dzhin7bv7.jpg)

ทดสอบเข้าใช้งาน ผ่าน Public IPv4 หรือจะใช้ DNS ชี้มาที่ IP นี้ แล้วเข้าใช้งานผ่าน Domain ของเราเองก็ได้ครับ
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7znpvb1lorynlfsnewtd.jpg)

ตอนนี้เราจะติดตั้ง NGINX WAF ให้กับ NGINX Plus เพื่อปกป้อง Backend ซึ่งก็คือตัว .NET Core นั่นเองครับ
วิธีการ ในบรรทัด Load Balancer ให้กดที่ปุ่ม Add-Ons
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kwe8r88l92c2pmhzwkcx.jpg)

เลือก Add-Ons: NGINX Plus App Protect กด Install
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7g9a4g1osuvcihlvq563.jpg)

จะมีหน้าต่างแสดงรายละเอียด ให้กด Install อีกหนึ่งครั้ง
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2voyp1r7dktrvh9kon4j.jpg)

รอจน Install เสร็จ ก็จะได้ NGINX WAF พร้อมใช้งานปกป้อง Web Application ของเราครับ

ทำการทดสอบ เรียกไปยัง .NET อีกครั้ง พบว่าเรียกได้ปกติ
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7znpvb1lorynlfsnewtd.jpg)

ทดสอบเรียก โดยจำลองเหตุการณ์โจมตีแบบ Directory Traversal พยายามเข้าถึงไฟล์ htpasswd
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yetr2k1bqyc7jyh21r85.jpg)

พบว่าจะถูกบล็อก ที่ระดับชั้นของ NGINX ก่อน ทำให้ Backend Application ยังคงปลอดภัย

ในการ Block นี้ จะได้เลข Support ID หาก USER พบว่ามีการบล็อกที่ผิดปกติ สามารถนำ Support ID นี้ ส่งต่อให้ทีม Security เพื่อตรวจสอบ Log ได้

จากการตรวจสอบ Support ID: 15593246396323256717 พบว่า มีการ Violate เรื่อง Directory Traversal ที่ path ../etc/
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q9l53ehfga0itdtkaens.jpg)

เพียงเท่านี้ เราก็จะมี WAF ช่วยปกป้อง Web Application ของเราให้ปลอดภัยมากยิ่งขึ้นครับ

ในบทความถัดไป เราจะมาดูวิธีการปรับแต่งที่มากขึ้น เช่นการส่ง Log ออกไปยัง ELK หรือ syslog server อื่น, การเลือกใช้งาน Signature ที่มีความเข้มข้นมากขึ้นขนาดที่ว่าเมื่อเปิดใช้งาน เราจะเข้าถึง Application ของเราไม่ได้ในทันที จะต้องค่อยๆ Configure เปิดการใช้งานทีละส่วน ให้เข้าถึงได้เฉพาะที่จำเป็นเท่านั้น


---
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