Jail/ limitare drepturi user
Last Updated: Oct 05 2014 14:51, Started by
Takeyuuki
, Oct 05 2014 14:51
·
0
#1
Posted 05 October 2014 - 14:51
Un user local poate fi jail-uit, sunt cateva metode prin care poti face asta astfel incat acel user nu are acces decat la un subset de aplicatii de pe masina respectiva.
1. O metoda consta in a recreea structura de directoare in /home/~user/ si setarea home-ului in /home/~user/home/~user/, la logarea pe masina respectiva se executa chroot /home/~user/ si pentru acel user /home/~user/ este egal cu /. Metoda este mai complicata deoarece trebuie copiate si binare plus bibliotecile necesare functionarii respectivelor binare. Avantajul este ca daca contul respectiv este compromis atacatorul nu are acces decat la setul de aplicatii la care are acces si userul. Metoda asta o alege cineva care stie foarte bine ce trebuie copiat in jail si ce nu si este consumatoare de timp si spatiu de stocare. Am incercat sa o aplic pentru a muta solutia apoi pe o masina la munca insa se pare ca "stimatii colegi" nu m-au considerat in stare sa o administrez asa ca au numit alta persoana sa se ocupe de acea masina iar eu am renuntat la solutia de la punctul asta ca nu mai avea rost sa o implementez. 2. Am gasit acum 2 - 3 ani un template scris in C++ pentru un shell custom, doritorii puteau sa il dezvolte dupa cerinte / suflet. Ideea de baza este ca se defineste un array care contine comenzile ce pot fi executate de acel "shell" si se verifica comenzile date de user cu valorile din array. In caz ca se face match pe o valoare atunci se executa comanda respectiva altfel daca nu se face match pe nici o valoare se returneaza mesaj de eroare. Sau se poate alege metoda inversa si in acel array se introduc comenzile la care userul nu are acces si in caz de match se returneaza o eroare. 3. Am si un script perl care face acelasi lucru ca programul de la punctul 2, intradevar nu este scris de mine ci de colegii de la departamentul de servicii insa m-am uitat pe codul script-ului si idea este aceiasi ca cea de mai sus. Pentru ca la punctele 2 si 3 userul sa poata folosi si comenzi disponibile doar user-ului root, intreadevar trebuie facuta o modificare si in /etc/sudoers in care se foloseste fie Cmnd_Alias pentru a se defini un grup de comenzi sub un nume com un ca apoi grupul users sa primeasca drepturi de a rula acele comenzi cu drepturi extinse. In cazul metodelor 2 si 3 userul va da de exemplu comanda fping -f networks.txt si va obtine rezultatul scontat, comanda reala executata pe sistem fiind sudo fping -f networks.txt parametrul -f al lui fping putand fi folosit doar de catre userul root nu si de catre un user oarecare. In cazul metodelor 2 si 3 modificarile necesare ce trebuie facute de root pe sistem sunt: A) In /etc/passwd pentru user user1 se modifica linia: user1:x:1000:1000:Test User:/home/user1:/bin/bashIn: user1:x:1000:1000:Test User:/home/user1:/bin/customShell.plSau: user1:x:1000:1000:Test User:/home/user1:/home/user1/customShell.pl B ) In /etc/sudoers se adauga: %users ALL=NOEXEC: lista comenziSau user1 ALL=NOEXEC: lista comenziSau folosind Cmnd_Alias: Cmnd_Alias DEVICES = /bin/mount, /bin/umount Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/iptables %users ALL=NOEXEC: NETWORKING user1 ALL=NOEXEC: NETWORKING DEVICES Array-ul de care am pomenit la punctele 2 si 3 va fi de forma: cmdAlias = {"ping", "ifconfig", "route", "iptables", "mount", "umount", "exit", "logout", "quit", "help"}; user1 are acces doar la comenzile care apar in array-ul cmdAlias in rest nu mai are acces la nici o alta comanda. Edited by Takeyuuki, 05 October 2014 - 15:07. |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users