Postavili in preizkusili bomo strežnik Radius, ki ga lahko uporabimo za avtentikacijo na brezžičnih omrežjih (npr. Eduroam).

Predpriprava

  • Preberite, kaj je to Radius, kaj so PAM (Pluggable Authentication Modules).
  • Če želite, lahko na vaje prinesete svojo brezžično dostopno točko - učili se bomo, kako se omeji dostop do omrežja na avtenticirane uporabnike.
  • Rešite nalogo 11-preparation-radius_mysql_pam na KPOV Judge.

Naloga

  • Postavi strežnik Radius. Z radtest preveri, da deluje.
  • Namesti apache2, na njem ustvari neko preprosto svojo spletno stran. ALI poskrbi, da se lahko povežeš na svoj usmerjevalnik in postaneš administrator.
  • Poskrbi, da bo dostop do spletne strani omejen z uporabniškim imenom in geslom. Poskrbi, da bo apache za avtentikacijo uporabljal Radius. ALI nastavi svoj usmerjevalnik, da bo uporabljal tvoj strežnik Radius.
  • Ustvari svoje kraljestvo za avtentikacijo (Radius realm).
  • Spravi se v par. Vsak v paru naj nastavi Radius strežnik tako, da bo sosed lahko uporabljal njegov strežnik in obratno.

Navodila

Namen današnjih vaj je, da postavite RADIUS strežnik ter stran, ki se bo prek njega avtenticirala.

Za začetek namestite strežnik ter apache modul, ki ga zna uporabljati:

# apt install freeradius libapache2-mod-auth-radius

Če slučajno niste opravili vaj v zvezi s SNMP, boste morda morali namestiti še apache:

# apt install apache2

Sedaj, ko je programska oprema nameščena, se lahko lotite konfiguracije. Konfiguracijske datoteke za freeradius so v /etc/freeradius/3.0. Za začetek v datoteki /etc/freeradius/3.0/clients.conf spremenite skrivnost (secret) s testing123 v nekaj drugega (npr. SKUPNASKRIVNOST).

Nato je čas, da ustvarimo uporabnika. To storimo s primerno predelavo datoteke /etc/freeradius/3.0/users. Na primer:

brunhilda  Cleartext-Password := "GesloValkirije"
  Reply-Message = "Pozdravljena, junakinja med bojevnicami!"

Reply-Message v principu ni potreben, je pa lepo videti neko sporočilo v odgovoru strežnika.

Lahko tudi ustvarite uporabnika, ki ima isto uporabniško ime, kot eden od ostalih uporabnikov na sistemu.

mojuser  Cleartext-Password := "MojeGeslo"

Tukaj boste naleteli na problem, saj vam bo strežnik avtentikacijo skoraj vedno zavrnil. Freeradius namreč po privzetju vsakega uporabnika "preveri" tudi tako, da pogleda, če uporabnik slučajno ne obstaja v /etc/passwd. Če uporabnik obstaja, se geslo preveri. Za to početje poskrbi radius modul unix. Da bi ga izklopili, morate popraviti konfiguracijsko datoteko:

# vi /etc/freeradius/3.0/sites-enabled/default

kjer zakomentirajte vrstico unix.

Nato se lotimo konfiguracije strežnika Apache. Za začetek je potrebno vklopiti modul za avtentikacijo prek Radiusa. Kako se modul imenuje, lahko ugotovite tako, da pogledate, kateri moduli s podobnim imenom imajo konfiguracijske datoteke v /etc/apache2/mods-available:

$ ls /etc/apache2/mods-available/*radi*

Modul nato vklopimo (zatipk je nameren; a2enmod oz. Apache 2 Enable Module je napisan pravilno):

# a2enmod auth_raduis

Nato moramo samo še ustvariti spletno stran in skonfigurirati apache, da bo za omejevanje dostopa do le-te uporabil freeradius:

# vi /etc/apache2/sites-available/000-default.conf

Na primerno mesto v konfiguracijski datoteki dodajte konfiguracijo za radius modul (spodnja konfiguracija je skopirana iz datoteke z dobro razlago vseh uporabljenih nastavitev):

AddRadiusAuth localhost:1812 SKUPNASKRIVNOST 5:3
AddRadiusCookieValid 5

<Location /radius/>
    AuthType Basic
    AuthName "RADIUS authentication for localhost"
    AuthBasicProvider radius
    AuthRadiusActive On
    require valid-user
</Location>

Več o konfiguraciji si lahko preberete na domači strani modula.

Nato je potrebno ustvariti imenik, iz katerega bomo stregli strani, do katerih omejujemo dostop. Imenik naj se nahaja nekje pod /var/www/html, kjer so običajno spravljene datoteke, ki jih servira apache:

# mkdir /var/www/html/radius

V ta imenik potem spravite poljubno datoteko HTML, ki jo poimenujte index.html. Lahko uporabite kar index.html v /var/www/html, vendar ga predelajte tako, da ga boste lahko ločili od originala. Stran bi morala biti dostopna na http://localhost/radius/, pri čemer bi strežnik od vas moral zahtevati uporabniško ime in geslo.

Po konfiguraciji ne pozabimo ponovno zagnati obeh strežnikov:

# service apache2 restart
# service freeradius restart

Če (ko) gre nekaj narobe, je potrebno ugotoviti, kaj. Apache sporočila o napakah zapisuje v datoteko /var/log/apache2/error.log:

# tail -f /var/log/apache2/error.log

Da bi preverili, ali strežnik RADIUS deluje, lahko uporabimo ukaza radtest in radclient:

$ radtest <username> <password> <server address> <port> <shared secret>

ali

$ radclient -f <file> <server address> <acct|auth|status|disconnect> <shared secret>

kjer je file ime neke datoteke, v kateri so zbrani atributi, ki bodo poslani na strežnik RADIUS s tem ukazom. Primeri so v datoteki users.

Program radclient lahko namesto z datoteke argumente prebere tudi s standardnega vhoda:

echo "User-name := <username>,\nPassword := <password>" |
    radclient <server address> <acct|auth|status|disconnect> <secret>

Če se strežnik RADIUS ne uspe ponovno zagnati z ukazom

# service freeradius restart

ga lahko poizkusite zagnati v konzoli in tako ugotoviti, kaj je šlo narobe:

# freeradius -X

Pogoste napake vključujejo nepotrebne prelome vrstic, manjkajoče in odvečne vejice in manjkajoče presledke pred odgovorom v datoteki users.

Da bi omogočili predajanje avtentikacije sosedu, morate popraviti še /etc/freeradius/proxy.conf in /etc/freeradius/client.conf.

Vi popravite proxy.conf:

home_server hs_anvilania {
    type = auth+acct
    ipaddr = <IP soseda>
    port = 1812
    secret = testing123
}

home_server_pool pool_anvilania {
    type = fail-over
    home_server = hs_anvilania
}

realm anvilania {
    pool = pool_anvilania
    nostrip
}

Sosed v proxy.conf ustvari domeno anvilania:

realm anvilania {
}

Sosed v client.conf nastavi novega klienta AAA (vas), ki bo lahko dostopal do strežnika AAA:

client <vaš IP> {
    secret = tesitng123
}

Sosed doda novega uporabnika v /etc/freeradius/3.0/users:

"Dot" Cleartext-Password := "Polka"
  Reply-Message = "If at first you don't succeed, %{User-Name}, blame it on your parents!"
Last modified: Tuesday, 8 January 2019, 11:45 AM