Bezpieczne sieciowe systemy plików dla systemu Linux: co robią ludzie?


26

NFSv3 jest szeroko rozpowszechniony, ale domyślny model bezpieczeństwa jest ... oryginalny . CIFS może korzystać z uwierzytelniania Kerberos, ale bez semantyki POSIX nie uruchamia się. AFS nigdy nie szyfrował ruchu w sieci i jest krb4 - i zasadniczo martwym projektem. Fantazyjne nowe eksperymentalne systemy plików albo nigdy się nie materializują, albo koncentrują się na szybkości (a jeśli masz szczęście, na niezawodności danych) - na przykład Luster używa tego samego modelu zaufania klienta, co NFSv3. Do użytku domowego sshfs jest fajny, ale z pewnością nie skaluje się.

No i oczywiście jest NFSv4, z sec = krb5p. Świetny w teorii, ale po dziesięciu latach wydaje się być niepokojąco nieużywany w prawdziwym świecie. Klient Linuksa właśnie usunął eksperymentalny tag. A jeśli spojrzysz na EMC Celerra, Isilon itp., To wszystko to NFSv3. (Celerra obsługuje NFSv4, ale jest naprawdę zakopana w dokumentacji. Isilon najwyraźniej pracował nad dodaniem obsługi RPCGSS do FreeBSD, więc może nadchodzi, ale nie ma go teraz.) Nie mogę nawet oznaczyć tego postu jako „nfsv4”, ponieważ ja jestem tu nowy i to byłby nowy tag .

Tak, naprawdę . Co wy wszyscy robiliście?


Chciałbym powiedzieć „NFS3 przez IPSEC”, ale nie mogę.
sysadmin1138

1
„NFS3 przez IPSEC” pomaga w bezpośrednim problemie, ale nie rozwiązuje innego podstawowego problemu NFS: jeśli klient zostanie zrootowany lub jeśli jesteś w środowisku, w którym użytkownicy rootują na swoich systemach, może w prosty sposób podszywać się pod dowolnego użytkownika zdalnego.
mattdm,

Proszę bardzo, nowy tag;)
Cry Havok

1
AFAIK, Kerberos został zdefiniowany dla NFS
Javier

2
Nie jestem pewien, czy istnieje potrzeba szyfrowania ruchu w sieci w środowisku LAN (uwierzytelnianie powinno być szyfrowane). W każdym razie powinieneś monitorować zatrucie ARP ...
Hubert Kario

Odpowiedzi:


8

Ponieważ jest to konkretne pytanie (co wszyscy robicie), odpowiedzmy na to: nic. Większość administratorów i użytkowników nie martwi się o bezpieczeństwo NFS, więc wszyscy używają NFSv3. Zazwyczaj jest to kontrolowane środowisko (w tym sensie, że tylko dobrze znane maszyny mogą podłączyć się do sieci w pierwszej kolejności). Jeśli ktoś zostanie przyłapany na nadużywaniu infrastruktury, zostanie zwolniony lub trafi do więzienia.

W przypadku danych, których tak naprawdę nie chcesz, aby ktokolwiek mógł je odczytać, szyfrujesz je jawnie, np. Bazy danych haseł Firefoksa, klucze ssh lub klucze pgp. Robisz to, ponieważ wiesz, że administrator może je odczytać na serwerze plików, więc zabezpieczenia sieciowego systemu plików i tak nie byłyby pomocne.


14

Wygląda na to, że zadajesz tutaj dwa pytania:

Czego tak naprawdę używamy? i co to robi?

Co ja właściwie jest za pomocą CIFS, w moich sprawach użytkowych POSIX jest mniej ważne, więc nie miałem żadnych problemów. NFS3 jest używany w obszarach, w których bezpieczeństwo nie jest ważne, takich jak mój serwer instalacyjny SLES. I wreszcie sshfs / gvfs do prostego udostępniania ziemi użytkownika. Szyfrowanie przewodowe nie jest uważane za potrzebne, więc nie jest to dla nas znaczący czynnik.

