Traadita võrgu turvamine FreeRADIUS’ega
Sissejuhatus
Labori eesmärgiks on läbi viia praktiline FreeRadiuse konfigureerimine ning vajalike sertifikaatide seadistamine. Kasutatakse EAP-TLS autentikeerimismehhanismi. Labori võib jagada neljaks osaks :
- Kuidas paigaldada vajalikud tarkvarapaketid RADIUS serverile.
- Kuidas tekitada vajalikud sertifikaadid.
- Kuidas seadistada FreeRADIUS ja pääsupunkt.
- Kuidas ühenduda sertifikaatide abil pääsupunktiga.
Teooria
Mis on RADIUS?
RADIUS (lühend inglis keelsetest sõnadest Remote Authentication Dial-In User Service) on võrguprotokoll mida kasutatakse lõppkasutaja autoriseerimiseks ja autentimiseks. Täpsemalt lugemist saab http://www.ietf.org/rfc/rfc2865.txt . RADIUS võimaldab autoriseerida ja autentida kasutajaid, kes ühenduvad LAN võrku ning keelata ligipääs juhul, kui kasutaja ei läbi kontrolli. FreeRADIUS ( http://freeradius.org/ ) on RADIUSE vabavaraline realisatsioon.
FreeRADIUSE üldine tööpõhimõte :
1.Uus kasutaja ühendub pääsupuntiga (AP) ning küsib ligipääsu LAN'i. AP küsib lõppkasutajalt ta identiteeti. Ainuke AP poolt edastatav ühendusprotokoll enne identifitseerimist on Extensible Authentication Protocol ( EAP).
2.Peale identifitseerimist algab autentimine. Kasutatakse EAP protokolli. AP kapseldab EAP paketid RADIUS formaati ja saadab nad edasi RADIUS serverile. Autentimisprotsessi ajal AP vahendab pakette lõppkasutaja ja RADIUS serveri vahel.
3.Peale õnnestunud autentimist lastakse lõppkasutaja LAN kohtvõrgule ligi.
RADIUSE kohta leiab eesti keelset lisainformatsiooni ka IT Kolledži wikis asuvalt leheküljelt :https://wiki.itcollege.ee/index.php/RADIUS_serveri_kasutamine_wifi_v%C3%B5rkudes
Mis on EAP?
Extensible Authentication Protocol on autentimiseks optimiseeritud transpordiprotokoll. EAP toetab mitut erinevat autentikeerimimismeetodit. http://www.ietf.org/rfc/rfc3748.txt
Milliseid autentimis mehhanisme EAP toetab?
Täieliku nimekirja võib leida siit http://www.iana.org/assignments/eap-numbers/eap-numbers.xml
Antud laboris kasutame me EAP-TLS realisatsiooni. EAP-TLS tekitab TLS sessiooni AP ja RADIUS serveri vahele. Nii server kui kliendid vajavad kehtivat sertifikaati. Täpsema standardi kirjelduse võib leida aadressilt http://www.ietf.org/rfc/rfc2716.txt .
Mis on sertifikaadid?
Krüptograafias on sertifikaat elektrooniline dokument, mis kasutab digitaalallkirja, et siduda avalik võti kellegi identiteediga.
Täpsem inglise keelne seletus on leitav siit :
http://en.wikipedia.org/wiki/Public_key_certificate
FreeRADIUS serveri installatsioon
Paigaldamiseks Fedora Core all kirjutage pakettide nimekirja uuendamiseks käsureale :
$ yum upgrade
Peale antud operatsiooni sooritamist paigaldage FreeRADIUSE server. Seda saab teha järgneva käsu vahendusel :
$ yum install freeradius
Antud käsk tekitab kataloogi nimega /etc/raddb kuhu on paigaldatud ka FreeRADIUS'ega seotud failid, kaasa arvatud FreeRADIUS'e konfiguratsiooni.
Sertifikaatide loomine
Käesolevas juhendis luuakse sertifikaadid lihtsustamise mõttes scripti abil. Loodud sertifikaadid sobivad lahenduse testimiseks, aga kindlasti mitte igapäevasesse kasutusse. Juhul kui on kavas sertifikaate kasutada ka mujal tehke seda omal vastutusel või looge sertifikaadid käsitsi, kasutades näiteks järgnevat juhendit http://gagravarr.org/writing/openssl-certs/ca.shtml
TÄHTIS!
Kui te loote sertifikaate siis kirjutaga kindlasti paberile või mõnele muule meediumile enda valitud sertifikaadide "Common name" ja salasõnad! Juursertifikaadi salasõna on scriptis teie eest juba ära täidetud ja selle nimeks on "whatever". Laboritöö hõlbustamiseks on rangelt soovitatav välja printida järgnev abileht ning seda labori käigus täita. Seal on ära toodud ka konfiguratsioonifailide asukohad.
Media:Radiuslab.pdf
Et sertifikaate luua, peame esmalt installeerima open-ssl koos toega perli skriptidele :
$ yum install openssl-perl
Teeme kataloogi /home/serdid käsuga:
$ mkdir -p /home/serdid
siis lähme sinna kataloogi käsuga:
$ cd /home/serdid
Sertifikaadid teeme ülesande lihtsustamiseks modifitseeritud scriptiga. Scriptis on enamikule küsimistele kohandatud vaikimisi vastused kandilistes sugudes. Näiteks vajutades küsimuse State or Province Name (full name) [Harju]: korral klahvi Enter sisestatakse antud küsimusele vaikeväärtus "Harju". Scripti saab SIIT.
Käsurea abil saab faile alla laadida näiteks utiliidi wgeti abil
$ wget http://enos.itcollege.ee/~avein/sert/cert.sh
Et skripti saaks kasutada, teeme ta ka käivitatavaks:
$ chmod a+x cert.sh
Scripti abil tekitame järgnevad failid :
- cacert.pem, on juursertifikaat
- cakey.pem, juursertifikaadi privaatvõti, pass phrase on “whatever”
- cacert.der, juursertifikaat binaaris Windowsi jaoks
- client_cert.pem, kliendi sertifikaat
- client_key.pem, kliendi privataatvõti, salasõna (pass phrase) Teie valikul
- server_cert.pem, serveri sertifikaat
- server_key.pem, serveri privaatvõti, salasõna (pass phrase) on “whatever”
- client_cert.p12 on PKCS#12 versioon kliendi sertifikaadist
Juursertifikaadi loomine (CA)
Algatuseks teeme selfsigned juursertifikaadi. Selleks käivitame eelnevalt alla laetud scripti järgmise parameetriga :
$ ./cert.sh ca
Common name võib panna näiteks Cacert. Pange common name kirja ka labori abilehele.
Antud käsu tulemusel luuakse cakey.pem, cacert.pem ja cacert.der failid.
Serveri sertifikaadi loomine ja sellele juursertifikaadiga alla kirjutamine
Järgnevaks tekitame serveri sertifikaadi ja kirjutame sellele juursertifikaadiga alla, selleks sisestame käsu :
$ ./cert.sh server cakey.pem cacert.pem
Common name võib näiteks servercert panna, kindlasti ei tohi aga panna sama common name'i mille panite eelnevale sertifikaadile.Pange common name kirja ka labori abilehele. Ülejäänud küsimuste peale on soovitatav ise mitte midagi sisestada, eriti Challenge passwordi korral (juhul kui challenge password on aktiivne peab ta sisestama iga kord kui mõni teenus tahab sertifikaati kasutada). Kindlasti peab sertifikaadile alla kirjutama.
Antud tegevuse tagajärjel saame failid server_key.pem ja server_cert.pem
Kliendi sertifikaadi loomine
Juhul, kui tahetakse teha rohkem kui ühs kliendi sertifikaat, peab sisestama kliendi sertifikaadi ja ta võtme jaoks failinimed. Kui kliendi sertifikaadi jaoks failinimesid ei sisestata, on loodud sertifikaatide failinimede vaikeväärtused client_key.pem ja client_cert.pem.
Näide 1: Kui jätta kliendi sertifikaadi ja ta võtme failinimed sisestamata saame väljundiks failid nimedega client_cert.pem, client_key.pem ja client_cert.p12 ( PKSC12 failis on avalik võti, privaatvõti ja juursertifikaat koos).
$ ./cert.sh client cakey.pem cacert.pem
Näide 2 : Järgnevas näites on kliendi sertifikaadi nimeks klientcert1.pem, kliendi sertifikaadi võti on failis klientkey1.pem ja PKSC12 faili nimeks tuleb klientcert1.p12 ( PKSC12 failis on avalik võti, privaatvõti ja juursertifikaat koos). Faililaiendiks jätke .pem.
client <ca key> <ca cert> [ <client key> <client cert> ]
$ ./cert.sh client cakey.pem cacert.pem klientkey1.pem klientcert1.pem
Common name valige ise (selle sertifikaadi common name on teie hilisem username FreeRADIUS'e serveris, nii et pange see kindlasti kirja labori abilehele. Märkige sinna ka sertifikaadi, sertifikaadi võtme ja p12 failide nimed juhul kui te ei kasutanud vaikeväärtuseid. Kliendi sertifikaadi common name tuleb hiljem sisestada ka users faili. Export password pane abilehele kirja, kuna teil läheb seda tulevikus vaja . Challenge password jätke täitmata. Kindlasti peab antud sertifikaadile alla kirjutama (Sign the certificate? [y/n]:y) .
Antud käsu tulemusel saame kolm uut faili. Vaikeväärtuste kasutamise korral on loodud failide nimedeks client_key.pem ja client_cert.pem ja client_cert.p12 .
Diffie-Hellman väärtuse genereerimine
Genereerime 1024-bitise Diffie-Hellman väärtuse järgmise käsuga :
$ openssl dhparam -out dh 1024
Antud käsu tulemusel saame faili nimega dh
Juhuväärtuse tekitamine
Juhuväärtuse tekitame järgneva käsuga
$ dd if=/dev/urandom of=random count=2
Antud käsu tulemusel saame faili nimega random
FreeRADIUS serveri konfigureerimine
Kuna Fedora Core algses tulemüüris (iptables) on kõik pordid peale ssh oma suletud, tuleb esmalt port 1812 avada. Lihtsaimaks võimaluseks on kaotada kõik keelavad reeglid tulemüürist. Seda saab teha käsuga:
$ iptables -F
NB: Tasub aga meeles pidada et peale igat restarti taastatakse algsätted!
FreeRADIUS'e konfiguratsioonifailid asuvad kataloogis /etc/raddb
FreeRadiuse konfiguratsioonifailid mida modifitseerime on :
- clients.conf – siin on FreeRADIUSe serverit kasutavate klientide informatsioon.FreeRadiuse juures tasub meeles pidada, et on olemas keskne server millel on kliendid. Klientideks on pääsupunktid (AP), mitte arvutid mis ühenduvad AP külge!
- eap.conf – siin on FreeRADIUSe EAP autoriseerimise konfiguratsioon
- users -siin on kasutajanimed ja autoriseerimismeetodite alane informatsioon
clients.conf
Avage tekstiredaktoriga fail clients.conf ja lisage sinna enda WiFi ruuteri aaddress. Oletame, et meie wifi-ruuteri aadress on 192.168.1.14 . Selleks, et lisada antud aaddress lubatud klientide nimekirja tuleb faili clients.conf lisada järgnev kirje :
client 192.168.1.14 { secret = password shortname = talvekool1 nastype = other }
secret on shared-secret ruuteri ja FreeRADIUS serveri vahel. Sama secreti peate panema hiljem ka enda wifi AP konfiguratsiooni nii et pange see labori abilehele kirja. Shortname on lihtsalt nimi, millega antud seadet radiuse logides hakatakse mainima.
users
Järgnevaks täidame users faili. Sinna tuleb sisestada meie klientsertifikaadi common name (selle valisite te ise luues klient sertifikaati). Juhul kui teil on rohkem kui üks klientsertifikaat tuleb nende kõigi common nameid sisestada. DEFAULT kirjega keelame kõik teised ühendused.
Näiteks juhul kui meil on kaks kliendi sertifikaati common name väärtustega kala1 ja kala2 oleks tulemuseks:
kala1 Auth-type := EAP kala2 Auth-type := EAP DEFAULT Auth-type := Reject Reply-Message := "Kõtt!"
eap.conf
Avame faili eap.conf tekstiredaktoriga ning muudame rea default_eap_type = tls :
default_eap_type = tls
Järgnevaks lähme sektsiooni tls{ } juurde kuhu teeme järgnevad muudatused:
Samuti veenduge, et tls sektsiooni lõpus viimase } ees ei oleks väljakommenteerimismärki (#)
tls { private_key_password = whatever private_key_file = /home/serdid/server_key.pem # If Private key & Certificate are located in # the same file, then private_key_file & # certificate_file must contain the same file # name. certificate_file = /home/serdid/server_cert.pem # Trusted Root CA list CA_file = /home/serdid/cacert.pem # # For DH cipher suites to work, you have to # run OpenSSL to create the DH file first: # # openssl dhparam -out certs/dh 1024 # dh_file = /home/serdid/dh random_file = /home/serdid/random
serveri käivitamine
Peale seda jääb meil veel üle FreeRADIUS server käivitada, seda saame me teha käsuga „freeradius“, soovitatav oleks käivitada server debug reziimis (siis kuvatakse freeradiuse logi otse ekraanile), seda saab teha käsurealt järgneva käsuga :
$ radiusd -X
Ruuteri/pääsupunkti konfigureerimine
Tomato Version 1.27 Basic ->Network-> lehekülje lõpp. Sealt valida Security „none“ asemel „WPA2 Enterprise“ ning sisestada „Shared Key“ (shared key on clients.conf failis, antud näite puhul oleks selleks : “password“ ). Serveri aadressiks panna selle masina IP, kus FreeRADIUS server asetseb ja pordiks jätta 1812 (default port) Peale seda vajutada nupul „Save“. Soovitatav on ka muuta SSID, et see poleks juba eksisteerivaga identne.
Windows XP klientmasina konfigureerimine
Windows klientmasin vajab cacerts.der ja client_cert.p12 (või siis failinimi mille andsite kliendi sertifikaati luues parameetrina ette, faililaiend on aga alati p12) faile autoriseerimiseks. Cacert.der tuleb lisada Trusted Root Certificates alla ja client_cert.p12 lihtsalt sertifikaadiks. Antud sertifikaatide tegemine oli kirjeldatud peatükis „Sertifikaadid“.
Kopeerige mälupuga või mõne muu meediumi abil cacert.der ja client_cert.p12 windowsi klientmasinasse.
Juursertifikaadi lisamine
Lisame cacert.der sertifikaadi Trusted juursertifikaatide hulka. Selle jaoks klikkame ta peal kaks korda ja avanenud aknas valime „Install Certificate“
Avanenud aknas valime „Place all certificates in following store“ -> Browse-> Trusted Root Certification Authorities ja siis „OK“.
Järgnevates akendes vajutada OK või nextile kasutades isiklikku intelligentsi.
PKCS #12 sertifikaadi lisamine
Lisada tuleb ka kliendisertifikaat client_cert.p12. Selleks klikkame client_cert.p12 faili peal kaks korda ja avanenud aknas vajutame „NEXT“
Serveriga ühenduse tekitamine
Järgmiseks konfigureerime Cisco Aironet utility. Avame Cisco Aironet utiliidi ja vajutame nupul „Scan“. Sealt valime enda ruuteri SSID.
Valime Modify, paneme enda ühendusele nime ja lähme edasi Security tabi ning valime WPA/WPA2/CCKM ning rippmenüüst alamtüübi EAP-TLS
Siis vajutame Configure nupul ja valime rippmenüüdest enda sertifikaadid :
Lõpuks vajutame nupul „OK“ ning teeme antud ühenduse aktiivseks. Kui kõik on õigesti seadistatud näeme järgnevat pilti:
Linux klientmasina konfigureerimine Network Manager näitel
Network Manager on mitmes erinevas Linuksi distros kasutatav võrguühenduse haldamise utiliit.
Klientmasin vajab cacerts.der ja client_cert.p12 (või siis failinimi mille andsite klientsertifikaati luues parameetrina ette, faililaiend on aga alati p12) faile autoriseerimiseks (need tehti valmis peatükis "Sertifikaadid").
Kopeerige mälupuga või mõne muu meediumi abil cacert.der ja client_cert.p12 linux klientmasinasse.
Avage Network Manager. Valige "Connect to Hidden Wireless Network".
- "Network Name" sisetage siia enda AP SSID
- "Wireless Security" WPA&WPA2 Enterprise
- "Authentication" TLS
- "Identity" siia pange enda kliendi sertifikaadi (client_cert.p12) common name
- "CA certificate" navigeerige cacert.der failini ja valige see
- "Private Key" navigeerige client_cert.p12 failini ja valige see
- "Private Key Password" Tuletage meelde (või vaadake labori abilehelt kui seda täitsite) mis Export Passwordi te valisite kui kliendi sertifikaati genereerisite ja sisestage see
Windows 7 klientmasina konfigureerimine
Windows klientmasin vajab cacerts.der ja client_cert.p12 (või siis failinimi mille andsite klientsertifikaati luues parameetrina ette, faililaiend on aga alati p12) faile autoriseerimiseks. Cacert.der tuleb lisada Trusted Root Certificates alla ja client_cert.p12 tavaliseks sertifikaadiks. Antud sertifikaatide tegemine oli kirjeldatud peatükis „Sertifikaadid“.
Kopeerige mälupulga või mõne muu meediumi abil cacert.der ja client_cert.p12 windowsi klientmasinasse.
Juursertifikaadi lisamine
Lisame cacert.der sertifikaadi Trusted juursertifikaatide hulka. Selle jaoks klikkame ta peal kaks korda ja avanenud aknas valime „Install Certificate“
Järmisest aknast valime „Place all certificates in following store“ -> Browse-> Trusted Root Certification Authorities ja siis „OK“.
PKCS #12 sertifikaadi lisamine
Lisame ka client_cert.p12 sertifikaadi. Selleks klikake kaks korda failil client_cert.p12 ja avanenud aknas valige „Install Certificate“
Siia sisestage export passwordi mille kliendi sertifikaate tehes valisite
Serveriga ühenduse tekitamine
Valige Network and Sharic Centrist "Connect to a new network"
Network Name on teie AP SSID
Valige Security Type : WPA-Enterprise ja "Choose a network authentication method" "Microsoft:Smart Card or other certificate" ja siis vajutage nupul "Settings"
valige menüüst enda loodud CA sert ja vajutage OK
Juhul kui teil on mitu sertifikaati, siis valige rippmenüüst enda kliendi sertifikaat. Kui sertifikaate on ainult üks, siis seda rippmenüü valikut ei tule.
FreeRADIUS serveri õnnestunud ühenduse logi
Juhul kui server on käivitatud -X võtmega (radiusd -X ) ehk debug reziimis näeme õnnestunud ühenduse puhul midagi järgnevat (siin on kuvatud ainult logi lõpuosa). Pöörake tähelepanu esiletõestetud osale.
Lisa 1 : Sertifikaatide tühistamine
Vahel on tarvis ligipääsuõigus tagasi võtta ( näiteks kui kolmas osapool saab kasutaja sertifikaadi endale). Selleks peame sertifikaadi tühistama. Antud peatükis kirjeldame seda protseduuri FreeRADIUS serveri näitel. Järjekordselt kasutame ülesande lihtsustamiseks scipti (sama script millega tekitasime ka sertifikaadid). Kui lahendust on kavas kuskil kasutada, tasuks sertifikaadi tühistamiseks kasutada järgnevat linki mitte scripti: http://gagravarr.org/writing/openssl-certs/ca.shtml#ca-revoke )
Lähme tagasi sertifikaatide kataloogi
$ cd /home/serdid
Sertifikaadi tühistamine
Valime kliendi sertifikaadi, mille kavatseme tühistada, antud näites on selleks client_cert.pem
$ ./cert.sh revok client_cert.pem
Pass phrase on juursertifikaadi võtme salasõna (antud juhul on selleks whatever).
Tühistatud sertifikaatide nimekirja tekitamine
Edasi tekitame tühistatud sertifikaatide nimekirja. Antud käsu väljundiks on fail nimega crl.pem mis kujutab endast tühistatud sertifikaatide seerianumbrite nimekirja.Pass phrase on juursertifikaadi võtme salasõna (antud juhul on selleks whatever).
$ ./cert.sh crl
FreeRADIUSE seadistamine sertifikaatide tühistusnimekirja kasutamiseks
Algatuseks lähme tagasi FreeRADIUSe kodukataloogi
$ cd /etc/raddb
Avame faili eap.conf ja liigume tls sektsiooni ja kommenteerime sisse või lisame sinna järgnevad read.
check_crl=yes CA_path = /home/serdid/
check_crl=yes abil me aktiveerime sertifikaadi tühistamisnimekirja kasutamise ja CA_path= /home/serdid näitab FreeRADIUSele kataloogi, kus asetsevad juursertifikaat (cacert.pem) ja sertifikaatide tühistamisnimekiri (crl.pem).
Peale muudatuste salvestamist kirjutame käsureale järgneva OpenSSH käsu:
$ c_rehash /home/serdid/
Et veenduda tühistatud sertifikaatide nimekirja olemasolus, võib kasutada järgnevat käsku
$ openssl crl -in /home/serdid/crl.pem -noout -text
Käsu tulemis näeme tühistatud sertifikaatide nimekirja, õigemini tühistatud sertifikaatide seerianumbreid:
Mida silmas pidada
1.FreeRADIUS server loeb juursertifikaadi ja sertifikaatide tühistusnimekirja ainult käivitamisel, seega tuleb peale sertifikaatide tühistamisnimekirja muutmist FreeRADIUS alati taaskävitada!
2. Peale uute sertifikaatide tühistamisnimekirja tegemist peab juursetrifikaadi/sertifikaatide tühistamisnimekirja kataloogile käivitada käsklus c_reshash
Tühistatud sertifikaatide nimekirja testimine
Viimaseks sammuks on FreeRADIUSe serveri käivitamine ja tühistatud klient sertifikaadidga ühendumise proovimine. Enam ühendumine ei õnnestu ja juhul kui freeradius on käivitatud radiusd -X võtmega näeme midagi sarnast (pöörake tähelepanu esile tõstetud alale) :
Samas kehtiva kliendi sertifikaadiga on veel võimalik wifi võrguga ühenduda (seda saab testida kui tegite või teete rohkem kui ühe kliendi sertifikaadi)
Korduma Kippuvad Küsimused:
K1: Miks mu sertifikaadid ei tööta?
V1 :Sertifikaat ei ole klientmasinas aktiivne – võrrelge kellaegu arvutis, kus te tekitasite sertifikaadi arvutiga kuhu te selle paigaldasite. Juhul kui seal on erinevad kellajad, on tõenäoline, et sertifikaadi kehtivusaeg pole veel alanud. Kõige lihtsam meetod selle probleemi lahendamiseks on muuta arvutis kellaaega.
Alljärgneval joonisel võib näha ekraanitõmmist mittekehtivast sertifikaadist. Pöörake tähelepanu veateatele "This certificate has expired or is not yet valid" ja „ Valid from“ vahemikule.
V2 :Vaadake üle enda sertifikaatide failis, juhul kui mõne faili suurus on 0kb, olete teinud kusagil vea. Kuna võimalusi on mitmeid siis on soovitatav vanad sertifikaadid ära kustutada ja sertifikaadi tekitamise protsess lihtsalt uuesti läbi teha, olles seekord tähelepanelikum.