Radius y su implementacion Freeradius es el metodo preferido para hacer AAA. Lo usamos principalmente para una conexion PPTP con backend MySQL - MariaDB.
En principio .. ppp, pptd-server, MySQL - MariaDB, freeradius-server, freeradius-MySQL - MariaDB y radiusclient
Suele acompañarse de un aplicativo web llamado dial-up admin.
Los rpms funcionan bien, .. hay que ser cuidadoso porque el pptp pide cierta version de ppp y si no,
no funciona.
Una vez lo tenga andando, agregue en el archivo /etc/ppp/options.pptp al final –> plugin radius.so
Instale el servidor y en los archivos de configuracion en /etc/raddb (etc/freeradius/3.0) ..tenemos que hacer varios ajustes.
2.1. Los archivos clients y naslist son obsoletos … los muevo a un directorio old
2.2. En radiusd.conf nos vamos a concentrar en usar MSCHAP entonces el resto se puede comentar pero dejelo quieto
NO olvide agregar la encripcion al modulo de mschap
use_mppe = yes
require_encryption = yes require_strong = yes
2.3. En users, para nuestro proposito (PPTP) suele funcionar comentando la primera opcion de autenticacion ( la de System)
DEFAULT Auth-Type = System
Fall-Through = 1
2.4. Configure el clients.conf para que se conecten. Aqui especifica quien le pega al servidor y con que contraseña. Puede
simplemente la contraseña
secret = passwdroot
2.5 Trate de iniciar el servicio .. y revise /var/log/radius/radius.log por si no sube o tiene warnings. (a veces toca comentar files)
2.6 Una prueba simple ( que a mi NO me funciona aqui !!!! )
- Agregue al inicio de users la linea bob Cleartext-Password := “hello”
- Arranque el servicio con #> radiusd -X
- Corra la prueba #> radtest bob hello localhost 0 passwdroot
- Y el servidor debe contestarle #> rad_recv: Access-Accept packet from host 127.0.0.1:1812, id=166, length=20
Esto no es obligado, pero es muy conveniente si piensa, sobre todo, hacer accounting. En algunas distribuciones el soporte viene aparte y toca instalar un paquete como freeradius-MySQL - MariaDB.
De aqui en adelante es:
- Cree la base de datos, busque el MySQL - MariaDB.sql (/usr/share/doc/freeradius-1.1.3/examples/MySQL - MariaDB.sql) para crear las tablas
- alimentelas con la informacion de inicio. El howto de los fraceses aguanta bastante para incluir los datos basicos http://www.queret.net/blog/index.php/2007/04/02/70-freeradius-MySQL - MariaDB-pptpd –
Ahora para hacer funcionar radius.
- Configure /etc/raddb/sql.conf para tener acceso a la base de datos.
# Connect info
server = “localhost”
login = “radiususr”
password = “passwdroot”
# Database table configuration
radius_db = “radius”
- Active todos los sqls en /etc/raddb/radius.conf (descomente las lineas adecuadas)
$INCLUDE ${confdir}/sql.conf
}
authorize { #1774
chap
mschap
suffix
sql
}
authenticate { #1887
Auth-Type CHAP {
chap
}
Auth-Type MS-CHAP {
mschap
}
}
accounting {
sql
}
session {
sql
}
Ahora si, al prueba bonita con radtest FUNCIONA !!! Y tambien la conexion por PPTP deberia funcionar OK
Instale .. yum install radiusclient, y en /etc/radiusclient, hay que hacer un par de cosas
3.1. Edite el archivo servers y agrege la linea de su servidor
localhost passwdroot
3.2. Edite el dictionary para incluir el dictionary.microsoft: “..
In /etc/radiusclient, there is a file called dictionary. Add the following line to the end of the file.
<HTML><blockquote>
INCLUDE /etc/radiusclient/dictionary.microsoft
</blockquote></HTML> The file, dictionary.microsoft, is not included in the radiusclient. We can modify the one from freeradius so that it can be used by pppd …” (/usr/share/freeradius/)
cp /usr/share/freeradius/dictionary.microsoft /etc/radiusclient:
cambie octets por “string Microsoft” y agreguele integer y string la extension “Microsoft”
O sea mire http://www.members.optushome.com.au/~wskwok/poptop_ads_howto_8.htm –
- Copie toda la aplicacion en /var/www/html/dialup_admin y configure el alias para apuntar al htdocs dentro de este directorio.
- Edite el archivo de configuracion conf/admin.conf y agregue la informacion de la base de datos
general_base_dir: /var/www/html/dialup_admin
general_radiusd_base_dir: /usr
general_domain: skinatech.com
……….
nas1_name: sk_sfirewall.%{general_domain}
nas1_model: PPTP Server SkinaTech
nas1_ip: 127.0.0.1
nas1_port_num: 100
nas1_community: public
nas1_type: other
……….
### by skina
# The selected theme. Options: default, wxp,
theme: wxp
# The languaje to be used. Options: en, es
# default: en
lang: es
- Agregue a la base de datos las tablas en sql/
- Y listo debe funcionar. Recuerde poner restricciones de acceso para que no cualquiera entre.
Se quere que solo se logueen una vez http://www.freeradius.org/radiusd/doc/Simultaneous-Use –
Para que radius consulte un directorio LDAP, configurelo en radiusd.conf, de tal forma que encuentre el usuario tanto para autorizar como para autenticar.
Es necesario instalar samba y winbind para que se pueda usar el ntl_auth .. Mire este documento freeRadius_AD_tutorial.pdf o vaya a http://wiki.freeradius.org/FreeRADIUS_Active_Directory_Integration_HOWTO –
La linea que nos funciona OK incluyendo grupo es
ntlm_auth = “/usr/bin/ntlm_auth –request-nt-key –username=%{Stripped-User-Name:-%{User-Name:-None}} –challenge=%{mschap:Challenge:-00} –nt-response=%{mschap:NT-Response:-00} –require-membership-of=COLOMBIA\\\\Azuan”
para probar a mano
/usr/bin/ntlm_auth –request-nt-key –domain AMVCOLOMBIA –username=pruebas –require-membership-of=“AMVCOLOMBIA\\\\Azuan”
- El tipo coge por defecto la comprobacion contral el sistema ..Unix.. entonces Comente en users el sistema de autenticacion por default del sistema
- Esta seguro de haber instalado radiusclient .. pa que consulte
- Esto ocurre usualmente cuando la transaccion de pptp no se entiende bien. El radiusclient no esta incluyendo el dictionary.microsoft. El como se hace esta en
http://www.members.optushome.com.au/~wskwok/poptop_ads_howto_8.htm –
- Revise configuracion de kerberos .. que tenga el dominio bien y el servidor kdc sea ubicable.
- Ponga el directorio 755 y funciona. PERO NOOOO… Winbind no sube si no es 750 .. .. o sea toca 750 antes de subir y 755 una vez esta subido pa que radius lo use …
start() {
KIND=“Winbind”
echo -n $“Starting $KIND services: “
## by Skina
chmod 750 /var/cache/samba/winbindd_privileged
##
daemon winbindd “$WINBINDOPTIONS”
## by Skina
chmod 755 /var/cache/samba/winbindd_privileged
##
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/winbindd || RETVAL=1
return $RETVAL
}
Varias posibilidades,
- asegurese que en admin.conf el valor general_finger_type: este vacio
- En admin.conf la ip del nas es 127.0.0.1 y no el nombre. La mejor forma de resolver esto
es mire la tabla de radacct y mire el NASIPAddress y ese debe ser el mismo.
- Le meti mano a user_finger.php3 para que la consulta funcione por la fecha
“SELECT DISTINCT UserName,AcctStartTime,FramedIPAddress,CallingStationId
FROM $config[sql_accounting_table] WHERE
AcctStopTime = '0000-00-00 00:00:00' AND NASIPAddress = '$name_data' $extra
GROUP BY UserName ORDER BY AcctStartTime;”
-
- Aunque en frances … esta al pelo http://www.queret.net/blog/index.php/2007/04/02/70-freeradius-MySQL - MariaDB-pptpd –
- El listado de howtos de freeradius ..pero no lo de gran utilidad http://wiki.freeradius.org/HOWTO –
- Un capitulo de un howto para inhalambrica http://www.tldp.org/HOWTO/8021X-HOWTO/freeradius.html –
- El muy simple arranque, pendejo, pero con detallitos de como probar la configuracion a mano y demas: http://deployingradius.com/documents/configuration/ –
- Desde el productor de PPTP ..muy simple ..pero ..uhmm http://poptop.sourceforge.net/dox/radius_mysql.html –
- http://www.members.optushome.com.au/~wskwok/poptop_ads_howto_1.htm –
- http://wiki.freeradius.org/PopTop –
- http://gentoo-wiki.com/HOWTO_Chillispot_with_FreeRadius_and_MySQL –
FIN
=========================================================================
=========================================================================
La configuracion de LDAP
ldap {
server = “localhost”
# identity = “cn=admin,o=My Org,c=UA”
# password = mypass
basedn = “ou=People,dc=skina,dc=com,dc=co”
filter = “(uid=%{Stripped-User-Name:-%{User-Name}})“
# base_filter = ”(objectclass=radiusprofile)“
# set this to 'yes' to use TLS encrypted connections
# to the LDAP database by using the StartTLS extended
# operation.
# The StartTLS operation is supposed to be used with normal
# ldap connections instead of using ldaps (port 689) connections
start_tls = no
# tls_cacertfile = /path/to/cacert.pem
# tls_cacertdir = /path/to/ca/dir/
# tls_certfile = /path/to/radius.crt
# tls_keyfile = /path/to/radius.key
# tls_randfile = /path/to/rnd
# tls_require_cert = “demand”
# default_profile = “cn=radprofile,ou=dialup,o=My Org,c=UA”
# profile_attribute = “radiusProfileDn”
# access_attr = “dialupAccess”
access_attr = “uidNumber”
# Mapping of RADIUS dictionary attributes to LDAP
# directory attributes.
dictionary_mapping = ${raddbdir}/ldap.attrmap
ldap_connections_number = 5 #
# NOTICE: The password_header directive is NOT case insensitive
#
# password_header = ”{clear}“
#
# The server can usually figure this out on its own, and pull
# the correct User-Password or NT-Password from the database.
#
# Note that NT-Passwords MUST be stored as a 32-digit hex
# string, and MUST start off with “0x”, such as:
#
# 0x000102030405060708090a0b0c0d0e0f
#
# Without the leading “0x”, NT-Passwords will not work.
# This goes for NT-Passwords stored in SQL, too.
#
# password_attribute = userPassword
# groupname_attribute = cn
# groupmembership_filter = ”(|(&(objectClass=GroupOfNames)(member=%{Ldap-UserDn}))(&(objectClass=GroupOfUniqueNames)(uniquemember=%{Ldap-UserDn})))“
# groupmembership_attribute = radiusGroupName
timeout = 4
timelimit = 3
net_timeout = 1
# compare_check_items = yes
# do_xlat = yes
# access_attr_used_for_allow = yes
}
Primera version JEG (27/07/2007)
Advertencia
Este documento es privado y es de uso exclusivo de sus autores y de SKINA TECH. Cualquier uso sin una autorización escrita es contra la ley de derechos de autor y de propiedad intelectual, y será motivo de una acción legal.