ˇ ´I TECHNICKE´ V BRNEˇ VYSOKE´ UCEN BRNO UNIVERSITY OF TECHNOLOGY
ˇ ´ICH TECHNOLOGI´I FAKULTA INFORMACN ˇ ´ICH SYSTEM ´ ´ U ˚ USTAV INFORMACN FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS
ˇ AUTENTIZACE A AUTORIZACE UZIVATELE ˇ ´ITACOV ˇ ´ V POC YCH S´IT´ICH NOVE´ GENERACE
´ DIPLOMOVA´ PRACE MASTER’S THESIS
´ AUTOR PRACE AUTHOR
BRNO 2007
ˇ Bc. RADEK PRIBYL
ˇ ´I TECHNICKE ´ V BRNE ˇ VYSOKE´ UCEN BRNO UNIVERSITY OF TECHNOLOGY
ˇ ´ICH TECHNOLOGI´I FAKULTA INFORMACN ˇ ´ICH SYSTEM ´ ´ U ˚ USTAV INFORMACN FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS
ˇ AUTENTIZACE A AUTORIZACE UZIVATELE ˇ ´ITACOV ˇ ´ V POC YCH S´IT´ICH NOVE´ GENERACE USER AUTHENTICATION AND AUTHORISATION FOR NEW GENERATION NETWORKS
´ DIPLOMOVA´ PRACE MASTER’S THESIS
´ AUTOR PRACE
ˇ Bc. RADEK PRIBYL
AUTHOR
´ VEDOUC´I PRACE SUPERVISOR
BRNO 2007
ˇ Ing. PETR MATOUSEK, Ph.D.
Abstrakt Tato pr´ace popisuje zp˚ usoby autentizace a autorizace uˇzivatele pomoc´ı d˚ uvˇeryhodn´eho serveru. Je zde rozebr´an syst´em Kerberos, kter´ y slouˇz´ı jako inspirace pˇri n´avrhu vlastn´ıho autentizaˇcn´ıho sch´ema. Na konkr´etn´ım pˇr´ıkladu aplikac´ı jsou analyzov´any programov´e vrstvy a jejich rozhran´ı zajiˇstuj´ıc´ı autentizaci a autorizaci uˇzivatele. V dokumentu je navrˇzen a pops´an model autentizaˇcn´ıho mechanismu. Tento mechanismus je implementov´an do komunikace mezi emailov´ ym klientem a imap serverem.
Kl´ıˇ cov´ a slova kryptografie, autentizace, autorizace, AAA sch´ema, syst´em Kerberos, GSSAPI, SAUP protokol, Radius
Abstract This document describes methods of user authentication and authorisation via a trusted server. There is analysis of the system Kerberos, which is used as an inspiration for desing of a new authentication scheme. There are analysed programming layers and interfaces for specific applications ensuring user authentication and authorisation. The document contains a design and detailed description of a new authentication scheme. This scheme is implemented into the communication between email client and imap server.
Keywords cryptography, authentication, authorisation, AAA scheme, system Kerberos, GSSAPI, SAUP protocol, Radius
Citace Radek Pˇribyl: Autentizace a autorizace uˇzivatele v poˇc´ıtaˇcov´ ych s´ıt´ıch nov´e generace, diplomov´a pr´ace, Brno, FIT VUT v Brnˇe, 2007
Autentizace a autorizace uˇ zivatele v poˇ c´ıtaˇ cov´ ych s´ıt´ıch nov´ e generace Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem tuto diplomovou pr´aci vypracoval samostatnˇe pod veden´ım Ing. Petra Matouˇska ....................... Radek Pˇribyl 22. kvˇetna 2007
Podˇ ekov´ an´ı T´ımto bych chtˇel podˇekovat Ing. Petru Matouˇskovi za pomoc a rady, kter´e mi poskytl pˇri ˇreˇsen´ı dilpomov´e pr´ace.
c Radek Pˇribyl, 2007.
Tato pr´ ace vznikla jako ˇskoln´ı d´ılo na Vysok´em uˇcen´ı technick´em v Brnˇe, Fakultˇe informaˇcn´ıch technologi´ı. Pr´ ace je chr´ anˇena autorsk´ym z´ akonem a jej´ı uˇzit´ı bez udˇelen´ı opr´ avnˇen´ı autorem je nez´ akonn´e, s v´yjimkou z´ akonem definovan´ych pˇr´ıpad˚ u.
Obsah ´ 1 Uvod
3
2 Kryptografie 2.1 Symetrick´a ˇsifra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Asymetrick´a ˇsifra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 4 5
3 Autentizace a autorizace 3.1 Autentizace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Zp˚ usoby autentizace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Autorizace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6 6 6 7
4 AAA sch´ ema 4.1 Radius . . 4.2 Diameter 4.3 EAP . . . 4.4 802.1x . . 4.5 Shrnut´ı .
. . . . .
8 9 11 11 13 15
5 Autentizace pomoc´ı syst´ emu Kerberos 5.1 Protokol Kerberos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16 16
6 Programov´ e n´ astroje pro autentizaci 6.1 Aplikace vybran´e pro anal´ yzu . . . . . . . . 6.2 Instalace a konfigurace syst´emu pro anal´ yzu 6.3 Kerberizovan´e aplikace . . . . . . . . . . . . 6.4 Programov´e rozhran´ı aplikac´ı . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
20 20 21 22 23
7 Model autentizace a autorizace uˇ zivatele v glob´ aln´ıch s´ıt´ıch 7.1 Poˇzadavky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2 Typy model˚ u komunikace . . . . . . . . . . . . . . . . . . . . . 7.3 N´avrh modelu komunikace . . . . . . . . . . . . . . . . . . . . . 7.4 N´avrh protokolu SAUP - Single Authentication Protocol . . . . 7.5 Vytvoˇren´ı ˇsifrovac´ıho kl´ıˇce kAB . . . . . . . . . . . . . . . . . . 7.6 Typy zpr´av protokolu SAUP . . . . . . . . . . . . . . . . . . . 7.7 Protokol Radius . . . . . . . . . . . . . . . . . . . . . . . . . . 7.8 Model syst´emu v praxi . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
29 29 30 31 32 34 35 37 37
1
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
8 Implementace 8.1 Pouˇzit´ y software . . . . . ´ 8.2 Uprava software . . . . . . 8.3 Knihovna libdip service.so 8.4 Instalace . . . . . . . . . . 8.5 Konfigurace . . . . . . . .
. . . . .
39 39 39 41 42 43
9 Bezpeˇ cnost syst´ emu 9.1 Bezpeˇcnost protokolu SAUP . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2 Kvalita implementace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45 45 46
10 Z´ avˇ er
47
A Instalace
49
B Konfigurace postfix, imap, Kerberos, pine
53
C GSSAPI Autentizace
57
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
2
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
Kapitola 1
´ Uvod V souˇcasn´e dobˇe je kladen st´ale vˇetˇs´ı d˚ uraz na zabezpeˇcen´ı syst´em˚ u a komunikace pˇred u ´toˇcn´ıky. V minulosti byla proto do syst´em˚ u zavedena autentizace a autorizace uˇzivatel˚ u. Ve vˇetˇsinˇe pˇr´ıpad˚ u se ale uˇzivatel pˇrihlaˇsuje k syst´emu pˇres poˇc´ıtaˇcovou s´ıt’. Proto mus´ı b´ yt tato komunikace mezi uˇzivatelem a serverem, ke kter´emu uˇzivatel pˇristupuje, zabezpeˇcen´ a. ´ Uroveˇ n zabezpeˇcen´ı m˚ uˇze b´ yt na r˚ uzn´ ych vrstv´ach komunikaˇcn´ıch protokol˚ u. Pokud ovˇsem ned˚ uvˇeˇrujeme zp˚ usobu zabezpeˇcen´ı protokol˚ u niˇzˇs´ıch vrstev, mus´ıme implementovat zabezpeˇcen´ı komunikace na aplikaˇcn´ı u ´rovni. V praxi je vˇetˇsinou v aplikac´ıch implementov´ano v´ıce druh˚ u mechanism˚ u pro zp˚ usob autentizace a zabezpeˇcen´ı pˇrenosu dat. C´ılem diplomov´e pr´ace je n´avrh nov´eho mechanismu autentizace a autorizace uˇzivatele vyuˇz´ıvaj´ıc´ı d˚ uvˇeryhodn´ y server pro ovˇeˇren´ı totoˇznosti uˇzivatele. Dalˇs´ım u ´kolem je tento mechanismus implementovat a uk´azat jeho funkˇcnost. Diplomov´a pr´ace je rozdˇelena do dvou velk´ ych celk˚ u. V prvn´ım jsou zahrnuty kapitoly, kter´e slouˇz´ı jako teoretick´ y z´aklad k pochopen´ı problematiky autentizace a autorizace uˇzivatele. V tomto celku jsou pops´any tak´e protokoly a syst´emy, kter´e realizuj´ı autentizaci uˇzivatele pomoc´ı d˚ uvˇeryhodn´eho serveru. V tˇechto protokolech jsem hledal inspiraci pro druhou ˇc´ast diplomov´e pr´ace. Druh´a ˇc´ast obsahuje n´avrh nov´eho sch´ematu pro autentizaci uˇzivatele a jeho implementaci. D´ale je zde tak´e na konkr´etn´ım pˇr´ıkladu pops´an zp˚ usob, jak´ ym ˇreˇs´ı implementaci autentizaˇcn´ıch mechanism˚ u st´avaj´ıc´ı aplikace. Tato pr´ace navazuje na Semestr´aln´ı projekt, v r´amci kter´eho jsem studoval zp˚ usoby autentizace a autorizace uˇzivatele. Do diplomov´e pr´ace jsem pˇrevzal ˇc´asti Semestr´aln´ıho projektu, kter´e popisuj´ı teoretick´ y z´aklad pro danou problematiku a kter´ ymi jsem se inspiroval pˇri n´avrhu vlastn´ıho autentizaˇcn´ıho sch´ematu. Jsou to kapitoly zab´ yvaj´ıc´ı se kryptografi´ı (kapitola 2), autentizac´ı a autorizac´ı uˇzivatele (kapitola 3), AAA sch´ematem (kapitola 4) a protokolem Kerberos (kapitola 5).
3
Kapitola 2
Kryptografie Kryptografie neboli ˇsifrov´an´ı je nauka o metod´ach utajov´an´ı obsahu zpr´av pˇrevodem do podoby, kter´a je ˇciteln´a jen se speci´aln´ı znalost´ı. Slovo kryptografie poch´az´ı z ˇreˇctiny krypt´ os skryt´ y a gr´ aphein znamen´a ps´at. Nˇekdy je pojem obecnˇeji pouˇz´ıv´an pro vˇedu o ˇcemkoli spojen´em se ˇsiframi jako alternativa k pojmu kryptologie. Kryptologie zahrnuje kryptografii a kryptoanal´ yzu, neboli luˇstˇen´ı zaˇsifrovan´ ych zpr´av. ˇ Sifrov´ an´ı je d˚ uleˇzit´ ym prvkem zabezpeˇcuj´ıc´ım data. Je pouˇzito vˇsude tam, kde je poˇzadov´ano nevyzrazen´ı tajn´e informace. Pouˇz´ıv´a se proto pro zabezpeˇcen´ı pˇrenosu dat nebo archivaci dat. C´ılem t´eto diplomov´e pr´ace je n´avrh syst´emu pro autentizaci a autorizaci uˇzivatel˚ u. Uˇzivatel se bude autentizovat a autorizovat v˚ uˇci vzd´alen´emu serveru. A proto bude potˇreba pˇren´aˇset d˚ uvˇern´a data pˇres poˇc´ıtaˇcovou s´ıt’. Kryptografick´e metody budou pouˇzity pr´avˇe k u ´ˇcelu utajen´ı pˇren´aˇsen´ ych d˚ uvˇern´ ych dat.
2.1
Symetrick´ aˇ sifra
Symetrick´e ˇsifrov´an´ı je zaloˇzeno na principu jednoho kl´ıˇce, kter´ ym lze zpr´avu jak zaˇsifrovat, tak i deˇsifrovat. Podstatnou v´ yhodou symetrick´ ych ˇsifer je jejich n´ızk´a v´ ypoˇcetn´ı n´aroˇcnost. Algoritmy pro ˇsifrov´an´ı s veˇrejn´ ym kl´ıˇcem (asymetrick´e algoritmy) mohou b´ yt i stotis´ıckr´at pomalejˇs´ı. Na druhou stranu velkou nev´ yhodou je nutnost sd´ılen´ı tajn´eho kl´ıˇce, proto se odesilatel a pˇr´ıjemce tajn´e zpr´avy mus´ı pˇredem domluvit na tajn´em kl´ıˇci.
Obr´azek 2.1: symetrick´ y algoritmus
4
2.2
Asymetrick´ aˇ sifra
Asymetrick´a kryptografie (kryptografie s veˇrejn´ ym kl´ıˇcem) je skupina kryptografick´ ych metod, ve kter´ ych se pro ˇsifrov´an´ı a deˇsifrov´an´ı pouˇz´ıvaj´ı odliˇsn´e kl´ıˇce. ˇ Sifrovac´ ı kl´ıˇc pro asymetrickou kryptografii sest´av´a z dvou ˇc´ast´ı: jedna ˇc´ast se pouˇz´ıv´ a pro ˇsifrov´an´ı zpr´av (a pˇr´ıjemce zpr´avy ani tuto ˇc´ast nemus´ı zn´at), druh´a pro deˇsifrov´ an´ı (a odesilatel ˇsifrovan´ ych zpr´av ji zpravidla nezn´a). Je vidˇet, ˇze ten, kdo ˇsifruje, nemus´ı s deˇsifruj´ıc´ım pˇr´ıjemcem zpr´avy sd´ılet ˇz´adn´e tajemstv´ı, ˇc´ımˇz eliminuj´ı potˇrebu v´ ymˇeny kl´ıˇc˚ u; tato vlastnost je z´akladn´ı v´ yhodou asymetrick´e kryptografie. Nejbˇeˇznˇejˇs´ı verz´ı asymetrick´e kryptografie je vyuˇz´ıv´an´ı tzv. veˇrejn´eho a soukrom´eho ˇ kl´ıˇce. Sifrovac´ ı kl´ıˇc je veˇrejn´ y, majitel kl´ıˇce ho volnˇe uveˇrejn´ı, a kdokoli j´ım m˚ uˇze ˇsifrovat jemu urˇcen´e zpr´avy; deˇsifrovac´ı kl´ıˇc je soukrom´ y, majitel jej drˇz´ı v tajnosti a pomoc´ı nˇej m˚ uˇze tyto zpr´avy deˇsifrovat. Je zˇrejm´e, ˇze ˇsifrovac´ı kl´ıˇc ecryptionKey a deˇsifrovac´ı kl´ıˇc decryptionKey spolu mus´ı b´ yt matematicky sv´az´any, avˇsak nezbytnou podm´ınkou pro uˇziteˇcnost ˇsifry je praktick´ a nemoˇznost ze znalosti ˇsifrovac´ıho kl´ıˇce spoˇc´ıtat deˇsifrovac´ı. Matematicky tedy asymetrick´a kryptografie postupuje n´asleduj´ıc´ım zp˚ usobem: ˇ Sifrov´ an´ı crypted = f(message, ecryptionKey) Deˇsifrov´an´ı message = g(crypted, decryptionKey) V principu se mohou ˇsifrovac´ı a deˇsifrovac´ı funkce liˇsit, zpravidla jsou vˇsak matematicky pˇrinejmenˇs´ım velmi podobn´e.
Obr´azek 2.2: asymetrick´ y algoritmus
5
Kapitola 3
Autentizace a autorizace Autentizace a autorizace se pouˇz´ıv´a pro zajiˇstˇen´ı pˇr´ıstupu k syst´emu nebo sluˇzbˇe jen tˇem uˇzivatel˚ um, kteˇr´ı jsou k tomu opr´avnˇeni. Tyto pojmy u ´zce souvis´ı s t´ematem diplomov´e pr´ace, nebot’ jedn´ım z c´ıl˚ u pr´ace je n´avrh autentizaˇcn´ıho a autorizaˇcn´ıho mechanismu.
3.1
Autentizace
Autentizace znamen´a potvrzen´ı, ˇze uˇzivatel poˇzaduj´ıc´ı sluˇzby je platn´ ym uˇzivatelem poskytovan´ ych s´ıt’ov´ ych sluˇzeb. Autentizace je dosaˇzena pomoc´ı pˇredstaven´ı identity a jist´eho povˇeˇren´ı nebo tajemstv´ı. Autentizace m˚ uˇze b´ yt jednosmˇern´a nebo obousmˇern´a. Jednosmˇern´a oznaˇcuje autentizaci uˇzivatele v˚ uˇci serveru. Zde m˚ uˇze doj´ıt k podvrˇzen´ı identity serveru, proto je vhodn´e vyuˇz´ıt autentizaci obousmˇernou. Ta umoˇzn ˇuje ovˇeˇren´ı identity jak uˇzivatele tak i serveru poskytuj´ıc´ıho sluˇzbu. V ide´aln´ım pˇr´ıpadˇe je tedy zamezeno podvrˇzen´ı identity od obou koncov´ ych ˇclen˚ u.
3.2
Zp˚ usoby autentizace
Uˇ zivatelsk´ e jm´ eno a heslo Znalost uˇzivatelsk´eho jm´ena a hesla je nejzn´amˇejˇs´ım a nejbˇeˇznˇejˇs´ım zp˚ usobem autentizace uˇzivatele. K potvrzen´ı identity staˇc´ı zn´at uˇzivatelsk´e jm´eno a heslo. V´ yhodou je snadn´ a implementace tohoto autentizaˇcn´ıho procesu a jeho nen´aroˇcnost na samotn´eho uˇzivatele. Autentizaˇcn´ı u ´daje se mˇen´ı jen zˇr´ıdka a proto je moˇzno je z´ıskat velmi jednoduˇse. Ve chv´ıli, kdy se n´am podaˇr´ı tyto u ´daje z´ıskat, at’ uˇz odposlechem nebo jin´ ym zp˚ usobem, z´ısk´ame pln´ y pˇr´ıstup k uˇzivatelovu u ´ˇctu. Spolehlivost autentizace je nav´ıc velmi z´avisl´a na zvolen´em hesle.
Jednor´ azov´ e heslo Jednou z nejjistˇejˇs´ıch obran proti odhalen´ı hesla nebo jeho odchycen´ı pˇri komunikaci je pouˇz´ıv´an´ı jednor´azov´ ych hesel. Vˇetˇsina implementac´ı poskytuj´ıc´ıch autentizaci jednor´azov´ ym heslem vyˇzaduje kromˇe zvl´aˇstn´ı konfigurace poˇc´ıtaˇcov´eho syst´emu i speci´aln´ı zaˇr´ızen´ı v podobˇe kalkul´atoru velikosti bˇeˇzn´e kreditn´ı karty, kter´ ym si uˇzivatel pokaˇzd´e vygeneruje
6
nov´e heslo. Toto heslo je platn´e pouze po omezen´ y ˇcasov´ yu ´sek (maxim´alnˇe nˇekolik minut) a cel´ y pˇr´ıstroj je chr´anˇen proti zneuˇzit´ı ciz´ı osobou dalˇs´ım heslem nebo ˇc´ıseln´ ym k´odem. Jednor´azov´e heslo se vˇetˇsinou generuje v z´avislosti na aktu´aln´ım ˇcase a/nebo s´eriov´em ˇc´ısle zaˇr´ızen´ı. Posloupnost generovan´ ych hesel nelze odhadnout, dvoj´ı pouˇzit´ı stejn´eho hesla nen´ı moˇzn´e.
Certifik´ at Dalˇs´ı moˇznost´ı je pouˇzit´ı certifik´atu, kter´ y byl vystaven na stranˇe serveru. Certifik´at pak pouˇz´ıv´a sluˇzba pro ovˇeˇren´ı totoˇznosti jeho drˇzitele. Po technick´e str´ance se jedn´a o textov´ y dokument, kter´ y m˚ uˇze b´ yt uloˇzen na libovoln´em m´ediu. Velmi ˇcasto se m˚ uˇzeme setkat s certifik´aty uloˇzen´ ymi na pevn´em disku, odkud je lze zkop´ırovat. Jakmile dojde k odcizen´ı certifik´atu a pˇr´ısluˇsn´ ych priv´atn´ıch kl´ıˇc˚ u, je moˇzno opˇet z´ıskat pln´ y pˇr´ıstup k u ´ˇctu p˚ uvodn´ıho majitele. Pouˇz´ıv´a se proto um´ıstˇen´ı certifik´atu na ˇcipovou kartu, jej´ıˇz ˇcteˇcku pak mus´ı m´ıt uˇzivatel pˇripojenu ke sv´emu poˇc´ıtaˇci, nebo uloˇzen´ı certifik´atu na serveru certifikaˇcn´ı autority (CA).
Autentizaˇ cn´ı kalkul´ ator Autentizaˇcn´ı kalkul´ator je elektronick´e zaˇr´ızen´ı, kter´e dok´aˇze generovat jednor´azov´a hesla pro pˇr´ıstup k u ´ˇctu uˇzivatele. Tato zaˇr´ızen´ı b´ yvaj´ı synchronizov´ana se syst´emy na stranˇe serveru tak, aby obˇe strany generovaly stejn´e kl´ıˇce. Ty pak uˇzivatel opisuje do aplikace a ovˇeˇruje tak svou totoˇznost jednoduˇse t´ım, ˇze dok´aˇze, ˇze je majitelem pˇr´ısluˇsn´eho kalkul´atoru. Jedn´a se o jednu z nejbezpeˇcnˇejˇs´ıch metod autorizace uˇzivatele.
3.3
Autorizace
Autorizace znamen´a udˇelen´ı specifick´eho typu sluˇzby (vˇcetnˇe odm´ıtnut´ı sluˇzby) uˇzivateli na z´akladˇe jeho autentizace, sluˇzeb, kter´e poˇzaduje a aktu´aln´ıho stavu syst´emu. Autorizace m˚ uˇze b´ yt zaloˇzena na omezen´ıch, napˇr´ıklad omezen´ı na urˇcit´e hodiny v r´amci dne, nebo omezen´ı na fyzickou polohu, nebo omezen´ı v´ıcen´asobn´eho pˇrihl´aˇsen´ı jednoho uˇzivatele. Autorizace urˇcuje povahu sluˇzby, kter´a je poskytnuta uˇzivateli. Typy sluˇzeb jsou napˇr´ıklad: filtrov´an´ı IP adres, pˇridˇelen´ı adresy, pˇridˇelen´ı cesty, QoS, ˇr´ızen´ı ˇs´ıˇrky p´asma/ˇr´ızen´ı toku, tunelov´an´ı do konkr´etn´ıho koncov´eho bodu. Uk´azka autorizaˇcn´ıho z´aznamu: iptables -A INPUT -s 192.168.0.2 -p tcp --dport 443 -j REJECT Popis: vˇsechny dotazy na TCP portu 443 pˇrich´azej´ıc´ı z adresy 192.168.0.2 odm´ıtni
7
Kapitola 4
AAA sch´ ema V oblasti poˇc´ıtaˇcov´e bezpeˇcnosti AAA znamen´a authentication, authorisation and accounting protocol, tj. ˇcesky autentizaˇcn´ı, autorizaˇcn´ı a u ´ˇctovac´ı protokol. Autentizace a autorizace ´ ctov´an´ı znamen´a sledov´an´ı vyuˇz´ıv´an´ı s´ıt’ov´ byla vysvˇetlena v u ´vodu. Uˇ ych sluˇzeb uˇzivateli. Tyto informace mohou b´ yt pouˇzity pro spr´avu, pl´anov´an´ı, u ´ˇctov´an´ı, nebo dalˇs´ı u ´ˇcely. ´ ctov´an´ı v re´aln´em ˇcase je doruˇceno souˇcasnˇe s vyuˇz´ıv´an´ım zdroj˚ Uˇ u. Bˇeˇznˇe se sb´ıraj´ı informace o identitˇe uˇzivatele, povaze dodan´ ych sluˇzeb a ˇcasy poˇc´atk˚ u a konc˚ u dodan´ ych sluˇzeb. Pokud bychom chtˇeli kontrolovat autentizaci, autorizaci a u ´ˇctov´an´ı pro celou lok´aln´ı ’ s´ıt , bylo by potˇreba tyto tˇri sluˇzby um´ıstit do jednoho uzlu, kter´ y bude dan´e ˇz´adan´e u ´daje ovˇeˇrovat a zaznamen´avat. K tomuto u ´ˇcelu se pouˇz´ıvaj´ı ovˇeˇrovac´ı servery, zapojen´e do s´ıtˇe a ukryt´e nˇekde hloubˇeji (viz obr´azek 4.1). V diplomov´e pr´aci jsem navrhoval autentizaˇcn´ı a autorizaˇcn´ı mechanismus, kter´ y vych´ az´ı z AAA sch´ematu. Informace uveden´e v t´eto kapitole slouˇzily jako inspirace pˇri n´avrhu tohoto mechanismu. Postup ovˇ eˇ rov´ an´ı (obr´ azek 4.1): ˇ ad´a pˇr´ıstupov´ • Klient ˇc. 2 je opr´avnˇen´ y uˇzivatel. Z´ y bod (AP) o pˇr´ıstup k s´ıti. AP se zept´a ovˇeˇrovac´ıho serveru, zda m´a klient ˇc. 2 povolen pˇr´ıstup k s´ıti. Ovˇeˇrovac´ı server odpov´ıd´a, ˇze uˇzivatel ˇc. 2 je opr´avnˇen´ ym uˇzivatelem. Pˇristupov´ y bod povol´ı uˇzivateli ˇc. 2 vstup do s´ıtˇe. ˇ ad´a pˇr´ıstupov´ • Klient ˇc. 3 je neopr´avnˇen´ y uˇzivatel. Z´ y bod (AP) o pˇr´ıstup k s´ıti. AP se zept´a ovˇeˇrovac´ıho serveru, zda m´a klient ˇc. 3 povolen pˇr´ıstup k s´ıti. Ovˇeˇrovac´ı server odpov´ıd´a, ˇze uˇzivatel ˇc. 3 nen´ı opr´avnˇen´ ym uˇzivatelem. Pˇristupov´ y bod zak´ aˇze uˇzivateli ˇc. 3 vstup do s´ıtˇe. Principu protokolu AAA vyuˇz´ıvaj´ı mnoh´e dalˇs´ı protokoly. Jsou pouˇzity napˇr´ıklad v lok´an´ıch ethernetov´ ych s´ıt´ıch, mobiln´ıch s´ıt´ıch a bezdr´atov´ ych s´ıt´ıch.
8
Obr´azek 4.1: autentizace pomoc´ı ovˇeˇrovac´ıho serveru
4.1
Radius
RADIUS (Remote Authentication Dial In User Service, ˇcesky Uˇzivatelsk´a vyt´aˇcen´a sluˇzba pro vzd´alenou autentizaci) je AAA protokol pouˇz´ıvan´ y pro pˇr´ıstup k s´ıti nebo pro IP mobilitu. Pˇri pˇripojen´ı k poskytovateli Internetu pomoc´ı vyt´aˇcen´eho pˇripojen´ı, DSL, nebo WiFi je u nˇekter´ ych poskytovatel˚ u vyˇzadov´ano pˇrihlaˇsovac´ı uˇzivatelsk´e jm´eno a heslo. Tato informace je posl´ana do takzvan´eho Network Access Server (NAS) zaˇr´ızen´ı pˇres Pointto-Point Protocol (PPP [15]). Pot´e je pˇred´ana RADIUS serveru pˇres RADIUS protokol. RADIUS server ovˇeˇr´ı pravost informace. Pokud je uˇzivatelsk´e jm´eno a heslo pˇrijato, server autorizuje pˇr´ıstup k poskytovateli internetu a vybere IP adresu a dalˇs´ı parametry spojen´ı. RADIUS server bude tak´e upozornˇen na spuˇstˇen´ı nebo ukonˇcen´ı sezen´ı, takˇze uˇzivatel m˚ uˇze platit pˇresnˇe podle tˇechto RADIUS informac´ı nebo mohou b´ yt tyto pouˇzity pro statistick´e u ´ˇcely. RADIUS byl p˚ uvodnˇe vyvinut spoleˇcnost´ı Livingston Enterprises pro jejich PortMaster s´erie Network Access Servers a pozdˇeji (1997) zveˇrejnˇeny jako RFC 2058 [13] a RFC 2059 [11] (souˇcasn´e verze jsou RFC 2865 [14] a RFC 2866 [12]). V souˇcasn´e dobˇe existuje nˇekolik komerˇcn´ıch a open-source RADIUS server˚ u. Vlastnosti se liˇs´ı, ale vˇetˇsina umoˇzn ˇuje dohled´avat uˇzivatele v textov´ ych souborech, LDAP serverech, r˚ uzn´ ych datab´az´ıch a podobnˇe. RADIUS proxy servery jsou pouˇz´ıv´any pro centr´aln´ı spr´avu a mohou pˇrepisovat RADIUS pakety za bˇehu.
9
Obr´azek 4.2: Radius paket
• K´od – definuje typ RADIUS paketu Nejˇcastˇejˇs´ı typy zpr´av v protokolu RADIUS: – Access-Request - klient protokolu RADIUS (pˇr´ıstupov´ y server) odes´ıl´a poˇzadavek na ovˇeˇren´ı uˇzivatele na RADIUS serveru. – Access-Accepted - RADIUS server sdˇeluje, ˇze uˇzivatel m˚ uˇze dostat povolen´ı ’ do s´ıtˇe. – Access-Reject - RADIUS server zam´ıt´a pˇr´ıstup do s´ıt’ˇe. – Access-Challenge - RADIUS server odes´ıl´a poˇzadavek pˇr´ıstupov´emu serveru, aby klient zadal jednor´azov´e heslo. • Identifik´ator – ˇc´ıslo zpr´avy • D´elka – d´elka paketu • Autentik´ator – slouˇz´ı pro autentizaci (je zde uloˇzen MD5 hash uˇzivatelsk´eho hesla) • Atributy – zde se zas´ılaj´ı r˚ uzn´e informace jako uˇzivatelsk´e jm´eno, heslo...
Autentizace obsahuje dva dialogy: 1. mezi uˇzivatelem a pˇr´ıstupov´ ym bodem a c´ılem je sestavit zpr´avu Access-Request 2. dialog protokolu RADIUS obsahuj´ıc´ı napˇr. zpr´avy Access-Request a Access-Accepted mezi pˇr´ı-stupov´ ym bodem a RADIUS serverem Pˇr´ıstupov´ y server si tak´e mus´ı b´ yt jist´ y, ˇze jedn´a s korektn´ım RADIUS serverem. M˚ uˇze nastat pˇr´ıpad, ˇze podvrˇzen´ y RADIUS server by povolil pˇr´ıstup do s´ıtˇe neopr´avnˇen´emu uˇzivateli. Proto RADIUS server do sv´e odpovˇedi vkl´ad´a ˇretˇezec, kter´ ym svou odpovˇed’ autorizuje. Autorizace prob´ıh´a na z´akladˇe sd´ılen´eho tajemstv´ı, kter´e zn´a pouze RADIUS server a pˇr´ıstupov´ y server. RADIUS je jako autentizaˇcn´ı protokol bˇeˇznˇe pouˇz´ıv´an v IEEE 802.1x bezpeˇcnostn´ım standardu [6] (ˇcasto pouˇz´ıv´an v bezdr´atov´ ych s´ıt´ıch). I kdyˇz nebyl RADIUS p˚ uvodnˇe vytvoˇren pro autentizaˇcn´ı metody v bezdr´atov´ ych s´ıt´ıch, vylepˇsuje zabezpeˇcen´ı ve spojen´ı s ostatn´ımi bezpeˇcnostn´ımi metodami jako EAP-PEAP. RADIUS je rozˇsiˇriteln´ y a vˇetˇsina v´ yrobc˚ u zaˇr´ızen´ı a software pouˇz´ıvaj´ı vlastn´ı RADIUS dialekty. V roce 2003 byl vytvoˇren n´avrh protokolu DIAMETER, kter´ y je pl´anov´an jako n´ahrada RADIUS protokolu.
10
4.2
Diameter
Hlavn´ı koncept tvoˇr´ı z´akladn´ı protokol (RFC 3588 [5]), kter´ y m˚ uˇze b´ yt rozˇs´ıˇren pro poskytov´an´ı AAA sluˇzeb nov´ ym pˇr´ıstupov´ ym technologi´ım. Pˇredch˚ udcem protokolu DIAMETER je protokol RADIUS (anglick´e diameter je ˇcesky pr˚ umˇer, coˇz je dvakr´at v´ıce neˇz polomˇer, anglicky radius). Diameter nen´ı pˇr´ımo zpˇetnˇe kompatibiln´ı, ale poskytuje rozˇs´ıˇrenou cestu pro RADIUS. Hlavn´ı rozd´ıly protokolu DIAMETER oproti protokolu RADIUS jsou: • pouˇz´ıv´a spolehliv´ y transportn´ı protokol (TCP nebo SCTP, nepouˇz´ıv´a nespolehliv´ y UDP) • podporuje pˇrenos RADIUS • m´a vˇetˇs´ı adresn´ı prostor pro dvojice hodnot atribut˚ u (anglicky Attribute Value Pairs, AVPs) a ˇsirˇs´ı identifik´atory (32bitov´e m´ısto 8bitov´ ych) • jde o klient-server protokol, s v´ yjimkou podpory nˇekter´ ych zpr´av inicializovan´ ych serverem • lze pouˇz´ıt stavov´ y i bezstavov´ y model • podporuje dynamick´e objevov´an´ı uzl˚ u (pouˇz´ıv´a DNS, SRV a NAPTR) • obsahuje schopnost vyjedn´av´an´ı • podporuje dohody na aplikaˇcn´ı vrstvˇe, definuje metody odol´avaj´ıc´ı chyb´am a stavov´e stroje (RFC 3539 [2]) • oznamuje chyby • m´a lepˇs´ı podporu roamingu • je snadnˇeji rozˇsiˇriteln´ y; lze definovat nov´e pˇr´ıkazy a atributy • je zarovn´an na 32bitov´e hranice • m´a z´akladn´ı podporu uˇzivatelsk´ ych sezen´ı a u ´ˇctov´an´ı
Z´ akladn´ı protokol Diametru Z´akladn´ı protokol Diameteru (Diameter Base Protocol) je definov´an v RFC 3588 [5]. Urˇcuje minim´aln´ı poˇzadavky AAA protokolu. Aplikace Diameteru mohou rozˇs´ıˇrit z´akladn´ı protokol pˇrid´an´ım nov´ ych pˇr´ıkaz˚ u nebo atribut˚ u. Aplikace zde nen´ı program, n´ ybrˇz protokol zaloˇzen´ y na Diameteru.
4.3
EAP
EAP (Extensible Authentication Protocol - RFC 2284 [3]) byl p˚ uvodnˇe urˇcen pouze pro ’ protokol PPP (Point-to-Point Protocol). Zajiˇst uje pro nˇej r´amec (transportn´ı mechanismus) pro vˇsechny druhy ovˇeˇrovac´ıch metod, nicm´enˇe nen´ı jeho ned´ılnou souˇc´ast´ı. Definice EAP 11
mimo PPP, do samo-statn´eho protokolu, umoˇznilo jeho pouˇzit´ı i v jin´ ych prostˇred´ıch. Napˇr. modifikace EAP definovan´a pod specifikac´ı IEEE 802.1x je v podstatˇe rozˇs´ıˇren´ı EAP pro s´ıtˇe typu 802. Protokol EAP s´am o sobˇe nezajist´ı bezpeˇcn´ y ovˇeˇrovac´ı mechanismus - ten se vyjedn´a aˇz protokolem EAP. Protokol EAP umoˇzn ˇuje pouˇz´ıt libovoln´ y ovˇeˇrovac´ı mechanizmus, kter´ y staˇc´ı implementovat na obou stran´ach spojen´ı. Toto umoˇzn ˇuje pomˇernˇe snadno vytv´aˇret nov´e modifikace protokolu. Protokol se v principu nemˇen´ı, jen ovˇeˇrovac´ı mechanismus mus´ı b´ yt zn´am´ y na obou stran´ach spojen´ı. Pokud se pouˇzije protokol EAP, pak se f´aze autentizace skl´ad´a: • dohoda na ovˇeˇrovac´ım mechanizmu • vlastn´ı autentizace Navazov´ an´ı spojen´ı 1. Pˇr´ıstupov´ y bod, kter´ y ovˇeˇruje totoˇznost klienta, zaˇsle zpr´avu EAP-Request. T´ım ˇz´ad´ a klienta o prok´az´an´ı totoˇznosti. 2. Pokud klient souhlas´ı - odpov´ıd´a zpr´avou EAP-Response. 3. Pˇr´ıstupov´ y bod zaˇsle zpr´avu EAP-Request v´ yzvu (Challenge) 4. Klient spoj´ı sd´ılen´e tajemstv´ı (heslo) s v´ yzvou a minim´alnˇe aplikuje jednocestnou funkci MD5 a v´ ysledek vloˇz´ı do odpovˇedi EAP-Response. 5. Pˇr´ıstupov´ y bod ovˇeˇr´ı totoˇznost klienta a odpov´ı EAP-Succes/EAP-Failure (potvrd´ı/zam´ıtne). Nejˇ castˇ ejˇ s´ı typy ovˇ eˇ rovac´ıch mechanism˚ u: • EAP-MD5 (RFC 1994, RFC 2284) Pro ovˇeˇrov´an´ı je pouˇz´ıv´ano uˇzivatelsk´e jm´eno a heslo. Tyto u ´daje jsou pro zajiˇstˇen´ı pravosti hashov´any pomoc´ı MD5. Jedn´a se o p˚ uvodn´ı specifikaci s jednocestn´ ym ovˇeˇrov´an´ım. Tento zp˚ usob ovˇeˇrov´an´ı nen´ı vhodn´ y u bezdr´atov´ ych s´ıt´ı - hroz´ı riziko odposlouch´an´ı. • EAP-TLS (RFC 2716) Transport Level Security Pro ovˇeˇrov´an´ı pouˇzito PKI (Public Key Infrastructure) a SSL (Secure Sockets Layer), mechanismus ovˇeˇrov´an´ı je zaloˇzen na pouˇzit´ı ovˇeˇren´ı serveru na z´akladˇe certifik´atu serveru a ovˇeˇren´ı uˇzivatele na z´akladˇe certifik´atu uˇziva-tele. Kl´ıˇce jsou generov´any dynamicky. Zpr´avy jsou chr´anˇen´e pˇred naslouch´an´ım TLS (Transport Layer Security) tunelem. Nev´ yhoda - udrˇzov´an´ı PKI certifik´at˚ u pro klienta a server. Vhodn´e pro WLAN - TSL tunel chr´an´ı pˇrenos pˇred odposlechem. • EAP-TTLS (Tunneled TLS); rozˇs´ıˇren´ı modifikace EAP-TLS, ale bez pouˇzit´ı certifik´at˚ u. Klient se prokazuje jm´enem a heslem. Vhodn´e tam, kde jsou poˇzadavky na bezpeˇcnost bez pouˇzit´ı spoleˇcn´ ych certifik´at˚ u. • EAP-PEAP (Protected EAP); podobn´ y TTLS, zajiˇst’uje TLS k vytvoˇren´ı tunelu pro druh´ y ovˇeˇrovac´ı algoritmus, ten je typu EAP. EAP-PEAP dovoluje dalˇs´ım EAP ovˇeˇrovac´ım protokol˚ um pouˇz´ıvat zabezpeˇcuj´ıc´ı pˇrenos TLS tunelem. 12
• EAP-LEAP (Lightweight Extensible Authentication Protocol); Navrˇzeno firmou Cisco. Podporuje vz´ajemn´e ovˇeˇren´ı klienta a s´ıtˇe. Podobn´e jako EAP-TLS, ale m´ısto certifik´at˚ u pouˇz´ıv´a jm´eno a heslo. • EAP-OTP One-Time Password Ovˇeˇrov´an´ı je zajiˇst’ov´ano pomoc´ı syst´em˚ u typu RSA SecureID, CRYPTOCard Token,... • EAP-GTC (Generic Token Card) Obdoba EAP-OTP. • EAP-AKA - Authentication and Key Agreement Pouˇzit´ı v UMTS s´ıt´ıch. • EAP-SKE - Shared Key Exchange • EAP-GPRS - modifikace pro GPRS
4.4
802.1x
R´amec 802.1x nepatˇr´ı pˇr´ımo do rodiny protokol˚ u AAA, ale lze na nˇem demonstrovat principy AAA protokolu. IEEE 802.1x je obecn´ y bezpeˇcnostn´ı r´amec pro vˇsechny typy LAN, zahrnuj´ıc´ı autentizaci uˇzivatel˚ u, integritu zpr´av (ˇsifrov´an´ım) a distribuci kl´ıˇc˚ u. Protokol 802.1x m´a za c´ıl blokovat pˇr´ıstup k segmentu lok´aln´ı s´ıtˇe pro neopr´avnˇen´e uˇzivatele. Je zaloˇzen´ y na protokolu Extensible Authentication Protocol (EAP, RFC 2284 [3]). Jedn´a se o mechanizmus pˇrenosu EAP paket˚ u prostˇrednictv´ım spojov´e vrstvy LAN (typu 802) - zpr´avy EAP se zapouzdˇruj´ı do r´amc˚ u 802.1x. Jednou z kl´ıˇcov´ ych vlastnost´ı 802.1x je to, ˇze pˇr´ıstupov´ y bod – NAS (network access server) m˚ uˇze b´ yt v podstatˇe jednoduch´ y. Veˇsker´a inteligence je v klientovi a ovˇeˇrovac´ım serveru. To je pro pˇr´ıstupov´e body ide´aln´ı, protoˇze jsou typicky pomˇernˇe jednoduch´e s malou pamˇet´ı a v´ ykonem procesoru. Ovˇeˇrov´an´ı prov´ad´ı pˇr´ıstupov´ y bod pro klienty na z´akladˇe jejich v´ yzvy pomoc´ı seznamu nebo extern´ıho autentizaˇcn´ıho syst´emu (serveru Kerberos nebo RADIUS). Pouze ovˇeˇren´ y uˇzivatel m´a moˇznost pˇr´ıstupu do s´ıtˇe. Postup autentizace podle 802.1x - obr´azek 4.3 (je uvaˇzov´an jen jednoduch´ y ovˇeˇrovac´ı algoritmus jednocestnou funkc´ı MD5) Postup ovˇ eˇ rov´ an´ı: 1. 1. Klient pos´ıl´a poˇzadavek pˇr´ıstupov´emu serveru (tj. switch nebo bezdr´atov´ y pˇr´ıstupov´ y bod), ˇze se chce pˇrihl´asit do s´ıtˇe (EAPOL-Start). 2. Pˇr´ıstupov´ y server pos´ıl´a klientovi poˇzadavek na ovˇeˇren´ı totoˇznosti (EAP-Request/ Identity). Pokud pˇr´ıstupov´ y server (Network Acces Server - NAS) detekuje pˇr´ıtomnost klienta, tak zaˇsle poˇzadavek na ovˇeˇren´ı bez ˇcek´an´ı na kontakt od klienta. 3. Klient pos´ıl´a pˇr´ıstupov´emu serveru informaci o sv´e totoˇznosti (EAP-Response/Identity). Pˇr´ıstupov´ y server ji pˇrebal´ı z EAP do RADIUS protokolu a posune ji na RADIUS server.
13
Obr´azek 4.3: 802.1x autentizace
4. RADIUS server pos´ıl´a zpˇet na pˇr´ıstupov´ y server v´ yzvu pro ovˇeˇren´ı (challenge). Pˇr´ıstupov´ y server pˇrebal´ı zpr´avu z form´atu RADIUS do EAPOL a poˇsle ji klientovi . Rozd´ıln´e ovˇeˇrovac´ı metody maj´ı r˚ uzn´e mnoˇzstv´ı paket˚ u v t´eto ˇc´asti procesu . EAP podporuje jak jednoduch´e ovˇeˇren´ı klienta tak i siln´e vz´ajemn´e ovˇeˇrov´an´ı. 5. Klient na v´ yzvu odpov´ıd´a napˇr. tak, ˇze k v´ yzvˇe pˇrid´a sv´e heslo a tento ˇretˇezec zaˇsifruje hash funkc´ı. Zaˇsifrovanou zpr´avu pos´ıl´a jako odpovˇed’ na pˇr´ıstupov´ y server. Ten ji pˇrepoˇsle d´al na RADIUS server. 6. RADIUS server zkontroluje u ´daje a odpov´ı zpr´avou o u ´spˇeˇsnosti/ne´ uspˇeˇsnosti, kter´ a je pˇreposl´ana klientovi. Pˇr´ıstupov´ y server umoˇzn´ı (neumoˇzn´ı) pˇr´ıstup do s´ıtˇe - s moˇznost´ı restrikc´ı na z´akladˇe atribut˚ u od RADIUS serveru. Napˇr´ıklad pˇriˇrad´ı klienta do konkr´etn´ı VLAN nebo nastav´ı filtrovac´ı pravidla.
14
Architektura 802.1x Jak jiˇz bylo ˇreˇceno EAP protokol zajiˇst’uje pouze transportn´ı mechanismus pro ovˇeˇrov´ an´ı - t´ım je umoˇznˇeno vytv´aˇret nov´e modifikace protokolu - obr´azek 4.4.
Obr´azek 4.4: architektura
• vrstva ovˇeˇrovac´ı metody - ˇreˇs´ı konkr´etn´ı metodu ovˇeˇren´ı uˇzivatele (viz. protokol EAP) • 801.1x vrstva - zajiˇstˇen´ı pravidel pro komunikaci komponentami syst´emu (supplicant, authenticator a authentication server) • Linkov´a vrstva - uzp˚ usoben´ı konkr´etn´ı LAN technologii (definice specifick´ ych r´amc˚ u)
4.5
Shrnut´ı
V t´eto kapitole byly rozebr´any principy AAA protokolu a byly zde zm´ınˇeny aplikace pouˇz´ıvaj´ıc´ı pˇr´ıstup AAA sch´ematu. C´ılem diplomov´e pr´ace byl n´avrh autentizaˇcn´ıho mechanismu pomoc´ı d˚ uvˇeryhodn´eho serveru. Tento server mˇel v podstatˇe splˇ novat z´akladn´ı poˇzadavky AAA sch´ematu. Proto jsem pro roli d˚ uvˇeryhodn´eho serveru vybral server Radius.
15
Kapitola 5
Autentizace pomoc´ı syst´ emu Kerberos Kerberos je jak protokol tak i syst´em zajiˇst’uj´ıc´ı autentizaci a autorizaci uˇzivatel˚ u. Je definov´an standardem IETF RFC 1510 [9] a tvoˇr´ı z´akladn´ı autenizaˇcn´ı prvek v ˇradˇe komerˇcn´ıch i open-source syst´em˚ u. Kerberos je navrˇzen tak, aby zajiˇst’oval siln´e zabezpeˇcen´ı souˇcasnˇe s jednoduch´ ym uˇzivatelsk´ ym rozhran´ım. Zp˚ usob autentizace je zaloˇzen na pouˇzit´ı tzv. l´ıstk˚ u vyd´avan´ ych centr´aln´ım autentizaˇcn´ım serverem, kter´ y spravuje datab´azi vˇsech uˇzivatel˚ u. L´ıstky jsou analogick´e napˇr. certifik´at˚ um veˇrejn´ ych kl´ıˇc˚ u, ale narozd´ıl od nich jsou kerberovsk´e l´ıstky a vˇsechny kerberovsk´e protokoly zaloˇzeny v´ yhradnˇe na pouˇzit´ı symetrick´e kryptografie, tj. hesla sd´ılen´eho mezi uˇzivatelem a centr´aln´ım autentizaˇcn´ım serverem. Kerberovsk´e l´ıstky maj´ı tak´e kratˇs´ı dobu platnosti (zpravidla deset hodin) a vˇzdy obsahuj´ı informaci, pro kterou konkr´etn´ı koncovou sluˇzbu jsou urˇceny. Syst´em Kerberos ve vztahu k diplomov´e pr´aci slouˇzil jako inspirace. Byly na nˇem zkoum´any autentizaˇcn´ı postupy a principy. Pˇri implementaci byl pouˇzit pro anal´ yzu zdrojov´ ych k´od˚ u aplikac´ı pouˇz´ıvaj´ıc´ıch autentizaci pomoc´ı d˚ uvˇeryhodn´e tˇret´ı strany.
Historie Prvn´ı verze byly vyvinuty v r´amci projektu Athena v letech 1983-1991 v laboratoˇr´ıch MIT (Massachusetts Institute of Technology) a prvn´ı veˇrejnou verz´ı byla verze v4. Po zhruba ˇsestilet´em v´ yvoji a upravov´an´ı na z´akladˇe zkuˇsenost´ı uˇzivatel˚ u vznikla verze v5, kter´a se v souˇcasnosti pouˇz´ıv´a.
5.1
Protokol Kerberos
Hlavn´ı ˇc´ast´ı syst´emu Kerberos je KDC (Key Distribution Center), kter´e je d˚ uvˇeryhodnou tˇret´ı stranou umoˇzn ˇuj´ıc´ı bezpeˇcnou autentizaci a autorizaci. KDC bezpeˇcnˇe uchov´av´a data o uˇzivatel´ıch a sluˇzb´ach v s´ıti.
16
KDC se dˇ el´ı na dva subsyst´ emy: • AS - autentizaˇcn´ı server, zajiˇst’uje autentizaci a autorizaci uˇzivatel˚ u a sluˇzeb • TGS - Ticket Grantig Server, zajiˇst’uje pˇridˇelov´an´ı opr´avnˇen´ı - l´ıstk˚ u - k pouˇzit´ı zdroje (sluˇzby) D´ale v syst´emu vystupuj´ı klientsk´e aplikace a servery, na nichˇz bˇeˇz´ı sluˇzby. Pˇri pˇr´ıstupu ke sluˇzbˇe je potˇreba ovˇeˇrit autentizaˇcn´ı u ´daje klienta serverem AS, kter´ y mu po u ´spˇeˇsn´e autentizaci vyd´a l´ıstek umoˇzn ˇuj´ıc´ı poˇz´adat TGS o udˇelen´ı pˇr´ıstupu ke sluˇzbˇe. Jakmile ho klient obdrˇz´ı a prok´aˇze se j´ım poˇzadovan´e sluˇzbˇe, kter´a ovˇeˇr´ı jeho platnost, m˚ uˇze b´ yt sluˇzba pouˇz´ıv´ana po dobu platnosti tohoto l´ıstku.
Proces autentizace a autorizace - viz. obr´ azek 5.1
Obr´azek 5.1: autentizace a autorizace pomoc´ı protokolu kerberos
17
1. Klientsk´ y proces si vyˇz´ad´a uˇzivatelsk´e jm´eno, kter´e poˇsle v nezaˇsifrovan´e podobˇe AS (tzn. klient t´ımto ˇz´ad´a o pˇridˇelen´ı TGT). AS m´a centr´aln´ı datab´azi uˇzivatel˚ ua sluˇzeb, kde se nal´ez´a heslo uˇzivatele, kter´e mus´ı b´ yt shodn´e s heslem zn´am´ ym na stranˇe klienta. 2. AS pˇrijme tuto ˇz´adost (vˇetˇsinou tyto ˇz´adosti ukl´ad´a kv˚ uli vˇetˇs´ı bezpeˇcnosti do cache), n´aslednˇe podle uˇzivatelsk´eho jm´ena vyhled´a v centr´aln´ı datab´azi heslo uˇzivatele a z nˇej vygeneruje doˇcasn´ y kl´ıˇc - session-key. Vygeneruje d´ale tzv. TGT l´ıstek - Ticket Granting Ticket, kter´ y obsahuje: uˇzivatelsk´e jm´eno, jm´eno TGS serveru (vyd´av´a opr´avnˇen´ı pouˇz´ıt zdroj), s´ıt’ovou adresu klienta, session-key Tento TGT l´ıstek je pot´e zaˇsifrov´an pomoc´ı tajn´eho kl´ıˇce, kter´ y je bezpeˇcnˇe sd´ılen pouze AS a TGS. 3. AS pos´ıl´a klientsk´emu procesu tento TGT l´ıstek a spolu s n´ım mu pos´ıl´a tak´e dvojici: session-key, n (nonce, n´ahodn´ y identifik´ator ˇci timestamp kv˚ uli zv´ yˇsen´ı bezpeˇcnosti). Tato dvojice je zaˇsifrov´ana klientsk´ ym (uˇzivatelsk´ ym) heslem uloˇzen´ ym v centr´aln´ı datab´azi AS. 4. Klientsk´ y proces pomoc´ı kl´ıˇce vygenerovan´eho ze sv´eho uˇzivatelsk´eho hesla deˇsifruje tuto dvojici a z´ısk´a tak session-key a m˚ uˇze tak´e zkontrolovat platnost n. Klient tedy nyn´ı vlastn´ı TGT a session-key, kter´e budou d´ale pouˇzity v komunikaci s TGS. To, ˇze klient spr´avnˇe deˇsifruje a z´ısk´a session-key, v podstatˇe znamen´a u ´spˇeˇsnou autentizaci v˚ uˇci AS. 5. Klientsk´ y proces ˇz´ad´a nyn´ı o pouˇzit´ı sluˇzby t´ımto zp˚ usobem: vytvoˇr´ı si tzv. autentifik´ator, kter´ y obsahuje (username,useraddress,timestamp), timestamp ud´av´a ˇcas vytvoˇren´ı autentifik´atoru a jeho platnost. Tento autentifik´ator je zaˇsifrov´an pomoc´ı session-key a odesl´an TGS spolu s ˇz´adost´ı o vyuˇzit´ı poˇzadovan´e sluˇzby a TGT l´ıstkem. 6. TGS pˇrijme tyto u ´daje a pomoc´ı kl´ıˇce, kter´ y bezpeˇcnˇe sd´ıl´ı s AS deˇsifruje TGT l´ıstek, z nˇehoˇz z´ısk´a session-key. Pomoc´ı tohoto kl´ıˇce deˇsifruje autentifik´ator a zkontroluje jestli souhlas´ı informace na TGT l´ıstku (username,useraddress) a v autentifik´atoru. D´ale zkontroluje jeho platnost - timestamp. 7. Po kladn´em ovˇeˇren´ı generuje nov´ y l´ıstek = povˇeˇren´ı pouˇz´ıt poˇzadovanou sluˇzbu bˇeˇz´ıc´ı na serveru S. TGS generuje nov´ y kl´ıˇc TGS-session-key, kter´ y bude pouˇzit v komunikaci klienta a serveru S. TGS vytvoˇr´ı l´ıstek (username,useraddress,timestamp), kter´ y zaˇsifruje pomoc´ı kl´ıˇce TGS-session-key a odeˇsle jej klientsk´emu procesu spolu s nov´ ym TGS-session-key ˇsifrovan´ ym pomoc´ı session-key. 8. Klient tyto l´ıstky deˇsifruje pomoc´ı session-key a tak z´ısk´a TGS-session-key. Vlastn´ı tedy tento kl´ıˇc a souˇcasnˇe l´ıstek opravˇ nuj´ıc´ı pouˇz´ıt sluˇzbu serveru S. 9. Klientsk´ y proces vytv´aˇr´ı dalˇs´ı autentifik´ator (username,useraddress,timestamp) ˇsifrovan´ y pomoc´ı TGS-session-key a pos´ıl´a jej na server S, kde bˇeˇz´ı poˇzadovan´a sluˇzba. 10. Server S ovˇeˇr´ı u ´daje z autentifik´atoru tak, ˇze deˇsifruje l´ıstek kl´ıˇcem, kter´ y sd´ıl´ı s TGS. Z´ısk´a z nˇej TGS-session-key, kter´ ym deˇsifruje autentifik´ator a zkontroluje zda u ´daje souhlas´ı.
18
Shrnut´ı V t´eto kapitole byl pops´an protokol Kerberos a proces autentizace pomoc´ı syst´emu Kerberos. V dalˇs´ı pr´aci byl pouˇzit jako inspirace pro n´avrh autentizaˇcn´ıho mechanismu. Byl rovnˇeˇz vyuˇzit´ y pro anal´ yzu zdrojov´ ych k´od˚ u aplikac´ı pouˇz´ıvaj´ıc´ıch autentizaci pomoc´ı d˚ uvˇeryhodn´e tˇret´ı strany.
19
Kapitola 6
Programov´ e n´ astroje pro autentizaci Kaˇzd´a spr´avnˇe navrhnut´a aplikace by se mˇela skl´adat z hierarchicky strukturovan´ ych vrstev, kter´e by mˇely zajiˇst’ovat specifickou funkˇcnost. Tyto vrstvy mezi sebou mus´ı komunikovat pˇres jasnˇe definovan´e rozhran´ı. Tento pˇr´ıstup m´a ˇradu v´ yhod a mezi nejd˚ uleˇzitˇejˇs´ı patˇr´ı: • Odst´ınˇen´ı implementaˇcn´ıch detail˚ u niˇzˇs´ıch vrstev pˇred vrstvami vyˇsˇs´ımi – poskytuje vyˇsˇs´ım vrstv´am abstraktn´ı pohled. • Niˇzˇs´ı vrstvy nejsou nijak sv´az´any s vrstvami vyˇsˇs´ımi. O jejich existenci nevˇed´ı a nijak se na nˇe neodvol´avaj´ı. • Zv´ yˇsen´ı pˇrehlednosti cel´e aplikace, kter´a je pˇrehlednˇe rozdˇelena na jednotliv´e funkˇcn´ı celky. • Jednoduch´e rozˇsiˇrov´an´ı funkˇcnosti aplikac´ı pˇrid´an´ım nov´e niˇzˇs´ı vrstvy. Ide´aln´ı stav by byl, pokud by aplikace se stejn´ ym zamˇeˇren´ım (napˇr. s´ıt’ov´e aplikace s poˇzadavkem autentizace uˇzivatele) vyuˇz´ıvaly totoˇznou hierarchickou strukturu vrstev a jejich rozhran´ı. Liˇsily by se pouze ve funkˇcnosti jednotliv´ ych vrstev. Rozhran´ı by st´ale z˚ ustalo stejn´e. Toto by napˇr´ıklad umoˇznilo jednoduchou implementaci nov´eho autentizaˇcn´ıho mechanismu do vˇsech existuj´ıc´ıch aplikac´ı. Avˇsak dodrˇzen´ı t´eto podm´ınky je nere´aln´e. Kaˇzd´a rodina aplikac´ı pouˇz´ıv´a svoje vlastn´ı definovan´e vrstvy. Proto je nutn´e abych si vybral pro ˇreˇsen´ı diplomov´e pr´ace pr´avˇe jednu takovou skupinu aplikac´ı. Prozkoumal jej´ı vrstvy a rozhran´ı a modifikoval aplikace tak, aby byly schopny autentizovat uˇzivatele novˇe navrhnut´ ym mechanismem. Pro konkr´etn´ı pˇr´ıpad studia autentizaˇcn´ıho rozhran´ı aplikac´ı jsem vybral komunikaci mezi poˇstovn´ım serverem imapd a emailov´ ym klientem pine.
6.1
Aplikace vybran´ e pro anal´ yzu
University of Washington (d´ale UW) a jej´ı fakulta Poˇc´ıtaˇc˚ u a Komunikac´ı se zab´ yv´a jiˇz ’ dlouhou dobu v´ yzkumem a v´ yvojem s´ıt ov´ ych aplikac´ı. Jiˇz v roce 1989 lid´e z univerzity vytvoˇrili zn´am´eho emailov´eho klienta pine. D´ale vytvoˇrili i emailov´e servery POP2, POP3 a IMAP, kter´e st´ale aktualizuj´ı a pˇrizp˚ usobuj´ı poˇzadavk˚ um modern´ı doby. 20
Jedn´ım z poˇzadavk˚ u byla i podpora nov´ ych autentizaˇcn´ıch protokol˚ u. Proto v dneˇsn´ı dobˇe vˇsechny aplikace vytvoˇren´e washingtonskou univerzitou podporuj´ı ˇsirokou ˇsk´alu tˇechto protokol˚ u. Mezi nejd˚ uleˇ zitˇ ejˇ s´ı autentizaˇ cn´ı mechanismy patˇ r´ı: • ovˇeˇren´ı pomoc´ı unixov´eho hesla • ovˇeˇren´ı pomoc´ı PAM modulu • ovˇeˇren´ı pomoc´ı syst´emu Kerberos Z poslednˇe zm´ınˇen´eho syst´emu Kerberos jsem vych´azel pˇri anal´ yze autentizaˇcn´ıch mechanism˚ u implementovan´ ych v aplikac´ıch University of Washington. Jednalo se konkr´etnˇe o bal´ıˇcek imap2006e (Pˇr´ıloha A), kter´ y obsahuje aplikace imapd, pop2d a pop3d a bal´ıˇcek pine4.64 (Pˇr´ıloha A), kter´ y obsauje emailov´eho klienta pine. Tyto aplikace jsem rovnˇeˇz vyuˇzil pro implementaci novˇe navrhnut´eho autentizaˇcn´ıho mechanismu a demonstroval jsem na nich jeho funkˇcnost.
6.2
Instalace a konfigurace syst´ emu pro anal´ yzu
Jak jiˇz bylo zm´ınˇeno, aplikace UW z bal´ıˇcku imap2006e a pine4.64 obsahuj´ı stejn´e programov´e rozhran´ı pro autentizaˇcn´ı moduly. Proto nebylo nutn´e zkoumat vˇsechny aplikace pˇr´ıtomn´e v tomto bal´ıˇcku ale staˇcilo vybrat jen dvˇe pro komunikaci klient-server. Pro anal´ yzu a implementaci jsem vybral jako klientskou aplikaci emailov´eho klienta pine a jako poˇstovn´ı server slouˇzil imapd.
Instalace C´ılem instalace bylo rozbˇehnut´ı poˇstovn´ıho IMAP serveru. Autentizace byla poˇzadov´ana pˇres syst´em Kerberos. Proto jsem k instalaci vybral n´asleduj´ıc´ı bal´ıˇcky: • postfix2.3.3-2- jako SMTP server • imap2006e- jehoˇz souˇc´ast´ı je IMAP server • krb51.6.1- syst´em Kerberos • pine emailov´ y klient Aby byl postup instalace jednoduˇse opakovateln´ y, provedl jsem instalaci syst´emu na virtu´aln´ım stroji aplikace VMware Player (Pˇr´ıloha A). Jako operaˇcn´ı syst´em poslouˇzila linuxov´a distribuce Fedora6 (Pˇr´ıloha A).
21
Seznam bal´ıˇck˚ u potˇrebn´ ych pro instalaci syst´emu (detailn´ı postup instalace je pops´an v pˇr´ıloze A): poˇ stovn´ı server postfix postfix-2.3.3-2 pcre-6.6-1.1 maildop-2.0.3 (verze 2.0.4 zp˚ usobovala probl´emy) Kerberos gcc-4.1.1-51 gcc-c++-4.1.1-51 openssl-0.9.8e (verze 0.9.8b zp˚ usobovala probl´emy) ncurses-5.6 byacc-1.9-29.2.2 flex-2.5.4a-41 libsepol-1.14 checkpolicy-1.34.1 libselinux-1.34.7 Linux-PAM-0.99.7.1 krb5-1.6.1 imap server xinetd-2.3.14-8 imap-2006e emailov´ y klient pine pine-4.64
Konfigurace Provedl jsem jednoduchou konfiguraci poˇstovn´ıho serveru a syst´emu Kerberos (popis konfigurace je v pˇr´ıloze B). Jednotliv´e syst´emy se konfigurovaly bud’ pomoc´ı konfiguraˇcn´ıch soubor˚ u, nebo jako v pˇr´ıpadˇe IMAP serveru zmˇenou parametr˚ u pˇri kompilaci aplikace.
6.3
Kerberizovan´ e aplikace
Chceme-li pouˇz´ıvat autentizaci pomoc´ı syst´emu Kerberos, mus´ı b´ yt na klientsk´em poˇc´ıtaˇci nainstalov´an klient syst´emu Kerberos. Tento bal´ıˇcek obsahuje samostatn´e nez´avisl´e aplikace (kinit, klist, kdestroy, kpasswd), kter´e udrˇzuj´ı informace o l´ıstc´ıch (viz. Kerberos 5) a zprostˇredkov´avaj´ı komunikaci mezi uˇzivatelem a serverem Kerberos. D´ale jsou v bal´ıˇcku obsaˇzeny sd´ılen´e knihovny, pˇres kter´e mohou aplikace komunikovat se serverem Kerberos. Vyuˇzit´ı tˇechto knihoven nen´ı pro program´atora aplikace povinn´e, ale usnadˇ nuje mu v´ yraznˇe pr´aci. Tyto knihovny zajiˇst’uj´ı autentizaci a autorizaci klienta v˚ uˇci serveru a informace o u ´spˇechu ˇci ne´ uspˇechu operace pˇred´avaj´ı v´ yˇse aplikaci.
22
6.4
Programov´ e rozhran´ı aplikac´ı
Vˇsechny aplikace z bal´ıˇcku imap2006e obsahuj´ı jednotn´e autentizaˇcn´ı vrstvy, kter´e ud´avaj´ı metodu autentizace a jej´ı zp˚ usob proveden´ı. Pokud se jedn´a o autentizaci pˇres syst´em Kerberos, mohou se jednotliv´e vrstvy seˇradit hierarchicky v n´asleduj´ıc´ım poˇrad´ı.
Obr´azek 6.1: Hierarchie autentizaˇcn´ıch vrstev Jak je vidˇet z obr´azku 6.1, v´ ybˇer zp˚ usobu autentizace je ekvivalentn´ı pouˇzit´emu autentik´atoru (pro syst´em Kerberos: GSSAPI nebo PAM modul). U jin´ ych aplikac´ı je ˇclenˇen´ı autentizaˇcn´ıch mechanism˚ u podobn´e a stoj´ı proto za zm´ınku jeˇstˇe nativn´ı podpora Kerbera. Vˇsechny d˚ uleˇzit´e vrstvy (AUTHENTICATOR, GSSAPI, nativn´ı podpora, PAM) budou vysvˇetleny d´ale v textu.
Struktura Authenticator (UW) Toto jednotn´e rozhrann´ı bylo vytvoˇreno UW za u ´ˇcelem v´ ybˇeru autentizaˇcn´ıho mechanismu. Jak jiˇz bylo zm´ınˇeno, autentizaˇcn´ı mechanismus m˚ uˇze b´ yt ovˇeˇren´ı pomoc´ı unixov´eho hesla, PAM modulu nebo syst´emu Kerberos. Pokud se pod´ıv´ame na Authenticator z pohledu program´atora, jedn´a se o strukturu v jazyce C, kter´a obsahuje informace o autentizaˇcn´ı metodˇe a ukazatele na funkce, kter´e autentizaci na stranˇe klienta a serveru prov´adˇej´ı. Abych uk´azal konkr´etn´ı pˇr´ıklad authentik´atoru, demonstroval jsem vˇse na pˇr´ıkladu autentizace pomoc´ı GSSAPI. Samotn´ y Authenticator je struktura: AUTHENTICATOR { long flags; char *name; authcheck_t valid; authclient_t client; authserver_t server; AUTHENTICATOR *next; };
-
pˇr´ıznaky autentik´atoru jm´eno autentik´atoru adresa ovˇeˇrovac´ı funkce adresa klientsk´e funkce adresa serverov´e funkce ukazatel na dalˇs´ı autentik´ator
23
V pˇr´ıpadˇe autentik´atoru pro metodu GSSAPI bude struktura definovan´a n´asledovnˇe: AUTHENTICATOR auth_gss = { AU_SECURE | AU_AUTHUSER, ‘‘GSSAPI’’, auth_gssapi_valid, auth_gssapi_client, auth_gssapi_server, NIL }; parametr auth_gss
AU_SECURE AU_AUTHUSER AU_HIDE AU_SECURE
v´ yznam jm´eno autentizaˇcn´ı metody, kter´a byla vybr´ana pˇred samotn´ ym pˇrekladem aplikace. Jm´eno metody se skl´ad´a z prefixu “auth_” + “gss”. Hodnota “gss” odpov´ıd´a metodˇe autentizace vybran´e v hlavn´ım Makefile jako hodnota parametru PASSWDTYPE pˇr´ıznaky autentik´atoru. Pomoc´ı logick´eho souˇctu m˚ uˇze b´ yt vybr´ana kombinace v´ıce moˇznost´ı
bezpeˇcn´ y autentik´ator, autentik´ator zajiˇst’uj´ıc´ı bezpeˇcnou v´ ymˇenu hesel a bezpeˇcnou autentizaci AU_AUTHUSER obousmˇern´a autentizace AU_HIDE skryt´ y autentik´ator, metoda autentizace nebude zobrazena uˇzivateli ani serveru auth_gssapi_valid ovˇeˇren´ı, zda je metoda autentizace dostupn´a na obou stran´ach (klient-server) auth_gssapi_client autentizaˇcn´ı funkce pro klienta auth_gssapi_server autentizaˇcn´ı funkce pro server. Nejprve se vol´a funkce auth_gssapi_server na stranˇe serveru. To zp˚ usob´ı zavol´an´ı funkce auth_gssapi_client na stranˇe klienta. D´ale bˇeˇz´ı tyto funkce soubˇeˇznˇe a ovˇeˇruj´ı autentizaˇcn´ı u ´daje. Na konci vrac´ı u ´daje o u ´spˇechu/ne´ uspˇechu autentizace. Cel´ y proces komunikace je zn´azornˇen na obr´azku 6.2 Funkce auth_gssapi_valid, auth_gssapi_client a auth_gssapi_server mus´ı m´ıt tak´e pˇresnˇe definovan´e parametry. long auth_gssapi_valid (void);
24
Obr´azek 6.2: Atentizace GSSAPI - ˇcasov´ y diagram
long auth_gssapi_client ( authchallenge_t challenger, authrespond_t responder, char *service, NETMBX *mb, void *stream, unsigned long *trial, char *user );
-
funkce, pˇrij´ımaj´ıc´ı pˇr´ıchoz´ı zpr´avy funkce, odes´ılaj´ı zpr´avy n´azev sluˇzby (IMAP, POP3...) emailov´a schr´anka, kterou chceme otevˇr´ıt aktu´aln´ı spojen´ı mezi klientem a serverem poˇcet zb´ yvaj´ıc´ıch pokus˚ u o pˇrihl´aˇsen´ı jm´eno uˇzivatele
char *auth_gssapi_server ( authresponse_t responder, - funkce odes´ılaj´ıc´ı a pˇrij´ımaj´ıc´ı zpr´avy int argc, - poˇcet parametr˚ u pˇr´ıkazov´e ˇr´adky char *argv[] - pole parametr˚ u pˇr´ıkazov´e ˇr´adky );
25
Nativn´ı podpora Aplikace si ˇr´ıd´ı komunikaci se serverem Kerbera sama. Vˇsechny n´aleˇzitosti jako z´ısk´an´ı a distribuce l´ıstk˚ u je plnˇe v moci aplikace. Toto ˇreˇsen´ı nen´ı obsaˇzeno v aplikac´ıch UW, ale je pˇr´ıtomno v bal´ıˇcku, kter´ y nab´ız´ı Massachusetts Institute of Technology (MIT) (zde byl syst´em Kerberos vytvoˇren).
Rozhran´ı GSSAPI GSSAPI (Generic Security Services Application Programming Interface) RFC 2744 [16] je generick´e aplikaˇcn´ı rozhrann´ı poskytuj´ıc´ı autentizaci klient-server. Jedn´a se pouze o mezivrstvu mezi aplikac´ı a autentizaˇcn´ım protokolem. Smyslem GSSAPI je poskytnout aplikaci jednotn´e programov´e rozhran´ı k r˚ uzn´ ym autentizaˇcn´ım metod´am (prakticky mnohem detailnˇejˇs´ı definici rozhran´ı AUTHENTICATOR vytvoˇren´eho v UW). V praxi se pouˇz´ıv´ a pr´avˇe pro autentizaci pomoc´ı Kerbera. V d˚ usledku toho, kdyˇz se o aplikaci prohl´as´ı, ˇze podporuje GSSAPI, tak se mysl´ı, ˇze podporuje syst´em Kerberos. Mezi nejd˚ uleˇzitˇejˇs´ı funkce GSSAPI patˇr´ı: gss_acquire_cred - server zas´ıl´a poˇzadavek na z´ısk´an´ı tzv. gss-api credential. Credential ke struktura s jedineˇcn´ ym ID. Tato struktura obsahuje informace o autentizaˇcn´ıch mechanismech klienta (v naˇsem pˇr´ıpadˇe pine). Server porovn´a dostupn´e mechanismy klienta se sv´ ymi a nab´ıdne klientovi pouˇzit´ı spoleˇcnˇe zn´am´ ych mechanism˚ u (ve v´ ysledku nab´ız´ı vˇetˇsinou autentizaci syst´emem Kerberos). gss_release_cred - zruˇsen´ı credentials gss_init_ces_context - vytvoˇren´ı bezpeˇcn´eho spojen´ı mezi aplikac´ı a vzd´alenou stranou. Funkce m˚ uˇze vr´atit autentizaˇcn´ı token, kter´ y bude pˇreposl´an druh´emu u ´ˇcastn´ıkovi. Ten token pˇred´a funkci gss_accept_sec_context gss_accept_sec_context - souhlas k vytvoˇren´ı bezpeˇcn´eho spojen´ı gss_delete_sec_context - zruˇsen´ı bezpeˇcn´eho spojen´ı gss_wrap - pˇripojen´ı kontroln´ıho souˇctu ke zpr´avˇe a volitelnˇe jej´ı zaˇsifrov´an´ı gss_unwrap - deˇsifruje, pokud byla zpr´ava zaˇsifrovan´a a zkontroluje kontroln´ı souˇcet, zda nebyla zpr´ava pozmˇenˇena
26
Demonstrujeme-li autentizaci pomoc´ı GSSAPI (Kerberos) mezi aplikacemi pine a imap, budou vol´an´ı d˚ uleˇzit´ ych funkc´ı ˇrazena hierarchicky v n´asleduj´ıc´ım sledu (poˇrad´ı vˇsech volan´ ych funkc´ı je v pˇr´ıloze C): pine: auth_gssapi_valid imap: auth_gssapi_valid auth_gssapi_server gss_acquire_cred pine: auth_gssapi_client gss_init_sec_context imap: gss_accept_sec_context pine: gss_init_sec_context imap: gss_wrap pine: gss_unwrap gss_wrap gss_delete_sec_context imap: gss_unwrap gss_delete_sec_context gss_release_cred
Autentizaˇ cn´ı sch´ ema PAM PAM (Pluggable Authentication Modules) je sjednocen´e autentizaˇcn´ı sch´ema, kter´e je implementov´ano v mnoha open source verz´ıch UNIXu. Je to sada sd´ılen´ ych knihoven, kter´ a umoˇzn ˇuje administr´atorovi snadno (za bˇehu) pˇrizp˚ usobovat autentizaˇcn´ı sluˇzby pro r˚ uzn´e aplikace, a ty jiˇz tedy nemusej´ı b´ yt pˇri jak´ekoliv zmˇenˇe autentizaˇcn´ıch mechanism˚ u opˇetovnˇe pˇrepisov´any a pˇrekompilov´av´any. Jedn´a se o modul´arn´ı pˇr´ıstup k autentizaci, kter´ y vznikl jako reakce na neust´ale se zvyˇsuj´ıc´ı poˇcet novˇe vznikaj´ıc´ıch autentizaˇcn´ıch mechanism˚ u. Kromˇe statick´ ych hesel umoˇzn ˇuje PAM pouˇz´ıv´an´ı napˇr´ıklad jednor´azov´ ych hesel, ˇcipov´ ych karet ˇci biometrik.
27
Shrnut´ı V t´eto kapitole jsem popsal instalaci a konfiguraci syst´emu pro autentizaci pomoc´ı syst´emu Kereberos. Prozkoumal a popsal jsem autentizaˇcn´ı vrstvy aplikac´ı bal´ıˇcku imap2006e pro implementaci autentizace pˇres Kerberos. Jedn´ım z c´ıl˚ u diplomov´e pr´ace je implementace nov´eho autentizaˇcn´ıho mechanismu. Pˇred samotnou implementac´ı se mus´ım rozhodnout do jak´e vrstvy aplikac´ı tento mechanismus pˇrid´am. V z´asadˇe jsou dvˇe moˇznosti, bud’ se zamˇeˇr´ım na vrstvu PAM a nebo pˇrid´ am nov´ y mechanismu do vrstvy AUTHENTICATOR.
28
Kapitola 7
Model autentizace a autorizace uˇ zivatele v glob´ aln´ıch s´ıt´ıch Dalˇs´ı ˇc´ast´ı diplomov´e pr´ace je n´avrh modelu autentizaˇcn´ıho mechanismu. Tento model by an mˇel splˇ novat urˇcit´e poˇzadavky definovan´e v kapitole 7.1. V dalˇs´ıch kapitol´ach je pops´ cel´ y proces n´avrhu modelu a v´ ysledn´e specifikace vytvoˇren´ ych nebo pouˇzit´ ych protokol˚ u.
7.1
Poˇ zadavky
• Bezpeˇ cnost modelu – Bezpeˇcnost je jedn´ım z nejd˚ uleˇzitˇejˇs´ıch poˇzadavk˚ u. Pokud by nˇekdo dok´azal z´ıskat ciz´ı uˇzivatelsk´e jm´eno a heslo, dostal se tak ke sluˇzbˇe, ke kter´ ym m´a napaden´ y uˇzivatel pˇr´ıstup. Z toho d˚ uvodu bude na bezpeˇcnost kladena vysok´a m´ıra pozornosti. • Pˇ r´ıstup login/heslo – Autentizaˇcn´ı mechanismus by mˇel vyuˇz´ıvat pˇr´ıstup klasick´eho zad´av´an´ı loginu a hesla. Bude t´ım uˇzivatelsk´e rozhran´ı nezmˇenˇeno a uˇzivatel se nebude muset uˇcit nov´e postupy pro autentizaci. • Autentizace a autorizace uˇ zivatele pomoc´ı d˚ uvˇ eryhodn´ e tˇ ret´ı strany – Poˇzadovan´a sluˇzba nebude prov´adˇet sama autentizaci a autorizaci uˇzivatele. Svˇeˇr´ı tuto ˇcinnost d˚ uvˇeryhodn´e tˇret´ı stranˇe. • Jedno heslo k v´ıce sluˇ zb´ am – Model syst´emu by mˇel umoˇzn ˇovat zjednoduˇsen´ı pro uˇzivatele t´ım, ˇze bude moci pˇristupovat k v´ıce sluˇzb´am pˇres jedno uˇzivatelsk´e jm´eno a heslo. T´ım p´adem bude moci uˇzivatel zvolit sloˇzitˇejˇs´ı heslo a t´ım zv´ yˇs´ı bezpeˇcnost. • Administrace pr´ av uˇ zivatele v jednom m´ıstˇ e – Syst´em by mˇel vyuˇz´ıvat d˚ uvˇeryhodnou tˇret´ı stranu pro ovˇeˇrov´an´ı uˇzivatel˚ u. Ta bude slouˇzit jako centr´aln´ı spr´ ava uˇzivatelsk´ ych pˇr´ıstupov´ ych pr´av ke sluˇzb´am. • Pˇ rimˇ eˇ ren´ e zat´ıˇ zen´ı s´ıtˇ e – Komunikace mezi ovˇeˇrovac´ım serverem, serverem s poˇzadovanou sluˇzbou a klientem nesm´ı pˇr´ıliˇs zat´ıˇzit s´ıt’. Proto bude db´ano na pˇrimˇeˇrenou sloˇzitost protokolu. • Jednoduchost komunikaˇ cn´ıho protokolu – Pˇr´ıliˇsn´a sloˇzitost protokolu m˚ uˇze zabr´anit jeho pouˇzit´ı, proto by mˇel b´ yt tak jednoduch´ y, jak to jen dovol´ı bezpeˇcnost´ı poˇzadavky. 29
7.2
Typy model˚ u komunikace
Autentizace uˇzivatele v˚ uˇci serveru pomoc´ı d˚ uvˇeryhodn´e tˇret´ı strany m˚ uˇze b´ yt z hlediska ˇrazen´ı jednotliv´ ych komponent (klient, server, ovˇeˇrovac´ı server) rozd´ıln´a. Pokud uvaˇzujeme, ˇze autentizaˇcn´ı mechanismus navrhujeme cel´ y od zaˇc´atku bez dan´ ych pravidel, mus´ıme vybrat jedno z n´asleduj´ıc´ıch tˇr´ı sch´emat.
Obr´azek 7.1: Moˇznosti v´ ybˇeru model˚ u
KLIENT - klientsk´a aplikace SERVER - server, kde bˇeˇz´ı poˇzadovan´a sluˇzba AS - autentizaˇcn´ı a autorizaˇcn´ı server (d˚ uvˇeryhodn´a tˇret´ı strana) • varianta a) - Klient se nejprve autentizuje v˚ uˇci AS, kter´ y tvoˇr´ı spojovac´ı prvek mezi serverem a klientem. AS d´ale kontaktuje server a zprostˇredkov´av´a n´aslednou komunikaci. Zde se nask´ yt´a dalˇs´ı moˇznost, zda toto zapojen´ı bude platit pouze pro autentizaci a autorizaci a pˇrenos dat jiˇz bude prob´ıhat pˇres pˇr´ım´e spojen´ı. • varianta b) - Klient pˇristupuje pˇr´ımo k serveru a ten se pt´a AS, zda tento klient je autentizov´an a opr´avnˇen vyuˇz´ıvat sluˇzbu na serveru. Toto zapojen´ı je v praxi vyuˇz´ıv´ano napˇr´ıklad pro pˇr´ıstup klient˚ u k Wi-Fi s´ıti, kde jako AS m˚ uˇze slouˇzit server Radius. • varianta c) - Klient pˇristupuje nejprve k AS, zde se autentizuje, autorizuje a z´ısk´ av´ a identifikaci, d´ıky kter´e m˚ uˇze pˇristupovat k serveru. Server si tuto identifikaci m˚ uˇze ovˇeˇrit u AS, zda je opravdu platn´a. Pokud ji AS potvrd´ı, server povol´ı klientovi pˇr´ıstup. Tato varianta - m´ırnˇe upraven´a - je vyuˇzita v syst´emu Kerberos. 30
Vyb´ıral jsem variantu s ohledem na moˇznost zaˇclenˇen´ı nov´eho mechanismu do st´avaj´ıc´ıch aplikac´ı. Rovnˇeˇz jsem bral zˇretel na m´ıru nutn´ ych u ´prav syst´em˚ u pro jednotliv´e moˇznosti. Po zv´aˇzen´ı tˇechto okolnost´ı jsem vybral variantu b). Klient bude pˇristupovat k poˇzadovan´emu serveru stejn´ ym zp˚ usobem, jako by ˇz´adn´ y autentizaˇcn´ı server (AS) neexistoval. Server d´ale pˇred´a pˇrihlaˇsovac´ı u ´daje AS, kter´ y klienta ovˇeˇr´ı a pˇred´a serveru informace o v´ ysledku. D´ale prob´ıh´a komunikace jiˇz jen mezi klientem a serverem. Sch´ema komunikace je nyn´ı vybr´ano a v dalˇs´ı kapitole vytvoˇr´ım model komunikaˇcn´ıho protokolu.
7.3
N´ avrh modelu komunikace
T´ım, ˇze komunikace klient-server a server-AS bude na sobˇe nez´avisl´a, budu moci pouˇz´ıt pro komunikaci server-AS jiˇz existuj´ıc´ı protokol. Jak jiˇz bylo zm´ınˇeno, vybran´a varianta se pouˇz´ıv´a pˇri ovˇeˇrov´an´ı uˇzivatele pomoc´ı serveru Radius ve Wi-Fi s´ıt´ıch. V m´em pˇr´ıpadˇe se t´ımto inspiruji a pouˇziji protokol Radius pr´avˇe pro komunikaci server-AS. Jedin´e, co bude nutn´e definovat, budou pˇren´aˇsen´e informace na cestˇe server-AS(Radius) a AS(Radius)server. Obecnˇe bude autentizace prob´ıhat n´asledovnˇe:
Obr´azek 7.2: Sch´ema komunikace Popis sch´ematu: 1. klient pos´ıl´a autentizaˇcn´ı u ´daje serveru 2. server pˇrepos´ıl´a informace AS(Radius) 3. AS(Radius) zas´ıl´a v´ ysledek autentizace klienta 4. server odpov´ıd´a klientovi “Autentizov´an”/“Neautentizov´an” Zb´ yv´a jeˇstˇe navrhnout komunikaci mezi klientem a serverem. 31
7.4
N´ avrh protokolu SAUP - Single Authentication Protocol
Komunikace mezi klientem a serverem bude prob´ıhat mnou navrˇzen´ ym protokolem SAUP (Simple Authentication Protocol). Mˇela by b´ yt zabezpeˇcen´a a odoln´a v˚ uˇci u ´tok˚ um. Z toho d˚ uvodu pouˇziji ˇsifrov´an´ı komunikace, bude se jednat o symetrickou ˇsifru AES s d´elkou kl´ıˇce 128 bit˚ u. V´ ysledek n´avrhu je zobrazen na obr´azku 7.3.
ˇ Obr´azek 7.3: Casov´ y pr˚ ubˇeh komunikace
Popis komunikace SAUP protokolu: 1. Klient pos´ıl´a serveru login a zaˇsifrovan´e n´ahodn´e ˇc´ıslo nonceA . Kl´ıˇcem kAB je hash zadan´eho hesla uˇzivatele. 2. Server potˇrebuje zjistit uˇzivatelsk´e heslo, protoˇze je pˇri komunikaci pouˇzito k odvozen´ı ˇsifrovac´ıho kl´ıˇce kAB. Zas´ıl´a proto dotaz na AS(S) s informacemi: • login - pˇrihlaˇsovac´ı jm´eno uˇzivatele • service - jm´eno ˇz´adaj´ıc´ı sluˇzby (napˇr´ıklad IMAP) • domain - dom´ena, ze kter´e se server(B) dotazuje • passwdBS - heslo, kter´e je sd´ıleno mezi serverem(B) a AS(S) 3. AS(S) odpov´ıd´a a pos´ıl´a kl´ıˇc kAB k ˇsifrovan´e komunikaci klient-server. Tento kl´ıˇc se nezas´ıl´a v otevˇren´e podobˇe, ale je zaˇsifrov´an tajn´ ym kl´ıˇcem kB, kter´ y zn´a pouze server(B). AS(S) se o ˇsifrov´an´ı kl´ıˇce kAB nestar´a, protoˇze ho m´a jiˇz zaˇsifrovan´ y ve sv´e datab´azi ve formˇe cryptkB (kAB). 4. Server(B) si rozˇsifruje kl´ıˇc kAB a pomoc´ı nˇej zjist´ı n´ahodn´e ˇc´ıslo nonceA . Vygeneruje si sv´e n´ahodn´e ˇc´ıslo nonceB a spoj´ı s ˇc´ıslem nonceA v poˇrad´ı nonceB , nonceA . Spojen´e ˇc´ıslo nonceBA zaˇsifruje a zaˇsle klientovi. 32
5. Klient pomoc´ı kl´ıˇce kAB deˇsifruje zpr´avu a zjist´ı n´ahodn´e ˇc´ıslo nonceB 6. Klient zaˇsle serveru(B) v otevˇren´e podobˇe n´ahodn´e ˇc´ıslo nonceB . Pokud n´ahodn´e ˇc´ıslo nonceB odpov´ıd´a tomu ˇc´ıslu, kter´e server(B) vygeneroval, pak probˇehla autentizace u ´spˇeˇsnˇe. 7. Server(B) pos´ıl´a zpr´avu klientovi o u ´spˇechu/ne´ uspˇechu autentizace.
Popis zpr´ avy protokolu SAUP Protokol SAUP dˇel´ı zpr´avu na dvˇe ˇc´asti: hlaviˇcku a data. Hlaviˇ cka protokolu SAUP:
Obr´azek 7.4: Hlaviˇcka protokolu SAUP
Pole pˇr´ıznak˚ u: • 2 bity - rezervov´ano • 2 bity - typ zpr´avy • 3 bity - nevyuˇzito • 1 bit - RES - v´ ysledek autentizace auth_ok / auth_failed D´elka zpr´avy - Obsahuje d´elku zpr´avy (hlaviˇcka + data) v bajtech. Data n´asleduj´ı bezprostˇrednˇe za hlaviˇckou.
Datov´ aˇ c´ ast SAUP:
Obr´azek 7.5: Datov´a ˇc´ast protokolu SAUP
Protokol SAUP umoˇzn ˇuje pˇren´aˇset v jedn´e zpr´avˇe v´ıce atribut˚ u najednou. Kaˇzd´ y atribut je tvoˇren dvojic´ı d´elka, data. Maxim´aln´ı velikost pˇren´aˇsen´ ych dat je 64kB - d´elka hlaviˇcky. Poˇcet pˇren´aˇsen´ ych atribut˚ u nen´ı v principu omezen, pouze plat´ı omezen´ı velikosti celkov´ ych pˇren´aˇsen´ ych dat. Nicm´enˇe st´ale plat´ı pravidlo dan´eho obsahu zpr´avy podle typu zpr´avy. 33
7.5
Vytvoˇ ren´ı ˇ sifrovac´ıho kl´ıˇ ce kAB
Protokol SAUP pouˇz´ıv´a pro zabezpeˇcen´ı komunikace symetrickou ˇsifru AES v reˇzimu CBC. Vˇsechny chr´anˇen´e poloˇzky zpr´av mezi klientem a serverem jsou ˇsifrov´any jedn´ım kl´ıˇcem. ˇ Sifra AES vyuˇz´ıv´a kl´ıˇc dlouh´ y 128 bit˚ u. Kl´ıˇc komunikace protokolu SAUP se nepˇren´aˇs´ı po s´ıti. Na stranˇe klienta je vygenerov´ an ze zadan´eho uˇzivatelsk´eho hesla. Na stranˇe serveru je z´ısk´an od AS(S). Generov´an´ı kl´ıˇce na stranˇe klienta: 1. Ze zadan´eho hesla se vypoˇc´ıt´a SHA-1 hash. V´ ysledkem je 160ti bitov´ y k´od. 2. Vypoˇc´ıtan´ y k´od se zkr´at´ı useknut´ım prav´ ych 32 bit˚ u na celkovou d´elku 128 bit˚ u. V´ ysledkem je ˇsifrovac´ı kl´ıˇc kAB .
Z´ısk´an´ı kl´ıˇce na stranˇe serveru: 1. Server poˇsle dotaz na AS(S) s autentizaˇcn´ımi u ´daji: login, service, domain, passwdBS (jednotliv´e poloˇzky byly vysvˇetlen´ y dˇr´ıve). 2. Pokud server vyhodnot´ı autentizaˇcn´ı u ´daje jako nespr´avn´e, zaˇsle zpˇet zpr´avu AccessReject. Pokud autentizaˇcn´ı u ´daje souhlas´ı zaˇsle zpr´avu Access-Accept. Souˇc´ast´ı t´eto zpr´avy je i atribut s obsahem zaˇsifrovan´eho kl´ıˇce cryptBS (SSHA−1 ). SSHA−1 je kl´ıˇc pouˇzit´ y pro ˇsifrov´an´ı komunikace klient-server. Kl´ıˇc BS pro deˇsifrov´an´ı zn´a pouze server(B). AS(S) tento kl´ıˇc BS zn´at nemus´ı (nesm´ı), protoˇze do jeho datab´aze byl vloˇzen kl´ıˇc jiˇz zaˇsifrovan´ y pˇr´ımo ve formˇe cryptBS (SSHA−1 ).
34
7.6
Typy zpr´ av protokolu SAUP
Protokol SAUP zn´a ˇctyˇri druhy zpr´av (viz. obr´azek 7.3). Typick´a komunikace mezi klientem a serverem je zn´azornˇena na obr´azku 7.8
Obr´azek 7.6: Typy zpr´av protokolu SAUP
Auth-Request Klient pos´ıl´a poˇzadavek na autentizaci (obr´azek 7.3 - zpr´ava ˇc. 1). Nese informace o uˇzivatelsk´em jm´enˇe a zaˇsifrovan´e n´ahodn´e ˇc´ıslo.
Auth-Challenge Server zjist´ı u AS ˇsifrovac´ı kl´ıˇc pro dan´eho uˇzivatele. Rozˇsifruje pˇrijat´e n´ahodn´e ˇc´ıslo, pˇrid´ a k nˇemu sv´e vygenerovan´e n´ahodn´e ˇc´ıslo, zaˇsifruje spoleˇcn´ ym sd´ılen´ ym kl´ıˇcem a odeˇsle zpˇet klientovi (obr´azek 7.3 - zpr´ava ˇc. 4)
35
Auth-Verify Klient rozˇsifruje zpr´avu a zaˇsle serveru z´ıskan´e n´ahodn´e ˇc´ıslo v otevˇren´e podobˇe (obr´azek 7.3 - zpr´ava ˇc. 5)
Auth-Response Server zas´ıl´a klientovi v´ ysledek autentizace (obr´azek 7.3 - zpr´ava ˇc. 6). Pˇr´ıznak RES je pouˇzit pro informaci o v´ ysledku autentizace. V pˇr´ıpadˇe chybn´e autentizace je souˇc´ast´ı AuthResponse i atribut nesouc´ı informaci pro uˇzivatele o d˚ uvodu chybn´e autentizace. RES - 1 ... autentizace u ´spˇeˇsn´a RES - 0 ... autentizace ne´ uspˇeˇsn´a
´ eˇsn´a autentizace Obr´azek 7.7: Uspˇ
Obr´azek 7.8: Ne´ uspˇeˇsn´a autentizace
36
7.7
Protokol Radius
Protokol Radius je definov´an v RFC 2865 [14] a je vyuˇzit´ y pro komunikaci server-AS(S). Jedin´e, co je zde nutn´e zm´ınit, je definice pˇren´aˇsen´ ych atribut˚ u. Jelikoˇz jsem pro pˇrenos nˇekter´ ych autentizaˇcn´ıch informac´ı (service, domain, cryptBS (SSHA−1 )) nevyuˇzil pˇreddefinovan´e atributy protokolu Radius, nadefinoval jsem si proto sv´e vlastn´ı. Promˇ enn´ a service domain cryptBS (SSHA−1 )
Atribut Service Domain Service-User-Password
Typ string string string
Pˇreddefinovan´e atributy User-Name a User-Password byly pouˇzity pro pˇrenos promˇenn´e login a passwdBS .
7.8
Model syst´ emu v praxi
Jak bude vypadat model syst´emu pro jednu sluˇzbu bylo zm´ınˇeno v pˇredchoz´ıch odstavc´ıch. Nyn´ı nast´ın´ım model syst´emu se zapojen´ım v´ıce sluˇzeb. Uˇzivatel potˇrebuje pˇristupovat k autorizovan´e ˇc´asti webov´eho serveru, imap serveru a ftp serveru. Zapojen´ı syst´emu je uk´az´ano na n´asleduj´ıc´ım obr´azku:
Obr´azek 7.9: Zapojen´ı syst´em˚ u
Rozm´ıstˇ en´ı d˚ uvˇ ern´ ych informac´ı (kl´ıˇ c˚ u a hesel): • klient (uˇzivatel) – login - uˇzivatelsk´e jm´eno – heslo - z hesla se vygeneruje kl´ıˇc keyAB pro ˇsifrov´an´ı komunikace
37
• server (sluˇzba imap, www, ftp) – hesloBS - heslo pro pˇr´ıstup k Radius serveru (pro kaˇzdou sluˇzbu jin´e). Slouˇz´ı pro autentizaci sluˇzby v˚ uˇci serveru Radius (standardn´ı pouˇzit´ı). – kl´ıˇckBS - kl´ıˇc pro deˇsifrov´an´ı uˇzivatelsk´eho hesla cryptkBS (keyAB ) z´ıskan´eho z Radius serveru • AS (S) – hesloBS - kaˇzd´e sluˇzbˇe pˇr´ısluˇs´ı jedno heslo (standardnˇe pouˇz´ıvan´a hesla pro server Radius) – cryptkB (keyAB ) - zaˇsifrovan´ y kl´ıˇc cryptkB (keyAB ). Pos´ıl´a se sluˇzbˇe, kter´a ho deˇsifruje pomoc´ı kB a pouˇzije pro ˇsifrov´an´ı komunikace s klientem. Zp˚ usoby ˇ sifrov´ an´ı komunikace: • klient(A)-server(B) — pro ˇsifrov´an´ı je pouˇzit SHA-1 hash z uˇzivatelsk´eho hesla • server(B)-AS(S) — komunikace nen´ı zabezpeˇcena. Pouze pro pˇred´an´ı hesla serveru Radius je pouˇzit jeho MD5 souˇcet. Pˇren´aˇsen´e heslo cryptkBS (keyAB ) je uloˇzen´e na stranˇe Radius serveru jiˇz zaˇsifrovan´e pomoc´ı kl´ıˇce kBS, tud´ıˇz je neˇciteln´e.
38
Kapitola 8
Implementace V t´eto kapitole bude pops´an zp˚ usob implementace modelu navrˇzen´eho sch´ematu autentizace. Cel´ y proces autentizace bude implementov´an do aplikac´ı pine a imapd. Tyto aplikace jsou naps´any pro syst´em unix v programovac´ım jazyce C.
8.1
Pouˇ zit´ y software
Pouˇzit´e n´astroje pro implementaci byly dostateˇcnˇe platformˇe pˇrenositeln´e, proto jsem nevyuˇzil glob´aln´ı s´ıt’ PlanetLab ale implementoval jsem syst´em v klasick´e TCP/IP s´ıti. Zdroje bal´ıˇck˚ u jsou uvedeny v sekci Pˇr´ıloha A. Cel´ y syst´em jsem implementoval na virtu´aln´ım stroji VMware Player s operaˇcn´ım syst´emem Fedora6. Jako emailov´ y server byl pouˇzit´ y imapd z bal´ıˇcku imap-2006e vytvoˇren´ y na University of Washington. Emailov´ y klient byl pine z bal´ıˇcku pine4.64. Pro autentizaˇcn´ı a autorizaˇcn´ı server byl pouˇzit FreeRadius. Pro komunikaci se serverem Radius jsem pouˇzil a upravil knihovnu RadiusClient. Pro ˇsifrov´an´ı komunikace byla vyuˇzita knihovna openssl.
8.2
´ Uprava software
Pˇred samotnou implementac´ı autentizaˇcn´ıho mechanismu bylo nutn´e rozhodnout, do kter´e vrstvy bude mechanismus pˇrid´an. Pˇr´ıpadnˇe kter´ y st´avaj´ıc´ı mechanismus (napˇr´ıklad GSSAPI) bude pozmˇenˇen, pokud by pˇrid´an´ı nov´e metody nebylo moˇzn´e. Po prozkoum´an´ı vrstvy AUTHENTICATOR jsem se rozhodl, ˇze st´avaj´ıc´ı mechanismy nech´am beze zmˇeny a pouze pˇrid´am nov´ y. T´ım budou vˇsechny zp˚ usoby autentizace st´ ale dostupn´e. Po pˇrid´an´ı mechanismu bude struktura autentizaˇcn´ıch vrstev oproti nezmˇenˇen´e verzi (obr´azek 6.1) rozˇs´ıˇrena o autentizaci DIP (obr´azek 8.1). DIP je pr´avˇe typ autentizace vyuˇz´ıvaj´ıc´ı protokol SAUP.
39
Obr´azek 8.1: Nov´a hierarchie autentizaˇcn´ıch vrstev
Pˇ rid´ an´ı nov´ e autentizaˇ cn´ı metody N´asleduj´ıc´ı u ´pravy budou prob´ıhat ve zdrojov´ ych k´odech bal´ıˇck˚ u imap-2006e a pine4.64. Aplikace imapd i pine pouˇz´ıvaj´ı pro metody autentizace spoleˇcn´e rozhran´ı AUTHENTICATOR. Zdrojov´e k´ody t´eto vrstvy jsou spoleˇcn´e pro obˇe aplikace, proto bude staˇcit, kdyˇz postup u ´prav zm´ın´ım jen jednou pro bal´ıˇcek imap-2006e. Bude to ovˇsem myˇsleno tak, ˇze ty sam´e u ´pravy jsou potˇreba i na stranˇe bal´ıˇcku pine4.64. Pˇrid´avan´a metoda m´a n´azev DIP, proto toto slovo bude vkl´ad´ano vˇsude tam, kde bude jm´eno metody vyˇzadovan´e. Je nutn´e vytvoˇrit v adres´aˇri imap-2006e n´asleduj´ıc´ı soubory: src/c-client/auth_dip.c src/osdep/unix/ckp_dip.c
Oba soubory jsem vytvoˇril jako kopie tˇechto soubor˚ u vyuˇzit´ ych pro metodu GSS (auth gss.c, ckp gss.c). Soubor ckp gss.c slouˇz´ı jen pro kontrolu hesla uˇzivatele, pˇred jeho samotn´ ym pouˇzit´ım pˇri autentizaci. V m´em pˇr´ıpadˇe ˇz´adn´a poˇc´ateˇcn´ı kontrola hesla neexistuje, proto jsem tento soubor v´ yraznˇe zjednoduˇsil. V souboru auth dip.c je uloˇzen cel´ y autentizaˇcn´ı mechanismus. Tento soubor obsahuje definici jednotliv´ ych funkc´ı rozhran´ı AUTHENTICATOR (viz. 6.4). • auth_dip_valid - je pr´azdn´a - ˇz´adn´a kontrola pˇred samotnou autentizac´ı neprob´ıh´ a • auth_dip_client - zajiˇst’uje autentizaci klienta • auth_dip_server - je vol´ana na stranˇe serveru. V t´eto funkci je definov´ana i komunikace mezi serverem(B) a AS(Radius). Pro komunikaci pomoc´ı protokolu Radius jsem pouˇzil knihovnu RadiusClient, kterou jsem upravil pro potˇreby nov´eho autentizaˇcn´ıho mechanismu. Detailnˇeji nebudu d´ale implementaci tˇechto dvou soubor˚ u popisovat. Pˇresn´e informace jsou k nalezen´ı v koment´aˇr´ıch ve zdrojov´ ych k´odech. 40
Bylo nutn´e pˇridat nov´ y mechanismus do kompilace aplikace - u ´prava souboru: imap-2006e/src/osdep/unix/Makefile: ˇr´adek 892: pˇridat kompilaci souboru auth_dip.c auth_ext.c auth_gss.c auth_log.c auth_md5.c auth_pla.c auth_dip.c ˇr´adek 989: za c´ıl ckpgss pˇridat c´ıl ckpdip: ckpdip: @echo Authentication DIP $(LN) ckp_dip.c osdepckp.c
V tomto stavu jsou aplikace schopny autentizace pomoc´ı mechanismu DIP. Zb´ yv´a pouze tento mechanismus nastavit jako poˇzadovan´ y. Autentizaˇcn´ı mechanismus si definuje server imapd, klientsk´a aplikace pine vybere mechanismus podle poˇzadavk˚ u serveru. U serveru imapd se volba autentizaˇcn´ıho mechanismu neprov´ad´ı v ˇz´adn´em konfiguraˇcn´ım souboru n´ ybrˇz je d´ana parametry definovan´ ymi v souboru Makefile. Server imapd tud´ıˇz nepodporuje zmˇenu mechanismu bez nutnosti kompilace. Nastaven´ı autentizaˇ cn´ıho mechanismu: imap-2006e/Makefile: ˇr´adek 165: nastavit zp˚ usob autentizace PASSWDTYPE=dip
Nyn´ı je autentizaˇcn´ı metoda pˇrid´ana a je nastaveno jej´ı pouˇzit´ı.
8.3
Knihovna libdip service.so
Autentizaˇcn´ı mechanismus je uloˇzen v souboru auth_dip.c. Bylo by ale krajnˇe nevhodn´e do tohoto souboru ps´at definice vˇsech podp˚ urn´ ych funkc´ı. Pokud jeˇstˇe vezmeme z u ´vahu to, ˇze souˇc´ast´ı mechanismu je komunikace protokolem Radius, bylo by mnoˇzstv´ı programov´eho k´odu ne´ unosn´e. Proto jsem vytvoˇril knihovnu libdip service.so, kter´a veˇsker´e podp˚ urn´e operace zajiˇst’uje. Jej´ı souˇc´ast´ı je upraven´a implementace RadiusClient (Pˇr´ıloha A) pro komunikaci protokolem Radius. Obsahuje tak´e dalˇs´ı funkce potˇrebn´e pro autentizaci jako ˇsifrov´an´ı a deˇsifrov´an´ı zpr´avy nebo ovˇeˇren´ı uˇzivatelsk´eho jm´ena a hesla. Rozhran´ı knihovny je navrˇzeno tak, ˇze pokud nebude udˇel´ana v´ yznamn´a zmˇena do sch´ematu komunikace protokolem SAUP, nebude nutn´e znovu kompilovat celou aplikaci, ale bude staˇcit aktualizace sd´ılen´e knihovny libdip service.so. Jednou z takov´ ych u ´prav m˚ uˇze b´ yt napˇr´ıklad zmˇena ˇsifrovac´ıho algoritmu nebo zmˇena d´elky ˇsifrovac´ıho kl´ıˇce.
41
Rozhran´ı knihovny libdip service.so: Knihovna libdip service.so poskytuje funkce pˇr´ımo ekvivalentn´ı zpr´av´am SAUP protokolu. ATTRIBUTE * dip_auth_request( char * login, char * passwd ) login - uˇzivatelsk´e jm´eno passwd - heslo funkce vrac´ı pˇr´ımo datagram protokolu SAUP, kter´ y se pos´ıl´a po s´ıti ATTRIBUTE * dip_auth_challenge( ATTRIBUTE * PDU ) PDU - datagram, kter´ y byl vytvoˇren funkc´ı dip_auth_request funkce vrac´ı pˇr´ımo datagram protokolu SAUP, kter´ y se pos´ıl´a po s´ıti ATTRIBUTE * dip_auth_verify( ATTRIBUTE * PDU ) PDU - datagram, kter´ y byl vytvoˇren funkc´ı dip_auth_challenge funkce vrac´ı pˇr´ımo datagram protokolu SAUP, kter´ y se pos´ıl´a po s´ıti ATTRIBUTE * dip_auth_response( ATTRIBUTE * PDU ) PDU - datagram, kter´ y byl vytvoˇren funkc´ı dip_auth_verify funkce vrac´ı pˇr´ımo datagram protokolu SAUP, kter´ y se pos´ıl´a po s´ıti int get_response ( ATTRIBUTE * PDU ) PDU - datagram, kter´ y byl vytvoˇren funkc´ı dip_auth_response funkce vrac´ı hodnotu: 0 - pokud uˇzivatel nebyl autentizov´an 1 - pokud uˇzivatel byl u ´spˇeˇsnˇe autentizov´an
8.4
Instalace
Chceme-li pouˇz´ıvat autentizaci pomoc´ı metody DIP pro emailov´ y server imapd a klient pine, je nutn´e nainstalovat n´asleduj´ıc´ı bal´ıˇcky (pˇresn´ y popis instalace je pops´an v pˇr´ıloze A). poˇ stovn´ı server postfix postfix-2.3.3-2 pcre-6.6-1.1 maildop-2.0.3 imap server xinetd-2.3.14-8 imap-2006e-dip – upraven´ y bal´ıˇcek (souˇc´ast´ı pˇriloˇzen´eho CD-R, instalace podle pˇr´ılohy) emailov´ y klient pine pine-4.64-dip – upraven´ y bal´ıˇcek (souˇc´ast´ı pˇriloˇzen´eho CD-R, instalace podle pˇr´ılohy)
42
knihovna libdip service.so dip-1.0 Postup instalace knihovny libdip service.so: $ cd dip $ make $ make install Radius server freeradius-1.1.4 Postup instalace: $ yum install freeradius spuˇstˇen´ı skriptu pro upraven´ı nastaven´ı serveru Radius. Pˇrizp˚ usoben´ı pro autentizaci pomoc´ı autentizaˇcn´ı metody DIP $ ./update_radius.sh - skript je souˇc´ast´ı pˇriloˇzen´eho CD-R
8.5
Konfigurace
Konfigurace syst´emu se d´a rozdˇelit na tˇri ˇc´asti. Konfigurace klienta, sluˇzby a Radius serveru.
Klient Na stranˇe klienta nen´ı potˇreba nic nastavovat. Klient jen vypln´ı v pˇrihlaˇsovac´ım formul´ aˇri programu pine uˇzivatelsk´e jm´eno a heslo.
Sluˇ zba - server(B) Na serveru, kde bˇeˇz´ı sluˇzba (napˇr. imap), mus´ı b´ yt nakonfigurovan´ y radius-klient. Nejdˇr´ıve je nutn´e nastavit pˇr´ıstupov´a pr´ava k adres´aˇri /usr/local/etc/raddb a jeho soubor˚ um. Pˇr´ıstup mus´ı b´ yt udˇelen pouze uˇzivateli, pod kter´ ym bˇeˇz´ı sluˇzba (napˇr. imap), protoˇze v souborech jsou uloˇzena hesla pro pˇr´ıstup k Radius serveru (tento zp˚ usob uchov´ an´ı tajn´e informace je u serveru Radius standardn´ı). $ chown -R imap /usr/local/etc/raddb $ chmod -R 600 /usr/local/etc/raddb
# pˇ r´ ıpadn´ a zmˇ ena vlastn´ ıka souboru # zmˇ ena pˇ r´ ıstupov´ ych pr´ av
$ vim /usr/local/etc/raddb/server # sd´ ılen´ e heslo mezi radius-klientem(imap) a radius-serverem(AS). localhost testing123
43
$ vim /usr/local/etc/raddb/radiusclient.conf # adresa Radius serveru authserver localhost # kl´ ıˇ cBS pro deˇ sifrov´ an´ ı uˇ zivatelsk´ eho kl´ ıˇ ceAB # (kter´ y se pouˇ z´ ıv´ a ke komunikaci klient-server) service_radius_passwd klicBS
Radius - AS(S) Nastaven´ı Radius serveru. Nejprve je potˇreba nastavit adresu z kter´e se sluˇzba (imap) bude pˇrihlaˇsovat. Toto se nastavuje v souboru /etc/raddb/clients.conf. Editace uˇzivatel˚ u se mus´ı prov´adˇet ruˇcnˇe v souboru /etc/raddb/users. $ vim /etc/raddb/clients.conf client 127.0.0.1 { secret = testing123 shortname = localhost
# # # #
adresa serveru, kde bˇ eˇ z´ ı sluˇ zba sd´ ılen´ e heslo mezi radius-klientem a radius-serverem intern´ ı pojmenov´ an´ ı adresy
} Nastaven´ı uˇzivatele username: Nastaven´ı se skl´ad´a ze dvou ˇc´ast´ı. Prvn´ı je autentizaˇcn´ı ˇc´ast (prvn´ı dva ˇr´adky). Je to podm´ınka, kterou mus´ı klient splnit (zadat shodn´e u ´daje). Po posled-n´ım argumentu bez ˇc´arky (v tomto pˇr´ıpadˇe je posledn´ı argument Domain == “localhost”) n´asleduje odpovˇed’ klientovi. Zde je nastaven´e zaˇsifrovan´e heslo pro komunikaci klient(pine)server(imap). Toto heslo se z´ısk´a pomoc´ı programu genDipKey, kter´ y je souˇc´ast´ı instalace knihovny libdip service.so. Heslo se vygeneruje na stranˇe serveru(imap) a uloˇz´ı se do tohoto souboru. Heslo je ve formˇe hexa znak˚ u. username Auth-Type := Local, User-Password == ‘‘klicBS’’, Service == ‘‘IMAP’’, Domain == ‘‘localhost’’ Reply-Message = ‘‘HELLO %u’’, Service-User-Password = ‘‘00112233445566778899aabbccddeeff’’
44
Kapitola 9
Bezpeˇ cnost syst´ emu M´ıra bezpeˇcnosti syst´emu je d´ana jeho nejslabˇs´ı ˇc´ast´ı. Proto je nutn´e br´at v u ´vahu jak komunikaˇcn´ı protokol, tak i jeho implementaci. Nebot’ chyba v implementaci zabezpeˇcen´eho protokolu m˚ uˇze u ´toˇcn´ıkovi umoˇznit pˇr´ıstup k syst´emu, nebo kr´adeˇz d˚ uvˇern´ ych informac´ı, ’ at uˇz uˇzivatelsk´ ych dat nebo pˇr´ıstupov´ ych hesel.
9.1
Bezpeˇ cnost protokolu SAUP
Zkoumal jsem z´akladn´ı moˇzn´e u ´toky, kter´e mohou b´ yt na protokol provedeny a nenalezl jsem jedinou moˇznost, kdy by u ´toˇcn´ık mohl z komunikace odposlechnout heslo nebo mu bylo umoˇznˇeno neopr´avnˇen´e autentizace. Neuvaˇzoval jsem situace, kdy u ´toˇcn´ık pozmˇen´ı k´od klientsk´e aplikace, kter´ y mu umoˇzn´ı z´ıskat uˇzivatelsk´e jm´eno a heslo. Tento u ´tok by byl totiˇz moˇzn´ y na jak´ ykoliv syst´em. D´ ale jsem tak´e poˇc´ıtal s t´ım, ˇze pouˇzit´e ˇsifrovac´ı algoritmy jsou bezpeˇcn´e. Pˇri anal´ yze bezpeˇcnosti ˇslo pouze o bezpeˇcnost navrhnut´eho komunikaˇcn´ıho protokolu. Uvaˇzoval jsem n´asleduj´ıc´ı moˇznosti:
Obr´azek 9.1: M´ısta moˇzn´eho u ´toku
45
1. Snaha o prolomen´ı na stranˇe klienta. Na stranˇe klienta nejsou uloˇzena ˇz´adn´a d˚ uvˇern´ a data. Pokud se u ´toˇcn´ık bude vyd´avat za uˇzivatele, pokus´ı se pˇrihl´asit jeho uˇzivatelsk´ ym jm´enem, nepodaˇr´ı se mu zjistit heslo, protoˇze server(B) rozˇsifruje n´ahodn´e ˇc´ıslo nonceA jako jin´e n´ahodn´e ˇc´ıslo nonceA’ a to vr´at´ı zpˇet zaˇsifrovan´e. Proto je zde moˇzn´ y pouze u ´tok silou na ˇsifrovac´ı algoritmus. ´ “Man In The Middle”. Tento u ´tok je nemoˇzn´ y bez znalosti ˇsifrovac´ıho kl´ıˇce. 2. Utok ´ Utoˇcn´ık m´a t´emˇeˇr ty sam´e moˇznosti jako v prvn´ım pˇr´ıpadˇe. ´ cn´ık se vyd´av´a za faleˇsn´ 3. Snaha o prolomen´ı na stranˇe serveru(B). Utoˇ y server(B). Pˇri komunikaci s klientem m´a u ´toˇcn´ık prakticky stejn´e ˇsance jako v situaci, kdyˇz se vyd´aval za klienta. Pˇri komunikaci s AS(S) mus´ı zadat heslo, kter´e zn´a “prav´ y” server(B). I kdyˇz by se mu to povedlo, tak z´ısk´a zaˇsifrovan´ y kl´ıˇc cryptBS (SSHA−1 ) pro komunikaci s klientem. Deˇsifrov´an´ı tohoto kl´ıˇce komunikace bez znalosti kl´ıˇce BS vede zase jen k u ´toku silou. Nebezpeˇc´ı by bylo, pokud by u ´toˇcn´ık z´ıskal neopr´avnˇen´ y pˇr´ıstup k serveru(B) skrze uˇzivatele, pod kter´ ym napaden´a sluˇzba bˇeˇz´ı. Mohl by pak z´ıskat ˇsifrovac´ı kl´ıˇc ke komunikaci jak ke klientovi tak i s AS(Radius). Tato moˇznost ale nen´ı ot´azkou bezpeˇcnosti protokolu, ale sp´ıˇse bezpeˇcnosti syst´emu, na kter´em sluˇzba bˇeˇz´ı. ´ ´ cn´ık m˚ 4. Utok “Man In The Middle”. Utoˇ uˇze odposlechnout a pozmˇenit zaˇsifrovanou verzi kl´ıˇce cryptBS (SSHA−1 ). Toto povede k chybn´e autentizaci uˇzivatele, ale neumoˇzn´ı u ´toˇcn´ıkovi z´ıskat d˚ uvˇern´a data. ´ cn´ık m´a t´emˇeˇr stejn´e ˇsance jako v pˇredchoz´ım 5. Snaha o prolomen´ı na stranˇe AS(S). Utoˇ pˇr´ıpadˇe
9.2
Kvalita implementace
Pˇri implementaci autentizaˇcn´ıho mechanismu a knihovny libdip service.so jsem se snaˇzil vyvarovat chyb vedouc´ıch k prolomen´ı pˇr´ıstupu k syst´emu. Nejnebezpeˇcnˇejˇs´ı m´ısto komunikace cel´eho syst´emu se tak st´av´a server(B). Na serveru(B) je uloˇzen´e pˇr´ıstupov´e heslo k AS v konfiguraˇcn´ım souboru, kter´ y je pˇr´ıstupn´ y pouze uˇzivateli, pod kter´ ym sluˇzba bˇeˇz´ı. V tom sam´em souboru je tak´e uloˇzen kl´ıˇc BS , kter´ y se pouˇz´ıv´a pro deˇsifrov´an´ı kl´ıˇce komunikace klient-server. Pokud by doˇslo k chybn´e konfiguraci pr´av k tomuto souboru, mohl by u ´toˇcn´ık, kter´ y by mˇel pˇr´ıstup na server(B), z´ıskat kl´ıˇce komunikace a d˚ uvˇern´a data uˇzivatel˚ u.
46
Kapitola 10
Z´ avˇ er Pˇredmˇetem diplomov´e pr´ace byl n´avrh modelu autentizace a autorizace uˇzivatele pomoc´ı d˚ uvˇeryhodn´eho serveru. Nejprve jsem zde uvedl teoretick´ y z´aklad vysvˇetluj´ıc´ı danou problematiku. Analyzoval jsem syst´em autentizace Kerberos a ze z´ıskan´ ych informac´ı jsem vych´azel pˇri n´avrhu autentizaˇcn´ıho mechanismu. V´ ysledkem n´avrhu bylo sch´ema komunikace klient - server(sluˇzba) autentizaˇcn´ı server. Pro komunikaci mezi klientem a serverem(sluˇzbou) jsem vytvoˇril nov´ y protokol SAUP (Single Authentication Protocol), pro pˇred´av´an´ı dat mezi serverem(sluˇzbou) a autentizaˇcn´ım serverem byl pouˇzit´ y protokol Radius. Navrˇzen´ y model autentizace jsem u ´spˇeˇsnˇe implementoval do aplikac´ı emailov´eho klienta pine a poˇstovn´ıho serveru imap. Pˇri n´avrhu a implementaci modelu syst´emu byl kladen velk´ y d˚ uraz na zabezpeˇcen´ı pˇrenosu autentizaˇcn´ıch informac´ı. V posledn´ı kapitole jsem rozeb´ıral r˚ uzn´e druhy u ´tok˚ u na protokol SAUP a neshledal jsem ˇz´adn´e kritick´e m´ısto, kde by u ´toˇcn´ık mohl odposlechnout a rozluˇstit pˇren´aˇsen´e informace. Navrˇzen´ y model slouˇz´ı jako z´aklad autentizaˇcn´ıho mechanismu. Existuje mnoho moˇznost´ı, kter´e by mohly rozˇs´ıˇrit jeho funkˇcnost. Mohlo by se jednat a ˇsirˇs´ı podporu ˇsifrovac´ıch algoritm˚ u, schopnost jednat s v´ıce druhy autentizaˇcn´ıch server˚ u (napˇr. ldap), vyhled´ an´ı sekund´arn´ıho autentizaˇcn´ıho serveru pˇri nedostupnosti prim´arn´ıho. Asi nejvˇetˇs´ı inovac´ı by byl pˇrechod na dynamickou zmˇenu hesel pouˇzit´ ych pro ˇsifrov´an´ı komunikace. Tato varianta by ovˇsem znamenala z´asah i na stranˇe klienta. Musela by se pˇridat nov´a vrstva mezi uˇzivatele a klientskou aplikaci, kter´a by zajiˇst’ovala konverzi uˇzivatelsk´eho hesla na dynamick´e heslo pro ˇsifrov´an´ı komunikace.
47
Literatura [1] Libor Dost´alek a kolektiv. Velk´y pr˚ uvodce protokoly TCP/IP: Bezpeˇcnost. Computer Press, 2003. [2] B. Aboba and J. Wood. RFC 3539: Authentication, Authorization and Accounting (AAA) Transport Profile, 2003. [3] L. Blunk and J. Vollbrecht. RFC 2284: PPP Extensible Authentication Protocol (EAP), 1998. [4] Radim B´art˚ u. Semestr´aln´ı pr´ace z pˇredmˇetu KIV/Pˇrenos dat. http://www.kiv.zcu.cz/~simekm/vyuka/pd/zapocty-2004/802 1x-bartu/index.php, 2005. [5] P. Calhoun, J. Loughney, E. Guttman, G. Zorn, and J. Arkko. RFC 3588: Diameter Base Protocol, 2003. [6] P. Congdon, B. Aboba, A. Smith, G. Zorn, and J. Roese. RFC 3580: IEEE 802.1X Remote Authentication Dial In User Service (RADIUS), 2003. [7] G. De Laet and G. Schauwers. Network Security Fundamentals. Cisco Press, 2005. [8] Companion Guide. Fundamentals of Network Security. Cisco Press, 2004. [9] J. Kohl and C. Neuman. RFC 1510: The Kerberos Network Authentication Service (V5). ftp://ftp.rfc-editor.org/in-notes/rfc1510.txt, 1993. [10] Jakub Mahdal. Kerberos, PAM. http://www.fi.muni.cz/~kas/p090/referaty/2005-podzim/st/kerberos pam.html, 2005. [11] C. Rigney. Rfc 2059: Radius accounting, 1997. [12] C. Rigney. RFC 2866: RADIUS Accounting, 2000. [13] C. Rigney, A. Rubens, W. Simpson, and S. Willens. Rfc 2058: Remote authentication dial in user service (radius), 1997. [14] C. Rigney, S. Willens, A. Rubens, and W. Simpson. RFC 2865: Remote Authentication Dial In User Service (RADIUS), 2000. [15] W. Simpson. RFC 1661: Point-to-Point Protocol, 1994. [16] J. Wray. RFC 2744: Generic Security Service API Version 2: C-bindings, 2003.
48
Dodatek A
Instalace Zdroje V diplomov´e pr´aci byly uvedeny odkazy na n´asleduj´ıc´ı zdroje: imap2006e ftp://ftp.cac.washington.edu/imap/old/imap-2006e.tar.Z pine4.64 ftp://ftp.cac.washington.edu/pine/pine.tar.gz VMware Player http://www.vmware.com/download/player/ Fedora6 http://www.thoughtpolice.co.uk/vmware/http download.php?file=fedora-fc6-i386.zip FreeRadius ftp://ftp.freeradius.org/pub/radius/old/freeradius-1.1.4.tar.gz RadiusClient ftp://ftp.cityline.net/pub/radiusclient/radiusclient-0.3.2.tar.gz openssl http://www.openssl.org/source/openssl-0.9.8e.tar.gz
49
Popis instalace na operaˇcn´ı syst´em Fedora6 (Pˇr´ıloha A). Operaˇcn´ı syst´em byl spuˇstˇen v aplikaci VMware Player.
Instalace Instalace pˇ rekladaˇ ce GCC - GNU Compiler Collection $ yum install gcc $ yum install gcc-c++.i386
Kerberos a poˇ zadovan´ e knihovny nebo aplikace $ $ $ $ $ $
wget http://www.openssl.org/source/openssl-0.9.8e.tar.gz gunzip openssl-0.9.8e.tar.gz tar xvf openssl-0.9.8e.tar ./config make su: make install
$ $ $ $ $ $
wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.5.tar.gz gunzip ncurses-5.5.tar.gz tar xvf ncurses-5.5.tar ./configure make su: make install
$ yum install byacc $ yum install flex $ wget http://download.talinux.tal.org/pub/talinux/sources-current-unstable /security/libsepol/libsepol-1.14.tgz $ tar xvf libsepol-1.14.tgz $ make $ su: make install
50
$ $ $ $
wget http://www.nsa.gov/selinux/archives/checkpolicy-1.34.1.tgz tar xvf checkpolicy-1.34.1.tgz make su: make install
$ $ $ $
wget http://www.nsa.gov/selinux/archives/libselinux-1.34.7.tgz tar xvf libselinux-1.34.7.tgz make su: make install
$ wget http://www.kernel.org/pub/linux/libs/pam/pre/library /Linux-PAM-0.99.7.1.tar.bz2 $ tar xvf Linux-PAM-0.99.7.1.tar.bz2 $ ./configure $ make $ su: make install (s verz´ ı 0.99.4.0 neˇ slo pˇ reloˇ zit)
$ $ $ $ $ $ $
wget http://web.mit.edu/Kerberos/dist/krb5/1.6/krb5-1.6.1-signed.tar tar xvf krb5-1.6.1-signed.tar gunzip krb5-1.6.1.tar.gz tar xvf krb5-1.6.1.tar ./configure make su: make install
IMAP server $ $ $ $
wget ftp://ftp.cac.washington.edu/imap/old/imap-2006e.tar.Z zcat imap.tar.Z | tar xvf ln -s /usr/local/ssl/lib/libcrypto.a /usr/lib/libcrypto.a make slx
$ vim ~/.bashrc export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib $ yum install xinetd.i386
51
Postfix $ yum remove sendmail $ yum install postfix $ $ $ $
ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-6.6.tar.gz ./configure make su: make install
st´ahnout maildrop z: http://sourceforge.net/project/downloading.php?group id=5404& use mirror=kent&filename=maildrop-2.0.3.tar.bz2 (verze 2.0.4 neˇsla nainstalovat) $ ./configure $ make $ su: make install
Pine - emailov´ y klient $ $ $ $
wget ftp://ftp.cac.washington.edu/pine/pine.tar.gz gunzip pine.tar.gz tar xvf pine.tar cd pine4.64
Pˇred kompilac´ı pine je nutn´e udˇelat p´ar zmˇen v adres´aˇri se zdrojov´ ymi k´ody aplikace pine Vytvoˇren´ı symbolick´eho linku na zdrojov´e soubory Kerbera $ ln -s /CESTA_K_SYSTEMU_KERBEROS/krb5-1.6.1/src krb5 Zkop´ırov´an´ı p˚ uvodn´ıch certifik´at˚ u openssl ze zdrojov´ ych k´od˚ u do adres´aˇre s certifik´ aty operaˇcn´ıho syst´emu $su: cp -R /CESTA_KE_ZDROJOV´ YM_K´ OD˚ UM_OPENSSL/certs/* /usr/local/ssl/certs Kompilace aplikace ./build slx
/home/user/.bashrc: export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
52
Dodatek B
Konfigurace postfix, imap, Kerberos, pine Kerberos ´ Uprava konfiguraˇcn´ıch soubor˚ u $ vim /etc/krb5.conf [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = REALM [realms] REALM = { kdc = domena.cz:88
- mus´ı b´ yt jm´eno, kter´e NEUKAZUJE na 127.0.0.1 nebo “localhost” (funguje napˇr. 192.168.2.5) admin_server = domena.cz:750 database_name = /usr/local/var/krb5kdc/principal admin_keytab = FILE:/usr/local/var/krb5kdc/kadm5.keytab acl_file = /usr/local/var/krb5kdc/kadm5.acl key_stash_file = /usr/local/var/krb5kdc/.k5.REALM kdc_ports = 750,88
} [domain_realm] - pˇrev´adˇen´ı dom´enov´ ych jmen na realmy, pokud nejsou explicitnˇe zadan´e .domena.cz = REALM domena.cz = REALM .localhost = REALM localhost = REALM 53
[kdcdefaults] acl_file = /usr/local/var/krb5kdc/kadm5.acl admin_keytab = /usr/local/var/krb5kdc/kadm5.keytab v4_mode = nopreauth Vytvoˇren´ı soubor˚ u, ve kter´ ych budou uloˇzeny zaˇsifrovan´e kl´ıˇce a tikety. Nastaven´ı uˇzivatel˚ u, kteˇr´ı budou m´ıt pˇr´ıstup k administr´atorsk´ ym funkc´ım syst´emu Kerberos. $ touch /usr/local/var/krb5kdc/kadm5.keytab $ touch /usr/local/var/krb5kdc/kadm5.acl Vytvoˇren´ı datab´aze Kerbera $ /usr/local/sbin/kdb5_util -s create (Zruˇsen´ı datab´aze se provede pˇr´ıkazem) ($ /usr/local/sbin/kdb5_util destroy) Spuˇstˇen´ı serveru Kerbera $ /usr/local/sbin/krb5kdc Pˇrid´an´ı uˇzivatele do syst´emu Kerberos $ /usr/local/sbin/kadmin.local > addprinc username Pˇrid´an´ı sluˇzby do syst´emu Kerberos $ /usr/local/sbin/kadmin.local > addprinc -randkey imap > ktadd imap Pˇrihl´aˇsen´ı uˇzivatele $ kinit username Postfix - poˇ stovn´ı server ´ Uprava hostname a domainname syst´emu: $ vim /etc/hosts 192.168.2.5 username domena.cz $ domainname domena.cz $ hostname username Konfigurace postfixu: $ vim /etc/postfix/master.cf - doruˇcov´an´ı a filtrov´an´ı poˇsty maildrop unix n n pipe flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient} $ /etc/postfix/main.cf: mail_owner = postfix 54
myhostname = domena.cz inet_interfaces = localhost #mailbox_command = maildrop - mus´ı b´ yt zakomentovan´e virtual_transport = maildrop maildrop_destination_recipient_limit = 1 Nastaven´ı alias˚ u (uˇzivatel, kter´ y m´a dost´avat emaily urˇcen´e pro uˇzivatele root) $ vim /etc/aliases root: username $ newaliases Po zmˇenˇe konfigurace restart sluˇzby $ /sbin/service postfix restart
Imap server Imap server neobsahuje ˇz´adn´e konfiguraˇcn´ı soubory. Jeho nastaven´ı se prov´ad´ı pouze pomoc´ı parametr˚ u pˇri kompilaci. Pˇred samotnou kompilac´ı bylo nutn´e prov´est n´asleduj´ıc´ı zmˇeny. $ vim ./Makefile EXTRAAUTHENTICATORS=gss PASSWDTYPE=gss lfd: SPECIALS=‘‘SSLINCLUDE=/usr/local/ssl/include SSLLIB=/usr/local/ssl/lib ...’’
$ vim ./src/osdep/unix/Makefile SSLINCLUDE=$(SSLDIR)/include $ vim ./src/osdep/unix/Makefile.gss GSSINCLUDE=/usr/local/include/gssapi $ ln -s /usr/local/ssl/lib/libcrypto.a /usr/lib/libcrypto.a Pˇri pˇrekladu bylo nutn´e zapnout podporu pro IPv6, jinak se pˇreklad nezdaˇril $ make lfd (ipv6 support: YES) Bylo nutn´e nastavit promˇennou prostˇred´ı LD_LIBRARY_PATH $ vim ~/.bashrc export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
55
Po u ´spˇeˇsn´e kompilaci serveru zb´ yv´a nastavit xinetd d´emona, kter´ y bude spouˇstˇet imap server. Je nutn´e proto vytvoˇrit soubory /etc/xined.d/imap a /etc/xined.d/imaps, kter´e budou m´ıt n´asleduj´ıc´ı obsah. $ vim /etc/xined.d/imap(s) service imap(s) { socket_type = stream wait = no user = root server = /cesta_k_souboru_imapd log_on_success += HOST DURATION log_on_failure += HOST disable = no }
(/usr/sbin/imapd)
Konfigurace xinetd d´emona a imap serveru je u konce, zb´ yv´a jen restartovat xinetd d´emona $ /sbin/service xinetd restart
Pine - emailov´ y klient U emailov´eho klienta pine nebylo tˇreba dˇela ˇz´adn´e zmˇeny v konfiguraci.
56
Dodatek C
GSSAPI Autentizace pine:
auth_gssapi_valid gss_import_name // name = unknown@REALM gss_release_name
imap:
auth_gssapi_valid gss_import_name // name = imap@REALM gss_release_name
imap:
auth_gssapi_server gss_import_name // name = imap@REALM gss_acquire_cred
pine:
auth_gssapi_client gss_import_name // name = imap@REALM gss_init_sec_context
imap:
gss_accept_sec_context
pine:
gss_release_buffer gss_init_sec_context
imap:
gss_release_buffer gss_display_name gss_wrap gss_seal
pine:
gss_unwrap gss_unseal
57
gss_release_buffer gss_wrap gss_seal gss_release_buffer gss_delete_sec_context gss_release_name imap:
gss_release_buffer gss_unwrap gss_unseal gss_release_buffer gss_release_buffer gss_release_name gss_delete_sec_context gss_release_cred gss_release_buffer gss_release_name
58