====== Radius + PPP ====== ===== Descripción ===== Radius y su implementacion Freeradius es el metodo preferido para hacer AAA. Lo usamos principalmente para una conexion PPTP con backend MySQL - MariaDB. ===== Prerequistos ===== 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. ===== Instalación básica ===== Los rpms funcionan bien, .. hay que ser cuidadoso porque el pptp pide cierta version de ppp y si no,\\ no funciona. ===== Configuración ===== ==== 1. PPP y PPTP (Vea el documento ---> PPTP) ==== Una vez lo tenga andando, agregue en el archivo /etc/ppp/options.pptp al final --> plugin radius.so ==== 2. Radius Server ==== === Arrancando sin MySQL - MariaDB aun === 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 === Y ahora con MySQL - MariaDB === 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 ==== 3. Radius Client ==== 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.
INCLUDE /etc/radiusclient/dictionary.microsoft
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 --
==== 4. Dialup Admin ====
- 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.
===== Otras configuraciones =====
==== 1. Conexiones simultaneas ====
Se quere que solo se logueen una vez http:%%//%%www.freeradius.org/radiusd/doc/Simultaneous-Use --
==== 2. LDAP ====
Para que radius consulte un directorio LDAP, configurelo en radiusd.conf, de tal forma que encuentre el usuario tanto para autorizar como para autenticar.
==== 3. Active Directory ====
Es necesario instalar samba y winbind para que se pueda usar el ntl_auth .. Mire este documento [[egw/egw_docroot/wiki/docs/freeRadius_AD_tutorial.pdf|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"
===== Problemas =====
==== 1. No funciona ni la primera prueba con radtest ====
- El tipo coge por defecto la comprobacion contral el sistema ..Unix.. entonces Comente en users el sistema de autenticacion por default del sistema
==== 2. No logro que pptpd siquiera consulte radius ====
- Esta seguro de haber instalado radiusclient .. pa que consulte
==== 3. auth: No User-Password or CHAP-Password attribute in the request ====
- 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 --
==== 4. NTLM_AUTH me responde NT_STATUS_NO_LOGON_SERVERS ====
- Revise configuracion de kerberos .. que tenga el dominio bien y el servidor kdc sea ubicable.
==== 5. Nada .. Exec-Program output: winbind client not authorized to use winbindd_pam_auth_crap. Ensure permissions on /var/cache/samba/winbindd_privileged are set correctly. (0xc0000022) ====
- 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\\
> }
==== 6. Dialup_admin no me da los usuarios en linea ====
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;"
==== 7. could not obtain winbind separator ====
-
===== Referencias =====
- 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.
----