Bezpečnost

3.1. Uživatel a skupina GDM

Z bezpečnostních důvodů je pro vybrané operace doporučován vyhrazený uživatel a skupina. Tento uživatel a skupina jsou normálně na většině systémů „gdm“, ale je možné nastavit libovolného uživatele a skupinu. Všechny programy GDM s grafickým rozhraním běží pod tímto uživatelem, takže jsou programy komunikující s uživatelem uzavřené na pískovišti. Tento uživatel a skupina by měli mít omezená oprávnění.

Jediné speciální oprávnění, které uživatel „gdm“ potřebuje, je schopnost číst a zapisovat soubory Xauth do složky <var>/run/gdm. Složka <var>/run/gdm by měla mít vlastnictví root:gdm a oprávnění 1777.

Neměli byste v žádném případě nastavovat uživatele/skupinu GDM na uživatele, který může snadno získat přístup, jako je uživatel nobody. Libovolný uživatel, který získá přístup ke klíči Xauth, může odposlouchávat a ovládat spouštění grafických programů běžících ve spojitosti se sezením nebo na něj provádět útoky DoS. Je důležité zajistit, aby byl systém nastaven správně, takže jen uživatel „gdm“ má přístup k těmto souborům a že nebude tak snadné se přihlásit k tomuto účtu. Například byl měl být účet nastaven tak, aby neměl heslo a umožňoval přihlíšení k účtu jiným uživatelům, než těm, co mají oprávnění superuživatele root.

Nastavení uvítacího programu GDM je uchováno v GConf. Aby uživatel GDM byl schopen nastavení zapsat, je nutné mít pro uživatele „gdm“ oprávnění zapisovat do složky $HOME. Uživatel může nastavit výchozí nastavení GConf podle svého přání, aby předešel potřebě poskytnout uživateli „gdm“ zápis do složky $HOME. Některé funkce GDM však mohou být potom nepřístupné, protože není možné do nastavení GConf zapisovat stavové informace.

3.2. PAM

GDM používá k ověřování při příhlášení PAM. PAM je zkratka pro Pluggable Authentication Module (zásuvné ověřovací moduly) a je používán většinou programů, které ve vašem počítači požadují ověření. Umožňuje správcům nastavit konkrétní chování při ověřování z různých přihlašovacích programů (jako je ssh, grafické přihlašovací rozhraní, šetřič obrazovky apod.).

PAM je komplikovaný a vysoce nastavitelný a tento dokument nemá za cíl vysvětlovat jej do podrobností. Místo toho se zaměříme na podání přehledu, jaký je vztah mezi nastavením PAM a GDM, jak bývá PAM běžně nastaven pro spolupráci s GDM, a na známé problémy. Očekává se, že člověk, který potřebuje PAM nastavovat, si bude muste přečíst dokumentaci k němu, aby pochopil jak se nastavuje a aby rozumněl termínům použitým v této kapitole.

Nastavení PAM má různá, ale podobná, rozhraní na různých operačních systémech, takže se podívejte do manuálové stránky pam.d nebo pam.conf. Určitě si přečtěte dokumentaci k PAM a promyslete si, jestli případné změny, které zamýšlíte v nastavení udělat, nemají nějaké bezpečnostní dopady.

Poznamenejme, že ve výchozím stavu GDM používá službu PAM s názvem „gdm“ pro normální přihlášení a službu PAM s názvem „gdm-autologin“ pro automatické přihlášení. Tyto služby nemusí být ve vašem souboru s nastavením pam.d nebo pam.conf definovány. Pokud v nich není žádná položka, využije GDM výchozí chování PAM. Na většině systému to bude v pořádku fungovat. Avšak funkce automatického přihlášení nemusí pracovat, když služba gdm-autologin není definována.

Skript PostLogin je spuštěn před zavoláním pam_open_session a skript PreSession je volán po. To umožňuje správcům systému přidat libovolné skriptování do přihlašovacího procesu před a/nebo po tom, co PAM inicializuje sezení.

