File Server Hardening – Deo 3: Linux File Server – Samba hardening
Prva dva dela serije pokrila su Windows fajl server. Treći deo prelazi na Linux stranu — konkretno na Samba, softver koji Linux serveru omogućava da servira fajlove preko istog SMB protokola opisanog u prvom delu serije, čineći Linux share vidljivim Windows klijentima potpuno isto kao i nativni Windows fajl server. Ovo je čest izbor u mešovitim okruženjima — Linux infrastruktura ispod, Windows radne stanice iznad — i dobra vest je da veći deo principa iz prva dva dela serije direktno prenosi ovde, samo kroz drugačiju sintaksu konfiguracije.
Zašto Samba nasleđuje istu istoriju rizika kao i sam SMB
Samba implementira isti SMB protokol koji smo detaljno obradili u prvom delu serije, što znači da nasleđuje i istu istoriju rizika — uključujući EternalBlue ranjivost iskorišćenu u WannaCry i NotPetya napadima 2017. godine, koja je pogodila SMBv1 implementacije bez obzira na to da li su radile na Windows ili Linux sistemu. Podrazumevana Samba konfiguracija na svežoj instalaciji, slično kao i kod Windows-a, nije podešena za produkcionu bezbednost bez dodatnog rada.
Konfiguracioni fajl kao centralna tačka kontrole
Sva Samba podešavanja idu kroz jedan centralni konfiguracioni fajl, /etc/samba/smb.conf, podeljen na globalnu sekciju (podešavanja koja važe za ceo server) i pojedinačne sekcije za svaki share. Ova centralizacija je praktična prednost u odnosu na Windows pristup (gde se podešavanja često rasprostiru kroz GUI, Group Policy i registry) — jedan fajl, čitljiv u tekstualnom obliku, koji se lako verzioniše i pregleda.
Šta treba uraditi
- Postaviti minimalnu dozvoljenu verziju protokola na SMB2 ili noviju (server min protocol = SMB2), čime se SMBv1 potpuno isključuje na nivou protokola, bez obzira na to šta klijent pokuša da pregovori — isti princip isključivanja SMBv1 opisan u prvom delu serije, ovde primenjen kroz Samba sintaksu
- Zahtevati SMB signing eksplicitno na obe strane (server signing = mandatory, client signing = mandatory), ne ostavljati na "auto" ili "if_required" vrednosti koje dozvoljavaju da signing bude izostavljen ako druga strana ne insistira na njemu
- Zahtevati SMB enkripciju (smb encrypt = mandatory ili required, u zavisnosti od verzije Samba-e) za sve konekcije, posebno ako share ikad prolazi kroz mrežni segment van striktno kontrolisane, poverljive interne mreže
- Nakon svake izmene konfiguracije, proveriti ispravnost sintakse pomoću `testparm` pre restarta Samba servisa — ovaj alat detektuje greške u sintaksi ili logičke sukobe u konfiguraciji pre nego što izazovu problem u produkciji
Napomena o riziku: zahtevanje obavezne enkripcije i SMB2+ minimuma protokola može odseći starije klijente ili treće-strane SMB implementacije koje ne podržavaju te zahteve, isti rizik opisan za Windows u prvom delu serije. Proveriti unapred koji klijenti (uključujući stariju mrežnu opremu, NAS uređaje ili specijalizovane aplikacije) se povezuju na share, i sprovesti period auditinga (Samba loguje odbijene konekcije kad se podigne nivo logovanja) pre stroge primene ovih zahteva.
Kontrola pristupa na nivou mreže — dodatan sloj, ne zamena za firewall
Samba nudi sopstveni, dodatan mehanizam za ograničavanje sa kojih izvornih adresa se sme povezati na server, nezavisno od pravila samog firewall-a opisanih u ranijoj seriji o hardeningu Linux servera. Ovo nije zamena za firewall, već dopunski, aplikativni sloj koji vredi koristiti uporedo.
Šta treba uraditi
- Koristiti hosts allow i hosts deny direktive u globalnoj sekciji smb.conf da se eksplicitno ograniči koji mrežni opsezi smeju uopšte da se povežu na Samba servis, po istom principu segmentacije koji se provlači kroz svaku seriju na ovom blogu
- Kombinovati ovo sa firewall pravilima na nivou samog hosta (ograničiti portove 139 i 445 na poznate, očekivane mrežne segmente), ne osloniti se isključivo na Samba-inu internu kontrolu pristupa kao jedinu odbranu
- Za share-ove koji ne treba da budu vidljivi u mrežnom pregledu (network browsing), postaviti browseable = no na nivou tog konkretnog share-a — ovo ne sprečava direktan pristup ako neko zna tačan naziv share-a, ali smanjuje slučajno otkrivanje osetljivih share-ova kroz rutinsko pregledanje mreže
Dozvole na nivou share-a i fajl sistema
Isti princip dva sloja dozvola opisan za Windows u prvom delu serije postoji i ovde, samo pod drugačijim imenima: Samba share definicija (valid users, write list, read only) kontroliše ko sme da se poveže na share preko mreže i sa kojim nivoom pristupa, dok standardne Linux dozvole fajl sistema (opisane u seriji o hardeningu Linux servera) kontrolišu šta se stvarno sme uraditi na nivou samih fajlova, bilo preko mreže ili lokalno na serveru.
Šta treba uraditi
- Ograničiti pristup share-u kroz valid users ili valid users = @grupa direktivu, koristeći Linux grupe (idealno sinhronizovane sa AD grupama ako je Samba integrisana u domen) umesto pojedinačnih korisnika, po istom principu opisanom kroz AD i Windows fajl server delove serije
- Postaviti dozvole na nivou fajl sistema (chmod/chown) tako da odražavaju stvarnu poslovnu potrebu, ne 777 "da bi radilo" — isti anti-obrazac kritikovan kroz svaku prethodnu seriju kad se pojavi u drugom kontekstu
- Koristiti force group direktivu na nivou share-a gde je potrebno da svi fajlovi kreirani kroz taj share automatski dobiju konzistentno grupno vlasništvo, izbegavajući situaciju gde različiti korisnici kreiraju fajlove sa međusobno nekompatibilnim dozvolama u istom deljenom folderu
- Redovno proveravati stvarne, efektivne dozvole (kombinaciju Samba share podešavanja i Linux dozvola fajl sistema) po istom principu periodične revizije koji se provlači kroz celu ovu seriju blogova
Logovanje i integracija sa fail2ban
Podrazumevani nivo Samba logovanja je često nedovoljan za bezbednosnu svrhu — dovoljan za osnovno rešavanje problema, ali ne i za praćenje pokušaja neovlašćenog pristupa ili obrazaca koji ukazuju na napad. Podizanje nivoa logovanja, uz integraciju sa fail2ban (alatom detaljno opisanim u prvom delu serije o hardeningu Linux servera), zatvara isti bezbednosni prostor koji smo pokrili za SSH, sada primenjen na SMB autentifikaciju.
Šta treba uraditi
- Podići nivo Samba logovanja (log level) na vrednost dovoljnu za bezbednosno relevantne događaje (autentifikacija, pristup fajlovima) bez preplavljivanja loga potpuno rutinskim detaljima — testirati konkretnu vrednost u praksi, jer previsok nivo generiše sličan problem prevelikog obima logova opisan za Windows Event ID 4663 u drugom delu serije
- Konfigurisati fail2ban jail specifično za Samba autentifikacione neuspehe, po istom principu (maxretry, bantime, findtime) opisanom za SSH u ranijoj seriji — Samba je jednako izložena brute-force pokušajima pogađanja lozinke kao i SSH
- Razmotriti VFS (Virtual File System) audit modul, ugrađenu Samba funkcionalnost koja beleži operacije nad fajlovima (kreiranje, brisanje, preimenovanje) na nivou samog share-a, analogno Windows file access auditingu opisanom u drugom delu serije — ovo daje isti nivo vidljivosti "ko je i kada nešto uradio" na Linux strani
- Prosleđivati Samba logove na centralnu lokaciju kroz isti mehanizam (rsyslog ili sličan) opisan u Linux Server hardening seriji za auditd zapise — konzistentnost pristupa logovanju kroz celu infrastrukturu olakšava i izgradnju i održavanje centralnog sistema za praćenje
Napomena o riziku: fail2ban konfiguracija bez pažljivo podešene liste izuzetaka (poznata upravljačka mreža, adrese aplikacija koje legitimno prave veći broj konekcija) nosi isti rizik samozaključavanja opisan u ranijoj seriji — testirati podešavanje pre primene u produkciji, i uvrstiti poznate, poverljive izvore na listu izuzetaka unapred.
Redovno ažuriranje — isti princip, ista disciplina
Samba prima redovne bezbednosne ispravke kroz standardni paket menadžer distribucije, i isti princip discipline ažuriranja opisan u trećem delu serije o hardeningu Linux servera važi ovde bez izuzetka — Samba, kao softver koji direktno izlaže mrežnu uslugu, zaslužuje isti prioritet u ciklusu zakrpa kao i SSH ili bilo koji drugi mrežno izložen servis.
Sledeći deo serije bavi se NFS-om — drugim, starijim protokolom za mrežno deljenje fajlova na Linux sistemima, sa svojim sopstvenim, drugačijim modelom autentifikacije i pristupnim rizicima koji zaslužuju odvojenu pažnju od onoga što je pokriveno za SMB/Samba u ovom delu.
Коментари
Постави коментар