VPN klient pingne souborový server, přeloží jeho název a přesto nemůže otevřít sdílení. Hostitelská politika Samby je jedna ze čtyř vrstev, které mohou takové připojení odmítnout, a lidé ji upravují jako poslední. Seznam povolených se vyhodnocuje proti adrese zdroje, kterou smbd skutečně obdrží, a ta nemusí být adresou, o níž si klient myslí, že ji má. Když se tento zdroj určí správně, z mlhavého problému s oprávněním se stane změna konfigurace na jeden řádek.

Čtyři vrstvy, které selhávají se stejnou zprávou

Odmítnutí může přijít z trasy, z hostitelského firewallu, z hostitelské politiky Samby nebo z identity SMB. Každá vrstva vytvoří u klienta zprávu, která říká přibližně totéž, proto hádání spotřebuje odpoledne. Když se kontroly seřadí od sítě dovnitř, většina hádání zmizí.

Začněte přenosem. Pokud port 445 nikdy nedorazí na server, nezáleží na žádném nastavení Samby a odchyt na rozhraní serveru to vyřeší během sekund. Dále přichází hostitelský firewall přímo na serveru, který může zahodit povolený zdroj dřív, než ho smbd vůbec uvidí. Teprve když tyto dvě vrstvy projdou, stává se seznam povolených kandidátem. Autentizace je poslední, protože neúspěšné přihlášení a odmítnutí hostitele vypadají v logu serveru různě, i když klient oboje hlásí jako odepřený přístup. Pořadí je důležitější než nástroje, protože každá vrstva má příkaz, který ji zodpoví.

Najděte adresu zdroje, kterou smbd skutečně vidí

Při směrovaném přístupu server obvykle vidí adresu klienta z VPN poolu. Při překladu zdroje na bráně místo toho vidí LAN adresu brány a každý klient za touto bránou se stane nerozlišitelným.

Tento rozdíl rozhoduje, zda je položka v seznamu povolených politikou, nebo dírou. Povolení přeložené adresy brány pustí dovnitř všechny za ní, což pravidlo pro jednotlivého klienta málokdy chtělo vyjádřit. Čtěte zdroj ze serveru, ne z představy klienta o jeho vlastní adrese. Odchyt na rozhraní serveru je nejlevnější způsob, jak ho vidět, a tentýž odchyt dokazuje, zda paket vůbec dorazil. Omezte odchyt počtem paketů a přidejte filtr hostitele, jakmile víte, kterého klienta sledujete. Tabulka relací Samby je druhá polovina odpovědi: v smbstatus -b je sloupec klienta v každém řádku relace protějšek, který smbd zaznamenal, a to je nejrychlejší potvrzení adresy, která službu skutečně dosáhla.

sudo tcpdump -ni any -c 20 'tcp port 445'
sudo smbstatus -b
ss -tnp | grep ':445'

Čtěte seznam povolených tak, jak ho čte Samba

Nastavení hosts allow bere seznam adres, sítí nebo jmen a může stát globálně nebo uvnitř sdílení. Dvě položky, které vám připadají rovnocenné, nemusejí být rovnocenné pro parser, proto je třeba zkontrolovat právě efektivní konfiguraci. To znamená sloučený pohled, a ne soubor, který jste náhodou upravili.

Ilustrativní dvojice prefixů vypadá jako řádek níže a je příkladem, nikoli náhradou již existujících položek. Ponechte administrativní a aplikační klienty, kteří se dnes připojují legitimně, a projděte případný seznam zakázaných ve stejném kroku. Zda bude hostitel přijat, závisí na politice jako celku, proto testujte přesného klienta, místo abyste uvažovali o prioritě. Oprávnění hostitele také nic neříká o oprávněních sdílení nebo režimech souborového systému, což jsou samostatné brány. Úspěch testovacích nástrojů znamená, že hostitelská politika tento zdroj přijímá, a nic víc.

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

Změňte soubor, který přežije restart

Na běžném hostiteli Linuxu je cesta konfigurace pevná a služba ji při restartu znovu načte. Na routeru nebo zařízení se běžící smb.conf často generuje při startu a ruční úprava při dalším restartu zmizí. Použijte podporovaný mechanismus přizpůsobení zařízení, kterým bývá vlastní konfigurační soubor.

Pokušení je v tuto chvíli přehrát alternativní firmware, protože jedno vlákno hlásilo, že to funguje. To je velká změna na malý problém s politikou a vyvádí zařízení z podporovaného stavu. Nejprve určete podporovanou kontrolu, protože většina zařízení ukazuje seznam povolených přes vlastní rozhraní. Pokud to opravdu nedělají, je toto omezení argumentem pro jiný hardware, ne pro nepodporovaný build.

Zapište, který soubor jste změnili a co ho znovu vytváří, aby další člověk neopakoval diagnostiku.

Otestujte jednoho povoleného a jednoho vyloučeného klienta

Otestujte oba výsledky, ne jen ten, který jste chtěli. Povolený klient, který se připojí, dokazuje, že změna funguje; vyloučený klient, který je stále odmítán, dokazuje, že pravidlo prostě neotevřelo všechno.

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

Když se připojení nikdy nedostane k smbd, odpověď je ve směrování nebo ve firewallu serveru. Pokud je hostitel povolen a přihlášení selže, problémem je identita a další rozšiřování seznamu povolených nepomůže. Diagnostický výstup udržujte v soukromí, protože podrobný log Samby může odhalit cesty sdílení a názvy účtů. Měňte jednu vrstvu na pokus, jinak vám další výsledek nic neřekne.

Související články