Instalacja i konfiguracja serwera radius
Download
1 / 59

Instalacja i konfiguracja serwera RADIUS - PowerPoint PPT Presentation


  • 107 Views
  • Uploaded on

Instalacja i konfiguracja serwera RADIUS. Maja Górecka-Wolniewicz UCI, UMK. Implementacje serwera RADIUS. FreeRADIUS większość informacji dotyczy tej implemetnacji Internet Authentication Service produkt Microsoft, integralna część serwera Windows 2000 i 2003 RADIATOR

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Instalacja i konfiguracja serwera RADIUS' - vern


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Instalacja i konfiguracja serwera radius
Instalacja i konfiguracja serwera RADIUS

Maja Górecka-Wolniewicz

UCI, UMK

Tomasz Wolniewicz UCI UMK


Implementacje serwera radius
Implementacje serwera RADIUS

  • FreeRADIUS

    • większość informacji dotyczy tej implemetnacji

  • Internet Authentication Service

    • produkt Microsoft, integralna część serwera Windows 2000 i 2003

  • RADIATOR

  • Implementacje CISCO, Funk Software, Lucent Technologies


Projekt freeradius
Projekt FreeRADIUS

  • Oprogramowanie open source

  • Jedna z bardziej popularnych implementacji niekomercyjnych, powszechnie wykorzystywana w projekcie eduroam, zalecana w polskim projekcie

  • http://www.freeradius.org

    • duże możliwości (różnorodność modułów)

    • elastyczność w konfiguracji

  • Lista użytkowników, archiwum

  • http://www.mail-archive.com/freeradius-users@lists.freeradius.org

  • Aktualna wersja oprogramowania – 1.1.0


Wymagane oprogramowanie
Wymagane oprogramowanie

  • OpenSSL – nie jest potrzebny, gdy serwer pełni wyłącznie funkcję proxy

  • OpenLDAP – jeśli korzystamy z usługi LDAP do uwierzytelniania/autoryzacji

  • Oprogramowanie dodatkowe, zgodnie z potrzebami, np. MySQL, Postgres etc.


Obs uga wyra e regu owych w realmach
Obsługa wyrażeń regułowych w realmach

  • Domyślnie freeRADIUS pozwala na dopasowywanie wartości realm na podstawie porównania: wartość taka sama, różna

  • Patch Enable regular expressions matching in realms

    http://projects.nuschkys.net/patches

    • pozwala na podanie w polu wartości wyrażenia regułowego, do którego ma zostać dopasowany realm

  • Zastosowanie patcha (w katalogu dystrybucji)

    patch -p1 < rozpakowany_plik_z_poprawką


Kompilacja
Kompilacja

  • cd freeradius-1.1.0

  • ./configure –prefix=/opt/freeradius

  • gdy własna instalacja LDAP

    • --with-rlm-ldap-lib=/opt/ldap/lib

    • --with-rlm-ldap-include=/opt/ldap/include

  • gdy własna instalacja OpenSSL

    • --with-ssl-lib=/opt/ssl/lib

    • --with-ssl-include=/opt/ssl/include

  • inne:

    • --with-experimental-modules

    • --without-rlm-perl --without-rlm-sql


Kompilacja instalacja
Kompilacja, instalacja

  • make

  • make install

  • Uwagi:

    • jeśli używamy własnej instalacji OpenSSL-a warto sprawdzić, czy programy i biblioteki są dolinkowane do właściwych bibliotek OpenSSL; dla uniknięcia problemów zaleca się ustawienie zmiennych otoczeniowych CPPFLAGS i LDFLAGS przed configure, np.:

    • CPPFLAGS=-I/opt/ldap/include -I/opt/ssl/include

    • LDFLAGS=-L/opt/ldap/lib -L/opt/ssl/lib -Xlinker

      • -R/opt/ldap/lib:/opt/ssl/lib


Za o enia konfiguracyje
Założenia konfiguracyje

  • Serwer instytucji (poziom 3 w hierarchii eduroam)

    • wymagana możliwość kontaktowania się z serwerem ogólnopolskim, ew. z serwerami poziomu 4

    • uwierzytelnianie i autoryzacja użytkowników lokalnych (danej instytucji, w zdefiniowanym przez instytucję zakresie)

  • Serwery poziomu 4 i powyżej

    • realizują funkcjonalność uwierzytelniania i autoryzacji dla określonego realmu

    • kontaktują się z serwerem instytucji w celu obsługi użytkowników spoza lokalnych realmów


Konfiguracja
Konfiguracja

  • Pliki konfiguracyjne: katalog etc/raddb instalacji pakietu freeradius

    • radius.conf

    • clients.conf

    • proxy.conf

    • users

    • huntgroups