Co do drugiego pytania, wydaje się, że istnieje sześć głównych wymagań dotyczących tego, czego szukasz:

  1. Szyfruje ruch na drucie.
  2. Szyfruje uwierzytelnianie.
  3. Semantyka Posix.
  4. Silne wymuszanie ACL opartych na serwerze.
  5. Nie jest miejscem użytkownika.
  6. Jest faktycznie używany.

Podejrzewam, że punkty 5 i 6 będą tutaj zabójcami, ale tutaj idzie (również w tym miejscu stół byłby naprawdę przydatny, ale markdown / StackExchange go nie obsługuje).

NFSv3 + IPSec

  1. Zaszyfrowane na drucie, podaj
  2. Brak szyfrowanego uwierzytelnienia, błąd
  3. Semantyka Posix, zaliczenie
  4. Brak silnego wymuszania list ACL opartych na serwerze, błąd
  5. To nie jest przestrzeń użytkownika, przekazać
  6. Jest faktycznie używany, przekazać

NFSv4 + Krb + IPSec

  1. Zaszyfrowane na drucie, podaj
  2. Szyfrowane uwierzytelnianie, hasło
  3. Semantyka Posix, zaliczenie
  4. Silne wymuszanie ACL opartych na serwerze, przekazać
  5. To nie jest przestrzeń użytkownika, przekazać
  6. Nie jest faktycznie używane, nie powiodło się

CIFS

  1. Nie szyfrowane na przewodzie, nie powiodło się
  2. Szyfrowane uwierzytelnianie
  3. Semantyka Posix, zaliczenie (Samba i jądro teraz, Windows ma warstwę Posix od czasów NT)
  4. Silne wymuszanie ACL opartych na serwerze, przekazać
  5. To nie jest przestrzeń użytkownika, przekazać
  6. Jest faktycznie używany, przekazać

CIFS + IPSec

  1. Zaszyfrowane na drucie, podaj
  2. Szyfrowane uwierzytelnianie
  3. Semantyka Posix, zaliczenie (teraz Samba i jądro)
  4. Silne wymuszanie ACL opartych na serwerze, przekazać
  5. To nie jest przestrzeń użytkownika, przekazać
  6. Nie jest faktycznie używane, nie powiodło się

SSHFS

  1. Zaszyfrowane na drucie, podaj
  2. Szyfrowane uwierzytelnianie, hasło
  3. Semantyka Posix, zaliczenie
  4. Silne wymuszanie ACL opartych na serwerze, przekazać
  5. Czy userland, nie
  6. Jest faktycznie używany, przekazać

AFP / NetATalk

  1. Zaszyfrowane na przewodzie, nie działają
  2. Szyfrowane uwierzytelnianie, hasło
  3. Semantyka Posix, zaliczenie
  4. Silne wymuszanie ACL opartych na serwerze, przekazać
  5. To nie jest przestrzeń użytkownika, przekazać
  6. Jest faktycznie używane, nie powiodło się

I nie dotykam rozproszonych systemów plików. Po prostu nie ma jednej rzeczy, która to wszystko robi. Niektóre się zbliżają (CIFS), a niektóre już tam są, ale nikt ich nie używa (NFS4 + IPSec, CIFS + IPSec). Z jakiegoś powodu bezpieczny system plików w sieci był przedmiotem wielu kompromisów na przestrzeni lat.


Mógłbyś wspomnieć o „NFSv4 + Krb” i dodać „7. Czy jest dość szybki (tj. W porównaniu do tego samego stosu protokołu bez szyfrowania)?” jako pytanie. Co byłoby prawdopodobnie porażką dla NFSv4 + krb5p, ale należy przejść do pytań 1-6.
al.

może być czas na nowy bezpieczny sieciowy system plików SNFS?
The Unix Janitor,

@ user37899 Problemem, jak zawsze, jest przekonanie dostawców urządzeń do wsparcia i organizacji do wdrożenia.
sysadmin1138

