Download: Sysadmin_nocat
Transkrypt
Download: Sysadmin_nocat
No Cat Auth SYSADMIN Autoryzacja w sieciach WLAN przy użyciu No Cat Auth No Cat Auth Bezprzewodowy dostęp do Internetu nie jest już technicznym wyzwaniem, chociaż sieci bezprzewodowe nadal spotykają się z problemami związanymi z bezpieczeństwem. Niezbyt dobrym pomysłem jest udostępnianie Internetu za darmo klientom przydrożnych kawiarni. Zabezpieczeniem może być wybranie odpowiedniej metody autoryzacji – najlepiej niezależnej od platformy. JOCHEN STÄRK W iadomo powszechnie, że techniki kodowania i autoryzacji dla WLAN posiadają tyle dziur, co ser szwajcarski [1] i mogą być łatwo złamane [2]. Wystarczają do tego narzędzia typu Airsnort, D-Wepcrack czy Kismet [3]. Sieci WLAN powinny być zatem traktowane jako zewnętrzne i niebezpieczne. Jeżeli więc zamierzamy używać WLAN do łączenia się laptopem z wewnętrzną siecią, wskazane jest zastosowanie technologii, takich jak IPsec czy Open VPN [4]. Tak czy inaczej, jeżeli potrzebujemy węzła WLAN do udostępniania Internetu wielu użytkownikom, konieczne jest zastosowanie VPN. Użytkownicy powinni sami wybrać odpowiednią metodę zabezpieczeń. Nie eliminuje to jednak potrzeby autoryzacji. Odpowiedzią na te problemy jest pakiet No Cat Auth [5]. Klienci (komputery), którzy będą chcieli użyć tego narzędzia, będą potrzebować jedynie przeglądarki internetowej. No Cat Auth potrafi autoryzować użytkowników, o których informacje zapisane są w ba- Table 1: Autoryzacja Funkcjonalność Opis Radius Autoryzacja za pośrednictwem serwera Radius LDAP Autoryzacja przez LDAP DBI::MySQL Baza użytkowników w MySQL Status Narzędzia administracyjne eksperymentalny niedostępne niedostępne nie Pełne wsparcie niedostępne zach MySQL, plikach z hasłami, usługach LDAP, IMAP, PAM, Samba i NIS (Tabela 1) oraz ograniczać dostępne pasmo. Program zawiera bramkę i serwer do autoryzacji. Bramka posiada konfigurowalny firewall kontrolujący łączenie pomiędzy WLAN i Internetem, pozwalając na przesyłanie pakietów jedynie od użytkowników autoryzowanych przez stronę internetową. Jeżeli serwer No Cat Auth używa tabeli MySQL lub PostgreSQL jako bazy danych użytkowników, to dla uzyskania dostępu są oni proszeni o wypełnienie formularza rejestracyjnego. Administratorzy mogą później ustalać prawa do kont tworzonych w ten sposób. W administrowaniu kont w No Cat pomocne będzie narzędzie admintool. Kiedy użytkownik w sieci No Cat używa Baza użytkowników w MySQL z pełną obługą autoryzacji i rejestracji Pełne wsparcie niedostępne Passwd Autoryzacja przy użyciu lokalnych plików Pełne wsparcie Pełne wsparcie PAM Autoryzacja poprzez PAM niedostępne niedostępne Samba Autoryzacja poprzez serwer Samba lub Windows (Primary Domain Controller) niedostępne nie IMAP Autoryzacja poprzez konta IMAP niedostępne nie NIS Autoryzacja przez NIS niedostępne nie AUTOR z pełną obługą autoryzacji i rejestracji DBI::PostgreSQL Jochen Stärk studiuje i pracuje jako inżynier sprzedaży w firmie Borland GmbH w Niemczech, gdzie zajmuje się głównie pakietami C++ Builder i Kylix. www.linux-magazine.pl Kwiecień 2004 69 SYSADMIN No Cat Auth przeglądarki do obejrzenia strony internetowej, bramka No Cat, bazująca na IPTables, przekazuje najpierw żądanie do serwera autoryzacji. Użytkownik proszony jest o podanie ID i hasła. Jeżeli dane się zgadzają, użytkownik (a raczej komputer) otrzymuje zgodę na dostęp do Internetu przez bramkę. Demon bramki uruchamia NAT (maskowanie adresów) i pozwala na użycie powszechnie stosowanych protokołów, takich jak SSH, POP3, IMAP, HTTP, HTTPS, pasywny FTP i innych. Domyślnie, dla ochrony przed spamem wyłączony jest SMTP. Łatwa konfiguracja dzięki Webmin Dzięki modułowi Webmin [9] nie ma potrzeby ręcznego ustawiania otoczenia No Cat. Mimo swojej względnie niskiej wersji (0.51), moduł ten jest dość stabilny i gotowy do użycia od razu. Wystarczy zmienić ścieżki w pliku konfiguracyjnym. Poniższy przykład zakłada zakres adresów serwera DHCP od 192.168.0.10 do 192.168.0.254. Baza danych użytkowników znajduje się na serwerze o wewnętrznym adresie 192.168.0.1. Na serwerze działa też MySQL, PHP-My-Admin oraz Apache z modułem Mod_SSL. Na początek nie stawiajmy sobie jednak zbyt dalekich celów, wszystko czego potrzebujemy, to otworzyć bramkę. Jest ona łatwa w instalacji, ale należy uważać na błędy – zarówno bramka jak i serwer autoryzujący są instalowane w katalogu /usr/local/nocat. Pakiety różnią się od siebie swoim przedrostkiem. tar xvfz NoCatAuth-0.82.tar.gz cd NoCatAuth-0.82 make PREFIX=/usr/local/nocat/gw §§ Serwer autoryzacji Ramka 1: Skąd nazwa projektu? Nazwa No Cat oznacza społeczność, która uruchomiła swoje węzły w Sonoma County (USA), w Kaliforni. Członkowie mają wspólny, bezprzewodowy dostęp do Internetu. Rzut oka na stronę projektu http://nocat.net daje wyjaśnienie tej niespotykanej nazwy, pochodzi ona od znanego cytatu. Otóż kiedy zapytano Alberta Einsteina, jak działa radio, odpowiedział: „Telegraf kablowy jest jak bardzo długi kot, kiedy ciągniecie go za ogon w Nowym Yorku, on obraca głowę w Los Angeles. Rozumiecie to? Radio działa dokładnie tak samo: sygnał wysłany w jednym miejscu jest odbierany w innym. Jedyną różnicą jest to, że nie ma już kota.” gateway Bramkę otwieramy wpisując GatewayMode Open w pliku konfiguracyjnym /usr/local/nocat/gw/nocat.conf. Dla No Cat możliwe są trzy tryby pracy: ■ Open: bramka wyświetla stronę powitalną i czeka na akceptację przez użytkownika warunków użytkowania. ■ Passive: wymaga od użytkownika autoryzacji i jest to polecane ustawienie. ■ Captive: tak jak Passive, ale nie wspiera maskowania adresów (NAT). Następnie, w celu uruchomienia bramki wpisujemy /usr/local/nocat/gw/bin/gateway. Baza użytkowników Sensownym posunięciem jest utworzenie bazy danych użytkowników. W trybie GatewayMode Passive bramka umożliwia dostęp do serwera autoryzującego i pyta go o sprawdzenie dostępu dla użytkownika. Zapis AuthServiceAddr 192.168.0.1 wskazuje bramce, gdzie szukać serwera. W większym środowisku nie jest wskazane, aby każdy udostępniający węzeł uruchamiał własny serwer autoryzujący. Centralny serwer to jedno konto dla każdego użytkownika i jeden podpis, co ułatwia życie wszystkim użytkownikom. Pierwszym krokiem do uruchomienia serwera autoryzującego jest jego kompilacja: make PREFIX=/usr/local/nocat/as §§ authserv make PREFIX=/usr/local/nocat/as§§ pgpkey chown -R wwwrun /usr/local§§ /nocat/as/pgp cp /usr/local/nocat/as/§§ trustedkeys.gpg /usr/local/§§ nocat/gw/pgp Aby zezwolić na dostęp tylko autoryzowanym użytkownikom, wyłączając dostęp publiczny, dodajemy w pliku /usr/local/nocat/gw/nocat.conf linie MembersOnly 1. Trzeba też wprowadzić kilka zmian w serwerze autoryzacyjnym: serwer Apache musi mieć możliwość uruchamiania skryptów CGI oraz tworzenia odpowiednich plików HTML. Szablon do tych zmian znajdziemy w /usr/local/nocat/as/httpd.conf. Baza danych użytkowników wymaga również poświęcenia pewnej uwagi. Użyjemy do tego celu PHP-My-Admin. Dostęp do MySQL pozwala administratorom na utworzenie bazy danych dla użytkowników oraz dla No Cat, następnie utworzenie odpowiednich tabel (zo- Gateway No-Cat-Auth WLAN Na przykład Radius, NIS lub LDAP Internet Rysunek 1: Do korzystania z Internetu bezprzewodowi klienci używają węzła dostępowego. Zanim jednak otrzymają dostęp, muszą poprosić o autoryzację z bramki No Cat. Serwer autoryzacyjny decyduje, czy zezwolić na dostęp, czy też nie. 70 Kwiecień 2004 www.linux-magazine.pl No Cat Auth Rysunek 2: Osobom odwiedzającym sieć No Cat ukazuje się na początku ekran powitalny. Użytkownicy mogą się zarejestrować i korzystać z Internetu za pośrednictwem bramki No Cat. Administratorzy mogą oczywiście dowolnie modyfikować kod HTML tej strony i zmieniać komunikaty o błędach według własnych potrzeb. bacz polecenie dump w pakiecie źródłowym pod katalogiem etc/nocat.schema), a także zmianę konfiguracji bramki autoryzującej (/usr/local/nocat/as/nocat.conf): DataSource DBI Database dbi:mysql:database§§ =nocat DB_User nocat DB_Passwd strokethecat Możemy teraz uruchomić Apache jako serwer autoryzujący (apachectl startssl). Wstępnie bramka przekazuje żądania użytkowników do serwera Apache (Rysunek 1), gdzie są oni proszeni o zarejestrowanie się lub przynajmniej o akceptacje warunków użytkowania. Więcej szczegółów na ten temat w dokumencie HOWTO Toni Diaz [6] oraz na stronie domowej No Cat [5]. Zadziwiającym jest, że pomysłodawca No Cat poświęcił temu projektowi jedynie trzy strony w swojej własnej książce [10]. Sieci kablowe Program No Cat został zaprojektowany dla węzłów dostępowych skonfigurowanych jako mosty (bridges). Oznacza to, że może on być też zastosowany w przypadku innych technologii sieciowych. Struktura No Cat pozwala na zcentralizowaną autoryzacje dla rozrzuconych geograficznie grup użytkowników, potrafi rozróżniać zalogowanych/nie zalogowanych użytkowników i obsługuje Quality of Service (QoS). Kontrola przepływu danych (TC), obecnie będąca jeszcze w fazie eksperymentalnej, pozwala administratorom na ograniczenie przepustowości dla grup (total – bez ograniczeń, owner – użytkownik konta, public – podstawowy dostęp). Łatka [7] daje dodatkowo możliwość generowania raportów, umożliwiając administratorom rejestrowanie w logach wielkości transferu. Funkcja ta jest niezależna od użytej metody autoryzacji i zapisuje informacje do Radius-a lub do plików (File). Niestety, nie udało się nam potwierdzić, czy raportowanie do plików działa poprawnie. Zapisywanie do logów No Cat (Log) i baz danych (DBI) jest planowane, lecz jeszcze nie zostało zaimplementowane. Rejestracja i wyrejestrowywanie się użytkowników jest zapisywane w pliku nocat.log. Nazwę i ścieżkę do tego pliku można konfigurować używając do tego opcji GatewayLog oraz opcji Verbosity. Można też użyć LogFacility, aby nakazać No Cat zapisywanie informacji do standardowego logu demona Syslog. Trudność w tworzeniu centralnych statystyk skłoniła mnie do napisania łaty [8], dającej możliwość zapisywania w logach czasu autoryzacji, adresu MAC i IP oraz odświeżania czasu logowania na bazie osobnych plików dla każdego użytkownika. W osobnym pliku znajduje się raport pokazujący status każdego użytkownika (zalogowany czy nie). Administratorzy mogą więc użyć strony ze statystykami (przykład dostępny pod adresem Ramka 2: Zabezpieczenia Żadna z metod zabezpieczeń, używanych przez No Cat Auth, nie może być porównywana z dobrym rozwiązaniem VPN typu client-to-site VPN. Wynika to z faktu, że No Cat nie zapewnia szyfrowanego połączenia dla przesyłania informacji. Sama autoryzacja jest co prawda chroniona przez SSL (zakładając poprawne postępowanie z certyfikatami). No Cat nie umożliwia jednak kontroli przepływu danych i ich szyfrowania. Wszystkie dane przesyłane z węzła mogą być podglądane (sniffed), dlatego zalecane jest użycie dodatkowej metody zabezpieczania. Po autoryzacji użytkownika bramka No Cat uaktywnia adresy IP i MAC użytkowników. Włamywacz mógłby podejrzeć (sniff) te dane i próbować podmienić (spoof) adres MAC oraz IP, uzyskując do czasu wygaśnięcia autoryzacji użytkownika dostęp do wewnętrznej sieci z pominięciem bramki. Jest to poważne ryzyko dla większości środowisk WLAN. Jeśli potrzebne jest większe bezpieczeństwo, należy użyć IPSec, OpenVPN i innych technologii dla VPN [4]. SYSADMIN [8]) do śledzenia, kto obecnie znajduje się w sieci i czy użytkownik nie zezwolił przypadkiem komuś innemu na użycie swojego konta (co jest łatwe do wykrycia po adresach MAC) oraz jak długo użytkownik był zalogowany do danego węzła. Wnioski Program No Cat sprawdza się w sieciach, w których może i powinna być zastosowana centralna kontrola dostępu. Użytkownicy potrzebują jedynie przeglądarki WWW. Jest też i ciemniejsza strona: brak oprogramowania klienta, który mógłby się rejestrować automatycznie i brak mechanizmu ochrony przed wygaśnięciem konta. Aby utrzymywać połączenie, użytkownicy muszą mieć stale otwarte okno przeglądarki. Na szczęście trwa rozwój nowej implementacji – No Cat Splash. Podczas gdy No Cat Auth został napisany w Perlu, No Cat Splash używa ANSI C oraz jest wielowątkowy, będzie zatem szczególnie odpowiedni dla aplikacji typu embedded. Tak czy inaczej, wsparcie dla No Cat Auth będzie kontynuowane. ■ INFO [1] Scott Fluhrer, Itsik Mantin i Adi Shamir, „Weaknesses in the Key Scheduling Algorithm of RC4”: http://www.crypto.com/ papers/others/rc4_ksaproc.ps [2] Adam Stubblefield, John Ioannidis i Aviel D. Rubin, „Using the Fluhrer, Mantin, and Shamir Attack to Break WEP”: http://www.cs.rice.edu/~astubble/wep/ [3] Mark Vogelsberger, „Kismet and Co: Focus on WLAN Security”, Linux Magazine UK, 38 [4] Technologie VPN, „Czy oprogramowanie VPN jest bezpieczne?”, Linux Magazine 1/2004 [5] No Cat Auth: http://nocat.net/wiki/ [6] HOWTO dla No Cat Auth: http://blyx.com/public/wireless/ nocatbox/nocatbox-howto-en.pdf [7] Łatki dla IPFW2, Accounting, Radius i SNMP-Monitoring: http://www.pogozone.net/projects/nocat/ [8] Łatka dla rejestrowania dostępu użytkowników: http://www.usegroup.de/software/nocat/ [9] Moduł Webmin dla No Cat: http:// sourceforge.net/projects/nocat-webmin/ [10] Rob Flickenger, „Building Wireless Community Networks. Planning and Deploying Wireless Local Networks”, O’Reilly 2003 www.linux-magazine.pl Kwiecień 2004 71