Clients conf
clients.conf

###############################

# Definicje AP-ów i innych urządzeń

###############################

#client <nazwa | adres-IP | podsieć> {

#<atrybut> = <wartość>

#}

client 192.168.1.120 {

secret = tajny_klucz_RADIUS-AP

shorname = campus1dev120

}

w atrybutach można dodać nastype = <słownikowa_wartość>

nastype mówi, jakiej metody użyć w skrypcie checkrad do sprawdzenia jednoczesnego zalogowania użytkownika


Client conf uwagi
client.conf - uwagi

  • Należy dbać o unikatowość kluczy

  • Klucz tajny powinnny mieć min. 16 znaków

  • Zaleca się różnicowanie kluczy wspólnych, nie powinno definiować się podsieci AP-ów z jednym hasłem wspólnym

  • Klientami są również serwery RADIUS – te, z którymi dany serwer kontaktuje się należy zdefiniować w pliku clients.conf i ustalić wspólny klucz do komunikacji

  • W testach przydaje się klient loopback (127.0.0.1)


Huntgroups
huntgroups

  • Definicja grup urządzeń NAS

  • Postać definicji

    aptest NAS-IP-Address == 192.168.1.200

    aptest NAS-IP-Address == 192.168.1.201

    lub (bardziej złożona)

    aptest NAS-IP-Address == 192.168.1.201, NAS-Port-Id == 0-3

    User-Name = user1,

    User-Name = user2

  • Dopasowanie następuje podczas przeglądania pliku users,

    • Kryterium dopasowania Hundgroup-Name == “XXX”


Proxy conf
proxy.conf

  • Konfiguracja realmów

    # realm lokalny

    realm umk.pl {

    type = radius

    authhost = LOCAL

    accthost = LOCAL

    }

    # realm zdalny

    realm uci.umk.pl {

    type = radius

    authhost = 10.1.1.1:1812

    accthost = 10.1.1.1:1813

    secret = a2s3d4f5g6

    nostrip

    }


Proxy conf1
proxy.conf

  • Definicja alternatywnych serwerów

    • ten sam realm można definiować więcej niż raz – w ten sposób określana jest obsługa w przypadku niedostępności serwera lub obsługa tzw. load balancing, tj. równomiernego rozłożenia zleceń do serwerów

    • ldflag

      • brak równoważny ldflag = fail_over – definicje realmów przeglądane są w kolejności ich deklaracji, pierwszy aktywny serwer obsługuje realm

      • ldflag = round_robin – wszystkie aktywne realmy dla danej nazwy biorą udział w procesie wyboru docelowego serwera – podejście zalecane np. na serwerze krajowym


Proxy conf2
proxy.conf

  • regex

    • dyrektywa oznacza, że nazwa domeny zostaje dopasowana do wskazanego wyrażenia regułowego, np.

      realm resztapolski {

      regex “.*\.pl”

      ...

      }

  • nostrip

    • domyślnie nazwa użytkownika jest obcinana przed wysłaniem do docelowego serwera

    • dodanie nostrip dla realmów lokalnych i zdalnych jest istotne w celu prawidłowego obrazu w danych rozliczeniowych


Proxy conf3
proxy.conf

  • Sekcja proxy_server

    • kontrola działania serwera w komunikacji proxy

      • synchronous: jeśli ma być aktywna funkcjonalność failover, to synchronous = no; wartość yes oznacza, że zlecenia będą automatycznie ponownie wysyłane, gdy NAS ponowi wysłanie

      • retry_delay (5) – czas (w sekundach) oczekiwania na odpowiedź, przed ponownym przesłaniem zlecenia proxy

      • retry_count (3) – ile razy ponawiać wysłanie zlecenia proxy przed odpowiedzią reject

      • dead_time (120) – ile sekund odczekać przed sprawdzeniem, czy serwer proxy stał się dostępny

      • default_fallback – obsługuj alternatywnie wg dyrektywy DEFAULT (gdy yes)

      • post_proxy_authorize – sprawdź sekcję autoryzacji po powrocie z proxy


Users
users

  • Domyślna nazwa pliku autoryzacji

    • można wskazać inną nazwę: deklaracja nazwy w pliku radiusd.conf, sekcja files, określenie userfile=...

  • Inne zastosowania modułu files

    • rozliczenie (preacct)

    • obsługa użytkowników przed realizacją funkcji proxy (pre-proxy)

    • modyfikacja UMK (a podstawie informacji na liście freeradius)

  • Format pliku

    • zestaw dyrektyw konfiguracyjnych używanych przez moduł files w celu podjęcia decyzji o sposobie autoryzacji i uwierzytelnienia użytkownika

    • postać wpisu

      nazwa <lista_sprawdzanych_elementów (check items)>

      TAB <lista_elementów_odpowiedzi (reply items)>

      nazwa – nazwa użytkownika lub słowo DEFAULT (dowolny użytkownik)


