DD-WRT PPPoE Passthrough (on WRT54G)

For a PPPoE Passthrough on DD-WRT, enable jffs and do the following steps on a *nix-based system

cd /tmp;
wget http://kamikaze.openwrt.org/8.09.1/brcm-2.4/packages/rp-pppoe-relay_3.10-1_mipsel.ipk;
tar zxf rp-pppoe-relay_3.10-1_mipsel.ipk;
tar zxf data.tar.gz;
scp usr/sbin/pppoe-relay root@:/tmp/

Start the relay agent on the router

/tmp/pppoe-relay -S vlan1 -C br0

Now you can start your pppoe client on your notebook.

Tested with a WRT54G and DD-WRT v23 !

Building DD-WRT Firmware….Part One

Yeah…1 o’clock and i’m not able to sleep….

…and what happend when i’m not able to sleep ? I’m trying something new – yes, okay Christian would say i’m hacking ^^

20 minutes after i started the svn checkout from the dd-wrt source, i’ve read that the source is approximately 20GB huge – wtf ?

svn co svn://svn.dd-wrt.com/DD-WRT .

So now i try it next day…oh wait in a couple of hours ­čśë

freeRADIUS & DD-WRT mit WPA2 und Windows XP – Teil 2

So nach dem wir nun dem freeRADIUS EAP & TLS u.s.w beigebracht haben, k├Ânnen wir nun den Router konfigurieren. In meinem Fall ist das das Linksys WRT54GL mit DD-WRT v24.

Einstellungen f├╝r DD-WRT
Einstellungen f├╝r DD-WRT

Als erstes Loggen wir uns auf dem Router ein. Klicken dann auf Wireless und dann auf Wireless Security. Dort w├Ąhlen wir WPA2 Enterprise aus. Nun m├╝ssen wir unseren Server eintragen, wo wir gerade freeRADIUS installiert haben. Desweiteren brauchen wir das RADIUS Shared Secret. Hier denken wir uns ein Passwort aus. Diese m├╝ssen wir sp├Ąter in die Konfiguration des freeRADIUS Servers eintragen. Port und Key Renewal Interval k├Ânnen wir so belassen. Fertig – der Router fragt nun immer den Radius-Server wenn sich ein Client anmelden m├Âchte. Teilweise muss man den WPA Algorithms auf TKIP umstellen. Zum Anfang k├Ânnen wir es auch machen und stellen es sp├Ąter dann wieder AES um. TKIP unterst├╝tzen eigentlich alle WLAN-Karten, und somit haben wir f├╝r den Anfang schon ein Fehlerpunkt ausger├Ąumt.

Wenn jemand schon ein CA hat, sollte jetzt f├╝r den User und den Server Zertifikate ausstellen. Sollte noch keine CA ( Certificate Authority ) vorhanden sein, erstellen wir uns nun ein. Wir wechseln in der Verzeichnis /usr/lib/ssl/misc und dort passen wir den Eintrag CATOP=./devnu11CA entsprechend unseren Vorstellungen an. Wenn wir fertig sind, reicht ein Aufruf von ./CA.sh -newca im Verzeichnis. Alle Fragen beantwortet ? Dann k├Ânnen wir mit

openssl req -new -nodes -keyout server.key.pem -out server.req.pem

den Request f├╝r das Zertifikat vom Server erstellen. Nur nur signieren und wir haben das Zertifikat f├╝r den Server.

openssl ca -out server.cert.pem -infiles ./server.req.pem

hier werden wir nun nach der Passphrase gefragt, die wir beim erstellen unserer CA eingetippt haben. Das gleich machen wir nun f├╝r den Client.

openssl req -new -nodes -keyout rmichel.key.pem -out rmichel.req.pem
openssl ca -out rmichel.cert.pem -infiles ./rmichel.req.pem

Das server.cert.pem und das cacert.pem kopieren wir nun nach /etc/freeradius/certs. Dort ├Ąndern wir den Besitzer mit

chown root:freerad *.pem

und ├Ąndern auch die Zugriffsrechte auf 440 mit

chmod 440 *.pem

Jetzt sind wir fast fertig. Nun m├╝ssen wir noch den freeRADIUS einrichten. Dazu nach /etc/freeradius/certs wechseln und

openssl dhparam -check -text -5 512 -out dh
dd if=/dev/urandom of=random count=2

ausf├╝hren. Beides dient der TLS Verschl├╝sselung. Danach editieren wir dann die /etc/freeradius/clients.conf und f├╝gen die folgenden Zeilen hinzu

client 192.168.26.254/24 {
secret = passwort
shortname = wrt54gl
nastype = other
}