1
Naprawdę mieliśmy pecha, próbując używać CIFS w trybie POSIX. Może czas to jeszcze raz odwiedzić.
mattdm,

FWIW Korzystam z CIFS + IPsec, ale nie z semantyką POSIX. serwer to emc celerra, klienci win7. tunele ipsec wykonane w trybie lan-to-lan między cisco ASA (obok Celerra) a wbudowanym Winsec ipsec.
Dan Pritts

3

Używam openafs w produkcji od lat, zarówno z klientami Linux i Windows. Działa świetnie, ma aktywną społeczność programistów i stało się znacznie łatwiejsze do zainstalowania i administrowania w ciągu ostatnich kilku lat, ponieważ różne dystrybucje Linuksa zawierały dla niego opakowanie. Ma brodawki, ale zauważyłem, że są one kompensowane przez większą elastyczność administracyjną, możliwość oddzielania klientów i serwerów powolnymi linkami, łatwość tworzenia kopii zapasowych poza biurem i inne pozytywne AFSizmy.

Jedną z rzeczy, które szczególnie lubię, jest uruchamianie produkcyjnych serwerów internetowych skierowanych do Internetu na openafs, z zablokowanymi listami ACL. Bez biletu Kerberos na komputerze nie ma żadnego procesu - nawet takiego uruchomionego jako root - który mógłby zapisywać w systemie plików. Nie mogę policzyć, ile razy zauważyliśmy, że ataki całkowicie zawodzą z powodu tej prostej miary.

Jest kilku całkiem dużych użytkowników openafs - największym komercyjnym użytkownikiem, jakiego znam, jest Morgan Stanley.


1

Co powiesz na OpenAFS, który wciąż żyje i VPN pod nim, ponieważ jego jedynym szyfrowaniem w tej chwili jest DES.


2
Użyłem OpenAFS w produkcji. Pogłoski o jego żywotności są mocno przesadzone.
mattdm

W tym miesiącu pojawiła się nowa wersja, a wcześniej były dość regularne aktualizacje w celu obsługi nowych wersji systemu Windows i nowych wersji jądra Linux (najnowsza wersja obsługuje 3.0).
Hubert Kario

1

Widzę, że wiele osób w tym wątku mówi o ukrywaniu danych, tj. Atakach, które nie są w stanie szpiegować danych. Równie ważne jest, aby pomyśleć o integralności i autentyczności danych. Czy ten pakiet NFS naprawdę pochodzi z Twojego serwera NFS? Czy pakiet nfs został zmieniony podczas transportu?


Zajmuje się tym NFS przez IPsec (na łączach rozległych), a monitorowanie zatruć ARP robi to w sieci LAN
Hubert Kario

czy ktoś z powodzeniem używa ipsec?
The Unix Janitor

1

Cóż, dla mnie to wygląda na jeden z tych rozproszonych systemów plików. Nie bardzo chciałbym polecać OpenAFS, ponieważ jest stary, nie obsługuje jeszcze IPv6, ..

Jestem całkiem zadowolony z GlusterFS . Gluster jest dość dojrzały, działa dobrze i ma dobry zestaw funkcji. Jednak, jak ostatnio dyskutowano w IRC, Gluster również nie obsługuje IPv6 w stabilny sposób. Ta funkcja zostanie zaplanowana na 3.6 lub 3.7.

Istnieje również projekt o nazwie HekaFS, oparty na Glusterze, który dodaje bardziej zaawansowane funkcje uwierzytelniania i SSL. Jest bardzo dobrze udokumentowany i bardzo dobrze zaprojektowany.

To, co może Cię również zainteresować, to XtreemFS , który jest przeznaczony do globalnego przetwarzania gridowego , więc domyślnie jest wyposażony w SSL i inne rzeczy. Mój wybór padł na Glustera, ponieważ społeczność wydaje się bardziej aktywna i jest znacznie lepiej udokumentowana.

