Prosty i łatwy sposób na uwięzienie użytkowników

33

Potrzebuję prostego i łatwego sposobu uwięzienia użytkowników w ich katalogach domowych w Oneiric. Czy masz prostą konfigurację do więzienia użytkowników, z pełną pomocą lub dobre linki internetowe?

Oferowałbym darmowy publiczny serwer online z 10 do 20 GB wolnego miejsca. Nie wiem ilu użytkowników. Chcę dać im SSH i SFTP, aby mogli połączyć się przez FileZilla.

One Zero
źródło
Druga aktualizacja, jeśli użytkownicy nie są zamknięci w katalogach domowych
One Zero
wtedy uważam, że 1 - jak wspomniano w @Marco, chcesz wypróbować ChrootDirectory dla SSH 2 - możesz wyjść poza standardowe sposoby robienia rzeczy, ponieważ musisz to skalować, aby obsłużyć „dużo” pamięci, ... 3- Czy SSH jest najlepszym wyborem? czy ludzie potrzebują SSH do Twojej usługi? 4
Ali
1
mam też inny plan .... dla zwykłych użytkowników oferowalibyśmy tylko SFTP z MY SECURE SHELL, to bardzo łatwe 2 uchwyty
One Zero
Jak mogę usunąć to więzienie np. (Dom / więzienie)? <br> A kiedy dodam sekcję więzienia, np. Jk_init -v -f / home / jail netutils, jak to usunąć?

Odpowiedzi:

23

Jailkit to zestaw narzędzi, które mogą ograniczyć konta użytkowników do określonego drzewa katalogów i określonych poleceń. Utworzenie więzienia jest o wiele łatwiejsze dzięki narzędziom Jailkit, które robią to „ręcznie”. Więzienie to drzewo katalogów tworzone w systemie plików; użytkownik nie widzi żadnych katalogów ani plików spoza katalogu więzienia. Użytkownik jest więziony w tym katalogu i podkatalogach.

Pobierz i zainstaluj:

http://olivier.sessink.nl/jailkit/index.html#download

VERSION=2.20 # from November 2018
cd /tmp
wget https://olivier.sessink.nl/jailkit/jailkit-$VERSION.tar.gz
tar -zxvf jailkit-$VERSION.tar.gz
cd jailkit-$VERSION/
./configure
make
su -
make install

Utworzenie więzienia

Teraz nadszedł czas, aby skonfigurować katalog więzienia. Więzieni użytkownicy zobaczą ten katalog jako katalog główny serwera. Wybrałem / home / więzienie:

mkdir /home/jail
chown root:root /home/jail

jk_init może być użyty do szybkiego utworzenia więzienia z kilkoma plikami lub katalogami potrzebnymi do konkretnego zadania lub profilu (kliknij na niego i przeczytaj wszystkie szczegóły).

jk_init -v /home/jail basicshell
jk_init -v /home/jail netutils
jk_init -v /home/jail ssh
jk_init -v /home/jail jk_lsh

Dodaj użytkownika

Dodaj nowego użytkownika z katalogiem domowym i powłoką bash i ustaw hasło:

useradd -d /home/jailtest -m jailtest -s /bin/bash
passwd jailtest

Teraz czas uwięzić tego użytkownika

użyj następującego polecenia:

jk_jailuser -m -j /home/jail jailtest

Twój /etc/passwdpowinien teraz zawierać coś takiego:

jailtest:x:1001:1001::/home/jail/./home/jailtest:/usr/sbin/jk_chrootsh

Włącz bash

Za pomocą jk_cp biblioteki bash są kopiowane do więzienia:

jk_cp -v -f /home/jail /bin/bash

Edytować /home/jail/etc/passwd

zamień ten wiersz:

jailtest:x:1001:1001::test:/usr/sbin/jk_lsh

z tym:

jailtest:x:1001:1001::/home/jailtest:/bin/bash

Konserwacja

Dzięki zastosowaniu jk_updateaktualizacji w prawdziwym systemie można aktualizować w więzieniu.

Dry-run pokaże, co się dzieje:

jk_update -j /home/jail -d

Bez argumentu -d wykonywana jest prawdziwa aktualizacja. Więcej operacji konserwacyjnych można znaleźć tutaj.

(W przypadku /home/jail/optbraku, utwórz go za pomocą mkdir -p /home/jail/opt/ i uruchom jk_update -j /home/jailponownie)

Daj dostęp do innych katalogów

Możesz montować specjalne foldery, do których użytkownik więzienia może uzyskać dostęp teraz. Na przykład:

mount --bind /media/$USER/Data/ /home/jail/home/jailtest/test/

Podjęta pomoc

http://olivier.sessink.nl/jailkit/howtos_chroot_shell.html

http://olivier.sessink.nl/jailkit/index.html#intro (bardzo dobra pomoc)

Ten też

Zostało to sprawdzone i zweryfikowane, działa poprawnie

