Puncte:0

Cum pot atenua riscurile de a permite în mod intenționat utilizatorilor să ruleze cod pe un server, într-o manieră eficientă din punct de vedere al resurselor?

drapel us

A rezuma:

Vreau să rulez mai multe servere pe o gazdă, pentru diferite grupuri de utilizatori și să le permit să adauge și să modifice funcționalitatea serverelor în timpul execuției cu o anumită formă de scripting. Aceasta este o caracteristică 100% necesară pentru ceea ce vreau să fac, dar, evident, există o mulțime de potențial ca acest lucru să meargă îngrozitor de rău; care sunt unele acțiuni/abordări pe care le pot lua pentru a atenua riscurile implicate?

Probabil merită menționat faptul că nu sunt administrator de sistem și, cel mai probabil, nu cunosc multe bune practici considerate de la sine înțelese de cei care sunt; ideile mele se bazează pe ceea ce mi se pare logic, având în vedere puținele lucruri pe care le știu - dacă vreuna dintre ele mi se pare greșită sau dacă îmi lipsesc unele idei importante, vă rog să presupuneți că nu știu ce ar trebui făcut și anunțați-mă.

A elabora:

Utilizatorii se vor conecta la un server principal, care se va ocupa de autentificare și va facilita accesul la serverele scriptabile alese. Mă aștept ca utilizatorii să stabilească o conexiune la un server scriptabil și apoi să comunice direct cu acesta pentru o sesiune; asta pare logic din punctul de vedere al unui dezvoltator de aplicatii, nu sunt sigur daca este o practica de securitate proasta?

Toate serverele vor rula Linux și vor fi rulate pe o gazdă Linux.

Serverul principal va avea o bază de date, probabil PostgreSQL, cu unele date legate de utilizator, de ex. pentru autentificare. Probabil că va avea, de asemenea, unele date referitoare la serverele scriptabile, astfel încât să le poată face publicitate și să se ocupe de conectarea utilizatorilor la ele.

Serverele scriptabile vor avea nevoie și de unele date legate de utilizator, dar în mare parte vor conține conținut creat de utilizator; fiecare server scriptabil va stoca acele date într-o bază de date SQLite.

Utilizatorii nu ar trebui să poată rula niciun cod pe serverul principal.

Pe serverele scriptabile, le imaginez folosind un limbaj precum Tcl sau Lua, care poate fi încorporat și permite expunerea utilizatorilor doar unei părți a funcționalității lor. Tcl face acest lucru printr-un „interpret sigur”; Lua se pare că are o oarecare capacitate de sandbox.

Nu mă aștept ca aceste caracteristici de limbă să-mi protejeze complet serverele de a fi compromise.

Mă gândesc să rulez toate serverele în propriile lor containere docker fără rădăcină. Știu că acest lucru nu este suficient pentru a conține un compromis, dar înțeleg că ar trebui să ajute.

Următoarea parte este unde sunt în special nesigur ce să faci:

Rularea fiecărui server în propria sa mașină virtuală cu VirtualBox sau altele asemenea ar oferi ceea ce îmi imaginez că ar fi o izolare foarte bună, totuși ar consuma și o mulțime de resurse; Trebuie să evit asta, altfel găsesc o distribuție Linux care consumă doar ceva de genul 5-20 MB de RAM, ceea ce mi se pare puțin probabil și ar fi probabil mult mai multe resurse decât ar folosi serverele în sine, ceea ce ar fi foarte neatrăgător.

Există un răspuns bun sau o alternativă la aceasta?

În cele din urmă, deși sper să evit ca orice sistem să fie compromis, mă aștept să se întâmple la un moment dat sau altul; dacă cineva vrea să facă asta, o să-și dea seama.

Caut o modalitate eficientă din punct de vedere al resurselor de a face dificil ca un singur server compromis să ducă la compromisul altora; și mai bine ar fi dacă aș putea împiedica utilizarea serverului compromis pentru a face ravagii pe internet. De asemenea, mi-ar plăcea să am o modalitate bună de a-mi reveni după asta; Intenționez să fac copii de rezervă și să le trimit în altă parte, dar aș fi interesat de orice alte sugestii - aș putea vedea că este o altă întrebare, totuși.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.