Puncte:0

Soluții implicite pentru shell-uri Linux la distanță foarte limitate

drapel sg

Am un utilizator care trebuie să se conecteze la o mașină de la distanță M (prin ssh) și rulați una într-un set fix de comenzi (de exemplu N in total).

Aceste comenzi se bazează pe python, bibliotecile acestora și accesul privilegiat la rețea (care mașină M are).

Există strategii implicite pentru a limita shell-ul utilizatorului Linux doar la executarea acestora N comenzi, fără nicio posibilitate de:

  • acces suplimentar la fs
  • citirea conținutului comenzilor în sine
  • dobândirea accesului privilegiat la rețea
  • şi deopotrivă

Cu alte cuvinte, care sunt strategiile implicite pentru a solicita utilizatorului o consolă limitată după ce acesta se autentifică, permițând, de exemplu, numai numere între 1 și N ca intrări?

Brandon Xavier avatar
drapel us
Dacă N este un număr rezonabil de mic, de ce să nu-l mențineți simplu și să-l puneți pe shell să execute un meniu de bază la conectare și să iasă înapoi la autentificare când a terminat?
drapel sg
@BrandonXavier cum preveniți ca utilizatorul să iasă din shell sau să execute comenzi de la distanță prin ssh?
Brandon Xavier avatar
drapel us
Puneți instrucțiunile `capcană` în scriptul de meniu pentru a se deconecta dacă utilizatorul apasă control-C, control-\ etc.
Puncte:1
drapel la

Există un truc frumos în fișierul authorized_keys, puteți folosi opțiunea de comandă pentru a defini comanda care urmează să fie rulată la autentificare, identificată printr-o cheie, așa că dacă comenzile dvs. N sunt statice - le puteți defini pe server și voila. Nu va restricționa rețeaua, doar lansând comanda. Va arăta cam așa în fișierul authorized_keys:

comanda = "data" ssh-rsa AAAA

Puteți găsi mai multe informații despre aceasta tutorial

Pentru a preveni accesul utilizatorului la rețea - puteți utiliza SELinux sau alt software similar, de asemenea, puteți scrie un cârlig eBPF pentru a permite exact ceea ce doriți.

Puncte:0
drapel cn

Să presupunem că acesta nu este un mic chroot sau container cu doar ceea ce au nevoie, ci mai degrabă un sistem de operare cu mai mulți utilizatori de uz general.

Cu o automatizare suficientă, este posibil să nu fie necesară conectarea la gazdă. Poate oferi prin intermediul unui sistem de autoservire aceste opțiuni limitate, ceea ce face automatizarea.

Pentru a le lăsa să facă treaba pe gazdă, încercați ceea ce aș numi un meniu text captiv. Care este un script pe care poate fi necesar să îl scrieți.

Limitarea strictă a persoanei de a face alte lucruri necesită mai multe trucuri.

  • Conectați-vă ca utilizator neprivilajat, ideal unic pentru acest utilizator.Creșteți pentru lucruri privilegiate cu instrumente precum doas sau sudo.
  • Mandat acest meniu este ceea ce rulează cu OpenSSH ForceCommand blocuri.
  • De asemenea, executați-l din profilele shell. exec, așa că înlocuiește procesul shell, iar când meniul iese, la fel și sesiunea lor.
  • Capcană semnale în scriptul de meniu.
  • Atenție la programele care pot rula comenzi arbitrare. Degajarea este banală în vim, comanda este :coajă
  • Scrieți și utilizați ca elemente de meniu scripturi de ambalare, pentru operații mai complexe sau mai mult control asupra ieșirii.

Alegeți limbajele de scripting în care scrieți meniul. Luați în considerare utilizarea unei biblioteci de meniu text existentă. O buclă de intrare în sine nu este dificilă, dar să o faci robustă, ușor de modificat și cu un UX bun este ceea ce vrei de fapt în producție.

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.