Jak korzystać z ograniczonej powłoki, aby ograniczyć to, co może zrobić użytkownik Linuksa?

Opublikowany: 2022-01-29
Okno terminala w systemie Linux.
Fatmawati Achmad Zaenuri/Shutterstock

Ograniczona powłoka ogranicza możliwości konta użytkownika w systemie Linux. Użytkownik z ograniczonym dostępem nie może zmienić swojego katalogu, a Ty kontrolujesz, do których poleceń ma dostęp. Oto jak skonfigurować ograniczoną powłokę w systemie Linux.

Pociski objęte ograniczeniami

Ograniczona powłoka nie jest inną powłoką. To inny tryb standardowej powłoki. Pociski Bash, Korn, Fish i inne można uruchomić w trybie ograniczonej powłoki. W tym artykule będziemy używać Basha, ale te same zasady dotyczą innych powłok.

Ponieważ powłoki z ograniczeniami to tylko kolejny sposób korzystania ze standardowej powłoki, są one łatwe do skonfigurowania. Nie ma nic do zainstalowania i są dostępne wszędzie tam, gdzie jest Linux.

Powłoki z ograniczeniami mogą być również stosowane do skryptów. Gwarantuje to, że wszelkie szkody, które mogą spowodować, jeśli zostały napisane niepoprawnie, ograniczają się do ich ograniczonego świata i nie mają dostępu do całego komputera.

Należy jednak pamiętać, że ograniczone pociski nie są całkowicie odporne na ucieczkę. Ktoś, kto ma wystarczającą wiedzę, może uciec z ograniczonej powłoki. Świetnie nadają się do ustanawiania bezpiecznych granic dla zwykłego użytkownika, ale nie polegają na ograniczonych powłokach w przypadku jakichkolwiek rzeczywistych zabezpieczeń w systemie produkcyjnym.

POWIĄZANE: Jaka jest różnica między powłokami Bash, Zsh i innymi powłokami systemu Linux?

Ograniczona Bash

Kiedy uruchamiasz Bash jako powłokę z ograniczeniami, użytkownik traci z nich pewne możliwości. W szczególności użytkownik nie może :

  • Użyj cd , aby zmienić katalog roboczy.
  • Zmień wartości zmiennych środowiskowych $PATH , $SHELL , $BASH_ENV lub $ENV (ale mogą one odczytać bieżące wartości).
  • Odczytaj lub zmień opcje środowiskowe powłoki $SHELLOPTS .
  • Przekieruj dane wyjściowe polecenia.
  • Wywołaj polecenia, które wymagają ścieżki, aby je zlokalizować. Oznacza to, że nie możesz wydać polecenia, które zawiera co najmniej jeden ukośnik „ / ”.
  • Wywołaj exec , aby zastąpić powłokę innym procesem.
  • Użyj dowolnej z ograniczonych funkcji w skrypcie.
Reklama

Ograniczoną powłokę Bash można wywołać za pomocą opcji -r (z ograniczeniami). Próba wykonania prostego zadania, takiego jak zmiana katalogu roboczego, jest zabroniona. Zwięzła wiadomość informuje, że cd jest ograniczone.

 bash -r
 CD Dokumenty 

Powłoka Bash może również wykryć, kiedy została wywołana za pomocą „rbash” zamiast „bash”. To powoduje, że zaczyna się również jako powłoka z ograniczeniami. Zapewnia to wygodny sposób ustawienia domyślnej powłoki dla konkretnego użytkownika, z której wkrótce skorzystamy.

Jeśli użyjemy polecenia whereis w Ubuntu do wyszukania plików rbash , zobaczymy, że plik wykonywalny znajduje się w katalogu „usr/bin”. Strona man znajduje się w katalogu „/usr/share/man/man1”.

Użycie polecenia ls z opcją -l (długie) ujawnia, że rbash jest w rzeczywistości dowiązaniem symbolicznym do bash .

 Whereis rbash
 ls -l /usr/bin/rbash 

W Manjaro i Fedorze trzeba było utworzyć dowiązanie symboliczne rbash . Działa to w obu dystrybucjach:

 Whereis rbash
 sudo ln -s /bin/bash /bin/rbash
 Whereis rbash 

Reklama

Za drugim razem, gdy używamy polecenia whereis , rbash znajduje rbash w katalogu „/usr/bin”.

Ograniczanie użytkownika

Utwórzmy nowe konto użytkownika o nazwie „Minnie”. Ustawimy ich powłokę jako powłokę ograniczoną za pomocą opcji -s (powłoka) polecenia useradd . Ustawimy również hasło do konta za pomocą polecenia passwd i utworzymy dla nich folder domowy.

Opcja -p (rodzice) w poleceniu mkdir mówi mkdir , aby utworzył katalog docelowy i wszystkie katalogi nadrzędne, które musi utworzyć. Tworząc katalog „/home/minnie/bin”, tworzymy jednocześnie katalog „/home/minnie”.

 sudo useradd minnie -s /bin/rbash
 sudo passwd minnie
 sudo mkdir -p /home/minnie/bin 

Kiedy minnie się zaloguje, będzie biegać w powłoce z ograniczeniami.

 płyta CD 

Nie może wywoływać poleceń, które muszą zawierać ukośnik „ / ”:

 /usr/bin/ping 

