CLOUD PAAS / LOAD BALANCERS

ความปลอดภัยของแอปด้วย NGINX Balancer

คู่มือนี้เรียบเรียงและปรับรูปแบบสำหรับ Ruk-Com Cloud PaaS ภาพหน้าจออาจแตกต่างเล็กน้อยตามเวอร์ชันของระบบ

คลิกหรือแตะภาพหน้าจอเพื่อดูรายละเอียดขนาดจริง

วัตถุประสงค์

บทความนี้อธิบายการใช้งาน ความปลอดภัยของแอปด้วย NGINX Balancer บน Ruk-Com Cloud PaaS โดยจัดลำดับขั้นตอนและจุดตรวจสอบสำหรับการนำไปใช้งานจริง

ก่อนเริ่มดำเนินการ

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

เนื่องจากปริมาณข้อมูลที่แชร์ผ่านอินเทอร์เน็ตเพิ่มขึ้นทุกปีเช่นเดียวกับการใช้เว็บเป็นเครื่องมือในการทำธุรกิจ การปกป้องเว็บไซต์และเว็บแอปพลิเคชันจึงกลายเป็นปัญหาด้านความปลอดภัยทางอินเทอร์เน็ตที่สำคัญประการหนึ่ง การตอบสนองที่ชัดเจนสำหรับเรื่องนี้คือการใช้เครื่องมือป้องกันมากมาย แต่ก่อนที่จะรีบรวมโซลูชันการป้องกันที่ซับซ้อนและ/หรือมีราคาแพง ให้พิจารณาวิธีการรักษาความปลอดภัยทั่วไปสองสามวิธีก่อน

เนื่องจากบางครั้งการรักษาความปลอดภัยขั้นพื้นฐานที่สุดก็กลายเป็นวิธีที่มีประสิทธิภาพมากที่สุด ดังนั้นในคู่มือนี้เราจะแสดงวิธีตั้งค่ากลไกการป้องกันง่าย ๆ สองสามอย่างซึ่งมีให้สำหรับแอปพลิเคชันที่ใช้ NGINX balancerเป็นฟร้อนท์เอนด์และการสมัครใด ๆ ที่ไม่ต้องเสียค่าใช้จ่ายเพิ่มเติม

โดยพื้นฐานแล้วเซิร์ฟเวอร์โหลดบาลานเซอร์ NGINXมีไว้สำหรับดำเนินการแจกจ่ายคำขออัจฉริยะระหว่างโหนดแอปพลิเคชันเซิร์ฟเวอร์หลาย ๆ โหนด ดังนั้นจึงมั่นใจได้ว่าระบบมีความพร้อมใช้งานและความน่าเชื่อถือสูง ด้วยเหตุนี้จึงสามารถใช้สำหรับการประมวลผลทราฟฟิก HTTP และ TCP (รายละเอียดสามารถพบได้ในเอกสารHTTP โหลดบาลานซ์และการปรับสมดุลการโหลด TCP)

โหนดการปรับสมดุลโหลดจะถูกเพิ่มโดยอัตโนมัติใน Env หากคุณรับโหนดแอปพลิเคชันเซิร์ฟเวอร์มากกว่า 1 โหนดและนอกจากนี้ยังสามารถเพิ่มโหนดได้ด้วยตนเองแม้ใช้เพียงเซิร์ฟเวอร์เดียว ในการดำเนินการนี้เพียงเลือกบล็อก Balancing wizard เหนือแอปพลิเคชันเซิร์ฟเวอร์ที่เลือกในหน้าต่างโทโพโลยีสิ่งแวดล้อม

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

เมื่อ Environment พร้อมแล้วคุณสามารถดำเนินการกำหนดค่าวิธีการป้องกันที่ต้องการได้โดยใช้คำแนะนำด้านล่าง

เราจะใส่ใจกับวิธีการด้วยการรวมกันวิธีการดังกล่าวข้างต้นเพื่อใช้พร้อมกัน มาดูวิธีนำสิ่งนี้ไปใช้กับสภาพแวดล้อมของคุณกันดีกว่า เอาล่ะ!

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

