1 / 50
Serwery plików: SMB (Samba) i NFS
Cel slajdu: Slajd wprowadza dwa podstawowe protokoły sieciowego współdzielenia plików oraz pokazuje różnice architektoniczne między środowiskiem Windows a środowiskiem Unix i Linux.

SMB i NFS – dwa filary sieciowego współdzielenia zasobów plikowych

  • Fundamentalne protokoły współdzielenia danych: Sieciowe systemy plików stanowią podstawę infrastruktury IT, umożliwiając scentralizowany dostęp do zasobów dyskowych w sieciach lokalnych (LAN) oraz rozległych (WAN).
  • SMB (Server Message Block) / CIFS: Rodzimy protokół środowiska Microsoft Windows, w pełni implementowany w systemach uniksowych i linuksowych za pośrednictwem pakietu oprogramowania Samba.
  • NFS (Network File System): Standard natywny dla środowisk uniksowych oraz dystrybucji Linux, opracowany przez Sun Microsystems i standaryzowany przez IETF (RFC 1813, RFC 7530).
  • Zróżnicowanie architektoniczne: Odmienne modele uwierzytelniania (NTLM/Kerberos vs AUTH_SYS/RPCSEC_GSS), semantyka blokowania plików (oplocks, leasing vs NLM, stanowość NFSv4) oraz mechanizmy kontroli dostępu (Windows ACL vs uprawnienia POSIX i NFSv4 ACL).
  • Wymagania współczesnych sieci: Zapewnienie poufności transmisji poprzez szyfrowanie end-to-end, wysoka dostępność (High Availability) oraz odporność na awarie węzłów w klastrach obliczeniowych.
Sieciowy system plików (ang. network file system): Sieciowy system plików to warstwa oprogramowania umożliwiająca przezroczysty dostęp do zdalnych zasobów dyskowych za pomocą standardowych operacji plikowych. W środowisku Windows rolę tę pełni protokół SMB implementowany przez pakiet Samba (dokumentacja Samba), a w środowisku Unix i Linux protokół NFS opisany między innymi w dokumencie RFC 7530 dla wersji NFSv4. Wybór protokołu wynika z modelu uwierzytelniania oraz semantyki uprawnień przyjętej w danym systemie operacyjnym.
ASK_prez09_s01
2 / 50
Cel warsztatu – współdzielenie plików sieciowych
Cel slajdu: Slajd określa wymagane efekty uczenia się, czyli wiedzę i umiejętności praktyczne, które uczestnik opanuje podczas konfiguracji serwerów plików.

Praktyczna konfiguracja i bezpieczeństwo serwerów plików

  • Zrozumienie fundamentów protokołów: Szczegółowe poznanie architektury, dialektów, mechanizmów transportowych oraz różnic funkcjonalnych między protokołami SMB i NFS.
  • Konfiguracja usług serwerowych: Nabycie praktycznych umiejętności wdrażania serwera Samba (smbd, nmbd) oraz jądrowego serwera NFS (nfs-kernel-server) w systemie Linux.
  • Projektowanie kontroli dostępu: Wdrażanie uprawnień na poziomie udziałów sieciowych oraz precyzyjne mapowanie tożsamości użytkowników i grup w systemie plików (POSIX permissions i Windows ACL).
  • Audyt i utwardzanie bezpieczeństwa (Hardening): Eliminacja przestarzałych dialektów (SMBv1), wdrażanie kryptograficznego podpisywania i szyfrowania pakietów, zabezpieczanie demonów RPC oraz stosowanie reguł zapory sieciowej.
  • Diagnostyka operacyjna: Opanowanie narzędzi weryfikacji i analizy stanu usług (testparm, smbstatus, exportfs, rpcinfo, showmount).
Efekty uczenia się w module plików (ang. learning outcomes): Efekty uczenia się w tym module obejmują rozumienie architektury protokołów SMB i NFS, samodzielną konfigurację serwera Samba oraz serwera NFS w systemie Linux oraz weryfikację uprawnień na poziomie udziału i systemu plików. Uzupełnieniem jest utwardzanie bezpieczeństwa, czyli wyłączanie przestarzałych dialektów, włączanie podpisywania i szyfrowania oraz diagnostyka narzędziami testparm, smbstatus, exportfs i rpcinfo. Tak sformułowane efekty odpowiadają praktycznym zadaniom administratora sieci lokalnej.
ASK_prez09_s02
3 / 50
Agenda – plan dziewiątej prezentacji
Cel slajdu: Slajd przedstawia kolejność omawianych zagadnień i wskazuje miejsce bieżącego tematu w strukturze wykładu.

Harmonogram zagadnień teoretycznych i warsztatowych

  • Część I: Protokół SMB/CIFS i serwer Samba (slajdy 4–19)
    • Architektura protokołu SMB, dialekty SMBv1, SMBv2, SMBv3, SMBv3.1.1, porty sieciowe
    • Wektory zagrożeń (EternalBlue, SMB Relay) i metody utwardzania
    • Instalacja i konfiguracja serwera Samba, plik smb.conf, baza passdb.tdb
    • Zarządzanie uprawnieniami, integracja z domeną Active Directory oraz diagnostyka
  • Część II: Protokół NFS w środowiskach uniksowych (slajdy 20–37)
    • Architektura ONC RPC, rpcbind, ewolucja od NFSv2 do NFSv4.2, pNFS
    • NFSv3 (bezstanowość, dynamiczne porty) vs NFSv4 (stanowość, pojedynczy port 2049 TCP)
    • Konfiguracja pliku /etc/exports, opcje eksportu, mechanizm root_squash
    • Montowanie klienckie, automatyzacja w /etc/fstab oraz usługa autofs
  • Część III: Laboratorium wdrożeniowe i rozwiązywanie problemów (slajdy 38–50)
    • Ćwiczenia praktyczne: konfiguracja udziałów publicznych i prywatnych
    • Rozwiązywanie problemów z mapowaniem UID/GID, konfiguracją firewalla oraz ściągawki poleceń
Agenda dydaktyczna (ang. lecture agenda): Agenda dydaktyczna porządkuje materiał od mechanizmów protokołu SMB i implementacji Samba przez protokół NFS i konfigurację eksportów po ćwiczenia laboratoryjne i diagnostykę. Taki układ odpowiada kolejności prac wdrożeniowych: najpierw teoria transportu i bezpieczeństwa, potem konfiguracja usługi, a na końcu weryfikacja od strony klienta. Ułatwia to powiązanie każdego polecenia z konkretną warstwą komunikacji.
ASK_prez09_s03
4 / 50
Protokół SMB – fundament współdzielenia plików w LAN
Cel slajdu: Slajd wyjaśnia architekturę protokołu SMB oraz rolę negocjacji dialektu, sesji i mechanizmów buforowania w komunikacji klient-serwer.

SMB (Server Message Block) – architektura i zasada działania

  • Geneza i rola protokołu: SMB to protokół warstwy aplikacji działający w modelu klient-serwer, stworzony do współdzielenia plików, drukarek, portów szeregowych oraz komunikacji międzyprocesowej (nazwane potoki IPC$, RPC).
  • Model komunikacji klient-serwer: Klient nawiązuje połączenie transportowe TCP, negocjuje najwyższy wspierany dialekt (SMB Negotiate Protocol), przeprowadza sesję uwierzytelnienia (Session Setup) i łączy się z zasobem (Tree Connect).
  • Mechanizm blokad oportunistycznych (Oplocks): Umożliwia klientowi lokalne buforowanie odczytów i zapisów pliku; w przypadku żądania dostępu przez innego klienta następuje procedura odwołania blokady (Oplock Break).
  • Leasing klienta (Client Leasing): Wprowadzony w SMB 2.1 mechanizm rozszerzający oplocks, pozwalający na niezależne buforowanie odczytu (Read), zapisu (Write) oraz uchwytów (Handle).
  • Implementacja linuksowa: Oprogramowanie Samba stanowi kompletną, wolną i otwartą implementację protokołów SMB/CIFS dla środowisk uniksowych.
Protokół SMB (ang. Server Message Block): Protokół SMB to stanowy protokół warstwy aplikacji pracujący w modelu klient-serwer, służący do współdzielenia plików, drukarek i komunikacji międzyprocesowej. Klient negocjuje dialekt, ustanawia sesję uwierzytelniania i łączy się z zasobem za pomocą operacji Tree Connect, a wydajność zapewniają mechanizmy blokad oportunistycznych oraz leasingu wprowadzonego w SMB 2.1. Otwartą specyfikację dialektów opisuje dokument MS-SMB2, a implementację dla Linux dostarcza projekt Samba.
ASK_prez09_s04
5 / 50
SMBv1 – stary, niebezpieczny, wciąż obecny
Cel slajdu: Slajd omawia ograniczenia technologiczne protokołu SMBv1 oraz powody jego bezwzględnego wycofywania ze współczesnych sieci.

SMBv1 (CIFS) – ograniczenia technologiczne i luki bezpieczeństwa

  • Specyfikacja i wiek protokołu: Opracowany w latach 80. XX wieku, rozszerzony jako CIFS (Common Internet File System); udokumentowany w specyfikacji [MS-CIFS] oraz w szkicu draft-leach-cifs-v1-spec (protokół CIFS nie posiada własnego numeru RFC).
  • Skrajna nieefektywność („przegadany” protokół): Ponad sto odrębnych poleceń (Commands); brak potokowości (Pipelining) wymuszał oczekiwanie na potwierdzenie każdej pojedynczej operacji przed wysłaniem kolejnej.
  • Brak skalowalności w sieciach WAN: Mały rozmiar bufora (domyślnie 64 KB na operację I/O) generował drastyczne spadki przepustowości przy rosnących opóźnieniach pakietów (RTT).
  • Przestarzałe mechanizmy uwierzytelniania: Domyślne wykorzystanie podatnych protokołów LM (LAN Manager) oraz NTLMv1, przesyłających słabe skróty haseł podatne na kolizje i tęczowe tablice.
  • Katastrofalne luki podatności: Luka w obsłudze transakcji SMBv1 doprowadziła do powstania exploita EternalBlue (biuletyn MS17-010), wykorzystanego w globalnych atakach ransomware WannaCry i NotPetya.
Protokół SMBv1 (ang. SMB version 1, CIFS): Protokół SMBv1 to historyczny dialekt współdzielenia plików z lat osiemdziesiątych, opisany w specyfikacji MS-CIFS, bez szyfrowania i z synchronicznym modelem żądanie-odpowiedź. Mały bufor operacji oraz słabe uwierzytelnianie LM i NTLMv1 ograniczały wydajność w sieciach rozległych i ułatwiały ataki na hasła. Luka w obsłudze transakcji wykorzystana przez exploit EternalBlue (CVE-2017-0144, biuletyn MS17-010) doprowadziła do globalnych infekcji WannaCry i NotPetya, dlatego dialekt ten podlega całkowitemu wyłączeniu.
ASK_prez09_s05
6 / 50
SMBv2 – optymalizacja i bezpieczeństwo
Cel slajdu: Slajd przedstawia zmiany wprowadzone w protokole SMB w wersjach 2.0 i 2.1 oraz ich wpływ na wydajność i stabilność sesji.

SMB 2.0 i 2.1 – redukcja złożoności i skok wydajnościowy

  • Debiut systemowy: Wprowadzony w systemach Windows Vista i Windows Server 2008 (dialekt 2.0.2), następnie rozwinięty w Windows 7 i Server 2008 R2 (dialekt 2.1).
  • Radykalna redukcja zestawu poleceń: Liczbę komend zredukowano z ponad stu do zaledwie 19 uniwersalnych operacji, upraszczając parsowanie nagłówków i zmniejszając powierzchnię ataku.
  • Potokowość i łączenie operacji (Compounding / Pipelining): Możliwość wysyłania wielu żądań asynchronicznie oraz łączenia powiązanych operacji (np. CREATE, WRITE, CLOSE) w pojedynczą ramkę sieciową.
  • Większe bufory I/O: Zwiększenie rozmiaru bufora odczytu/zapisu z 64 KB do 1 MB (w SMB 2.1 do dynamicznie negocjowanych dużych MTU), co umożliwiło pełne nasycenie łącz gigabitowych.
  • Durable Handles: Odporność na krótkotrwałe przerwy w łączności sieciowej – klient może wznowić sesję bez utraty stanu otwartych plików.
Protokół SMBv2 (ang. SMB version 2): Protokół SMBv2 to przeprojektowany dialekt wprowadzony w systemach Windows Vista i Windows Server 2008, redukujący ponad sto poleceń do dziewiętnastu operacji o ujednoliconym nagłówku. Łączenie poleceń w jednej ramce oraz większe bufory odczytu i zapisu zwiększyły przepustowość w sieciach o dużym opóźnieniu. Trwałe uchwyty plików pozwoliły na przetrwanie krótkich przerw w łączności bez utraty otwartych dokumentów, co opisuje specyfikacja MS-SMB2.
ASK_prez09_s06
7 / 50
SMBv3 – nowoczesne szyfrowanie i wydajność
Cel slajdu: Slajd omawia mechanizmy szyfrowania i wysokiej dostępności wprowadzone w protokole SMB w wersjach 3.0 i 3.1.1.

