RSS

Restrykcyjna powłoka cz. 2 – rbash

18 Gru

W jednym z poprzednich wpisów pokazywałem sposób ograniczenia kont użytkowników przy pomocy ibsh. Tym razem chce pokazać możliwości powłoki bash. Użycie tej powłoki jest o tyle łatwe, że znajduje się ona w każdym systemie Unixowym i daje całkiem spore możliwości w ograniczaniu powłoki. Użycie jej jest banalne i polega jedynie na edycji pliku /etc/passwd i zmianie powłoki z /bin/bash na /bin/rbash. Innym sposobem na zmianę powłoki konta użytkownika jest wydanie polecenia :
usermod -s /bin/rbash użytkownik
Po wszystkim plik /etc/passwd powinien zawierać mniej więcej taki wpis :
testowy:x:1002:1002:,,,:/home/testowy:/bin/rbash

Powinniśmy jeszcze upewnić się czy w pliku /bin/shells znajduje się powłoka /bin/rbash, w przeciwnym razie część usług (jak np. serwer FTP) może odmówić zalogowania użytkownika.

Użycie tej powłoki niesie za sobą między innymi takie ograniczenia :
* brak możliwości używania polecenia cd. Zobaczymy taki komunikat :
testowy@ubuntu:~$ cd
-rbash: cd: ograniczone

* użytkownik może jedynie używać komend wbudowanych w powłokę i tych zawartych w zmiennej PATH. Poniżej opiszę jak ograniczać ilość komend przy pomocy zmiennej PATH.
* brak możliwość zmieniania zmiennych środowiskowych SHELL, PATH, ENV, BASH_ENV
* brak możliwość uruchamiania komend zawierających ścieżkę do pliku (/bin/ls, /usr/bin/pico, ./pico )
testowy@ubuntu:~$ ls
pico
testowy@ubuntu:~$ ./pico
-rbash: ./pico: zastrzeżone: nie można okreslić `/' w nazwie polecenia

* brak możliwościami potokami wyjścia aplikacji przy pomocy > i >>
* wyłączona komenda exec

Przy pomocy zmiennej PATH możemy ograniczyć uruchamiane programy do zupełnego minimum. W tym celu będziemy musieli stworzyć katalog z dozwolonymi programami gdzieś poza katalogami użytkowników, np /usr/local/rbash i tworzyć w nim linki symboliczne do tego katalogu. Jeżeli chcemy żeby użytkownicy mieli możliwość zmiany haseł będziemy musieli wydać następujące polecenie :
ln -s /usr/bin/passwd /usr/local/rbash/passwd
dla pico będzie to
ln -s /usr/bin/pico /usr/local/rbash/pico
Jednak należy uważać z doborem programów, lepiej wybierać mniej funkcjonalne zamienniki które są dostosowane do pracy w restrykcyjnych powłokach ale o tym w następnym wpisie ;]

Ścieżki do programów możemy uzyskać poprzez użycie komendy whereis :
root@ubuntu:~# whereis passwd
passwd: /usr/bin/passwd

W Ubuntu 9.04 zmienną PATH edytujemy w pliku /home/USER/.profile ( dla wybranego usera) lub globalnie w pliku /etc/skel/.profile. Przy ustawieniu tej zmiennej w /etc/skel/.profile każdy nowy użytkownik będzie już miał ją ustawioną, natomiast w pierwszym wariancie będziemy musieli za każdym razem ręcznie zmieniać.
Przykładowa zawartość pliku .profile
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi

# set PATH so it includes user's private bin if it exists
#if [ -d "$HOME/bin" ] ; then
# PATH="$HOME/bin:$PATH"
#fi
PATH="/usr/local/rbash"


Plik .profile powinien mieć ustawiony chmod 444 i właściciela root.

Reklamy
 
Dodaj komentarz

Opublikował/a w dniu Grudzień 18, 2009 w linuks, Linux, ubuntu

 

Tagi: ,

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s

 
%d blogerów lubi to: