FreeRadius EAP-TLS
V první řadě je potřebné vygenerovat certifikáty a takto vypadá běžná struktura templatu pro certifikát, ze které budeme vycházet.
[ ca ] default_ca = CA_default [ CA_default ] dir = ./ certs = $dir crl_dir = $dir/crl database = $dir/index.txt new_certs_dir = $dir certificate = $dir/ca.pem serial = $dir/serial crl = $dir/crl.pem private_key = $dir/ca.key RANDFILE = $dir/.rand name_opt = ca_default cert_opt = ca_default default_days = 730 default_crl_days = 730 default_md = sha256 preserve = no policy = policy_match crlDistributionPoints = URI:http://www.example.com/example_ca.crl [ policy_match ] countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional [ policy_anything ] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional [ req ] prompt = no distinguished_name = cacrl default_bits = 2048 input_password =output_password = x509_extensions = v3_ca [certificate_authority] countryName = stateOrProvinceName = Radius localityName = organizationName = FreeRadius emailAddress = freeradius@localhost commonName = "FreeRadius Certificate Authority" [v3_ca] subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer:always basicConstraints = CA:true crlDistributionPoints = URI:http://www.example.com/example_ca.crl
V certifikátu je potřebné upravit common name organizaci a další věci, které jej udělají více jedinečným, jako město firma lokalita atd...
Prvně musíme udělat root certifikát
$ cd /etc/freeradius/3.0/certs/ $ nano ca.cnf
V ca.cnf musíme upravit hlavně hesla, které slouží pro ověření. "input_password" a "output_password"
$ make ca.pem $ make ca.der
Tímto máme základní root certifikát hotový. ca.der je verze pro Windows (v případě potřeby).
Následně potřebujeme udělat stejným způsobem server certifikát a jednotlivé klientské certifikáty.
$ nano server.cnf $ make server $ make server.csr
Tímto mame i serverový certifikát za sebou a server.csr je potřeba pro Windows klienty.
Poslední krok je generování klientských certifikátů.
$ nano client.cnf $ make client
Klienti se budou lišit rozným commnoName a mailem plus jiné hesla vše ostatní zůstane zachováno.
Následně se podíváme na upravu configů ve Free Radiusu pro zprovoznění EAP-TSL modulu.
clients.conf
v client.conf upravíme nasledující parametry.
client home { ipaddr = 192.168.1.10 proto = * secret = !Heslo od APčka pro Radius! shortname = !SSID APčka! require_message_authenticator = no nas_type = other limit { max_connections = 16 lifetime = 0 idle_timeout = 30 } }
EAP
Konfigurace eap souboru v mods-enabled
- default_eap_type = md5 + default_eap_type = tls - private_key_password = whatever + private_key_password =private_key_file = ${certdir}/server.pem - ca_file = ${cadir}/ca.pem + ca_file = ${cadir}/cacrl.pem - random_file = /dev/urandom + random_file = /dev/random - # check_crl = yes + check_crl = yes - cipher_list = "DEFAULT" + cipher_list = "HIGH" + cipher_list = "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256: ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA :ECDHE-ECDSA-AES128-SHA:DHE-RSA-AES128-GCM-SHA256: DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:ECDHE-RSA-AES256-GCM-SHA384: ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384: ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES256-GCM-SHA384: DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA: DHE-RSA-CAMELLIA256-SHA:DHE-RSA-CAMELLIA128-SHA" - ecdh_curve = "prime256v1" + ecdh_curve = "secp384r1" + ecdh_curve = "secp521r1" - #name = "EAP module" + name = "EAP-TLS" - #persist_dir = "${logdir}/tlscache" + persist_dir = "${logdir}/tlscache"
Tímto máme soubor EAP připraven k provozu.
Default
Následuje konfigurace /sites-enabled/default
- ipaddr = * + ipv4addr = 192.168.1.1 # The chap module will set 'Auth-Type := CHAP' if we are # handling a CHAP request and Auth-Type has not already been set - chap + # chap # the MS-CHAP-Challenge attribute, and add 'Auth-Type := MS-CHAP' # to the request, which will cause the server to then use # the mschap module for authentication. - mschap + # mschap # This module should be listed last, so that the other modules # get a chance to set Auth-Type for themselves. - pap + #pap - Auth-Type PAP { - pap - } + #Auth-Type PAP { + # pap + #} - Auth-Type CHAP { - chap - } + #Auth-Type CHAP { + # chap + #} - Auth-Type MS-CHAP { - mschap - } + #Auth-Type MS-CHAP { + # mschap + #} -# eap + eap
Prvně konfigurujeme IP nasledně vypíname chap mschap pap autentizace a zapneme pouze EAP
TSL
Následuje konfigurace /sites-available/tls
tls { - private_key_password = whatever + private_key_password = !Vložit heslo ktere jsme vložili do server.cnf jako input_password! private_key_file = ${certdir}/server.pem
Touto konfiguraci potrvzujeme TLS heslo a cestu k certifikatu
Google AUTH
Začneme instalací google autentifikatoru
sudo apt-get install libpam-google-authenticator
Následně stačí jen ziskat token pro každeho klienta. Na mnou zvoleném klientovi napíši následující příkaz:
student:$ google-authenticator
Čímž pro studenta projdu základními dotazy jako více připojení časové omezení tokenů atd....

Po prvním ano na časově založené tokeny získame náhraní přístup a také QR kod do aplikace v mobilu.

Naledují dodatečná nastavení vysvětlená na obrazcích výše.
Posledním krokem je přiřadit google AUTH k nějaké službě. V našem případě použijeme ssh
nano /etc/pam.d/sshd # Standard Un*x password updating. @include common-password + auth required pam_google_authenticator.so nullok nasledně mužeme restartovat službu. systemctl restart sshd.service
Tímto vyžadujeme využití google auth a přidaním nullok zajistíme, že uživatele, kteří ještě nemají vygenerovaný token na něj nebudou dotazováni. Je ovšem důležité vědět, že toto nefunguje pro učty z freeradiusu protože on ssh dotazy předavá a neřeší se u klienta proto google auth bude funguvat pouze na lokalní uživatele.
Integrace GoogleAuth do FreeRadiusu
jedna se o konfiguraci a upravu par souborů.
nano radiusd.conf - je potřeba dohledat cestu podle verze FreeRadiusu a Ubuntu user = root group = root Následuje: nano users před řádek DEFAULT Framed Protocol == PPP přidáme: # Instruct FreeRADIUS to use PAM to authenticate users DEFAULT Auth-Type := PAM cd /etc/freeradius/3.0/sites-enabled/default nano default hledáme tyto řádky: # Pluggable Authentication Modules. # pam odkomentujeme pam takto: # Pluggable Authentication Modules. pam Následuje freeradius radiusd, kde přidame 2 řádky a zakomentujeme první 4. #@include common-auth #@include common-account #@include common-password #@include common-session auth requisite pam_google_authenticator.so forward_pass auth required pam_unix.so use_first_pass
Toto by mělo být vše stačí jen otestovat