SMB 3.0 i 3.1.1 – kryptografia nowej generacji i wysoka dostępność

  • Zintegrowane szyfrowanie end-to-end: Wprowadzenie sprzętowo akcelerowanego szyfrowania AES-128-CCM (SMB 3.0) oraz AES-128-GCM i AES-256-GCM (SMB 3.1.1) na poziomie protokołu – bez narzutu tuneli IPsec.
  • SMB Multichannel: Automatyczne wykrywanie wielu kart sieciowych i wielościeżkowości; agregacja pasma i natychmiastowy failover bez przerywania transferu.
  • SMB Direct (RDMA): Bezpośredni dostęp do pamięci zdalnej przez karty RoCE v2, iWARP i InfiniBand; transfer danych z pominięciem stosu TCP/IP i procesora (Zero-Copy).
  • Przezroczyste przełączanie awaryjne (Transparent Failover): Bezprzerwowa obsługa awarii węzła w klastrach Windows Failover Cluster i Samba CTDB dla udziałów Continuous Availability (CA).
  • Integralność przed uwierzytelnieniem (Pre-Authentication Integrity): Ochrona negocjacji dialektu za pomocą skrótu kryptograficznego SHA-512 w SMB 3.1.1, eliminująca ataki typu downgrade.
  • SMB over QUIC: Bezpieczne tunelowanie SMB przez protokół QUIC (UDP port 443 z TLS 1.3), umożliwiające dostęp do plików przez Internet bez użycia VPN.
Protokół SMBv3 (ang. SMB version 3): Protokół SMBv3 wprowadził zintegrowane szyfrowanie na poziomie protokołu, najpierw AES-128-CCM, a w dialekcie 3.1.1 także AES-128-GCM i AES-256-GCM, eliminując potrzebę tuneli IPsec dla udziałów plikowych. Równoległe ścieżki SMB Multichannel agregują pasmo wielu kart sieciowych, a SMB Direct wykorzystuje RDMA do transferu z pominięciem stosu TCP. Przezroczyste przełączanie awaryjne w klastrach oraz ochrona negocjacji skrótem SHA-512 opisane są w specyfikacji MS-SMB2.
ASK_prez09_s07
8 / 50
Porty i adresy – jak SMB komunikuje się w sieci
Cel slajdu: Slajd porządkuje porty transportowe protokołu SMB oraz wskazuje zasady filtrowania ruchu na zaporze ogniowej.

Porty transportowe SMB: Direct-Hosted vs NetBIOS over TCP/IP

  • TCP 445 (Direct-Hosted SMB): Standard współczesnej komunikacji SMB bezpośrednio na warstwie TCP/IP bez pośrednictwa NetBIOS; wprowadzony w Windows 2000 i stosowany we wszystkich nowoczesnych systemach.
  • TCP 139 (NetBIOS Session Service): Historyczny port transportowy sesji SMB enkapsulowanej w protokole NBT (NetBIOS over TCP/IP, RFC 1001 / RFC 1002).
  • UDP 137 i UDP 138 (Usługi pomocnicze NetBIOS): Port 137 (NetBIOS Name Service – NBNS / WINS) służący do rozgłoszeniowej rezolucji nazw oraz port 138 (NetBIOS Datagram Service) do usług przeglądania sieci (Network Browser).
  • Rekomendacje bezpieczeństwa firewall: Całkowita blokada portów TCP 445, 139 oraz UDP 137-138 na styku sieci z Internetem; w sieciach wewnętrznych segmentacja VLAN i ścisła filtracja ACL.
  • Weryfikacja dostępności portu: nc -zvw3 serwer 445 lub smbclient -L //serwer -p 445 -U%.
Porty protokołu SMB (ang. SMB transport ports): Współczesna komunikacja SMB odbywa się bezpośrednio na porcie TCP 445 bez nagłówków NetBIOS, co wprowadzono w systemie Windows 2000. Historyczny port TCP 139 oraz porty UDP 137 i 138 obsługiwały enkapsulację NetBIOS over TCP/IP opisaną w dokumentach RFC 1001 i RFC 1002. Ze względów bezpieczeństwa porty SMB blokuje się na styku z Internetem, a w sieci lokalnej segmentuje ruchem VLAN i listami ACL, zgodnie z rejestrem IANA.
ASK_prez09_s08
9 / 50
Porównanie wersji SMB – tabela ewolucji
Cel slajdu: Slajd zestawia kolejne dialekty protokołu SMB oraz pomaga rozpoznać przestarzałe wersje wymagające wyłączenia.

Zestawienie technologiczne dialektów protokołu SMB

  • SMB 1.0 / CIFS (lata 80. XX wieku, dialekt NT LM 0.12 z 1996, Windows NT 4.0): Ponad 100 komend, brak potokowości, brak szyfrowania, przestarzałe uwierzytelnianie LM/NTLM, podatność EternalBlue; obecnie bezwzględnie zakazany.
  • SMB 2.0.2 (2006, Windows Vista / Server 2008): Redukcja do 19 komend, łączenie żądań (Compounding), Durable Handles, kredytowanie transferu, bufory 64 KB – 1 MB.
  • SMB 2.1 (2009, Windows 7 / Server 2008 R2): Mechanizm leasingu plików (Client Leasing), dynamiczne duże MTU, optymalizacje dla łączy o wyższych opóźnieniach.
  • SMB 3.0 (2012, Windows 8 / Server 2012): Szyfrowanie AES-128-CCM, SMB Multichannel, obsługa pamięci RDMA (SMB Direct), klastry Continuous Availability (CA).
  • SMB 3.1.1 (2015, Windows 10 / Server 2016+): Integralność negocjacji SHA-512 (Pre-Auth Integrity), szyfrowanie AES-128-GCM i AES-256-GCM, tunelowanie SMB over QUIC.
Dialekt protokołu SMB (ang. SMB dialect): Dialekt protokołu SMB to wersja negocjowana między klientem a serwerem podczas nawiązywania sesji, od historycznego NT LM 0.12 po współczesny 3.1.1. Każdy dialekt zmienia zestaw poleceń, rozmiar buforów oraz dostępne mechanizmy bezpieczeństwa, od braku szyfrowania w wersji pierwszej po obowiązkowe szyfrowanie AES-GCM w wersji trzeciej. Porównanie wersji ułatwia audyt, ponieważ wykrycie negocjacji SMB 1.0 oznacza pilną potrzebę aktualizacji, co dokumentuje specyfikacja MS-SMB2.
ASK_prez09_s09
10 / 50
Ataki na SMB – jak się bronić
Cel slajdu: Slajd przedstawia najczęstsze ataki na usługę SMB oraz wielowarstwowe metody ich ograniczania.

Zagrożenia bezpieczeństwa SMB i wielowarstwowa strategia obrony

  • EternalBlue (MS17-010 / CVE-2017-0144): Zdalne wykonanie kodu bez uwierzytelnienia przez wadę bufora w SMBv1; ochrona: całkowite wyłączenie SMBv1 w całej infrastrukturze.
  • Pass-the-Hash (PtH): Uwierzytelnienie przechwyconym skrótem NTLM bez znajomości hasła jawnego; ochrona: migracja do protokołu Kerberos, LAPS, Remote Credential Guard.
  • SMB Relay (NTLM Relay): Przechwycenie transmisji uwierzytelniającej NTLM i przekazanie jej do innego serwera; ochrona: bezwzględny wymóg podpisywania pakietów (SMB Signing).
  • Podsłuch i zatruwanie ruchu (LLMNR/NBT-NS Spoofing, np. Responder): Wyłączanie protokołów LLMNR i NetBIOS-NS na stacjach roboczych.
  • Szyfrowanie sesji (SMB Encryption): Wymuszenie szyfrowania w SMBv3 chroni przed podsłuchem poufnych danych wewnątrz segmentu sieci LAN.
Bezpieczeństwo protokołu SMB (ang. SMB security): Bezpieczeństwo protokołu SMB zależy od wyłączenia słabych dialektów i mechanizmów uwierzytelniania oraz od wymuszenia podpisywania i szyfrowania sesji. Ataki typu Pass-the-Hash wykorzystują przechwycone skróty NTLM, a ataki typu SMB Relay przekazują wyzwanie uwierzytelniające do innego serwera, dlatego migracja do Kerberos i podpisywanie pakietów mają znaczenie kluczowe. Obrona obejmuje także wyłączanie rozgłoszeń LLMNR i NetBIOS oraz monitorowanie dzienników serwera, zgodnie z zaleceniami dokumentacji Samba i Microsoft.
ASK_prez09_s10
11 / 50
Sprawdzanie wersji SMB w systemie
Cel slajdu: Slajd pokazuje sposoby weryfikacji wynegocjowanego dialektu SMB w systemach Windows i Linux oraz metody zdalnego audytu usługi.

Weryfikacja dialektów SMB w środowiskach Windows i Linux

  • System Windows (PowerShell):
    • Konfiguracja serwera: Get-SmbServerConfiguration | Select EnableSMB1Protocol, EnableSMB2Protocol
    • Aktywne połączenia klienta: Get-SmbConnection (prezentuje kolumnę Dialect z wersją 2.1, 3.0, 3.1.1)
  • Serwer Samba (Linux):
    • Weryfikacja parametrów protokołu: testparm -v | grep "server.*protocol"
    • Kluczowe parametry w smb.conf: server min protocol = SMB2_02 oraz server max protocol = SMB3_11
  • Klient smbclient (Linux):
    • Wymuszenie dialektu podczas testu: smbclient -L //serwer -U% -m SMB3
  • Skanowanie zdalne (Nmap):
    • Audyt wspieranych dialektów: nmap -p 445 --script smb-protocols adres_serwera
Negocjacja dialektu SMB (ang. dialect negotiation): Negocjacja dialektu to początkowa faza sesji, w której klient i serwer uzgadniają najwyższą wspólną wersję protokołu. W systemie Windows stan sesji pokazują polecenia Get-SmbConnection i Get-SmbServerConfiguration, a w systemie Linux parametry server min protocol i server max protocol w pliku smb.conf. Audyt zewnętrzny umożliwia skrypt Nmap smb-protocols, który odpytuje port TCP 445 bez potrzeby logowania. Wykrycie dialektu 1.0 oznacza konieczność pilnej aktualizacji, zgodnie ze specyfikacją MS-SMB2.
ASK_prez09_s11
12 / 50
Scenariusz: wyłączanie SMBv1 w sieci produkcyjnej
Cel slajdu: Slajd omawia uporządkowany scenariusz wycofywania protokołu SMBv1 bez przerywania procesów biznesowych.

Bezpieczna i bezprzerwowa migracja z protokołu SMBv1

  • Faza 1: Audyt i inwentaryzacja ruchu:
    • Aktywacja dziennika audytu SMBv1 w systemie Windows: Set-SmbServerConfiguration -AuditSmb1Access $true
    • Analiza zdarzeń w podglądzie: Microsoft-Windows-SMBServer/Audit (Event ID 1001 rejestruje adresy IP klientów żądających sesji SMBv1)
    • Identyfikacja urządzeń legacy: stare urządzenia wielofunkcyjne (skanery do SMB), rejestratory kamer, systemy wbudowane
  • Faza 2: Aktualizacja lub izolacja urządzeń starszego typu:
    • Aktualizacja oprogramowania układowego (Firmware) drukarek/skanerów do wersji wspierającej SMBv2/v3
    • W przypadku braku wsparcia: migracja na protokoły alternatywne (SFTP, FTPS) lub wydzielenie do odizolowanego VLAN-u z dedykowaną bramą
  • Faza 3: Globalne wyłączenie protokołu:
    • Windows Server / GPO: Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force
    • Samba: wpis server min protocol = SMB2_02 w sekcji [global] i restart smbd
Migracja z SMBv1 (ang. SMBv1 deprecation): Migracja z protokołu SMBv1 obejmuje audyt ruchu, inwentaryzację urządzeń oraz kontrolowane wyłączenie dialektu w całej infrastrukturze. W systemie Windows audyt umożliwia opcja AuditSmb1Access oraz zdarzenie o identyfikatorze 1001 wskazujące klientów nadal korzystających ze starej wersji. Urządzenia bez aktualizacji oprogramowania izoluje się w osobnej sieci VLAN albo przenosi na protokoły SFTP lub FTPS. Dopiero po zaniku zdarzeń audytu wyłącza się protokół poleceniem Set-SmbServerConfiguration oraz dyrektywą server min protocol w Sambie.
ASK_prez09_s12
13 / 50
Samba – SMB dla systemów Unix/Linux
Cel slajdu: Slajd przedstawia projekt Samba jako otwartą implementację protokołów Microsoft dla systemów Unix i Linux.

