Fórum Root.cz
Hlavní témata => Software => Téma založeno: filbarcz 01. 07. 2022, 12:14:14
-
Jak v Alma Linuxu nastavím Google Authentificator pouze na uživatele root a ostatní uživatele, aby se mohli přihlašovat heslem/ssh klíčem?
Potřebuju aby se řádek 1 použil pro všechny mimo root a řádek s google auth pro všechny mimo root:
auth substack password-auth
auth include postlogin
auth required pam_google_authenticator.so secret=${HOME}/.ssh/google_authenticator nullok
account required pam_sepermit.so
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
session required pam_selinux.so open env_params
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session optional pam_motd.so
session include password-auth
session include postlogin
Trápím se s tím celé dopoledne a nemůžu to sladit. V článcích co jsem hledal nacházím pouze řešení typu, že se GA použije pouze pro určitou skupinu, ale nikde se neřeší zapnutí hesla/klíče pro ostatní ;(
Předem děkuji za rady.
-
a proč nenapíšeš, co jsi zkoušel, co ti nefungovalo a proč. Máš tam nullok flag, ten způsobí, že pam_google_authenticator.so skončí jako success v momentě, kdy uživatel nemá soubor ${HOME}/.ssh/google_authenticator a tady máš chybu, pam.d soubory se nespouští pod kontextem uživatele, ale běží pod rootem, nemůžeš tam používat takhle proměnné (nezkoušeno, ale myslím si to). Osobně bych tam dal raději ~/.ssh/google_authenticator
Pokud to chceš zapnout pro všechny ostatní, vygeneruj všem uživatelům nějaký klíč, ať už správný nebo špatný, zároveň u uprav template home složky pro nové uživatele a také tam nechat nějaký náhodný klíč.
Raději tohle nastavení řeším o trochu dál na nějakém IDM/ldap serveru, mohu totiž dávat locky při bruteforce, tady to nelze snadno. Uživatele si pak klíče a hesla mohou spravovat sami přes rozhraní, nemusím jim to dělat nějak složitě přímo na serveru.
-
teda ty to chceš obráceně, takže nech soubor .ssh/google_authenticator jen pro roota a pro ostatní ho měj smazaný, neexistující. Mělo by to fungovat.
-
Jde o to, že když nechám aktuvní první řádek -
auth substack password-auth
tak jako root končím na
Failed password for root from 2001:1ae9:2e8:fa00:21c:c0ff:fec8:7bdb port 34420 ssh2
a když ho zakomentuju, tak se jako root přihlásím, ale jako normální uživatel hesle už ne, protože autentizaci heslem tím zakomentováním zakážu.
-
Postupoval jsem podle těchto návodů:
https://www.linuxbabe.com/redhat/ssh-two-factor-authentication-centos-rhel
https://www.redhat.com/sysadmin/mfa-linux
-
v tom případě tam ten tam ten řádek nech a uprav sshd_config, tam přidej (či uprav) řádek PermitRootLogin yes, možná tam máš něco jako prohibit-password.
Podle toho návodu ta proměnná $(HOME) tam asi funguje, to nevím, nepoužívám. Zároveň bys pod rootem tedy neměl mít soubor ~/.ssh/google_authenticator. Máš to tak?
Tyhle různé podmínky a pravidla je opravdu lepší řešit přes nějakou službu a nikoliv přímo v pam.d a sshd_configu, tam ty možnosti nejsou tak velké a vše se blbě testuje.
-
Nakonec jako poslední pokus se mi podařilo vymyslet toto:
%PAM-1.0
auth [success=1 default=ignore] pam_succeed_if.so user ingroup root debug
auth substack password-auth
auth include postlogin
auth required pam_google_authenticator.so secret=${HOME}/.ssh/google_authenticator nullok debug
account required pam_sepermit.so
account required pam_nologin.so
account include password-auth
password include password-auth
session required pam_selinux.so close
session required pam_loginuid.so
session required pam_selinux.so open env_params
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session optional pam_motd.so
session include password-auth
session include postlogin
Díky za nasměrování a rady ;)