Pokud si přejete zajistit fungování GDM s jinými ověřovacími mechanizmy (jako jsou otisky prstů nebo čtečky čipových karet), měli byste to raději implementovat pomocí modulu služby PAM pro požadovaný typ ověřování, než to zkoušet přímo změnou v kódu GDM. Podívejte se do dokumentace k PAM ve svém systému. Jak se to má udělat je často diskutováno v poštovní konferenci

, takže se zkuste na další informace podívat do archivu této konference.

PAM nemá nijaká omezení týkající se schopnosti pracovat s více typy ověřování naráz, jako třeba podporovat možnost přijímat čipové karty a možnost zadávat uživatelské jméno a heslo do přihlašovacího programu. Existují postupy, které se používají k rozchození takovýchto věcí, a nejlepší je vyhledat si, jak se takovýto problém obvykle řeší, když chcete nějaké konkrétní nastavení.

Pokud v systému nefunguje automatické přihlášení, zkontrolujte, že je v nastavení PAM definován „gdm-autologin“. Aby to fungovalo, je nutné použít modul PAM, který jednoduše neprovádí žádné ověření nebo prostě vrací PAM_SUCCESS ze všech svých veřejných rozhraní. Předpokládejme, že váš systém má modul PAM pam_allow.so, který tak činí, a nastavení PAM pro povolení „gdm-autologin“ by vypadalo nějak takto:

       gdm-autologin auth  required    pam_unix_cred.so.1
       gdm-autologin auth  sufficient  pam_allow.so.1
       gdm-autologin account  sufficient  pam_allow.so.1
       gdm-autologin session  sufficient  pam_allow.so.1
       gdm-autologin password  sufficient  pam_allow.so.1

Nastavení výše způsobí, že nebude vygenerován záznam s posledním přihlášením. Pokud je tento záznam požadován, použijte pro sezení následující:

       gdm-autologin session required pam_unix_session.so.1

Pokud počítač používá několi lidí, což činí automatické přihlášení nepoužitelným, můžete chtít umožnit některým uživatelům, aby se přihlašovali bez zadávání svého hesla. Tato funkce může být zapnutá jako volba jednotlivých uživatelů v nástroji users-admin z gnome-system-tools. Toho je dosaženo kontrolou, že uživatel je členem unixové skupiny nazývané „nopasswdlogin“, před tím, než je dotázán na heslo. Aby to fungovalo, musí soubor s nastavením PAM pro službu „gdm“ obsahovat řádek jako:

      gdm auth  sufficient  pam_succeed_if.so  user ingroup nopasswdlogin

3.3. utmp a wtmp

GDM generuje při přihlášení a odhlášení položky do databází uživatelských účtů utmp a wtmp. Databáze utmp obsahuje přístupy uživatelů a informace o účtech, ke kterým je přistupováno příkazy, jako je finger, last, login a who. Databáze wtmp obsahuje historii přístupů uživatelů a informace o účtech pro databázi utmp. Více informací najdete v manuálových stránkách utmp a wtmp

3.4. Ověřovací schéma Xserveru

Soubory s ověřením Xserveru jsou uchovány v podsložce nově vytvořené při spuštění ve <var>/run/gdm. Tyto soubory jsou používány k uchování a sdílení „hesla“ mezi klientem X a serverem X. Toto „heslo“ je jedinečné pro každé přihlášené sezení, takže uživatel z jednoho sezení nemůže odposlouchávat uživatele z jiného sezení.

GDM podporuje jen ověřovací schéma Xserveru MIT-MAGIC-COOKIE-1. Z dalších schémat se toho získává jen málo a nebylo vyvinuto žádné úsilí to realizovat. Buďte hlavně obezřetní při používání XDMCP, protože ověřovací cookie jde přes drát jako čistý text. Pokud je možné odposlouchávání, mohl by útočník snadno odposlouchávat vaše ověřovací hesla, když se přihlašujete, bez ohledu na to, jaké ověřovací schéma je použito. Pokud je odposlouchávání možné a nežádoucí, měli byste použít SSH pro tunelování připojení X namísto používání XDMCP. XDMCP byste mohli brát, jako takovou grafickou nadstavbu nad telnetem se stejnými bezpečnostními problémy. Ve většině případů by se ssh -Y mělo upřednostnit před GDM s funkcemi XDMCP.