Samba – otwarta implementacja protokołów sieciowych Microsoft

  • Historia i geneza: Projekt zapoczątkowany w 1992 roku przez australijskiego programistę Andrew Tridgella jako rezultat inżynierii wstecznej (Reverse Engineering) protokołu SMB; obecnie projekt open source pod auspicjami Software in the Public Interest.
  • Rola w infrastrukturze heterogenicznej: Umożliwia systemom Linux i Unix pełnienie roli zaawansowanego serwera plików, bufora wydruku, a od wersji Samba 4 – pełnoprawnego kontrolera domeny Active Directory (AD DC).
  • Główne demony pakietu Samba:
    • smbd: Obsługuje transfer plików, autoryzację sesji, blokady (locking) oraz komunikację na porcie TCP 445 i TCP 139
    • nmbd: Zapewnia obsługę nazw NetBIOS (NBNS/WINS), rozgłoszenia sieciowe oraz funkcję przeglądarki sieci (Browser Service) na portach UDP 137 i 138
    • winbindd: Integruje lokalny podsystem kont (NSS/PAM) z bazą Active Directory, mapując konta domenowe SID na identyfikatory UID/GID
  • Instalacja w dystrybucjach Debian/Ubuntu: apt update && apt install samba smbclient -y
Pakiet Samba (ang. Samba suite): Pakiet Samba to wolna implementacja protokołów SMB, zapoczątkowana w 1992 roku przez Andrew Tridgella metodą inżynierii wstecznej. Demon smbd obsługuje udziały plików na porcie TCP 445, demon nmbd obsługuje historyczne nazwy NetBIOS na portach UDP 137 i 138, a demon winbindd integruje konta z usługą Active Directory. Od wersji 4 Samba może pełnić rolę kontrolera domeny, a instalacja w Debian i Ubuntu odbywa się pakietami samba i smbclient. Dokumentację projektu zawiera serwis Samba.
ASK_prez09_s13
14 / 50
Plik smb.conf – struktura konfiguracji Samba
Cel slajdu: Slajd wyjaśnia budowę pliku konfiguracyjnego Samba oraz znaczenie sekcji globalnej i sekcji udziałów.

Budowa i logika pliku konfiguracyjnego /etc/samba/smb.conf

  • Lokalizacja i format: Główny plik konfiguracyjny /etc/samba/smb.conf wykorzystuje czytelną składnię w formacie INI (sekcje w nawiasach kwadratowych, pary parametr = wartość).
  • Sekcja główna [global]: Definiuje parametry wspólne dla całej usługi:
    • Tożsamość serwera: workgroup, netbios name, server string
    • Model bezpieczeństwa: security = user (podstawowy i rekomendowany standard)
    • Bezpieczeństwo protokołu: server min protocol = SMB2_02, server signing = mandatory
    • Backend haseł: passdb backend = tdbsam
  • Sekcje specjalne:
    • [homes]: Dynamiczny udział udostępniający każdemu użytkownikowi jego katalog domowy
    • [printers] i [print$]: Udostępnianie drukarek i sterowników sieciowych CUPS
  • Sekcje udziałów niestandardowych [nazwa_udziału]: Definicje folderów udostępnianych dla określonych grup lub publicznie.
Plik smb.conf (ang. Samba configuration file): Plik smb.conf w katalogu /etc/samba zawiera konfigurację usługi w formacie sekcji i par parametr-wartość. Sekcja global definiuje tożsamość serwera, model security równy user, minimalny dialekt oraz backend haseł tdbsam. Sekcja homes dynamicznie udostępnia katalogi domowe użytkowników, a sekcje własne definiują konkretne udziały dyskowe. Poprawność składni weryfikuje narzędzie testparm, opisane w Samba Wiki.
ASK_prez09_s14
15 / 50
Uwierzytelnianie Samba – smbpasswd i baza SMB
Cel slajdu: Slajd omawia przyczyny utrzymywania odrębnej bazy haseł Samba oraz narzędzia do zarządzania kontami.

Mechanizm przechowywania poświadczeń i baza passdb.tdb

  • Odmienność formatów haseł: System Linux przechowuje skróty haseł w /etc/shadow (funkcje jednokierunkowe SHA-512/yescrypt z solą); protokół SMB wymaga skrótów NTLM (MD4 z hasła w UTF-16LE) – Samba musi utrzymywać własną bazę haseł.
  • Nowoczesny backend bazodanowy: passdb backend = tdbsam (baza Trivial Database w pliku binarnym /var/lib/samba/private/passdb.tdb).
  • Zależność od kont systemowych: Użytkownik dodawany do Samby musi już istnieć jako konto lokalne w Linuksie (/etc/passwd), chyba że stosowane jest mapowanie gości (guest).
  • Zarządzanie kontami użytkowników:
    • Dodanie użytkownika i ustawienie hasła SMB: smbpasswd -a nazwa_użytkownika
    • Wyłączenie / włączenie konta SMB: smbpasswd -d użytkownik / smbpasswd -e użytkownik
    • Zaawansowane zarządzanie SAM (rekomendowane): pdbedit -L -v (szczegółowy listing użytkowników i flag konta)
Baza passdb (ang. password database): Baza passdb przechowuje skróty NTLM wymagane przez protokół SMB, ponieważ skrótów z pliku /etc/shadow nie można przekształcić w skrót MD4 z hasła w UTF-16LE. Nowoczesnym backendem jest tdbsam zapisujący dane w pliku /var/lib/samba/private/passdb.tdb dostępnym wyłącznie dla administratora. Konto Samba wymaga istniejącego konta systemowego w pliku /etc/passwd, a zarządzanie umożliwiają polecenia smbpasswd i pdbedit. Szczegóły opisuje dokumentacja Samba.
ASK_prez09_s15
16 / 50
Parametry udziału – kontrola dostępu w SMB
Cel slajdu: Slajd porządkuje parametry kontroli dostępu do udziałów oraz wyjaśnia współdziałanie uprawnień usługi i systemu plików.

Konfiguracja uprawnień udziału i masek uprawnień POSIX

  • Podstawowe parametry ścieżki i widoczności:
    • path = /katalog/danych: Bezwzględna ścieżka w lokalnym systemie plików serwera
    • browseable = yes|no: Widoczność udziału w otoczeniu sieciowym i na liście zasobów
    • read only = yes|no: Domyślny tryb tylko do odczytu (parametr odwrotny: writable = yes|no)
  • Uwierzytelnianie i autoryzacja użytkowników:
    • guest ok = yes|no: Dostęp anonimowy bez podawania hasła (synonim: public = yes)
    • valid users = user1, @grupa: Ścisła lista użytkowników i grup uprawnionych do nawiązania sesji
    • write list = user1, @kadry: Użytkownicy z uprawnieniami zapisu w udziale tylko do odczytu
  • Wymuszanie tożsamości i masek plików:
    • create mask = 0644 oraz directory mask = 0755: Maski uprawnień POSIX dla nowo tworzonych obiektów
    • force user = nazwa_konta: Wymuszenie zapisu wszystkich plików z tożsamością określonego użytkownika
Uprawnienia udziału SMB (ang. share permissions): Uprawnienia udziału SMB stanowią pierwszy filtr dostępu, natomiast drugim filtrem są uprawnienia systemu plików POSIX lub ACL na serwerze. Parametry path, browseable i read only określają położenie i widoczność zasobu, a parametry valid users i write list ograniczają krąg uprawnionych do sesji i zapisu. Maski create mask i directory mask tłumaczą atrybuty Windows na bity uniksowe, zapobiegając tworzeniu plików o niebezpiecznych prawach. Obie warstwy muszą zezwalać na operację, aby klient uzyskał dostęp.
ASK_prez09_s16
17 / 50
Przykładowa konfiguracja smb.conf
Cel slajdu: Slajd przedstawia wzorcowy plik konfiguracyjny Samba z bezpiecznymi wartościami dla udziału publicznego i prywatnego.

Wzorcowy, produkcyjny plik konfiguracyjny serwera Samba

# /etc/samba/smb.conf - Wzorcowa konfiguracja produkcyjna
[global]
    workgroup = ASKLAB
    server string = Serwer Plików Samba ASK
    security = user
    passdb backend = tdbsam
    server min protocol = SMB2_02
    server signing = mandatory
    log file = /var/log/samba/log.%m
    max log size = 1000

[Publiczny]
    comment = Zasób ogólnodostępny tylko do odczytu
    path = /srv/samba/public
    browseable = yes
    read only = yes
    guest ok = yes

[Prywatny]
    comment = Zasób poufny autoryzowany
    path = /srv/samba/private
    browseable = yes
    read only = no
    guest ok = no
    valid users = @pracownicy, administrator
    create mask = 0660
    directory mask = 0770
Wzorcowa konfiguracja Samba (ang. reference configuration): Wzorcowa konfiguracja łączy bezpieczną sekcję global z dwoma modelami udziałów: publicznym tylko do odczytu oraz prywatnym z uwierzytelnianiem grupowym. Parametr server min protocol równy SMB2_02 blokuje negocjację podatnego dialektu, a server signing równy mandatory wymusza podpisywanie pakietów. Makro log file z symbolem procent m rozdziela dzienniki według stacji klienckich, a maski 0660 i 0770 zapewniają współpracę członków grupy bez dostępu osób postronnych.
ASK_prez09_s17
18 / 50
Narzędzia administracyjne Samba
Cel slajdu: Slajd zestawia podstawowe narzędzia administracyjne Samba służące do walidacji konfiguracji i monitorowania sesji.

Ekosystem narzędzi zarządzania i inspekcji serwera Samba

  • testparm (Walidator składni):
    • Sprawdza poprawność składniową pliku smb.conf: testparm -s
    • Wychwytuje literówki w nazwach parametrów i ostrzega przed przestarzałymi dyrektywami
  • smbstatus (Monitorowanie stanu w czasie rzeczywistym):
    • Prezentuje aktywne sesje, adresy IP klientów, wersje wynegocjowanych dialektów SMB
    • Wyświetla otwarte pliki oraz aktywne blokady blokujące i oportunistyczne (oplocks/leasing)
  • smbclient (Wszechstronny klient wiersza poleceń):
    • Listowanie udziałów na zdalnym hoście: smbclient -L //192.168.56.100 -U%
    • Interaktywna sesja w stylu FTP: smbclient //192.168.56.100/Prywatny -U jan
  • net (Szwajcarski scyzoryk administracyjny):
    • Lokalne i zdalne zarządzanie usługą: net status shares, zarządzenie sesjami i domeną
Narzędzia Samba (ang. Samba utilities): Narzędzia Samba wspierają pełny cykl obsługi usługi od walidacji po diagnostykę sesji. Polecenie testparm sprawdza składnię pliku smb.conf i ostrzega przed przestarzałymi dyrektywami. Polecenie smbstatus odczytuje bazy TDB i pokazuje sesje, adresy klientów, wynegocjowane dialekty oraz otwarte pliki z blokadami. Klient smbclient listuje udziały i prowadzi sesję w trybie interaktywnym, a polecenie net zarządza udziałami i domeną. Użycie testparm przed każdym restartem stanowi podstawową zasadę warsztatu.
ASK_prez09_s18
19 / 50
Samba a Active Directory – integracja
Cel slajdu: Slajd wyjaśnia integrację serwera Samba z usługą Active Directory w roli serwera członkowskiego.

Integracja serwera Samba jako serwera członkowskiego w domenie AD DS

  • Rola serwera członkowskiego (Domain Member): Samba korzysta z centralnej bazy tożsamości Active Directory; użytkownicy logują się na stacjach Windows poświadczeniami domenowymi i uzyskują dostęp do plików na Linuksie.
  • Wymagania wstępne integracji:
    • Precyzyjna synchronizacja czasu (NTP / Chrony): różnica czasu z kontrolerem domeny nie może przekraczać 5 minut (wymóg protokołu Kerberos v5)
    • Spójna konfiguracja DNS (/etc/resolv.conf) wskazująca na kontrolery AD DS
    • Poprawny plik konfiguracyjny Kerberos: /etc/krb5.conf
  • Kluczowe dyrektywy w smb.conf:
    • security = ads oraz realm = TWOJA.DOMENA.PL
    • Konfiguracja backendu mapowania identyfikatorów idmap (np. idmap config * : backend = tdb, idmap config DOMENA : backend = rid)
  • Dołączenie do domeny: net ads join -U Administrator
Integracja z Active Directory (ang. Active Directory integration): Integracja z usługą Active Directory przenosi zarządzanie tożsamościami na kontrolery domeny, a serwer Linux udostępnia przestrzeń dyskową z poszanowaniem domenowych list dostępu. Warunkiem jest synchronizacja czasu w granicach pięciu minut dla protokołu Kerberos, poprawna konfiguracja DNS wskazująca kontrolery oraz plik krb5.conf. W pliku smb.conf ustawia się security równe ads, nazwę realm oraz backend idmap, a dołączenie wykonuje polecenie net ads join. Translacją identyfikatorów SID na UID i GID zajmuje się demon winbindd.
ASK_prez09_s19
20 / 50
Debugowanie Samba – logi i rozwiązywanie problemów
Cel slajdu: Slajd omawia diagnostykę serwera Samba na podstawie poziomów dzienników oraz weryfikacji procesów i portów.

