C2115 Praktický úvod do superpočítání -1- C2115 Praktický úvod do superpočítání Petr Kulhánek, Tomáš Bouchal kulhanek@chemi.muni.cz Národní centrum pro výzkum biomolekul, Přírodovědecká fakulta, Masarykova univerzita, Kotlářská 2, CZ-61137 Brno IV. lekce C2115 Praktický úvod do superpočítání -2- Obsah  Autentizace  Autentizace vs Authorizace  Sekundární autentizace v superpočítačových centrech  SSH klíče  Kerberos  Konfigurace, balíčky C2115 Praktický úvod do superpočítání -3Autentizace vs Autorizace Autentizace (z německého Authentisierung) je proces ověření proklamované identity subjektu. Po dokončení autentizace obvykle následuje autorizace, což je souhlas, schválení, umožnění přístupu či provedení konkrétní operace daným subjektem. Autorizace je proces získávání souhlasu s provedením nějaké operace, povolení přístupu někam, k někomu nebo něčemu (nejen ve smyslu přístupu do konkrétních prostor nebo k nějaké osobě, ale také přístup k informacím, funkcím, programovým objektům a podobně). Nejčastějším způsobem primární autentizace je kombinace přihlašovacího jména a hesla (lokální klastry, WOLF, MetaCentrum). V IT4I je primární autentizace umožněna pouze pomocí ssh klíčů. Superpočítače se většinou skládají z velkého množství výpočetních uzlu a bylo by velmi nepraktické či nemožné (např. při dávkovém spouštění úloh) se prokazovat heslem při každém přihlašování na výpočetní uzel. Při sekundární autentizaci se proto používá jiná technika. wikipedia.org C2115 Praktický úvod do superpočítání -4Sekundární autentizace Primární autentizace vytvoří stav, který se později využije k autentizaci (sekundární autentizace) bez nutnosti znovu zadávat heslo. Tento stav může nebo nemusí být časově omezen. Nejčastěji se používají ssh klíče nebo Kerberos. Naše lokální klastry (WOLF, sokar, pip, ivavik), IT4I:  ssh klíče MetaCentrum:  Kerberos C2115 Praktický úvod do superpočítání -5SSH klíče man ssh C2115 Praktický úvod do superpočítání -6Přihlašování bez hesla wolf wolf03 wolf04 wolf05wolf02wolf01 wolf06 wolf07 wolf08 wolf23 první přihlášení s heslem přihlašovaní mezi uzly klastru WOLF bez nutnosti zadávat heslo pomocí autorizovaného veřejného ssh klíče C2115 Praktický úvod do superpočítání -7Autorizovaný veřejný ssh klíč veřejný klíč soukromý klíč Lokální stroj (ssh klient) Vzdálený stroj (ssh server) síťové přenosy ověřovací token šifrovaná zpráva autorizované klíče 1 vytvoří ověřovací token 2 3 4 5 6 porovnání ověření identity uživatele (zjednodušeno) kopie manuálně provedená uživatelem (jednou) šifrovaný přenos protokolem ssh Kdokoliv, kdo zcizí soukromý klíč uživatele, se může přihlásit na vzdálený stroj! ssh pár šifrovacích klíčů C2115 Praktický úvod do superpočítání -8Nesdílený souborový systém autorizované klíče ssh ssh respektive vyžaduje heslo klíče Situace, kdy stroje nemají sdílený domovský adresář: stroj #1 stroj #2 kopie veřejného klíče pomocí scp a vložení jeho kopie do autorizovaných klíčů (pouze jednou) C2115 Praktický úvod do superpočítání -9Sdílený souborový systém autorizované klíče ssh ssh klíče Situace, kdy stroje mají sdílený domovský adresář (klastr WOLF): autorizované klíče klíče identickýobsah,rozdílnérole oba soubory jsou na sdíleném souborovém systému je možné použít (pouze jednou) cat id_rsa.pub >> authorized_kyes C2115 Praktický úvod do superpočítání -10Vytvoření páru v/s klíče [kulhanek@wolf01 ~]$ cd .ssh [kulhanek@wolf01 .ssh]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/kulhanek/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/kulhanek/.ssh/id_rsa. Your public key has been saved in /home/kulhanek/.ssh/id_rsa.pub. The key fingerprint is: e9:07:0b:fc:17:23:b3:c5:1a:8a:0c:1a:98:8f:fe:28 kulhanek@wolf01.wolf.inet [kulhanek@wolf01 .ssh]$ ls –l -rw------- 1 kulhanek lcc 1675 Mar 21 2012 id_rsa -rw-r--r-- 1 kulhanek lcc 395 Mar 21 2012 id_rsa.pub -rw------- 1 kulhanek lcc 13380 Sep 4 15:55 known_hosts Passphrase se nezadává! Podrobnější popis: man ssh seznam otisků palců strojů, na které jste se přihlásili pomocí příkazu ssh Pár veřejného a soukromého klíče se vytváří na daném stroji nebo skupině strojů, které mají sdílený adresář, POUZE jednou. soukromý klíč NESMÍ být čitelný pro skupinu a svět C2115 Praktický úvod do superpočítání -11Vytvoření autorizovaných klíčů - I Vložení veřejného klíče do seznamu autorizovaných klíčů (sdílený souborový systém): [kulhanek@wolf01 .ssh]$ cat id_rsa.pub >> authorized_keys [kulhanek@wolf01 .ssh]$ ls –l -rw-r--r-- 1 kulhanek lcc 395 Sep 25 2012 authorized_keys -rw------- 1 kulhanek lcc 1675 Mar 21 2012 id_rsa -rw-r--r-- 1 kulhanek lcc 395 Mar 21 2012 id_rsa.pub -rw------- 1 kulhanek lcc 13380 Sep 4 15:55 known_hosts Podrobnější popis: man ssh Soubor authorized_keys může obsahovat více veřejných klíčů, každý je pak na jedné řádce. Pokud přihlašování pomocí autorizovaných veřejných klíčů nebude fungovat : • ověřte přístupová práva jednotlivých souborů (písmenka r, w (eventuálně x) ve výpisu příkazu ls) • pokud běží ssh agent, odstraňte klíče, které má ve správě: $ ssh-add –D • znovu se přihlaste přístupová práva pro soubor authorized_kyes, pro skupinu a jiné - maximálně právo pro čtení C2115 Praktický úvod do superpočítání -12Vzdálené kopírování $ scp [-r] zdroj cil Příklady použití: Syntaxe: [] - možno vynechat Zdroj a cíl může být soubor nebo adresář. V případě kopírovaní adresářů je nutno použít volbu –r (recursive). Vzdálený cíl nebo host se identifikuje názvem stroje odděleného od jména souboru či adresáře dvojtečkou. [user@]hostname:[cesta/]soubor $ scp pokus.txt wolf01.wolf.inet:/scratch/kulhanek $ scp wolf01.wolf.inet:/scratch/kulhanek/pokus.txt . Ke vzdálenému kopírovaní slouží příkaz scp. C2115 Praktický úvod do superpočítání -13Vytvoření autorizovaných klíčů - II Vložení veřejného klíče do seznamu autorizovaných klíčů (nesdílený souborový systém): [kulhanek@server ~]$ scp wolf.wolf.inet:.ssh/id_rsa.pub wolf.pub [kulhanek@server ~]$ cat wolf.pub >> .ssh/authorized_keys [kulhanek@server ~]$ rm wolf.pub [kulhanek@server ~]$ ls –l .ssh -rw-r--r-- 1 kulhanek lcc 395 Sep 25 2012 authorized_keys -rw------- 1 kulhanek lcc 1675 Mar 21 2012 id_rsa -rw-r--r-- 1 kulhanek lcc 395 Mar 21 2012 id_rsa.pub -rw------- 1 kulhanek lcc 13380 Sep 4 15:55 known_hosts Podrobnější popis: man ssh přístupová práva pro soubor authorized_kyes, pro skupinu a jiné – maximálně jen právo pro čtení Získání veřejného klíče ze stroje, který bude mít roli klienta (chceme z něj spouštět příkaz ssh): Zapsání veřejného klíče do seznamu autorizovaných klíčů: dvojtečka tečka C2115 Praktický úvod do superpočítání -14Pro a proti Výhody:  nemusí se neustále zadávat heslo  bezpečnější použití příkazů ssh a scp ve skriptech  urychlení práce Nevýhody:  v případě kompromitace jednoho počítače, jsou kompromitovány všechny počítače se vzájemně autorizovanými veřejnými klíči  SSH klíče zásadně nepoužívejte pro přihlašovaní do MetaCentra, nevytvoří se během něj kerberovské lístky, bez kterých je prostředí MetaCentra nepoužitelné!!!! C2115 Praktický úvod do superpočítání -15Cvičení 1 1. Ověřte, že vám funguje přihlašovaní mezi výpočetními uzly klastru WOLF bez hesla. 2. Nastavte vaši instanci virtuálního serveru Ubuntu tak, abyste se do něj mohli přihlásit pomocí ssh klíčů z hostitelského stroje. C2115 Praktický úvod do superpočítání -16- Kerberos https://cs.wikipedia.org/wiki/Kerberos_%28protokol%29 C2115 Praktický úvod do superpočítání -17- Kerberos Kerberos je síťový autentizační protokol umožňující komukoli komunikujícímu v nezabezpečené síti prokázat bezpečně svoji identitu někomu dalšímu. Kerberos zabraňuje odposlechnutí nebo zopakování takovéto komunikace a zaručuje integritu dat. Byl vytvořen primárně pro model klient-server a poskytuje vzájemnou autentizaci – klient i server si ověří identitu své protistrany. Kerberos je postavený na symetrické kryptografii, a proto potřebuje důvěryhodnou třetí stranu. Volitelně může využívat asymetrického šifrování v určitých částech autentizačního procesu. Kerberos má přísné požadavky na synchronizaci času klientů a serverů. Tikety mají danou životnost a pokud není čas klienta synchronizován s časem serveru, autentizace selže. Standardní nastavení podle MIT požaduje, aby se tyto časy nerozcházely o více jak 5 minut. V praxi se používá NTP (Network Time Protocol) démonů k synchronizaci hodin. wikipedia.org Na klastru WOLF je nastaveno prostředí umožňující vytvářet kerberovské lístky do prostředí MetaCentra. Ty je možné použít pro autentizaci za účelem přihlášení se na čelní uzly MetaCentra, pro kopírování dat příkazem scp z/do čelních uzlů a pro připojení datových úložišť MetaCentra na klastr WOLF. C2115 Praktický úvod do superpočítání -18- Příkazy kinit vytvoří nový kerberovský lístek klist vypíše existující kerberovské lístky kdestroy odstraní existující kerberovské lístky [kulhanek@pes ~]$ kinit Password for kulhanek@META: [kulhanek@pes ~]$ klist Ticket cache: FILE:/tmp/krb5cc_1001 Default principal: kulhanek@META Valid starting Expires Service principal 01/30/2016 23:28:30 01/31/2016 23:28:24 krbtgt/META@META [kulhanek@pes ~]$ kdestroy [kulhanek@pes ~]$ klist klist: No credentials cache found (ticket cache FILE:/tmp/krb5cc_1001) [kulhanek@pes ~]$ realm pro MetaCentrum C2115 Praktický úvod do superpočítání -19- kinit $ kinit $ kinit kulhanek $ kinit kulhanek@META jméno principálu se odvozuje od principálu v cachi kerborovských lístků, pokud tento soubor neexistuje, tak od přihlašovacího jména a výchozího realmu (META) zadané jméno plus výchozího realm (META) použije se zadaný principál Pokud máte v MetaCentru jiné přihlašovací jméno, tak jej musíte explicitně uvést jako argument příkazu kinit. C2115 Praktický úvod do superpočítání -20ssh a kerberos Na našich lokálních klastrech (WOLF) je povolena autentizace pomocí kerberovských lístků, pokud to ssh server povoluje (platí pro všechny uzly v Metacentru). Zároveň se kerberovské lístky přenáší na vzdálený stroj. [kulhanek@wolf ~]$ kinit Password for kulhanek@META: [kulhanek@wolf ~]$ klist Ticket cache: FILE:/tmp/krb5cc_9703 Default principal: kulhanek@META Valid starting Expires Service principal 02/02/2016 08:13:53 02/03/2016 08:13:49 krbtgt/META@META [kulhanek@wolf ~]$ ssh kulhanek@skirit.ics.muni.cz ... ... [kulhanek@skirit ~]$ [kulhanek@skirit ~]$ klist Credentials cache: FILE:/tmp/krb5cc_18773_GcLXWPTirK Principal: kulhanek@META Issued Expires Principal Feb 2 08:14:18 2016 Feb 3 08:13:49 2016 krbtgt/META@META .... neopakuje se v době platnosti lístků nevyžaduje heslo uvádí se pouze tehdy, pokud máte jiné přihlašovací jméno C2115 Praktický úvod do superpočítání -21ssh a kerberos, pokračování Pokud máte v MetaCentru jiné přihlašovací jméno, tak jej musíte explicitně uvést při použití ssh příkazu. Druhou možností je změna konfigurace ssh pomocí souboru ~/.ssh/config, viz man ssh_config, položka User. Při použití druhé možnosti je nutné minimálně nastavit GSSAPIAuthentication a GSSAPIDelegateCredentials (Viz Manuální instalace Kerebera). Nastavení je nutné provést pro používané čelní uzly stroje MetaCentra. ~/.ssh/config Host skirit.ics.muni.cz tarkil.cesnet.cz User xstepan3 SendEnv LANG LC_* HashKnownHosts no GSSAPIAuthentication yes GSSAPIDelegateCredentials yes ForwardX11 yes seznam jmen čelních uzlů oddělených mezerou přihlašovací jméno do MetaCentra přístupová práva pro soubor ~/.ssh/config, pro skupinu a jiné – maximálně jen právo pro čtení C2115 Praktický úvod do superpočítání -22Cvičení 2 1. Na klastru WOLF vytvořte příkazem kinit kerberovský lístek do realmu META. 2. Vypište lístky a zjistěte po jakou dobu budou platit. 3. Příkazem ssh se přihlaste na libovolný čelní uzel MetaCentra (příkaz ssh nesmí žádat heslo). 4. Na čelním uzlu ověřte, že se kerberovské lístky správně přenesly. Jakou mají platnost? 5. Odhlaste se. 6. Zrušte lístky příkazem kdestroy. 7. Znovu se pokuste přihlásit na libovolný čelní uzel MetaCentra, co pozorujete? 8. Jaká platnost mají vytvořené kerberovské lístky na čelním uzlu? C2115 Praktický úvod do superpočítání -23Platnost lístků/Obnovitelné lístky Platnost lístků je časově omezena, typicky několik hodin. To je nepraktické při spouštění dlouhodobých úloh. Pro tyto účely je možné vytvořit obnovitelné lístky (renewable tickets). Jejich platnost je opět časově omezena, ale v době jejich platnosti je možné požádat (bez uvedení hesla) o jejich obnovu. Tento proces je možné opakovat po delší dobu, typicky několik dní. V MetaCentru se kerberovské lístky v úlohách obnovují automaticky. Příklad: [kulhanek@pes ~]$ kinit -r 5d Password for kulhanek@META: [kulhanek@pes ~]$ klist Ticket cache: FILE:/tmp/krb5cc_1001 Default principal: kulhanek@META Valid starting Expires Service principal 01/31/2016 10:42:22 02/01/2016 10:42:18 krbtgt/META@META renew until 02/05/2016 10:42:1 [kulhanek@pes ~]$ kinit -R obnoví lístek (volba velké R), je možné jenom v době platnosti stávajícího lístku C2115 Praktický úvod do superpočítání -24Umístění lístků (cache) [kulhanek@pes ~]$ klist Ticket cache: FILE:/tmp/krb5cc_1001 Default principal: kulhanek@META Valid starting Expires Service principal 01/31/2016 11:23:55 02/01/2016 11:23:52 krbtgt/META@META [kulhanek@pes ~]$ ssh onyx.ncbr.muni.cz ... ... [kulhanek@onyx ~]$ klist Credentials cache: FILE:/tmp/krb5cc_18773_cOR8E0oV8w Principal: kulhanek@META Issued Expires Principal Jan 31 11:25:48 2016 Feb 1 11:23:52 2016 krbtgt/META@META ... generické jméno odvozené od uid, dostupné ve všech terminálech cache nastavená pouze pro dané sezení (náhodný řetězec) Cache s lístky nesmí být umístěna na sdíleném svazku (NFS apod). C2115 Praktický úvod do superpočítání -25Vypršení lístků Pokud vyprší lístek, tak bude odmítnut další přístup ke službám, které jej vyžadují. To může vést k viditelným chybám s odepřením přístupu. Některé chyby se však viditelně neprojeví a hledání příčiny tak nemusí být "snadné" obzvláště v MetaCentru. Typicky tato situace nastává u sezení, které jsou otevřené déle než je platnost kerberovského lístku a týká se převážně software aktivovaného pomocí příkazu module a fyziky umístěného na AFS souborovém systému (téměř většina software v MetaCentru). Pokud se něco začne chovat divně (nefungující softwarové moduly), tak si nejdříve ověřte, že máte platné kerberovské lístky (klist) a případně je znovu vytvořte (kinit). C2115 Praktický úvod do superpočítání -26Instalace Kerebera pro realm META pomocí balíčků pro OS Ubuntu 14.04 LTS C2115 Praktický úvod do superpočítání -27Instalace pomocí balíčků 1) Aktivace veřejného repositáře NCBR balíčků. Postup je uveden na https://wolf.ncbr.muni.cz v části "Balíčky pro OS Ubuntu". Aktivuje se pouze jednou. 2) Podpora Kerbera pro Metacentrum (zvolte výchozí nastavení): 3) Podpora Kerbera v ssh: $ sudo apt-get install ncbr-krb5-meta $ sudo apt-get install ncbr-ssh-config C2115 Praktický úvod do superpočítání -28Cvičení 3 1. Zprovozněte si podporu pro vytváření kerberovských lístků do realmu META virtuální organizace MetaCentrum ve vaší instalaci Ubuntu server. 2. Ověřte, že můžete vytvořit kerberovské lístky příkazem kinit a klist. 3. Upravte si nastavení příkazu ssh pro použití kerberovských lístků. 4. Ověřte, že se můžete přihlásit na libovolný čelní uzel MetaCentra bez použití hesla. 5. Ověřte, že se kerberovské lístky přenášejí na čelní uzel C2115 Praktický úvod do superpočítání -29Instalace Kerebera pro realm META manuální instalace C2115 Praktický úvod do superpočítání -30Instalace Kerbera (klienti) Klientskou část Kerbera je možné instalovat na libovolný počítač, který je připojený do internetu. Níže uvedený postup je otestovaný v OS Ubuntu 14.04 LTS. 1) Instalace NTP (Network Time Protocol daemon and utility programs) – je nutné pro správné nastavení času (během konfigurace zvolte výchozí hodnoty) 2) Instalace klientských utilit systému Kerberos (během konfigurace zvolte výchozí hodnoty) 3) Získání konfiguračního souboru krb5.conf pro MetaCentrum. Soubor si můžete zkopírovat z libovolného čelního uzlu MetaCentra nebo libovolného uzlu klastru WOLF. Jeho umístění je /etc/krb5.conf 4) Soubor zkopírujte (jako super uživatel) do /etc/krb5.conf.META a nastavte mu práva 0666 (pouze pro čtení). 5) Vytvořte symbolický odkaz: $ sudo apt-get install ntp $ sudo apt-get install krb5-user $ sudo unlink /etc/krb5.conf $ sudo ln -s /etc/krb5.conf.META /etc/krb5.conf C2115 Praktický úvod do superpočítání -31Integrace Kerbera do ssh Použítí kerberovských lístků pro vzdálené přihlašování na uzly MetaCentra je nutné povolit v konfiguraci příkazu ssh (změna platí i pro příkaz scp). Změnu je možné udělat pro všechny uživatele změnou souboru /etc/ssh/ssh_config nebo změnou/vytvořením souboru ~/.ssh/config pro konkrétního uživatele. Host * # ForwardAgent no # ForwardX11 no # ForwardX11Trusted yes ... SendEnv LANG LC_* HashKnownHosts no GSSAPIAuthentication yes GSSAPIDelegateCredentials yes ForwardX11 yes povolí autentizaci pomocí kerberovského lístku, tuto formu autentizace musí podporovat vzdálený stroj přenese lístek(y) na vzdálený stroj neměňte výchozí zakomentované (#) hodnoty změny uvádějte nakonec automaticky exportuje X11 display (ekvivalent volby -X) umožní použít doplňování názvů strojů u příkazu ssh a scp pomocí TAB