Oba są oczywiście zgodne z posiksami.


0

Używam NFS. Ale NFS między serwerami odbywa się za pośrednictwem dedykowanego szkieletu sieciowego, więc szyfrowanie nie jest potrzebne, a uwierzytelnianie jest bezcelowe. Wystarczy ustawić każdy eksport, aby współdzielił tylko wybrany katalog z serwerem na podstawie adresu IP.


sieć dedykowana, dopóki ktoś nie włączy do szafy przełącznika z wireshark.
The Unix Janitor

To jest zatem problem bezpieczeństwa fizycznego. Gdy są już w tym samym pokoju co serwery, gra się kończy.
Weranda

-2

Z całym szacunkiem patrzysz całkowicie na ten problem w niewłaściwy sposób i powinieneś wycofać się z konsoli na kilka godzin.

Prawie cała pamięć io jest niezaszyfrowana, ponieważ nie ma znaczenia na tej warstwie stosu abstrakcji. Wątpię? Stuknij przełącznik brokatowego włókna, a zobaczysz, że kanał światłowodowy, podobnie jak iscsi i nfs, to nieszyfrowany bałagan - z założenia. Rozwiązanie jest średnim problemem, a nie problemem protokołu pamięci. Na przykład chcesz mieć bezpieczny i zaszyfrowany system plików? Utworzono sieć LAN, która jest szyfrowana punkt-punkt między klientem nfs a serwerem przy użyciu ipsec / ssl / tls lub czystego rozwiązania sprzętowego.


Myślę, że brakuje ci kluczowego punktu. Jak mówi pytanie, problem dotyczy modelu bezpieczeństwa NFS. Chociaż szyfrowanie jest dobre, jest, jak mówisz, problemem do rozwiązania. Dużym problemem związanym z NFS jest to, że po zamontowaniu systemu plików w systemie, każdy z dostępem roota w tym systemie może uzyskać dostęp do dowolnego pliku w tym systemie plików, bez względu na własność lub uprawnienia. System taki jak AFS lub teoretycznie NFSv4 z sec = krbp5 wymaga silnych poświadczeń, aby uzyskać dostęp do plików, a zatem stanowi znaczny wzrost bezpieczeństwa. Zrootowany klient NFS nie jest równoznaczny z masową ekspozycją danych.
larsks

1
O ile nie poprosisz użytkownika o wprowadzenie poświadczeń dla każdego dostępu, poświadczenia zostaną zapisane. Klient z rootem prawdopodobnie łatwo zrezygnuje z przechowywanego klucza. Każdy sieciowy system plików zwiększy narażenie systemu plików na kompromisy.
BillThor,

@BillThor Właśnie o tym myślałem. Czy nadal można atakować, jeśli poświadczenia znajdują się w pamięci jądra? Myślę, że moduł jądra można załadować, aby odczytać dowolny fragment pamięci jądra.
Rob Olmos,

Tak długo, jak żądanie jest używane w kontekście użytkownika z dostępem do pamięci współdzielonej, prawdopodobnie nie ma znaczenia, gdzie znajdują się poświadczenia. Poświadczenia są często przechowywane przez proces działający w tle, więc każdy, kto może się z nim komunikować, może uzyskać dostęp do wspólnej pamięci. Oceniłbym ryzyko związane z zabezpieczoną pamięcią sieciową mniej więcej tak samo jak pamięć lokalna.
BillThor,

2
@BillThor: w przypadku Kerberos ryzyko jest znacznie zmniejszone, ponieważ osoba atakująca miałaby dostęp do systemów plików użytkowników, którzy przesłali swoje bilety, i tylko przez cały okres ich ważności. Dzięki uwierzytelnianiu opartemu na systemie (a la nfsv3) root może uzyskiwać dostęp do plików dowolnego użytkownika i manipulować nim , nawet jeśli ten użytkownik nigdy nie miał nic wspólnego z zaatakowanym systemem.
mattdm
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.