Zaawansowane techniki diagnostyki usterek i analiza dzienników

  • Konfiguracja poziomu szczegółowości logów:
    • Dyrektywa log level w smb.conf: zakres od 0 (tylko błędy krytyczne) do 10 (ekstremalny zrzut struktur pamięci)
    • Zalecenia operacyjne: poziom 0-1 w środowisku produkcyjnym; poziom 2-3 podczas standardowej diagnostyki; poziom 10 wyłącznie w izolowanych testach laboratoryjnych
    • Możliwość definiowania szczegółowości dla klas: np. log level = 1 auth:3 passdb:3
  • Struktura plików dziennika w systemie:
    • Katalog główny: /var/log/samba/
    • Pliki poszczególnych procesów: log.smbd, log.nmbd, log.winbindd oraz dedykowane pliki klientów log.%m
  • Podstawowe kroki rozwiązywania problemów:
    • Weryfikacja procesu i portów: systemctl status smbd oraz ss -tulpn | grep 445
    • Analiza zdarzeń systemowych: journalctl -u smbd -xe
    • Test autoryzacji lokalnej: smbclient //localhost/udzial -U uzytkownik
Diagnostyka Samba (ang. Samba troubleshooting): Diagnostyka Samba opiera się na stopniowaniu szczegółowości dzienników oraz na niezależnej weryfikacji warstwy sieciowej i uwierzytelniania. Dyrektywa log level przyjmuje wartości od zera dla błędów krytycznych po dziesięć dla pełnego zrzutu struktur, przy czym poziomy wysokie stosuje się wyłącznie w izolowanym laboratorium. Dzienniki procesów smbd, nmbd i winbindd znajdują się w katalogu /var/log/samba. Procedura obejmuje sprawdzenie statusu usługi, nasłuchu na porcie 445 oraz testu smbclient do lokalnego udziału.
ASK_prez09_s20
21 / 50
NFS – Network File System, standard Unix
Cel slajdu: Slajd wprowadza protokół NFS jako natywny mechanizm współdzielenia plików w systemach Unix i Linux.

NFS – natywny protokół współdzielenia plików w środowiskach uniksowych

  • Geneza protokołu: Opracowany w 1984 roku przez firmę Sun Microsystems jako integralna część systemu SunOS; otwarty standard standaryzowany przez IETF (RFC 1094, RFC 1813, RFC 7530).
  • Integracja z jądrem systemu (VFS): Zasób NFS jest montowany bezpośrednio w lokalnym drzewie katalogów; aplikacje korzystają ze standardowych wywołań systemowych POSIX (open, read, write, close) w sposób całkowicie przezroczysty.
  • Architektura klient-serwer oparta na RPC: Protokół operuje na mechanizmie zdalnego wywoływania procedur (ONC RPC – Open Network Computing Remote Procedure Call), wykorzystując format kodowania danych XDR (External Data Representation).
  • Podstawowe zastosowania:
    • Współdzielenie katalogów domowych użytkowników w klastrach obliczeniowych (HPC)
    • Współdzielone magazyny danych dla wirtualizatorów (VMware vSphere ESXi, Proxmox VE, KVM)
    • Bezstanowe stacje robocze i systemy bootowania przez sieć (PXE / Diskless Nodes)
Protokół NFS (ang. Network File System): Protokół NFS to otwarty standard współdzielenia plików opracowany w 1984 roku przez Sun Microsystems jako część architektury ONC. Zdalny zasób jest montowany w lokalnym drzewie katalogów i obsługiwany przez warstwę wirtualnego systemu plików VFS, dlatego aplikacje używają standardowych wywołań POSIX bez wiedzy o sieci. Komunikacja opiera się na zdalnych wywołaniach procedur ONC RPC z kodowaniem XDR. Aktualny standard wersji czwartej opisuje dokument RFC 7530.
ASK_prez09_s21
22 / 50
Architektura RPC – rola portmappera/rpcbind
Cel slajdu: Slajd wyjaśnia rolę usługi rpcbind w klasycznej architekturze NFS opartej na dynamicznych portach.

Mechanizm ONC RPC i rola rejestru usług rpcbind w NFSv3

  • Koncepcja ONC RPC (RFC 5531): Umożliwia procesowi wywołanie procedury na zdalnym serwerze tak, jakby było to wywołanie funkcji lokalnej w pamięci; dane serializowane za pomocą formatu XDR (RFC 4506).
  • Rola usługi rpcbind (portmapper): Dynamiczny rejestr usług nasłuchujący na dobrze znanym porcie TCP/UDP 111; mapuje 32-bitowe numery programów RPC na aktualnie przydzielone porty transportowe.
  • Kluczowe programy RPC w tradycyjnym stosie NFS:
    • Program 100003: Właściwa usługa plików nfsd (port TCP/UDP 2049)
    • Program 100005: Demon weryfikacji i montowania mountd (port przydzielany dynamicznie)
    • Program 100021: Menedżer blokad sieciowych nlockmgr (NLM)
    • Program 100024: Monitor stanu węzłów status (NSM – rpc.statd)
  • Inspekcja zarejestrowanych usług RPC: rpcinfo -p adres_serwera
Usługa rpcbind (ang. RPC bind service): Usługa rpcbind to rejestr usług ONC RPC nasłuchujący na stałym porcie TCP i UDP 111 i mapujący numery programów na bieżące porty transportowe. W tradycyjnym stosie NFS demon nfsd rejestruje program 100003, demon mountd program 100005, menedżer blokad program 100021, a monitor stanu program 100024. Klient najpierw odpytuje rpcbind, aby poznać port docelowego demona, a inspekcję rejestru umożliwia polecenie rpcinfo. Mechanizm RPC opisuje dokument RFC 5531.
ASK_prez09_s22
23 / 50
Ewolucja NFS – od NFSv2 do NFSv4
Cel slajdu: Slajd porządkuje ewolucję protokołu NFS od wersji drugiej do wersji czwartej z rozszerzeniami równoległymi.

Kamienie milowe w rozwoju standardu Network File System

  • NFSv2 (1989, RFC 1094): Pierwszy publiczny standard; wyłącznie protokół UDP; 32-bitowe offsety ograniczały maksymalny rozmiar pojedynczego pliku do 2 GB; operacje zapisu wyłącznie synchroniczne.
  • NFSv3 (1995, RFC 1813): 64-bitowe przesunięcia (zniesienie limitu 2 GB); pełna obsługa transportu TCP; asynchroniczny zapis na serwerze z jawnym zatwierdzaniem (COMMIT); renegocjacja rozmiaru buforów odczytu/zapisu (rsize/wsize).
  • NFSv4.0 (2003, RFC 3530; obecnie RFC 7530 z 2015): Przejście na model w pełni stanowy (Stateful); pojedynczy port TCP 2049 (eliminacja rpcbind i mountd dla klienta); wbudowane blokady plików; silne uwierzytelnianie Kerberos v5 (RPCSEC_GSS); listy kontroli dostępu NFSv4 ACL.
  • NFSv4.1 (2010, RFC 5661; aktualizacja 2020, RFC 8881): Wprowadzenie architektury pNFS (Parallel NFS); sesje gwarantujące semantykę dokładnie-jeden-raz (EOS).
  • NFSv4.2 (2016, RFC 7862): Kopiowanie po stronie serwera (Server-Side Copy); obsługa plików rzadkich (Sparse Files – SEEK); etykiety bezpieczeństwa SELinux (Labeled NFS).
Ewolucja protokołu NFS (ang. NFS evolution): Ewolucja protokołu NFS prowadziła od prostego protokołu UDP z limitem 2 GB w wersji NFSv2 opisanej w RFC 1094 przez wersję NFSv3 z obsługą TCP i 64-bitowymi offsetami opisaną w RFC 1813 po stanową wersję NFSv4 opisaną w RFC 7530. Wersja czwarta wprowadziła jeden port TCP 2049, wbudowane blokady oraz Kerberos, wersja 4.1 dodała równoległy dostęp pNFS, a wersja 4.2 kopiowanie po stronie serwera i pliki rzadkie.
ASK_prez09_s23
24 / 50
NFSv3 vs NFSv4 – porównanie
Cel slajdu: Slajd porównuje bezstanową architekturę NFSv3 ze stanową architekturą NFSv4 pod kątem portów i bezpieczeństwa.

Fundamentalne różnice architektoniczne między NFSv3 i NFSv4

  • Stanowość serwera (Statefulness):
    • NFSv3: Protokół ściśle bezstanowy; serwer nie rejestruje otwartych plików; blokady realizowane przez zewnętrzny demon lockd (NLM)
    • NFSv4: Protokół w pełni stanowy; serwer śledzi otwarte pliki za pomocą identyfikatorów stateid i leasingu; operacje OPEN, CLOSE, LOCK wbudowane w protokół
  • Topologia sieciowa i porty zapory sieciowej:
    • NFSv3: Wiele dynamicznych portów (rpcbind 111, nfsd 2049, mountd, statd, lockd) – niezwykle trudna konfiguracja firewalla
    • NFSv4: Dokładnie jeden stały port TCP 2049; brak konieczności odpytywania rpcbind przez klienta – trywialna filtracja na zaporze ogniowej
  • Struktura wywołań sieciowych:
    • NFSv3: Każda operacja to odrębny cykl zapytanie-odpowiedź RPC (wysoki narzut opóźnień RTT)
    • NFSv4: Złożone procedury COMPOUND RPC – łączenie wielu operacji (LOOKUP + OPEN + READ) w pojedynczy pakiet sieciowy
  • Model tożsamości użytkowników:
    • NFSv3: Przesyłanie numerycznych identyfikatorów UID/GID w nagłówku RPC (podatność na spoofing)
    • NFSv4: Ciągi znaków w formacie użytkownik@domena tłumaczone przez demona rpc.idmapd
Porównanie NFSv3 i NFSv4 (ang. NFSv3 vs NFSv4): Podstawowa różnica polega na modelu stanu serwera oraz na liczbie portów wymaganych przez zaporę ogniową. Serwer NFSv3 nie pamięta otwartych plików i korzysta z zewnętrznych demonów blokad i monitorowania, a klient wymaga portów 111, 2049 oraz portów dynamicznych mountd i lockd. Serwer NFSv4 śledzi otwarcia identyfikatorami stateid i leasingiem, komunikuje się przez jeden port TCP 2049 oraz łączy operacje w wywołania COMPOUND. Tożsamość w wersji trzeciej to numeryczne UID i GID, a w wersji czwartej ciągi użytkownikmałpadomena tłumaczone przez idmapd.
ASK_prez09_s24
25 / 50
Bezpieczeństwo w NFSv4 – Kerberos i ACL
Cel slajdu: Slajd omawia framework bezpieczeństwa NFSv4 oparty na Kerberosie oraz poziomy ochrony integralności i poufności.

Framework RPCSEC_GSS, warianty Kerberos i zaawansowane listy ACL

  • Framework RPCSEC_GSS (RFC 2203 / RFC 5403): Zintegrowana warstwa bezpieczeństwa dla wywołań RPC, umożliwiająca negocjację mechanizmów kryptograficznych GSS-API, głównie Kerberos v5.
  • Poziomy bezpieczeństwa (opcja sec= w eksporcie i montowaniu):
    • sec=sys (AUTH_SYS): Domyślny, historyczny tryb uniksowy; przesyła numeryczne UID/GID w nagłówku RPC w postaci jawnej – brak ochrony kryptograficznej
    • sec=krb5: Wzajemne uwierzytelnianie tożsamości klienta i serwera za pomocą biletów Kerberos; zapobiega podszywaniu się pod tożsamość użytkowników
    • sec=krb5i: Uwierzytelnianie + kryptograficzna integralność danych (podpisywanie każdego pakietu skrótem HMAC); ochrona przed manipulacją w locie (tampering)
    • sec=krb5p: Uwierzytelnianie + integralność + pełna poufność (Privacy); cała transmisja danych plikowych jest szyfrowana symetrycznie
  • NFSv4 ACL: Rozbudowany system list kontroli dostępu wzorowany na Windows NT / POSIX-draft (dziedziczenie flag, granularne uprawnienia ReadData, WriteData, AppendData, DeleteChild).
Bezpieczeństwo NFSv4 (ang. NFSv4 security): Bezpieczeństwo NFSv4 opiera się na frameworku RPCSEC_GSS opisanym w dokumentach RFC 2203 i RFC 5403, z protokołem Kerberos v5 jako podstawowym mechanizmem. Tryb sec równy sys przesyła UID jawnie bez ochrony, tryb krb5 uwierzytelnia strony, tryb krb5i dodaje podpisywanie pakietów, a tryb krb5p dodaje pełne szyfrowanie danych. Uzupełnieniem są listy NFSv4 ACL z granularnymi wpisami i dziedziczeniem, umożliwiające współpracę z uprawnieniami Windows.
ASK_prez09_s25
26 / 50
Porównanie SMB i NFS – kiedy co wybrać
Cel slajdu: Slajd zestawia kryteria wyboru między protokołem SMB a protokołem NFS w zależności od środowiska systemowego.

Kryteria wyboru protokołu sieciowego w architekturze korporacyjnej

  • Profil środowiska systemowego:
    • Środowiska Windows-centric: Bezwzględna dominacja SMBv3 – pełna zgodność z domeną Active Directory, natywne mapowanie dysków, Windows ACL
    • Środowiska Unix/Linux-centric: Naturalny wybór to NFS (v3/v4) – natywna obsługa semantyki POSIX, brak narzutu translacji atrybutów
  • Wydajność operacji plikowych i metadanych:
    • NFSv3/v4 charakteryzuje się minimalnym narzutem protokołu i znakomitą wydajnością przy masowych operacjach na milionach małych plików w systemie Linux
    • SMBv3 oferuje bezkonkurencyjną przepustowość dla dużych strumieni dzięki technologiom SMB Multichannel i SMB Direct (RDMA)
  • Mechanizmy blokowania plików:
    • SMB: Wymuszone blokady mandatory locks; idealne dla aplikacji wielodostępnych Windows
    • NFS: Blokady doradcze advisory locks (semantyka uniksowa flock/fcntl)
  • Rekomendacje inżynierskie:
    • Współdzielenie plików dla pracowników biurowych (PC/Mac): SMBv3 (Samba)
    • Klastry wirtualizacji (KVM/Proxmox/ESXi) i kontenery Kubernetes: NFSv4.1/NFSv4.2
