Điểm:0

Làm cách nào tôi có thể giảm thiểu rủi ro khi cố ý cho phép người dùng chạy mã trên máy chủ theo cách tiết kiệm tài nguyên?

lá cờ us

Để tóm tắt:

Tôi muốn chạy nhiều máy chủ trên một máy chủ, cho các nhóm người dùng khác nhau và cho phép họ thêm và sửa đổi chức năng của máy chủ trong thời gian chạy bằng một số dạng tập lệnh. Đây là một tính năng cần thiết 100% cho những gì tôi muốn làm, nhưng rõ ràng có rất nhiều khả năng khiến tính năng này trở nên sai lầm khủng khiếp; Tôi có thể thực hiện một số hành động/phương pháp nào để giảm thiểu rủi ro liên quan?

Có lẽ điều đáng nói là tôi không phải là quản trị viên hệ thống và rất có thể tôi không biết về nhiều phương pháp hay nhất được những người đó coi là đương nhiên; ý tưởng của tôi dựa trên những gì có vẻ hợp lý đối với tôi dựa trên những gì tôi biết - nếu bất kỳ ý tưởng nào trong số đó có vẻ sai lầm hoặc nếu tôi thiếu một số ý tưởng quan trọng, vui lòng cho rằng tôi không biết phải làm gì và cho tôi biết.

Để xây dựng:

Người dùng sẽ kết nối với một máy chủ chính, máy chủ này sẽ xử lý xác thực và tạo điều kiện truy cập vào các máy chủ có thể tạo tập lệnh mà họ chọn. Tôi hy vọng rằng người dùng sẽ thiết lập kết nối với máy chủ có thể viết tập lệnh và sau đó giao tiếp trực tiếp với máy chủ đó trong một phiên; điều đó có vẻ hợp lý từ quan điểm của một nhà phát triển ứng dụng, tôi không chắc liệu đó có phải là một phương pháp bảo mật tồi không?

Tất cả các máy chủ sẽ chạy linux và được chạy trên máy chủ linux.

Máy chủ chính sẽ có cơ sở dữ liệu, có thể là PostgreSQL, với một số dữ liệu liên quan đến người dùng, ví dụ: để xác thực. Nó có thể cũng sẽ có một số dữ liệu liên quan đến các máy chủ có thể viết tập lệnh để có thể quảng cáo chúng và xử lý việc kết nối người dùng với chúng.

Các máy chủ có thể viết tập lệnh cũng sẽ cần một số dữ liệu liên quan đến người dùng, nhưng hầu hết sẽ chứa nội dung do người dùng tạo; mỗi máy chủ có thể viết tập lệnh sẽ lưu trữ dữ liệu đó trong cơ sở dữ liệu SQLite.

Người dùng sẽ không thể chạy bất kỳ mã nào trên máy chủ chính.

Trên các máy chủ có thể viết tập lệnh, tôi hình dung chúng sử dụng một ngôn ngữ như Tcl hoặc Lua, ngôn ngữ này có thể được nhúng và chỉ cho phép hiển thị một phần chức năng của chúng cho người dùng. Tcl thực hiện điều này thông qua một "trình thông dịch an toàn"; Lua rõ ràng có một số khả năng hộp cát.

Tôi không mong đợi các tính năng ngôn ngữ này sẽ bảo vệ hoàn toàn máy chủ của mình khỏi bị xâm phạm.

Tôi đang xem xét việc chạy tất cả các máy chủ trong bộ chứa docker không root của riêng chúng. Tôi biết điều này là không đủ để thỏa hiệp, nhưng theo hiểu biết của tôi thì điều đó sẽ hữu ích.

Phần tiếp theo là nơi tôi đang ở đặc biệt là không biết phải làm gì:

Chạy từng máy chủ trong máy ảo của riêng nó bằng VirtualBox hoặc tương tự sẽ cung cấp những gì tôi tưởng tượng sẽ là sự cô lập rất tốt, tuy nhiên nó cũng sẽ tiêu tốn rất nhiều tài nguyên; Tôi cần phải tránh điều đó, nếu không thì hãy tìm một bản phân phối linux chỉ tiêu thụ khoảng 5-20 MB RAM, điều này dường như khó xảy ra với tôi và vẫn có khả năng chiếm nhiều tài nguyên hơn so với chính các máy chủ sẽ sử dụng, điều này sẽ rất không hấp dẫn.

Có một câu trả lời tốt hoặc thay thế cho điều này?

Cuối cùng, mặc dù tôi hy vọng sẽ tránh được việc bất kỳ hệ thống nào bị xâm phạm, nhưng tôi mong điều đó sẽ xảy ra vào lúc này hay lúc khác; nếu ai đó muốn làm điều đó, họ sẽ tìm ra nó.

Tôi đang tìm kiếm một cách tiết kiệm tài nguyên để gây khó khăn cho một máy chủ bị xâm nhập dẫn đến những máy chủ khác bị xâm phạm; thậm chí sẽ tốt hơn nếu tôi có thể giữ cho máy chủ bị xâm nhập không bị lợi dụng để phá hoại Internet. Tôi cũng muốn có một cách tốt để khắc phục điều này; Tôi dự định sao lưu và gửi chúng ở nơi khác, nhưng tôi quan tâm đến bất kỳ đề xuất nào khác - tuy nhiên, tôi có thể thấy đó là một câu hỏi khác.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.