Obmedzte zdieľanie Samby na jedného používateľa a jednu adresu VPN
Parametre valid users a hosts allow v Sambe nespájajú osobu s adresou: dve názvy zdieľania môžu ten pár vyjadriť a testy krížených párov to dokazujú.
V tomto návrhu sa zamieňajú dve rôzne oprávnenia: kto smie používať adresár a ktoré adresy sa vôbec smú pripojiť. Zapísať zoznam účtov vedľa zoznamu zdrojov vyzerá ako párovanie, ale Samba hodnotí oba zoznamy ako nezávislé predikáty. Prijatý je každý, kto splní oboje, a to je širšie pravidlo, než zamýšľa väčšina správcov. Riešením je iné usporiadanie zdieľania alebo vrstva politiky, ktorá pár dokáže vyjadriť.
Mýtus: dva zoznamy tvoria jedno pravidlo
Referenčná príručka smb.conf definuje valid users a hosts allow ako dva nesúvisiace parametre a práve nastavenie oboch na jednom zdieľaní je miesto, kde sa začína zmätok. Nastavte valid users = mira, tomas a hosts allow = 10.77.0.21, 10.77.0.22 a prijmú sa štyri kombinácie: Mira z ktorejkoľvek adresy, Tomas z ktorejkoľvek adresy. Nič v konfigurácii nespája prvé meno s prvou adresou a poradie, v ktorom sa mená objavujú, nemá význam. Ich preusporiadanie, pridanie druhého riadku hosts allow alebo jedno meno na riadok nič nemení. Výsledkom je súčin dvoch zoznamov, nie mapovanie medzi nimi.
To, čo väčšina ľudí naozaj chce, je užšie: Mira len z jednej adresy, Tomas len z inej. Jediná definícia zdieľania nemá syntax na také previazanie a žiadne chytré usporiadanie ho nevytvorí. To je tvar politiky, ktorý Samba v rámci jedného zdieľania nevyjadruje, a práve tam mýtus prežíva.
Čo Samba hodnotí a v akom poradí
Fázy bežia v pevnom poradí a nesprávne poradie dáva nesprávnu diagnózu. Klient otvorí spojenie; globálna kontrola hostiteľa prebehne, ak je nastavená; nastavenie relácie overí účet; potom sa klient pripojí k zdieľaniu, kde sa uplatnia jeho vlastný zoznam hostiteľov, valid users a režim iba na čítanie; a až keď sa otvorí súbor, rozhodnú oprávnenia súborového systému overenej identity. Každá fáza môže požiadavku sama odmietnuť a prejdenie jednej nič nehovorí o ďalšej. Dôsledok je, že účet je známy už v čase, keď sa hodnotí zoznam hostiteľov zdieľania, a zoznam hostiteľov stále nemá spôsob, ako ten účet pomenovať.
Preto zdieľanie nemôže previazať jedného používateľa na jednu adresu: hosts allow a valid users sú oddelené predikáty uplatňované v tej istej fáze pripojenia stromu a každý odpovedá na svoju otázku. Predikát hostiteľa nikdy neberie meno účtu ako vstup, takže ho nemožno napísať pre jednotlivého používateľa. Pár môže vyjadriť iba druhé zdieľanie alebo vrstva politiky mimo Samby.
Globálne hodnoty sú dôležité kvôli spôsobu dedenia. Zdieľanie, ktoré vynechá hosts allow, zdedí globálnu hodnotu, a zdieľanie, ktoré nastaví svoju, použije túto hodnotu namiesto globálnej, nie navyše. Preto široký globálny zoznam rozširuje zdieľania, ktoré parameter nikdy nenastavia, a nič nerobí so zdieľaním, ktoré si určuje vlastné. Spustite testparm -s a prečítajte si hodnoty pre jednotlivé zdieľania, ktoré vypíše, pretože tento výstup je účinná politika a súbor na disku nie.
Zúženie jedného zdieľania tiež nič nerobí pre zvyšok servera. Ostatné zdieľania, tlačové fronty a spojenie IPC si zachovávajú vlastné pravidlá, takže návrh, ktorý sa opiera o zoznam adries jedného zdieľania, chráni jednu cestu, nie hostiteľa.
Dve názvy zdieľania nad jedným adresárom
Keď musí byť ten istý adresár dostupný dvom ľuďom z dvoch adries, vystavte ho dvakrát pod rôznymi názvami. Každý blok nesie jeden účet a jeden zdroj, čo robí z páru niečo, čo konfigurácia dokáže vynútiť. Cenou je, že každý človek používa iný názov zdieľania na dosiahnutie tých istých súborov, a to musí byť zámerná zmena na strane klienta.
[shared-mira]
path = /srv/shared
guest ok = no
read only = yes
valid users = mira
hosts allow = 10.77.0.21
hosts deny = ALL
[shared-tomas]
path = /srv/shared
guest ok = no
read only = yes
valid users = tomas
hosts allow = 10.77.0.22
hosts deny = ALL
Brána zdieľania nie je oprávnenie súborového systému. Obe identity stále potrebujú prístup k adresáru cez základný ACL a režim iba na čítanie je druhá vrstva, nie jediná. Povoľte zápis len vtedy, ak to pracovný postup vyžaduje, a potom overte, že súbory vytvorené jednou identitou zostávajú použiteľné pre druhú.
Oba bloky ukazujú na jednu cestu, takže zmena v adresári ovplyvní obe zdieľania. Zvyčajne je to cieľ, ale znamená to aj to, že chyba oprávnení je viditeľná pre oboch používateľov naraz.
Čo môže preukázať zdrojová adresa
Adresa, ktorú Samba vidí, je adresa, ktorá dorazila na server, nie adresa, o ktorej sa klient domnieva, že ju má. VPN brána, ktorá prekladá každého klienta na jednu zdrojovú adresu, tento rozdiel zotiera: všetci klienti prichádzajú ako ten istý hostiteľ a zoznam zdrojov ich už nedokáže rozlíšiť. Stabilné priradenie pre každého klienta a brána, ktorá zachováva zdroj, sú predpoklady používania adries ako politiky vôbec. Bez oboch obmedzenie meria bránu, nie používateľa.
Aj tak však adresa nie je zariadenie. Dva notebooky za jednou adresou tunela, prepridelený leasing a zdieľaná pracovná stanica spoločne vyvracajú predpoklad, že zdroj identifikuje osobu. Berte obmedzenie ako sieťový rozsah a držte overené účty SMB ako vrstvu identity, s poverením zariadenia, napríklad certifikátom, ak potrebujete autorizáciu zariadenia.
Preto návrh ohraničuje zdieľania a nie server. Odmietnutý pár napriek tomu môže otvoriť reláciu, dosiahnuť iné zdieľanie alebo vypísať server, čo je iný výsledok ako zlyhanie overenia pri pripojení. Ak je požiadavkou odmietnutie pred overením, parametre zdieľania Samby sú nesprávny nástroj.
Dokážte to kríženými pármi
Overte konfiguráciu a potom otestujte štyri kombinácie novými spojeniami, nie znovu použitou reláciou. Zamýšľaný pár má dosiahnuť adresár a oba krížené páry majú zlyhať. Uložená relácia z predchádzajúceho testu ochotne odpovie za nesprávnu kombináciu a pokazené pravidlo bude vyzerať správne.
testparm -s
smbclient //fileserver/shared-mira -U mira -c 'ls'
smbclient //fileserver/shared-tomas -U tomas -c 'ls'
smbstatus --shares
Kontrola syntaxe dokazuje len to, že sa súbor parsuje. Prihlasovacie údaje, ACL a rozhodnutie o hostiteľovi sa uplatňujú skutočným spojením, preto spustite klientsky príkaz z adresy, ktorú chcete otestovať, a sledujte, ktorá fáza ho odmietne. Ak krížený pár uspeje, účinný zoznam hostiteľov je širší, než naznačuje blok, a testparm -s je prvá vec, ktorú treba prečítať. Ak krížený pár zlyhá z nesprávneho dôvodu, podozrivý je účet alebo ACL.
Sledovanie relácií pomocou smbstatus a ich ukončovanie je reakcia po začatí prístupu, nie riadenie prístupu. Zablokovanie celej pozorovanej adresy môže tiež odpojiť nesúvisiacich používateľov za tým istým NAT, a preto rozhodnutie patrí do definície zdieľania a monitorovanie do procesu reakcie. Držte tieto dve veci oddelene a návrh zostane čestný v tom, čo vynucuje.