Wybór protokołu plików (ang. protocol selection): Wybór protokołu wynika z dominującego systemu operacyjnego klientów, wymagań wydajnościowych oraz modelu blokad plików. W środowisku z przewagą Windows protokół SMBv3 zapewnia integrację z domeną, mapowanie dysków i listy Windows ACL. W środowisku z przewagą Linux protokół NFS zapewnia natywną semantykę POSIX, obsługę dowiązań i minimalny narzut, a w wersji 4.1 skalowanie równoległe pNFS. Dla pracowników biurowych wybiera się zwykle Sambę, a dla wirtualizacji i kontenerów eksporty NFSv4.
ASK_prez09_s26
27 / 50
NFS w praktyce – instalacja i pierwsze kroki
Cel slajdu: Slajd pokazuje instalację jądrowego serwera NFS w systemie Linux oraz znaczenie liczby wątków roboczych.

Wdrażanie jądrowego serwera NFS w dystrybucjach Linux

  • Pakiety oprogramowania (Debian / Ubuntu):
    • Serwer plików: apt update && apt install nfs-kernel-server -y
    • Węzeł kliencki: apt install nfs-common -y
  • Implementacja jądrowa (Kernel-Space vs User-Space):
    • Pakiet nfs-kernel-server uruchamia moduł jądra nfsd
    • Operacje I/O realizowane bezpośrednio w kontekście jądra Linux z pominięciem przełączania kontekstu do przestrzeni użytkownika – maksymalna wydajność i minimalne opóźnienia
  • Zarządzanie usługami w systemd:
    • Status usługi serwera: systemctl status nfs-kernel-server
    • Włączenie autostartu: systemctl enable --now nfs-kernel-server
  • Domyślna liczba wątków roboczych nfsd:
    • Plik konfiguracyjny /etc/default/nfs-kernel-server (parametr RPCNFSDCOUNT=8 lub wyższy w zależności od liczby rdzeni CPU i dysków)
Serwer NFS w Linux (ang. NFS kernel server): Jądrowy serwer NFS realizuje operacje wejścia i wyjścia w przestrzeni jądra bez przełączania kontekstu do procesów użytkownika, co zapewnia wysoką przepustowość. W Debian i Ubuntu instalacja obejmuje pakiet nfs-kernel-server dla serwera oraz nfs-common dla klienta wraz z usługą rpcbind. Pracą usługi zarządza systemd poleceniami status oraz enable z opcją now. Liczba wątków jądra w parametrze RPCNFSDCOUNT wymaga zwiększenia z domyślnych ośmiu do kilkudziesięciu w obciążonych wdrożeniach.
ASK_prez09_s27
28 / 50
Idmapd – mapowanie identyfikatorów w NFSv4
Cel slajdu: Slajd wyjaśnia translację tożsamości w protokole NFSv4 oraz przyczyny mapowania na konto anonimowe.

Translacja nazw tożsamości i konfiguracja demona rpc.idmapd

  • Problem reprezentacji tożsamości: W NFSv3 przesyłano numeryczne UID/GID; jeśli użytkownik adam miał UID 1001 na kliencie, a UID 1005 na serwerze, pliki stawały się własnością obcej osoby.
  • Rozwiązanie w NFSv4: Przesyłanie tożsamości w postaci czytelnych ciągów tekstowych: użytkownik@domena_nfs (np. adam@asklab.local).
  • Rola demona rpc.idmapd: Tłumaczy przychodzące ciągi znaków user@domain na lokalne wartości numeryczne UID/GID w systemie operacyjnym serwera i klienta.
  • Plik konfiguracyjny /etc/idmapd.conf:
    • Sekcja [General]: parametr Domain = asklab.local
    • Krytyczna zasada: Nazwa domeny NFS musi być identyczna na serwerze i wszystkich klientach
  • Symptom błędu konfiguracji: Pliki widoczne jako należące do użytkownika i grupy nobody:nogroup (lub nfsnobody).
Demon idmapd (ang. ID mapping daemon): Demon idmapd tłumaczy tekstowe tożsamości w formacie użytkownikmałpadomena na numeryczne UID i GID lokalnego systemu. W wersji trzeciej przesyłano wyłącznie liczby, co powodowało konflikty przy różnych bazach kont na kliencie i serwerze. W wersji czwartej zgodność zapewnia wspólna wartość Domain w pliku /etc/idmapd.conf na wszystkich węzłach, zgodnie z RFC 7530. Rozbieżność domen objawia się własnością nobody i grupą nogroup dla nowych plików.
ASK_prez09_s28
29 / 50
Demon mountd i weryfikacja żądań montowania
Cel slajdu: Slajd omawia rolę demona mountd w protokole NFSv3 oraz sposób stabilizacji portów dla zapory ogniowej.

Rola rpc.mountd w architekturze NFSv3 i zarządzanie uchwytami plików

  • Funkcja demona rpc.mountd: Demon pomocniczy protokołu MNT RPC (program RPC 100005); weryfikuje uprawnienia hosta klienckiego na podstawie reguł w /etc/exports.
  • Wydawanie uchwytu plikowego (File Handle): Po pomyślnej autoryzacji mountd zwraca klientowi początkowy, nieprzezroczysty (opaque) uchwyt katalogu głównego eksportu.
  • Problem losowych portów w NFSv3: Domyślnie mountd rejestruje się w rpcbind na losowym porcie dynamicznym przydzielonym przez jądro; uniemożliwia to prostą konfigurację reguł zapory ogniowej.
  • Statyczne przypisanie portu dla zapory sieciowej:
    • Konfiguracja w /etc/default/nfs-kernel-server: RPCMOUNTDOPTS="-p 32767"
    • W nowszych wydaniach w /etc/nfs.conf: sekcja [mountd], parametr port = 32767
  • Wyłączenie mountd w NFSv4: W czystym środowisku NFSv4 usługa mountd nie bierze udziału w operacji montowania – funkcja ta jest wbudowana bezpośrednio w protokół główny na porcie 2049.
Demon mountd (ang. mount daemon): Demon mountd implementuje protokół MOUNT o numerze programu 100005 i pełni rolę strażnika weryfikującego adres klienta względem pliku /etc/exports. Po autoryzacji zwraca nieprzezroczysty uchwyt plikowy oparty na numerze i-węzła i numerze generacji, którym klient posługuje się w dalszych wywołaniach. W wersji trzeciej demon domyślnie losuje port, dlatego dla zapory stabilizuje się go opcją myślnik p z numerem, na przykład 32767, w pliku /etc/default/nfs-kernel-server albo sekcji mountd pliku /etc/nfs.conf. W czystej wersji czwartej usługa nie bierze udziału w montowaniu.
ASK_prez09_s29
30 / 50
Pseudo system plików w NFSv4
Cel slajdu: Slajd przedstawia koncepcję pseudo systemu plików porządkującą eksporty NFSv4 we wspólnym drzewie.

Jednolite wirtualne drzewo eksportów w architekturze NFSv4

  • Tradycyjny model NFSv3: Każdy eksportowany katalog stanowił niezależny, izolowany punkt montowania; klient musiał znać pełną, bezwzględną ścieżkę serwera (np. serwer:/srv/nfs/projekty/dane).
  • Koncepcja Pseudo-Filesystem w NFSv4: Wprowadzenie jednolitego wirtualnego drzewa katalogów reprezentującego wszystkie udostępniane zasoby serwera pod wspólnym korzeniem (Pseudo-Root).
  • Dyrektywa fsid=0 (lub fsid=root): Oznaczenie w pliku /etc/exports katalogu bazowego, który staje się punktem startowym dla wszystkich eksportów NFSv4.
  • Uproszczona składnia montowania klienta:
    • Zamiast montować długą ścieżkę fizyczną, klient odwołuje się bezpośrednio do korzenia: mount -t nfs4 serwer:/ /mnt lub podkatalogu: mount -t nfs4 serwer:/dane /mnt
  • Wiązanie katalogów przez mount --bind: Technika bezpiecznego dołączania dowolnych folderów z różnych dysków serwera do wspólnego drzewa pseudo-root.
Pseudo system plików (ang. pseudo-filesystem): Pseudo system plików to wirtualne drzewo przestrzeni nazw NFSv4 z jednym korzeniem oznaczonym opcją fsid równą zero albo root w pliku /etc/exports. Klient montuje korzeń serwera i przegląda podległe zasoby operacjami LOOKUP i READDIR jak lokalny dysk, bez znajomości fizycznych ścieżek partycji. Katalogi z różnych wolumenów włącza się do drzewa mechanizmem dowiązania mount z opcją bind, utrwalanym w pliku /etc/fstab serwera. Mechanizm opisuje dokument RFC 7530.
ASK_prez09_s30
31 / 50
Plik /etc/exports – definiowanie eksportów NFS
Cel slajdu: Slajd wyjaśnia składnię pliku eksportów NFS oraz zasady definiowania katalogów, klientów i opcji.

Struktura i reguły składniowe pliku /etc/exports

  • Rola pliku: Główny plik konfiguracyjny serwera NFS definiujący udostępniane katalogi, uprawnione hosty klienckie oraz parametry transmisji i bezpieczeństwa.
  • Podstawowa składnia wiersza:
    • /ścieżka/katalogu klient1(opcja1,opcja2) klient2(opcja1,opcja2)
    • Krytyczna pułapka składniowa: Brak spacji pomiędzy identyfikatorem klienta a otwierającym nawiasem opcji! Spacja (np. host (rw)) sprawia, że opcje (rw) zostaną przypisane domyślnie do wszystkich hostów na świecie!
  • Formaty określania klientów:
    • Pojedynczy adres IP: 192.168.56.101(rw,sync)
    • Podsieć w notacji CIDR: 192.168.56.0/24(ro,sync) lub z maską dziesiętną 192.168.56.0/255.255.255.0
    • W pełni kwalifikowana nazwa domenowa (FQDN): stacja1.asklab.local(rw)
    • Dopasowanie ze znakami wieloznacznymi (Wildcards): *.asklab.local(ro)
    • Grupy sieciowe NIS/LDAP (Netgroups): @laboratorium(rw)
Plik /etc/exports (ang. NFS exports file): Plik /etc/exports to główny plik konfiguracyjny serwera NFS definiujący udostępniane katalogi, uprawnione hosty oraz parametry transmisji i bezpieczeństwa. Wiersz składa się ze ścieżki katalogu, specyfikacji klienta w postaci adresu, nazwy albo podsieci oraz listy opcji w nawiasach bez spacji po nazwie hosta. Zmiany aplikuje się poleceniem exportfs bez restartu usługi, a rzeczywistą tabelę jądra przechowuje plik /var/lib/nfs/etab. Składnię opisują podręczniki systemu Linux.
ASK_prez09_s31
32 / 50
Opcje eksportu NFS – szczegółowy opis
Cel slajdu: Slajd omawia kluczowe opcje eksportu NFS decydujące o trybie zapisu, bezpieczeństwie i wydajności.

Kluczowe parametry wydajnościowe i bezpieczeństwa w /etc/exports

  • Uprawnienia I/O:
    • ro (Read-Only): Udział dostępny wyłącznie do odczytu (współczesny standard domyślny)
    • rw (Read-Write): Zezwolenie na modyfikację, tworzenie i usuwanie plików
  • Semantyka zapisu dyskowego:
    • sync (standard domyślny): Potwierdzenie zapisu przesyłane do klienta dopiero po fizycznym utrwaleniu danych na nośniku dyskowym serwera – gwarancja integralności
    • async: Serwer potwierdza zapis natychmiast po umieszczeniu danych w pamięci RAM; wysoka wydajność, lecz ryzyko utraty lub uszkodzenia danych przy zaniku zasilania
  • Weryfikacja poddrzewa katalogów:
    • no_subtree_check: Wyłącza sprawdzanie, czy plik należy do wyeksportowanego podkatalogu; bezwzględnie rekomendowane ze względów wydajnościowych i niezawodnościowych
    • subtree_check: Wymusza kosztowne sprawdzanie uprawnień w katalogach nadrzędnych; generuje problemy przy zmianie nazw otwartych plików
  • Zarządzanie opóźnieniami zapisu:
    • wdelay (Write Delay): Domyślne opóźnianie zapisu w celu łączenia małych bloków; opcja no_wdelay eliminuje opóźnienia przy dyskach NVMe/SSD
Opcje eksportu NFS (ang. NFS export options): Opcje eksportu sterują trybem dostępu, synchronicznością zapisu oraz mapowaniem tożsamości w protokole NFS. Para rw i ro rozróżnia odczyt z zapisem od dostępu tylko do odczytu, para sync i async decyduje o potwierdzaniu zapisu po utrwaleniu na dysku albo po buforowaniu, a opcja no_subtree_check przyspiesza weryfikację ścieżek w dużych drzewach. Mapowanie tożsamości regulują opcje root_squash, no_root_squash i all_squash wraz z parametrami anonuid i anongid. Dobór opcji wymaga równowagi między bezpieczeństwem a przepustowością.
ASK_prez09_s32
33 / 50
root_squash – krytyczny mechanizm bezpieczeństwa NFS
Cel slajdu: Slajd wyjaśnia mechanizm spłaszczania uprawnień administratora jako podstawową ochronę serwera NFS.

Ochrona tożsamości administratora i zasada minimalnych uprawnień

  • Zasada działania root_squash (Domyślnie włączone):
    • Każde przychodzące żądanie RPC wysłane z tożsamością UID 0 (root klienta) jest automatycznie mapowane na identyfikator konta anonimowego (UID 65534 – nobody / nogroup)
    • Zapobiega przejęciu pełnej kontroli nad systemem plików serwera przez użytkownika z uprawnieniami roota na stacji roboczej
  • Zagrożenie opcją no_root_squash:
    • Wyłącza mapowanie: root na stacji klienckiej staje się prawdziwym rootem na serwerze plików
    • Skrajnie niebezpieczne w środowiskach wielodostępnych: użytkownik może wgrać zmanipulowany plik binarny z bitem SUID (chmod 4755) lub odczytać poufne pliki systemowe
    • Dopuszczalne wyłącznie w ściśle odizolowanych węzłach klastrów backupowych i dyskach bezdyskowej instalacji sieciowej (Diskless Root NFS)
  • Opcja all_squash:
    • Wszystkie przychodzące identyfikatory (zarówno root, jak i zwykli użytkownicy) są mapowane na konto anonimowe; idealne dla publicznych składnic danych do odczytu
  • Jawne definiowanie anonimowego UID/GID: anonuid=1000,anongid=1000
Mechanizm root_squash (ang. root squashing): Mechanizm root_squash powoduje translację zdalnego identyfikatora UID zero na anonimowe konto nobody w chwili odebrania pakietu przez serwer. Zapobiega to przejęciu plików przez użytkownika posiadającego administratora na własnej stacji, który mógłby sfałszować nagłówek RPC. Opcja no_root_squash wyłącza ochronę i dopuszcza zdalnego roota bez ograniczeń, dlatego audytorzy traktują ją jako poważne uchybienie. Wyłączenie dopuszcza się wyłącznie dla pojedynczego serwera kopii w wydzielonej sieci magazynowej, gdzie odtworzenie własności wymaga oryginalnych UID.
ASK_prez09_s33
34 / 50
Administracja eksportami – exportfs i showmount
Cel slajdu: Slajd przedstawia narzędzia exportfs i showmount służące do zarządzania tabelą eksportów i inspekcji udziałów.

Zarządzanie tabelą eksportów jądra i inspekcja zasobów NFS

  • Polecenie exportfs (Zarządzanie po stronie serwera):
    • exportfs -arv: Podstawowe polecenie przeładowania konfiguracji; synchronizuje wpisy z /etc/exports z jądrem bez restartu usługi (-a: all, -r: re-export, -v: verbose)
    • exportfs -v: Wyświetla aktualną listę aktywnych eksportów z uwzględnieniem wszystkich opcji domyślnych jądra
    • exportfs -u klient:/ścieżka: Natychmiastowe usunięcie konkretnego eksportu w czasie rzeczywistym
    • exportfs -o rw,no_root_squash klient:/katalog: Tymczasowe wyeksportowanie katalogu z linii poleceń
  • Rejestr stanów w systemie serwera:
    • /var/lib/nfs/etab: Rzeczywista, wygenerowana przez exportfs tabela eksportów interpretowana przez demony
    • /var/lib/nfs/rmtab: Historyczna lista hostów, które zamontowały zasoby
  • Polecenie showmount (Diagnostyka kliencka):
    • showmount -e adres_serwera: Odpytanie demona mountd serwera o listę dostępnych udziałów
Administracja eksportami NFS (ang. NFS export administration): Administracja eksportami polega na synchronizacji pliku /etc/exports z tabelą jądra bez restartu demonów, co zapewnia polecenie exportfs z opcjami all, re-export i verbose. Wynik trafia do pliku /var/lib/nfs/etab czytanego przez mountd i nfsd, natomiast historia montowań znajduje się w pliku rmtab. Diagnostykę od strony klienta umożliwia polecenie showmount z opcją e odpytujące demona mountd o listę udziałów. W czystym środowisku NFSv4 z zablokowanymi portami pomocniczymi polecenie może zgłaszać przekroczenie czasu mimo poprawnej pracy portu 2049.
ASK_prez09_s34
35 / 50
Przykładowa konfiguracja /etc/exports
Cel slajdu: Slajd omawia wzorcowy zestaw reguł eksportu łączący korzeń NFSv4 z udziałami o różnym poziomie zaufania.

Kompleksowy, produkcyjny zestaw reguł eksportu NFS

# /etc/exports - Wzorcowa konfiguracja produkcyjna

# 1. Korzeń pseudo-systemu plików dla klientów NFSv4
/srv/nfs                   192.168.56.0/24(ro,sync,no_subtree_check,fsid=0)

# 2. Zasób publiczny - dostępny dla całej podsieci tylko do odczytu
/srv/nfs/public            192.168.56.0/24(ro,sync,no_subtree_check,all_squash)

# 3. Zasób projektowy - pełny odczyt i zapis ze spłaszczaniem roota
/srv/nfs/projects          192.168.56.101(rw,sync,no_subtree_check,root_squash)

# 4. Zasób kopii zapasowych - ściśle wydzielony węzeł z zachowaniem uprawnień
/srv/nfs/backup            192.168.56.200(rw,sync,no_subtree_check,no_root_squash)
Wzorcowy plik /etc/exports (ang. reference exports): Wzorcowy plik łączy korzeń pseudo systemu plików oznaczony opcją fsid równą zero z trzema profilami dostępu: publicznym tylko do odczytu, projektowym do zapisu oraz archiwalnym dla pojedynczego serwera. Zasób publiczny stosuje all_squash dla pełnej anonimowości, zasób projektowy stosuje root_squash dla ochrony przed eskalacją, a zasób kopii stosuje no_root_squash wyłącznie dla adresu serwera backupu w celu zachowania własności plików. Ograniczenie każdego wpisu do konkretnej podsieci albo adresu realizuje zasadę minimalnych uprawnień.
ASK_prez09_s35
36 / 50
Montowanie NFS po stronie klienta
Cel slajdu: Slajd wyjaśnia składnię montowania NFS po stronie klienta oraz wpływ opcji twardych i rozmiarów buforów na bezpieczeństwo danych.

Składnia polecenia mount i dobór parametrów transmisji

  • Podstawowa składnia montowania w systemie Linux:
    • Montowanie NFSv4: mount -t nfs -o vers=4.2 serwer:/ /mnt (lub wybranego podkatalogu)
    • Montowanie tradycyjne NFSv3: mount -t nfs -o vers=3 serwer:/srv/nfs/public /mnt
  • Semantyka obsługi awarii sieci (Opcje hard vs soft):
    • hard (Domyślnie i bezwzględnie zalecane): W przypadku niedostępności serwera procesy zawieszają się w stanie czuwania (D-state) i ponawiają próby w nieskończoność; brak ryzyka uszkodzenia danych
    • soft: Klient ponawia żądania przez określoną liczbę prób (retrans), po czym zwraca błąd I/O do aplikacji; ogromne ryzyko uszkodzenia baz danych i dokumentów
  • Optymalizacja wielkości buforów transmisji:
    • Parametry rsize=1048576,wsize=1048576: Rozmiar bufora odczytu i zapisu (1 MB); maksymalne nasycenie sieci gigabitowych i 10GbE
  • Flagi bezpieczeństwa montowania lokalnego:
    • nosuid (Blokada bitu SUID), nodev (Ignorowanie plików urządzeń), noexec (Zakaz wykonywania binariów)
Montowanie klienta NFS (ang. NFS client mount): Montowanie klienta NFS wymaga wyboru wersji protokołu, semantyki awarii oraz parametrów transmisji i bezpieczeństwa lokalnego. Opcja vers wymusza wersję czwartą albo trzecią, opcja hard zawiesza procesy do powrotu serwera, natomiast opcja soft zwraca błąd wejścia i wyjścia z ryzykiem uszkodzenia baz danych. Parametry rsize i wsize o rozmiarze megabajta nasycają łącza gigabitowe, a flagi nosuid, nodev i noexec blokują eskalację przez podrzucone pliki. Wersję czwartą montuje się zwykle samym ukośnikiem serwera, a wersję trzecią pełną ścieżką fizyczną.
ASK_prez09_s36
37 / 50
Montowanie trwałe – /etc/fstab oraz autofs
Cel slajdu: Slajd porównuje trwałe montowanie przez plik fstab z dynamicznym montowaniem przez usługę automontującą.

Automatyzacja montowania zasobów: /etc/fstab a demon autofs

  • Trwałe montowanie w pliku /etc/fstab:
    • Format wpisu: 192.168.56.100:/public /mnt/public nfs4 defaults,_netdev,nofail 0 0
    • Flaga _netdev: Informuje systemd, że zasób wymaga aktywnego stosu sieciowego; montowanie następuje dopiero po podniesieniu interfejsów sieciowych
    • Flaga nofail: Zapobiega zawieszeniu startu systemu (Emergency Mode) w przypadku awarii lub niedostępności serwera NFS podczas bootowania
    • Opcja systemd: x-systemd.automount – montowanie w locie przy pierwszej próbie dostępu
  • Automounter (Demon autofs) – optymalne rozwiązanie korporacyjne:
    • Zasób jest montowany dynamicznie tylko wtedy, gdy proces wchodzi do katalogu, i automatycznie odmontowywany po okresie bezczynności (np. 5 minut)
    • Eliminuje problem zablokowanych punktów montowania i osieroconych połączeń
    • Plik główny: /etc/auto.master (wpis: /mnt/nfs /etc/auto.nfs --timeout=300)
    • Plik mapy: /etc/auto.nfs (wpis: public -fstype=nfs4,rw,hard,intr 192.168.56.100:/public)
Montowanie trwałe i automatyczne (ang. persistent and on-demand mount): Montowanie trwałe w pliku /etc/fstab wymaga flagi podkreślenie netdev odkładającej montowanie do gotowości sieci oraz flagi nofail chroniącej start przed trybem awaryjnym przy niedostępnym serwerze. Opcja automontowania systemd montuje zasób dopiero przy pierwszym dostępie. W środowiskach wieloserwerowych lepszym standardem jest demon autofs, który montuje katalog po wejściu procesu i odmontowuje go po okresie bezczynności. Konfiguracja obejmuje mapę główną auto.master oraz mapę udziału auto.nfs z parametrami NFS i limitem czasu.
ASK_prez09_s37
38 / 50
NFSv4.1 pNFS – równoległy dostęp do plików
Cel slajdu: Slajd przedstawia architekturę równoległego NFS rozdzielającą metadane od transferu danych.

Architektura Parallel NFS – przełamywanie barier skalowalności

  • Ograniczenia tradycyjnego NFS: Wszystkie strumienie danych i metadanych przechodzą przez pojedynczy serwer plików; kontroler staje się wąskim gardłem (Bottleneck) dla klastrów liczących setki węzłów.
  • Architektura pNFS (RFC 8881): Separacja ścieżki sterowania (Metadane) od ścieżki przesyłania danych (Data I/O).
  • Główne komponenty środowiska pNFS:
    • Serwer Metadanych (Metadata Server – MDS): Obsługuje otwieranie plików, uprawnienia i zarządza strukturą katalogów
    • Serwery Danych (Data Servers – DS): Węzły dyskowe przechowujące właściwe bloki danych plików
    • Klient pNFS: Pobiera od MDS strukturę rozmieszczenia bloków (tzw. Layout), po czym realizuje równoległe transfery I/O bezpośrednio do wielu DS
  • Dostępne typy układów danych (Layout Types):
    • File Layout: Standardowe pliki na wielu serwerach NFSv4
    • Block Layout: Bezpośredni dostęp blokowy przez protokoły SAN (iSCSI, Fibre Channel)
    • Object Layout / Flex Files: Magazyny obiektowe i elastyczne klastry chmurowe
Protokół pNFS (ang. Parallel NFS): Protokół pNFS stanowi rozszerzenie standardu NFSv4.1 opisane w dokumencie RFC 8881 i rozdziela ścieżkę sterowania od ścieżki danych. Serwer metadanych weryfikuje uprawnienia i zwraca klientowi układ rozmieszczenia bloków, po czym klient prowadzi równoległe transfery bezpośrednio do wielu serwerów danych. Eliminuje to wąskie gardło pojedynczego kontrolera i zapewnia niemal liniowe skalowanie z liczbą węzłów. Dostępne układy obejmują pliki, bloki SAN oraz obiekty i elastyczne pliki chmurowe.
ASK_prez09_s38
39 / 50
LAB – cel i środowisko laboratoryjne
Cel slajdu: Slajd określa cel ćwiczenia laboratoryjnego oraz topologię wirtualnego środowiska serwer-klient.

