====== Radius + Samba4 ====== ===== Descripción  ===== Radius y su implementacion Freeradius es el metodo preferido para hacer AAA. Aqui lo vamos a usar para WIFI con Backend Samba4 ===== 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. Samba  (Vea el documento ---> Samba4 )  ==== Una vez lo tenga andando, pasamos a radius\\   +++  smb.conf # Global parameters\\ [global]\\     netbios name = GALAPA\\     realm = MINUT.EDU.CO\\     workgroup = MINUT-EXT\\     dns forwarder = 192.168.32.1\\     server role = active directory domain controller\\     # Autenticaion sin dominio\\      winbind use default domain = no\\     ntlm auth = yes\\ \\ [netlogon]\\     path = /var/lib/samba/sysvol/minut.edu.co/scripts\\     read only = No\\ \\ [sysvol]\\     path = /var/lib/samba/sysvol\\     read only = No ++++++ >> smbclient -L localhost -U% Domain=[MINUT-EXT] OS=[Windows 6.1] Server=[Samba 4.5.12-Debian]\\     Sharename       Type      Comment\\     ---------       ----      -------\\     netlogon        Disk     \\     sysvol          Disk     \\     IPC$            IPC       IPC Service (Samba 4.5.12-Debian)\\ Domain=[MINUT-EXT] OS=[Windows 6.1] Server=[Samba 4.5.12-Debian\\     Server               Comment\\     ---------            -------\\     Workgroup            Master\\     ---------            -------\\     WORKGROUP            GALAPA ++++++ #>> smbclient %%//%%localhost/netlogon -Uskina%'Nio4LasOo' -c 'ls'\\ Domain=[MINUT-EXT] OS=[Windows 6.1] Server=[Samba 4.5.12-Debian]\\   .                                   D        0  Tue Jan 30 11:11:29 2018\\   ..                                  D        0  Tue Jan 30 11:11:48 2018\\ \\         65799648 blocks of size 1024. 61762632 blocks available #>> ntlm_auth --request-nt-key --domain=MINUT-EXT --username=skina --password='Nio4LasOo'\\ NT_STATUS_OK: Success (0x0) #>> wbinfo --ntlmv2 -a 'skina'%'Nio4LasOo'\\ plaintext password authentication succeeded\\ challenge/response password authentication succeeded ==== 2. Radius Server ==== === Arrancando el sistema autónomo === Siga el howto   http:%%//%%wiki.freeradius.org/guide/Basic-configuration-HOWTO\\ \\ Y como siempre .. entre menos mueva mas probable es que funcione. +++++ #>> radtest  bob hello localhost 0 testing123\\ Sent Access-Request Id 70 from 0.0.0.0:37544 to 127.0.0.1:1812 length 73\\     User-Name = "bob"\\     User-Password = "hello"\\     NAS-IP-Address = 127.0.1.1\\     NAS-Port = 0\\     Message-Authenticator = 0x00\\     Cleartext-Password = "hello"\\ Received Access-Accept Id 70 from 127.0.0.1:1812 to 0.0.0.0:0 length 20\\     Reply-Message = "Hello, bob"   === 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.  (mire el wiki) Ahora para hacer funcionar radius. - Configure /etc/freeradius/3.0/mods-enabled/sql 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/freeradius/3.0/sites-enabled/default  (descomente todas las lineas adecuadas) \\ Ahora si, al prueba bonita con radtest FUNCIONA !!!\\ \\ http:%%//%%wiki.freeradius.org/guide/SQL-HOWTO-for-freeradius-3.x-on-Debian-Ubuntu\\   === Y ahora contra SAMBA con PAP === Second .. configure OK freeradius with ntlm_auth and PAP  http://wiki.freeradius.org/guide/NTLM%20Auth%20with%20PAP%20HOWTO   +++++++ #>> radtest  'skina' 'Nio4LasOo' localhost 0 testing123\\ Sent Access-Request Id 14 from 0.0.0.0:34004 to 127.0.0.1:1812 length 75\\     User-Name = "skina"\\     User-Password = "Nio4Las2Oo"\\     NAS-IP-Address = 127.0.1.1\\     NAS-Port = 0\\     Message-Authenticator = 0x00\\     Cleartext-Password = "Nio4LasOo"\\ Received Access-Accept Id 14 from 127.0.0.1:1812 to 0.0.0.0:0 length 20   === Y ahora contra SAMBA con MSCHAPv2 === Third ..  configure freeradius ntlm_auth and MSCHAP  http://deployingradius.com/documents/configuration/active_directory.html NO  olvide agregar al usuario freerad al grupo winbindd-priv\\ +++++++ root@galapa:~# radtest -t mschap skina 'Nio4Las2Oo' localhost 0 testing123\\ Sent Access-Request Id 71 from 0.0.0.0:46716 to 127.0.0.1:1812 length 131\\     User-Name = "skina"\\     MS-CHAP-Password = "Nio4Las2Oo"\\     NAS-IP-Address = 127.0.1.1\\     NAS-Port = 0\\     Message-Authenticator = 0x00\\     Cleartext-Password = "Nio4Las2Oo"\\     MS-CHAP-Challenge = 0x4892b54bc1095dd3\\     MS-CHAP-Response = 0x000100000000000000000000000000000000000000000000000050a34aab63def5afbdbe859f505d088b7a99a2b839461954\\ Received Access-Accept Id 71 from 127.0.0.1:1812 to 0.0.0.0:0 length 84\\     MS-CHAP-MPPE-Keys = 0x0000000000000000569d82594369d205b9827bd40c92df2d\\     MS-MPPE-Encryption-Policy = Encryption-Required\\     MS-MPPE-Encryption-Types = 4 \\ OJO .. debe colocar le     ntlm auth = yes  en el smb.conf .. si no no anda\\ \\   === Y ahora contra SAMBA con EAP-MD5 ===   ==== 3. Radius Client ==== \\ ===== 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 ===== - El wiki nativo de freeradius http:%%//%%wiki.freeradius.org/Home  \\ \\ \\ - 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.  ----