Jak ograniczyć dostęp użytkownika SSH do określonego katalogu za pomocą więzienia chrooted

- 974
- 24
- Roland Sokół
Istnieje kilka powodów, aby ograniczyć sesję użytkownika SSH do konkretnego katalogu, szczególnie na serwerach internetowych, ale oczywistym jest bezpieczeństwo systemowe. Aby zablokować użytkowników SSH w określonym katalogu, możemy użyć Chroot mechanizm.
Zmień root (Chroot) w systemach podobnych do Unix, takich jak Linux, jest sposobem oddzielenia określonych operacji użytkownika od reszty systemu Linux; zmienia pozorny katalog główny dla aktualnie uruchomionego procesu użytkownika i jego dzieci (nadrzędnego) z nowym katalogiem głównym o nazwie A Chrooted więzienie.
W tym samouczku pokażemy, jak ograniczyć dostęp użytkownika SSH do danego katalogu w Linux. Zauważ, że uruchomimy wszystkie polecenia jako root, użyj polecenia sudo, jeśli jesteś zalogowany na serwerze jako normalny użytkownik.
Spis treści
1- Krok 1: Utwórz więzienie SSH chroot
- Krok 2: Konfiguracja interaktywnej powłoki do więzienia SSH Chroot
- Krok 3: Utwórz i skonfiguruj użytkownika SSH
- Krok 4: Skonfiguruj SSH, aby użyć więzienia Chroot
- Krok 5: Testowanie SSH z więzieniem Chroot
- Krok 6. Utwórz katalog domowy użytkownika SSH i dodaj polecenia Linux
- Krok 7. Testowanie SFTP z więzieniem Chroot
Krok 1: Utwórz więzienie SSH chroot
1. Zacznij od utworzenia więzienia Chroot za pomocą polecenia MKDIR poniżej:
# mkdir -p /dom /test
2. Następnie Zidentyfikuj wymagane pliki, zgodnie z sshd_config Strona Man, The Chrootdirectory
Opcja określa nazwę ścieżki katalogu do chroot do uwierzytelnienia. Katalog musi zawierać niezbędne pliki i katalogi, aby obsługiwać sesję użytkownika.
W przypadku sesji interaktywnej wymaga to co najmniej powłoki cii
, i podstawowe /Dev
Węzły takie jak NULL, ZERO, STDIN, STDOUT, STDERR i TTY Urządzenia:
# ls -l /dev /null, zero, stdin, stdout, stdderr, losowo, tty

3. Teraz stwórz /Dev
pliki w następujący sposób za pomocą polecenie mknod. W poniższym poleceniu, -M
Flaga służy do określenia bitów uprawnień do pliku, C
oznacza plik znaku, a dwie liczby są głównymi i drobnymi liczbami, 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 losowe C 1 8

4. Następnie ustaw odpowiednią zgodę w więzieniu Chroot. Zauważ, że więzienie Chroot oraz jego podwodniki i podwodniki muszą być własnością źródło Użytkownik, a nie zapisujący żaden normalny użytkownik lub grupa:
# chown root: root /home /test # chmod 0755 /home /test # ls -ld /home /test

Krok 2: Konfiguracja interaktywnej powłoki do więzienia SSH Chroot
5. Najpierw stwórz kosz
katalog, a następnie skopiuj /bin/bash
pliki do kosz
katalog używa polecenia CP w następujący sposób:
# mkdir -p/home/test/bin # cp -v/bin/bash/home/test/bin/

6. Teraz zidentyfikuj bash wymagany do udostępniania libs
, jak poniżej i skopiuj je do Lib
informator:
# ldd/bin/bash # mkdir -p/home/test/lib64 # cp -v/lib64/libtinfo.Więc.5, Libdl.Więc.2, Libc.Więc.6, LD-Linux-X86-64.Więc.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 konfiguracji Chroot Jail Ogólne, /dom/test/itd
i skopiuj zaktualizowane pliki konta (/etc/passwd I /etc/grupa) w tym katalogu w następujący sposób:
# mkdir/home/test/etc # cp -vf/etc/passwd, grupa/home/test/etc//