Topologia sieciowa i założenia środowiska ćwiczeniowego

  • Cel ćwiczenia laboratoryjnego: Praktyczne wdrożenie, zabezpieczenie, przetestowanie oraz weryfikacja operacyjna serwera plików Samba oraz jądrowego serwera NFS.
  • Topologia środowiska wirtualnego:
    • Podsieć laboratoryjna: 192.168.56.0/24 (izolowana sieć Host-Only lub bridge)
    • Węzeł serwerowy (SRV-STORAGE): Adres IP 192.168.56.100 (Ubuntu 22.04 LTS, usługi smbd, nmbd, nfs-kernel-server)
    • Węzeł kliencki (CLI-CLIENT): Adres IP 192.168.56.101 (Ubuntu 22.04 LTS, pakiety cifs-utils, smbclient, nfs-common)
  • Plan realizacji zadań:
    • Część 1: Konfiguracja udziału Samba otwartego ([Publiczny]) i autoryzowanego ([Prywatny])
    • Część 2: Konfiguracja eksportów NFSv4 i praktyczny test mechanizmu root_squash
    • Część 3: Weryfikacja ze stacji klienckiej i analiza uprawnień systemowych POSIX
Środowisko laboratoryjne (ang. lab environment): Środowisko laboratoryjne odwzorowuje typową sieć przedsiębiorstwa z centralnym serwerem pamięci i stacją kliencką w izolowanej podsieci 192.168.56.0/24. Węzeł serwerowy o adresie 192.168.56.100 pracuje na Ubuntu 22.04 LTS z usługami smbd, nmbd i nfs-kernel-server. Węzeł kliencki o adresie 192.168.56.101 zawiera pakiety cifs-utils, smbclient i nfs-common do testów obu protokołów. Plan obejmuje udziały publiczny i prywatny Samba, eksporty NFSv4 z testem root_squash oraz analizę uprawnień POSIX.
ASK_prez09_s39
40 / 50
LAB część 1 – konfiguracja udziału Samba Publiczny
Cel slajdu: Slajd omawia wdrożenie publicznego udziału Samba dostępnego anonimowo w trybie tylko do odczytu.

Wdrażanie ogólnodostępnego udziału sieciowego tylko do odczytu

  • Krok 1: Instalacja oprogramowania serwera:
    • apt update && apt install samba -y
  • Krok 2: Przygotowanie katalogu w systemie plików:
    • Utworzenie katalogu: mkdir -p /srv/samba/public
    • Ustawienie uprawnień POSIX: chown -R nobody:nogroup /srv/samba/public && chmod -R 0755 /srv/samba/public
    • Plik testowy: echo "Witaj w zasobie publicznym" > /srv/samba/public/info.txt
  • Krok 3: Definicja udziału w /etc/samba/smb.conf:
    • Dopisanie na końcu pliku sekcji [Publiczny]:
      [Publiczny]
          comment = Zasób publiczny tylko do odczytu
          path = /srv/samba/public
          browseable = yes
          read only = yes
          guest ok = yes
  • Krok 4: Weryfikacja i aplikacja zmian:
    • testparm -s oraz systemctl reload smbd
Udział publiczny Samba (ang. public share): Udział publiczny służy do dystrybucji sterowników, wzorów i instalatorów bez wymogu logowania, przy całkowitej blokadzie modyfikacji. Katalog /srv/samba/public otrzymuje właściciela nobody i uprawnienia 0755, dzięki czemu gość może czytać i przeglądać, lecz jądro odmawia zapisu. W pliku smb.conf sekcja Publiczny ustawia guest ok na yes oraz read only na yes, tworząc dwie niezależne linie obrony w warstwie systemu i protokołu. Weryfikację zapewnia testparm, a aplikację przeładowanie demona smbd bez zrywania sesji.
ASK_prez09_s40
41 / 50
LAB część 1 – konfiguracja udziału Samba Prywatny
Cel slajdu: Slajd przedstawia wdrożenie prywatnego udziału Samba z uwierzytelnianiem użytkowników i uprawnieniami grupowymi.

Wdrażanie autoryzowanego udziału sieciowego z uprawnieniami grupy

  • Krok 1: Przygotowanie tożsamości systemowych Linux:
    • Utworzenie grupy roboczej: groupadd kadry
    • Utworzenie konta użytkownika: useradd -M -s /usr/sbin/nologin -g kadry jan
  • Krok 2: Utworzenie i zabezpieczenie katalogu dyskowego:
    • mkdir -p /srv/samba/private
    • Przypisanie właściciela i grupy: chown -R root:kadry /srv/samba/private
    • Ustawienie uprawnień POSIX z bitem SGID (SetGID): chmod -R 2770 /srv/samba/private (wszystkie nowo tworzone pliki automatycznie dziedziczą grupę kadry)
  • Krok 3: Rejestracja użytkownika w bazie haseł SMB:
    • smbpasswd -a jan (wprowadzenie i zatwierdzenie hasła sieciowego)
  • Krok 4: Konfiguracja udziału [Prywatny] w /etc/samba/smb.conf:
    • Sekcja:
      [Prywatny]
          comment = Dział Kadr – Zasób poufny
          path = /srv/samba/private
          browseable = yes
          read only = no
          guest ok = no
          valid users = @kadry
          create mask = 0660
          directory mask = 0770
  • Krok 5: Aplikacja konfiguracji: testparm -s && systemctl reload smbd
Udział prywatny Samba (ang. private share): Udział prywatny zapewnia poufność przez połączenie uwierzytelniania Samba z grupowymi uprawnieniami POSIX. Konta systemowe tworzy się w Linux, hasła SMB dodaje polecenie smbpasswd, a dostęp ogranicza parametr valid users z nazwą grupy. Maski 0660 dla plików i 0770 dla katalogów gwarantują współpracę członków zespołu bez dostępu osób postronnych. Blokada gości parametrem guest ok równym no eliminuje sesje anonimowe, a weryfikacja obejmuje testparm i test smbclient z kontem użytkownika.
ASK_prez09_s41
42 / 50
LAB część 1 – weryfikacja Samba z klientów
Cel slajdu: Slajd omawia procedurę weryfikacji udziałów SMB ze stacji Windows i Linux po stronie klienta.

Procedura weryfikacji udziałów SMB ze stacji roboczych

  • Test 1: Badanie dostępności zasobów z linii poleceń (smbclient):
    • Listowanie udziałów anonimowo: smbclient -L //192.168.56.100 -U%
    • Połączenie anonimowe do [Publiczny]: smbclient //192.168.56.100/Publiczny -U% (powinno zakończyć się sukcesem; test pobrania pliku: get info.txt)
    • Próba anonimowa do [Prywatny]: smbclient //192.168.56.100/Prywatny -U% (oczekiwany błąd: NT_STATUS_ACCESS_DENIED)
    • Połączenie autoryzowane do [Prywatny]: smbclient //192.168.56.100/Prywatny -U jan (sukces; test zapisu: put dokument.pdf)
  • Test 2: Montowanie natywne w systemie Linux (cifs-utils):
    • Montowanie do katalogu: mount -t cifs -o username=jan,uid=1000,gid=1000 //192.168.56.100/Prywatny /mnt/samba
  • Test 3: Weryfikacja w środowisku Microsoft Windows:
    • Mapowanie dysku sieciowego z wiersza poleceń CMD/PowerShell:
      net use Z: \\192.168.56.100\Prywatny HasloSieciowe /user:jan
Weryfikacja klienta SMB (ang. SMB client verification): Weryfikacja klienta obejmuje listowanie udziałów, test sesji interaktywnej oraz trwałe montowanie w systemie Linux. Polecenie smbclient z opcją listowania pokazuje zasoby serwera, a sesja ze wskazaniem udziału i użytkownika potwierdza poprawność hasła i uprawnień. Montowanie przez mount z typem cifs wymaga pakietu cifs-utils oraz pliku poświadczeń o prawach 0600. W systemie Windows weryfikację zapewniają Eksplorator z adresem UNC, polecenie net use oraz moduł Get-SmbConnection pokazujący dialekt.
ASK_prez09_s42
43 / 50
LAB część 2 – konfiguracja NFS eksportów
Cel slajdu: Slajd przedstawia konfigurację eksportów NFSv4 w laboratorium z korzeniem pseudo systemu plików.

Wdrażanie jądrowego serwera NFSv4 z katalogiem pseudo-root

  • Krok 1: Instalacja oprogramowania serwera NFS:
    • apt update && apt install nfs-kernel-server -y
  • Krok 2: Przygotowanie struktury katalogów eksportu:
    • Utworzenie korzenia i zasobów: mkdir -p /srv/nfs/{public,projects}
    • Uprawnienia dla zasobu publicznego: chmod -R 0755 /srv/nfs/public
    • Uprawnienia dla zasobu projektowego: chmod -R 0777 /srv/nfs/projects
    • Plik testowy: echo "NFS Public Data" > /srv/nfs/public/plik.txt
  • Krok 3: Konfiguracja reguł w pliku /etc/exports:
    • Dopisanie reguł z korzeniem pseudo-filesystemu:
      /srv/nfs          192.168.56.0/24(ro,sync,no_subtree_check,fsid=0)
      /srv/nfs/public   192.168.56.0/24(ro,sync,no_subtree_check)
      /srv/nfs/projects 192.168.56.0/24(rw,sync,no_subtree_check,root_squash)
  • Krok 4: Aplikacja konfiguracji i weryfikacja stanu:
    • Eksportowanie: exportfs -arv
    • Podgląd aktywnych wpisów: exportfs -v oraz cat /var/lib/nfs/etab
Laboratoryjne eksporty NFS (ang. lab NFS exports): Laboratoryjne eksporty łączą korzeń NFSv4 dla podsieci ćwiczeniowej z zasobami o różnym trybie dostępu. Katalog /srv/nfs z opcją fsid równą zero stanowi punkt startowy, zasób publiczny pracuje w trybie tylko do odczytu, a zasób projektowy w trybie zapisu z ochroną root_squash. Uprawnienia POSIX z właścicielem nobody dla zasobu publicznego i grupą projektową dla zasobu do zapisu muszą odpowiadać opcjom eksportu. Aktywację zapewnia exportfs z opcjami all, re-export i verbose, a kontrolę plik etab.
ASK_prez09_s43
44 / 50
LAB część 2 – montowanie NFS i test root_squash
Cel slajdu: Slajd omawia test montowania NFS po stronie klienta oraz praktyczne sprawdzenie działania ochrony root_squash.

Praktyczny test uprawnień i weryfikacja mechanizmu root_squash

  • Krok 1: Przygotowanie węzła klienckiego (192.168.56.101):
    • Instalacja klienta: apt install nfs-common -y
    • Utworzenie punktów montowania: mkdir -p /mnt/{nfs_pub,nfs_proj}
  • Krok 2: Montowanie zasobów protokołem NFSv4:
    • Zasób publiczny: mount -t nfs4 192.168.56.100:/public /mnt/nfs_pub
    • Zasób projektowy: mount -t nfs4 192.168.56.100:/projects /mnt/nfs_proj
  • Krok 3: Weryfikacja blokady zapisu na udziale tylko do odczytu:
    • Próba utworzenia pliku: touch /mnt/nfs_pub/nowy.txt
    • Oczekiwany rezultat: Błąd touch: cannot touch '/mnt/nfs_pub/nowy.txt': Read-only file system
  • Krok 4: Praktyczny dowód działania mechanizmu root_squash:
    • Zalogowany jako root na maszynie klienckiej wydaje polecenie: touch /mnt/nfs_proj/root_test.txt
    • Sprawdzenie uprawnień pliku na serwerze i kliencie: ls -l /mnt/nfs_proj/root_test.txt
    • Wynik: Właścicielem pliku jest nobody:nogroup (UID 65534), a nie root – mechanizm root_squash skutecznie obronił tożsamość serwera!
Test root_squash (ang. root squashing test): Test polega na montowaniu eksportu poleceniem mount z wersją czwartą, utworzeniu pliku jako zwykły użytkownik oraz próbie zapisu jako lokalny administrator klienta. Przy włączonej ochronie root_squash zapis administratora kończy się odmową z powodu mapowania na konto nobody. Próba utworzenia pliku wykonywalnego z bitem SUID potwierdza brak eskalacji na serwerze. Weryfikację własności zapewniają polecenia ls z opcją listowania numerycznego oraz stat pokazujące UID właściciela na serwerze.
ASK_prez09_s44
45 / 50
Rozwiązywanie problemów – mapowanie użytkowników
Cel slajdu: Slajd przedstawia diagnostykę niespójności tożsamości UID i GID oraz konfiguracji mapowania w NFSv4.

