FreeRADIUS: Diferència entre les revisions
De Guifi.net - Wiki Català
Al (Discussió | contribucions) |
|||
| (Hi ha 12 revisions intermèdies sense mostrar fetes per un usuari) | |||
| Línia 3: | Línia 3: | ||
|__TOC__ | |__TOC__ | ||
|} | |} | ||
| − | == FreeRADIUS == | + | == Autenticació amb FreeRADIUS (federat/ldap) == |
=== Introducció === | === Introducció === | ||
| − | Intenció: disposar d'un mecanisme d'autenticació federat compatible amb serveis (pptp, openvpn, squid, | + | Intenció: disposar d'un mecanisme d'autenticació federat compatible amb serveis ([[pptp]], [[openvpn]], [[squid]], [[hotspot]]s,..) per ampliar la capacitat dels [[servidor proxy|servidors proxy]] o hotspot, per validar usuaris de guifi.net. |
| + | |||
| + | Es tria Radius perquè permet extendre la validació que ofereix [[LDAP|LDAP_SSL]], i així poder federar directament trastos amb [[RouterOS]], o serveis no compatibles amb LDAP com ara PPTP. | ||
| − | |||
=== Requisits === | === Requisits === | ||
| − | Es parteix d'un servidor Debian/Ubuntu configurat amb [ | + | Es parteix d'un servidor Debian/Ubuntu configurat amb [[Servidor Proxy guifi-proxy3]]. |
| + | |||
== Instal·lació i configuració == | == Instal·lació i configuració == | ||
Entrem per ssh a la màquina: | Entrem per ssh a la màquina: | ||
* Actualitzem els paquets | * Actualitzem els paquets | ||
| − | + | apt-get update | |
| − | + | apt-get upgrade | |
| − | * Instal·lem el freeRADIUS | + | === Instal·lació de freeradius === |
| − | + | * Instal·lem el paquet freeRADIUS i les dependencies | |
| − | * Editem | + | apt-get install freeradius |
| − | + | * Instal·lem el mòdul ldap | |
| − | < | + | apt-get install freeradius-ldap |
| − | + | === Configurar freeradius === | |
| − | + | * Editem l'arxiu de configuració <code>/etc/freeradius/radiusd.conf</code> | |
| − | < | + | No s'utilitza EAP, eliminem la linea <code>$INCLUDE eap.conf</code>. Excepte això, la resta de l'arxiu <code>radiusd.conf</code> queda per defecte. |
| − | + | prefix = /usr | |
| − | + | exec_prefix = /usr | |
| − | + | sysconfdir = /etc | |
| − | = /usr | + | localstatedir = /var |
| − | exec_prefix = /usr | + | sbindir = ${exec_prefix}/sbin |
| − | sysconfdir = /etc | + | logdir = /var/log/freeradius |
| − | localstatedir = /var | + | raddbdir = /etc/freeradius |
| − | sbindir = ${exec_prefix}/sbin | + | radacctdir = ${logdir}/radacct |
| − | logdir = /var/log/freeradius | + | |
| − | raddbdir = /etc/freeradius | + | name = freeradius |
| − | radacctdir = ${logdir}/radacct | + | |
| − | + | confdir = ${raddbdir} | |
| − | name = freeradius | + | run_dir = ${localstatedir}/run/${name} |
| − | + | ||
| − | confdir = ${raddbdir} | + | db_dir = ${raddbdir} |
| − | run_dir = ${localstatedir}/run/${name} | + | |
| − | + | libdir = /usr/lib/freeradius | |
| − | db_dir = ${raddbdir} | + | pidfile = ${run_dir}/${name}.pid |
| − | + | ||
| − | libdir = /usr/lib/freeradius | + | user = freerad |
| − | pidfile = ${run_dir}/${name}.pid | + | group = freerad |
| − | + | ||
| − | user = freerad | + | max_request_time = 30 |
| − | group = freerad | + | cleanup_delay = 5 |
| − | + | max_requests = 1024 | |
| − | max_request_time = 30 | + | |
| − | cleanup_delay = 5 | + | listen { |
| − | max_requests = 1024 | + | type = auth |
| − | + | ipaddr = * | |
| − | listen { | + | port = 0 |
| − | type = auth | + | } |
| − | ipaddr = * | + | |
| − | port = 0 | + | listen { |
| − | } | + | ipaddr = * |
| − | + | port = 0 | |
| − | listen { | + | type = acct |
| − | ipaddr = * | + | } |
| − | port = 0 | + | |
| − | type = acct | + | hostname_lookups = no |
| − | } | + | allow_core_dumps = no |
| − | + | ||
| − | hostname_lookups = no | + | regular_expressions = yes |
| − | allow_core_dumps = no | + | extended_expressions = yes |
| − | + | ||
| − | regular_expressions | + | log { |
| − | extended_expressions | + | destination = files |
| − | + | file = ${logdir}/radius.log | |
| − | log { | + | syslog_facility = daemon |
| − | destination = files | + | stripped_names = no |
| − | file = ${logdir}/radius.log | + | auth = no |
| − | syslog_facility = daemon | + | auth_badpass = no |
| − | stripped_names = no | + | auth_goodpass = no |
| − | auth = no | + | } |
| − | auth_badpass = no | + | |
| − | auth_goodpass = no | + | checkrad = ${sbindir}/checkrad |
| − | } | + | |
| − | + | security { | |
| − | checkrad = ${sbindir}/checkrad | + | max_attributes = 200 |
| − | + | reject_delay = 1 | |
| − | security { | + | status_server = yes |
| − | max_attributes = 200 | + | } |
| − | reject_delay = 1 | + | |
| − | status_server = yes | + | proxy_requests = yes |
| − | } | + | $INCLUDE proxy.conf |
| − | + | $INCLUDE clients.conf | |
| − | proxy_requests | + | |
| − | $INCLUDE proxy.conf | + | thread pool { |
| − | $INCLUDE clients.conf | + | start_servers = 5 |
| − | + | max_servers = 32 | |
| − | thread pool { | + | min_spare_servers = 3 |
| − | start_servers = 5 | + | max_spare_servers = 10 |
| − | max_servers = 32 | + | max_requests_per_server = 0 |
| − | min_spare_servers = 3 | + | } |
| − | max_spare_servers = 10 | + | |
| − | max_requests_per_server = 0 | + | modules { |
| − | } | + | $INCLUDE ${confdir}/modules/ |
| − | + | } | |
| − | modules { | + | |
| − | $INCLUDE ${confdir}/modules/ | + | instantiate { |
| − | } | + | exec |
| − | + | expr | |
| − | instantiate { | + | expiration |
| − | exec | + | logintime |
| − | expr | + | } |
| − | expiration | + | |
| − | logintime | + | $INCLUDE policy.conf |
| − | } | + | $INCLUDE sites-enabled/ |
| − | + | * Editem l'arxiu de configuració <code>/etc/freeradius/clients.conf</code> | |
| − | $INCLUDE policy.conf | + | Definim la clau d'accés al servidor freeradius i les subxarxes que hi tindràn accés. Per defecte és "testing1234", és recomanable canviar-la. |
| − | $INCLUDE sites-enabled/< | + | client localhost { |
| − | < | + | ipaddr = 127.0.0.1 |
| − | < | + | secret = testing1234 |
| − | </ | + | nastype = other |
| − | </ | + | } |
| + | |||
| + | client 192.168.0.0/16 { | ||
| + | secret = testing1234 | ||
| + | nastype = other | ||
| + | } | ||
| + | |||
| + | client 10.0.0.0/8 { | ||
| + | secret = testing1234 | ||
| + | nastype = other | ||
| + | } | ||
| + | === Configurar freeradius-ldap === | ||
| + | * Editem l'arxiu de configuració <code>/etc/freeradius/modules/ldap</code> | ||
| + | Adaptem els paràmetres perquè coincideixin amb el domini guifi.net. Afegim “set_auth_type = yes” dins la secció '''ldap''' | ||
| + | ldap { | ||
| + | server = "ldap.guifi.net" | ||
| + | server = "ldap2.guifi.net" | ||
| + | port = "636" | ||
| + | identity = "uid=proxyldap2011,o=proxyusers,dc=guifi,dc=net" | ||
| + | password = proxyaproxy2011 | ||
| + | basedn = "o=proxyusers,dc=guifi,dc=net" | ||
| + | filter = "(uid=%{%{Stripped-User-Name}:-%{User-Name}})" | ||
| + | ldap_connections_number = 5 | ||
| + | timeout = 4 | ||
| + | timelimit = 3 | ||
| + | net_timeout = 1 | ||
| + | dictionary_mapping = ${confdir}/ldap.attrmap | ||
| + | edir_account_policy_check = no | ||
| + | set_auth_type = yes | ||
| + | } | ||
| + | * Editem l'arxiu de configuració <code>/etc/freeradius/sites-available/default</code> | ||
| + | Editem l'arxiu <code>default</code>, assegurant-nos que <code>ldap</code> queda inclòs a les seccions "authorize" i "authenticate". Suprimim altres opcions com ara "unix" dins d'aquestes seccions. | ||
| + | authorize { | ||
| + | ldap | ||
| + | } | ||
| + | authenticate { | ||
| + | Auth-Type LDAP { | ||
| + | ldap | ||
| + | } | ||
| + | } | ||
| + | preacct { | ||
| + | } | ||
| + | accounting { | ||
| + | } | ||
| + | session { | ||
| + | radutmp | ||
| + | } | ||
| + | post-auth { | ||
| + | exec | ||
| + | Post-Auth-Type REJECT { | ||
| + | attr_filter.access_reject | ||
| + | } | ||
| + | } | ||
| + | pre-proxy { | ||
| + | } | ||
| + | post-proxy { | ||
| + | } | ||
| + | * Editem l'arxiu de configuració <code>/etc/freeradius/sites-available/inner-tunnel</code> | ||
| + | Fem el mateix amb l'arxiu <code>inner-tunnel</code> | ||
| + | server inner-tunnel { | ||
| + | authorize { | ||
| + | ldap | ||
| + | } | ||
| + | authenticate { | ||
| + | Auth-Type LDAP { | ||
| + | ldap | ||
| + | } | ||
| + | } | ||
| + | session { | ||
| + | radutmp | ||
| + | } | ||
| + | post-auth { | ||
| + | Post-Auth-Type REJECT { | ||
| + | attr_filter.access_reject | ||
| + | } | ||
| + | } | ||
| + | pre-proxy { | ||
| + | } | ||
| + | post-proxy { | ||
| + | } | ||
| + | } | ||
| + | == Verificació i prova d'autenticació == | ||
| + | === Verificació del servidor === | ||
| + | /etc/init.d/freeradius stop | ||
| + | freeradius -X | ||
| + | |||
| + | Resposta: | ||
| + | FreeRADIUS Version 2.1.8, for host x86_64-pc-linux-gnu, built on Jan 5 2010 at 02:56:18 | ||
| + | Copyright (C) 1999-2009 The FreeRADIUS server project and contributors. | ||
| + | |||
| + | Starting - reading configuration files ... | ||
| + | |||
| + | radiusd: #### Loading Realms and Home Servers #### | ||
| + | radiusd: #### Loading Clients #### | ||
| + | radiusd: #### Instantiating modules #### | ||
| + | radiusd: #### Loading Virtual Servers #### | ||
| + | radiusd: #### Opening IP addresses and Ports #### | ||
| + | |||
| + | Listening on authentication address * port 1812 | ||
| + | Listening on accounting address * port 1813 | ||
| + | Listening on proxy address * port 1814 | ||
| + | Ready to process requests. | ||
| + | :Servidor operatiu | ||
| + | |||
| + | === Prova d'autenticació d'usuaris === | ||
| + | Obrim una segona finestra '''ssh''' | ||
| + | radtest ''usuari.guifi'' ''password'' 127.0.0.1 1812 testing1234 | ||
| + | |||
| + | Posar un usuari i password de proxy que estigui operatiu. | ||
| + | Resposta: | ||
| + | Sending Access-Request of id 37 to 127.0.0.1 port 1812 | ||
| + | User-Name = "usuari.guifi" | ||
| + | User-Password = "password" | ||
| + | NAS-IP-Address = 127.0.0.1 | ||
| + | NAS-Port = 1812 | ||
| + | rad_recv: '''Access-Accept''' packet from host 127.0.0.1 port 1812, id=37, length=20 | ||
| + | |||
| + | Resposta "'''Access-Accept'''" | ||
| + | :L'usuari s'ha validat correctament! | ||
| + | |||
| + | == Veure també == | ||
| + | * [[LDAP]] | ||
| + | * [[Servidor Proxy]] | ||
| + | |||
| + | == Referències == | ||
| + | * [http://paulgporter.net/2013/07/14/freeradius-ldaps/ Configuring FreeRADIUS for LDAP over SSL Authentication] per Paul Gerard Porter [ENG] | ||
| + | * [http://freeradius.org/ Web Oficial] | ||
| + | |||
| + | [[Categoria:Servidor]] | ||
Revisió de 03:06, 17 març 2014
Aquest article està en desenvolupament. Pràcticament totes les pàgines del Wiki de Guifi.net són editables, però en aquesta falta informació essencial. Ampliant-ho ajudaràs a millorar Guifi.net.
Potser puguis ajudar-te amb els wikis castellà i anglès si tenen una pàgina equivalent.
Autenticació amb FreeRADIUS (federat/ldap)
Introducció
Intenció: disposar d'un mecanisme d'autenticació federat compatible amb serveis (pptp, openvpn, squid, hotspots,..) per ampliar la capacitat dels servidors proxy o hotspot, per validar usuaris de guifi.net.
Es tria Radius perquè permet extendre la validació que ofereix LDAP_SSL, i així poder federar directament trastos amb RouterOS, o serveis no compatibles amb LDAP com ara PPTP.
Requisits
Es parteix d'un servidor Debian/Ubuntu configurat amb Servidor Proxy guifi-proxy3.
Instal·lació i configuració
Entrem per ssh a la màquina:
- Actualitzem els paquets
apt-get update apt-get upgrade
Instal·lació de freeradius
- Instal·lem el paquet freeRADIUS i les dependencies
apt-get install freeradius
- Instal·lem el mòdul ldap
apt-get install freeradius-ldap
Configurar freeradius
- Editem l'arxiu de configuració
/etc/freeradius/radiusd.conf
No s'utilitza EAP, eliminem la linea $INCLUDE eap.conf. Excepte això, la resta de l'arxiu radiusd.conf queda per defecte.
prefix = /usr
exec_prefix = /usr
sysconfdir = /etc
localstatedir = /var
sbindir = ${exec_prefix}/sbin
logdir = /var/log/freeradius
raddbdir = /etc/freeradius
radacctdir = ${logdir}/radacct
name = freeradius
confdir = ${raddbdir}
run_dir = ${localstatedir}/run/${name}
db_dir = ${raddbdir}
libdir = /usr/lib/freeradius
pidfile = ${run_dir}/${name}.pid
user = freerad
group = freerad
max_request_time = 30
cleanup_delay = 5
max_requests = 1024
listen {
type = auth
ipaddr = *
port = 0
}
listen {
ipaddr = *
port = 0
type = acct
}
hostname_lookups = no
allow_core_dumps = no
regular_expressions = yes
extended_expressions = yes
log {
destination = files
file = ${logdir}/radius.log
syslog_facility = daemon
stripped_names = no
auth = no
auth_badpass = no
auth_goodpass = no
}
checkrad = ${sbindir}/checkrad
security {
max_attributes = 200
reject_delay = 1
status_server = yes
}
proxy_requests = yes
$INCLUDE proxy.conf
$INCLUDE clients.conf
thread pool {
start_servers = 5
max_servers = 32
min_spare_servers = 3
max_spare_servers = 10
max_requests_per_server = 0
}
modules {
$INCLUDE ${confdir}/modules/
}
instantiate {
exec
expr
expiration
logintime
}
$INCLUDE policy.conf
$INCLUDE sites-enabled/
- Editem l'arxiu de configuració
/etc/freeradius/clients.conf
Definim la clau d'accés al servidor freeradius i les subxarxes que hi tindràn accés. Per defecte és "testing1234", és recomanable canviar-la.
client localhost {
ipaddr = 127.0.0.1
secret = testing1234
nastype = other
}
client 192.168.0.0/16 {
secret = testing1234
nastype = other
}
client 10.0.0.0/8 {
secret = testing1234
nastype = other
}
Configurar freeradius-ldap
- Editem l'arxiu de configuració
/etc/freeradius/modules/ldap
Adaptem els paràmetres perquè coincideixin amb el domini guifi.net. Afegim “set_auth_type = yes” dins la secció ldap
ldap {
server = "ldap.guifi.net"
server = "ldap2.guifi.net"
port = "636"
identity = "uid=proxyldap2011,o=proxyusers,dc=guifi,dc=net"
password = proxyaproxy2011
basedn = "o=proxyusers,dc=guifi,dc=net"
filter = "(uid=%{%{Stripped-User-Name}:-%{User-Name}})"
ldap_connections_number = 5
timeout = 4
timelimit = 3
net_timeout = 1
dictionary_mapping = ${confdir}/ldap.attrmap
edir_account_policy_check = no
set_auth_type = yes
}
- Editem l'arxiu de configuració
/etc/freeradius/sites-available/default
Editem l'arxiu default, assegurant-nos que ldap queda inclòs a les seccions "authorize" i "authenticate". Suprimim altres opcions com ara "unix" dins d'aquestes seccions.
authorize {
ldap
}
authenticate {
Auth-Type LDAP {
ldap
}
}
preacct {
}
accounting {
}
session {
radutmp
}
post-auth {
exec
Post-Auth-Type REJECT {
attr_filter.access_reject
}
}
pre-proxy {
}
post-proxy {
}
- Editem l'arxiu de configuració
/etc/freeradius/sites-available/inner-tunnel
Fem el mateix amb l'arxiu inner-tunnel
server inner-tunnel {
authorize {
ldap
}
authenticate {
Auth-Type LDAP {
ldap
}
}
session {
radutmp
}
post-auth {
Post-Auth-Type REJECT {
attr_filter.access_reject
}
}
pre-proxy {
}
post-proxy {
}
}
Verificació i prova d'autenticació
Verificació del servidor
/etc/init.d/freeradius stop freeradius -X
Resposta:
FreeRADIUS Version 2.1.8, for host x86_64-pc-linux-gnu, built on Jan 5 2010 at 02:56:18 Copyright (C) 1999-2009 The FreeRADIUS server project and contributors. Starting - reading configuration files ... radiusd: #### Loading Realms and Home Servers #### radiusd: #### Loading Clients #### radiusd: #### Instantiating modules #### radiusd: #### Loading Virtual Servers #### radiusd: #### Opening IP addresses and Ports #### Listening on authentication address * port 1812 Listening on accounting address * port 1813 Listening on proxy address * port 1814 Ready to process requests.
- Servidor operatiu
Prova d'autenticació d'usuaris
Obrim una segona finestra ssh
radtest usuari.guifi password 127.0.0.1 1812 testing1234
Posar un usuari i password de proxy que estigui operatiu. Resposta:
Sending Access-Request of id 37 to 127.0.0.1 port 1812 User-Name = "usuari.guifi" User-Password = "password" NAS-IP-Address = 127.0.0.1 NAS-Port = 1812 rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=37, length=20
Resposta "Access-Accept"
- L'usuari s'ha validat correctament!
Veure també
Referències
- Configuring FreeRADIUS for LDAP over SSL Authentication per Paul Gerard Porter [ENG]
- Web Oficial