ข้ามไปเนื้อหา

รีเวิร์สพร็อกซี

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

ในเครือข่ายคอมพิวเตอร์ รีเวิร์สพร็อกซี (อังกฤษ: reverse proxy) หรือเซิร์ฟเวอร์ตัวแทน (อังกฤษ: surrogate server) เป็นพร็อกซีเซิร์ฟเวอร์ที่ปรากฏต่อเครื่องรับบริการ/ไคลเอนต์เสมือนเป็นเว็บเซิร์ฟเวอร์ทั่วไป แต่จริง ๆ ทำหน้าที่เพียงเป็นตัวกลางที่ส่งต่อคำขอของไคลเอนต์ไปยังเว็บเซิร์ฟเวอร์ธรรมดาหนึ่งเครื่องหรือยิ่งกว่า[1][2] รีเวิร์สพร็อกซีช่วยเพิ่มสมรรถภาพในการขยายระบบ ประสิทธิภาพ ความทนทาน และความมั่นคง แต่ก็มีความเสี่ยงหลายประการ

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

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

รีเวิร์สพร็อกซีต่างกับฟอร์วาร์ดพร็อกซี ซึ่งใช้เมื่อเครื่องรับบริการจำกัดให้ติดต่อกับเพียงเครือข่ายส่วนตัวภายใน โดยต้องขอให้ฟอร์วาร์ดพร็อกซีนำทรัพยากรมาจากอินเทอร์เน็ต

การใช้งาน

[แก้]

เว็บไซต์ขนาดใหญ่และเครือข่ายส่งเนื้อหา (CDN) ใช้รีเวิร์สพร็อกซีร่วมกับเทคนิคอื่น ๆ เพื่อกระจายการทำงานไปให้เซิร์ฟเวอร์ต่าง ๆ ภายใน รีเวิร์สพร็อกซียังสามารถเก็บแคชของเนื้อหาแบบคงที่ ซึ่งช่วยลดภาระของเซิร์ฟเวอร์และเครือข่ายภายใน อนึ่ง รีเวิร์สพร็อกซีมักจะมีลูกเล่นอื่น ๆ เช่น การบีบอัดข้อมูล การเข้ารหัสแบบทีแอลเอสสำหรับการสื่อสารระหว่างไคลเอนต์กับรีเวิร์สพร็อกซี[3]

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

รีเวิร์สพร็อกซีสามารถซ่อนว่ามีเซิร์ฟเวอร์ต้นทาง (origin server) และลักษณะต่าง ๆ ของเซิร์ฟเวอร์ต้นทางได้ ซึ่งอาจทำให้ระบุตำแหน่งที่อยู่จริง ๆ ของเซิร์ฟเวอร์หรือเว็บไซต์ต้นทางได้ยาก แล้วทำให้การดำเนินการทางกฎหมาย เช่น การสั่งปิดหรือการบล็อกการเข้าถึงเว็บไซต์ ทำได้ยากขึ้น เพราะที่อยู่ไอพีจริง ๆ ของเว็บไซต์ไม่ปรากฏ อนึ่ง รีเวิร์สพร็อกซียังอาจอยู่ในเขตอำนาจกฎหมายที่แตกต่างกัน ทำให้การสั่งปิดยิ่งซับซ้อนมากขึ้น

ลูกเล่นไฟร์วอลล์ระดับโปรแกรม (Application firewall) ของรีเวิร์สพร็อกซี สามารถช่วยป้องกันการโจมตีบนเว็บที่พบบ่อย เช่น การโจมตีโดยปฏิเสธการให้บริการ (DoS) หรือการโจมตีโดยปฏิเสธการให้บริการแบบกระจาย (DDoS) หากไม่มีรีเวิร์สพร็อกซี การกำจัดมัลแวร์หรือการดำเนินการปิดบริการที่ทำการโจมตี (โดยขณะเดียวกันกับต้องรับมือกับการโจมตี) บนเว็บไซต์ของตนเองอาจทำได้ยาก