Users1
users

  • Zastosowania modułu files

    • rozliczenie (preacct)

    • obsługa użytkowników przed realizacją funkcji proxy (pre-proxy)

    • modyfikacja UMK (a podstawie informacji na liście freeradius) w celu dodania możliwości analizy pliku użytkowników po poprawnym uwierzytelnieniu, w fazie post-auth

  • Domyślne nazwy plików

    usersfile = ${confdir}/users

    acctusersfile = ${confdir}/acct_users

    preproxy_usersfile = ${confdir}/preproxy_users

    • można wskazać inną nazwę: deklaracja nazwy w pliku radiusd.con sekcja files,


Users2
users

  • Format pliku – uwagi

    • wszystkie elementy sprawdzane MUSZĄ być umieszczone w jednym wierszu, za nazwą użytkownika, separatorem elementów sprawdzanych jest przecinek

    • w pierwszym wierszu, w ramach listy elementów sprawdzanych MOŻNA wskazać element konfiguracyjny, np. Auth-Type i/lub Autz-Type

    • elementy odpowiedzi MOGĄ być umieszczane w wielu wierszach, w tym przypadku poprzedni wiersz (zawierający elemen odpowiedzi) musi kończyć się przecinkiem

    • przetwarzanie pliku users jest realizowane sekwencyjnie od początku pliku

    • po dopasowaniu użytkownika i elementów sprawdzanych ustalane są elementy odpowiedzi (wg deklaracji)

    • domyślnie po dopasowaniu przetwarzanie users kończy się

    • element specjalny: Fall-Through = Yes oznacza “przetwarzaj dalej”


Users3
users

  • Definicja atrybut – wartość

    • forma atrybut = wartość

      • NIE MOŻE wystąpić na liście sprawdzanych elementów

      • MOŻE wystąpić jako element konfiguracyjny (Auth-Type) – ustala wartość atrybutu, tylko gdy nie była ustalona

      • na liście odpowiedzi oznacza dodanie wartości danego atrybutu, ale tylko, gdy atrybut nie ma dotychczas wartości

    • formaatrybut := wartość

      • na liście sprawdzanych elementów oznacza “zawsze dopasowany”

      • zastępuje wartość atrybutu konfiguracyjnego

      • zastępuje wartość atrybutu konfiguracyjnego na liście odpowiedzi


Users4
users

  • Definicja atrybut – wartość

    • forma atrybut += wartość

      • na liście sprawdzanych elementów oznacza “zawsze dopasowany”

      • na liście konfiguracji i odpowiedzi oznacza dodanie wartości danego atrybutu

    • formaatrybut == wartość

      • na liście sprawdzanych elementów sprawdza, czy atrybut istnieje w zleceniu i czy wartość jest równa podanej

      • NIE MOŻE wystąpić na liście odpowiedzi

    • formaatrybut != wartość

      • na liście sprawdzanych elementów sprawdza, czy atrybut istnieje w zleceniu i wartość jest różna od podanej

      • NIE MOŻE wystąpić na liście odpowiedzi


Users5
users

  • Definicja atrybut – wartość

    • forma atrybut > wartość

      • na liście sprawdzanych elementów sprawdza, czy wartość atrybutu w zleceniu jest większa od podanej

      • NIE MOŻE wystąpić na liście odpowiedzi

    • formaatrybut >= wartość

      • na liście sprawdzanych elementów sprawdza, czy wartość atrybutu w zleceniu jest większa lub równa podanej

      • NIE MOŻE wystąpić na liście odpowiedzi

    • forma atrybut < wartość

      • na liście sprawdzanych elementów sprawdza, czy wartość atrybutu w zleceniu jest mniejsza od podanej

      • NIE MOŻE wystąpić na liście odpowiedzi


Users6
users

  • Definicja atrybut – wartość

    • forma atrybut <= wartość

      • na liście sprawdzanych elementów sprawdza, czy wartość atrybutu w zleceniu jest mniejsza lub równa podanej

      • NIE MOŻE wystąpić na liście odpowiedzi

    • formaatrybut =~ wyrażenie

      • na liście sprawdzanych elementów sprawdza, czy wartość atrybutu dopasowuje się do wyrażenia (wartość znakowa!)

      • NIE MOŻE wystąpić na liście odpowiedzi

    • forma atrybut !~ wyrażenie

      • na liście sprawdzanych elementów sprawdza, czy wartość atrybutu nie dopasowuje się do wyrażenia (wartość znakowa!)

      • NIE MOŻE wystąpić na liście odpowiedzi


