Brána přijme heslo, požádá o kód a dialog nenabídne žádné pole pro něj. Nic nebylo napsáno špatně: plugin NetworkManageru dokončil výměnu tajemství, aniž by si vyžádal šestimístnou hodnotu. Projděte čtyři níže uvedené kontroly v pořadí, protože klienta mění jen jedna z nich. Zbytek seznamu vylučuje bránu, účet a sestavení pluginu.

První kontrola: přečtěte si, kde se ověřování zastavilo

Špatné heslo selže okamžitě. Chybějící druhý faktor selže po kroku s přihlašovacími údaji, obvykle opakovanou výzvou nebo vypršením času na straně brány. Časování a log brány ukazují, které kolo zůstalo bez odpovědi.

Přečtěte si log připojení, než se dotknete profilu. Pokud brána hlásí neúplné ověření nebo vypršenou výzvu, klient kód nikdy neodeslal. Pokud hlásí neplatné přihlašovací údaje, problém je v hesle a žádné nastavení TOTP to nespraví.

Zaznamenejte přesné pořadí výzev, které brána očekává: uživatelské jméno, heslo, pak kód, nebo uživatelské jméno, kód, pak heslo. Některé brány pořadí kol mění a klient, který zná jen první pořadí, uvázne na druhém.

Druhá kontrola: použijte klienta, který výzvu vlastní

Samotný OpenConnect implementuje celý rozhovor včetně kola výzvy. Přímé spuštění je nejpředvídatelnější způsob, jak potvrdit, že účet a brána fungují:

sudo openconnect --protocol=anyconnect --useragent=AnyConnect vpn.example.net

Klient se ptá v pořadí, v jakém se ptá brána. User agent je důležitý, protože některé brány přizpůsobují tok přihlášení známému klientovi a obecný řetězec může vytvořit kratší tok, který o kód nikdy nepožádá. Spusťte jej jednou v popředí, než zařídíte jakoukoli službu na pozadí.

Pokud se příkazový řádek ptá správně, účet, brána i druhý faktor jsou v pořádku. Zbývající problém je dialog pluginu, ne ověřovací služba. To izoluje vadnou komponentu, aniž by se dotklo serveru. Uchovejte výstup příkazu u záznamu o incidentu.

Pokud příkazový řádek výzvu také přeskakuje, zastavte se a zkontrolujte konfiguraci brány s jejím správcem. Žádný klientský program pro plochu nemůže odpovědět na výzvu, kterou server nikdy nepošle.

Třetí kontrola: zjistěte, zda váš plugin nabízí režim TOTP

Některá sestavení NetworkManager OpenConnect nabízejí režim tokenu a pole user agentu na kartě Identity připojení. Nastavte user agent na hodnotu, kterou brána očekává, zvolte ruční zadání TOTP a připojení uložte.

Zda tato pole existují, závisí na verzi pluginu a na tom, který editor připojení pracovní plocha používá. Samostatný editor může zobrazovat možnosti, které panel GNOME skrývá, nebo naopak. Před hledáním skrytého nastavení zkontrolujte verzi nainstalovaného balíčku.

Pokud režim tokenu existuje a výzva se stále neobjevuje, sestavení postrádá předání výzvy mezi pluginem a obecným dialogem pro tajemství. Opětovné napsání hesla, přeinstalace stejného balíčku nebo vyčištění klíčenky nevytvoří pole, které sestavení neimplementuje.

Čtvrtá kontrola: berte vygenerovaný kód jako kompromis

Skript může zavolat oathtool pro aktuální kód a předat uživatelské jméno, heslo a kód do nmcli connection up --ask. Postup funguje, ale sdílené tajemství skončí uložené někde, kde je může přečíst každý, kdo skript otevře, a takový čtenář může generovat kódy navždy. To je trvalé rozšíření povrchu přihlašovacích údajů, ne oprava klienta.

Kdo to zvolí, měl by tajný soubor uzamknout na root, držet generované hodnoty mimo historii shellu a zacházet se skriptem jako s materiálem přihlašovacích údajů. Obal, který vypisuje kód do terminálu, druhý faktor zahazuje. Obal nejprve otestujte s dočasným účtem.

Skript musí také dodržet pořadí výzev brány. Pokud server žádá kód před heslem, pevná vstupní sekvence pošle špatnou hodnotu na špatnou výzvu a vytvoří stejné neúplné ověření. Nacvičte to s testovacím účtem, než to zapojíte do přihlašovací úlohy.

Ověřte stejnou bránu a stejný účet

Každé obejití testujte proti stejné bráně, stejnému účtu a stejné skupině tunelu. Brána, která vyžaduje i certifikát zařízení, může klienta příkazového řádku odmítnout z důvodu nesouvisejícího s TOTP a pořadí výzev se může lišit od nacvičeného.

Zaznamenejte klienta, jeho verzi, user agent a pořadí výzev, které fungovalo. Tento záznam řekne dalšímu člověku, zda je problém v sestavení pluginu, toku brány nebo politice účtu, bez dalšího kola resetování hesel.

Skončete jedním opětovným připojením po úplném odhlášení. Uložené tajemství může způsobit, že rozbitý tok vypadá opravený až do příští relace, a právě při druhém připojení se chybějící výzva obvykle vrací.

Související články