Samba, Ldap y radius

La versión 3 de Freeradius tiene ciertas diferencias con la versión 2.

El fichero mods-enabled/eap

En este fichero se describen las características generales de la configuración eap para todos los tipos que se vayan a utilizar. En este caso usaremos TLS y EAP-PEAP.

Una diferencia con la configuración anterior es que TLS se configura de forma común para todo el módulo.

 

Para configurar eap en primer lugar copiamos el fichero mods-available/eap en mods-enabled/eap y dejamos su contenido como:



eap {

## default_eap_type = tls

default_eap_type = peap

timer_expire = 60

ignore_unknown_eap_types = no

cisco_accounting_username_bug = no

max_sessions = ${max_requests}

md5 {

}

leap {

}

gtc {

auth_type = PAP

}

tls-config tls-common {

private_key_password = clave_de_llave_privada

private_key_file = /etc/pki/tls/caronte.bezmi.ies/caronte.bezmi.ies.key

certificate_file = /etc/pki/tls/caronte.bezmi.ies/caronte.bezmi.ies.pem

CA_file = /etc/pki/CA/cacert.pem

dh_file = ${certdir}/dh

ca_path = ${cadir}

cipher_list = "DEFAULT"

ecdh_curve = "prime256v1"

cache {

enable = yes

lifetime = 24 # hours

max_entries = 255

}

verify {

}

ocsp {

enable = no

override_cert_url = yes

url = "http://127.0.0.1/ocsp/"

}

}

tls {

tls = tls-common

}

ttls {

tls = tls-common

default_eap_type = md5

copy_request_to_tunnel = yes

use_tunneled_reply = yes

virtual_server = "bezmiliana"

}

peap {

tls = tls-common

default_eap_type = mschapv2

copy_request_to_tunnel = yes

use_tunneled_reply = yes

proxy_tunneled_request_as_eap = yes

virtual_server = "bezmiliana"

}

mschapv2 {

}

}



Observamos las líneas virtual_server = “bezmiliana”. Más adelante tendremos que definir este servidor virtual. También se podría haber usado el servidor virtual que trae el sistema.

 


 

El fichero sites-enabled/bezmiliana

Este fichero no existe, tendremos que crearlo. Aquí definimos los distintos procedimientos de validación que va a utilizar.

server bezmiliana {

$INCLUDE ${confdir}/sites-available/default

client 192.168.10.0/24 {

secret = radiusd123

shortname = bezmiliana

}

listen {

ipaddr = 192.168.10.1

port = 1812

type = auth

}

authorize {

mschap

suffix

eap {

ok = return

}

-ldap

}

authenticate {

Auth-Type MS-CHAP {

mschap

}

eap

}

post-auth {

-sql

Post-Auth-Type REJECT {

-sql

}

}

pre-proxy {

}

post-proxy {

eap

}

} # bezmiliana server block

 


 

El fichero clients.conf

En este fichero establecemos qué clientes se pueden conectar al servicio radius, el tipo de acceso y la contraseña necesaria.

 

client localhost {

ipaddr = 127.0.0.1

proto = *

secret = radiusd123

require_message_authenticator = no

nas_type = other # localhost isn't usually a NAS...

limit {

max_connections = 16

lifetime = 0

idle_timeout = 30

}

}

client 192.168.10.0/24 {

secret = radiusd123

shortname = bezmiliana

}

 


 

El fichero proxy.conf

proxy server {

synchronous = no

retry_delay = 5

retry_count = 3

dead_time = 120

default_fallback = yes

post_proxy_authorize = yes

 

}

 

realm LOCAL {

type = other

authhost = LOCAL

accthost = LOCAL

}

 

realm BEZMI.IES {

type = ntlm_auth

authhost = LOCAL

accthost = LOCAL

}

 


 

El fichero mods-enabled/mschap

 

mschap {

ntlm_auth = "/bin/ntlm_auth --request-nt-key --username=%{%{Stripped-User-Name}:-%{%{User-Name}:-None}} --challenge=%{%{mschap:Challenge}:-00} --nt-response=%{%{mschap:NT-Response}:-00}"

passchange {

 

}

}


 

El fichero mods-enabled/ntlm_auth

exec ntlm_auth {

wait = yes

 

program = "/bin/ntlm_auth --request-nt-key --domain=ATENEA --username=%{%{Stripped-User-Name}:-%{User-Name:-None}} --challenge=%{mschap:Challenge:-00} --nt-response=%{mschap:NT-Response:-00}"

 

}

 


 

El fichero mods-enabled/realm

Este fichero define los separadores que podemos encontrar entre el nombre de dominio y el nombre de usuario.

realm IPASS {

format = prefix

delimiter = "/"

}

 

realm suffix {

format = suffix

delimiter = "@"

}

 

realm realmpercent {

format = suffix

delimiter = "%"

}

 

realm ntdomain {

format = prefix

delimiter = "\\"

}

 

 

 

 

 

Apéndice

El fichero openssl.cnf

Editamos el fichero /etc/pki/tls/openssl.cnf que nos servirá para crear los nuevos certificados de forma más cómoda.

 

Leer más...


Proxy squid

Validación de acceso al proxy

Editamos el fichero /etc/squid/squid.conf y añadimos lo siguiente:

 
cache_effective_group radiusd
###############################################
auth_param ntlm program   /usr/bin/ntlm_auth \
 --helper-protocol=squid-2.5-ntlmssp \
 --require-membership-of="BEZMI.IES\\Domain Users"  \
 --domain=BEZMI.IES
auth_param ntlm children 30
 
# warning: basic authentication sends passwords plaintext
# a network sniffer can and will discover passwords
auth_param basic program /usr/bin/ntlm_auth \
 --helper-protocol=squid-2.5-basic \
 --require-membership-of="BEZMI.IES\\Domain Users"   \
 --domain= BEZMI.IES
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
################################################
acl AuthorizedUsers proxy_auth REQUIRED
http_access allow all AuthorizedUsers
################################################

 La primera de la línea es necesaria para que radiusd y squid puedan compartir el acceso a winbind.


Configuración de Freeradius

 

La configuración de Freeradius se almacena en /etc/raddb. Dentro de esta carpeta encontramos el fichero radiusd.conf que normalmente no será necesario editar. Sería necesario modificarlo, por ejemplo, si en un equipo con dos adaptadores de red queremos que freeradius actúe sólo en uno de ellos.

En radius vamos a configurar diferentes mecanismos de autenticación: PEAP, TLS y LDAP.

Leer más...