Wyszukiwanie w witrynie

Ogranicz dostęp użytkowników SSH do katalogu domowego za pomocą chrootowanego więzienia


Istnieje kilka powodów, dla których warto ograniczyć sesję użytkownika SSH do określonego katalogu, szczególnie na serwerach internetowych, ale oczywistym jest bezpieczeństwo systemu. Aby zablokować użytkowników SSH w określonym katalogu, możemy skorzystać z mechanizmu chroot.

zmiana katalogu głównego (chroot) w systemach uniksowych, takich jak Linux, to sposób na oddzielenie określonych operacji użytkownika od reszty systemu Linux; zmienia pozorny katalog główny dla aktualnie działającego procesu użytkownika i jego procesu podrzędnego (nadrzędnego) na nowy katalog główny zwany chrootowanym więzieniem.

W tym samouczku pokażemy, jak ograniczyć dostęp użytkownika SSH do danego katalogu w systemie Linux. Pamiętaj, że wszystkie polecenia uruchomimy jako root, użyj polecenia sudo, jeśli jesteś zalogowany na serwerze jako zwykły użytkownik.

Krok 1: Utwórz więzienie SSH Chroot

1. Zacznij od utworzenia więzienia chroot za pomocą poniższego polecenia mkdir:

mkdir -p /home/test

2. Następnie zidentyfikuj wymagane pliki, zgodnie ze stroną podręcznika sshd_config, opcja ChrootDirectory określa ścieżkę do katalogu, do którego ma zostać wykonany chroot po uwierzytelnieniu . Katalog musi zawierać niezbędne pliki i katalogi do obsługi sesji użytkownika.

W przypadku sesji interaktywnej wymaga to co najmniej powłoki, zwykle sh, i podstawowych węzłów /dev, takich jak urządzenia null, zero, stdin, stdout, stderr i tty:

ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}

3. Teraz utwórz pliki /dev w następujący sposób, używając polecenie mknod. W poniższym poleceniu flaga -m służy do określenia bitów uprawnień do pliku, c oznacza plik znakowy, a dwie liczby to liczby główne i podrzędne, na które wskazują pliki .

mkdir -p /home/test/dev/		
cd /home/test/dev/
mknod -m 666 null c 1 3
mknod -m 666 tty c 5 0
mknod -m 666 zero c 1 5
mknod -m 666 random c 1 8

4. Następnie ustaw odpowiednie uprawnienia dla więzienia chroot. Pamiętaj, że więzienie chroot oraz jego podkatalogi i pliki podrzędne muszą należeć do użytkownika root i nie może być do nich zapisywalny żaden zwykły użytkownik ani grupa:

chown root:root /home/test
chmod 0755 /home/test
ls -ld /home/test

Krok 2: Skonfiguruj powłokę interaktywną dla więzienia SSH Chroot

5. Najpierw utwórz katalog bin, a następnie skopiuj pliki /bin/bash do katalogu bin za pomocą polecenie cp w następujący sposób:

mkdir -p /home/test/bin
cp -v /bin/bash /home/test/bin/

6. Teraz zidentyfikuj bash wymagany dla współdzielonych libs, jak poniżej, i skopiuj je do katalogu lib:

ldd /bin/bash
mkdir -p /home/test/lib64
cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/test/lib64/

Krok 3: Utwórz i skonfiguruj użytkownika SSH

7. Teraz utwórz użytkownika SSH za pomocą polecenia useradd i ustaw bezpieczne hasło dla użytkownika:

useradd tecmint
passwd tecmint

8. Utwórz katalog ogólnej konfiguracji więzienia chroot, /home/test/etc i skopiuj zaktualizowane pliki konta (/etc/passwd i /etc/group) do tego katalogu w następujący sposób:

mkdir /home/test/etc
cp -vf /etc/{passwd,group} /home/test/etc/

Krok 4: Skonfiguruj SSH do korzystania z Chroot Jail

9. Teraz otwórz plik sshd_config.

vi /etc/ssh/sshd_config

i dodaj/zmodyfikuj poniższe linie w pliku.

#define username to apply chroot jail to
Match User tecmint
#specify chroot jail
ChrootDirectory /home/test

Zapisz plik i wyjdź, a następnie uruchom ponownie usługi SSHD:

systemctl restart sshd
OR
service sshd restart

Krok 5: Testowanie SSH za pomocą Chroot Jail

10. W tym momencie sprawdź, czy konfiguracja więzienia chroot działa zgodnie z oczekiwaniami:

ssh [email 
-bash-4.1$ ls
-bash-4.1$ date
-bash-4.1$ uname

Na powyższym zrzucie ekranu widzimy, że użytkownik SSH jest zamknięty w więzieniu z chrootem i nie może uruchamiać żadnych zewnętrznych poleceń (ls, date, uname itp.).

Użytkownik może wykonywać tylko bash i jego wbudowane polecenia, takie jak (pwd, historia, echo itp.), jak pokazano poniżej:

ssh [email 
-bash-4.1$ pwd
-bash-4.1$ echo "Tecmint - Fastest Growing Linux Site"
-bash-4.1$ history

Krok 6. Utwórz katalog domowy użytkownika SSH i dodaj polecenia systemu Linux

11. Z poprzedniego kroku możemy zauważyć, że użytkownik jest zablokowany w katalogu głównym, możemy utworzyć katalog domowy dla użytkownika SSH w następujący sposób (zrób to dla wszystkich przyszłych użytkowników):

mkdir -p /home/test/home/tecmint
chown -R tecmint:tecmint /home/test/home/tecmint
chmod -R 0700 /home/test/home/tecmint

12. Następnie zainstaluj kilka poleceń użytkownika, takich jak ls, date i mkdir, w katalogu bin:

cp -v /bin/ls /home/test/bin/
cp -v /bin/date /home/test/bin/
cp -v /bin/mkdir /home/test/bin/

13. Następnie sprawdź biblioteki współdzielone pod kątem powyższych poleceń i przenieś je do katalogu bibliotek więzienia zchrootowanego:

ldd /bin/ls
cp -v /lib64/{libselinux.so.1,libcap.so.2,libacl.so.1,libc.so.6,libpcre.so.1,libdl.so.2,ld-linux-x86-64.so.2,libattr.so.1,libpthread.so.0} /home/test/lib64/

Krok 7. Testowanie SFTP za pomocą Chroot Jail

14. Wykonaj końcowy test przy użyciu sftp; sprawdź, czy właśnie zainstalowane polecenia działają.

Dodaj poniższą linię w pliku /etc/ssh/sshd_config:

#Enable sftp to chrooted jail 
ForceCommand internal-sftp

Zapisz plik i wyjdź. Następnie uruchom ponownie usługi SSHD:

systemctl restart sshd
OR
service sshd restart

15. Teraz przetestuj przy użyciu SSH, a pojawi się następujący błąd:

ssh [email 

Spróbuj użyć protokołu SFTP w następujący sposób:

sftp [email 

To wszystko na teraz! W tym artykule pokazaliśmy, jak ograniczyć użytkownika SSH w danym katalogu (chrootowane więzienie) w systemie Linux. Skorzystaj z sekcji komentarzy poniżej, aby podzielić się z nami swoimi przemyśleniami na temat tego przewodnika.