Hier ist steht die IP Adresse des WLAN Accesspoints, das RADIUS Shared Secret was wir schon im Accesspoint eingetragen haben und noch ein Alias. Dann ├Âffnen wir die /etc/freeradius/eap.conf. Nun passen wir folgende EIntr├Ąge an

default_eap_type = tls
private_key_file = ${certdir}/server.key.pem
certificate_file = ${certdir}/server.cert.pem
CA_file = ${cadir}/cacert.pem

Damit sollte der RADIUS-Server fertig sein. Einfach mal mit freeradius -X testen ob der Server startet (Sollte er eigentlich ­čśë )

Nun m├╝ssen wir noch fix unser Client-Zertifikat in das PKCS12-Format umwandeln mit

openssl pkcs12 -nodes -export -in rmichel.cert.pem -inkey rmichel.key.pem -out rmichel.cert.p12 -clcerts

Das m├╝sst ihr zusammen mit dem cacert.pem auf einen USB-Stick kopieren oder gleich auf den Windows Rechner. Das war’s ! Wir sind mit dem RADIUS-Server fertig.

Nun sind wir auf dem Windows-Rechner, und starten ├╝ber Start->Ausf├╝hren->mmc die Microsoft-Mangment-Console, kurs mmc. Dort auf Datei->Snap-In hinzuf├╝gen und dann auf Hinzuf├╝gen…. Dann nach unten Scrollen und Zertifikate hinzuf├╝gen und Eigenes Benutzerkonto ausw├Ąhlen. Jetzt f├╝gen wir das cacert.pem mit Rechtsklick auf Vertrauensw├╝rdige Stammzertifizierungsstellen->Alle Aufgabe->Importieren ein. Das USERNAME.cert.pem ├╝ber Rechtsklick Eigene Zertifikate->Alle Aufgabe->Importieren und hier fragt Windows nach der Passpharse.

Lediglich das passende WLAN muss noch eingerichtet werden. Auf Start->Einstellungen->Netzwerkverbindungen->Drahtlose Netzwerkverbindung Rechtsklick und Verf├╝gbare drahtlose Netzwerke anzeigen. Im Infofenster Drahtlosnetzwerk f├╝r Heim- bzw. kleines Firmennetzwerk einrichten anklicken. Nun tragen Sie die SSID ein, und stellen WPA2 ein. Datenverschl├╝sselung TKIP und der EAP-Typ auf Smartcard oder anderes Zertifikat einstellen. Wenn alles geklappt hat sollten wir jetzt in der Ausgabe von freeRADIUS (welches wir ja mit freeradius -X gestarten haben) eine paar Meldungen sehen, und auf dem Windows-Client eine erfolgreich verbunden WLAN-Verbindung.

Done.

Bei Fragen einfach ein Kommentar hinterlassen. Ich werde versuchen zuhelfen ­čÖé

freeRADIUS & DD-WRT mit WPA2 und Windows XP – Teil 1

RADIUS steht f├╝r Remote Authentication Dial In User Service und ist ein Triple-A-System (Authentifizierung, Autorisierung und Accounting). Dieser kann in einem WLAN als zentraler Authentifizierungsserver dienen und genau dass will ich hier mal dokumentieren !

Da ich Zertifikate einsetzen wollte, musste ich erstmal den freeRADIUS unter Debian Etch/Lenny neubauen, weil dieser keine TLS/EAP/PEAP/TTLS Unterst├╝tzung hat (Lizenzproblem mit OpenSSL). Also kurz hier vorbeischauen und Links unter “Source package” auf┬á *.dsc, *.orig und *.diff klicken um den Quellcode runterzuladen. Diesen nach /usr/src kopieren und mit dpkg-source -x *.dsc entpacken. Mit ls -l pr├╝fen ob folgender Ordner existiert “freeradius-2.0.4+dfsg” (Stand 11.09.08)

Nun kann man mit einem Blick in debian/control sehen, welche Bedingungen erf├╝llt sein m├╝ssen (Build-Depends), damit wir das Paket neubauen k├Ânnen.

autotools-dev, debhelper (>= 6.0.7), libgdbm-dev, libiodbc2-dev, libkrb5-dev, libldap2-dev, libltdl3-dev, libmysqlclient15-dev | libmysqlclient-dev, libpam0g-dev, libpcap-dev, libperl-dev, libpq-dev, libsasl2-dev, libsnmp-dev, libtool, python-dev

Zu diesen Paketen kommt noch die libssl-dev, die wir jetzt gleich an das Zeilenende von Build-Depends mit anh├Ąngen. Die Zeile sollte dann wie folgt aussehen