ในกรณีของเว็บไซต์ที่รับส่งข้อมูลที่เข้ารหัส เว็บเซิร์ฟเวอร์อาจไม่ได้เข้ารหัสทีแอลเอสด้วยตนเอง แต่ยกภาระให้แก่รีเวิร์สพร็อกซีซึ่งอาจมีฮาร์ดแวร์เร่งความเร็วการเข้ารหัส

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

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

รีเวิร์สพร็อกซีสามารถปรับปรุงเนื้อหาโดยการบีบอัดข้อมูลเพื่อเพิ่มความเร็วในการโหลด

ในเทคนิคที่เรียกว่า “spoon-feeding”[4] หน้าเว็บที่สร้างแบบพลวัตสามารถทำขึ้นทั้งหมดในคราวเดียวแล้วส่งต่อไปยังรีเวิร์สพร็อกซี ซึ่งจากนั้นจะค่อย ๆ ส่งหน้าเว็บไปยังไคลเอนต์ตามสมรรถภาพการเชื่อมต่อ โปรแกรมที่สร้างหน้าเว็บไม่จำเป็นต้องเปิดทำงานต่อไป จึงช่วยปล่อยคืนทรัพยากรของเซิร์ฟเวอร์ในช่วงเวลาที่ไคลเอนต์อาจใช้เวลานานในการรับข้อมูลให้เสร็จสิ้น

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

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

รีเวิร์สพร็อกซีสามารถเพิ่มการพิสูจน์ตัวจริงสำหรับเว็บเซิร์ฟเวอร์ที่ไม่มีระบบยืนยันตัวตนได้[5][6]

ความเสี่ยง

[แก้]

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

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

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

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

การให้รีเวิร์สพร็อกซีของบุคคลที่สามเข้าถึงกุญแจส่วนตัว (เพื่อการแคชหรือปรับปรุงเนื้อหา) จะทำให้ความลับ ความถูกต้องครบถ้วน และความพร้อมใช้งาน (confidentiality, integrity and availability) ของระบบทั้งสามด้านตกอยู่ในการควบคุมของผู้ให้บริการบุคคลที่สามซึ่งดำเนินการพร็อกซีดังกล่าว

หากรีเวิร์สพร็อกซีให้บริการหน้าเว็บไซต์หลายโดเมน การหยุดทำงานของมัน (เช่น จากการตั้งค่าผิดพลาดหรือการโจมตีแบบ DDoS) อาจทำให้โดเมนทั้งหมดที่ให้บริการไม่สามารถใช้งานได้[7]

เชิงอรรถและอ้างอิง

[แก้]
  1. ↑ "Forward and reverse proxies". The Apache Software Foundation. ข้อมูลเก่าจากแหล่งเดิมเมื่อ 2018-08-28. สืบค้นเมื่อ 2018-08-26.
  2. ↑ Reese, Will (กันยายน 2008). "Nginx: the high-performance web server and reverse proxy". Linux Journal (173).{{cite journal}}: CS1 maint: date auto-translated (ลิงก์)
  3. ↑ "Proxy servers and tunneling". MDN Web Docs (ภาษาอังกฤษ). ข้อมูลเก่าจากแหล่งเดิมเมื่อ 2020-11-26. สืบค้นเมื่อ 2020-12-06.
  4. ↑ "squid-cache wiki entry on "SpoonFeeding"". Francesco Chemolli. ข้อมูลเก่าจากต้นฉบับ เมื่อ 2019-01-25. สืบค้นเมื่อ 2011-02-09.
  5. ↑ "Possible to add basic HTTP access authentication via HAProxy?". serverfault.com. ข้อมูลเก่าจากแหล่งเดิมเมื่อ 2018-10-04. สืบค้นเมื่อ 2016-04-27.
  6. ↑ "forward_auth (Caddyfile directive) - Caddy Documentation". caddyserver.com. สืบค้นเมื่อ 2022-05-22.
  7. ↑ "Cloudflare outage knocks out major sites and services, including Discord". finance.yahoo.com (ภาษาอังกฤษแบบอเมริกัน). ข้อมูลเก่าจากต้นฉบับ เมื่อ 2020-06-22. สืบค้นเมื่อ 2020-12-14.