การรับรองความถูกต้อง

การตรวจสอบสิทธิ์เป็นวิธีการที่เรียบง่ายแต่มีประสิทธิภาพในการจำกัดการเข้าถึงแอปพลิเคชันและตรวจสอบให้แน่ใจว่าหน่วยงานที่ไม่ได้รับอนุญาตจะไม่สามารถก่อให้เกิดอันตรายใด ๆ ได้ ในตัวอย่างนี้เราจะแสดงวิธีตั้งค่าการป้องกันชื่อผู้ใช้ / รหัสผ่าน

1. เห็นได้ชัดว่าข้อมูลรหัสผ่านไม่สามารถจัดเก็บในรูปแบบเปิดได้ ดังนั้นจึงจำเป็นต้องมีการป้องกันตัวเอง เพื่อที่คุณจะต้องสร้างแฮช (hash) ตามชื่อผู้ใช้และรหัสผ่านที่ต้องการ โดยใช้เครื่องมือ htpasswd หรือหนึ่งในบริการออนไลน์ที่คล้ายกัน (ตัวอย่างเช่นhttps://www.web2generators.com/Apache-tools/htpasswd-generator)

2. บันทึกลำดับอักขระ (character) ที่คุณได้รับและเปลี่ยนกลับไปที่แดชบอร์ด Ruk-Com Cloud พร้อมระบุ Environment ของคุณ จากนั้นคลิกปุ่ม Config สำหรับโหนดบาลานเซอร์ NGINX

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

บันทึกการเปลี่ยนแปลงเมื่อการตั้งค่าทั้งหมดเสร็จสิ้น

5. จากนั้นเลือกไฟล์NGINX-jelastic.confภายในโฟลเดอร์ conf และค้นหาตำแหน่งบล็อกในส่วน first server วางบรรทัดต่อไปนี้เพื่อเปิดใช้งานการพิสูจน์ตัวตน (authentication) และใช้กฎการเข้าถึงที่เหมาะสม:

auth_basic           "closed site";
auth_basic_user_file /etc/nginx/conf.d/{htpasswd_file};  

โดยที่{htpasswd_file}- ชื่อไฟล์ที่คุณใส่ hash พร้อมรหัสผ่าน (ในกรณีของเราคือไฟล์ password.htpasswd)

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

6.บันทึกการเปลี่ยนแปลงที่คุณทำไว้อีกครั้งและรีสตาร์ทโหนด NGINX balancer

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

หลังจากระบุข้อมูลรับรองที่เหมาะสม (เช่น ข้อมูลประจำตัวที่คุณสร้างแฮช) แล้วแอปพลิเคชันของคุณจะเปิดขึ้น

ที่อยู่ IP ปฏิเสธ

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

1. เปิดแดชบอร์ด Ruk-Com พร้อมกับ Env ของคุณและคลิกปุ่มการกำหนดค่าสำหรับโหนดบาลานเซอร์ NGINX

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

2. คลิกที่ไฟล์NGINX-jelastic.confในโฟลเดอร์การประชุมภายในแท็บเครื่องมือจัดการการกำหนดค่าที่เปิดอยู่ จากนั้นค้นหาตำแหน่งบล็อกในส่วน first server code และวางบรรทัดต่อไปนี้ลงไป:

deny {IP_ADDRESS};
deny {IP_ADDRESS};

โดยที่{IP_ADDRESS}– เป็นที่อยู่ที่คุณต้องการปิดกั้นความสามารถในการเปิดแอปพลิเคชันของคุณอย่างชัดเจน

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

หมายเหตุ :

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

3.บันทึกการเปลี่ยนแปลงและรีสตาร์ทโหนด NGINX ของคุณโดยใช้ปุ่มที่เหมาะสม

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

การผสมผสานวิธีการ

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

ภาพประกอบขั้นตอนการใช้งาน Ruk-Com Cloud PaaS

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

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