Jak korzystać z ograniczonej powłoki, aby ograniczyć to, co może zrobić użytkownik Linuksa?
Opublikowany: 2022-01-29
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_ENVlub$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.
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

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

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.

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.

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.
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.
