Uputstvo za instalaciju i konfiguraciju FreeRADIUS softvera za potrebe Davaoca Resursa¶
- Verzija FreeRadius softvera: 3.2.0
- Operativni sistem: CentOS 7
FreeRADIUS (www.freeradius.org) predstavlja softversku platformu za RADIUS server. Aktuelne verzije možete da pogledate na starnici http://freeradius.org/download.html.
U ovom Uputstvu prikazana je instalacija FreeRADIUS servera za potrebe institucije (Davaoca Resursa) u okviru AMRES eduroam servisa.
Pre same instalacije FreeRADIUS softvera potrebno je instalirati određene softverske pakete i biblioteke, koje su neophodne za pravilno funkcionisanje servera. U nastavku su, po sekcijama, predstavljeni ovi paketi i komande za instalaciju.
Radi čuvanja podataka o sesijama koristiće se PostgreSQL baza podataka, a vi imate mogućnost da je instalirate zajedno sa RADIUS serverom na istoj VM/serveru, ili da PostgreSQL bazu instalirate na zasebnoj VM/serveru. U zavisnosti od Vašeg izbora razlikovaće se konfiguracija dva konfiguraciona fajla RADIUS servera (sql i cui modul) o čemu će biti više u nastavku ovog uputstva.
Priprema pred instalaciju¶
Onemogućiti SElinux¶
Radi adekvatnog funkcionisanja softvera neophodno je onemogućiti SElinux!
Provera statusa:
To se može uraditi na sledeći način:
Otoriti fajl /etc/selinux/config i promeniti vrednost iz SELINUX=enforcing u SELINUX=disabled.
Podesiti hosta¶
U okviru čitavog uputstva smatraće se da je domen VM radius.institucija.ac.rs, tako da na svim mestima umesto ovog naziva domena potrebno je da unesete naziv po vašem izboru.
Veoma je važno da FQDN (Fully Qualified Domain Name) i pun hostname (# hostname -f) ove VM, npr. radius.institucija.ac.rs, koji se podešava u okviru ove sekcije bude isti kao i domen koji je adekvatno podešen na DNS serveru, a taj domen će se takođe kasnije koristiti za kreiranje sertifikata.
Podešavanje host podataka
Dat je primer postavljanja radius.institucija.ac.rs kao FQDN podatka, koji je potrebno zameniti FQDN podatkom Vašeg Davaoca Resursa, kao i postavljanja HOSTNAME podatka: radius , koji je potrebno zameniti HOSTNAME podatkom Vašeg Davaoca Resursa.
Na kraju fajla se unosi linija u formi: IP ADRESA FQDN HOSTNAME:
Postaviti hostname
Koristi se komanda sledeće forme: hostnamectl set-hostname HOSTNAME
Sačuvati izmene:
Podesiti IPTABLES¶
Najpre je potrebno onemogućiti firewalld servis, ukoliko već nije.
Potrebno je instalirati iptables-services softverski paket i omogućiti iptables proces, ukoliko već nije.
Otvoriti portove 1812, 1813 i 1814 prema FTLR serverima, monitorima i NAS uređajima
To se može uraditi na sledeći način:
Otvoriti navedene portove dodavanjem sledećih linija u fajl:
#147.91.4.204 (ftlr1.ac.rs)
-A INPUT -m state -s 147.91.4.204/32 --state NEW -m udp -p udp --dport 1812 -j ACCEPT
-A INPUT -m state -s 147.91.4.204/32 --state NEW -m udp -p udp --dport 1813 -j ACCEPT
-A INPUT -m state -s 147.91.4.204/32 --state NEW -m udp -p udp --dport 1814 -j ACCEPT
#147.91.1.101(ftlr2.ac.rs)
-A INPUT -m state -s 147.91.1.101/32 --state NEW -m udp -p udp --dport 1812 -j ACCEPT
-A INPUT -m state -s 147.91.1.101/32 --state NEW -m udp -p udp --dport 1813 -j ACCEPT
-A INPUT -m state -s 147.91.1.101/32 --state NEW -m udp -p udp --dport 1814 -j ACCEPT
#147.91.3.12 (monitor.eduroam.ac.rs)
-A INPUT -m state -s 147.91.3.12/32 --state NEW -m udp -p udp --dport 1812 -j ACCEPT
-A INPUT -m state -s 147.91.3.12/32 --state NEW -m udp -p udp --dport 1813 -j ACCEPT
-A INPUT -m state -s 147.91.3.12/32 --state NEW -m udp -p udp --dport 1814 -j ACCEPT
#147.91.56.177 (monitor2.eduroam.ac.rs)
-A INPUT -m state -s 147.91.56.177/32 --state NEW -m udp -p udp --dport 1812 -j ACCEPT
-A INPUT -m state -s 147.91.56.177/32 --state NEW -m udp -p udp --dport 1813 -j ACCEPT
-A INPUT -m state -s 147.91.56.177/32 --state NEW -m udp -p udp --dport 1814 -j ACCEPT
#Otvaranje portova zarrad NAS uređaja (za svaki NAS uređaj je potrebno otvoriti navedene portove)
-A INPUT -m state -s IP_adresa_NAS_uređaja/32 --state NEW -m udp -p udp --dport 1812 -j ACCEPT
-A INPUT -m state -s IP_adresa_NAS_uređaja/32 --state NEW -m udp -p udp --dport 1813 -j ACCEPT
-A INPUT -m state -s IP_adresa_NAS_uređaja/32 --state NEW -m udp -p udp --dport 1814 -j ACCEPT
Napomena: Navedene linije je potrebno uneti bavezno iznad linije: -A INPUT -j REJECT --reject-with icmp-host-prohibited
Instalacija neophodnih softverskih paketa i biblioteka¶
Biblioteke gcc su neophodne za kompajliranje softverskog paketa pri instalaciji
Biblioteke libtalloc definišu skup funkcija koje pojednostavljuju alokaciju/dealokaciju podataka, pre svega komplesnih struktura koje sadrže mnogo dinamički alociranih elemenata kao što su stringovi ili nizovi:
Softverski paket openssl je uglavnom preinstaliran na Linux distribucijama. FreeRADIUS koristi openssl i openssl-devel softver za kreiranje digitalnih ključeva za EAP-TTLS i PEAP mehanizme autentifikacije:
Softverski paket postgresql i postgresql-devel biblioteka se mogu koristiti za čuvanje RADIUS accounting podataka. Ovo je bitno za institucije koje žele da dobiju status Davaoca Resursa.
Softverski paket psmisc omogućava korišćenje killall komande:
Source instalacija FreeRADIUS softvera¶
Otići na putanju /opt:
Preuzeti najnoviju verziju FreeRADIUS softvera (3.2.0)
Otpakovati preuzeti paket:
Zatim se pređe u freeradius-server-3.2.0 direktorijum:
Napomena: Preporuka je da izveštaj naredne tri komande iskopirate i sačuvate.
Konfiguracioni fajlovi se nalaze na putanji: /usr/local/etc/raddb
U verziji 3 FreeRADIUS servera, direktorijum /usr/local/etc/raddb/modules/ , koji je korišćen u ranijim verzijama, nije više u upotrebi!
- U FreeRADIUS 3.2.x verzijama, svi moduli su premešteni u poddirektorijum /usr/local/etc/raddb/mods-available.
- Moduli koji mogu biti od interesa su ldap, ntlm_auth, cui, eap, sql itd...
- Aktiviranje željenih modula se postiže tako što se pravi soft link za taj modul u okviru poddirektorijuma /usr/local/etc/raddb/mods-enabled/
Konfiguracija FreeRADIUS servera¶
Kada kopirate delove konfiguracije u konfiguracione fajlove u nastavku uputstva možete da koristite nano editor, jer vim editor prepoznaje oznaku za komentar u nekom delu konfiguracije i ponavlja tu oznaku u svim narednim redovima kopirane konfiguracije.
eduroam virtuelni tunel¶
Virtuelni tuneli omogućavaju konfiguraciju većeg broja nezavnisnih servisa na FreeRADIUS platformi. Za potrebe eduroam sevisa, kreira se novi virtuelni tunel koji će obrađivati autentifikacione zahteve:
- Preći u poddirektorijum /usr/local/etc/raddb/sites-available/
- Napraviti kopiju fajla default virtuelnog tunela, čije će ime biti eduroam
- Izmeniti kreirani fajl.
Sledi detaljan prikaz svih izmena fajla eduroam po koracima.
U okviru prve listen podsekcije:
-
Zakomentarisati liniju
type = auth
-
Ispod nje dodati liniju:
type = auth+acct
Sledeći koraci se odnose na authorize sekciju.
- Nakon linije
filter_username
, a pre linijepreprocess
dodati sledeće linije koda:
Napomena: Deo konfiguracije u kome se odbija zahtev na osnovu Calling-Station-Id vrednosti nije neophodan, ali ukoliko je potrebno da se koristi otkomentarisati taj deo i dodati odgovarajuću MAC adresu.
Kod opcije update request podesiti vrednost atributa Operator-Name tako da odgovara domenu vaše institucije, npr. "1institucija.ac.rs". Veoma je važno da ova vrednost počinje brojem 1, tako da je ne treba menjati.
- Zatim treba otkomentarisati liniju
# cui
- Zatim treba zakomentarisati linije
files
,-sql
i-ldap
- Na kraju zakomentarisati linije:
Pre izmena sekcija authorize izgleda ovako:
Sledeći korak se odnosi na authenticate sekciju.
- Zakomentarisati liniju
mschap
Pre izmene sekcija authenticate izgleda ovako:
Sledeći korak se odnosi na accounting sekciju.
Sledeći koraci se odnose na post-auth sekciju.
Potrebno je:
-
Otkomentarisati liniju
#cui
-
Otkomentarisati liniju
#reply_log
i ispod nje dodati liniju:
-
Zakomentarisati liniju
-sql
-
Otkomentarisati liniju
insert_acct_class
-
Zakomentarisati liniju
-sql
u okviru Post-Auth-Type REJECT podsekcije
Pre izmena sekcija post-auth izgleda ovako:
Sledeći koraci se odnose na pre-proxy sekciju.
Potrebno je:
-
Otkomentarisati liniju
cui
-
Otkomentarisati liniju
pre_proxy_log
-
Ispod linije
attr_filter.pre-proxy
dodati sledeće :
Pre izmena sekcija pre-proxy izgleda ovako:
Sledeći koraci se odnose na post-proxy sekciju.
Potrebno je:
- Otkomentarisati liniju
post_proxy_log
Pre izmena sekcija post-proxy izgleda ovako:
Prikaz fajla eduroam sa svim potrebnim izmenama:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 |
|
Zatim, potrebno je preći u poddirektorijum /usr/local/etc/raddb/sites-enabled i napraviti soft link ka eduroam virtuelnom tunelu iz poddirektorijuma /usr/local/etc/raddb/sites-available:
Fajl radiusd.conf¶
Davalac Resursa ima obavezu da čuva log fajlove, tako da treba da se omogući beleženje log poruka u radius.log fajlu. Ovaj fajl se nalazi u /usr/local/var/log/radius direktorijumu.
Kako bi se omogućilo upisivanje log poruka, prelazi se u direktorijum /usr/local/etc/raddb i treba izmeniti fajl radiusd.conf .
Potrebno je zakomentarisati liniju auth = no
i ispod nje dodati liniju:
Izgled fajla radiusd.conf nakon izmena:
sql modul¶
Izmena modula sql ukoliko se PostgreSQL baza instalira na istoj VM¶
- Zakomentarisati liniju
dialect = "sqlite"
i ispod nje dodati sledeću liniju:
- Zakomentarisati liniju
driver = "rlm_sql_null"
i ispod nje dodati sledeću liniju:
Sledeći koraci se odnose na sekciju Connection info:
- Ispod linije
#server = "localhost"
dodati sledeću liniju ukoliko se PostgreSQL baza instalira na ovoj VM:
- Ispod linije
#port = 3306
dodati sledeću liniju:
- Ispod linije
#login = "radius"
dodati sledeću liniju:
- Ispod linije
#password = "radpass"
dodati sledeću liniju:
Postupak instalacije PostgreSQL baze sledi u nastavku uputstva, bitno je da radius korisnik koji se bude kreirao u PostgreSQL bazi ima lozinku koja se ovde navodi.
Prikaz fajla sql sa svim potrebnim izmenama:
Kada je završena konfiguracija sql modula, potrebno je preći u poddirektorijum /usr/local/etc/raddb/mods-enabled i napraviti soft link ka sql modulu iz poddirektorijuma /usr/local/etc/raddb/mods-available:
Izmena modula sql ukoliko se PostgreSQL baza instalira na zasebnoj VM¶
- Zakomentarisati liniju
dialect = "sqlite"
i ispod nje dodati sledeću liniju:
- Zakomentarisati liniju
driver = "rlm_sql_null"
i ispod nje dodati sledeću liniju:
Sledeći koraci se odnose na sekciju Connection info:
- Ispod linije
#server = "localhost"
dodati sledeću liniju gde se navodi IP adresa VM na kojoj je PostgreSQL baza:
- Ispod linije
#port = 3306
dodati sledeću liniju:
- Ispod linije
#login = "radius"
dodati sledeću liniju:
- Ispod linije
#password = "radpass"
dodati sledeću liniju:
Postupak instalacije PostgreSQL baze sledi u nastavku uputstva, bitno je da radius korisnik koji se bude kreirao u PostgreSQL bazi ima lozinku koja se ovde navodi.
Prikaz fajla sql sa svim potrebnim izmenama:
Kada je završena konfiguracija sql modula, potrebno je preći u poddirektorijum /usr/local/etc/raddb/mods-enabled i napraviti soft link ka sql modulu iz poddirektorijuma /usr/local/etc/raddb/mods-available:
cui modul¶
Izmena modula cui ukoliko se PostgreSQL baza instalira na istoj VM¶
Sledi detaljan prikaz svih izmena fajla cui po koracima:
- Zakomentarisati liniju
dialect = "sqlite"
i ispod nje dodati liniju:
Specificirati podatke o PostgreSQL bazi
- Iskopirati sledeći deo uz zamenu lozinke radius korisnika prema vašem izboru odmah iznad linije
pool {
:
Postupak instalacije PostgreSQL baze sledi u nastavku uputstva, bitno je da radius korisnik koji se bude kreirao u PostgreSQL bazi ima lozinku koja se ovde navodi.
Prikaz fajla cui sa svim potrebnim izmenama:
Kada je završena konfiguracija cui modula, potrebno je preći u poddirektorijum /usr/local/etc/raddb/mods-enabled i napraviti soft link ka cui modulu iz poddirektorijuma /usr/local/etc/raddb/mods-available:
Izmena modula cui ukoliko se PostgreSQL baza instalira na zasebnoj VM¶
Sledi detaljan prikaz svih izmena fajla cui po koracima:
- Zakomentarisati liniju
dialect = "sqlite"
i ispod nje dodati liniju:
Specificirati podatke o PostgreSQL bazi
- Iskopirati sledeći deo uz zamenu lozinke radius korisnika prema vašem izboru odmah iznad linije
pool {
:
Postupak instalacije PostgreSQL baze sledi u nastavku uputstva, bitno je da radius korisnik koji se bude kreirao u PostgreSQL bazi ima lozinku koja se ovde navodi.
Prikaz fajla cui sa svim potrebnim izmenama:
Kada je završena konfiguracija cui modula, potrebno je preći u poddirektorijum /usr/local/etc/raddb/mods-enabled i napraviti soft link ka cui modulu iz poddirektorijuma /usr/local/etc/raddb/mods-available:
Fajl post-proxy¶
Potrebno je izmeniti fajl post-proxy u okviru direktorijuma /usr/local/etc/raddb/mods-config/attr_filter/
Nakon linije Operator-Name =* ANY,
a pre linije Port-Limit <= 2
definisati dva dodatna atributa tako sto se dodaju linije:
Sledi prikaz fajla post-proxy sa izvršenom izmenom:
Konfiguracija CUI atributa¶
Ako dođe do sigurnosnog incidenta u eduroam servisu, u najvećem broju slučajeva Davalac Resursa u svojim logovima može da pronađe samo anonimni identitet korisnika (anonymous@idp.ac.rs). U tom slučaju, dok se dotični korisnik ne identifikuje u bazi Davaoca Identiteta, Davalac Resursa jedino može da blokira ceo domen problematičnog korisnika. Rešenje ovog problema se postiže korišćenjem CUI atributa.
CUI (Chargeable User Identity) predstavlja jednistveni identifikator svakog eduroam korisnika, formira ga Davalac Identiteta i šalje Davaocu Resursa.
Ako je autentifikacija uspešna, Davalac Identiteta formira CUI atribut formiranjem MD5 hash-a koristeći UID korisnika, Operator-Name atribut iz zahteva i opciono ključa (u ovom primeru cui_hash_key). Ova vrednost se u Access-Accept poruci vraća Davaocu Resursa. Bitno je napomenuti da će vrednosti CUI atributa biti različita za istog korisnika, koji koristi eduroam resurse kod različitih Davaoca Resursa.
Izmena fajla cui¶
- Preći u poddirektorijum /usr/local/etc/raddb/policy.d
- Izmeniti fajl cui.
-
U liniji
cui_hash_key = "changeme"
umesto dela changeme dodati proizvoljnu lozinku. -
Zakomentarisati liniju
cui_require_operator_name = "no"
i ispod nje dodati liniju:
Sledi prikaz fajla cui sa izvršenom izmenom:
Modul linelog_test¶
Potrebno je kreirati modul linelog_test koji služi za testiranje zapisa i parametara sesije. Ovaj korak nije obavezan, ali može biti od koristi pri testiranju rada servera i postupka slanja atribura.
Otići na putanju /usr/local/etc/raddb/mods-available
Kreirati fajl linelog_test
Iskopirati sledeći sadržaj u kreiran fajl:
linelog logovi_test {
filename = ${logdir}/logovi_test
format = ""
reference = "%{%{reply:Packet-Type}:-format}"
Access-Accept ="eduroam-auth#IdP=%{request:Realm}#User=%{User-Name}#MAC=%{tolower:%{Calling-Station-Id}}#NAS=%{Called-Station-Id}#IP=%{Framed-IP-Address}#NASSRC=%{Packet-Src-IP-Address}#NASIP=%{NAS-IP-Address}#CUI=%{%{%{reply:Chargeable-User-Identity}:-%{outer.reply:Chargeable-User-Identity}}:-Unknown}#RESULT=OK#"
Access-Reject ="eduroam-auth#IdP=%{request:Realm}#User=%{User-Name}#MAC=%{tolower:%{Calling-Station-Id}}#NAS=%{Called-Station-Id}#IP=%{Framed-IP-Address}#NASSRC=%{Packet-Src-IP-Address}#NASIP=%{NAS-IP-Address}#CUI=%{%{%{reply:Chargeable-User-Identity}:-%{outer.reply:Chargeable-User-Identity}}:-Local User}#RESULT=FAIL#"
}
Zatim je potrebno je preći u poddirektorijum /usr/local/etc/raddb/mods-enabled i napraviti soft link ka linelog_test modulu iz poddirektorijuma /usr/local/etc/raddb/mods-available:
Fajl clients.conf¶
-
clients.conf fajl se nalazi u direktorijumu /usr/local/etc/raddb i predstavlja modul u kome se definišu RADIUS klijenti - uređaji u mreži od kojih se prihvataju zahtevi.
-
Davaoci Resursa imaju svoje mrežne uređaje (NAS - Network Access Server), koje koriste kao pristupnu infrastrukturu za eduroam servis. NAS uređaji mogu biti Access Point uređaji, WLC kontroleri ili svičevi koji podržavaju 802.1x standard. Oni se moraju podesiti tako da vrše kontrolu pristupa korisnika, što obuhvata aktiviranje 802.1x protokola, konfigurisanje autentifikacije korišćenjem RADIUS servera i sl. (nije predmet ovog uputstva).
-
Na FreeRADIUS serveru je potrebno definisati NAS uređaje kao klijente RADIUS servera, što se konfiguriše u okviru fajla /usr/local/etc/raddbclients.conf. Pored osnovne konfiguracije (za Davaoca Identiteta) u kojoj se definišu AMRES FTLR serveri i NetIIS server za nadgledanje, potrebno je dodati kijenta za svaki NAS uređaj.
-
Šifra potrebna za komunikaciju sa klijentima se definiše u secret. Ovaj parametar se dobija lično ili telefonskim putem od AMRES-a i njega je potrebno zameniti u konfiguraciji.
- Na kraj fajla dodati sledeće linije:
Fajl proxy.conf¶
proxy.conf se nalazi u /usr/local/etc/raddb direktorijumu. Ovaj konfiguracioni fajl omogućava serveru da zna na koji način će obrađivati pristigle RADIUS zahteve.
Linije koje su označene se dodaju u fajl.
Prvi korak se odnosi na home_server localhost sekciju.
Sledeći korak je da se nakon sekcije realm LOCAL doda sledeće:
Napomena: Šifra potrebna za komunikaciju sa FTLR serverima se definiše u secret. Ovaj parametar se dobija lično ili telefonskim putem od AMRES-a i njega je potrebno zameniti u konfiguraciji.
Prikaz fajla proxy.conf sa svim potrebnim izmenama:
Spisak linkovanih modula¶
Instalacija i podešavanje PostgreSQL baze podataka¶
Sledeći korak predstavlja instalaciju i podešavanje PostgreSQL baze podataka.
Data Vam je mogućnost da bazu instalirate na istoj ovoj VM na kojoj ste u prethodnim koracima instalirali RADIUS server ili možete da je instalirate na zasebnoj VM.
Uputstvo za instalaciju PostgreSQL baze podataka na CentOS operativnom sistemu
Uputstvo za instalaciju PostgreSQL baze podataka na Debian operativnom sistemu
Napomena: Nakon instalacije PostgreSQL baze podataka vratite se na ovo uputstvo i ispratite nastavak.
Provera konfiguracije RADIUS servera¶
Ovim su završena osnovna podešavanja neophodna za funkcionisanje RADIUS servera.
Za proveru konfiguracije preporuka je da se RADIUS proces pokrene prvo u debug modu, komandom radiusd -X
Preporuka je da se debug mod koristi samo u slučaju kada se prave izmene u konfiguraciji ili u slučaju kada neko od korisnika ima problem sa povezivanjem na eduroam, jer se u debug modu lozike prikazuju u clear-text formatu.
Ukoliko je konfiguracija bez grešaka, na ekranu se ispisuje sledeće:
.
.
.
Listening on auth+acct address * port 1812 bound to server eduroam
Listening on acct address * port 1813 bound to server eduroam
Listening on auth address :: port 1812 bound to server eduroam
Listening on acct address :: port 1813 bound to server eduroam
Listening on proxy address * port xxxxx
Listening on proxy address :: port xxxxx
Ready to process requests
Prekid rada RADIUS procesa u debug modu, se izvršava sa CTRL+C
Pridruživanje AMRES eduroam servisu¶
Na stranici http://www.eduroam.amres.ac.rs/rs/institucije-prikljucivanje.html možete da pročitate o tome šta je šta je potrebno da se Vaša institucija pridruži AMRES eduroam servisu.
Pregled logova¶
Pregled log direktorijuma na VM¶
[root@test radius]# cd /usr/local/var/log/radius
[root@test radius]# ll
total 44
-rw------- 1 root root 539 Nov 8 17:42 logovi_test
drwx------ 3 root root 23 Nov 7 12:25 radacct
-rw-r----- 1 root root 12525 Nov 7 16:54 radius.log
-rw-r--r-- 1 root root 21120 Nov 23 09:47 radwtmp
Napomena: Možete da koristite radius.log fajl da proverite pristup korisnika. U okviru ovog fajla bi se takođe ispisala i adekvatna poruka ukoliko npr. sertifikat nije validan
Fri Jan 6 09:26:15 2023 : ERROR: (77794) eap_ttls: ERROR: (TLS) Alert read:fatal:certificate expired
Fri Jan 6 09:26:15 2023 : ERROR: (77794) eap_ttls: ERROR: (TLS) Server : Failed in error
Fri Jan 6 09:26:15 2023 : ERROR: (77794) eap_ttls: ERROR: (TLS) Failed reading from OpenSSL
Fri Jan 6 09:26:15 2023 : Auth: (77794) Login incorrect (eap_ttls: (TLS) Alert read:fatal:certificate expired): [anonymous@xxxx.institucija.ac.rs] (from client ftlr1 port 0 cli XX-XX-XX-XX-XX-XX)
Napomena: Za detaljnije podatke o validnosti konfiguracije radius servera najbolje je pustiti radius servis u debug modu korišćenjem sledeće komande:
-
Prekid rada radius procesa u debug modu izvršava se klikom na: CTRL+C.
-
Nakon što ustanovite da je konfiguracija ispravna možete pokrenuti radius proces regularno komandom:
Provera verzije instaliranog FreeRADIUS paketa¶
Primena logrotate funkcije¶
Kada je aktiviran upis logova, može da se desi posle određenog vremena da server bude preopterećen. Rezultati preopterećenja mogu biti različiti.
Najgori slučaj podrazumeva prekid rada servera. Za servere koji opslužuju veliki broj korisnika, ovo može predstavljati problem. Korišćenjem logrotate funkcije se može znatno smanjiti opterećenje servera.
Podešavanje logrotate funkcije¶
Sva podešavanja logrotate funkcije se obavljaju u logrotate.conf fajlu. Ovaj fajl se nalazi u /etc direktorijumu.
Izgled fajla pre izmena je dat u nastavku:
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
Za pregled i opis svih logrotate funkcionalnosti može se primeniti komanda:
Direktorijume i log fajlove koje želite da rotirate potrebno je dodati na kraj ovog konfiguracionog fajla. U zavisnosti od potreba, može se koristiti širok spektar različitih kombinacija komandi. Neke od najzačajnih su date u nastavku, uz odgovarajuće objašnjenje:
-
compress – omogućava da se fajlovi kompresuju, default vrednost je gunzip.
-
extension – ne označava tip ekstenzije, već ekstenziju koja se dodaje posle imena fajla. Ovo može biti korisno prilikom reimenovanja rotiranih log fajlova. Ukoliko se koristi i compress opcija, tada će pre .gz ekstenzije biti navedena ekstenzija koju je definisao korisnik. Npr. kada je potrebno preimenovati fajl radius.log u radius.log.pera, dodaje se celo ime posle extension naredbe. Kada je navedena i opcija compress, tada će ime rotiranog fajla biti radius.log.pera.gz.
-
mail – pre nego što se log fajl izbriše, može se poslati mejl na adresu koja je navedena, npr. mail pera.peric@idp.ac.rs.
-
postrotate/endscript i pretrotate/endscript – kôd između ove dve komande se izvršava nakon, odnosno pre nego što se log fajl rotira, respektivno.
-
rotate – sintaksa je rotate
. Fajlovi se rotiraju tačno puta, pre nego što se obrišu. Ako je count jednak nuli, stare verzije se brišu umesto da se rotiraju. Kada se dođe do poslednje vrednosti, počinje se od početka. Na ovaj način briše se fajl koji je bio rotiran prvi i novi ga zamenjuje. -
size – log fajlovi se rotiraju kada pređu veličinu koja je navedena. Ako se posle broja koji označava veličinu ne navede ništa, smatra se da se radi o veličini fajla u KB. Može se definisati i veličina u MB, tako što se posle broja navede slovo M.
-
start – broj od koga počinje numeracija log fajlova koji se rotiraju (ako se navede 1, sledeći log fajl će imati broj 2 i tako redom). Ova opcija nije zavisna od rotate opcije, što znači da će fajlovi i dalje biti rotirani onoliko puta koliko je navedeno rotate opcijom.
Pored ovih opcija, moguće je definisati u kom vremenskom intervalu će se logovi rotirati, komandama: daily, monthly i weekly. Ukoliko je potrebno čuvati logove za celu godinu, to je moguće korišćenjem komande monthly u kombinaciji sa rotate funkcijom. Ukoliko se rotira jedan fajl, potrebno je navesti punu putanju do njega, (npr. /usr/local/var/log/radius/radius.log)
Na kraju fajla potrebno je dodati sledeće:
/usr/local/var/log/radius/radius.log {
daily
rotate 12
start 1
compress
dateext
}
/usr/local/var/log/radius/logovi_test {
daily
rotate 12
start 1
compress
dateext
}
/usr/local/var/log/radius/radwtmp {
daily
start 1
compress
dateext
}
Primenom ovog koda postiže se :
- Rotiranje radius.log i logovi_test fajla na mesečnom nivou
- Kompresija je tipa .gzip
- Rotiran fajl će imati ekstenziju sa datumom rotacije (npr. radius.log-GGGGMMDD.gz)
Prikaz sadržaja fajla /etc/logrotate.conf:
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
/usr/local/var/log/radius/radius.log {
daily
rotate 12
start 1
compress
dateext
}
/usr/local/var/log/radius/logovi_test {
daily
rotate 12
start 1
compress
dateext
}
/usr/local/var/log/radius/radwtmp {
daily
start 1
compress
dateext
}
Kreiranje skripti za upravljanje logovima (opciono)¶
Kreirati bin direktorijum u /root direktorijumu ukoliko već ne postoji:
Kreirati navedene tri skripte.
Kreirati skriptu monthly_cleanup.sh, koja služi za brisanje logova starijih od 12 meseci:
Kopirati sledeći sadržaj:#!/bin/bash
# Skripta je namenjena brisanju logova kada razlika u mesecima predje 12.
# Pokrece se automatski uz pomoc cron daemon-a svakog prvog u mesecu.
# Na ovaj nacin se pravi "vremenski prozor" koji sadrzi logove za prethodnih 12 meseci,
# obzirom na zakonsku obavezu cuvanja logova. U kombinaciji sa skriptom koja obavlja zipovanje
# na dnevnom nivou se omogucava da se smanji koriscenje memorije.
cd /usr/local/var/log/radius/radacct/
last_year=`date --date='13 months ago' +'%Y%m'`
dir_array=(`ls -l | awk '{print $9}'`)
length=${#dir_array[@]}
for ((i=0; i<$length; i++))
do
cd ${dir_array[i]}/
`rm -rf *-$last_year*`
retval=$?
if [ $retval -eq 0 ]; then
echo "Izbrisani su svi fajlovi za `date --date='13 months ago' +'%-m'`. mesec `date --date='1 year ago' +'%Y'`. godine iz direktorijuma ${dir_array[i]}" >> /tmp/monthly_cleanup_log.txt
#cd ..
#wait
else
echo "Doslo je do greske!" >> /tmp/monthly_cleanup_error_log.txt
fi
#dodato
cd ..
wait
done
Kreirati skriptu rad_restart, koja služi za restart radiusd procesa:
Kopirati sledeći sadržaj:Kreirati skriptu zip_daily.sh, koja služi za zipovanje log fajlova na dnevnom nivou:
Kopirati sledeći sadržaj:#!/bin/bash
# Skripta koja omogucava zipovanje log fajlova na dnevnom nivou.
# Potrebno je obuhvatiti sve fajlove koji se zavrsavaju ekstenzijom
# koja odgovara danasnjem datumu (auth-detail-datum, reply-detail-datum,
# detail-datum, pre-proxy-detail-datum, post-proxy-detail-datum).
cd /usr/local/var/log/radius/radacct/
dir_array=(`ls -l | awk '{print $9}'`)
timestamp=`date --date='1 day ago' +'%Y%m%d'`
dateext=`date +'%Y%m%d'`
length=${#dir_array[@]}
for ((i=0; i<$length; i++))
do
cd ${dir_array[i]}/
`tar czf zip_log-$dateext.tgz *-$timestamp`
retval=$?
if [ $retval -eq 0 ]; then
echo "`date +'%Y %b %d %r'` Zipovanje za direktorijum ${dir_array[i]} je uspesno izvrseno" >> /tmp/zip_daily_log.txt
`rm -rf *-$timestamp`
#echo "`date +'%Y %b %d %r'` Brisanje fajlova za `date --date='1 day ago' +'%Y%m%d'` je uspesno izvrseno" >> /tmp/daily_cleanup.txt
#cd ..
wait
else
echo "`date +'%Y %b %d %r'` Doslo je do greske za direktorijum ${dir_array[i]}!" >> /tmp/daily_cleanup_error_log.txt
fi
cd ..
done
Podesiti crontab:
Potrebno je da se podesi da se navedene skripte monthly_cleanup.sh, rad_restart, zip_daily.sh pokreću u određenim terminima:
Iskopirati sledeće:
0 3 * * * /root/bin/zip_daily.sh
0 5 2 * * /root/bin/monthly_cleanup.sh
0 6 * * * /root/bin/rad_restart
0 12 * * * /root/bin/rad_restart
Sačuvati.
Kreiranje alijasa (opciono)¶
U cilju lakšeg održavanja RADIUS servera od pomoći bi bilo kreirati "prečice" ka bitnim direktorijumima:
-
prečica r za prelazak u direktorijum /usr/local/etc/raddb/
-
prečica rl za prelazak u direktorijum /usr/local/var/log/radius/
Otvoriti i editovati sledeći fajl:
Nakon navođenja poslednjeg alijasa dodati sledeće linije:
Fajl na kraju izgleda ovako:
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias r='cd /usr/local/etc/raddb/'
alias rl='cd /usr/local/var/log/radius/'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
Procedura kod izmene konfiguracije RADIUS servera¶
Pre bilo kakve izmene u konfiguraciji RADIUS servera ili ukoliko se detektuje problem u njegovom funkcionisanju potrebno je najpre zaustaviti RADIUS proces ukoliko je aktivan
Zatim možete da izvršite promene u konfiguraciji i istražite eventualni problem u funkcionisanju RADIUS servera
Za proveru konfiguracije preporuka je da se RADIUS proces pokrene prvo u debug modu, komandom radiusd -X
Preporuka je da se debug mod koristi samo u slučaju kada se prave izmene u konfiguraciji ili u slučaju kada neko od korisnika ima problem sa povezivanjem na eduroam, jer se u debug modu lozike prikazuju u clear-text formatu.
Ukoliko je konfiguracija bez grešaka, na ekranu se ispisuje sledeće:
.
.
.
Listening on auth+acct address * port 1812 bound to server eduroam
Listening on acct address * port 1813 bound to server eduroam
Listening on auth address :: port 1812 bound to server eduroam
Listening on acct address :: port 1813 bound to server eduroam
Listening on proxy address * port xxxxx
Listening on proxy address :: port xxxxx
Ready to process requests
Prekid rada RADIUS procesa u debug modu, se izvršava sa CTRL+C