Prečo Samba odmieta VPN klientov, ktorí sa dostanú na server
VPN klient sa môže dostať na server Samba a aj tak byť odmietnutý nastavením hosts allow. Pred úpravou skontrolujte zdroj, ktorý smbd vidí, a politiku na úrovni zdieľania.
VPN klient pinguje súborový server, preloží jeho názov a aj tak nedokáže otvoriť zdieľanie. Hostiteľská politika Samby je jedna zo štyroch vrstiev, ktoré môžu toto spojenie odmietnuť, a ľudia ju upravujú ako poslednú. Zoznam povolených sa vyhodnocuje voči adrese zdroja, ktorú smbd skutočne dostane, a tá nemusí byť adresou, o ktorej si klient myslí, že ju má. Správne určenie tohto zdroja premení nejasný problém s právami na zmenu konfigurácie na jeden riadok.
Štyri vrstvy, ktoré zlyhávajú s rovnakou správou
Odmietnutie môže prísť z trasy, z hostiteľského firewallu, z hostiteľskej politiky Samby alebo z identity SMB. Každá vrstva vytvorí klientovi správu, ktorá hovorí približne to isté, preto hádanie stojí jedno popoludnie. Keď sa kontroly zoradia od siete dovnútra, väčšina hádania zmizne.
Začnite prenosom. Ak port 445 nikdy nedorazí na server, nezáleží na žiadnom nastavení Samby a odchyt na rozhraní servera to vyrieši za sekundy. Ďalej prichádza hostiteľský firewall priamo na serveri, ktorý môže zahodiť povolený zdroj skôr, než ho smbd vôbec uvidí. Až po prejdení týchto dvoch sa zoznam povolených stane kandidátom. Autentifikácia je posledná, pretože neúspešné prihlásenie a odmietnutie hostiteľa vyzerajú v logu servera inak, aj keď klient obe hlási ako odopretý prístup. Poradie je dôležitejšie než nástroje, pretože každá vrstva má príkaz, ktorý na ňu odpovedá.
Nájdite adresu zdroja, ktorú smbd skutočne vidí
Pri smerovanom prístupe server zvyčajne vidí adresu klienta z fondu VPN. Pri preklade zdroja na bráne vidí namiesto toho LAN adresu brány a každý klient za touto bránou sa stane nerozoznateľným.
Tento rozdiel rozhoduje, či je položka v zozname povolených politikou alebo dierou. Povolenie preloženej adresy brány pustí dnu všetkých za ňou, čo pravidlo pre jednotlivého klienta málokedy chcelo vyjadriť. Čítajte zdroj na serveri, nie z predstavy klienta o vlastnej adrese. Odchyt na rozhraní servera je najlacnejší spôsob, ako ho vidieť, a ten istý odchyt dokazuje, či paket vôbec dorazil. Obmedzte odchyt počtom paketov a pridajte filter hostiteľa, keď budete vedieť, ktorého klienta sledujete. Tabuľka relácií Samby je druhá polovica odpovede: v smbstatus -b je stĺpec klienta v každom riadku relácie protistrana, ktorú smbd zaznamenal, a to je najrýchlejšie potvrdenie adresy, ktorá sa skutočne dostala k službe.
sudo tcpdump -ni any -c 20 'tcp port 445'
sudo smbstatus -b
ss -tnp | grep ':445'
Čítajte zoznam povolených tak, ako ho číta Samba
Nastavenie hosts allow prijíma zoznam adries, sietí alebo názvov a môže stáť globálne alebo vnútri zdieľania. Dve položky, ktoré vám pripadajú rovnocenné, nemusia byť rovnocenné pre parser, preto treba skontrolovať práve efektívnu konfiguráciu. To znamená zlúčený pohľad a nie súbor, ktorý ste náhodou upravili.
Ilustratívna dvojica prefixov vyzerá ako riadok nižšie, a je to príklad, nie náhrada už existujúcich položiek. Ponechajte administratívnych a aplikačných klientov, ktorí sa dnes pripájajú legitímne, a prečítajte akýkoľvek zoznam zákazov v tom istom kroku. Či bude hostiteľ prijatý, závisí od politiky ako celku, preto testujte presného klienta, namiesto uvažovania o priorite. Povolenie hostiteľa tiež nič nehovorí o právach na zdieľanie ani o režimoch súborového systému, ktoré sú samostatné brány. Úspech testovacích nástrojov znamená, že hostiteľská politika tento zdroj prijíma, a nič viac.
hosts allow = 192.168.50.0/24 10.90.0.0/24
testparm -s
testparm -s /etc/samba/smb.conf client.example 10.90.0.14
Upravte súbor, ktorý prežije reštart
Na bežnom hostiteľovi Linux je cesta konfigurácie pevná a služba ju pri reštarte znovu načíta. Na smerovači alebo zariadení sa bežiaci smb.conf často generuje pri štarte a ručná úprava pri ďalšom reštarte zmizne. Použite podporovaný mechanizmus prispôsobenia zariadenia, ktorým býva vlastný konfiguračný súbor.
Pokušenie je v tomto bode prehrať alternatívny firmvér, pretože jedno vlákno hlásilo, že to funguje. Je to veľká zmena na malý problém s politikou a vyvádza zariadenie z podporovaného stavu. Najprv určite podporovanú kontrolu, keďže väčšina zariadení zobrazuje zoznam povolených cez vlastné rozhranie. Ak to naozaj nerobia, toto obmedzenie je argumentom pre iný hardvér a nie pre nepodporovaný build.
Zapíšte, ktorý súbor ste zmenili a čo ho znovu vytvára, aby ďalší človek neopakoval diagnostiku.
Otestujte jedného povoleného a jedného vylúčeného klienta
Otestujte oba výsledky, nielen ten, ktorý ste chceli. Povolený klient, ktorý sa pripojí, dokazuje, že zmena funguje; vylúčený klient, ktorý je stále odmietaný, dokazuje, že pravidlo jednoducho neotvorilo všetko.
smbclient -L //fileserver -U alice
sudo testparm -s /etc/samba/smb.conf alice-laptop 10.90.0.14
sudo tail -n 40 /var/log/samba/log.smbd
Keď sa spojenie nikdy nedostane k smbd, odpoveď je v smerovaní alebo vo firewalle servera. Ak je hostiteľ povolený a prihlásenie zlyhá, problémom je identita a ďalšie rozširovanie zoznamu povolených nepomôže. Diagnostický výstup udržujte v súkromí, pretože podrobný log Samby môže odhaliť cesty zdieľaní a názvy účtov. Meňte jednu vrstvu na pokus, inak vám ďalší výsledok nič nepovie.