3.5. Bezpečnost XDMCP

Ačkoliv je váš displej chráněn pomocí cookies, XEvents a tudíž i zmáčknutí kláves provedená při zadávání hesla jdou stále po drátě v podobě čistého textu. Ten je jednoduché zachytit.

XDMCP je hlavně vhodný pro běh tenkých klientů, jako jsou v terminálových místnostech. Takovýto tenký klient bude vždy potřebovat přístup k serveru a tak se jako nejlepší bezpečnostní zásada jeví mít takovéto tenké klienty na oddělené síti, ke které se nedá dostat z vnějšku a připojit se dá jen k serveru. Jediný bod, ze kterého se potřebujete dostat ven, je vlastní server. V tomto typu instalace byste nikdy neměli použít neřiditelný rozbočovač nebo jiná snadno odposlouchávatelná síťová zařízení.

3.6. Řízení přístupu k XDMCP

Řízení přístupu k XDMCP se dělá pomocí knihovny TCP Wrapper. GDM je možné zkompilovat i bez podpory knihovny TCP Wrapper, takže tato funkčnost nemusí být v některých operačních systémech podporována.

Měli byste použít název démona gdm v souborech <etc>/hosts.allow a <etc>/hosts.deny. Například pro odmítnutí příhlášení z počítačů v doméně .zla.domena přidejte:

gdm: .zla.domena

do <etc>/hosts.deny. Můžete také přidat

gdm: .vase.domena

do svého <etc>/hosts.allow, když chcete znemožnit všechny služby ze všech počítačů. Podrobnosti viz manuálová stránka hosts.allow(5).

3.7. Zabezpečení na firewallu

I když se GDM snaží přelstít potenciální útočníky zkoušející využít XDMCP, je doporučeno blokovat port XDMCP (normálně to je port UDP 177) na vašem firewallu, pokud jej opravdu nepotřebujete. GDM se chrání vůči útokům DoS, ale protokol X je stále nebezpečný ze své podstaty a měl by být používán jen v prostředích, která máte pod kontrolou. Navíc, každé vzdálené připojení spotřebuje hodně prostředků, takže je mnohem snadnější provést útok DoS přes XDMCP než útočit na webový server.

Je také moudré zablokovat všechny porty Xserveru. Jedná se o porty TCP 6000+ (jeden pro každý z displejů) na vašem firewallu. Uvědomte si, že GDM bude používat čísla displejů 20 a vyšší pro flexibilní servery na vyžádání.

X není příliš bezpečný protokol, pokud se používá přes Internet, a XDMCP na to není o moc lépe.

3.8. PolicyKit

GDM je možné nastavit, aby používal PolicyKit, díky čemuž může správce systému určovat, jestli má přihlašovací obrazovka nabízet na uvítací obrazovce tlačítka pro vypnutí a restartování.

Tato tlačítka jsou řízena činnostmi org.freedesktop.consolekit.system.stop-multiple-users a org.freedesktop.consolekit.system.restart-multiple-users. Zásady pro tyto činnosti mohou být nastaveny pomocí nástroje polkit-gnome-authorization nebo programem příkazového řádku polkit-auth.

3.9. RBAC (Role Based Access Control)

GDM může k nastavení používat místo PokicyKit také RBAC. V takovém případě se používá nastavení RBAC k řízení, jestli má přihlašovací obrazovka nabízet na uvítací obrazovce tlačítka pro vypnutí a restartování.

Například v systému Oracle Solaris se k řízení tohoto používá autorizace „solaris.system.shutdown“. Stačí upravit soubor /etc/user_attr tak, aby měl uživatel „gdm“ tuto autorizaci.