indi-2009-12-018
Cross Layer Identity Proof of Concept Project Projectjaar Projectmanager Auteur(s) Opleverdatum Versie
: : : : : :
SURFworks SURFfederatie PoCs 2009 Remco Poortinga – van Wijnen Frank Bezema (Everett) 14-12-2009 1.0
Voor deze publicatie geldt de Creative Commons Licentie “Attribution-NoncommercialShare Alike 3.0 Netherlands”. Meer informatie over deze licentie is te vinden op
Colofon Programmalijn Onderdeel Activiteit Deliverable Toegangsrechten Externe partij
: : : : : :
SURFworks SURFfederatie PoCs Cross Layer Identity PoC Rapport Proof of Concept Cross Layer Identity Publiek Everett
Dit project is tot stand gekomen met steun van SURF, de organisatie die ICT vernieuwingen in het hoger onderwijs en onderzoek initieert, regisseert en stimuleert door onder meer het financieren van projecten. Meer informatie over SURF is te vinden op de website (www.surf.nl).
II
6 dingen die je moet weten over Cross Layer Identity en SURFfederatie Context
Proof of Concept om met één login gebruik kunnen maken van diensten verspreid over verschillende netwerk lagen, zodat unified SSO mogelijk wordt.
Wat is het?
Mechanisme dat de klassieke SSO uitbreidt naar andere netwerk lagen.
Voor wie is het?
Voornamelijk op eduroam aangesloten instellingen en ontwikkelaars en aanbieders van SURFfederatie diensten.
Hoe werkt het?
De login-context van eduroam (dus het succesvol inloggen op eduroam) uitbreiden zodat deze geschikt wordt om bij de SURFfederatie te gebruiken en mogelijk bij andere diensten.
Wat kan je ermee?
Geeft een (mobiele) eindgebruiker de mogelijkheid na de eduroam netwerk login naadloos toegang te krijgen tot een reeks diensten zonder opnieuw in te hoeven loggen.
Extra (Bijlagen, Thema, Gerelateerde thema’s)
Aparte (interne) aanbeveling aan SURFnet over eventueel vervolg.
III
Inhoudsopgave 1
2
3 4
5
Inleiding ........................................................................................................ 5 1.1 Achtergrond ............................................................................................. 5 1.2 Opdracht.................................................................................................. 5 1.3 Werkwijze ................................................................................................ 5 1.4 Scope ...................................................................................................... 6 1.5 Leeswijzer ................................................................................................ 6 Integratie eduroam en SURFfederatie ................................................................ 7 2.1 Infrastructuur van de Proof of Concept ......................................................... 8 2.2 Opzet van de afzonderlijke onderdelen ......................................................... 8 2.2.1 Kerberos Key Distribution Center (KDC) .................................................. 8 2.2.2 Radius server ...................................................................................... 9 2.2.3 Supplicant (eduroam inlog) ................................................................... 9 2.2.4 WebAuth module voor Kerberos authenticatie .......................................... 9 2.2.5 Mod_auth_kerb module voor Kerberos authenticatie ................................. 9 2.2.6 Firefox browser met Kerberos authenticatie ............................................. 9 2.3 Tests ..................................................................................................... 10 2.3.1 Supplicant (eduroam inlog) ................................................................. 10 2.3.2 WebAuth module voor Kerberos authenticatie ........................................ 10 2.3.3 mod_auth_kerb module voor Kerberos authenticatie............................... 10 2.4 Issues bij uitvoeren van de PoC................................................................. 10 Conclusie en aanbeveling ............................................................................... 12 Bijlage 1: Gebruikte software versies............................................................... 13 4.1 Extra packages op Redhat servers ............................................................. 13 4.2 Perl modules .......................................................................................... 13 Bijlage 2: configuratie details en logging .......................................................... 14 5.1 Verhoogde logging van Firefox .................................................................. 14 5.2 Kerberos client configuratie ...................................................................... 14 5.3 WPA_Supplicant logging ........................................................................... 14 5.4 Firefox logging ........................................................................................ 18
IV
1 Inleiding 1.1 Achtergrond Bij het gebruik van digitale diensten wordt geregeld op verschillende lagen van het OSI model (bijvoorbeeld netwerk, sessie, applicatie) geauthenticeerd voor het gebruik van bronnen in de desbetreffende laag. Vaak vereisen die stappen het (herhaaldelijk) gebruik van credentials, vaak zelfs dezelfde credentials. Denk bijvoorbeeld aan het gebruik van eduroam credentials voor wireless netwerk authenticatie en het authenticeren met een federatieve identiteit voor het gebruik van webgebaseerde diensten in bijvoorbeeld de SURFfederatie. In een ideaal gebruikersvriendelijk scenario zou authenticatie voor de verschillende lagen slechts eenmaal plaatsvinden en wordt een succesvolle authenticatie hergebruikt voor andere lagen en diensten. Waar de SURFfederatie in zijn huidige vorm Single Sign-On (SSO) biedt tussen webgebaseerde diensten (als het ware ‘horizontaal’) wordt in dit project voorzien dat de federatieve identiteit over de verschillende netwerk lagen (MAC, IP, HTTP) wordt hergebruikt (als het ware ‘verticaal’), de zogenaamde ‘unified Single Sign-On (uSSO). Daarnaast is het wenselijk dat dezelfde identiteit hergebruikt wordt voor niet webgebaseerde diensten zoals VoIP, IMAP mail en computing resources in het algemeen.
1.2 Opdracht Om de mogelijkheden van unified SSO te verkennen heeft SURFnet aan Everett de opdracht gegeven een technologieverkenning omtrent dit onderwerp uit te voeren. Deze verkenning moet in ieder geval een overzicht geven van het krachtenveld rondom Cross Layer Identity en van de mogelijkheden om uSSO te implementeren in combinatie met de SURFfederatie. De technologieverkenning bestaat uit twee delen; een rapport en een Proof-of-Concept (PoC). Dit document bevat de beschrijving van en de uitkomsten van de Proof-of-Concept. De technologieverkenning als geheel moet genoeg informatie opleveren zodat SURFnet een beslissing kan nemen over het doorgaan met verdere dienstontwikkeling omtrent Cross Layer Identity.
1.3 Werkwijze Deze Proof of concept is geschreven vanuit de bij Everett aanwezige kennis over authenticatie methoden en het testen van verschillende elementen van de infrastructuur, waar nodig aangevuld met onderzoek op internet. Daarnaast is overleg geweest met de opdrachtgever en de verantwoordelijken voor de SURFfederatie en eduroam bij SURFnet. Hierbij ging het over de gebruikte software, configuratie instellingen en troubleshooting. Als een onderdeel niet werkte of vertraging opliep is verdergegaan met een ander, onafhankelijk deel.
5
1.4 Scope De scope van de verkenning beperkt zich tot SURFnet eduroam en de SURFnet federatie infrastructuur. In een van de eerste overleggen met SURFnet over de scope van de opdracht is besloten de PoC in eerste instantie te beperken tot SSO tussen de SURFfederatie en eduroam, en dan in 1 richting: authenticeren middels eduroam en daarna, zonder opnieuw inloggen, webpagina’s via de SURFfederatie gebruiken. Binnen SURFnet en aangesloten instellingen is deze use case het meest relevant en het eerste waar mensen aan denken als gesproken wordt over uSSO.
1.5 Leeswijzer Om deze Proof of concept te kunnen plaatsen is het noodzakelijk om het eerste deel van de verkenning, het theoretische rapport (Cross Layer Identity, Erik Sneep en Peter Clijsters)1 te lezen. Hoofdstuk 2 geeft een opsomming van de gevolgde stappen tijdens de proof of concept. Hoofdstuk 3 bevat de conclusie en aanbeveling. Bijlage 1 bevat de gebruikte software versies en extra geïnstalleerde software modules. Bijlage 2 bevat de beknopte configuratie en logging.
1
http://www.surfnet.nl/Documents/indi-2009-07-026%20(SURFnet%20Cross%20Layer%20Identity).pdf
6
2 Integratie eduroam en SURFfederatie Een aanbeveling van de eerdere verkenning was om een PoC uit te voeren op basis van Kerberos. De volgende onderdelen maken minimaal deel uit van een geïntegreerde omgeving: De gebruiker die in wil loggen op eduroam en op door de SURFnet federatie afgeschermde webapplicaties. Vaak is dit met gebruikmaking van een laptop met een wireless netwerkkaart. De eduroam infrastructuur: dit zijn wireless access points bij instellingen die authenticatie afhandelen middels de eduroam Radius federatie. De Radius server van de ‘thuisinstelling’ waarbij normaal gesproken wordt geauthenticeerd. De KDC Kerberos server (key distribution center) waar Kerberos tokens opgehaald kunnen worden. De IdP server waarmee een SURFfederatie sessie opgezet kan worden.
In onderstaande figuur staan deze onderdelen weergegeven.
Figuur 2: Opzet van de Proof of Concept. De PoC voor het bereiken van Single Sign On op basis van Kerberos is getest in een versimpelde opstelling. Dit is niet de gehele usecase (zoals aangegeven in figuur 9 van de eerdere verkenning) maar alleen de essentiële onderdelen. Bijvoorbeeld de Radius server, SURFfederatie en SP zijn niet meegenomen, omdat dit naar verwachting teveel infrastructuur en tijd kost om op te zetten en weinig toegevoegde waarde levert. De communicatie flow bestaat de volgende stappen: 1. eduroam communicatie tussen gast en thuisinstelling wordt zoals gebruikelijk opgezet met een EAP tunnel tussen de gebruiker en de Radius server van de thuisinstelling. 2. eduroam authenticatie van de eindgebruiker gaat middels gebruikersnaam / wachtwoord (via een configuratie van Radiator om Kerberos authenticatie te 7
doen) welke door de Radius server van de thuisinstelling bij een Identity Provider (IdP) wordt gevalideerd. 3. Na authenticatie vraagt de Radius server van de thuisinstelling voor de client een Ticket Granting Ticket (TGT) bij het Kerberos Key Distribution Center (KDC) op. De TGT wordt naar de gebruiker getransporteerd door gebruik te maken van het EAP TLV veld (zie ook het eerdere CLI rapport2). De supplicant op de gebruikerscomputer moet de verkregen TGT aan de Kerberos Client software bekend maken. 4. Bij het KDC wordt met behulp van de TGT nu een Session Ticket (ST) voor de IdP verkregen. Hier is de IdP de Relying Party (RP) in het Kerberos scenario. 5. Als succesvol een ST is verkregen voor de IdP wordt door de IdP direct een SAML token aan de eindgebruiker verleend. De rest van de flow om toegang te krijgen tot de website is vergelijkbaar met de reguliere SURFfederatie authenticatie. De PoC infrastructuur opstelling, opzet van de afzonderlijke onderdelen en de uitgeteste communicatie stappen en uitkomsten worden in onderstaande paragrafen beschreven.
2.1 Infrastructuur van de Proof of Concept Deze PoC opstelling bevat de volgende hardware onderdelen: De Supplicant (client, vaak een gebruikers laptop) is eerst uitgetest met een Dell Lattitude 110L met een Broadcom WiFi kaart. De Broadcom chipset bleek echter problemen te geven met de gebruikte supplicant, zodat later is overgestapt op een Dell X1 met Ubuntu Linux 8.10. Van de hierin gebruikte Intel WiFi kaart was zeker dat deze goed met eduroam en deze Linux versie kon werken.
De Radius en de Kerberos KDC (Key Distribution Center) zijn geïnstalleerd op één Redhat VM met hostname poc-kdc.showcase.surfnet.nl.
De IdP en Apache webserver zijn geïnstalleerd op een Redhat VM met hostname poc-idp.showcase.surfnet.nl.
Voor exacte versies van software componenten, zie Bijlage 1: Gebruikte software versies. Voor configuraties en logging, zie Bijlage 2: configuratie details en logging.
2.2 Opzet van de afzonderlijke onderdelen De volgende paragrafen beschrijven hoe de verschillende onderdelen afzonderlijk zijn opgezet en getest.
2.2.1
Kerberos Key Distribution Center (KDC)
De KDC is opgezet op de host poc-kdc met de standaard MIT packages van de Redhat Linux distributie, zie Bijlage 1: Gebruikte software versies. Voor installatie is de default handleiding3 gevolgd. Principals zijn aangemaakt voor users en hosts. De correcte werking is geverifieerd door vanaf de poc-idp host een kinit op de commandline uit te voeren. Op de poc-idp host is dezelfde krb5.conf client Kerberos configuratie gebruikt als op de poc-kdc.
2
http://www.surfnet.nl/Documents/indi-2009-07-026%20(SURFnet%20Cross%20Layer%20Identity).pdf
3
http://web.mit.edu/Kerberos/krb5-1.7/krb5-1.7/doc/krb5-install.html
8
2.2.2
Radius server
Voor de Radius server is gebruik gemaakt van de bij SURFnet al bekende Radiator software van OSC. Na configuratie van de eduroam test omgeving op radius.showcase.surfnet.nl bij SURFnet kon de Radius server op de poc-kdc machine de authenticatie requests succesvol afvangen. Authenticatie liep niet naar een IdP (zoals punt 2 in figuur 2) maar direct via een bestand en later via Kerberos authenticatie. Op deze manier werd voor het opzetten van de Radius server de authenticatie voor Kerberos simpel gehouden door geen koppeling naar de IdP te gebruiken. Uit debug logging van de Radiator software bleek deze met de gebruikte configuratie correct en zonder problemen op te starten.
2.2.3
Supplicant (eduroam inlog)
Er is gebruik gemaakt van de bestaande eduroam omgeving binnen SURFnet, waarbij de Radius servers voor showcase doorverwijzen naar de poc-kdc.showcase.surfnet.nl voor authenticatie. Er is geen cross authentication of sprake van trust relaties, alles valt binnen het ene domein showcase.surfnet.nl. De client software is de standaard wpa_supplicant die beschikbaar is onder Linux. Om de goede ‘basis’ werking aan te tonen is eerst met deze standaard client met een eduroam gast account welke geen gebruik maakt van de PoC infra (domein guest.surfnet.nl) getest. Hieruit bleek dat de access point association succesvol verliep via TTLS en er een IP adres via DHCP beschikbaar kwam.
2.2.4
WebAuth module voor Kerberos authenticatie
De Stanford WebAuth4 module is een HTTP cookie SSO-laag om Kerberos authenticatie heen voor afscherming van websites. Doel van deze module is het aantonen van Kerberos authenticatie door een web browser aan een webserver; deze kan worden gebruikt voor de initiatie van IdP authenticatie richting de SURFfederatie. De setup vereist een zogenaamde WebKDC en een WebLogin server welke op de poc-kdc server gecompileerd en gedraaid werden. De eigenlijke WebAuth module is gecompileerd op de poc-idp server. Apache startte correct op met deze module.
2.2.5
Mod_auth_kerb module voor Kerberos authenticatie
De mod_auth_kerb5 module voor Apache is een alternatieve manier om een website af te schermen en te authenticeren tegen Kerberos. Doel van deze module is ook het aantonen van Kerberos authenticatie door een web browser aan een webserver t.b.v. bijvoorbeeld initiatie van IdP authenticatie richting SURFfederatie. De module is gecompileerd op de poc-idp server. Apache startte correct op met deze module.
2.2.6
Firefox browser met Kerberos authenticatie
Om het begin van stap 5 van figuur 2, de browser Kerberos authenticatie tegen een webserver, te testen is getracht een Kerberos authenticatie tussen Firefox op Linux te doen tegen de 2 hiervoor genoemde Apache Kerberos modules. De Firefox configuratie is hiervoor op de volgende wijze aangepast: Start Firefox, voer about:config in het adres veld in. De parameter network.negotiate-auth.trusted-uris moet dan worden gezet op “http://, https://” of “surfnet.nl”. De Firefox logging is voor de testen hoger gezet, helaas levert dit niet altijd nuttige logging op.
4
http://webauth.stanford.edu/
5
http://modauthkerb.sourceforge.net/
9
2.3 Tests In onderstaande paragrafen zijn de verschillende communicatie flow tests (de nummers uit figuur 2) en uitkomsten beschreven. Omdat de basis authenticatie flow uiteindelijk niet gelukt is, zijn niet alle stappen uitgevoerd.
2.3.1
Supplicant (eduroam inlog)
Deze test gaat over stap 1 en 3 in figuur 2. Via een account wat gebruik maakt van de Radius server in de PoC opstelling is het niet gelukt om succesvol te connecten met het access point: de associatie start wel maar werd in een later stadium weer afgebroken. (Zie ook logging in §5.2, bijlage 2). De volgende zaken zijn geprobeerd: Voor de radiator configuratie zijn (geldige) demo certificaten van Radiatior gebruikt. Hoewel TTLS is aangegeven in de configuratie blijkt er toch om certificaten gevraagd te worden. Dit gaf SSL read errors. Er is gevarieerd met verschillende Kerberos principals, met hetzelfde negatieve resultaat.
2.3.2
WebAuth module voor Kerberos authenticatie
Deze module zou het begin van stap 5 van figuur 2 kunnen aantonen. Deze module is niet werkend gekregen, de module bleef de pagina afschermen met een HTTP 401 error in Firefox, en er vond geen redirect plaats. Als alternatief is een andere install handleiding6 gevolgd, met hetzelfde negatieve resultaat.
2.3.3 mod_auth_kerb module voor Kerberos authenticatie De mod_auth_kerb module voor Apache is een alternatieve manier om een website af te schermen en te authenticeren tegen Kerberos7. Dit zou ook het begin van stap 5 van figuur 2 kunnen aantonen. Doel van deze module is ook het aantonen van Kerberos authenticatie door een web browser tegen een webserver ter initiatie van IdP authenticatie richting SURFfederatie. Deze module is ook niet succesvol werkend gekregen met behulp van Firefox. Mogelijk lag dit aan Kerberos tokens die niet goed opgepakt worden door Firefox. Als alternatief is nog geprobeerd met een module directive geforceerd het username en wachtwoord op te geven in een pop-up box, maar dit gaf hetzelfde resultaat. Door het netwerk te sniffen met de netwerk protocol analyser Wireshark, kon de volgende Kerberos error achterhaald worden: error_code: KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN (7). De reden kon niet achterhaald worden, zowel de client als de server waren bekend in de KDC Kerberos database en de principal was bekend via een eerdere kinit. Debug logging van Firefox leverde helaas geen nuttige logging op (zie §5.3). Zoeken op fora op internet leverde ook geen verdere informatie.
2.4 Issues bij uitvoeren van de PoC Een aantal gevonden issues en ervaringen tijdens de PoC zijn de volgende: Firewalls op clients en servers dienen voldoende open te staan, dit is standaard niet het geval. Beperkte of zeer cryptische logging rondom Kerberos en browser GSS-API helpt niet bij troubleshooten of werkend krijgen van de PoC omgeving. 6
http://www.eyrie.org/~eagle/software/webauth/install-webkdc.html
7
http://modauthkerb.sourceforge.net
10
Beperkte documentatie en troubleshooting informatie gevonden op internet over sommige software, met name de Apache modules web_auth en browser – Kerberos integratie. De communicatie vanaf de eduroam Radius servers naar de poc-kdc Radius bleek niet altijd te werken. De compilatie van mod_webauth bevatte een aantal compile problemen, waaronder het niet werken van de Makefile en het missen van directories.
Doordat de basis opzet niet werkte op meerdere punten, is in deze PoC niet toegekomen aan het aantonen en aanpassen van de voorgestelde componenten:
wpa_supplicant (C code) uitbreiding zodat een Kerberos ticket meegegeven kan worden via de client browser aan een IdP. Radius module (PERL via hooks in het Radiator pakket) om Kerberos TGT mee te geven via het EAP-TTLS TLV veld. IdP-initiated web federatie op basis van Kerberos authenticatie gegevens afkomstig van de client browser.
11
3 Conclusies Er is getracht een werkende proefopstelling met Kerberos te maken, wat op meerdere punten niet het gewenste resultaat leverde. Het installeren was niet triviaal, en de resulterende logging is niet van dien aard dat problemen gemakkelijk, of überhaupt, op te lossen zijn. De opzet van Kerberos als authenticatie techniek vergt veel (voor)kennis en is dusdanig complex dat het opzetten van een basis infrastructuur op meerdere vlakken niet snel lukt. Dit wordt nog bemoeilijkt doordat niet alle benodigde componenten en versies goed samenwerken. Ondanks de aanpak om op meerdere punten afzonderlijk te testen, is in deze PoC niet toegekomen aan het aantonen en aanpassen van de eerder voorgestelde componenten zoals de wpa_supplicant, Radius module en IdP integratie. Gezien alle problemen en complexiteit bij de basis opzet lijkt het - ondanks dat het theoretisch mogelijk zou moeten zijn - veel extra effort te vergen of praktisch onmogelijk te zijn om Kerberos als techniek breed in te zetten voor het bieden van uSSO vanaf eduroam richting SURFfederatie, zeker in een productie omgeving. Dit nog afgezien van nadelen qua security van het Kerberos scenario zoals genoemd in §3.4.3 van het eerdere rapport8. Daar waar de gebruikte componenten overeen komen met de opzet van andere opties voor uSSO zoals voorgesteld in het eerdere rapport8 zullen dezelfde problemen ook daar optreden (bijvoorbeeld het SAML scenario, waar ook het TLV veld wordt gebruikt voor het meegeven van informatie aan de client-side supplicant).
8
http://www.surfnet.nl/Documents/indi-2009-07-026%20(SURFnet%20Cross%20Layer%20Identity).pdf
12
4 Bijlage 1: Gebruikte software versies Software component Red Hat Linux
Versie
Functie/Opmerking
host
poc-kdc
poc-kdc.showcase.surfnet.nl
poc-idp
poc-idp.showcase.surfnet.nl
Ubuntu
5.4 (Tikanga) 5.4 (Tikanga) 8.10
flexnet
Ubuntu
9.4
Radiator wpa_supplicant Apache webserver Apache webserver module Firefox
4.4 0.6.4
laptop Linux client, Dell Latitude X1 laptop Linux client, Dell Latitude 110L, nr 31. Radius server software wireless network client mod_auth
poc-kdc.showcase.surfnet.nl laptop poc-idp.showcase.surfnet.nl
3.6.2
webauth-3.6.2
poc-idp.showcase.surfnet.nl
3.0.14
browser
laptop
Red Hat Linux
flexnet
4.1 Extra packages op Redhat servers Met behulp van yum zijn de volgende packages geïnstalleerd: tcpdump wireshark-gnome X11 X gcc openssl-devel.i386 openssl-perl.i386 autoconf automake httpd httpd-devel system-config-httpd mod_fastcgi perl-libwww-perl perl-XML-Parser perl-Crypt-SSLeay wireshark Firefox gnome-kerberos kerberos-gnome krb5
4.2 Perl modules De volgende perl -MCPAN perl -MCPAN perl -MCPAN perl -MCPAN perl -MCPAN
perl CPAN modules zijn geïnstalleerd: -e 'install Digest::MD4' -e 'install Net::SSLeay' -e 'install Digest::HMAC_MD5' -e 'install Authen::Krb5' -e 'install HTML::Template 13
5 Bijlage 2: configuratie details en logging Niet alle configuratie en logging is hier opgenoemd.
5.1 Verhoogde logging van Firefox De Firefox logging is voor de testen hoger gezet door de environment variabelen NSPR_LOG_MODULES=negotiateauth:5 en NSPR_LOG_FILE=/tmp/negotiateauth.log te zetten. Hoewel dit meer logging oplevert is deze niet altijd even behulpzaam of zinvol.
5.2 Kerberos client configuratie /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 = KDC1.SHOWCASE.SURFNET.NL dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h forwardable = yes [realms] KDC1.SHOWCASE.SURFNET.NL = { kdc = kdc1.showcase.surfnet.nl:88 admin_server = kdc1.showcase.surfnet.nl:749 default_domain = showcase.surfnet.nl } [domain_realm] .showcase.surfnet.nl = .SHOWCASE.SURFNET.NL showcase.surfnet.nl = SHOWCASE.SURFNET.NL [appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false }
5.3 WPA_Supplicant logging State: DISCONNECTED -> SCANNING Starting AP scan (broadcast SSID) Scan requested (ret=0) - scan timeout 30 seconds RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP]) RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP]) RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added Wireless event: cmd=0x8c02 len=235 Association info event req_ies - hexdump(len=58): 00 07 65 64 75 72 6f 61 6d 01 08 02 04 0b 16 0c 12 18 24 32 04 30 48 60 6c dd 16 00 50 f2 01 01 00 00 50 f2 02 01 00 00 50 f2 02 01 00 00 50 f2 01 dd 07 00 50 f2 02 00 01 00 resp_ies - hexdump(len=42): 01 08 82 84 8b 0c 12 96 18 24 32 04 30 48 60 6c dd 18 00 50 f2 02 01 01 01 00 03 a4 00 00 27 a4 00 00 42 43 5e 00 62 32 2f 00 WPA: set own WPA/RSN IE - hexdump(len=24): dd 16 00 50 f2 01 01 00 00 50 f2 02 01 00 00 50 f2 02 01 00 00 50 f2 01 RTM_NEWLINK: operstate=0 ifi_flags=0x11003 ([UP][LOWER_UP]) RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added Wireless event: cmd=0x8b15 len=20 Wireless event: new AP: 00:15:e8:da:0d:82 State: SCANNING -> ASSOCIATED wpa_driver_wext_set_operstate: operstate 0->0 (DORMANT) WEXT: Operstate: linkmode=-1, operstate=5 Associated to a new BSS: BSSID=00:15:e8:da:0d:82 No keys have been configured - skip key clearing Associated with 00:15:e8:da:0d:82 WPA: Association event - clear replay counter WPA: Clear old PTK
14
EAPOL: External notification - portEnabled=0 EAPOL: External notification - portValid=0 EAPOL: External notification - portEnabled=1 EAPOL: SUPP_PAE entering state CONNECTING EAPOL: SUPP_BE entering state IDLE EAP: EAP entering state INITIALIZE EAP: maintaining EAP method data for fast reauthentication EAP: EAP entering state IDLE Setting authentication timeout: 10 sec 0 usec Cancelling scan request RTM_NEWLINK: operstate=0 ifi_flags=0x11003 ([UP][LOWER_UP]) RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added RTM_NEWLINK: operstate=0 ifi_flags=0x11003 ([UP][LOWER_UP]) RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added Wireless event: cmd=0x8b19 len=8 Scan results did not fit - trying larger buffer (8192 bytes) Scan results did not fit - trying larger buffer (16384 bytes) Scan results did not fit - trying larger buffer (32768 bytes) Received 18785 bytes of scan results (46 BSSes) CTRL-EVENT-SCAN-RESULTS Selecting BSS from priority group 100 Try to find WPA-enabled AP 0: 00:15:e8:da:41:86 ssid='sn-test' wpa_ie_len=24 rsn_ie_len=0 caps=0x11 skip - SSID mismatch 1: 00:15:e8:da:41:82 ssid='eduroam' wpa_ie_len=24 rsn_ie_len=0 caps=0x11 skip - blacklisted 2: 00:15:e8:d9:a8:82 ssid='eduroam' wpa_ie_len=24 rsn_ie_len=0 caps=0x11 selected based on WPA IE selected WPA AP 00:15:e8:d9:a8:82 ssid='eduroam' Trying to associate with 00:15:e8:d9:a8:82 (SSID='eduroam' freq=2412 MHz) Cancelling scan request WPA: clearing own WPA/RSN IE Automatic auth_alg selection: 0x1 WPA: using IEEE 802.11i/D3.0 WPA: Selected cipher suites: group 8 pairwise 8 key_mgmt 1 proto 1 WPA: set AP WPA IE - hexdump(len=26): dd 18 00 50 f2 01 01 00 00 50 f2 02 01 00 00 50 f2 02 01 00 00 50 f2 01 00 00 WPA: clearing AP RSN IE WPA: using GTK TKIP WPA: using PTK TKIP WPA: using KEY_MGMT 802.1X WPA: not using MGMT group cipher WPA: Set own WPA IE default - hexdump(len=24): dd 16 00 50 f2 01 01 00 00 50 f2 02 01 00 00 50 f2 02 01 00 00 50 f2 01 No keys have been configured - skip key clearing wpa_driver_wext_set_drop_unencrypted State: ASSOCIATED -> ASSOCIATING wpa_driver_wext_set_operstate: operstate 0->0 (DORMANT) WEXT: Operstate: linkmode=-1, operstate=5 wpa_driver_wext_associate wpa_driver_wext_set_psk Setting authentication timeout: 10 sec 0 usec EAPOL: External notification - portControl=Auto RTM_NEWLINK: operstate=0 ifi_flags=0x11003 ([UP][LOWER_UP]) RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added Wireless event: cmd=0x8b06 len=8 RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP]) RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added Wireless event: cmd=0x8b15 len=20 Wireless event: new AP: 00:00:00:00:00:00 Added BSSID 00:15:e8:d9:a8:82 into blacklist CTRL-EVENT-DISCONNECTED - Disconnect event - remove keys wpa_driver_wext_set_key: alg=0 key_idx=0 set_tx=0 seq_len=0 key_len=0 wpa_driver_wext_set_key: alg=0 key_idx=1 set_tx=0 seq_len=0 key_len=0 wpa_driver_wext_set_key: alg=0 key_idx=2 set_tx=0 seq_len=0 key_len=0 wpa_driver_wext_set_key: alg=0 key_idx=3 set_tx=0 seq_len=0 key_len=0 wpa_driver_wext_set_key: alg=0 key_idx=0 set_tx=0 seq_len=0 key_len=0 Driver did not support SIOCSIWENCODEEXT State: ASSOCIATING -> DISCONNECTED wpa_driver_wext_set_operstate: operstate 0->0 (DORMANT) WEXT: Operstate: linkmode=-1, operstate=5 EAPOL: External notification - portEnabled=0 EAPOL: SUPP_PAE entering state DISCONNECTED EAPOL: SUPP_BE entering state INITIALIZE EAP: EAP entering state DISABLED EAPOL: External notification - portValid=0 RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP]) RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added Wireless event: cmd=0x8b04 len=12 RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP]) RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added EAPOL: startWhen --> 0 RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP]) RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added Wireless event: cmd=0x8b19 len=8 Scan results did not fit - trying larger buffer (8192 bytes) Scan results did not fit - trying larger buffer (16384 bytes) Scan results did not fit - trying larger buffer (32768 bytes)
15
Received 18377 bytes of scan results (45 BSSes) CTRL-EVENT-SCAN-RESULTS Selecting BSS from priority group 100 Try to find WPA-enabled AP 0: 00:15:e8:da:41:86 ssid='sn-test' wpa_ie_len=24 rsn_ie_len=0 caps=0x11 skip - SSID mismatch 1: 00:15:e8:da:41:82 ssid='eduroam' wpa_ie_len=24 rsn_ie_len=0 caps=0x11 skip - blacklisted 2: 00:15:e8:da:0d:82 ssid='eduroam' wpa_ie_len=24 rsn_ie_len=0 caps=0x11 skip - blacklisted 3: 00:15:e8:da:0d:86 ssid='sn-test' wpa_ie_len=24 rsn_ie_len=0 caps=0x11 skip - SSID mismatch 4: 00:15:e8:da:16:82 ssid='eduroam' wpa_ie_len=24 rsn_ie_len=0 caps=0x11 skip - blacklisted 5: 00:20:d8:2d:13:06 ssid='sn-test' wpa_ie_len=24 rsn_ie_len=0 caps=0x11 skip - SSID mismatch 6: 00:20:d8:2d:13:02 ssid='eduroam' wpa_ie_len=24 rsn_ie_len=0 caps=0x11 selected based on WPA IE selected WPA AP 00:20:d8:2d:13:02 ssid='eduroam' Trying to associate with 00:20:d8:2d:13:02 (SSID='eduroam' freq=2412 MHz) Cancelling scan request WPA: clearing own WPA/RSN IE Automatic auth_alg selection: 0x1 WPA: using IEEE 802.11i/D3.0 WPA: Selected cipher suites: group 8 pairwise 8 key_mgmt 1 proto 1 WPA: set AP WPA IE - hexdump(len=26): dd 18 00 50 f2 01 01 00 00 50 f2 02 01 00 00 50 f2 02 01 00 00 50 f2 01 00 00 WPA: clearing AP RSN IE WPA: using GTK TKIP WPA: using PTK TKIP WPA: using KEY_MGMT 802.1X WPA: not using MGMT group cipher WPA: Set own WPA IE default - hexdump(len=24): dd 16 00 50 f2 01 01 00 00 50 f2 02 01 00 00 50 f2 02 01 00 00 50 f2 01 No keys have been configured - skip key clearing wpa_driver_wext_set_drop_unencrypted State: DISCONNECTED -> ASSOCIATING wpa_driver_wext_set_operstate: operstate 0->0 (DORMANT) WEXT: Operstate: linkmode=-1, operstate=5 wpa_driver_wext_associate wpa_driver_wext_set_psk Setting authentication timeout: 10 sec 0 usec EAPOL: External notification - portControl=Auto RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP]) RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added Wireless event: cmd=0x8b06 len=8 RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP]) RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added Wireless event: cmd=0x8b04 len=12 RTM_NEWLINK: operstate=0 ifi_flags=0x1003 ([UP]) RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added Wireless event: cmd=0x8c02 len=235 Association info event req_ies - hexdump(len=58): 00 07 65 64 75 72 6f 61 6d 01 08 02 04 0b 16 0c 12 18 24 32 04 30 48 60 6c dd 16 00 50 f2 01 01 00 00 50 f2 02 01 00 00 50 f2 02 01 00 00 50 f2 01 dd 07 00 50 f2 02 00 01 00 resp_ies - hexdump(len=42): 01 08 82 84 8b 0c 12 96 18 24 32 04 30 48 60 6c dd 18 00 50 f2 02 01 01 01 00 03 a4 00 00 27 a4 00 00 42 43 5e 00 62 32 2f 00 WPA: set own WPA/RSN IE - hexdump(len=24): dd 16 00 50 f2 01 01 00 00 50 f2 02 01 00 00 50 f2 02 01 00 00 50 f2 01 RTM_NEWLINK: operstate=0 ifi_flags=0x11003 ([UP][LOWER_UP]) RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added Wireless event: cmd=0x8b15 len=20 Wireless event: new AP: 00:15:e8:d9:a8:82 State: ASSOCIATING -> ASSOCIATED wpa_driver_wext_set_operstate: operstate 0->0 (DORMANT) WEXT: Operstate: linkmode=-1, operstate=5 Associated to a new BSS: BSSID=00:15:e8:d9:a8:82 No keys have been configured - skip key clearing Associated with 00:15:e8:d9:a8:82 WPA: Association event - clear replay counter WPA: Clear old PTK EAPOL: External notification - portEnabled=0 EAPOL: External notification - portValid=0 EAPOL: External notification - portEnabled=1 EAPOL: SUPP_PAE entering state CONNECTING EAPOL: SUPP_BE entering state IDLE EAP: EAP entering state INITIALIZE EAP: maintaining EAP method data for fast reauthentication EAP: EAP entering state IDLE Setting authentication timeout: 10 sec 0 usec Cancelling scan request RTM_NEWLINK: operstate=0 ifi_flags=0x11003 ([UP][LOWER_UP]) RTM_NEWLINK, IFLA_IFNAME: Interface 'wlan0' added RX EAPOL from 00:15:e8:d9:a8:82 Setting authentication timeout: 70 sec 0 usec EAPOL: Received EAP-Packet frame EAPOL: SUPP_PAE entering state RESTART
16
EAP: EAP entering state INITIALIZE EAP: maintaining EAP method data for fast reauthentication EAP: EAP entering state IDLE EAPOL: SUPP_PAE entering state AUTHENTICATING EAPOL: SUPP_BE entering state REQUEST EAPOL: getSuppRsp EAP: EAP entering state RECEIVED EAP: Received EAP-Request id=1 method=1 vendor=0 vendorMethod=0 EAP: EAP entering state IDENTITY CTRL-EVENT-EAP-STARTED EAP authentication started EAP: EAP-Request Identity data - hexdump_ascii(len=40): 00 6e 65 74 77 6f 72 6b 69 64 3d 65 64 75 72 6f _networkid=eduro 61 6d 2c 6e 61 73 69 64 3d 36 2e 30 2c 70 6f 72 am,nasid=6.0,por 74 69 64 3d 32 30 35 30 tid=2050 EAP: using real identity - hexdump_ascii(len=35): 70 77 74 65 73 74 31 40 70 6f 63 2d 6b 64 63 2e pwtest1@poc-kdc. 73 68 6f 77 63 61 73 65 2e 73 75 72 66 6e 65 74 showcase.surfnet 2e 6e 6c .nl EAP: EAP entering state SEND_RESPONSE EAP: EAP entering state IDLE EAPOL: SUPP_BE entering state RESPONSE EAPOL: txSuppRsp TX EAPOL: dst=00:15:e8:d9:a8:82 EAPOL: SUPP_BE entering state RECEIVE RX EAPOL from 00:15:e8:d9:a8:82 EAPOL: Received EAP-Packet frame EAPOL: SUPP_BE entering state REQUEST EAPOL: getSuppRsp EAP: EAP entering state RECEIVED EAP: Received EAP-Request id=2 method=21 vendor=0 vendorMethod=0 EAP: EAP entering state GET_METHOD EAP: Using previous method data for fast re-authentication EAP: Initialize selected EAP method: vendor 0 method 21 (TTLS) CTRL-EVENT-EAP-METHOD EAP vendor 0 method 21 (TTLS) selected EAP: EAP entering state METHOD SSL: Received packet(len=6) - Flags 0x20 EAP-TTLS: Start (server ver=0, own ver=0) EAP-TTLS: Start SSL: (where=0x10 ret=0x1) SSL: (where=0x1001 ret=0x1) SSL: SSL_connect:before/connect initialization SSL: (where=0x1001 ret=0x1) SSL: SSL_connect:SSLv3 write client hello A SSL: (where=0x1002 ret=0xffffffff) SSL: SSL_connect:error in SSLv3 read server hello A SSL: SSL_connect - want more data SSL: 125 bytes pending from ssl_out SSL: 125 bytes left to be sent out (of total 125 bytes) EAP: method process -> ignore=FALSE methodState=MAY_CONT decision=FAIL EAP: EAP entering state SEND_RESPONSE EAP: EAP entering state IDLE EAPOL: SUPP_BE entering state RESPONSE EAPOL: txSuppRsp TX EAPOL: dst=00:15:e8:d9:a8:82 EAPOL: SUPP_BE entering state RECEIVE EAPOL: startWhen --> 0 EAPOL: authWhile --> 0 EAPOL: SUPP_BE entering state TIMEOUT EAPOL: SUPP_PAE entering state CONNECTING EAPOL: SUPP_BE entering state IDLE RX EAPOL from 00:15:e8:d9:a8:82 EAPOL: Received EAP-Packet frame EAPOL: SUPP_PAE entering state RESTART EAP: EAP entering state INITIALIZE EAP: deinitialize previously used EAP method (21, TTLS) at INITIALIZE ENGINE: engine deinit EAP: EAP entering state IDLE EAPOL: SUPP_PAE entering state AUTHENTICATING EAPOL: SUPP_BE entering state REQUEST EAPOL: getSuppRsp EAP: EAP entering state RECEIVED EAP: Received EAP-Request id=3 method=21 vendor=0 vendorMethod=0 EAP: EAP entering state GET_METHOD EAP: Initialize selected EAP method: vendor 0 method 21 (TTLS) EAP-TTLS: Phase2 type: PAP CTRL-EVENT-EAP-METHOD EAP vendor 0 method 21 (TTLS) selected EAP: EAP entering state METHOD SSL: Received packet(len=1010) - Flags 0xc0 SSL: TLS Message Length: 1970 EAP-TTLS: First message did not include Start flag EAP: method process -> ignore=FALSE methodState=DONE decision=FAIL EAP: EAP entering state SEND_RESPONSE EAP: EAP entering state IDLE EAPOL: startWhen --> 0 CTRL-EVENT-TERMINATING - signal 2 received Removing interface wlan0 State: ASSOCIATED -> DISCONNECTED wpa_driver_wext_set_operstate: operstate 0->0 (DORMANT)
17
WEXT: Operstate: linkmode=-1, operstate=5 wpa_driver_wext_deauthenticate No keys have been configured - skip key clearing EAPOL: External notification - portEnabled=0 EAPOL: SUPP_PAE entering state DISCONNECTED EAPOL: SUPP_BE entering state INITIALIZE EAP: EAP entering state DISABLED EAPOL: External notification - portValid=0 wpa_driver_wext_set_wpa wpa_driver_wext_set_drop_unencrypted wpa_driver_wext_set_countermeasures No keys have been configured - skip key clearing EAP: deinitialize previously used EAP method (21, TTLS) at EAP deinit Removed BSSID 00:15:e8:d9:a8:82 from blacklist (clear) Removed BSSID 00:15:e8:da:0d:82 from blacklist (clear) Removed BSSID 00:15:e8:da:16:82 from blacklist (clear) Removed BSSID 00:15:e8:da:41:82 from blacklist (clear) Cancelling scan request Cancelling authentication timeout WEXT: Operstate: linkmode=0, operstate=6
5.4 Firefox logging in /tmp/negotiateauth.log op laptop (client is Firefox) -1210726720[83c45d8]: leaving nsAuthGSSAPI::GetNextToken [rv=80004005] -1210726720[83c45d8]: using REQ_DELEGATE -1210726720[83c45d8]: service = poc-idp.showcase.surfnet.nl -1210726720[83c45d8]: using negotiate-gss -1210726720[83c45d8]: entering nsAuthGSSAPI::nsAuthGSSAPI() -1210726720[83c45d8]: entering nsAuthGSSAPI::Init() -1210726720[83c45d8]: nsHttpNegotiateAuth::GenerateCredentials() [challenge=Negotiate] -1210726720[83c45d8]: entering nsAuthGSSAPI::GetNextToken() -1210726720[83c45d8]: gss_init_sec_context() failed: Unspecified GSS failure. Minor code may provide more information
18
18