Difference between revisions of "Eduroam Configuration"
From NREN
Line 30: | Line 30: | ||
# radtest bob@uni0.edu.np hello localhost 20 testing123 | # radtest bob@uni0.edu.np hello localhost 20 testing123 | ||
+ | |||
+ | |||
+ | File: clients.conf | ||
+ | ## clients.conf -- client configuration directives | ||
+ | ####################################################################### | ||
+ | client localhost { | ||
+ | ipaddr = 127.0.0.1 | ||
+ | secret = testing123 | ||
+ | nas_type = other # localhost isn't usually a NAS... | ||
+ | } | ||
+ | |||
+ | client testing { | ||
+ | ipaddr = 45.64.162.158 | ||
+ | secret = testing123 | ||
+ | nas_type = other | ||
+ | } | ||
+ | |||
+ | client nepal-flr-1 { | ||
+ | ipaddr = 202.52.0.18 | ||
+ | netmask = 32 | ||
+ | secret = longSecretPasswordHere | ||
+ | require_message_authenticator = no | ||
+ | shortname = nepal-flr-1 | ||
+ | nastype = other | ||
+ | virtual_server = eduroam | ||
+ | } | ||
+ | |||
+ | File: sites-available/eduroam -- radius configuration | ||
+ | ## sites-available/eduroam -- radius configuration | ||
+ | ####################################################################### | ||
+ | server eduroam { | ||
+ | listen { | ||
+ | type = "auth" | ||
+ | ipaddr = * | ||
+ | port = 0 | ||
+ | } | ||
+ | listen { | ||
+ | type = "acct" | ||
+ | ipaddr = * | ||
+ | port = 0 | ||
+ | } | ||
+ | authorize { | ||
+ | # only use filter_username from version > 3.0.7 on | ||
+ | filter_username | ||
+ | if ("%{client:shortname}" != "nepal-flr-1") { | ||
+ | update request { | ||
+ | Operator-Name := "1nren.net.np" | ||
+ | # the literal number "1" above is an important prefix! Do not change it! | ||
+ | } | ||
+ | } | ||
+ | # if you want detailed logging | ||
+ | auth_log | ||
+ | suffix | ||
+ | mschap | ||
+ | eap | ||
+ | files | ||
+ | #sql | ||
+ | pap | ||
+ | } | ||
+ | authenticate { | ||
+ | Auth-Type PAP { | ||
+ | pap | ||
+ | } | ||
+ | Auth-Type CHAP { | ||
+ | chap | ||
+ | } | ||
+ | Auth-Type MS-CHAP { | ||
+ | mschap | ||
+ | } | ||
+ | digest | ||
+ | eap | ||
+ | } | ||
+ | preacct { | ||
+ | suffix | ||
+ | } | ||
+ | accounting { | ||
+ | detail | ||
+ | #sql | ||
+ | } | ||
+ | post-auth { | ||
+ | reply_log | ||
+ | Post-Auth-Type REJECT { | ||
+ | reply_log | ||
+ | } | ||
+ | } | ||
+ | pre-proxy { | ||
+ | pre_proxy_log | ||
+ | if("%{Packet-Type}" != "Accounting-Request") { | ||
+ | attr_filter.pre-proxy | ||
+ | } | ||
+ | } | ||
+ | post-proxy { | ||
+ | post_proxy_log | ||
+ | attr_filter.post-proxy | ||
+ | } | ||
+ | } | ||
+ | |||
+ | File: sites-available/eduroam-inner-tunnel | ||
+ | ## sites-available/eduroam-inner-tunnel -- radius configuration | ||
+ | ####################################################################### | ||
+ | server eduroam-inner-tunnel { | ||
+ | authorize { | ||
+ | auth_log | ||
+ | eap | ||
+ | mschap | ||
+ | #sql | ||
+ | files | ||
+ | } | ||
+ | authenticate { | ||
+ | eap | ||
+ | mschap | ||
+ | Auth-Type MS-CHAP { | ||
+ | mschap | ||
+ | } | ||
+ | } | ||
+ | post-auth { | ||
+ | reply_log | ||
+ | } | ||
+ | } | ||
+ | |||
+ | File: proxy.conf | ||
+ | ## proxy.conf | ||
+ | ####################################################################### | ||
+ | proxy server { | ||
+ | default_fallback = no | ||
+ | } | ||
+ | |||
+ | home_server npflr1 { | ||
+ | type = auth+acct | ||
+ | ipaddr = 202.52.0.18 | ||
+ | port = 1812 | ||
+ | secret = longSecretPasswordHere | ||
+ | status_check = status-server | ||
+ | } | ||
+ | |||
+ | home_server npflr2 { | ||
+ | type = auth+acct | ||
+ | ipaddr = 202.52.0.4 | ||
+ | port = 1812 | ||
+ | secret = longSecretPasswordHere | ||
+ | status_check = status-server | ||
+ | } | ||
+ | |||
+ | home_server_pool EDUROAM { | ||
+ | type = fail-over | ||
+ | home_server = npflr1 | ||
+ | home_server = npflr2 | ||
+ | } | ||
+ | |||
+ | realm NULL { | ||
+ | nostrip | ||
+ | } | ||
+ | |||
+ | realm "^uni0\.edu\.np" { | ||
+ | nostrip | ||
+ | } | ||
+ | |||
+ | realm "~.+$" { | ||
+ | pool = EDUROAM | ||
+ | nostrip | ||
+ | } | ||
+ | |||
+ | |||
+ | File: mods-available/eap.conf | ||
+ | ## mods-available/eap.conf -- Configuration for EAP types (PEAP, TTLS, etc.) | ||
+ | ####################################################################### | ||
+ | |||
+ | eap { | ||
+ | default_eap_type = peap | ||
+ | timer_expire = 60 | ||
+ | ignore_unknown_eap_types = no | ||
+ | cisco_accounting_username_bug = no | ||
+ | max_sessions = ${max_requests} | ||
+ | |||
+ | tls { | ||
+ | certdir = ${confdir}/certs | ||
+ | cadir = ${confdir}/certs | ||
+ | private_key_password = whatever | ||
+ | private_key_file = /etc/ssl/private/ssl-cert-snakeoil.key | ||
+ | certificate_file = /etc/ssl/certs/ssl-cert-snakeoil.pem | ||
+ | ca_file = /etc/ssl/certs/ca-certificates.crt | ||
+ | dh_file = ${certdir}/dh | ||
+ | random_file = /dev/urandom | ||
+ | fragment_size = 1024 | ||
+ | include_length = yes | ||
+ | check_crl = no | ||
+ | cipher_list = "DEFAULT" | ||
+ | } | ||
+ | |||
+ | ttls { | ||
+ | default_eap_type = mschapv2 | ||
+ | copy_request_to_tunnel = yes | ||
+ | use_tunneled_reply = yes | ||
+ | virtual_server = "eduroam-inner-tunnel" | ||
+ | } | ||
+ | |||
+ | peap { | ||
+ | default_eap_type = mschapv2 | ||
+ | copy_request_to_tunnel = yes | ||
+ | use_tunneled_reply = yes | ||
+ | virtual_server = "eduroam-inner-tunnel" | ||
+ | } | ||
+ | |||
+ | mschapv2 { | ||
+ | } | ||
+ | } |
Revision as of 11:59, 31 December 2018
Basic Setup for eduroam
Lab Plan
- Basic Ubuntu 18.04 is installed
- Install FreeRADIUS
- Basic Configuration
- Testing
- Configure Wifi
- Configure Certificates for WPA2 Enterprise
- Configure WiFi - uni1, uni2, uni3, uni4 (For lab use only) SSIDs should be lowercase "eduroam" for the production deployment
- Check IDP (Local university login)
- Configure Peering
- Check peering
freeRadius 3.0
Add a user to the freeradius authorize File: /etc/freeradius/3.0/users (/etc/freeradius/3.0/mods-config/files/authorize)
## Users - user logins ####################################################################### "bob@uni0.edu.np" Cleartext-Password := "hello" Reply-Message := "Hello, %{User-Name}"
Reload freeradius
# systemctl restart freeradius
Testing
# radtest bob@uni0.edu.np hello localhost 20 testing123
File: clients.conf
## clients.conf -- client configuration directives ####################################################################### client localhost { ipaddr = 127.0.0.1 secret = testing123 nas_type = other # localhost isn't usually a NAS... } client testing { ipaddr = 45.64.162.158 secret = testing123 nas_type = other } client nepal-flr-1 { ipaddr = 202.52.0.18 netmask = 32 secret = longSecretPasswordHere require_message_authenticator = no shortname = nepal-flr-1 nastype = other virtual_server = eduroam }
File: sites-available/eduroam -- radius configuration
## sites-available/eduroam -- radius configuration ####################################################################### server eduroam { listen { type = "auth" ipaddr = * port = 0 } listen { type = "acct" ipaddr = * port = 0 } authorize { # only use filter_username from version > 3.0.7 on filter_username if ("%{client:shortname}" != "nepal-flr-1") { update request { Operator-Name := "1nren.net.np" # the literal number "1" above is an important prefix! Do not change it! } } # if you want detailed logging auth_log suffix mschap eap files #sql pap } authenticate { Auth-Type PAP { pap } Auth-Type CHAP { chap } Auth-Type MS-CHAP { mschap } digest eap } preacct { suffix } accounting { detail #sql } post-auth { reply_log Post-Auth-Type REJECT { reply_log } } pre-proxy { pre_proxy_log if("%{Packet-Type}" != "Accounting-Request") { attr_filter.pre-proxy } } post-proxy { post_proxy_log attr_filter.post-proxy } }
File: sites-available/eduroam-inner-tunnel
## sites-available/eduroam-inner-tunnel -- radius configuration ####################################################################### server eduroam-inner-tunnel { authorize { auth_log eap mschap #sql files } authenticate { eap mschap Auth-Type MS-CHAP { mschap } } post-auth { reply_log } }
File: proxy.conf
## proxy.conf ####################################################################### proxy server { default_fallback = no } home_server npflr1 { type = auth+acct ipaddr = 202.52.0.18 port = 1812 secret = longSecretPasswordHere status_check = status-server } home_server npflr2 { type = auth+acct ipaddr = 202.52.0.4 port = 1812 secret = longSecretPasswordHere status_check = status-server } home_server_pool EDUROAM { type = fail-over home_server = npflr1 home_server = npflr2 } realm NULL { nostrip } realm "^uni0\.edu\.np" { nostrip } realm "~.+$" { pool = EDUROAM nostrip }
File: mods-available/eap.conf
## mods-available/eap.conf -- Configuration for EAP types (PEAP, TTLS, etc.) ####################################################################### eap { default_eap_type = peap timer_expire = 60 ignore_unknown_eap_types = no cisco_accounting_username_bug = no max_sessions = ${max_requests} tls { certdir = ${confdir}/certs cadir = ${confdir}/certs private_key_password = whatever private_key_file = /etc/ssl/private/ssl-cert-snakeoil.key certificate_file = /etc/ssl/certs/ssl-cert-snakeoil.pem ca_file = /etc/ssl/certs/ca-certificates.crt dh_file = ${certdir}/dh random_file = /dev/urandom fragment_size = 1024 include_length = yes check_crl = no cipher_list = "DEFAULT" } ttls { default_eap_type = mschapv2 copy_request_to_tunnel = yes use_tunneled_reply = yes virtual_server = "eduroam-inner-tunnel" } peap { default_eap_type = mschapv2 copy_request_to_tunnel = yes use_tunneled_reply = yes virtual_server = "eduroam-inner-tunnel" } mschapv2 { } }