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