Users7
users

  • Definicja atrybut – wartość

    • forma atrybut =* wartość

      • na liście sprawdzanych elementów sprawdza, czy zlecenie zawiera dany atrybut (wartość jest nieistotna)

      • NIE MOŻE wystąpić na liście odpowiedzi

    • forma atrybut !* wartość

      • na liście sprawdzanych elementów sprawdza, czy w zleceniu nie ma danego atrybutu (wartość jest nieistotna)

      • NIE MOŻE wystąpić na liście odpowiedzi


Users8
users

  • Przykłady( \ oznacza, że c.d. MUSI być w tej samym wierszu)

    user1 User-Password == “user1pass”

    user2 Auth-Type := Reject

    Reply-Message = “Zablokwane konto”

    DEFAULT Realm == NULL, Auth-Type := Reject

    DEFAULT Realm = “a.z”, Client-IP-Address == 10.1.1.1,\

    Auth-Type := Reject

    DEFAULT Real == ”b.z” Hundgroup-Name ==”XXX”

    Tunnel-Private-Group-Id := 40

    Tunnel-Medium-Type = 6

    Tunnel-Type = VLAN

    DEFAULT Real == ”c.z” FreeRadius-Proxied-To == 127.0.0.1, \

    Autz-Type := gosc, ldapgosc-Ldap-Group == “z_PL”

    Tunnel-Private-Group-Id := 40

    Tunnel-Medium-Type = 6

    Tunnel-Type = VLAN


Users9
users

  • Zalecenia

    • w Access-Accept powinna zostać wysłana prawdziwa nazwa użytkownika

      DEFAULT Realm = “d.z”, ...

      User-Name = `%{User-Name}`

      • nazwa użytkownika zostanie wpisana w logach, np. tych, które powstają po pomyślnym uwierzytelnieniu użytkownika

    • wpisy w users muszą uwzględniać uniknięcie zapętlenia serwera, np.

      DEFAULT Realm = “pl”,Client-IP-Address == 158.75.1.25, \

      Auth-Type := Reject

      zapobiega przesłaniu zlecenia dot. realmu polska do serwera krajowego, ponieważ stamtąd nadeszło zlecenie


Radius conf
radius.conf

  • Ustalenie ścieżek wiodących, lokalizacji konfiguracji, logów itp.

  • Użytkownik / grupa

    • zalecane ustawienie użytkownika różnego od root

    • w przypadku integracji freeRADIUS-a z Active Directory, freeradius musi współpracować z programem winbind i z tego powodu MUSI pracować z prawami root

  • Sekcja listen

    • ustala ipaddr (adres IP / nazwa / *), port (0 – domyślny), type (auth / acct)


Radius conf1
radius.conf

  • Sekcja modules

    • definicja modułów używanych przez serwer w postaci

      nazwa [ wystąpienie ] {

      element_konfiguracji = wartość

      }

    • przykładowe moduły: pap, chap, pam, unix, mschap, ldap, sql, realm, preprocess, files, detail, exec, perl, eap, attr_rewrite, attr_filter

  • Sekcja instantiate

    • ustala kolejność ładowania modułów – moduły wymienione w niej są ładowane przed tymi, które są zdefiniowane w następnych sekcjach: authorize, authenticate, preacct, accounting, session, post-auth, pre-proxy i post-proxy


Modu ldap
Moduł ldap

  • Jeśli jest potrzeba zdefiniowania kilku modułów, kolejne definicje rozróżniamy nazwami wystąpienia modułu, np.:

    ldap AD { }

    ldap OLStaff { }

    • zdefiniowane nazwy mogą być następnie używane w sekcjach authorize, authenticate

    • w pliku users, jeśli używamy sprawdzenia grupy LDAP w elemencie sprawdzenia należy podać np.:

      AD-Ldap-Group == “XXX”

      albo

      OLStaff-Ldap-Group == “XXX”


Modu ldap1
Moduł ldap

  • Zaleca się korzystanie z bezpiecznych połączeń (start_tls=yes) oraz nie anonimowych przeszukiwań

  • Jeśli dysponujemy serwerem repliki, to należy zadeklarować jego użycie dla danego poddrzewa poprzez utworzenie drugiego wystąpienia modułu, np.

    ldap OLStaff1 { tu_deklaracje_serwera_głównego }

    ldap OLStaff2 { tu_deklaracje_serwera_repliki }

  • Parametry groupmembership_filter, groupmembership_attribute

    • groupmembership_filter = NULL – poprawka w kodzie w celu skasowania domyślnego sprawdzenia (UMK), realizowanego na podstawie filtra:

      (|(&(objectclass=groupOfNames)(member=%{Ldap-UserDn})) (&(objectclass=groupOfUniqueNames)

      (member=%{Ldap-UserDn})))


