marți, 28 ianuarie 2020

Limitare acces user - Linux

Cu putin timp in urma m-am regasit in situatia de a configura un user cu drepturi limitate pe linux. Concret, scopul a fost de a-i permite doar rularea din terminal a unui script in python. Ulterior am realizat o interfata grafica pentru script si am avut o provocare in implementarea restrictiilor si in GUI.

Voi descrie mai jos pasii parcursi pentru limitarea accesului in CLI si GUI.

User management
1. Incepem prin crearea unui user nou.
$ sudo adduser <username>

2. Cream un grup nou pentru user.
$ sudo groupadd <groupname>

3. Adaugam userul in grup.
$ sudo adduser <username> <groupname>


Limitarea accesului in CLI
4. Se modifica /etc/passwd pentru ca userul sa foloseasca rbash
$ sudo nano /etc/passwd

Ex.
testuser:x:1001:1001:,,,:/home/testuser:/bin/rbash


5. Se creaza un director bin in directorul /home/<user>, cu permisiuni 755

$ pwd
/home/<user>
$ sudo mkdir bin
$sudo chmod 755 bin


6. Se modifica in .bashrc:
PATH=$HOME/bin
export PATH


7. Generam symlink-uri pentru comenzile la care dorim sa oferim acces userului.

Ex.
$ sudo ln -s /bin/python /home/testuser/bin/


8. Marcam .bashrc ca important pentru a nu putea fi modificat
$ sudo chattr +i .bashrc


Limitarea accesului in GUI
9. Trecem toate fisierele in ownership-ul root-ului
$ sudo chown root <nume fisier>

10. Se creaza un script in C care sa apeleze scriptul in python.
$sudo nano scr.c

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main() {
              setuid(geteuid());
              system("/usr/bin/python <nume script>.py");
              return 0;
}


11. Se compileaza fisierul
$ sudo gcc scr.c -o run

12. Se seteaza SUID bit pentru fisierul compilat
$ sudo chmod 4755 run

13. Se creaza un script in python in ownership user care sa apeleze fisierul compilat

$ sudo nano run.py
#!/usr/bin/env python
import os
os.system("./.run")

14. Sa nu fie 13. :)

Niciun comentariu :

Trimiteți un comentariu