Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    NEW Package: freeRADIUS 2.x

    Scheduled Pinned Locked Moved pfSense Packages
    628 Posts 80 Posters 749.8k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      pszafer
      last edited by

      @marcelloc:

      export PACKAGESITE="ftp://ftp-archive.freebsd.org/pub/FreeBSD/releases/i386/i386/9.0-RELEASE/packages/Latest/"

      Install freebsd9 packages on 8.1 install could break many dependencies.

      pkg_add -r krb5-19
      pkg_add -f -r heimdal

      kerberos conflicts with heimdal, why do you need both?

      But trully have no idea what next
      I've tryin' get ntlm_auth and winbindd to work without samba

      I know some extra steps, i'll try to find it and post here.

      it's my mistake. I used 8.1 packages, but only testing 9.0 packages ;)
      Be aware that this operation could cause problems with ldconfig, I had one :P

      if you can give me a hint what to do, because I'm tryin and tryin and I'm become impatient :D

      1 Reply Last reply Reply Quote 0
      • N
        Nachtfalke
        last edited by

        Updates pkg v1.4.9

        • Added: Support for second SQL database (failover/loadbalancing)

        ===============================================================
        @marcelloc:
        I noticed a problem with libmysqlclient.so.18 not found after a reboot:

        What I did:
        I did a fresh install of pfsense (i386/amd64) and a fresh install of freeradius2.
        I enabled SQL with MySQL - the service would start if it could find a mysql server.
        I did a reboot of pfsense and after the reboot the libmysqlclient.so.18 cannot be found. See the following:

        [2.0.1-RELEASE][admin@pfsense.localdomain]/root(6): ldd /usr/local/lib/freeradius-2.1.12/rlm_sql_mysql.so
        /usr/local/lib/freeradius-2.1.12/rlm_sql_mysql.so:
                libmysqlclient.so.18 => not found (0x0)
                libz.so.5 => /lib/libz.so.5 (0x281b4000)
                libm.so.5 => /lib/libm.so.5 (0x281c6000)
                libthr.so.3 => /lib/libthr.so.3 (0x281e0000)
                libc.so.7 => /lib/libc.so.7 (0x28097000)
        
        [2.0.1-RELEASE][admin@pfsense.localdomain]/root(7): find / -name "*libmysqlclient.so.18*"
        /usr/local/lib/mysql/libmysqlclient.so.18
        
        [2.0.1-RELEASE][admin@pfsense.localdomain]/root(8): pkg_info
        bsdinstaller-2.0.2011.0913 BSD Installer mega-package
        cyrus-sasl-2.1.25_1 RFC 2222 SASL (Simple Authentication and Security Layer)
        db41-4.1.25_4       The Berkeley DB package, revision 4.1
        freeradius-2.1.12   A free RADIUS server implementation
        gdbm-1.9.1          The GNU database manager
        gettext-0.18.1.1    GNU gettext package
        grub-0.97_4         GRand Unified Bootloader
        krb5-1.9.2_1        An authentication system developed at MIT, successor to Ker
        libiconv-1.13.1_1   A character set conversion library
        libltdl-2.4_1       System independent dlopen wrapper
        mysql-client-5.5.19 Multithreaded SQL database (client)
        openldap-sasl-client-2.4.26 Open source LDAP client implementation with SASL2 support
        perl-5.12.4_3       Practical Extraction and Report Language
        postgresql-client-9.1.2 PostgreSQL database (client)
        
        [2.0.1-RELEASE][admin@pfsense.localdomain]/root(9): pkg_add -f http://e-sac.siteseguro.ws/packages/8/All/mysql-client-5.5.19.tbz
        Fetching http://e-sac.siteseguro.ws/packages/8/All/mysql-client-5.5.19.tbz... Done.
        
        [2.0.1-RELEASE][admin@pfsense.localdomain]/root(10): ldd /usr/local/lib/freeradius-2.1.12/rlm_sql_mysql.so
        /usr/local/lib/freeradius-2.1.12/rlm_sql_mysql.so:
                libmysqlclient.so.18 => /usr/local/lib/mysql/libmysqlclient.so.18 (0x28300000)
                libz.so.5 => /lib/libz.so.5 (0x281b4000)
                libm.so.5 => /lib/libm.so.5 (0x281c6000)
                libthr.so.3 => /lib/libthr.so.3 (0x281e0000)
                libc.so.7 => /lib/libc.so.7 (0x28097000)
                libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x28611000)
                libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x281f5000)
        

        As you can see, the file is on the system, the mysqlclient pkg is installed and after I forced a reinstall of mysqlclient the MySQL module is working again - but until a reboot.

        I tried to work around this following this instruction from freeradius.org page:

        #
        # libdir: Where to find the rlm_* modules.
        #
        #   This should be automatically set at configuration time.
        #
        #   If the server builds and installs, but fails at execution time
        #   with an 'undefined symbol' error, then you can use the libdir
        #   directive to work around the problem.
        #
        #   The cause is usually that a library has been installed on your
        #   system in a place where the dynamic linker CANNOT find it.  When
        #   executing as root (or another user), your personal environment MAY
        #   be set up to allow the dynamic linker to find the library.  When
        #   executing as a daemon, FreeRADIUS MAY NOT have the same
        #   personalized configuration.
        #
        #   To work around the problem, find out which library contains that symbol,
        #   and add the directory containing that library to the end of 'libdir',
        #   with a colon separating the directory names.  NO spaces are allowed.
        #
        #   e.g. libdir = /usr/local/lib:/opt/package/lib
        #
        #   You can also try setting the LD_LIBRARY_PATH environment variable
        #   in a script which starts the server.
        #
        #   If that does not work, then you can re-configure and re-build the
        #   server to NOT use shared libraries, via:
        #
        #	./configure --disable-shared
        #	make
        #	make install
        #
        libdir = @libdir@
        

        I added the /usr/local/lib/mysql path to the radiusd.conf but with no luck.

        There isn't any problem with PostgreSQL, and ldap as well as krb5 are still working after a reboot.

        I'm sorry I didn't test that some days before when you started compiling. Don't know how to fix that :(

        1 Reply Last reply Reply Quote 0
        • marcellocM
          marcelloc
          last edited by

          Ok, I'll take a look.

          Treinamentos de Elite: http://sys-squad.com

          Help a community developer! ;D

          1 Reply Last reply Reply Quote 0
          • P
            pszafer
            last edited by

            @Nachtfalke
            if you see that library there and it is not seen by ldconfig just run:

            ldconfig -m /usr/local/lib/mysql/

            Unfortunately ldconfig doesn't run recursively…

            1 Reply Last reply Reply Quote 0
            • N
              Nachtfalke
              last edited by

              @pszafer:

              @Nachtfalke
              if you see that library there and it is not seen by ldconfig just run:

              ldconfig -m /usr/local/lib/mysql/

              Unfortunately ldconfig doesn't run recursively…

              Thanks! Will try that tomorrow. Will go to bed now to get at least 5h of sleep ;)

              1 Reply Last reply Reply Quote 0
              • N
                Nachtfalke
                last edited by

                @pszafer:

                @Nachtfalke
                if you see that library there and it is not seen by ldconfig just run:

                ldconfig -m /usr/local/lib/mysql/

                Unfortunately ldconfig doesn't run recursively…

                Hi,
                this worked - unfortunately only until reboot.
                Is this perhaps of write protection of pfsense ?
                Or is there a possibility to make this "permanent" ? I don't want to put this into the rc_start_file.

                1 Reply Last reply Reply Quote 0
                • P
                  pszafer
                  last edited by

                  you need to edit rc.conf file,
                  just type:

                  cat /etc/defaults/rc.conf | grep ldconfig
                  

                  and you should figure out what to do ;)

                  1 Reply Last reply Reply Quote 0
                  • marcellocM
                    marcelloc
                    last edited by

                    You can check and Fix it via freeradius.inc file if you do not whant to change system files

                    Treinamentos de Elite: http://sys-squad.com

                    Help a community developer! ;D

                    1 Reply Last reply Reply Quote 0
                    • N
                      Nachtfalke
                      last edited by

                      Updates pkg v1.5.0

                      • Fixed: loading rlm_sql_mysql.so module after reboot (Thanks: pszafer + marcelloc)

                      • Fixed: XMLRPC sync for MACs

                      • Fixed: restart of service when adding MACs

                      • Modfied: handling of cert-managers in GUI

                      1 Reply Last reply Reply Quote 0
                      • N
                        Nachtfalke
                        last edited by

                        @pszafer:

                        @sandern:

                        I'm trying to get LDAP working but I'm getting the following output:

                        
                          [ldap] ldap_search() failed: Operations error
                        [ldap] search failed
                          [ldap] ldap_release_conn: Release Id: 0
                        ++[ldap] returns fail
                        Invalid user:  [USER/PASSW]
                        
                        

                        Does anyone know why this is happening? When I manually do an ldap search with another program with the same user I do get a result back.

                        you didn't give anything about your config, but I'll try guess:

                        If you have MS AD try to filter:
                        (sAMAccountName=%{mschap:User-Name})
                        otherwise maybe:
                        (uid=%{mschap:User-Name})

                        I don't know if you have your Identity configured properly, show it for us

                        Hi,

                        I googled a little bit around for some of the errors:

                        Did you:
                        Enable Active Directory support in LDAP GUI ? You should enable this if there is "operations error".
                        http://freeradius.1045715.n5.nabble.com/Ldap-search-and-AD-operations-error-td2787134.html

                        Perhaps try with "ldasearch:

                        ldapsearch -v -h <ad server=""> -D "cn= <account to="" bind="">dc=ad, dc=hud, dc=ac,
                        dc=uk"  -w <password> -x -b "dc=ad, dc=hud, dc=ac, dc=uk"
                        "(sAMAccountName=mytestusername)"</password></account></ad>
                        

                        Perhaps it can help if you change

                        /usr/local/etc/raddb/modules/pap
                        

                        and enable this:

                        auto_header = yes
                        

                        Perhaps this mini how-to will help us with kerberos and AD
                        http://lists.cistron.nl/pipermail/freeradius-devel/2006-January/009250.html

                        I hope you'll find a solution :D

                        1 Reply Last reply Reply Quote 0
                        • P
                          pszafer
                          last edited by

                          hello, I have PAP fully working (wpa_suplicant get connected to wlan), no lucky with any EAP.
                          I'm thinking and want to have your opinion, what is better:

                          • MS-CHAPv2?
                          • certificates?
                          • both?

                          is it possible to get certificates auth working via Kerberos?
                          I'm thinking I'm misunderstaning how this certificates working ;)

                          1 Reply Last reply Reply Quote 0
                          • N
                            Nachtfalke
                            last edited by

                            @pszafer:

                            hello, I have PAP fully working (wpa_suplicant get connected to wlan), no lucky with any EAP.
                            I'm thinking and want to have your opinion, what is better:

                            • MS-CHAPv2?
                            • certificates?
                            • both?

                            is it possible to get certificates auth working via Kerberos?
                            I'm thinking I'm misunderstaning how this certificates working ;)

                            Hi,

                            To use PEAP (Protected EAP) with MSCHAPv2 is workinh using MAC OS X, Ubuntu, Android, Windows XP (I tested this today).
                            To configure that you don't have to change anything on freeradius2 EAP. Just add a user with username an password.

                            On WLAN-AP (I used DD-WRT) you have to enable WPA Enterprise or WPA2 Enterprise. Then you have to enter th IP of the RADIUS server and the shared secret.
                            The IP of the WLAN AP and the shared secret you have to enter on freeradius NAS/Clients.

                            On the client you can should then choose PEAP and MSCHAPv2. You will be prompted to accept the CA-Certificate of the freeradius server.
                            Than you will be prompted for a username and password - thats the one you entered in freeradius2 users.

                            Than all should work. But this is only authorization with username/password. It is NOT TLS or TTLS. TLS means, that the client-certificate (client on your WLAN PC) hast to be valid with the CA on the freeradius server. I didn't get this work today, but I think there are some options on freeradius2 EAP GUI missing. I will check this.

                            The most secure thing would be to use certificates and username/password together.
                            If the username/password combination isn't to easy then I don't think that there is a big difference between using ONLY certs or ONLY user/pw.

                            PS: Check the pfsense docs for "FreeRADIUS 2.x package" - there are two documentations with screenshots. Perhaps this will help you. One is in german but really good screenshots.

                            And I will check additional options in EAP pulldown menues like MD5, TLS, TTLS and so on. But the freeradius configuration is rare configuration hints…as far as I could see this.

                            Any news on LDAP + AD ?
                            What/where do you mean to use "Kerberos auth with certificates" ?

                            1 Reply Last reply Reply Quote 0
                            • P
                              pszafer
                              last edited by

                              ok, it's simplier that I thought.
                              Because I wanna to my AD Win Server 2008 to be CA, but I can just copy CA certificate to the pfSense freeradius, so nevermind about kerberos and certs ;)

                              I'll try to test everything you suggested as soon as possible, but it could be monday or tuesday because I had some new PC's in work and it would take some time to configure them

                              1 Reply Last reply Reply Quote 0
                              • N
                                Nachtfalke
                                last edited by

                                @pszafer:

                                ok, it's simplier that I thought.
                                Because I wanna to my AD Win Server 2008 to be CA, but I can just copy CA certificate to the pfSense freeradius, so nevermind about kerberos and certs ;)

                                I'll try to test everything you suggested as soon as possible, but it could be monday or tuesday because I had some new PC's in work and it would take some time to configure them

                                Hey, no stress :D

                                Your feedback is great and testing is good :D
                                All what we could test and what is working will be put into the pfsense docs.
                                Perhaps in the next week I will find some time to try with my colleague (linuy geek) to setup MySQL and OpenLDAP ans test both with freeradius2.

                                Further I will add some new EAP types to the package.

                                1 Reply Last reply Reply Quote 0
                                • N
                                  Nachtfalke
                                  last edited by

                                  Updates pkg v1.5.1

                                  • Added: additional eap.conf options (fragment size, include_length, enable cache)

                                  • Added: More authentication protocls and methods based on the follwoing links:
                                    http://hostap.epitest.fi/wpa_supplicant/
                                    http://freeradius.org/features/eap.html

                                  1 Reply Last reply Reply Quote 0
                                  • Z
                                    zlyzwy
                                    last edited by

                                    Hi,

                                    Anyone use SQL function? Does it work now?

                                    I tried it here,but it's still not working but I did see a lot of new options.

                                    One more question, is there any log I can analyse what's wrong with SQL? I checked with system log and /var/log/radius.log. There is no information.

                                    Many thanks for your great work!

                                    ZLYZWY

                                    1 Reply Last reply Reply Quote 0
                                    • N
                                      Nachtfalke
                                      last edited by

                                      @zlyzwy:

                                      Hi,

                                      Anyone use SQL function? Does it work now?

                                      I tried it here,but it's still not working but I did see a lot of new options.

                                      One more question, is there any log I can analyse what's wrong with SQL? I checked with system log and /var/log/radius.log. There is no information.

                                      Many thanks for your great work!

                                      ZLYZWY

                                      Hi zlyzwy,

                                      MySQL and PostgreSQL should work. FreeRADIUS is compiled with these modules and the bug with the missing lib after areboot should be fixed (only MySQL). Of course, if you enable SQL but FreeRADIUS could not connect to the database, the service fails and freeradius stops. MySQL connection error is displayed fast. PostgreSQL takes ~30-60s to fail - if not connectable to a database.
                                      If you want to debug output of RADIUS and SQL, then do all the configs from GUI and after you did that, stop the service, connect with SSH to your pfsense and then type:

                                      radiusd -X
                                      

                                      This is debugging mode. There you will get all output. You can post it here if neccessary. Perhaps we can help.

                                      1 Reply Last reply Reply Quote 0
                                      • Z
                                        zlyzwy
                                        last edited by

                                        Hi Nachtfalke,

                                        Really thanks for such a quick reply~~

                                        here is the output for debug:

                                        # radiusd -X
                                        FreeRADIUS Version 2.1.12, for host i386-portbld-freebsd8.1, built on Jan  3 201                                                                              2 at 23:44:16
                                        Copyright (C) 1999-2009 The FreeRADIUS server project and contributors.
                                        There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
                                        PARTICULAR PURPOSE.
                                        You may redistribute copies of FreeRADIUS under the terms of the
                                        GNU General Public License v2.
                                        Starting - reading configuration files ...
                                        including configuration file /usr/local/etc/raddb/radiusd.conf
                                        including configuration file /usr/local/etc/raddb/clients.conf
                                        /usr/local/etc/raddb/clients.conf[2]: Expecting section start brace '{' after "c                                                                              lient PF"
                                        Errors reading /usr/local/etc/raddb/radiusd.conf
                                        
                                        

                                        Can you help to analyse the error?

                                        UPDATE
                                        I can read sql.conf file from web interface. here is the output:

                                        /usr/local/etc/raddb/sql.conf
                                        
                                        sql {
                                        	database = "mysql"
                                        	driver = "rlm_sql_${database}"
                                        	server = "IP"
                                        	port = 3306
                                        	login = "xxx"
                                        	password = "XXX"
                                        	radius_db = "radius"
                                        	acct_table1 = "radacct"
                                        	acct_table2 = "radacct"
                                        	postauth_table = "radpostauth"
                                        	authcheck_table = "radcheck"
                                        	authreply_table = "radreply"
                                        	groupcheck_table = "radgroupcheck"
                                        	groupreply_table = "radgroupreply"
                                        	usergroup_table = "radusergroup"
                                        	read_groups = yes
                                        	deletestalesessions = yes
                                        	sqltrace = yes
                                        	sqltracefile = ${logdir}/sqltrace.sql
                                        	num_sql_socks = 5
                                        	connect_failure_retry_delay = 60
                                        	lifetime = 0
                                        	max_queries = 0
                                        	readclients = yes
                                        	nas_table = "nas"
                                        	$INCLUDE sql/${database}/dialup.conf
                                        }
                                        
                                        sql sql2 {
                                        	database = "mysql"
                                        	driver = "rlm_sql_${database}"
                                        	server = "localhost"
                                        	port = 3306
                                        	login = "radius"
                                        	password = "radpass"
                                        	radius_db = "radius"
                                        	acct_table1 = "radacct"
                                        	acct_table2 = "radacct"
                                        	postauth_table = "radpostauth"
                                        	authcheck_table = "radcheck"
                                        	authreply_table = "radreply"
                                        	groupcheck_table = "radgroupcheck"
                                        	groupreply_table = "radgroupreply"
                                        	usergroup_table = "radusergroup"
                                        	read_groups = yes
                                        	deletestalesessions = yes
                                        	sqltrace = no
                                        	sqltracefile = ${logdir}/sqltrace.sql
                                        	num_sql_socks = 5
                                        	connect_failure_retry_delay = 60
                                        	lifetime = 0
                                        	max_queries = 0
                                        	readclients = yes
                                        	nas_table = "nas"
                                        	$INCLUDE sql/${database}/dialup.conf
                                        }
                                        
                                        

                                        I create a database in MySQL named "radius". That's all my settings.
                                        Should I create the tables first, if yes, then what's the structure of these tables?

                                        1 Reply Last reply Reply Quote 0
                                        • S
                                          sandern
                                          last edited by

                                          @Nachtfalke:

                                          On the client you can should then choose PEAP and MSCHAPv2. You will be prompted to accept the CA-Certificate of the freeradius server.
                                          Than you will be prompted for a username and password - thats the one you entered in freeradius2 users.

                                          Thats fine for non-domain computers but as the network link isn't established before logon, network scripts can't be executed nor 'll they be able to logon.

                                          1 Reply Last reply Reply Quote 0
                                          • N
                                            Nachtfalke
                                            last edited by

                                            @sandern:

                                            @Nachtfalke:

                                            On the client you can should then choose PEAP and MSCHAPv2. You will be prompted to accept the CA-Certificate of the freeradius server.
                                            Than you will be prompted for a username and password - thats the one you entered in freeradius2 users.

                                            Thats fine for non-domain computers but as the network link isn't established before logon, network scripts can't be executed nor 'll they be able to logon.

                                            Then you have to create a "Computer logon" which will be executed before user logon:
                                            http://pcloadletter.co.uk/2011/07/11/cisco-wifi-active-directory-auth/

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.