Modu ms chap
Moduł ms_chap

  • Niezbędny, gdy dostarczamy metodę PEAP (uwierzytelnianie MS-CHAP i MS-CHAPv2)

  • Konfiguracja w sekcji mschap

    authtype = MS-CHAP

    use-mppe = yes

    require_encription = yes

    require_strong = yes


Modu attr rewrite
Moduł attr_rewrite

  • Moduł ważny w procesie autoryzacji oraz rozliczania

    • umożliwia dokonanie zmian w pakiecie

  • Wystąpienia modułu są wyróżniane nazwą, np.

    attr_rewrite copy.user-name { }

    attr_rewrite strip.user-name { }

  • Działanie:

    • zmiany dotyczą określonego atrybutu

      attribute = ..

    • przeszukiwany jest pakiet, odpowiedź, konfiguracja

      searchin = packet | reply | config

    • poszukiwana jest wartość zgodna z zadanym wyrażeniem regułowym

      searchfor = ...


Modu attr rewrite1
Moduł attr_rewrite

  • Działanie cd.

    • dopasowany napis jest zastępowany zawartością określoną jako replacewith

    • można dopisać nowy atrybut (new_attribute=yes)

    • można napis zatępujący dopisać do oryginalnego (append=yes)

    • można zadeklarować max. liczbę dopasowań (max_matches)

    • można ignorować wielkość liter (ignore_case=yes)

  • Zastosowanie

    • zdefiniowane wystąpienie modułu dodajemy wg potrzeby, w sekcjach pre-proxy, post-proxy, authorize


Modu mod rewrite
Moduł mod_rewrite

  • Przykład

    # obcięcie nazwy przed wyszukaniem użytkownika w

    # bazie

    attr_rewrite copy.user-name {

    attribute = Stripped-User-Name

    new_attribute = yes

    searchin = packet

    searchfor = “”

    replacewith = “%{User-Name}”

    }

    attr_rewrite strip.user-name {

    attribute = Stripped-User-Name

    new_attribute = no

    searchin = packet

    searchfor = “@.*$”

    replacewith = “”

    max_matches = 1

    }


Modu attr filter
Moduł attr_filter

  • Moduł przeznaczony do filtrowania atrybutów

    • realizowany np. po odbiorze odpowiedzi z serwera proxy

  • Definicja

    • sekcja attr_filter, element konfiguracji attrsfile wskazuje plik z deklaracją działania filtru (domyślnie plik o nazwie attrs)

    • domyślnie: “usuń wszystkie atrybuty oprócz ustawionych w pliku”

    • poprawka kodu (UMK) – wprowadzenie el. konfiguracji default_copy = yes (domyślnie kopiuj wszystkie)


Modu attr filter1
Moduł attr_filter

  • Przykład

    • na serwerze jednostki włączamy attr_filter w sekcji post_proxy, plik attr ma postać:

      polska

      Tunnel-Private-Group-Id := 42

      Tunnel-Type := VLAN

      Tunnel-Medium-Type := 6

      Tunnel-Private-Group-Id !* ANY

      Tunnel-Type !* ANY

      Tunnel-Medium-Type !* ANY

      DEFAULT

      cel: wycięcie VLAN-ów ustawionych na obcym serwerze

    • na serwerze PL

      DEFAULT

      Tunnel-Private-Group-Id !* ANY

      Tunnel-Type !* ANY

      Tunnel-Medium-Type !* ANY


Modu perl
Moduł perl

  • Definicja

    • sekcja perl zawiera wskazanie skryptu Perl

      module = “/opt/FreeRADIUS/perl/vlans.pl”

    • elementy konfiguracyjne func_post_auth, func_pre_proxy, func_post_proxy itd. podają nazwy funkcji Perl zdefiniowanych dla odpowiednich sekcji

    • przykład w skrypcie example.pl (“dokumentacja” modułu)

    • na serwerze UMK zdefiniowano funkcję post_auth, której zadaniem jest wycięcie atrybutów “Tunnel-*”, jeśli klientem jest serwer krajowy

  • Implementacja

    • poprawka w kodzie w sekcji przepisywania atrybutów (UMK)


