Piirake Samba jagamine ühe kasutaja ja ühe VPN-aadressiga
Samba valid users ja hosts allow ei seo inimest aadressiga: kaks jagamise nime saavad selle paari väljendada ja ristpaaride testid tõestavad seda.
Selles disainis aetakse segi kaks erinevat luba: kes tohib kataloogi kasutada ja millised aadressid tohivad üldse ühenduda. Kontode nimekirja kirjutamine allikate nimekirja kõrvale tundub sidumisena, kuid Samba hindab mõlemat nimekirja sõltumatute predikaatidena. Vastu võetakse igaüks, kes rahuldab mõlemat, mis on laiem reegel, kui enamik administraatoreid kavatseb. Parandus on kas teistsugune jagamise paigutus või poliitikakiht, mis suudab paari väljendada.
Müüt: kaks nimekirja teevad ühe reegli
smb.conf viide määratleb valid users ja hosts allow kahe sõltumatu parameetrina ning just mõlema seadistamine ühes jagamises on koht, kus segadus algab. Määrake valid users = mira, tomas ja hosts allow = 10.77.0.21, 10.77.0.22 ning vastu võetakse neli kombinatsiooni: Mira kummaltki aadressilt, Tomas kummaltki aadressilt. Miski konfiguratsioonis ei seo esimest nime esimese aadressiga ja nimede ilmumise järjekord ei oma tähendust. Nende ümberjärjestamine, teise hosts allow rea lisamine või ühe nime rea kohta panemine ei muuda midagi. Tulemus on kahe nimekirja korrutis, mitte vastavus nende vahel.
Mida enamik inimesi tegelikult tahab, on kitsam: Mira ainult ühelt aadressilt, Tomas ainult teiselt. Ühel jagamise definitsioonil pole selle sidumise jaoks süntaksit ja ükski kaval järjestus ei loo seda. See on poliitika kuju, mida Samba ühe jagamise sees ei väljenda, ja seal müüt püsibki.
Mida Samba hindab ja mis järjekorras
Etapid kulgevad kindlas järjekorras ja vale järjekord annab vale diagnoosi. Klient avab ühenduse; globaalne hostikontroll jookseb, kui see on seadistatud; sessiooni loomine autendib konto; seejärel ühendub klient jagamisega, kus rakenduvad selle jagamise oma hostinimekiri, valid users ja ainult lugemise seade; ja alles faili avamisel otsustavad autenditud identiteedi failisüsteemi õigused. Iga etapp võib päringu ise tagasi lükata ja ühest läbimine ei ütle järgmise kohta midagi. Oluline tagajärg on see, et konto on teada juba jagamise hostinimekirja hindamise ajaks ning hostinimekirjal pole ikka veel viisi seda kontot nimetada.
Seetõttu ei saa jagamine siduda ühte kasutajat ühe aadressiga: hosts allow ja valid users on eraldi predikaadid, mida rakendatakse samas puu ühendamise etapis, ja kumbki vastab oma küsimusele. Hostipredikaat ei võta kunagi konto nime sisendiks, seega ei saa seda kasutajapõhiselt kirjutada. Paari saab väljendada ainult teine jagamine või poliitikakiht väljaspool Sambat.
Globaalsed väärtused on olulised selle pärast, kuidas neid päritakse. Jagamine, mis jätab hosts allow välja, pärib globaalse väärtuse, ja jagamine, mis seab oma, kasutab seda väärtust globaalse asemel, mitte sellele lisaks. Nii laiendab lai globaalne nimekiri jagamisi, mis parameetrit kunagi ei sea, ega tee midagi jagamisele, mis määrab oma. Käivitage testparm -s ja lugege selle prinditud väärtusi jagamise kohta, sest see väljund on tegelik poliitika, mitte kettal olev fail.
Ühe jagamise kitsendamine ei tee midagi ka ülejäänud serveri jaoks. Teised jagamised, printerijärjekordad ja IPC-ühendus hoiavad oma reegleid, nii et disain, mis toetub ühe jagamise aadressinimekirjale, kaitseb ühte teed, mitte hosti.
Kaks jagamise nime ühe kataloogi kohal
Kui sama kataloog peab olema kättesaadav kahele inimesele kahelt aadressilt, avalda see kaks korda erinevate nimede all. Iga plokk kannab ühte kontot ja ühte allikat, mis muudab paari millekski, mida konfiguratsioon saab jõustada. Hind on see, et iga inimene kasutab samade failideni jõudmiseks erinevat jagamise nime, ja see peab olema teadlik muudatus kliendi poolel.
[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
Jagamise värav ei ole failisüsteemi õigus. Mõlemad identiteedid vajavad endiselt kataloogile juurdepääsu aluseks oleva ACL-i kaudu ja ainult lugemise seade on teine kiht, mitte ainus. Andke kirjutamisõigus ainult siis, kui töövoog seda nõuab, ja kontrollige seejärel, et ühe identiteedi loodud failid jäävad teisele kasutatavaks.
Mõlemad plokid osutavad ühele teele, seega mõjutab kataloogi muudatus mõlemat jagamist. Tavaliselt on see mõte, aga see tähendab ka seda, et õiguste viga on mõlemale kasutajale korraga nähtav.
Mida allikaaadress tõestada suudab
Aadress, mida Samba näeb, on aadress, mis jõudis serverini, mitte see, mille klient arvab endal olevat. VPN-lüüs, mis teisendab iga kliendi üheks allikaaadressiks, kaotab erinevuse: kõik kliendid saabuvad sama hostina ja allikate nimekiri ei suuda neid enam eristada. Püsiv jaotus kliendi kohta ja allikat säilitav lüüs on eeldused aadresside kasutamiseks poliitikana üldse. Ilma mõlemata mõõdab piirang lüüsi, mitte kasutajat.
Isegi siis ei ole aadress seade. Kaks sülearvutit ühe tunneliaadressi taga, ümber jagatud liising ja jagatud tööjaam kõik koos kummutavad eelduse, et allikas identifitseerib inimese. Käsitlege piirangut võrgu ulatusena ja hoidke autenditud SMB kontosid identiteedikihina, seadme mandaadiga nagu sertifikaat, kui vajate seadme volitamist.
Seetõttu piirab disain jagamisi, mitte serverit. Tagasi lükatud paar saab siiski avada sessiooni, jõuda teise jagamiseni või serveri loetleda, mis on teistsugune tulemus kui autentimise ebaõnnestumine ühendamisel. Kui nõue on tagasilükkamine enne autentimist, on Samba jagamise parameetrid vale tööriist.
Tõestage seda ristpaaridega
Valideerige konfiguratsioon ja seejärel testige nelja kombinatsiooni värskete ühendustega, mitte uuesti kasutatud sessiooniga. Kavatsetud paar peaks kataloogini jõudma ja mõlemad ristpaarid peaksid ebaõnnestuma. Varajasema testi vahemällu salvestatud sessioon vastab hea meelega vale kombinatsiooni eest ja paneb katkise reegli õigena näima.
testparm -s
smbclient //fileserver/shared-mira -U mira -c 'ls'
smbclient //fileserver/shared-tomas -U tomas -c 'ls'
smbstatus --shares
Süntaksi kontroll tõestab ainult seda, et fail parsitakse. Mandaadid, ACL-id ja hostiotsus pannakse proovile tegeliku ühendusega, seega käivitage kliendikäsk aadressilt, mida soovite testida, ja jälgige, milline etapp selle tagasi lükkab. Kui ristpaar õnnestub, on tegelik hostinimekiri laiem, kui plokk vihjab, ja testparm -s on esimene, mida lugeda. Kui ristpaar ebaõnnestub vale põhjuse tõttu, on kahtlusalune konto või ACL.
Sessioonide jälgimine smbstatus abil ja nende tapmine on vastutegevus pärast juurdepääsu algust, mitte vastuvõtukontroll. Kogu jälgitud aadressi blokeerimine võib ka sama NAT-i taga olevaid seostamata kasutajaid katkestada, mistõttu kuulub otsus jagamise definitsiooni ja jälgimine vastusprotsessi. Hoidke need kaks lahus ja disain jääb ausaks selle suhtes, mida ta jõustab.