Próbuję skonfigurować serwer zapasowy. Chcę zrootować każdego użytkownika (klienta) do jego katalogu domowego i pozwolić mu tylko na używanie sftp i rsync .
Szybko odkryłem, że nie tylko ja próbowałem zrobić coś takiego, znalazłem ten przewodnik i poszedłem za nim. Więc teraz mam użytkowników chroot tylko z sftp.
Potem dowiedziałem się, że rsync potrzebuje ssh do odrodzenia się na drugiej maszynie i że sftp to za mało. Nadanie każdemu użytkownikowi loginu ssh to coś, czego chciałem przede wszystkim uniknąć.
Czy ktoś może wymyślić jakieś możliwe rozwiązania?
Dziękuję Ci,
znak
Odpowiedzi:
Rozwiązanie sftp wymagałoby również logowania ssh dla wszystkich, więc tak naprawdę nic tu nie straciłeś. Udzielania dostępu ssh niekoniecznie oznacza pełny dostęp do powłoki, na przykład ten pokazuje, jak używać ssh
authorized_keys
plik, aby umożliwić tworzenie kopii zapasowych za pomocą rsync przy jednoczesnym ograniczeniu dostępnych poleceń tylko odbiornika rsync.W rzeczywistości, jeśli wybierzesz uwierzytelnianie oparte na kluczu zamiast uwierzytelniania za pomocą hasła (co powinieneś), możesz uruchomić wszystko na jednym koncie użytkownika zamiast wymagać wielu kont. Używałbyś kluczy do identyfikacji zdalnych użytkowników i skierowałbyś odbiornik rsync do określonego katalogu.
Coś takiego w twoim
authorized_keys
pliku:Ktoś używający
user1
klucza prywatnego wykona kopię zapasową/tmp/user1
, a osoba używającauser2
klucza prywatnego utworzy kopię zapasową/tmp/user2
. I tak dalej...źródło
Wykonuj zwykle
rsync
z klienta na serwer zdalny, ale dodaj dodatkowy pełny przełącznikSSH -v
:, a następnie grep dlaSending command
. Zobaczysz dokładne polecenie klienta wysyłane na zdalny serwer:W moim przypadku tak było
Dodaj to jako
command="..."
do/home/USER/.ssh/authorized_keys
pliku serwera zdalnego , jak wspomniano w @larsks. Dodaj dodatkowe ustawienia zabezpieczeń, jeśli to konieczne:no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAAAB3NzaC1yc2..CPhIJ+LVULWz arnis@server
Wszyscy razem:
(Zaczerpnięte z bardzo dobrego samouczka http://en.positon.org/post/Rsync-command-restriction-over-SSH )
źródło
Musisz mieć dostęp do powłoki, aby móc korzystać z rsync, chyba że łączysz się bezpośrednio z serwerem rsync - domyślny port to 873 (TCP).
Ze strony podręcznika rysnc :
Aby zapewnić ograniczony dostęp do powłoki, rozważ następujący przewodnik . (Uwaga: oryginalny link nie działa) Podsumowanie:
Lub zapoznać się za pomocą rssh (tam jest przewodnikiem do konfigurowania rssh tutaj ):
źródło
rrsync
zamiast rssh, zawartego w oficjalnym pakiecie rsync. Zobacz derek.simkowiak.net/backing-up-multiple-servers-with-rsnapshotmożesz napisać powłokę, która otacza rsync.
spójrz na ogólny pomysł tutaj: https://sixohthree.com/1458/locking-down-rsync-using-ssh
w swojej owijającej skorupie możesz robić, co chcesz i być może chrootować użytkownika.
W moim przypadku musiałem włączyć konto wirtualne przy użyciu tego samego użytkownika * nix. Udaje mi się to za pomocą tego rodzaju powłoki oraz wielu wierszy w pliku autoryzowanych_kluczy. Nie chrootowałem użytkownika, ale dodałem poziom folderu użytkownika w poleceniu serwera rsync.
spojrzeć na użytkownika procesu inaczej, używając klucza ssh
źródło
SFTP z funkcjami Rsync, bez powłoki
Możesz używać LFTP + SFTP w środowisku chroot i osiągać takie same wyniki jak przy użyciu rsync, bez dostarczania użytkownikowi powłoki lub robienia ciężkich dostosowań w ssh za pomocą wrapperów.
Jest to bezpieczniejsze i może być znacznie szybsze.
źródło
Rsync w chroocie jest trudny :) Musisz skonfigurować minimalne środowisko dla / bin / sh i / usr / bin / rsync w katalogu chrootowanym (po stronie docelowej), aby działało.
Zobacz cały artykuł tutaj, konfiguracja środowiska rsync jest do końca
https://medium.com/@deltazero/linux-remote-backup-rsync-chroot-d797ba6babe5
źródło