Portál AbcLinuxu, 2. května 2025 04:51

pam_access & DNS spoofing

1.6.2005 13:04 | Přečteno: 1360×

Používáte PAM modul pam_access? Pak byste měli zbystřit, protože za vhodných podmínek existuje potenciální možnost obejití tohoto modulu.

Ukázková konfigurace

Předpokládejme, že součástí autentizace uživatele pro PAM službu sshd je modul pam_access, kterým můžete řídit přístup uživatele k jeho účtu na základě IP adresy, IP sítě nebo domény odkud se uživatel hlásí (v případě lokálního uživatele podle terminálového zařízení, což ale není pro náš případ zajímavé). Nechť obsah konfiguračního souboru /etc/security/access.conf je následující:

-:root:ALL EXCEPT 127.0.0.1.

a /etc/pam.d/sshd obsahuje v sekci account:

account    required     /lib/security/pam_access.so

Což znamená, že uživatel root se bude moci přihlásit jen z localhostu. Zdálo by se, že takováto konfigurace je neprůstřelná a dotěrní crackeři snažící se přihlásit jako root přes SSH budou mít smůlu.

Jenže tomu tak není. Pokud (a teď vyjmenuji ony hypotetické vhodné podmínky)

  1. útočník je schopen podvrhnout dopředné DNS dotazy na doménové jméno localhost. a reverzní na svoji IP 1.2.3.4
  2. pokud nemáte tyto údaje v statické databázi /etc/hosts (nebo resolvujete v pořadi bind host)
  3. a pokud používáte výchozí nastavení OpenSSH démona UseDNS yes,

tak si může utočník začít hledat nůž na další zářez ve svém terminálu.

Jak je to možné?

  1. útočník se připojí z IP 1.2.3.4 na server
  2. sshd provede revezní dotaz gethostbyaddr("1.2.3.4")
  3. útočník odpoví localhost.
  4. sshd provede dopředný dotaz gethostbyname("localhost.")
  5. útočník odpoví 1.2.3.4
  6. sshd shledá, že DNS záznamy jsou v pořádku a nastaví PAM_RHOST na localhost
  7. sshd zavolá PAM autentizační proces přes pam_authenticate()
  8. libpam zavolá nepřímo match_from()pam_access.so
  9. match_from() provede gethostbyname("localhost")
  10. match_from() obdrží tentokrát správnou IP adresu 127.0.0.1
  11. match_from() najde shodu v /etc/security/access.conf
  12. a konečně pam_access vratí PAM_SUCCESS

Kde je zakopán pes a jak se bránit

Problém spočívá v tom, že PAM důvěřuje DNS systému. Problém je, že tuto důveru zavádí již XSSO standard, konkrétně definice položky PAM_RHOST. A OpenSSH se jí drží, a proto defaultně předává PAMu hostname a ne IP adresu.

Řešením je vypnutí DNS překladu v sshd démonu volbou UseDNS no a samozřejmě nepoužíváním domenových jmen v konfiguraci modulu pam_access.

Problematika samozřejmě není omezena jen na pam_access a sshd, ale týká se jakéhokoliv PAM modulu, který rozhoduje na základě doménového jména. Nebo který rozhoduje základě IP adresy, ale služba jej používající mu předává hostname.

       

Hodnocení: -

zatím nehodnoceno
        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

1.6.2005 13:18 imro | skóre: 19 | blog: hovado
Rozbalit Rozbalit vše dobry tip,takych treba viac
zaujimave.Sice tento pam modul nepouzivam,ale je pekne dozvediet sa nieco viac.Dik za dobry typ.

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.