5.4 Troubleshooting Common Problems
In this section, I'll take a look at some
of the most frequently occurring problems with a new FreeRADIUS setup
and how to fix them.
5.4.1 Linking Errors When Starting FreeRADIUS
If you receive an error similar to the following:
Module: Loaded SQL
rlm_sql: Could not link driver rlm_sql_mysql: file not found
rlm_sql: Make sure it (and all its depend libraries!) are in the search path
radiusd.conf[50]: sql: Module instantiation failed.
It means that some shared libraries
on
the server
are
not available. There are a couple of possible causes from this.
First, the libraries that are needed by the module listed in the
error messages couldn't be found when FreeRADIUS was
being compiled. However, if a static version of the module was
available, it was built at compile time. This would have been
indicated with very prominent messages at compile time.
The other cause is that the dynamic linker on your server is not
configured correctly. This would result in the libraries that are
required being found at compile time, but not run time. FreeRADIUS
makes use of standard calls to link to these shared libraries, so if
these calls fail, the system is misconfigured. This can be fixed by
telling the linker where these libraries are on your system, which
can be done in one of the following ways:
Write a script that starts FreeRADIUS and includes the variable
LD_LIBRARY_PATH. This sets the paths where these
libraries can be found.
If your system allows it, edit the
/etc/ld.so.conf file and add the directory
containing the shared libraries to the list.
Set the path to these libraries inside
radiusd.conf using the
libdir configuration directive. The
radiusd.conf file has more details on this.
5.4.2 Incoming Request Passwords Are Gibberish
Gibberish is usually indicative of
an
incorrectly formed or mismatched shared secret, the phrase shared
between the server and the RADIUS client machine and used to perform
secure encryption on packets. To identify the problem, run the server
in debugging mode, as described previously. The first password
printed to the console screen will be inside a RADIUS attribute
(e.g., Password = "rneis\dfkjdf7482odf") and the
second will be in a logged message (e.g., Login failed
[rneis/dfkjdf7482odf]). If the data after the slash is
gibberish—ensure it's not just a really secure
password—then the shared secret is not consistent between the
server and the RADIUS client. This may even be due to hidden
characters, so to be completely sure both are the same, delete and
re-enter the secret on both machines.
The gibberish may also result from a shared secret that is too long.
FreeRADIUS limits the secret length to 16 characters, since some NAS
equipment has limitations on the length of the secret yet
don't make it evident in error logs or the
documentation.
5.4.3 NAS Machine Ignores a RADIUS Reply
You may be seeing duplicate accounting or
authentication
requests without accompanying successful user logins. In this case,
it's likely that you have a multi-homed RADIUS
server, or at least a server with multiple IP addresses. If the
server receives a request on one IP address, but responds with a
different one, even if the reply comes from the machine for which the
original packet was destined, the NAS machine will not accept it. To
rectify this, launch FreeRADIUS with the -i
command-line switch, which binds the daemon to one specific IP
address.
5.4.4 CHAP Authentication Doesn't Work Correctly
If PAP authentication works normally,
but
users authenticating with the CHAP protocol receive errors and
denials, you do not have plain text passwords in the users file. CHAP
requires this, while PAP can take passwords from the system or from
any other source. For each user who needs CHAP authentication, you
must add the Password = changeme check item to his
individual entry, of course changing the value of the password as
appropriate.
Some people may say using CHAP is much more secure, since the user
passwords are not transmitted in plain text over the connection
between the user and the NAS. This is simply not true in practice.
While hiding the password during transmission is beneficial, the CHAP
protocol requires you to leave plain text passwords sitting in a file
on a server, completely unencrypted. Obviously, it's
much more likely that a cracker will gain access to your RADIUS
server, grab the users file with all of these
plainly available passwords, and wreak havoc and harm on your network
than it is that the same cracker would intercept
one user's password
during
the establishment of the connection.
|