Dostęp do sieci WiFi w oparciu o system czasowych voucherów

Transkrypt

Dostęp do sieci WiFi w oparciu o system czasowych voucherów
Dostęp do sieci WiFi w oparciu o system
czasowych voucherów
Krzysztof Pianka
Wydział Inżynierii Mechanicznej i Informatyki
Kierunek informatyka, Rok II
Politechnika Częstochowska
[email protected]
Streszczenie
W artykule przedstawiono projekt, opis oraz zasadę działania systemu
uwierzytelniania klientów sieci bezprzewodowej w oparciu o limitowane czasowo
vouchery. Celem projektu było zaprojektowanie odpowiedniego systemu, który
pozwalałby na generowanie jednorazowych par hasło/login dla użytkowników
chcących korzystać z Internetu. Jednoczesnym wymaganiem była konieczność
odizolowania użytkowników tymczasowych od pozostałych zasobów sieci lokalnej
oraz zapewnienie odpowiedniego bezpieczeństwa. System jest oparty na
standardzie 802.1x oraz serwerze z oprogramowaniem zapewniającym obsługę
logowań klientów oraz udostępniającym panel administracyjny dla potrzeb
zarządzania.
1 Wstęp
W obecnych czasach Internet stał się zasobem wykorzystywanym przez niemalże
wszystkich i często jest wręcz niezbędny do pracy. Wiele firm oraz instytucji, które
w swoich siedzibach organizują spotkania biznesowe lub konferencje spotyka się
z problemem zapewnienia klientom dostępu do Internetu oraz intranetu. Głównym
problemem jest odpowiedni system dystrybucji haseł dostępowych, który pozwalałby
na dostęp wielu użytkowników, a jednocześnie w przypadku braku aktywnych klientów
nie narażał sieci na niepowołany dostęp. Zaproponowane rozwiązanie pozwala na
uwierzytelnianie użytkowników sieci za pomocą pary login/hasło, automatycznie
generowanych w panelu administracyjnym w postaci voucherów. Rodzaj voucherów
oraz ich parametry jak np. czas dostępu, ilość transferu danych, mogą być
dostosowywane do potrzeb firmy oraz klientów.
2 Opis rozwiązania
Zaproponowany system składa się z kilku odpowiednio skonfigurowanych pakietów
oprogramowania, które zostaną omówione dokładniej w późniejszych rozdziałach.
1
Za wszystkie operacje uwierzytelniania oraz kontrolowania ruchu odpowiada serwer
z zainstalowanym systemem operacyjnym Linux. Kontrolą dostępu użytkowników na
serwerze zajmuje się pakiet implementujący usługę Radius, która opierając się na bazie
danych MySQL uwierzytelnia logującego się do sieci klienta oraz na bieżąco
monitoruje parametry vouchera, po których przekroczeniu połączenie zostaje zerwane.
Klienci mają również możliwość logowania się do sieci za pomocą strony WWW, na
którą zostają przekierowani po pierwszym podłączeniu się do sieci WiFi. Dopiero po
wpisaniu na stronie niezbędnych danych zostają dopuszczeni do korzystania z Internetu
oraz sieci lokalnej. Jednym z najważniejszych aspektów systemu jest możliwość
prostego zarządzania użytkownikami oraz voucherami. Jest to możliwe dzięki
oprogramowani DaloRadius, które udostępnia przejrzysty panel administracyjny
dostępny przez przeglądarkę internetową. Za jego pomocą mamy możliwość edycji
wielu ustawień oraz parametrów serwera Radius, w tym tworzenia użytkowników,
voucherów oraz dodawania punktów dostępowych.
3 Serwer sprzętowy
W wypadku profesjonalnych zastosowań firmowych wymagających dużej
niezawodności i skalowalności systemy z rodziny Unix/Linux wciąż dominują.
Systemem idealnie spełniającym wymagania projektu okazała się dystrybucja Linux –
GNU Debian [1] w wersji stable, czyli 6.0.7. Nic nie stoi na przeszkodzie, aby
wykorzystać inną dystrybucję np. Ubuntu lub Suse, a nawet całkowicie Unixowe –
BSD, natomiast konfiguracja przy różnych dystrybucjach może znacząco się różnić.
Warstwa sprzętowa dostarczona jest przez klaster obliczeniowy złożony z 2
serwerów Fujitsu Siemens, każdy posiadający 2 procesory Intel Xeon 3,4GHz, 12 GB
pamięci operacyjnej oraz macierzy dyskowej złożonej z 12 dysków SCSI o łącznej
pojemności 1.5 TB. Klaster działa pod kontrolą oprogramowania VMware ESXi 4.0 [2]
bazującego na dystrybucji RedHat. Sama maszyna wirtualna wykorzystana w projekcie
zajmuje bardzo niewielką część zasobów sprawnie działając na wirtualnym procesorze
2GHz oraz 512 MB pamięci operacyjnej. Jednym z wymogów serwera jest również
konieczność posiadania dwóch interface’ów sieciowych. Jednego dla klientów, oraz
drugiego dla sieci wewnętrznej i Internetu. Niestety w przypadku fizycznego serwera
nie ma możliwości wykorzystania tagowania VLAN i muszą być zamontowane dwie
karty sieciowe. Jest to spowodowane specyfiką adresowania interfejsów przez
oprogramowanie wykorzystane w projekcie. W przypadku maszyny wirtualnej możemy
korzystać z tagowania VLAN, a serwerowi przydzielić stworzone interfejsy wirtualne
pełniące rolę wirtualnych kart sieciowych.
4 Serwer Radius oraz MySQL
W roli serwera uwierzytelniającego, który wspierałby standard 802.1x
wykorzystano oprogramowanie FreeRadius [3]. Standardowa implementacja serwera
Radius przechowuje dane o użytkownikach w pliku tekstowym. W przypadku
zaprojektowanego systemu należało wykorzystać inną metodę przechowywania danych
pozwalającą na proste modyfikowanie wpisów przez interfejs WWW. Wykorzystano
tutaj bazę danych MySQL zainstalowaną na lokalnym serwerze. Struktura tabeli jest
bardzo złożona, ponieważ Radius bazując na MySQL’u przechowuje wiele
2
dodatkowych informacji, które w wersji wykorzystującej pliki tekstowe są
przechowywane w wielu plikach konfiguracyjnych. Autoryzacja użytkowników
w systemie odbywa się w kilku etapach. Na początku klient podłączający się do sieci
jest proszony o podanie hasła szyfrowania WPA, które jest wspólne dla wszystkich
klientów i zmieniane codziennie. Następnie po uruchomieniu przeglądarki i wpisaniu
dowolnego adresu jest przekierowywany na tzw. „Captive Portal”, na którym proszony
jest o podanie loginu i hasła, które są później wysyłane do serwera Radius celem
uwierzytelnienia użytkownika. Serwer sprawdza w bazie MySQL czy użytkownik
istnieje oraz czy jego voucher jest ważny. W zależności od konfiguracji porównywane
jest od kilku do kilkunastu parametrów jak np. czas ważności, maksymalny transfer,
lista dostępu na podstawie ID, liczba sesji, itp. Po pomyślnym uwierzytelnieniu serwer
przekierowuje klienta za pomocą określonych list dostępu i zezwala na korzystanie
z zasobów sieci. Radius na bieżąco monitoruje wszystkie parametry użytkownika
i w przypadku przekroczenia limitów skonfigurowanego vouchera, następuje ponowne
przekierowanie użytkownika na Captive Portal w celu wpisania nowych danych
logowania. Ze względów bezpieczeństwa system nie oferuje możliwości przedłużania
voucherów. W chwili wyczerpania aktualnie używanego vouchera, musimy pobrać
nowy.
5 CoovaChilli – Captive Portal
Jak już wspomniano wcześniej klient po podłączeniu do sieci i uruchomieniu
przeglądarki zostaje przekierowany na tzw. Captive Portal. Jest to strona WWW
z formularzem, na którym musimy podać nasze dane logowania. Za obsługę
i generowanie tej strony odpowiada rozpowszechniany na licencji OpenSource projekt
CoovaChilli [4]. Jest to programowy punkt dostępowy, często wykorzystywany
w hotspot'ach. CoovaChilli, jako niezależne oprogramowanie nie udostępnia żadnych
mechanizmów autoryzacji użytkowników i musi być zintegrowane z serwerem Radius
lub innym oprogramowaniem udostępniającym uwierzytelnianie. Do generowania
strony WWW wykorzystywane są skrypty CGI, których obsługą i uruchamianiem
zajmuje się program Haserl [5], którego działanie przypomina interpreter PHP,
natomiast do tworzenia skryptów wykorzystywany język powłoki bash. Znajduje
zastosowanie wszędzie tam gdzie wymagana jest duża szybkość działania i małe
wymagania pamięciowe. CoovaChilli oprócz generowania portalu logowania
udostępnia również serwer DHCP, który przydziela dynamicznie adresy IP dla
klientów. Oprócz dynamicznego przydzielania adresów skrypt wykonuje również
translację adresów – PAT. Nie jest to wymagane, jeśli dysponujemy wolnymi adresami
wewnętrznymi oraz translacji dokonujemy na routerze brzegowym.
Zasada działania CoovaChilli polega na wygenerowaniu portalu, następnie dane
logowania są przesyłane do serwera Radius. Po pozytywnym uwierzytelnieniu klienta
CoovaChilli modyfikuje reguły firewall'a dla danego klienta umożliwiając mu dostęp do
sieci. Na bieżąco rejestrowane są działania użytkownika takie jak: czas i liczba sesji,
ilość pobranych i wysłanych danych, itp. W przypadku przekroczenia parametrów
używanego vouchera następuje przerwanie istniejących sesji oraz ponowne
przekonfigurowanie firewall’a, tak, aby użytkownik został przekierowany na omówiony
wcześniej Captive Portal w celu ponownego zalogowania się.
3
6 DaloRadius + Apache
Ostatnią, jednak niezwykle ważną funkcjonalnością jest możliwość zarządzania
całym systemem generowania voucherów oraz autoryzacji za pomocą interfejsu WWW.
Wykorzystano tutaj społecznościowy projekt o nazwie DaloRadius [6]. Jest to napisana
w PHP oraz JavaScript i opierająca się na bazie MySQL nakładka służąca do
administracji serwerem Radius. Posiada ona bardzo duże możliwości konfiguracyjne
m.in. zarządzanie użytkownikami, raportowanie graficzne, fakturowanie, integracje
z GoogleMaps oraz GIS. Sama nakładka jest aplikacją webową, więc może zarządzać
rozmaitymi implementacjami serwera Radius oraz opierać się na różnych bazach
danych. Oczywiście nie jest to aplikacja typu „stand-alone”, więc do poprawnego
działania wymaga skonfigurowanego serwera WWW. W projekcie został wykorzystany
serwer Apache z doinstalowanymi odpowiednimi modułami. Wymagania stawiane
serwerowi WWW są dość specyficzne, ponieważ oprócz często spotykanych integracji
z MySQL czy PHP, wymagana jest również obsługa frameworka PEAR, na którym
w większości bazuje DaloRadius. Ze względów bezpieczeństwa serwer WWW został
również przystosowany do obsługi szyfrowanej transmisji HTTPS, bazującej na
wygenerowanych certyfikatach SSL.
7 Przykładowe wdrożenie
Wdrożenie zostało wykonane w laboratorium testowym na specjalnie
przygotowanej topologii (Rys.1.). Wszystkie urządzenia sieciowe oraz komputery
administratorów i klaster obliczeniowy ESXi były to fizycznie dostępne
i skonfigurowane urządzenia. Komputery hostujące usługi były to wydzielone maszyny
wirtualne działające na klastrze obliczeniowym. W projekcie sieci wykorzystano sieć
z klasy A: 10.0.0.0 ze zwiększoną do 24 bitów maską podsieci, tak więc faktyczny
zakres adresów IP wynosił 10.0.0.0 – 10.0.0.255. Zakres adresów przydzielanych dla
klientów pochodził z sieci klasy C: 192.168.1.0 z maską 24 bitów, tak więc dostępny
zakres adresów IP wynosił 192.168.1.0 -192.168.1.255.
4
Rys.1. Schemat logiczny sieci testowej
8
Konfiguracja
Konfiguracja całego systemu jest dość skomplikowana, zwłaszcza, jeśli chodzi
o część związaną z CoovaChilli oraz DaloRadius. Przedstawione poniżej listingi to
najważniejsze fragmenty istotnych dla systemu plików konfiguracyjnych.
Na początek konfigurujemy CoovaChilli, ustawiając odpowiednie porty, adresy IP,
hasła, itp.:
[ /etc/chilli/defaults]
HS_WANIF=eth0
HS_LANIF=eth1
HS_NETWORK=192.168.1.0
HS_NETMASK=255.255.255.0
HS_UAMLISTEN=10.0.0.4
HS_UAMPORT=3990
HS_UAMUIPORT=4990
HS_DNS1=10.0.0.1
HS_NASID=nas-100
HS_RADIUS=localhost
HS_RADSECRET=RadPass
HS_UAMSECRET=HotPass
HS_UAMALIASNAME=chilli
#Interface do Internetu
#Interface dla klientów
#Sieć klientów
#Maska ww. sieci
#Adres ip serwera po stronie LAN
#Port portalu dostępowego
#Jak wyżej.
#DNS
#Nazwa dowolna
#Lokalizacja serwera Radius
#Hasło do Radiusa
#Hasło do Hotspotu
#Alias
Kolejnym etapem konfiguracji jest utworzenie struktur tabeli MySQL dla FreeRadius
oraz DaloRadius, a następnie edycja kilku plików konfiguracyjnych tak, aby umożliwić
komunikację serwera Radius z bazą danych:
[/etc/freeradius/sql.conf]
server = "localhost"
login = "root"
password = "DbPass"
radius_db=”radius”
#użytkownik MySQL
#hasło MySQL
#nazwa bazy
Niezbędne jest również uruchomienie wymaganych timerów:
[/etc/freeradius/sites-available/default]
authorize{
#odkomentowujemy
sql
daily
#dopisujemy
noresetcounter
dailycounter
monthlycounter
}
5
Na koniec musimy jeszcze skonfigurować pakiet DaloRadius tak, aby miał dostęp do
bazy danych MySQL i serwera Radius oraz po wygenerowaniu certyfikatów SSL
skonfigurować serwer Apache oraz Virtual Host’a:
[ /var/www/daloradius/library/daloradius.conf.php]
$configValues['CONFIG_DB_ENGINE'] = 'mysql';
$configValues['CONFIG_DB_HOST'] = 'localhost';
$configValues['CONFIG_DB_PORT'] = '3306';
$configValues['CONFIG_DB_USER'] = 'root';
$configValues['CONFIG_DB_PASS'] = 'dbPass';
$configValues['CONFIG_DB_NAME'] = 'radius';
Konfigurujemy VHost’a oraz koniecznie dopisujemy:
[ /etc/apache2/sites-available/ssl ]
SSLEngine on
ServerSignature On
SSLCertificateFile /etc/ssl/certs/portal.crt
SSLCertificateKeyFile /etc/ssl/private/portal.key
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
9 Podsumowanie
Wykonana implementacja i testy systemu wypadły pomyślnie, a system voucherów
działa bez zarzutu. Aktualnie projekt cały czas się rozwija i dokonywane są
odpowiednie modyfikacje i usprawnienia. System podczas testów znakomicie radził
sobie z ruchem na poziomie 10-15 użytkowników, nie wykazując żadnych oznak
przeciążenia. Finalnym etapem projektu będzie wdrożenie systemu w jednym
z firmowych hotspot'ów na terenie Łodzi.
Bibliografia
[1] Hertzog R., Mas R.: The Debian Administrator’s Handbook, Freexian SARL, 2012
[2] Lowe S.: Mastering VMware vSphere 5, John Wiley&Sons,Inc., 2011
[3] FreeRadius Documentation, http://freeradius.org/radiusd/man/
[4] CoovaChilli Documentation, http://coova.org/CoovaChilli/Documentation
[5] Haserl Documentation, http://haserl.sourceforge.net/manpage.html
[6] Liran T.: daloRADIUS User Guide, Cisco Press, 2012
6