Score:0

ฉันจะลดความเสี่ยงจากการจงใจอนุญาตให้ผู้ใช้เรียกใช้โค้ดบนเซิร์ฟเวอร์ในลักษณะที่ประหยัดทรัพยากรได้อย่างไร

ธง us

เพื่อสรุป:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

โพสต์คำตอบ

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