it:linux:wpa-eap

Dies ist eine alte Version des Dokuments!


WPA-EAP

Dieser Artikel soll das Setup einer WPA-EAP Authentifizierung für WLAN-Accesspoints beschreiben.

Das Setup wird ein „heimnetz“ und „gastnetz“ erstellen, wobei man sich im „heimnetz“ per Zertifikat ( EAP-TLS) authentifiziert und im „gastnetz“ per Username und Passwort ( EAP-PEAP).

Strukturübersicht

Die beiden Netze („gastnetz“ und „heimnetz“) werden zwischen den APs (Accesspoints) und dem zentralen Router über VLAN gekapselt.

Als Hardware wird ein OpenWRT kompatibles Gerät, der TL-1043ND von TP-Link, eingesetzt. Des Weiteren wird als Betriebssystem der APs OpenWrt Backfire 10.03.1 eingesetzt.

Als Radius-Server wird Freeradius verwendet.

Will ein Client (in unserem Beispiel ein AP) eine Verbindung zum Radiusserver aufbauen, benötigt man einen entsprechenden Eintrag in der Datei „/etc/freeradius/client.conf“.

...
client 10.0.0.1 {
  secret = changeme
  shortname = ap-main
  nastype = other
}
...

Des Weiteren ist EAP zu konfigurieren. „/etc/freeradius/eap.conf“

	eap {		
		default_eap_type = tls		
		timer_expire     = 60
		ignore_unknown_eap_types = no		
		cisco_accounting_username_bug = no		
		max_sessions = 4096
 
		tls {			
			certdir = ${confdir}/certs
			cadir = ${confdir}/certs
			private_key_file = ${certdir}/freeradius.key			
			certificate_file = ${certdir}/freeradius.crt
			CA_file = ${cadir}/ca.crt
			dh_file = ${certdir}/dh2048.pem
			random_file = /dev/urandom
			check_crl = no
			CA_path = ${cadir}		    
			cipher_list = "DEFAULT"
 
			cache {			      
			      enable = no
			      lifetime = 24 # hours
			      max_entries = 255
			}			
 
		}
 
		peap {			
			default_eap_type = mschapv2
			copy_request_to_tunnel = no
			use_tunneled_reply = no
			virtual_server = "inner-tunnel"
		}
 
		mschapv2 {
		}
	}

„/etc/freeradius/sites-available/myconfig“

authorize {
	preprocess
  if("%{NAS-Identifier}" == "homenet") {
    update control {
      EAP-TLS-Require-Client-Cert = Yes
    }
    eap
  }
 
  if("%{NAS-Identifier}" == "guestnet") {
    files
    eap
  }
}
 
authenticate {
	eap
}
 
preacct {
	preprocess
	acct_unique
	suffix
	files
}
 
accounting {
	detail
	unix
	radutmp
	exec
	attr_filter.accounting_response
}
 
session {
	radutmp
}
 
post-auth {
	exec
	Post-Auth-Type REJECT {
		attr_filter.access_reject
	}
}
 
pre-proxy {
}
 
post-proxy {
	eap
}

Das hier ist die zentrale Konfig des Radiusservers. Es wird zwischen zwei NAS-Identifier unterschieden: „guestnet“ und „homenet“. Beim Anmelden im „homenet“ wird ein Client-Zertifikat verlangt.

Config aktivieren:

cd /etc/freeradius
rm sites-enabled/default
ln -s sites-available/myconfig sites-enabled

Wie in der Konfigdatei zu sehen ist, benötigt man eine Art PKI. Um diese Anzulegen wird easy-rsa verwendet. Bei Verwendung von Ubuntu findet man easy-rsa nach der Installation des Pakets „openvpn“ unter „/usr/share/doc/openvpn/examples/easy-rsa/“.

  1. „vars“ editieren:
    ...
    export KEY_COUNTRY="DE"
    export KEY_PROVINCE="BY"
    export KEY_CITY="MeinStadt"
    export KEY_ORG="ex23"
    export KEY_EMAIL=pki@home.local
    export KEY_CN=wpa-eap-pki
    export KEY_NAME=ex23
    export KEY_OU=it_linux
  2. Vorbereiten:
    source ./vars
    ./build-dh && ./build-ca
  3. Zertifikat für den Server erzeugen:
    ./build-key-server freeradius
  4. Zertifikat für einen Client erzeugen:
    ./build-key client01
  5. Zertifikat (PKCS12) für einen Client (z.B. IPhone, Windows, …) erzeugen:
    ./build-key client02

Alle erzeugten Dateien befinden sich anschließend im Verzeichniss „keys“:

/tmp/easy-rsa/2.0 % ls keys
01.pem  client01.crt  client02.p12    freeradius.csr      serial
02.pem  client01.csr  client-new.crt  freeradius.key      serial.old
03.pem  client01.key  client-new.csr  index.txt
04.pem  client02.crt  client-new.key  index.txt.attr
ca.crt  client02.csr  dh1024.pem      index.txt.attr.old
ca.key  client02.key  freeradius.crt  index.txt.old
  • ca.crt: Das Certificate-Authority Zertifikat
  • freeradius.key: Der Private Schlüssel des Radiusservers
  • freeradius.crt: Das Zertifikat des Radiusservers

Diese Dateien werden unter „/etc/freeradius/certs“ abgelegt.

  • ca.crt: Das Certificate-Authority Zertifikat
  • client01.key: Der Private Schlüssel des Clients
  • client01.crt: Das Zertifikat des Clients

Im Falle einer PKCS12 Datei, muss nur diese verteilt werden.

  • it/linux/wpa-eap.1345022097.txt.gz
  • Zuletzt geändert: 2015/12/24 14:25
  • (Externe Bearbeitung)