/dom/test/itd
informator. Krok 4: Skonfiguruj SSH, aby użyć więzienia Chroot
9. Teraz otwórz sshd_config
plik.
# vi/etc/ssh/sshd_config
i dodaj/zmodyfikuj poniższe wiersze w pliku.
#określić nazwę użytkownika, aby zastosować więzienie chroot Dopasuj użytkownika #Specify Chroot Jail Chrootdirectory /dom /test

Zapisz plik i wyjście i uruchom ponownie usługi SSHD:
# Systemctl restart SSHD lub # Service SSHD restart
Krok 5: Testowanie SSH z więzieniem Chroot
10. W tym momencie sprawdź, czy konfiguracja więzienia Chroot działa zgodnie z oczekiwaniami:
# ssh [chroniony e -mail] -Bash-4.1 $ ls -bash -4.1 $ data -Bash -4.1 $ niezamalnie

Z powyższego zrzutu ekranu widzimy, że użytkownik SSH jest zablokowany w więzieniu chrootowanym i nie może uruchamiać żadnych poleceń zewnętrznych (LS, data, niezmieniona itp.).
Użytkownik może wykonywać tylko Bash i jego wbudowane polecenia, takie jak (PWD, History, Echo itp.) Jak pokazano poniżej:
# ssh [chroniony e -mail] -Bash-4.1 $ PWD -Bash -4.1 $ echo „TecMint -najszybciej rozwijająca się strona Linux” -Bash -4.1 $ HISTORIA

Krok 6. Utwórz katalog domowy użytkownika SSH i dodaj polecenia 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 tak (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, Data i Mkdir w kosz
informator:
# cp -v/bin/ls/home/test/bin/ # cp -v/bin/date/home/test/bin/ # cp -v/bin/mkdir/home/test/bin/bin/

13. Następnie sprawdź wspólne biblioteki dla powyższych poleceń i przenieś je do katalogu bibliotek więziennych:
# ldd /bin /ls # cp -v /lib64 /libselinux.Więc.1, libcap.Więc.2, Libacl.Więc.1, Libc.Więc.6, libpcre.Więc.1, Libdl.Więc.2, LD-Linux-X86-64.Więc.2, Libattr.Więc.1, libpthread.Więc.0/home/test/lib64/

Krok 7. Testowanie SFTP z więzieniem Chroot
14. Wykonaj ostateczny test przy użyciu SFTP; Sprawdź, czy polecenia, które właśnie zainstalowałeś, działają.
Dodaj linię poniżej w /etc/ssh/sshd_config
plik:
#Enable SFTP do chrooted więzienie forceCommand Internal-SFTP
Zapisz plik i wyjdź. Następnie uruchom ponownie usługi SSHD:
# Systemctl restart SSHD lub # Service SSHD restart
15. Teraz przetestuj za pomocą SSH, a otrzymasz następujący błąd:
# ssh [chroniony e -mail]

Spróbuj użyć SFTP w następujący sposób:
# sftP [chroniony e -mail]

Może ci się spodobać również:
- Jak ograniczyć użytkowników SFTP do katalogów domowych za pomocą więzienia Chroot
- Podstawowe użycie i konfiguracja poleceń SSH w Linux
- 5 najlepszych praktyk zapobiegających atakom logowania Brute Force SSH w Linux
- 5 najlepszych praktyk bezpieczeństwa serwera OpenSSH
To wszystko na razie! W tym artykule pokazaliśmy, jak ograniczyć użytkownika SSH w danym katalogu (więzienie chrooted) w Linux. Skorzystaj z poniższej sekcji komentarzy, aby zaoferować nam swoje przemyślenia na temat tego przewodnika.
- « 4 Przydatne polecenia do wyczyszczenia ekranu terminalu Linux
- 6 Kluczowe wskaźniki wydajności do monitorowania na serwerach Linux - Część 1 »