One Zero
źródło
+1 bardzo dobrze. gorąco polecam również przeczytanie linków wspomnianych powyżej w sekcji „Pomoc podjęta”
cwd
2
To nie działa na Ubuntu 13.10. Podczas próby zalogowania się pojawia się komunikat powitalny, a następnie połączenie zostaje zamknięte.
Matt H
Matt H: Pamiętaj, aby wykonać dwa ostatnie kroki; kopiowanie plików bash i edytowanie pliku / home / jail / etc / passwd.
ONOZ
2
To albo już nie działa, albo coś się zmieniło od czasu wprowadzenia tego samouczka. Dostaję dokładnie takie same problemy jak MattH.
James Heald
Problem z połączeniem został również zamknięty natychmiast po wiadomości powitalnej. Zmieniłem powłokę logowania w pliku chroot passwd z jk_lsh na bash, jak czytam tutaj linuxquestions.org/questions/linux-software-2/... To nie jest rozwiązanie, ale obejście!
Attila Fulop
6

Nie możesz ograniczyć ich do / home, ponieważ potrzebują dostępu do plików binarnych systemu oraz plików bash i konfiguracyjnych w / etc

IMO najłatwiejszą metodą zabezpieczenia użytkowników jest użycie apparmor.

Tworzysz twardy link

ln /bin/bash /usr/local/bin/jailbash

Dodajesz jailbash do / etc / shells

Następnie przypisujesz jailbash do powłoki użytkowników, a następnie piszesz profil apparmor dla jailbash, umożliwiając minimalny dostęp.

sudo chsh -s /usr/local/bin/jailbash user_to_confine

Będziesz musiał sam napisać profil Apparmor, ale ja mam profil, od którego możesz zacząć

http://bodhizazen.com/aa-profiles/bodhizazen/ubuntu-10.04/usr.local.bin.jailbash

Pantera
źródło
You can not confine them to /home as they need access to the system binaries and bash and configuration files in /etcNic nie stoi na przeszkodzie, abyś łączył / kopiował pliki, które uważasz za potrzebne.
user606723,
1
Tak, możesz to zrobić, jak sugeruje user606723, ale nie jest to takie łatwe, a IMO wszystkich potencjalnych rozwiązań jest najmniej praktyczne lub łatwe. Równie dobrze możesz zbudować chroot lub użyć lxc. Kopiujesz plik binarny, a następnie biblioteki lib. Często trzeba ręcznie zidentyfikować biblioteki lib za pomocą ldd. Ta metoda wymaga mnóstwo pracy. A potem musisz aktualizować więzienie, będziesz musiał ręcznie zaktualizować (skopiować) pliki binarne / lib. Linki mogą działać lepiej pod względem aktualizacji, ale nadal musisz je wszystkie skonfigurować. Jakoś nie sądzę, żeby o to chodziło PO. Jak więc utrzymać je w ryzach?
Panther
1
Myślę, że sedno pytania polegało na wskazaniu narzędzi do automatyzacji tego procesu ... na przykład jailkitnarzędzia, o którym wspomina OP.
user606723,
@ bodhi.zazen. co o tym sądzisz .. debootstrap (oneiric), a następnie utwórz kontener za pomocą lxc. za pomocą zestawu więziennego> użytkownik do kontenera>. do tej pory zrobiłem to, że mam debirotstrap oneiric minimum, a następnie użyłem jailkit> działa dobrze
One Zero
możesz użyć LXC do tego zadania, uważaj, że izolacja jest czasami niepełna z LXC. Dopóki użytkownicy nie mają dostępu do konta root w kontenerze, powinieneś być OK i możesz chcieć zapisać się na listę mailingową LXC.
Panther
1

Trudno zgadnąć, jaki cel możesz osiągnąć. Jeśli ma odmówić ssh / sftp podczas zapewniania dostępu do więzienia przez FTP ... łatwe:

Dodaj do / etc / shells nową powłokę:

sudo -e /etc/shells

Dodaj jedną linię:

/bin/false

Zapisać. Dla każdego użytkownika, któremu chcesz odmówić ssh / sftp, zmień jego powłokę:

sudo chsh -s /bin/false userx

Teraz userx nie może się zalogować przez ssh / sftp.

Zainstaluj vsftpd:

sudo apt-get install vsftpd

Edytuj plik konfiguracyjny:

sudo -e /etc/vsftpd.conf

I kilka zmian ....

anonymous_enable=NO
local_enable=YES
chroot_local_user=YES

Zapisać. Uruchom ponownie vsftpd:

sudo /etc/init.d/vsftpd restart

źródło
cóż, chcę dać im ssh + sftp (połączenie przez filezilla)
One Zero
0

Możesz sprawdzić rbashjako powłokę dla swoich użytkowników.

man bash

Wyszukaj RESTRICTED SHELLsekcję

Lub spójrz na tę stronę http://linux.die.net/man/1/bash

Karlson
źródło
3
Bądź bardzo ostrożny z rbash, bardzo łatwo się z niego wydostać i uważa się za przestarzały. Zobacz blog.bodhizazen.net/linux/how-to-restrict-access-with-rbash
Panther
@ bodhi.zazen Masz na myśli rbash?
Karlson,
tak, przepraszam, że to naprawiłem. Kilka lat temu był blog, w którym ktoś złamał nasze rbashowe więzienie, które założyłem i myślałem, że to było ciasne, minimalne. Zajęło im to mniej niż 5 minut. Nikt nie uciekł z więzienia.
Panther
czy możesz mi powiedzieć, jak to skonfigurować ... jailbash
One Zero
tak, man bash pomaga, korzystanie z możliwości ograniczonej powłoki bash jest
prostsze