Vaje: RADIUS
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!"