Source: freeradius
Build-Depends: autotools-dev, debhelper (>= 6.0.7), libgdbm-dev, libiodbc2-dev, libkrb5-dev, libldap2-dev, libltdl3-dev, libmysqlclient15-dev | libmysqlclient-dev, libpam0g-dev, libpcap-dev, libperl-dev, libpq-dev, libsasl2-dev, libsnmp-dev, libtool, python-dev, libssl-dev
Section: net

Jetzt einfach ein
aptitude install autotools-dev debhelper libgdbm-dev libiodbc2-dev libkrb5-dev libldap2-dev libltdl3-dev libmysqlclient-dev libpam0g-dev libpcap-dev libperl-dev libpq-dev libsasl2-dev libsnmp-dev libtool python-dev libssl-dev

Wenn das fertig ist, k├Ânnen wir uns mit einem Editor die debian/rules ansehen. Hier alles von –without-rlm_eap-* zu –with-rlm_eap-* ├Ąndern au├čer –without-rlm_eap_tnc, dass bitte so lassen. Das gleiche auch mit –without-openssl und wahlweise noch mit –without-rlm_otp. Dann suchen wir noch in der rules den Anschnitt

for pkg in ${pkgs} ; do \
if dh_shlibdeps -p $$pkg -- -O 2>/dev/null | grep -q libssl; then \
echo "$$pkg links to openssl" ;\
exit 1 ;\
fi ;\
done

und entfernen diesen. Wenn ich/wir nichts vergessen haben dann in das freeradius Verzeichnis wechseln und dpkg-buildpackage -uc -us ausf├╝hren. Am Ende sollten wir in /usr/src unsere Pakete vorfinden. Hier meine Liste

root@build debian [0] # ll
insgesamt 2,2M
-rw-r--r-- 1 root root 201K 2008-09-09 10:11 freeradius-common_2.0.4+dfsg-7_all.deb
-rw-r--r-- 1 root root 927K 2008-09-09 10:11 freeradius-dbg_2.0.4+dfsg-7_i386.deb
-rw-r--r-- 1 root root 127K 2008-09-09 10:11 freeradius-dialupadmin_2.0.4+dfsg-7_all.deb
-rw-r--r-- 1 root root 17K 2008-09-09 10:11 freeradius-iodbc_2.0.4+dfsg-7_i386.deb
-rw-r--r-- 1 root root 18K 2008-09-09 10:11 freeradius-krb5_2.0.4+dfsg-7_i386.deb
-rw-r--r-- 1 root root 34K 2008-09-09 10:11 freeradius-ldap_2.0.4+dfsg-7_i386.deb
-rw-r--r-- 1 root root 25K 2008-09-09 10:11 freeradius-mysql_2.0.4+dfsg-7_i386.deb
-rw-r--r-- 1 root root 36K 2008-09-09 10:11 freeradius-postgresql_2.0.4+dfsg-7_i386.deb
-rw-r--r-- 1 root root 72K 2008-09-09 10:11 freeradius-utils_2.0.4+dfsg-7_i386.deb
-rw-r--r-- 1 root root 5,3K 2008-09-09 10:11 freeradius_2.0.4+dfsg-7.diff.gz
-rw-r--r-- 1 root root 1,3K 2008-09-09 10:11 freeradius_2.0.4+dfsg-7.dsc
-rw-r--r-- 1 root root 5,3K 2008-09-09 10:11 freeradius_2.0.4+dfsg-7_i386.changes
-rw-r--r-- 1 root root 503K 2008-09-09 10:11 freeradius_2.0.4+dfsg-7_i386.deb
-rw-r--r-- 1 root root 102K 2008-09-09 10:11 libfreeradius-dev_2.0.4+dfsg-7_i386.deb
-rw-r--r-- 1 root root 84K 2008-09-09 10:11 libfreeradius2_2.0.4+dfsg-7_i386.deb

Diese k├Ânnte etwas anderst aussehen, sollte aber bis auf die Versionsnummer vollst├Ąndig sein.

Für die Schreibfaulen: Hier die diff für die Änderungen. Runterladen, dann in das freeradius Verzeichnis wechseln und dann patch -p1 -i ../pfad/zur/diff ausführen.

Nun k├Ânnen wir unseren RADIUS Server mit

dpkg -i freeradius_2.0.4+dfsg-6_i386.deb freeradius-common_2.0.4+dfsg-6_all.deb freeradius-utils_2.0.4+dfsg-6_i386.deb libfreeradius2_2.0.4+dfsg-6_i386.deb

einfach installieren. Bei Fragen, Fehlern oder Anmerkungen einfach einen Kommentar da lassen.

Auf die Pakete kann auch via
deb ftp://zion.devnu11.net/ unstable main contrib non-free
zugegriffen werden.