ความปลอดภัยของแอปด้วย NGINX Balancer
คู่มือนี้เรียบเรียงสำหรับ Ruk-Com PaaS หน้าจอและตัวเลือกอาจแตกต่างตามเวอร์ชันและสิทธิ์ของบัญชี
ตรวจสอบ Environment, Region, สิทธิ์บัญชี และสำรองค่าปัจจุบันก่อนดำเนินการกับระบบจริง
วัตถุประสงค์
บทความนี้อธิบายการใช้งาน ความปลอดภัยของแอปด้วย NGINX Balancer บน Ruk-Com Cloud PaaS โดยจัดลำดับขั้นตอนและจุดตรวจสอบสำหรับการนำไปใช้งานจริง
ก่อนเริ่มดำเนินการ
- เข้าสู่ระบบด้วยบัญชีที่มีสิทธิ์จัดการ Environment ที่เกี่ยวข้อง
- ตรวจสอบชื่อ Environment, Region และ Resource เป้าหมายก่อนบันทึกการเปลี่ยนแปลง
- สำรองข้อมูลหรือกำหนดแผนย้อนกลับก่อนแก้ไขระบบ Production

เนื่องจากปริมาณข้อมูลที่แชร์ผ่านอินเทอร์เน็ตเพิ่มขึ้นทุกปีเช่นเดียวกับการใช้เว็บเป็นเครื่องมือในการทำธุรกิจ การปกป้องเว็บไซต์และเว็บ Application จึงกลายเป็นปัญหาด้านความปลอดภัยทางอินเทอร์เน็ตที่สำคัญประการหนึ่ง การตอบสนองที่ชัดเจนสำหรับเรื่องนี้คือการใช้เครื่องมือป้องกันมากมาย แต่ก่อนที่จะรีบรวมโซลูชันการป้องกันที่ซับซ้อนและ/หรือมีราคาแพง ให้พิจารณาวิธีการรักษาความปลอดภัยทั่วไปสองสามวิธีก่อน
เนื่องจากบางครั้งการรักษาความปลอดภัยขั้นพื้นฐานที่สุดก็กลายเป็นวิธีที่มีประสิทธิภาพมากที่สุด ดังนั้นในคู่มือนี้เราจะแสดงวิธีตั้งค่ากลไกการป้องกันง่าย ๆ สองสามอย่างซึ่งมีให้สำหรับ Application ที่ใช้ NGINX balancer เป็นฟร้อนท์เอนด์และการสมัครใด ๆ ที่ไม่ต้องเสียค่าใช้จ่ายเพิ่มเติม
โดยพื้นฐานแล้ว ServerLoad Balancer NGINXมีไว้สำหรับดำเนินการแจกจ่ายคำขออัจฉริยะระหว่าง NodeApplication Server หลาย ๆ Node ดังนั้นจึงมั่นใจได้ว่าระบบมีความพร้อมใช้งานและความน่าเชื่อถือสูง ด้วยเหตุนี้จึงสามารถใช้สำหรับการประมวลผล Traffic HTTP และ TCP (รายละเอียดสามารถพบได้ในเอกสารHTTP โหลดบาลานซ์และTCP Load Balancing)
Node Load Balancingจะถูกเพิ่มโดยอัตโนมัติใน Env หากคุณรับ NodeApplication Server มากกว่า 1 Node และนอกจากนี้ยังสามารถเพิ่ม Node ได้ด้วยตนเองแม้ใช้เพียง Server เดียว ในการดำเนินการนี้เพียงเลือกบล็อก Balancing wizard เหนือ Application Server ที่เลือกในหน้าต่างTopologyEnvironment