Sekcja authorize
Sekcja authorize

  • Ustalenie sposobu autoryzacji

    authorize {

    preprocess

    copy.user-name

    strip.user-name

    Autz-Type pracownik {

    ldapstaff

    }

    Autz-Type student {

    ldapstud

    }

    eap

    files

    }


Sekcja authenicate
Sekcja authenicate

  • Realizacja uwierzytelnienia

    authenticate {

    eap

    Auth-Type pracownik {

    ldapstaff

    }

    Auth-Type student {

    ldapstud

    }

    Auth-Type MS-CHAP {

    mschap

    }

    }


Sekcja post auth
Sekcja post-auth

  • Wywołanie modułu perl w celu usunięcia ustawionych wcześniej VLAN-ów w przypadku, gdy Access-Accept z naszego serwera jest kierowany na zewnątrz sieci

    • NAS-IP-Address zgodny z adresami serwerów krajowych oznacza, że zlecenie dostępu przyszło z zewnątrz

      lub

  • Modyfikacja kodu modułu rlm_files w celu umożliwienia wywołania w sekcji post-auth modułu files

    DEFAULT Real == ”c.z” Autz-Type := gosc, \

    ldapgosc-Ldap-Group == “z_PL”

    Fall-Through = yes

    DEFAULT Real == „c.z”, \

    Response-Packet-Type == Access-Accept,\

    NAS-IP-Address != 158.75.1.25, \

    NAS-IP-Address != 150.254.173.30

    Tunnel-Private-Group-Id := 40

    Tunnel-Medium-Type = 6

    Tunnel-Type = VLAN


Eap conf
eap.conf

  • Zawiera definicję modułu eap

    • ustala default_eap_type (peap, ttls, tls), typ EAP-a

    • definicja wspieranych typów eap:

      md5 {

      }

      peap {

      default_eap_type = mschapv2

      }

      tls {

      # certyfikat CA, certyfikat serwera,

      # klucz prywatny

      # jeśli jest obsługa CRL check_crl = yes

      check_cert_cn = %{User-Name}

      check_crl = yes

      }


Eap conf1
eap.conf

  • definicja wspieranych typów eap cd.:

    ttls {

    default_eap_type = md5

    copy_request_to_tunnel = yes

    use_tunneled_reply = yes

    }

    • copy_request_to_tunnel = yes - atrybuty nie zdefiniowane w tunelu, a obecne poza tunelem są kopiowane

    • use_tunneled_reply = yes - powoduje, że atrybuty wysyłane w odpowiedzi nie wiążą się z użytkownikiem widzianym na zewnątrz tunelu (outer identity), lecz tym, który został określony wewnątrz tunelu (inner identity)


Certyfikat dla serwera
Certyfikat dla serwera

  • W pliku eap.conf wskazujemy certyfikat serwera, klucz prywatny serwera oraz certyfikat urzędu certyfikacyjego, który poświadczył certyfikat serwera

  • W zleceniu certyfikacji commonName to pełna kwalifikowana nazwa serwera

  • Urząd wystawiający certyfikat MUSI w certyfikacie serwera dodać rozszerzenie TLS Web Server Authentication

    openssl ca -out s.crt -in s.csr \

    -extensions xpserver_ext \

    -exfiles xpextensions

    plik xpextensions:

    [xpserver_ext]

    extendedKeyUsage = 1.3.6.1.5.5.7.3.1


Uruchomienie radiusd
Uruchomienie radiusd

  • Jeśli konfiguracja nie jest w domyślnym katalogu etc/raddb

    • radiusd -d katalog_konfiguracji

    • opcja -X – debugging (uwaga: są widoczne hasła!)


Ustalanie vlan w
Ustalanie VLAN-ów

  • W pakiecie Access-Accept mogą zostać wysłane atrybuty służące do ustalenia docelowego numeru VLAN, w którym użytkownik otrzyma adres

    • schemat RADIUS-LDAPv3, klasa radiusProfile umożliwia dodanie we wpisie użytkownika informacji o VLAN-ie za pomocą atrybutów RadiusTunnelType, radiusTunnelMediumType, radiusTunnelPrivateGroupID

    • w pliku users, przy obsłudze posze\czególnych realmów, można dodać ustawienie atrybutów serii Tunnel-*

    • uwaga: operator := zamienia dotychczasowe ustawienia dla atrybutu

  • Serwer RADIUS NIE MOŻE przekazywać na zewnątrz ustawień VLAN (attr_filter, perl)


