Nechte každý účet přihlásit se normálně, ale dovolte VPN používat jen jedné skupině. PAM umí tento rozdíl vyjádřit bez druhého úložiště hesel a plugin OpenVPN lze nasměrovat na službu, která obsahuje jen kontroly, které zamýšlíte. Trik je postavit tuto službu, aniž byste omylem zdědili systémový stack.

Tento návod začíná u názvu služby pluginu, sestaví zásadu a poté otestuje tři výsledky, na kterých záleží: člena, cizince s platným heslem a špatné přihlašovací údaje.

Proč samostatná služba PAM

Plugin auth-pam bere jako argument název služby. Ten název vybírá soubor v /etc/pam.d a stack v tomto souboru je to, co se spouští při přihlášení k VPN. Předáte-li stejný název, jaký používá systémové přihlášení, zdědíte každé rozhodnutí v tomto stacku, včetně těch přidaných později z nesouvisejících důvodů.

Vytvořte místo toho vyhrazenou službu. Začněte funkčním stackem, který se již autentizuje proti zamýšlenému backendu, například lokálnímu souboru hesel, SSSD nebo adresářové službě, a poté přidejte pravidlo způsobilosti. Zkopírování dvou řádků do prázdného souboru je častá chyba: platnost hesla, uzamčení účtu a další kontroly mohou žít ve stacku, který jste nezkopírovali.

Oddělení služby také omezuje rozsah škod. Pravidlo jen pro VPN ve sdíleném stacku může všem odepřít přístup přes SSH nebo konzoli, což změní změnu přístupu ve výpadek.

Jak napsat pravidlo skupiny

Kontrola způsobilosti patří do fáze účtu, poté co byly přihlašovací údaje ověřeny. Pravidlo jako account required pam_succeed_if.so user ingroup vpnusers dovolí pokračovat ve zpracování jen tehdy, když je ověřený uživatel členem této skupiny.

Tento řádek je fragment, ne úplná služba. Zapojte ho tam, kam se dostane každá přijatá cesta, a zkontrolujte řídicí příznaky kolem něj. Řízení sufficient nebo skok dříve ve stacku může ukončit zpracování dřív, než se vaše pravidlo spustí, což omezení promění v doporučení.

Nepřidávejte use_uid ze zvyku. Bez něj modul vyhodnocuje uživatele, který se autentizuje; s ním modul vyhodnocuje účet, pod kterým běží proces OpenVPN, což je obvykle root nebo servisní účet, a tedy ne osoba, která se přihlašuje.

Členství ve skupině pochází z rozlišení identity systému, ne z názvu, který znáte. U uživatelů v adresáři ověřte, že stejný backend odpovídá na skupinové dotazy pro tohoto uživatele, protože lokální skupina se známým názvem je jiný objekt než adresářová skupina stejného názvu.

Nástrahy pořadí a identity

Umístěte pravidlo skupiny za autentizační stack a za každou kontrolu, která musí stále platit, ale před kontroly účtu, které si ponecháváte, nebo vedle nich. PAM vyhodnocuje moduly v pořadí souboru a řídicí hodnota na každém řádku rozhoduje, zda je selhání konečné.

Pozor na zdvojené stacky. Častý vzor je include, který už obsahuje pravidlo účtu, následovaný vaším vlastním pravidlem skupiny, což vytvoří dvě rozhodnutí tam, kde jste čekali jedno. Čtěte vložený soubor, ne jen ten, který jste upravili. Rychlý způsob, jak vidět efektivní pořadí, je číst soubor shora dolů a poznamenat si každou řídicí hodnotu.

Zachovejte ostatní požadavky na přijetí nedotčené. Úspěšné heslo nenahrazuje kontroly certifikátu, druhý faktor ani autorizaci po připojení a tato zásada není náhradou za žádnou z nich. Rozhoduje jen o tom, zda je účet způsobilý být zvažován pro přístup k VPN.

Testování členů, cizinců a špatných hesel

Před dokončením zásady otestujte tři případy. Člen se úspěšně připojí. Platný účet mimo skupinu autentizuje své heslo, ale přístup k VPN je mu odepřen. Špatné heslo pro kterýkoli účet je odmítnuto ve fázi autentizace, ne pravidlem skupiny.

Sledujte chybu viditelnou klientem a serverový log společně, protože obě selhání mohou připojujícímu se člověku připadat podobná. Rozdíl je důležitý pro podporu: cizinec se správným heslem potřebuje změnu skupiny, zatímco špatné heslo vyžaduje reset přihlašovacích údajů.

Ponechte během úprav PAM otevřenou druhou relaci a po změně ověřte i běžné přihlášení přes SSH. Smyslem vyhrazené služby je, že systémové přihlášení má zůstat nedotčené, a jediný způsob, jak to zjistit, je otestovat to.

Pokud se něco rozbije, obnovte předchozí soubor služby z kopie. Pravidlo, které chcete, je snadné vyslovit: členství činí účet způsobilým pro přístup k VPN a každá další povinná kontrola stále platí.

Související články