Czy mogę utworzyć użytkownika SSH, który może uzyskać dostęp tylko do określonego katalogu?

45

Mam wirtualny prywatny serwer, z którym mogę się połączyć za pomocą SSH na moim koncie root, mogąc oczywiście wykonać dowolne polecenie linux i uzyskać dostęp do całego obszaru dysku.

Chciałbym utworzyć kolejne konto użytkownika, które będzie mogło uzyskać dostęp do tego serwera również za pomocą SSH, ale tylko do określonego katalogu, na przykład /var/www/example.com/

Na przykład wyobraź sobie, że ten użytkownik ma OGROMNY plik error.log (500 MB) zlokalizowany /var/www/example.com/logs/error.log podczas dostępu do tego pliku za pomocą FTP, ten użytkownik musi pobrać 500 MB, aby wyświetlić ostatnie wiersze dziennika, ale chciałbym, żeby był w stanie wykonać coś takiego:

tail error.log

Dlatego potrzebuję, aby mógł uzyskać dostęp do serwera za pomocą SSH, ale nie chcę mu przyznawać dostępu do wszystkich obszarów serwera.

Jak mogę to zrobić?

Richard Rodriguez
źródło

Odpowiedzi:

29

chroot użytkownik.


Aktualizacja:

Artykuł TechRepublic autorstwa Vincenta Danena mówi:

Wraz z wydaniem OpenSSH 4.9p1 nie musisz już polegać na hakach innych firm lub skomplikowanych konfiguracjach chroot, aby ograniczyć użytkowników do ich domowych katalogów lub dać im dostęp do usług SFTP.

edytuj / etc / ssh / sshd_config (/ etc / sshd_config w niektórych dystrybucjach) i ustaw następujące opcje:

Subsystem     sftp   internal-sftp
Match Group sftp
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

Upewnij się, że dyrektywa „Dopasuj” znajduje się na końcu pliku. Mówi to OpenSSH, że wszyscy użytkownicy w grupie sftp mają być chrootowani do swojego katalogu domowego (który% h reprezentuje w poleceniu ChrootDirectory)

Dla wszystkich użytkowników, których chcesz chrootować, dodaj ich do grupy sftp, używając:

# usermod -G sftp joe
# usermod -s /bin/false joe
# chown root:root /home/joe
# chmod 0755 /home/joe

Powyższe polecenie usermod doda użytkownika Joe do grupy sftp i ustawi ich powłokę na / bin / false, aby absolutnie nigdy nie mogli uzyskać dostępu do powłoki. Polecenia chown i chmod ustawią wymagane uprawnienia do katalogu. Po ustawieniu tych uprawnień użytkownik będzie mógł przesyłać i pobierać pliki, ale nie będzie mógł tworzyć katalogów ani plików w katalogu głównym

Chrootowanie kont powłoki jest nieco bardziej skomplikowane, ponieważ wymaga, aby niektóre pliki urządzeń i powłoki były dostępne w katalogu domowym użytkownika. Następujące polecenia skonfigurują bardzo podstawowy system chroot w Mandriva Linux:

# mkdir /chroot
# cd /chroot
# mkdir {bin,dev,lib}
# cp -p /bin/bash bin/
# cp -p /lib/{ld-linux.so.2,libc.so.6,libdl.so.2,libtermcap.so.2} lib/
# mknod dev/null c 1 3
# mknod dev/zero c 1 5
# chmod 0666 dev/{null,zero}
# mkdir -p /chroot/home/joe

W związku z powyższym użytkownik Joe może ssh i będzie ograniczony do chroot. Niestety niewiele to robi, ale daje wyobrażenie o tym, jak można to skonfigurować. W zależności od tego, co chcesz dostarczyć, będziesz musiał zainstalować dodatkowe biblioteki i pliki binarne.


Ubuntu Społeczność internetowa mówi

Tworzenie chroot

  1. Zainstaluj pakiety dchroot i debootstrap.

  2. Jako administrator (tj. Używając sudo) utwórz nowy katalog dla chroot. W tej procedurze /var/chrootzostanie wykorzystany katalog . Aby to zrobić, wpisz sudo mkdir /var/chroot w wierszu polecenia.

  3. Jako administrator otwórz /etc/schroot/schroot.confw edytorze tekstu. Wpisz cd /etc/schroot, a następnie gksu gedit schroot.conf. Umożliwi to edycję pliku.

  4. Dodaj następujące wiersze do, schroot.confa następnie zapisz i zamknij plik. Zastąp your_usernameswoją nazwą użytkownika.

    [lucid] description = Ubuntu Lucid location = / var / chroot priorytet = 3 użytkowników = twoja_nazwa_użytkownika groups = sbuild root-groups = root

Otwórz terminal i wpisz:

sudo debootstrap --variant=buildd --arch i386 lucid /var/chroot/ \ 
http://mirror.url.com/ubuntu/

Spowoduje to utworzenie podstawowej „instalacji” Ubuntu 10.04 (Lucid Lynx) w chroot. Pobieranie pakietów może chwilę potrwać. Uwaga: możesz zastąpić przejrzystą wybraną wersją Ubuntu. Uwaga: musisz zmienić powyższe, mirror.url.compodając adres URL prawidłowego lokalnego kopii zapasowej archiwum. Powinien zostać utworzony podstawowy chroot. Wpisz, sudo chroot /var/chroot aby zmienić na skorupę roota w chroocie.

Konfigurowanie chroota

Istnieje kilka podstawowych kroków, które możesz podjąć, aby skonfigurować chroot, zapewniając takie funkcje, jak rozpoznawanie DNS i dostęp do niego /proc.

Uwaga: Wpisz te polecenia w powłoce, która znajduje się poza chroot.

Wpisz następujące polecenie, aby zamontować /proc system plików w chroot (wymagany do zarządzania procesami):

sudo mount -o bind /proc /var/chroot/proc  

Wpisz następujące polecenie, aby zezwolić na rozpoznawanie DNS z poziomu chroot (wymagane do uzyskania dostępu do Internetu):

sudo cp /etc/resolv.conf /var/chroot/etc/resolv.conf 

Bardzo niewiele pakietów jest instalowanych domyślnie w chroot (nawet sudo nie jest zainstalowane). Służy apt-get install package_namedo instalowania pakietów.

RedGrittyBrick
źródło
16

Najlepszym rozwiązaniem, IMHO, jest utworzenie więzienia chroot ssh, tj. Minimalnego środowiska bash w katalogu /var/www/example.com/. Aby to zrobić, możesz wykonać następujące czynności:

celebdor
źródło