Obs uga rozliczania
Obsługa rozliczania

  • Przykładowe rozwiązanie – wykorzystanie bazy SQL

  • Plik konfiguracyjny sql.conf

    • zawiera deklaracje dotyczące modułu sql

    • deklaracja drivera, serwera, użytkownika i hasła do współpracy z bazą, nazwy bazy

    • definicje: accounting_start_query, accounting_update_query, accounting_stop_query

  • Zainicjowanie bazy danych i tablicy np. accounting

    • w tablicy umieszczamy pola, których dotyczą definicje accounting_start_query, accounting_update_query, accounting_stop_query

  • W sekcji accounting dopisujemy wywołanie modułu sql

  • Szczegółowa instrukcja:

    http://www.terena.nl.mail-archives/mobility/pdf00102.pdf


Integracja freeradius a z active directory
Integracja FreeRADIUS-a z Active Directory

  • Założenia

    • korzystamy z Active Directory (Windows Server 2000 / 2003) jako bazy użytkowników

    • użytkownicy mają zdefiniowany tryb 'allow access' (zakładka Dial-In we własnościach konta)

    • rozszerzamy schemat poprzez dopisanie klasy radiusProfile oraz atrybutów dialupAccess, radiusGroupName, radiusTunnel*

    • rozbudowujemy wpis użytkownika w celu dodania nowych atrybutów

      • uwaga: możliwość zastosowania atrybutów klasy radiusProfile przy opisie kont użytkowników ustala własność klasy radiusProfile w ramach zakładki Relationship – jako 'possible superior' należy dodać user


Active directory
Active Directory

  • W celu aktualizacji schematu:

    • administrator lub użytkownik modyfikujący musi być w grupie (Member Of) Schema Admins

    • Run... regsvr32 scmmgmt.dll

    • otworzyć konsolę (mmc) i dodać przystawkę “Active Directory Schema”

    • aby była możliwość zapisu aktualizacji niezbędna jest zmiana w rejestrze:

      • dojść do HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\NTDS\Parameters

      • Edit, New, DWORD Value,

        Value Name: Schema Update Allowed

        Data Type: REG_DWORD, Base: Binary, Value Data: 1