Diagnostyka niespójności tożsamości UID/GID i konfiguracji idmapd

  • Symptom 1: Pliki należące do nobody:nogroup (lub nfsnobody):
    • Przyczyna w NFSv4: Niezgodność zadeklarowanej domeny w pliku /etc/idmapd.conf pomiędzy serwerem a klientem; demon rpc.idmapd nie potrafi przetłumaczyć tożsamości użytkownik@obca-domena
    • Rozwiązanie: Ustawienie identycznej wartości dyrektywy Domain = asklab.local na wszystkich węzłach; wyczyszczenie pamięci podręcznej jądra: nfsidmap -c
  • Symptom 2: Błędny właściciel pliku lub odmowa uprawnień w NFSv3:
    • Przyczyna w NFSv3: Niespójność lokalnych plików /etc/passwd; użytkownik na kliencie ma inny numeryczny UID niż ten sam użytkownik na serwerze
    • Rozwiązanie: Wdrożenie centralnej usługi tożsamości (OpenLDAP, FreeIPA, Active Directory) lub standaryzacja identyfikatorów UID/GID skryptami konfiguracyjnymi
  • Zarządzanie zaawansowanymi listami ACL w NFSv4:
    • Odczyt uprawnień granularnych: nfs4_getfacl nazwa_pliku
    • Modyfikacja reguł ACL: nfs4_setfacl -a A::jan@asklab.local:RWX nazwa_pliku
Mapowanie tożsamości użytkowników (ang. identity mapping): Niespójność tożsamości objawia się plikami należącymi do obcych kont w NFSv3 albo do nobody w NFSv4. W wersji trzeciej przyczyną są różne numery UID w plikach passwd na kliencie i serwerze, dlatego wymaga się centralnego katalogu LDAP albo synchronizacji identyfikatorów. W wersji czwartej przyczyną jest rozbieżność parametru Domain w pliku idmapd.conf, blokująca translację nazw użytkownikmałpadomena. Diagnostykę wspierają polecenia id, getent passwd, nfsidmap oraz podgląd dziennika demona idmapd.
ASK_prez09_s45
46 / 50
Rozwiązywanie problemów – firewall i blokada portów
Cel slajdu: Slajd porządkuje reguły zapory ogniowej dla usług SMB i NFS w środowisku Linux.

Reguły zapory sieciowej (UFW / nftables) dla usług SMB i NFS

  • Wymagane porty sieciowe dla serwera Samba (SMB):
    • TCP 445: Główny port Direct-Hosted SMB (bezwzględnie wymagany)
    • TCP 139: NetBIOS Session Service (opcjonalny, tylko dla starych klientów)
    • UDP 137 i 138: NetBIOS Name i Datagram Service (opcjonalne)
    • Reguła UFW: ufw allow from 192.168.56.0/24 to any port 445 proto tcp
  • Wymagane porty sieciowe dla serwera NFSv4:
    • TCP 2049: Jedyny wymagany port komunikacyjny protokołu bazowego
    • Reguła UFW: ufw allow from 192.168.56.0/24 to any port 2049 proto tcp
  • Złożoność reguł dla serwera NFSv3:
    • TCP/UDP 111 (rpcbind) oraz TCP/UDP 2049 (nfsd)
    • Statycznie wymuszone porty w konfiguracji: TCP/UDP 32767 dla mountd (RPCMOUNTDOPTS="-p 32767" w /etc/default/nfs-kernel-server lub port = 32767 w sekcji [mountd] pliku /etc/nfs.conf), TCP/UDP 32768 dla statd (STATDOPTS w /etc/default/nfs-common), porty lockd przez parametry jądra fs.nfs.nlm_tcpport / fs.nfs.nlm_udpport
  • Narzędzia diagnostyki sieciowej:
    • Weryfikacja nasłuchu na serwerze: ss -tulpn | grep -E '445|2049|111'
    • Skanowanie portów z klienta: nc -zvw3 192.168.56.100 445 2049
Zapora dla usług plików (ang. file services firewall): Reguły zapory dla usług plików dopuszczają wyłącznie wymagane porty z zaufanych podsieci i blokują ruch z Internetu. Dla SMB wystarcza port TCP 445 z zaufanej sieci lokalnej, natomiast historyczne porty NetBIOS podlegają blokadzie. Dla NFSv4 wystarcza port TCP 2049, natomiast dla NFSv3 potrzebne są dodatkowo port 111 oraz stabilizowane porty mountd, lockd i statd. W systemie Linux reguły wdraża się narzędziami ufw albo nftables z domyślną polityką odrzucania, a w RouterOS listami filtrowania w łańcuchu input i forward.
ASK_prez09_s46
47 / 50
Rozwiązywanie problemów – najczęstsze problemy SMB
Cel slajdu: Slajd zestawia najczęstsze awarie serwera Samba oraz kolejność ich eliminacji od usługi po uprawnienia.

Typowe awarie serwera Samba i metodyka ich eliminacji

  • 1. Awaria startu usługi smbd:
    • Objaw: Usługa przechodzi w stan failed po edycji pliku konfiguracyjnego
    • Diagnostyka: testparm -s natychmiast wskaże błąd składni, nieznany parametr lub brakujący nawias sekcji; weryfikacja logów: journalctl -u smbd -e
  • 2. Odmowa dostępu: NT_STATUS_LOGON_FAILURE:
    • Objaw: Klient nie może się uwierzytelnić pomimo podania poprawnego hasła linuksowego
    • Przyczyna: Brak użytkownika w bazie SMB (passdb.tdb) lub rozbieżność haseł
    • Rozwiązanie: Dodanie konta: smbpasswd -a uzytkownik; sprawdzenie stanu: pdbedit -L -v uzytkownik
  • 3. Odmowa zapisu: NT_STATUS_ACCESS_DENIED:
    • Objaw: Użytkownik widzi pliki, ale nie może nic zapisać w udziale z opcją read only = no
    • Przyczyna: Konflikt z uprawnieniami POSIX w systemie plików (brak prawa zapisu dla konta lub grupy)
    • Rozwiązanie: Sprawdzenie uprawnień lokalnych: ls -ld /ścieżka/katalogu; korekta chmod / chown
  • 4. Zablokowany plik współdzielony:
    • Diagnostyka: smbstatus -L identyfikuje PID procesu blokującego otwarty dokument
Diagnostyka problemów SMB (ang. SMB troubleshooting): Diagnostyka problemów SMB prowadzi od warstwy usługi przez sieć i uwierzytelnianie po system plików. Kolejność obejmuje status demona smbd, nasłuch na porcie 445, reguły zapory, walidację testparm oraz test smbclient z jawnym użytkownikiem. Błąd NT_STATUS_LOGON_FAILURE oznacza złe hasło albo brak konta w bazie passdb, błąd NT_STATUS_BAD_NETWORK_NAME oznacza złą nazwę udziału, a odmowa zapisu przy poprawnym logowaniu wskazuje na maski udziału albo bity POSIX. Każdorazowo rozstrzyga porównanie uprawnień usługi z uprawnieniami katalogu.
ASK_prez09_s47
48 / 50
Rozwiązywanie problemów – najczęstsze problemy NFS
Cel slajdu: Slajd zestawia najczęstsze awarie klienta i serwera NFS oraz metody ich rozróżniania po komunikatach.

Metodyka diagnozowania awarii i błędów w środowiskach NFS

  • 1. Odmowa montowania: Access denied by server while mounting:
    • Przyczyny: Adres IP klienta nie pasuje do reguły w /etc/exports; literówka w ścieżce eksportu; spacja przed nawiasem w pliku konfiguracyjnym
    • Diagnostyka: Sprawdzenie exportfs -v oraz weryfikacja logów serwera: journalctl -u nfs-kernel-server
  • 2. Błąd krytyczny: Stale file handle (ESTALE):
    • Przyczyna: Plik lub katalog otwarty przez klienta został usunięty, zastąpiony nowym lub przeformatowany na serwerze; wewnętrzny uchwyt plikowy utracił ważność
    • Rozwiązanie: Zamknięcie procesów korzystających z zasobu i ponowne zamontowanie udziału: umount -l /punkt oraz ponowny mount
  • 3. Zawieszenie operacji wejścia/wyjścia (I/O Hangs):
    • Przyczyna: Serwer NFS uległ awarii przy montowaniu z opcją hard; procesy przechodzą w stan D-state
    • Diagnostyka: Badanie stanu łączy i retransmisji za pomocą narzędzia nfsstat -c
  • 4. Brak rejestracji usług: Program not registered:
    • Przyczyna: Demon rpcbind został zrestartowany po starcie NFS lub uległ awarii; naprawa: restart rpcbind, a następnie nfs-kernel-server
Diagnostyka problemów NFS (ang. NFS troubleshooting): Diagnostyka problemów NFS rozróżnia błędy montowania, uprawnień i tożsamości na podstawie komunikatów jądra i narzędzi RPC. Komunikat Permission denied przy montowaniu wskazuje na brak wpisu w exports albo filtr zapory, komunikat Stale file handle wskazuje na usunięcie katalogu po stronie serwera albo restart bez wznowienia stanu, a własność nobody wskazuje na domenę idmapd. Weryfikację zapewniają exportfs z opcją verbose, rpcinfo z opcją dump, showmount z opcją exports oraz nfsstat z licznikami retransmisji. Dla wersji trzeciej krytyczna jest dostępność rpcbind na porcie 111.
ASK_prez09_s48
49 / 50
Ściągawka – najważniejsze polecenia SMB
Cel slajdu: Slajd podsumowuje najważniejsze polecenia serwera i klienta Samba w formie podręcznej ściągawki.

Podręczne kompendium poleceń administracyjnych serwera i klienta Samba

  • Zarządzanie konfiguracją i diagnostyka:
    • testparm -s: Walidacja składni i wyświetlenie aktywnej konfiguracji smb.conf
    • smbstatus: Pełny raport aktywnych sesji, udziałów i zablokowanych plików
    • smbstatus -b / smbstatus -L: Podgląd wyłącznie sesji (-b) lub blokad (-L)
  • Zarządzanie kontami użytkowników SMB:
    • smbpasswd -a uzytkownik: Dodanie użytkownika do bazy Samby i ustawienie hasła
    • smbpasswd -x uzytkownik: Usunięcie konta z bazy haseł SMB
    • pdbedit -L -v: Szczegółowy listing użytkowników bazy SAM z atrybutami
  • Operacje klienckie i inspekcja zasobów:
    • smbclient -L //serwer -U%: Listowanie udziałów na zdalnym serwerze (anonimowo)
    • smbclient //serwer/udzial -U uzytkownik: Interaktywny dostęp do udziału w trybie FTP
    • mount -t cifs //serwer/udzial /mnt -o username=jan: Montowanie udziału w Linuksie
  • Zarządzanie usługami w systemd:
    • systemctl reload smbd: Przeładowanie konfiguracji bez zrywania sesji
Ściągawka SMB (ang. SMB cheat sheet): Ściągawka porządkuje polecenia według cyklu obsługi: instalacja pakietów samba i smbclient, walidacja testparm, zarządzanie usługą systemctl oraz weryfikacja smbstatus i smbclient. Po stronie Windows uzupełnieniem są polecenia Get-SmbConnection, net use oraz mapowanie dysku adresem UNC. Stałe stosowanie walidacji przed przeładowaniem oraz testu z konta zwykłego użytkownika zapobiega najczęstszym przestojom. Zestaw stanowi minimum wymagane na stanowisku administratora sieci lokalnej.
ASK_prez09_s49
50 / 50
Ściągawka – najważniejsze polecenia NFS
Cel slajdu: Slajd podsumowuje najważniejsze polecenia serwera i klienta NFS w formie podręcznej ściągawki.

Podręczne kompendium poleceń administracyjnych serwera i klienta NFS

  • Zarządzanie eksportami serwera:
    • exportfs -arv: Przeładowanie konfiguracji z /etc/exports bez restartu demonów
    • exportfs -v: Wyświetlenie aktualnie aktywnych eksportów jądra ze wszystkimi opcjami
    • exportfs -u host:/ścieżka: Usunięcie wybranego eksportu w czasie rzeczywistym
    • cat /var/lib/nfs/etab: Podgląd niskopoziomowej tabeli eksportów jądra
  • Diagnostyka usług RPC i zasobów zdalnych:
    • rpcinfo -p host: Raport zarejestrowanych usług RPC, wersji i portów nasłuchiwania
    • showmount -e host: Listowanie dostępnych eksportów zdalnego serwera (NFSv3/mountd)
    • nfsstat -s / nfsstat -c: Statystyki wywołań RPC serwera (-s) lub klienta (-c)
  • Montowanie i czyszczenie pamięci podręcznej:
    • mount -t nfs -o vers=4.2,hard serwer:/ /mnt: Bezpieczne montowanie NFSv4.2
    • umount -l /punkt_montowania: Leniwe odmontowanie (Lazy Umount) wiszącego zasobu
    • nfsidmap -c: Wyczyszczenie pamięci podręcznej translacji tożsamości idmap jądra
Ściągawka NFS (ang. NFS cheat sheet): Ściągawka porządkuje polecenia według cyklu obsługi: instalacja nfs-kernel-server i nfs-common, edycja exports, synchronizacja exportfs oraz weryfikacja showmount i rpcinfo. Po stronie klienta obejmuje montowanie mount z wersją protokołu, wpisy fstab z flagami zależności od sieci oraz diagnostykę nfsstat i dzienników jądra. Rozróżnienie plików etab i rmtab ułatwia ocenę, czy problem leży w konfiguracji zamierzonej, czy w stanie faktycznym montowań. Zestaw zamyka umiejętności wymagane do samodzielnego utrzymania usługi plików Unix.
ASK_prez09_s50