เมื่อ Environment พร้อมแล้วคุณสามารถดำเนินการกำหนดค่าวิธีการป้องกันที่ต้องการได้โดยใช้คำแนะนำด้านล่าง
- การรับรองความถูกต้องทำให้การเข้าถึง Application ได้รับการป้องกันด้วยรหัสผ่าน
- ที่อยู่ IP ปฏิเสธกลไกถูกใช้เพื่อห้ามการเข้าถึง Application จาก IP เฉพาะ
เราจะใส่ใจกับวิธีการด้วยการรวมกันวิธีการดังกล่าวข้างต้นเพื่อใช้พร้อมกัน มาดูวิธีนำสิ่งนี้ไปใช้กับ Environment ของคุณกันดีกว่า เอาล่ะ!
นอกจากนี้เราจะให้ความสำคัญกับวิธีการการรวมกันวิธีการข้างต้นเพื่อใช้พร้อมกัน ดังนั้นเรามาดูวิธีการนำสิ่งนี้ไปใช้กับ Env ของคุณ ไปดูกันเลย
การรับรองความถูกต้อง
การตรวจสอบสิทธิ์เป็นวิธีการที่เรียบง่ายแต่มีประสิทธิภาพในการจำกัดการเข้าถึง Application และตรวจสอบให้แน่ใจว่าหน่วยงานที่ไม่ได้รับอนุญาตจะไม่สามารถก่อให้เกิดอันตรายใด ๆ ได้ ในตัวอย่างนี้เราจะแสดงวิธีตั้งค่าการป้องกันชื่อผู้ใช้ / รหัสผ่าน
1. เห็นได้ชัดว่าข้อมูลรหัสผ่านไม่สามารถจัดเก็บในรูปแบบเปิดได้ ดังนั้นจึงจำเป็นต้องมีการป้องกันตัวเอง เพื่อที่คุณจะต้องสร้างแฮช (hash) ตามชื่อผู้ใช้และรหัสผ่านที่ต้องการ โดยใช้เครื่องมือ htpasswd หรือหนึ่งในบริการออนไลน์ที่คล้ายกัน (ตัวอย่างเช่นhttps://www.web2generators.com/Apache-tools/htpasswd-generator)
2. บันทึกลำดับอักขระ (character) ที่คุณได้รับและเปลี่ยนกลับไปที่ Dashboard Ruk-Com Cloud พร้อมระบุ Environment ของคุณ จากนั้นคลิกปุ่ม Config สำหรับ NodeBalancer NGINX

3. คุณจะเห็นแท็บเครื่องมือจัดการการกำหนดค่าเปิดขึ้น ซึ่งคุณต้องสร้างไฟล์ใหม่(โดยใช้ปุ่มชื่อเดียวกันที่พาเนลเครื่องมือ) ภายในโฟลเดอร์คอนเฟิร์มตั้งชื่อที่ต้องการ แต่บังคับต้องใช้นามสกุล.htpasswd(เช่นรหัสผ่าน.htpasswd)

4. หลังจากเสร็จสิ้นให้วางแฮช (hash) ที่คุณได้รับในขั้นตอนคำแนะนำแรกลงในเนื้อหาของไฟล์ โปรดจำไว้ว่าคุณสามารถเพิ่มบัญชีได้มากเท่าที่คุณต้องการ (อย่าลืมวางทุกบัญชีถัดไปจากบรรทัดใหม่)

บันทึกการเปลี่ยนแปลงเมื่อการตั้งค่าทั้งหมดเสร็จสิ้น
5. จากนั้นเลือกไฟล์NGINX-Ruk-Com PaaS.confภายในโฟลเดอร์ conf และค้นหาตำแหน่งบล็อกในส่วน first server วางบรรทัดต่อไปนี้เพื่อเปิดใช้งานการพิสูจน์ตัวตน (authentication) และใช้กฎการเข้าถึงที่เหมาะสม:
auth_basic "closed site";
auth_basic_user_file /etc/nginx/conf.d/{htpasswd_file};
โดยที่{htpasswd_file}- ชื่อไฟล์ที่คุณใส่ hash พร้อมรหัสผ่าน (ในกรณีของเราคือไฟล์ password.htpasswd)

หมายเหตุ :
ซึ่งโดยปกติเราแนะนำให้แก้ไขการกำหนดค่าในไฟล์ NGINX.conf และเก็บเนื้อหาของ NGINX-Ruk-Com PaaS.conf ไว้เป็นค่าเริ่มต้น/การสำรองข้อมูล แต่ในกรณีนี้เนื่องจากการเปลี่ยนแปลงที่จำเป็นนั้นค่อนข้างง่ายและเราค่อนข้างแน่ใจว่าเรารู้ว่ากำลังทำอะไรอยู่การทำงานโดยตรงกับไฟล์ NGINX-Ruk-Com PaaS จึงง่ายกว่า
6.บันทึกการเปลี่ยนแปลงที่คุณทำไว้อีกครั้งและRestartNode NGINX balancer

7. ตอนนี้เมื่อพยายามเปิด Application ใน Browser (และ Client อื่น ๆ ) จะต้องผ่านหน้าต่างการตรวจสอบสิทธิ์ก่อนที่จะเข้าถึง Application

หลังจากระบุข้อมูลรับรองที่เหมาะสม (เช่น ข้อมูลประจำตัวที่คุณสร้างแฮช) แล้ว Application ของคุณจะเปิดขึ้น
ที่อยู่ IP ปฏิเสธ
หากคุณสังเกตเห็นความเสียหายบางอย่างเกิดขึ้นกับ Application ของคุณโดยผู้ใช้บางราย คุณสามารถหยุดเขาได้โดยการบล็อกคำขอใด ๆ ที่ส่งมาจาก IP address ของผู้ใช้รายนั้นและด้วยเหตุนี้จึงปฏิเสธการเข้าถึง Application ของคุณ สามารถทำได้ง่าย ๆ โดยทำตามขั้นตอนด้านล่างนี้
1. เปิด Dashboard Ruk-Com พร้อมกับ Env ของคุณและคลิกปุ่มการกำหนดค่าสำหรับ NodeBalancer NGINX

2. คลิกที่ไฟล์NGINX-Ruk-Com PaaS.confในโฟลเดอร์การประชุมภายในแท็บเครื่องมือจัดการการกำหนดค่าที่เปิดอยู่ จากนั้นค้นหาตำแหน่งบล็อกในส่วน first server code และวางบรรทัดต่อไปนี้ลงไป:
deny {IP_ADDRESS};
deny {IP_ADDRESS};
โดยที่{IP_ADDRESS}– เป็นที่อยู่ที่คุณต้องการปิดกั้นความสามารถในการเปิด Application ของคุณอย่างชัดเจน

หมายเหตุ :
- คุณยังสามารถตั้งค่า Parameter นี้เป็น all ซึ่งหมายความว่าจะไม่มีใครเข้าถึง Application ของคุณได้ ในกรณีนี้การระบุคำสั่งอนุญาตเพิ่มเติมที่นี่อาจเป็นประโยชน์ ซึ่งใช้เพื่อกำหนด IP address (หรือช่วงของ addresses) ที่คุณต้องการให้สิทธิ์เข้าถึง
- หากในกรณีที่การทำแบบเรียบง่ายที่เสนอข้างต้นนั้นไม่ได้ผลสำหรับคุณ (เนื่องจากอาจเกิดจากการกำหนดค่าเฉพาะที่ ที่ Platform ใด Platform หนึ่ง) คุณสามารถลองใช้วิธีต่อไปนี้แทน:
if ($http_x_forwarded_for ~* {IP_ADDRESS}) {
return 403;
}
3.บันทึกการเปลี่ยนแปลงและRestartNode NGINX ของคุณโดยใช้ปุ่มที่เหมาะสม

4. ด้วยเหตุนี้ผู้ใช้ที่มี IP address ที่ถูกปฏิเสธจะต้องเผชิญกับข้อผิดพลาด 403 Forbidden ขณะพยายามเข้าถึง Application ของคุณ

การผสมผสานวิธีการ
ในการรวมข้อจำกัดตาม IP address และวิธีการตรวจสอบสิทธิ์เข้าด้วยกันคุณจะต้องใช้คำสั่งตอบสนองตามค่าเริ่มต้น (เช่น หากไม่ได้ประกาศอย่างชัดเจนในการกำหนดค่า) จะถูกตั้งค่าเป็นทั้งหมดซึ่งหมายความว่าผู้ใช้ควรมีคุณสมบัติตรงตามเงื่อนไขทั้งสองประเภทเพื่อให้ได้รับสิทธิ์ หากคุณระบุคำสั่งนี้ภายในไฟล์ กำหนดค่า uration และตั้งค่าเป็นใด ๆผู้ใช้จะสามารถเปิด Application ได้ หากมีเงื่อนไขอย่างน้อยหนึ่งเงื่อนไข นี่คือตัวอย่างของการกำหนดค่าดังกล่าว:

ดังนั้นผู้ใช้ที่ไม่ได้รับการพิสูจน์ตัวตนจะได้รับสิทธิ์ในการเข้าถึงหาก IP address ของเขาอยู่ในรายการที่อนุญาต หรือผู้ใช้ที่มี IP address ที่ถูกปฏิเสธจะยังคงสามารถเข้าถึงเว็บไซต์ได้หากพวกเขาป้อนชื่อผู้ใช้และรหัสผ่านที่ถูกต้อง
ดังนั้นตอนนี้คุณรู้วิธีพื้นฐาน 2-3 อย่างในการป้องกันแอปของคุณแล้ว โดยให้สิทธิ์การเข้าถึงแก่ผู้ใช้ที่เชื่อถือได้เท่านั้นรวมถึงปฏิเสธแอปที่ไม่น่าเชื่อถือและอาจเป็นอันตราย โปรดจำไว้ว่าการใช้เวลาไปกับการเพิ่มความปลอดภัยให้กับ Application ของคุณในตอนนี้สามารถช่วยคุณประหยัดเวลาและค่าใช้จ่ายได้มากในภายหลังและถึงแม้ว่าจะไม่เกิดอันตรายใด ๆ ก็ตาม