Active directory1
Active Directory

  • Konta użytkowników znajdują się w gałęzi cn=Users

    • korzeń drzewa to dc=a,dc=b,dc=c, jeśli Active Directory jest kontrolerem domeny a.b.c

    • program ldifde pozwala importować i eksportować dane

      • domyślny tryb to eksport

    • przykłady

      ldifde -d 'cn=users,dc=ad,dc=umk,dc=pl' -f u.ldif

      w pliku u.ldif zostanie zapisany zrzut poddrzewa cn=users

      ldifde -f user.ldif -i

      import danych wg pliku user.ldif (wsad w postaci standardu LDIF, DN entry, definicja operacji (changetype: add/modify/ delete), atrybuty


Freeradius wsp praca z active directory
FreeRADIUS - współpracaz Active Directory

  • FreeRADIUS Tutorial for AD Integration, Ch. Schwartz

    http://homepages.lu/charlesschwartz/radius/freeRadius_AD_tutorial.pdf

  • Definiujemy moduł ldap, np

    ldap AD {

    ...

    identity = DN_użytkownika z prawem_odczytu

    password = “hasło_użytkownika”

    start_tls = no

    access_attr = “dialupAccess”

    ...

    }

    • w sekcji authorize umieszczany odpowiedni Autz-Type, podobnie w authenticate Auth-Type (by wskazać móc wskazać w users obsługę dla danego realmu)


Freeradius wsp praca z active directory1
FreeRADIUS - współpracaz Active Directory

  • Stosowany typ uwierzytelnienia – PEAP

  • Ustawienia po stronie serwera

    • serwer musi należeć do domeny Windows

    • korzystamy z serwera Samba i narzędzi:

      • winbind: demon umożliwiający połączenie ze środowiskiem Windows

      • ntlm_auth: program korzystający z winbind do realizacji zlecenia NTLM

    • plik /etc/krb5.conf – należy dodać domenę Windows

      AD.UMK.PL {

      kdc = 192.168.3.33

      default_domain = AD.UMK.PL

      }


Freeradius wsp praca z active directory2
FreeRADIUS - współpracaz Active Directory

  • Samba

    • plik smb.conf

      • w sekcji

        [global]

        workgroup = AD.UMK.PL

        security = ads

        ...

        password server = 192.168.3.33 // serwer AD

        realm = AD.UMK.PL

      • w sekcji

        [homes]

        browsable = no

        writable = yes

    • restart samby


Freeradius wsp praca z active directory3
FreeRADIUS - współpracaz Active Directory

  • Rejestracja serwera w domenie Windows

    net join -U administrator

  • Uruchomić winbindd

  • Próba uwierzytelnienia przez NTLM

    ntlm_auth –request-nt-key –domain=AD.UMK.PL -username=mgw

  • Dostosowanie konfiguracji serwera FreeRADIUS:

    • w sekcji mschap musi być authtype = MS-CHAP, odkomentowane definicje with_ntdomain_hack = yes oraz

      ntlm_auth = “/usr/bin/ntlm_auth –request-nt-key

      --domain=AD.UMK.PL –username=%{Stripped-User-Name}

      --challenge=%{mschap:Challenge}

      --nt-response=%{mschap:NT-Response}


Freeradius wsp praca z active directory4
FreeRADIUS - współpracaz Active Directory

  • Plik eap.conf

    • default_eap_type = peap

    • w sekcji tls – deklaracja certyfikatów, PEAP korzysta z zaszyfrowanego tunelu

    • odkomentować sekcję peap

      peap {

      default_eap_type = mschapv2

      }

  • Klient

    • w suplikancie wybieramy metodę PEAP, odznaczamy automatyczne przekazywanie danych zalogowanego użytkownika, jako username wpisujemy user@ad.umk.pl, pole domeny puste


Freeradius modyfikacje r de
FreeRADIUS – modyfikacje źródeł

  • Patch dot. wyrażeń regułowych w realmach

  • Własne poprawki UMK

    • moduł ldap: dodanie możliwości deklaracji groupmembership=NULL – w celu uniknięcia domyślnych przeszukiwań bazy pod kątem atrybutów member, groupOfNames

    • moduł attr_filter: dodanie deklaracji default_copy, gdy default_copy=yes, domyślnie są przepisywane atrybuty w pakiecie (jeśli nie pojawią się na liście w pliku attrs)

    • moduł files: dodanie możliwości wywołania modułu w sekcji post-auth (w celu przypisania na tym etapie VLAN-ów)

    • logowanie:

      • main/auth.c – wypisywanie czasu zalogowania przy debugu

      • lib/print.c, moduł ldap – ukrycie haseł


Internet authentication server ias
Internet Authentication Server IAS

  • Usługa IAS

    • rejestracja IAS w Active Directory (prawy przycisk, Register Service in Active Directory)

    • Clients – definicja klienta, nazwa skrócona, adres IP, client 'RADIUS standard', ustalić shared secret między klientem a serwerem IAS

    • Remote Access Policy - domyślna 'Allow access if dial-in permission is enabled'

      • właściwości danej polityki, zaznaczyć 'Grant remote access permission', następnie 'Edit profile'

      • zakładka Authentication – zaznaczyć EAP, MS-CHAP, MS-CHAPv2

      • wybrać Protected EAP (PEAP), Configure


Internet authentication server ias1
Internet Authentication Server IAS

  • Certyfikat serwera:

    • można zainstalować Certification Service, utworzyć enterprose root CA i wygenerować certyfikat serwera

      • certyfikat root CA musi zostać wyeksportowany i dodany do magazynu zaufanych urzędów certyfikacji każdego klienta

    • można wygenerować certyfikat serwera w środowisku instytucjonalnego PKI, ale certyfikat musi spełniać następujące wymagania:

      • dodajemy następujące rozszerzenia

        keyUsage, subjectKeyIdentifier, authorityKeyIdentifier,

        crlDistributionPoints, extendedKeyUsage, subjectAltName,

        Certificate Template (o wartości Domain Controller) orazatrybut

        CSP (Cryptographic Service Provider).


Internet authentication server ias2
Internet Authentication Server IAS

  • Ustalanie VLAN-ów

    • w ramach definicji Remote Access Policy, edycja profilu, zakładka Advanced

      • można dodać atrybuty wysyłane w odpowiedzi, m.in. atrybuty serii Tunnel-*

  • Serwer IAS domyślnie obsługuje użytkowników na podstawie danych w gałęzi cn=Users kontrolera domeny


Serwer radius instytucji do czony do eduroam
Serwer RADIUS instytucjidołączony do eduroam

  • SSID eduroam wdrożony

  • Działający serwer RADIUS, np. FreeRADIUS obsługujący daną instytucję

    • w proxy.conf obsługa realmów danej instytucji

  • Serwer krajowy MUSI zawierać informację o nowej instytucji (w celu realizacji funkcjonalności)

    • musi zostać dodany wpis dot. obsługi realmu/realmów danej instytucji

    • nowy serwer instytucji musi zostać dodany do klientów (razem z ustalonym kluczem wspólnym)

    • udrożnienie portów UDP 1812,1813.1814

  • Serwer instytucji MUSI wskazywać serwery krajowe radius1.eduroam.pl i radius2.eduroam.pl do obsługi realmów innych niż lokalne