Zabezpieczanie systemu plików dla bezpiecznego serwera SFTP

12

To może nie wydawać się pytaniem rozwojowym, ale w istocie tak jest. Pozwól, że wyjaśnię jak. Naszym głównym celem rozwoju jest dynamiczne strony z treściami. Niektórzy z naszych klientów poprosili nas o pozwolenie na miejsce na naszych serwerach (za które płacą) za ich starą zawartość statyczną. Używamy tego, by dać klientowi konto ftp w innej domenie. (np. domeną klienta jest customer.com, ale uzyskiwali oni dostęp do swoich treści statycznych przez otherdomain.com/customerstatic).

Teraz chcemy zwiększyć bezpieczeństwo, dając klientom konta sftp na ich serwerach Linux. Korzystam z openssh / sftp-server w środowisku powłoki, aby nie mogli się logować ani wykonywać poleceń.

Problem polega na tym, że z natury wiele plików systemu plików jest domyślnie (drwxr-xr-x), co oznacza, że ​​każdy użytkownik będzie mógł odczytać zawartość katalogu i ewentualnie niektórych plików. Nie sądzę, aby zmiana całego systemu plików na -rwxr-x - x była mądrym posunięciem, ponieważ nie wiem, ile plików systemowych będzie potrzebowało tego uprawnienia do odczytu.

Czy ktoś w przeszłości zmierzył się z tym problemem? Jeśli tak, czy mógłbyś oświecić drogę?

Dzięki

anon
źródło
Dobre pytanie i zwięzła pełna odpowiedź - moderator prawdopodobnie powinien zmienić tytuł i zamienić go w pytanie inne niż wiki.
MikeyB
nie można cofnąć wiki pytania; przepraszam
Jeff Atwood

Odpowiedzi:

22

SFTP z natury nie jest niepewny; wpuszczanie ich do całego systemu plików jest. Sprawdź to, aby dowiedzieć się, w jaki sposób możesz włączyć dostęp SFTP na zasadzie chroot , co spowoduje zablokowanie katalogów, do których mogą uzyskać dostęp, powiedzmy, ich katalogów domowych lub gdziekolwiek chcesz.

W systemie Linux zwrócę uwagę na tę część (konfigurowanie / etc / ssh / sshd_config):

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

Oznacza to, że każdy w grupie użytkowników „sftponly” byłby ograniczony do swoich katalogów domowych.

Zobacz link, aby uzyskać więcej, a także przeczytaj stronę podręcznika sshd_config. Mam nadzieję, że to pomaga.

Josh K.
źródło
Ponadto może być konieczne powiadomienie OpenSSH, aby korzystał z niego, internal-sftpgdy klient zażąda podsystemu sftp - być może skonfigurowano korzystanie z sftp-serverprogramu zewnętrznego . Aby to zrobić, dodaj lub zmień wiersz Subsystem sftp internal-sftpw głównej sekcji pliku konfiguracyjnego (nie w Matchsekcji).
Nate
Josh, czy kiedykolwiek wymyśliłeś sposób, aby nie wymagać własności roota katalogów domowych użytkowników?
Matt Simmons,
1

Kiedy mówisz „Wiele systemów plików są domyślnie 755 zezwoleń”, że faktycznie oznacza domyślne umask jest ustawiony na 022. Możesz zmienić to ustawienie domyślne (dla nowych plików) poprzez ustawienie parametru umask na 027, który może sprawić, że domyślne uprawnienia 750 lub ustaw umask na 007, co spowoduje, że domyślne uprawnienia będą 770.

Brent
źródło
0

Możesz rozważyć utworzenie serwera OpenVZ, a następnie utworzenie osobnego małego „kontenera” ftp / sftp VM dla każdej firmy. Dzięki temu wszystkie są oddzielone, a gdy już poznasz OpenVZ, jest to naprawdę przydatne dla tego rodzaju drobiazgów.

Kyle Brandt
źródło