เพื่อสรุป:

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

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

ทำอย่างละเอียด:

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

เซิร์ฟเวอร์ทั้งหมดจะรัน linux และรันบนโฮสต์ linux

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

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

ผู้ใช้ไม่ควรเรียกใช้โค้ดใดๆ บนเซิร์ฟเวอร์หลัก

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

ฉันไม่คาดหวังว่าฟีเจอร์ภาษาเหล่านี้จะปกป้องเซิร์ฟเวอร์ของฉันจากการถูกบุกรุกโดยสมบูรณ์

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

ส่วนต่อไปคือที่ผมโดยเฉพาะอย่างยิ่งไม่แน่ใจว่าจะทำอย่างไร:

การรันเซิร์ฟเวอร์แต่ละเครื่องในเครื่องเสมือนของตัวเองด้วย VirtualBox หรือสิ่งที่คล้ายคลึงกันจะมอบสิ่งที่ฉันคิดว่าจะเป็นการแยกตัวที่ดีมาก แต่มันจะใช้ทรัพยากรจำนวนมากเช่นกัน ฉันต้องหลีกเลี่ยงไม่เช่นนั้นจะพบ distro linux ที่ใช้ RAM เพียง 5-20 MB ซึ่งดูเหมือนว่าไม่น่าจะสำหรับฉันและน่าจะเป็นทรัพยากรมากกว่าเซิร์ฟเวอร์ที่ใช้เองซึ่งจะไม่น่าสนใจมาก

มีคำตอบหรือทางเลือกอื่นที่ดีกว่านี้หรือไม่?

ในท้ายที่สุด ในขณะที่ฉันหวังว่าจะหลีกเลี่ยงไม่ให้ระบบถูกบุกรุก ฉันคาดหวังว่ามันจะเกิดขึ้นไม่ทางใดก็ทางหนึ่ง ถ้าใครต้องการจะทำอย่างนั้น พวกเขาจะคิดออก

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

no answer