Jednak nadal może wykonywać polecenia znajdujące się w ścieżce.

 świst 

Reklama

Nie jest to zachowanie, którego można by się spodziewać, a już na pewno nie tego chcemy. Aby jeszcze bardziej zaostrzyć ograniczenia, musimy zmienić ścieżkę, której powłoka minnie będzie używała do wyszukiwania poleceń.

Zaostrzenie ograniczeń

Kiedy stworzyliśmy katalog domowy minnie „/home/minnie”, stworzyliśmy również katalog „/home/minnie/bin”. W tym miejscu ten katalog wchodzi w grę.

Zamierzamy edytować plik „.bash_profile” Minnie i ustawić jej ścieżkę tak, aby wskazywała tylko ten katalog. Ograniczymy również plik „.bash_profile” Minnie, aby tylko root mógł go edytować. Oznacza to, że żaden inny użytkownik nie może edytować tego pliku i zmienić jego ścieżki.

 sudo gedit /home/minnie/.bash_profile 

Edytuj istniejącą „PATH=” lub dodaj następujący wiersz:

 ŚCIEŻKA=$HOME/bin 

Zapisz plik. Za pomocą chown zmienimy właściciela pliku na roota, a uprawnienia do pliku za pomocą polecenia chmod . Tylko użytkownik root będzie mógł edytować plik.

 sudo chown root: root /home/minnie/.bash_profile
 sudo chmod 755 /home/minnie/.bash_profile
 ls -l /home/minnie/.bash_profile 

Przy następnym logowaniu użytkownika minnie jej ścieżka wskazuje na pojedynczy folder.

Reklama

Nasz ograniczony użytkownik minnie może używać tylko wbudowanych poleceń Basha, takich jak echo , alias i logout . Ona nawet nie może używać ls !

 ls 

Będziemy musieli trochę rozluźnić nasz uścisk, jeśli chcemy, aby w ogóle mogli zrobić coś pożytecznego. Utworzymy kilka dowiązań symbolicznych z katalogu „bin” minnie do poleceń, których Minnie ma używać.

 sudo ln -s /bin/ls /home/minnie/bin
 sudo ln -s /bin/top /home/minnie/bin
 sudo ln -s /bin/uptime /home/minnie/bin
 sudo ln -s /bin/pinky /home/minnie/bin 

Kiedy minnie zaloguje się następnym razem, przekona się, że może używać wbudowanych poleceń Bash oraz tych, z którymi są połączone.

 ls
 Pinky Dave
 czas pracy 

Ograniczanie istniejących użytkowników

Stworzyliśmy minnie jako nowy użytkownik. Aby zmienić powłokę istniejącego użytkownika, możemy użyć opcji -s (shell) polecenia usermod .

 sudo usermod -s /bin/rbash mary 

Możesz użyć polecenia less w pliku „/etc/passwd”, aby szybko sprawdzić, jaka powłoka jest ustawiona jako domyślna powłoka użytkownika.

 mniej /etc/passwd 

Widzimy, że użytkownik mary użyje powłoki z ograniczeniami przy następnym logowaniu.

Reklama

Pamiętaj, aby zastosować inne zmiany, aby ograniczyć ich zmienną środowiskową $PATH i ustawić polecenia, które użytkownik ma mieć do wykonania.

Ograniczanie skryptów

Zwykły użytkownik bez ograniczeń może uruchamiać skrypty wykonywane w powłoce z ograniczeniami. Skopiuj poniższe wiersze i wklej je do edytora. Zapisz plik jako „restricted.sh” i zamknij edytor.

 #!/kosz/bash

# skrypt uruchamia się w normalnej powłoce Bash
echo "## W trybie bez ograniczeń! ##"

Echo
echo "Bieżący katalog: `pwd`"
echo "Zmieniam katalog"
cd /usr/share
echo "Teraz w katalogu: `pwd`"
echo "Zmiana na katalog domowy"
cd ~
echo "Teraz w katalogu: `pwd`"

# Ustawienie trybu ograniczonego
zestaw -r

Echo
echo "## W trybie zastrzeżonym! ##"

Echo
echo "Bieżący katalog: `pwd`"
echo "Zmieniam katalog na /home/"
cd /home
echo "Wciąż w katalogu: `pwd`"

Echo
echo "Próba uruchomienia innej powłoki"
/bin/bash

Echo
echo "Próba przekierowania wyjścia polecenia"
ls -l $HOME > moje_pliki.txt
kot moje_pliki.txt
Echo

wyjście 0

Musimy użyć polecenia chmod z flagą +x (wykonaj), aby skrypt był wykonywalny.

 chmod +x ograniczone.sh 

Pierwsza część skryptu działa w normalnej powłoce.

 ./restricted.sh 

Druga część skryptu — bit po linii „set -r” — działa w powłoce z ograniczeniami.

Żadna z prób nie powiodła się w ograniczonej części skryptu.

Reklama

Cały skrypt można uruchomić w powłoce ograniczonej, dodając -r do pierwszej linii:

 !#/bin/bash -r

Pamiętaj Houdiniego

Pociski z ograniczeniami są przydatne, ale nie są całkowicie nieomylne. Wystarczająco wykwalifikowany użytkownik może być w stanie przed nimi uciec. Ale gdy są używane rozważnie, są użytecznym sposobem na ustalenie zestawu ograniczeń dla konkretnego konta.