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