Autoryzacja MAC: Ubiquiti AirOS 5.5 + FreeRADIUS + MySQL
W wersji 5.5 oprogramowania AirOS zapewniono oficjalne wsparcie dla autoryzacji MAC adresów z użyciem serwera RADIUS. Poniżej opis konfiguracji urządzeń UBNT oraz serwera na przykładzie serwera FreeRADIUS współpracującego z bazą danych opartą o MySQL.
Serwer FreeRADIUS instalujemy na komputerze, do którego dostęp będa mieć urządzenia Ubiquiti.
Potrzebujemy dokonać zmian w konfiguracji, w kalogu raddb odnajdujemy plik sql.conf i dokonujemy zmian, tak by serwer FreeRADIUS korzystał z bazy danych MySQL:
sql {
database = "mysql"
driver = "rlm_sql_${database}"
#parametry serwera mysql
server ="localhost"
port = "3306"
login = "radius"
password = "tajnehaslo"
radius_db = "radius"
read_groups = yes
deletestalesessions = yes
num_sql_socks = 64
connect_failure_retry_delay = 60
lifetime = 0
max_queries = 0
nas_table = "nas"
$INCLUDE sql/${database}/dialup.conf
}
W pliku radius.conf w sekcji "modules" upewniamy się że serwer będzie korzystał ze zdefiniowanej wcześniej konfiguracji (linia "$INCLUDE sql.conf"):
modules {
$INCLUDE ${confdir}/modules/
$INCLUDE eap.conf
$INCLUDE sql.conf
}
W kolejnym pliku clients.conf definiujemy nasze stacje bazowe, które będą korzystały z serwera RADIUS, zakładamy że adres IP urządzenia Ubiquiti to 192.168.0.10:
client 192.168.0.10 {
secret = tajnehaslo
nastype = other
}
W katalogu sites-available modyfikujemy plik instancji serwera (domyślnie jest to plik default), tak aby w sekcji authorize następowało sprawdzanie, czy dany MAC adres występuje w bazie danych, jeśli tak, autoryzujemy go na AP:
authorize { preprocess
if("%{sql:SELECT COUNT(*) FROM `tablica_mac` WHERE mac_address = '%{Calling-Station-ID}'}" >= 1) { ok
update control { Auth-Type := Accept }
} else { reject } }
W powyższym przykładzie zakładamy, że adresy MAC znajdują się w tablicy "tablica_mac" w polu o nazwie "mac_address". Format adresów MAC jest możliwy do zdefiniowania na urządzeniach Ubiquiti z AirOS, jeżeli przechowujemy adresy MAC w innym formacie, należy odpowiednio zmodyfikować zapytanie SQL (na przykład poprzez funkcje LOWER(), UPPPER(), REPLACE() itp.)
Możliwe jest też bardziej dokładne sprawdzanie połączeń ze stacjami bazowymi, na przykład każdy MAC może być autoryzowany tylko do określonego SSID:
authorize { preprocess
if("%{sql:SELECT COUNT(*) FROM `tablica_mac` WHERE mac_address = '%{Calling-Station-ID}'} AND ssid = '%{Called-Station-SSID}'" >= 1) {
ok
update control { Auth-Type := Accept }
} else { reject } }
W razie problemów z konfiguracją, serwer FreeRADIUS możemy uruchomić w trybie "debug", który dostarcza bardzo wiele dokładnych informacji o problemach z konfiguracją, za pomocą polecenia:
# radiusd -X
Kolejnym krokiem jest przygotowanie urządzeń Ubiquiti do współpracy ze serwerem FreeRADIUS. Jeśli wersja oprogramowania jest niższa od 5.5 należy firmware zaktualizować. Wersję oprogramowania sprawdzamy w zakładce "Main":
W przykładzie wyżej wersja 5.3.5 nie ma jeszcze oficjalnego wsparcia dla obsługi RADIUS, dlatego aktualizujemy oprogramowanie urządzenia, w zakładce "System":
Klikamy przycisk "Update..." i wybieramy z dysku plik z nowym oprogramowaniem, które pobrać można ze strony:
http://www.ubnt.com/download, w tym przypadku będzie to wersja XM-v5.5 dla urządzeń Nanostation M5:
Po kliknięciu przycisku "Upload" AirOS potwierdzi poprawność i integralność załadowanego pliku oraz zmianę wersji:
Klikamy "Update", podczas operacji zmiany oprogramowania nie należy wyłączać zasilania urządzenia, które aktualizujemy!:
Po kilku minutach możemy ponownie zalogować się do AP, wszelkie ustawienia np. adresacja IP, login i hasło zostaną zapamiętane, a wersja oprogramowania uaktualniona:
Przechodzimy do zakładki "Wireless" gdzie pojawią się nowe opcje w sekcji "Wireless Security", dotyczące autoryzacji adresów MAC z użyciem serwera RADIUS. Zaznaczmy pierwszy checkbox "RADIUS MAC Authentication", jak poniżej:
Wybieramy format MAC adresu stacji klienckich, jaki urządzenie UBNT będzie prezentować serwerowi RADIUS, tak by odpowiadało formatowi jaki posiadamy w bazie MySQL:
Zaznaczamy drugi checkbox "Use Empty Password", w polu "Auth Server IP/Port" podajemy adres IP serwera RADIUS, oraz numer portu na którym pracuje serwer autoryzacji, domyślnie jest to 1812.
W polu "Auth Server Secret" podajemy hasło, które zdefiniowaliśmy wcześniej w konfiguracji RADIUS w pliku clients.conf:
Po wpisaniu wszystkich informacji, zatwierdzam konfigurację przyciskiem "Change" i następnie "Apply".
Stacje klienckie będą teraz autoryzowane po przedstawianym adresie MAC, poprzez serwer RADIUS i nie ma już potrzeby utrzymywania listy ACL osobno na każdym punkcie dostępowym.
Oprogramowanie FreeRADIUS na licencji BSD można pobrać ze strony projektu: http://freeradius.org/download.html
|