Kontrollierte WLAN Zugänge

Werbung
Praktikum Protokolle
Praktikum Protokolle
Thema
Kontrollierte WLAN Zugänge
Dimitri Langlitz
[email protected]
Matrikelnummer: 5008546
Norbert Otten
[email protected]
Matrikelnummer: 5008436
Index
1.
2.
3.
4.
5.
6.
Aufgabenbeschreibung ................................
Projektziel .....................................................
Funktionsmodell ...........................................
Projektaufbau ...............................................
4.1 Linksys WLAN Router .........................
4.2 Chillispot ................................................
4.3 Apache ....................................................
4.4 MySQL ...................................................
4.5 Freeradius ..............................................
4.6 Asterisk ...................................................
4.7 Perl Skript ..............................................
4.8 Projekt Plan ...........................................
Anhang ..........................................................
5.1 Dialup Admin .........................................
5.2 Protokolle ...............................................
5.2.1
Radius ......................................
5.2.2
Session Initiation Protocol ......
Literatur ........................................................
1
2
2
3
5
5
7
9
10
12
15
18
20
21
21
22
22
24
25
Praktikum Protokolle
1. Aufgabenbeschreibung
Ein WLAN-Zugang soll nur individuell kontrolliert stattfinden können. Das WLAN wird
unverschlüsselt betrieben. Nach Einbindung in das WLAN soll dem Client-System zunächst
nur der Zugang zu einer HTTP-Anmeldeseite ermöglicht werden. Erst nach erfolgreicher
Anmeldung wird der Clientrechner für den allgemeinen Netzwerkbetrieb freigegeben. Die
Zuteilung der Anmeldedaten erfolgt im Endbetrieb durch ein SMS-System. Der Anwender
wählt eine vorgegebene Telefonnummer an, gibt seine Handynummer als Zusatzinformation
ein und erhält die Anmeldedaten per SMS. Die Anmeldedaten sind individuell und nur für eine
Anmeldung gültig. In einer Datenbank sollen die Verbindungsdaten hinterlegt werden.
Folgende Informationen sollen zugänglich sein:
- Online-Zeit eines bestimmten Anwenders (die Abmeldung vom Netzwerk muss erkannt
werden können, ohne dass sich der Anwender explizit abmeldet).
- Zuordnung der Verbindungen ins Internet zu einem bestimmten Anwender (Handy-Nummer).
Stellen Sie zunächst ein komplettes Funktionsmodell auf. Prüfen Sie, welche Informationen
Sie benötigen und wie Sie an diese Informationen gelangen können. Prüfen Sie, mit welchen
Mitteln Sie einzelne Funktionen realisieren können. Vor einer Implementation ist eine
Abstimmung mit mir notwendig. Das Projekt ist mit einem Bericht und einer Kurzpräsentation
abzuschließen.
2. Projektziel
Ein System, dass einem Benutzer einen Internetzugang über einen WLAN
Zugriffspunkt zur Verfügung stellt, wird auch als Hot Spot bezeichnet. Ein Ziel des
Projekts ist der Aufbau eines solchen Systems. Die Anmeldedaten der Benutzer
müssen in der Regel manuell bearbeitet werden. Ein weiteres Ziel des Projekts besteht
darin, die Bearbeitung dieser Daten zu automatisieren. Ein Benutzereintrag soll
automatisch, nach bestimmten Kriterien, erstellt oder gelöscht werden. Ein Kriterium
für das Löschen eines Benutzers könnte die verbrauchte Onlinezeit oder das
überschreiten einer bestimmten Download
Menge sein. Die Installation der
verwendeten Komponenten wird in der Dokumentation nicht beschrieben.
2
Praktikum Protokolle
3. Funktionsmodell
Einen grundlegenden Aufbau stellt das Funktionsmodell dar. Der Zugang zum WLANNetz ist als Open System Authentication realisiert. Das bedeutet jeder Client kann sich
ohne zusätzlichen Schlüssel am WLAN-Netz anmelden. Einen Zugang zum Internet
erhält der Client allerdings erst nach erfolgreicher Anmeldung auf einer speziellen
Webseite. Nach Eingabe der korrekten Anmeldedaten kann der Benutzer auf das
Internet zugreifen. Um die Anmeldedaten zu erhalten, ruft der Benutzer einen Call
Server an und gibt über die Telefontastatur seine Handynummer ein. Nach
erfolgreicher Eingabe wird eine SMS mit den Anmeldedaten an den User gesendet.
Client
Internetzugriffspunkt (Open WLAN)
WLAN Router
Server
HTTP
Radius
SQL
NAS
Gateway
Internet
Client
Anmeldedaten
PSTN
Call Server
SMS
SQL
Abbildung 1 : Projektplan
3
Praktikum Protokolle
Für den Projektaufbau werden ausschließlich Open-Source Komponenten verwendet.
In der Dokumentation wird die Konfiguration der einzelnen Komponenten beschrieben.
1.
Linksys WRT54GS WLAN Router
Mit diesem Router stellen wir einen WLAN Zugangspunkt zur Verfügung.
2.
Chillispot
Diese Software dient als NAS (Network Access Server). Ein NAS sendet alle
Authentifizierungsanfragen und Accounting-Informationen an einen Radius
Server weiter.
3.
Apache
Der Webserver Apache wird für eine Login Seite verwendet. Auf dieser Seite
können die Benutzern ihre Anmeldedaten für den Hot Spot eingeben.
4.
MySQL
Das Datenbanksystem MySQL benötigen wir für die Anmeldedaten. Dort werden
Benutzername, Passwort, Onlinezeit und weitere Accounting-Informationen
gespeichert.
5.
Freeradius
Den Radius Server realisieren wir mit der Software Freeradius. Hierbei handelt es
sich um einen zentralen Authentifizierungs-Server. Die Authentifizierung der
Benutzer kann über ein Datenbanksystem, verschiedene Verzeichnisdienste oder
über Konfigurationsdateien erfolgen.
6.
Asterisk
Asterisk ist eine Telefonanlagensoftware die uns eine flexible Anbindung an das
öffentliche Telefonnetz (PSTN) bietet. Die Anbindung kann über Analog-, ISDN–
und VoIP-Telefonie realisiert werden. Ein Leistungsmerkmal ist das integrierte
IVR (Interactive Voice Response) das wir für die Annahme der Anrufer
verwenden. Das IVR System ist ein automatisiertes Dialogsystem, es spielt dem
Anrufer bestimmte Ansagen vor und reagiert auf Telefoneingaben.
7.
Dialup Admin
Der Dialup Admin ist ein PHP Web Interface für die Bearbeitung der Radius
Benutzer. Für unser Projekt ist er nicht notwendig, bietet aber hilfreiche
Funktionen zur Administration. Der Dialup Admin ist im Paket des Freeradius
enthalten und wird im Anhang beschrieben.
PSTN
Apache
Chillispot
Freeradius
Asterisk
MySQL
Internet
Abbildung 2 : Projekt Komponenten
4
Praktikum Protokolle
4. Projektaufbau
4.1 Linksys WLAN Router
Für den Linksys WRT54GS gibt es eine GNU/Linux Distribution die eine Hot Spot
Funktionalität bietet. Als Teil des Betriebssystem ist die Open Source Software
Chillispot bereits implementiert. Nach dem Flashen des Routers sind die Einstellungen
über eine grafische Oberfläche zugänglich. Die folgenden Abbildungen zeigen, welche
Änderungen für unser Projekt vorgenommen wurden. Die genaue Beschreibung der
Distribution befindet sich auf der Internetseite http://www.dd-wrt.com/wiki.
Der DHCP Server wird an dieser Stelle
deaktiviert. Die IP Adressvergabe
übernimmt der Chillispot.
Abbildung 3 : Konfiguration der Netzwerkeinstellungen
5
Praktikum Protokolle
Linksys Router
192.168.1.0 // Im Projekt nicht verwendet.
Freeradius
192.168.0.64
Gateway
Internet
Chillispot
192.168.0.9
192.168.0.66
Abbildung 4 : Netzwerkübersicht
Die Radiusfunktion wird an dieser Stelle deaktiviert. Die Kommunikation mit dem
Radius Server übernimmt der Chillispot.
Abbildung 5 : Linksys Radiusfunktion
An dieser Stelle wird der Security Mode deaktiviert damit der Client freien Zugang zum
WLAN-Netz hat.
Abbildung 6 : Linksys Open Authentication
6
Praktikum Protokolle
4.2 Chillispot
Die Software Chillispot dient als Network Access Server (NAS). Ein NAS nimmt die
Authentifizierungsanfragen vom Benutzer entgegen und leitet sie an den
eingetragenen Radius Server weiter. Der Radius Server informiert den NAS, welche
Attribute er für den Benutzer vorliegen hat. Im Anhang befindet sich ein detaillierter
Protokollablauf.
hotspotlogin.cgi
Abbildung 7 : Chillispot Konfiguration
Radius Server : Die IP Adresse vom Radius Server.
DNS IP
: Die IP Adresse vom Internet Gateway.
Redirect URL : URL der Login Seite für die Eingabe der Anmeldedaten. Zu dieser
URL werden alle Clientanfragen umgeleitet (hotspotlogin.cgi).
Shared Key
: Über diesen geheimen Schlüssel authentifiziert sich der Chillispot am
Freeradius. Der Key muss auf dem Freeradius Server in der Datei
clients.conf eingetragen werden.
UAM Secret : Mit diesem Passwort hat Chillispot den Zugang zur Login Seite für
die Benutzeranmeldung. Die Login Seite ist ein CGI und hat den
Namen hotspotlogin.cgi. In der Datei wird das UAM Secret
eingetragen.
UAM Allowed : Hier können Adressen eingetragen werden, die für das WLAN Netz
frei zugänglich sind. Damit die Benutzer sich anmelden können ist die
Login Seite freigegeben.
Additional O. : In dem Eingabefenster können Parameter angegeben werden,
die Chillispot beim Start ausführt.
7
Praktikum Protokolle
Bevor es zum nächsten Schritt geht wird geprüft ob der Chillispot funktionstüchtig ist.
Hierzu kann man eine Telnet Verbindung zum Router aufbauen und sich die ProzessTabelle mit dem Befehl ps anzeigen lassen.
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
DD-WRT v23 SP2 std (c) 2006 NewMedia-NET GmbH
Release: 09/15/06 (SVN revision: 3932)
Linksys login: bla
Password:
==========================================================
____ ___ __
______ _____
____ _____
| _ \| _ \ \ \
/ / _ \_ _| __ _|___ \|___ /
|| | || ||____\ \ /\ / /| |_) || | \ \ / / __) | |_ \
||_| ||_||_____\ V V / | _ < | | \ V / / __/ ___) |
|___/|___/
\_/\_/ |_| \_\|_| \_/ |_____|____/
DD-WRT v23 SP2
http://www.dd-wrt.com
==========================================================
DD-WRT VeryBusyBox v1.2.1 (2006.09.15-18:06+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
~ # ps
PID Uid
1 root
2 root
3 root
4 root
5 root
6 root
11 root
14 root
64 root
97 root
100 root
106 root
109 root
178 root
223 root
381 root
489 root
491 root
VmSize Stat Command
384 S /sbin/init noinitrd
SW [keventd]
RWN [ksoftirqd_CPU0]
SW [kswapd]
SW [bdflush]
SW [kupdated]
SW [mtdblockd]
256 S /sbin/watchdog
304 S resetbutton
396 S /usr/sbin/telnetd
556 S httpd
324 S dnsmasq --conf-file /tmp/dnsmasq.conf
296 S /sbin/wland
340 S process_monitor
276 S /usr/sbin/cron
4828 S /usr/sbin/chilli -c /tmp/chilli.conf
528 S -sh
404 R ps
Abbildung 8 : Chillispot auf dem Linksys Router
Sollte der WLAN Router keine Hot Spot Funktion anbieten, kann Chillispot auch auf
einem Linux Rechner betrieben werden. Die Konfigurationseinstellungen der Software
befinden sich in der Datei chilli.conf. Weitere Information zum Chillispot gibt es auf der
Internetseite http://www.chillispot.org/.
Zusammenfassung
Alle Verbindungsanfragen werden bis zur korrekten Authentifizierung vom Chillispot
abgelehnt. Http Anfragen werden auf die hotspotlogin.cgi Seite umgeleitet. Die
geheimen Schlüssel befinden sich in den Dateien clients.conf (Freeradius) und
hotspotlogin.cgi (Apache).
8
Praktikum Protokolle
4.3 Apache
Um den Benutzern eine Anmeldeseite zur Verfügung zu stellen wird ein HTTP Server
benötigt. Wir haben uns für den Apache Web Server Version 2.2 entschieden und
beschreiben in diesem Kapitel die Konfiguration.
Nach der Installation von Apache wird die Datei hotspotlogin.cgi in das cgi-bin
Verzeichnis kopiert und der Eintrag $uamsecret = angepasst (siehe Seite 6).
cp /usr/share/doc/chillispot-1.0/hotspotlogin.cgi /Pfad zum/cgi-bin
chmod 755 hotspotlogin.cgi
Um eine verschlüsselte Verbindung vom Browser des Benutzers zum Apache zu
realisieren, wird als erstes ein SSL Zertifikat benötigt. Der Befehl apache2-sslcertificate führt einige Abfragen durch und erstellt das Zertifikat apache.pem. Mit dem
Befehl a2enmod ssl wird das SSL Modul für den Apache aktiviert. Als nächstes erfolgt
die Verzeichniskonfiguration.
cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ssl
ln -s /etc/apache2/sites-available/ssl
/etc/apache2/sites-enabled/ssl
Die Datei ssl um folgende Einträge erweitern:
NameVirtualHost *:443
<virtualhost *:443>
ServerAdmin webmaster@localhost
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
...
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</directory>
...
</virtualhost>
Zum Schluss wird in der Datei ports.conf der Eintrag Listen 443 hinzugefügt.
Jetzt kann man einen Browser starten um die Einstellungen zu testen.
=> https://192.168.0.9/cgi-bin/hotspotlogin.cgi
Abbildung 9 : SSL Zertifikat
9
Praktikum Protokolle
4.4 MySQL
Für die Verwaltung der Benutzerdaten und der Accounting-Informationen verwenden
wir das Datenbanksystem MySQL. Das Listing 1 zeigt die durchgeführten
Konfigurationsschritte.
# sudo mysql
mysql> create database radius;
mysql> grant all privileges on radius.* to 'user'@'localhost' identified by 'passwort';
mysql> flush privileges;
Abbildung 10 : MySQL Datenbank für Freeradius
Es wird eine Datenbank mit dem Name radius angelegt und der Benutzer user mit dem
Passwort passwort definiert. Über diesen Account kann der Freeradius später auf die
Datenbank zugreifen. Im Verzeichnis \freeradius-1.x.y\doc\examples befindet sich ein
SQL Schema für die Benutzerdaten und das Accounting. Das Schema kann wie folgt
in die Datenbank radius importiert werden.
cat /freeradius/examples/mysql.sql | mysql -D radius -u user -p passwort
Für die Accounting-Informationen benötigen wir noch vier zusätzliche Tabellen. Diese
Tabellen befinden sich im sql Verzeichnis des Dialup Admin.
> mysql -D radius -u user -p passwort < badusers.sql
> mysql -D radius -u user -p passwort < mtotacct.sql
> mysql -D radius -u user -p passwort < totacct.sql
> mysql -D radius -u user -p passwort < userinfo.sql
Abbildung 11 : MySQL Schema
Die Datenbank radius sollte jetzt die dargestellten Tabellen
besitzen. Ein Testuser kann mit diesem Befehl angelegt
werden:
> INSERT INTO radcheck (UserName, Attribute, Value)
VALUES ('Test', 'Password', 'passwort');
Abbildung 12 : MySQL Tabellen
10
Praktikum Protokolle
Die Abbildungen auf dieser Seite zeigen die wichtigsten Tabellen der radius
Datenbank. In der Tabelle radacct werden alle Accounting-Informationen gespeichert.
Man findet hier unter anderem die Onlinezeit (AcctSessionTime) und die IP-Adresse
des Benutzers (FramedIPAdress).
Abbildung 13 : Die Tabelle radacct
Die Anmeldedaten der Benutzer befinden sich in der Tabelle radcheck. Die Tabelle
wird vom Freeradius zur Verifizierung der Anmeldedaten verwendet.
Abbildung 14 : Die Tabelle radcheck
In der Tabelle userinfo stehen zusätzliche Informationen zum Benutzer. Für die
Authentifizierung ist die Tabelle nicht relevant.
Abbildung 15 : Die Tabelle userinfo
11
Praktikum Protokolle
4.5 Freeradius
Mit dem Chillispot, Apache und dem MySQL Datenbanksystem haben wir jetzt alle
Komponenten zusammen die der Freeradius benötigt. Die Konfiguration der
Freeradius Software wird in den Dateien clients.conf, sql.conf und radiusd.conf
vorgenommen.
WLAN Router
Server
Chillispot
Apache
MySQL
192.168.0.64
192.168.0.9
Freeradius
Gateway
192.168.0.66
Internet
Abbildung 16 : Netzwerkübersicht
In der Datei clients.conf wird der Chillispot Zugang eingestellt.
client 192.168.0.64 {
secret
= test
shortname = linksys
nastype
= other
}
Abbildung 17 : Passwort Positionen
Die folgende Änderungen werden in der Datei sql.conf vorgenommen.
sql {
# Database type
# Current supported are: rlm_sql_mysql, rlm_sql_postgresql,
# rlm_sql_iodbc, rlm_sql_oracle, rlm_sql_unixodbc, rlm_sql_freetds
driver
= "rlm_sql_mysql"
# Connect info
server
= "localhost"
login
= "user"
password = "passwort"
# Database table configuration
radius_db = "radius"
...
Abbildung 18 : SQL Einstellungen für Freeradius 1
12
Praktikum Protokolle
Damit der Freeradius die Informationen für den Benutzer aus der SQL Datenbank
nimmt, wird die Datei radiusd.conf angepasst.
authorize {
preprocess
chap
mschap
# auth_log
# digest
suffix
sql
# file
# eap
# etc_smbpasswd
# ldap
}
accounting {
acct_unique
detail
# counter
unix
sql
radutmp
# sradutmp
}
session {
sql
}
Abbildung 19 : SQL Einstellungen für Freeradius 2
Der Freeradius ist nun konfiguriert und kann mit freeradius –X gestartet werden.
Meldet sich ein Benuzter am WLAN-Netz an und öffnet anschließend im Browser eine
URL wird er auf die Login Seite umgeleitet.
Nach Eingabe der Anmeldedaten sendet der
Chillispot eine Authentifizierungsanfrage an den
Freeradius. Dieser überprüft ob der Username
und das Passwort in der Datenbank radius
vorhanden sind. Ist das der Fall wird der
Zugang zum Internet freigegeben. Die Ausgabe
auf der Konsole sieht dann wie in Abbildung 21
aus.
Abbildung 20 : Login Seite
rad_recv: Accounting-Request packet from host 192.168.0.64:1025, id=2, length=134
Acct-Status-Type = Start
User-Name = "manuell"
Calling-Station-Id = "00-40-F4-81-48-20"
Called-Station-Id = "00-14-BF-3B-FD-57"
NAS-Port-Type = Wireless-802.11
NAS-Port = 0
NAS-Port-Id = "00000000"
NAS-IP-Address = 0.0.0.0
NAS-Identifier = "Linksys"
Framed-IP-Address = 192.168.182.3
Acct-Session-Id = "4641192000000000"
Processing the preacct section of radiusd.conf
...
radius_xlat: 'manuell'
rlm_sql (sql): sql_set_user escaped user --> 'manuell'
radius_xlat: 'INSERT into radacct ...
...
modcall[accounting]: module "radutmp" returns ok for request 4
Sending Accounting-Response of id 2 to 192.168.0.64 port 1025
Finished request 4
Going to the next request
Cleaning up request 4 ID 2 with timestamp 4640fe07
Waking up in 6 seconds...
--- Walking the entire request list --Abbildung 21 : Konsolenausgabe Freeradius
13
Praktikum Protokolle
Die Abbildung 22 zeigt den Ablauf vom Anmelden des Benutzers bis zur Verbindung
zum Internet.
1
WLAN Router
Chillispot
2
Redirect SSL : hotspotlogin
Apache
3
User OK ?
Freeradius
5
User OK !
4
User: manuell
My Pass: *****
SQL
6
Gateway
Internet
Abbildung 22 : Authentifizierungsablauf
1
Der Benutzer stellte ein Funkverbindung zum WLAN Netz her und erhält eine
IP-Adresse.
2
Der Internet-Browser des Benutzers wird auf die Anmeldeseite umgeleitet.
3
Nach Eingabe der Anmeldedaten sendet der Chillispot einen Access-Request an
den Radius Server.
4
Der Radius Server überprüft die Anmeldedaten mit den Einträgen in der
Datenbank.
5
Sind die eingegebenen Anmeldedaten korrekt sendet der Radius Server ein
Access-Accept an den Chillispot.
6
Nun erhält der Benutzer die Freigabe für den Internet Datenverkehr.
Zusammenfassung
Der Apache Webserver stellt dem Benutzer die Login Seite zur Verfügung. Chillispot
leitet die Authentifizierungsanfragen an den Radius Server weiter. Akzeptiert der
Radius Server die Anmeldedaten erfolgt die Freigabe der Internetverbindung.
14
Praktikum Protokolle
4.6 Asterisk
Mit den eingesetzten Komponenten Chillispot, Freeradius, Apache und MySQL ist der
Hot Spot Funktionstüchtig. Das System hat aber noch einen Nachteil. Die
Benutzerdaten müssen manuell in der Datenbank bearbeitet werden. Für die
Aufgabenstellung benötigen wir einen Weg, über den die Anmeldedaten automatisch
in die Datenbank gelangen.
Um das zu realisieren sind mehrere Schritte notwendig. Als erstes benötigen wir eine
Telefonnummer die der Benutzer anrufen kann um seine Handynummer einzugeben.
Anschließend wird für den User ein Account mit beschränkter Lebensdauer generiert
und in die Datenbank eingetragen. Zum Schluss werden die erstellten Anmeldedaten
als SMS an die eingegebene Handynummer gesendet. Für die Anrufannahme
verwenden wir ein IVR-System (Interactive Voice Response).
Client
Internetzugriffspunkt (Hot Spot)
Das IVR-System wird durch die
Software Asterisk realisiert. Das
System nimmt den Anruf
Anruf
entgegen und spielt dem Anrufer
IVR
My
einen Ansagetext vor. Die
SQL
Ansage fordert den Anrufer auf,
die Handynummer einzugeben.
Anschließend werden die
Anmeldedaten generiert und in
die Datenbank geschrieben
sowie als SMS an den User
SMS
gesendet.
Bevor Asterisk die Anrufe
entgegennehmen kann,
brauchen wir eine Schnittstelle
zum PSTN (Public Switched
Telephone Network). Damit das
IVR-System
H a r d w a r e Abbildung 23 : IVR
unabhängig ist, verwenden wir VoIP (Voice over IP). Bei der Telekom ist es möglich,
bei bestehendem DSL Anschluss, eine SIP (Session Initiation Protocol) Rufnummer
zu registrieren. Der Telekom SIP-Proxy leitet dann alle ankommenden Anruf für die
Rufnummer weiter. Um die Zieladresse anzugeben registriert sich Asterisk am SIPProxy und teilt ihm seine Adresse mit. Besitzt der Internetanschluss des Asterisk
keine feste IP-Adresse kann DynDNS verwendet werden. Zum versenden der SMS
Nachrichten wird ein externes Email-to-SMS Gateway benutzt. Die Konfiguration von
Asterisk wird auf den nächsten Seiten beschrieben.
15
Praktikum Protokolle
Für die VoIP Kommunikation wird SIP (Session Initiation Protocol) verwendet. Es stellt
eine alternative zum H.323 dar und dient zur Signalisierung der Anrufe im IP-Netz.
Zur Konfiguration von Asterisk und SIP werden die beiden Dateien sip.conf und
extensions.conf verwendet.
[general]
bindport=5060
bindaddr=0.0.0.0
language=de
maxexpirey=240
defaultexpirey=240
Localnet = 192.168.0.0/255.255.255.0
srvlookup = yes
externip = www.xyz.com
register =>
032224324381:passwort:
[email protected]/032224324381
[in]
type=friend
host=tel.t-online.de
fromdomain=tel.t-online.de
context=ankommend
[032224324381]
type=friend
username=user
secret=passwort
host=tel.t-online.de
fromuser=032224324381
fromdomain=tel.t-online.de
canreinvite=no
qualify=yes
insecure=very
nat=yes
dtmfmode=info
tos=0x18
realm=tel.t-online.de
[ankommend]
include => meine-telefone
exten => 032224324381,1,Gosub(meine-telefone,1000,2)
[meine-telefone]
exten => 1000,1,Dial(SIP/1000,20)
exten => 1000,2,Answer()
exten => 1000,3,Background(haupt)
exten => 1000,4,Background(bananaphone)
exten => 1000,5,Goto(3)
exten => 1,1,Goto(1001,2)
exten => 2,1,Goto(2000,2)
exten => i,1,Goto(1000,3)
;#######################
exten => 1001,1,Answer()
exten => 1001,2,Playback(steffi)
exten => 1001,3,Read(NUMMER,,13,0)
exten => 1001,4,SayDigits(${NUMMER})
exten => 1001,n,TrySystem(./einanderes.pl ${NUMMER})
exten => 1001,9,Hangup()
;########################
exten => 2001,1,Dial(SIP/2001)
exten => 2002,1,Dial(SIP/2002)
Abbildung 24 : Die Datei extensions.conf
[2002]
type=friend
context=meine-telefone
secret=1234
host=dynamic
nat=yes
Abbildung 25 : Die Datei sip.conf
Abbildung 26 : SIP-Client Phoner
Um die Funktion von Asterisk zu prüfen kann man eine beliebige VoIP-Client-Software
verwenden und sich am Asterisk anmelden. Abbildung 26 zeigt die Einstellungen für
die Software Phoner. Die Einstellungen für den Benutzer 2002 befinden sich in der
Datei sip.conf. Hat sich der Benutzer angemeldet gelangt er durch wählen der
Rufnummer 1000 in die Ansagefunktion.
16
Praktikum Protokolle
Nach der Konfiguration kann Asterisk mit dem Befehl asterisk –vvvvvc gestartet
werden. Die Parameter –vvvvvc sorgen für detaillierte Debug-Informationen.
In der Datei sip.conf werden zu Beginn die
Netzwerkeinstellungen für das SIP konfiguriert.
Die SIP Rufnummer 032224324381 ist bei der
Telekom für den Benutzer wg-emden
registriert. Mit dem register Eintrag registriert
sich Asterisk beim SIP Proxy der Telekom.
Über den externip Eintrag wird dem Proxy
mitgeteilt zu welchem Ziel er die
ankommenden Anruf weiterleiten soll.
[general]
bindport=5060
bindaddr=0.0.0.0
language=de
maxexpirey=240
defaultexpirey=240
Localnet = 192.168.0.0/255.255.255.0
srvlookup = yes
externip = www.xyz.com
register => 032224324381:passwort:
[email protected]/032224324381
Abbildung 27 : Registrierungsdaten in sip.conf
Ankommende Anruf werden nun vom SIP Proxy an den Asterisk weitergeleitet. Über
die Information fromdomain wird der Anrufer über den context=ankommend in der
Datei extensions.conf weiterverarbeitet.
[in]
type=friend
host=tel.t-online.de
fromdomain=tel.t-online.de
context=ankommend
[ankommend]
include => meine-telefone
exten => 032224324381,1,Gosub(meine-telefone,1000,2)
1
3
[meine-telefone]
exten => 1000,1,Dial(SIP/1000,20)
exten => 1000,2,Answer()
exten => 1000,3,Background(haupt)
exten => 1000,4,Background(bananaphone)
exten => 1000,5,Goto(3)
exten => 1,1,Goto(1001,2)
exten => 2,1,Goto(2000,2)
exten => i,1,Goto(1000,3)
2
exten => 1001,1,Answer()
exten => 1001,2,Playback(steffi)
exten => 1001,3,Read(NUMMER,,13,0)
exten => 1001,4,SayDigits(${NUMMER})
exten => 1001,n,TrySystem(./einanderes.pl ${NUMMER})
exten => 1001,9,Hangup()
Abbildung 28 : Ablauf für einen ankommenden Anruf
1
Der Anrufer springt zur Position 1000,2. Dort wird mit Answer() der Anruf
entgegengenommen. Background(haupt) spielt eine Audiodatei ab, die dem
Anrufer mitteilt: „Bitte drücken Sie die 1 um Ihre Anmeldedaten zu erhalten“.
Anschließend wird eine Wartemusik abgespielt.
2
Erfolgt keine Benutzereingabe wird die Ansage wiederholt.
3
Durch Drücken der Taste 1 springt der Anrufer zur Position 1001,2. Dort erhält er
die Ansage: „Bitte geben Sie Ihre Handynummer ein...“. Die Eingabe der Ziffern
wird mit Read() gelesen und mit SayDigits() wiederholt. Anschließend wird das
Skript einanderes.pl aufgerufen und die Handynummer übergeben.
17
Praktikum Protokolle
4.7 Perl Skript
Das Skript ist eine Rohfassung und sollte vor der Verwendung noch mit einigen
Sicherheitsabfragen ausgestattet werden. Im Wesentlichen teilt es sich in drei
Bereiche. Der erste Bereich speichert die übergebene Handynummer in der Variablen
$benutzer und generiert ein Passwort für die Anmeldedaten.
#!/usr/bin/perl -w
use Net::SMTP;
use Net::POP3;
use DBI;
#use strict;
$benutzer=$ARGV[0];
#Erstelle ein Passwort
@chars = ("A" .. "Z", "a" .. "z", 0 .. 9 );
$passwort = join("", @chars[ map {rand @chars } (1 .. 8) ]);
&datenbank
&email
($benutzer,$passwort);
($benutzer,$passwort);
Abbildung 29 : Skript Teil 1
Der zweite Teil stellt eine Verbindung mit der Datenbank her und erzeugt die
Anmeldedaten in der entsprechenden Tabelle. Die Tabelle wird später bei der
Authentifizierung durch den Freeradius verwendet.
sub datenbank{
my $USER = "user";
my $PASS = "passwort";
#Erstelle User mit Passwort in Mysql
@dsn = ("DBI:mysql:database=radius;" .
"host=localhost", $USER, $PASS);
$dbh = DBI->connect(@dsn,
{ PrintError => 0,
AutoCommit => 1,
}
)or die $DBI::errstr;
#Einfuegen der WLAN Benutzer in die Datenbank
$dbh->do("INSERT INTO radcheck (username,attribute,op,value)
VALUES ('$benutzer','User-Password',':=','$passwort')")
or die $dbh->errstr();
$dbh->do("INSERT INTO userinfo (username,name)
VALUES ('$benutzer','$benutzer') ")
or die $dbh->errstr();
#Liste aller eingetragener Benutzer in der Datenbank
$aref = $dbh->selectall_arrayref("SELECT * FROM userinfo")
or die $dbh->errstr();
for $row (@$aref){
($id, $username, $name) = @$row;
printf "%02d %-10s %-10s\n", $id, $username, $name;
}
$dbh->disconnect();
}
Abbildung 30 : Skript Teil 2
18
Praktikum Protokolle
Der dritte Teil sendet die Anmeldedaten als SMS an den Benutzer. Zum versenden der
SMS verwenden wir einen externen Provider. Mit entsprechender Hardware kann aber
auch eine lokale Lösung realisiert werden. Die Anmeldedaten werden in eine Email
verpackt und an das Email-to-SMS Gateway gesendet. Aus der Email erzeugt das
Gateway eine SMS und sendet sie an die angegebene Nummer.
sub email{
my $name=$benutzer;
my $login=$passwort;
#Konfiguration fuer den Mailserver
my $smtphost='mail.gmx.net';
my $pop3host='pop.gmx.net';
my $absender='[email protected]';
my $empfaenger='[email protected]';
$text="key#$name#basicplus";
#Server Anmeldung
$pop = Net::POP3->new($pop3host, Debug=>1);
$pop->login('user','passwort');
#Objekt erzeugen
$smtp = Net::SMTP->new($smtphost, Debug=>1);
#Absender und Empfeanger
$smtp->mail($absender);
$smtp->to($empfaenger);
#Senden der DATA an den Server
$smtp->data();
$smtp->datasend(<<END);
To: $empfaenger
Subject: Name=$name Passwort=$login
From: $absender
$text
END
$smtp->dataend();
$smtp->quit();
}
Abbildung 31 : Skript Teil 3
Als Provider wird SMS77 verwendet. Anhand der Vorgaben des Providers wird die
Email erstellt. Abbildung 32 zeigt die bereits versendeten SMS Nachrichten.
Vorgaben des Providers:
Betreffzeile: Ihr SMS Text
Textinhalt der Mail: Ihr Email2SMS-Key#Empfänger#SMS-Typ#Absender
Abbildung 32 : Logbuch bei SMS77
19
Praktikum Protokolle
4.8 Projektplan
Client
Extern
SIP Proxy
tel.t-online.de
Client
Telefonnummer :
032222121230
Internet / VoIP
www.xyz.com
PSTN
Email-toSMS
[email protected]
Gateway
86.132.112.118
Lokal
Hot Spot
Chillispot
Apache
Asterisk
Freeradius
My
SQL
Abbildung 33 : Vollständiger Projektplan
Zusammenfassung
Der Benutzer ruft eine Telefonnummer an, wird vom SIP Proxy an den Asterisk
weitergeleitet, und gelangt ins Sprachmenü. Dort hinterlässt er seine Handynummer.
Nun werden die Anmeldedaten generiert und über Email-to-SMS an den Benutzer
gesendet, sowie in die Datenbank eingetragen. Werden die Anmeldedaten auf der
Login Seite eingegeben, sendet der Chillispot eine Authentifizierungsanfrage an den
Radius Server. Zur Authentifizierung verifiziert Freeradius die Anmeldedaten mit den
Datenbankeinträgen. Entsprechen die eingegeben Daten einem Account in der
Datenbank wird der Benutzer für den Internetverkehr freigegeben.
20
Praktikum Protokolle
5. Anhang
5.1 Dialup Admin
Im Dialup Admin Verzeichnis befindet sich der Ordner htdocs. Entweder den Ordner in
das Freigabeverzeichnis vom Apache (/var/www/) kopieren oder einen Symlink im
Freigabeordner auf htdocs erstellen. In der Abbildung@ ist die Apache Konfiguration
für den Dialup Admin angegeben.
Alias "/dialupadmin/" "/usr/share/freeradius-dialupadmin/htdocs/"
<Directory "/usr/share/freeradius-dialupadmin/htdocs/">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
Abbildung 34 : Dialup Admin in der Apache Datei
Im Verzeichnis freeradius-dialupadmin ist die Datei admin.conf noch anzupassen. Hier
wird der Zugriff auf die MySQL Datenbank radius konfiguriert und die Verbindung mit
dem Radius Server angegeben. Das Radius-Secret steht in der Datei clients.conf des
Freeradius.
general_domain: dominio.org
general_radius_server_secret: test
general_encryption_method: clear
sql_username: mysql_user
sql_password: password
#sql_debug: true
client 192.168.0.64 {
secret
= test
shortname = linksys
nastype
= other
}
Abbildung 36 : Die Datei clients.conf
Abbildung 35 : Die Datei admin.conf
Über die URL http://192.168.0.9/dialupadmin ist der Dialup Admin jetzt erreichbar.
Abbildung 37 : Dialup Admin Benutzerkonfiguration
Um den Zugang zum Dialup Admin nicht jedem zu gestatten kann ein Benutzerlogin
erstellt werden (siehe Abbildung@).
<Directory "/usr/share/freeradius-dialupadmin/htdocs">
...
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /etc/apache2/.htpasswd
require valid-user
</Directory>
$ sudo htpasswd -bcm /etc/apache2/.htpasswd admin adminsecret
Abbildung 38 : Einstellungen für gesicherten Zugang
21
Praktikum Protokolle
5.2 Protokolle
5.2.1 Radius
Auf den folgenden Abbildungen zeigen wir Details zum Radius Protokoll, weitere
Beschreibungen befinden sich in der RFC-2058.
Client
NAS (Network Access Server)
Authentication Server
Freeradius
Connect
Access Request
Access Accept
Accounting Request
Accounting Response
Abbildung 39 : Ablaufplan Radius Protokoll
NAS (Network Access Server)
Authentication Server
Abbildung 41 : Access-Accept
Abbildung 40 : Access-Request
Die Abbildungen zeigen den Protokollmitschnitt auf dem Authentication Server. Hier ist
die Kommunikation zwischen dem NAS und dem Freeradius dargestellt. Auf der Client
Seite hat sich der Benutzer manuell mit der IP-Adresse 192.168.182.12 angemeldet.
22
Praktikum Protokolle
Nachdem sich der Client authentifiziert hat sendet der NAS ein Accounting Request an
den Radius Server. Anhand der Acct-Session-Id wird die Sitzung des Clients erfasst.
Abbildung 43 : Accounting-Response 1
Abbildung 42 : Accounting-Request 1
Meldet sich der Client ab, und beendet damit die Sitzung, werden die Accounting
Information des Clients an den Radius Server gesendet. Die gesammelten Information,
wie die Session Time oder die Output Packets, können nun zum Beispiel in einer
Datenbank gespeichert und ausgewertet werden.
Abbildung 45 : Accounting-Response 2
Abbildung 44 : Accounting-Request 2
23
Praktikum Protokolle
5.2.2 Session Initiation Protocol
Die folgenden Abbildungen zeigen einen Protokollmitschnitt der SIP Registrierung. Der
Asterisk Call Server Registriert sich bei dem SIP Proxy der Telekom für die
Rufnummer 032224324381.
Asterisk
SIP Proxy
Abbildung 46 : SIP Register
Abbildung 47 : SIP Ok 1
Abbildung 48 : SIP Options
Abbildung 49 : SIP Ok 2
24
Praktikum Protokolle
6. Literatur
Wintermeyer, Stefan : Asterisk 1.2 + 1.4 : Addison-Wesley 2007
Brands, Gilbert : IT-Sicherheitsmanagment : Springer 2005
Badach, Anatol : Voice over IP, Die Technik : Hanser 2005
Wehrle, Pählke, Ritter, Müller, Bechler : Linux Netzwerkarchitektur :
Addison Wesley 2002
de.wikipedia.org
faberlibertatis.org/wiki/Hotspot_Ubuntu_Dapper_Server_HOWTO
www.chillispot.org
www.freeradius.org
25
Herunterladen