mirror of
https://github.com/opnsense/docs
synced 2024-11-09 01:10:33 +00:00
101 lines
2.5 KiB
ReStructuredText
101 lines
2.5 KiB
ReStructuredText
|
===============================
|
|||
|
Setup FreeRADIUS for accounting
|
|||
|
===============================
|
|||
|
|
|||
|
---------------------
|
|||
|
Goal of this tutorial
|
|||
|
---------------------
|
|||
|
|
|||
|
This tutorial can be used to test your Captive portal setup with radius
|
|||
|
accounting, it's not intended to use for production setups (because we
|
|||
|
only use simple flat files for everything). We used Ubuntu linux for
|
|||
|
this setup, a different operating system might result in some paths
|
|||
|
being different.
|
|||
|
|
|||
|
User limits on the OPNsense firewall are set right after login, the
|
|||
|
Radius server should tell the firewall how much resources are left for
|
|||
|
the user that logged in successfully. A normal login sequence look like
|
|||
|
this:
|
|||
|
|
|||
|
[login] -> [send accounting start] -> [send interim updates while
|
|||
|
connected] -> [on logout, send accounting stop]
|
|||
|
|
|||
|
-----
|
|||
|
Setup
|
|||
|
-----
|
|||
|
|
|||
|
To setup freeradius in ubuntu, execute the following command:
|
|||
|
|
|||
|
::
|
|||
|
|
|||
|
apt-get install freeradius
|
|||
|
|
|||
|
|
|||
|
Arrange client access
|
|||
|
---------------------
|
|||
|
|
|||
|
Edit the file /etc/freeradius/clients.conf and append a block for your
|
|||
|
network, as sample we will use 10.211.55.0/24.
|
|||
|
|
|||
|
.. code-block:: php
|
|||
|
|
|||
|
client 10.211.55.0/24 {
|
|||
|
secret = testing123
|
|||
|
shortname = test-network
|
|||
|
}
|
|||
|
|
|||
|
Enable daily session limits
|
|||
|
---------------------------
|
|||
|
|
|||
|
Enable daily session limits, which needs accounting to signal the
|
|||
|
clients use.
|
|||
|
|
|||
|
- In /etc/freeradius/sites-available/default uncomment daily in
|
|||
|
authorize and accounting sections.
|
|||
|
- in /etc/freeradius/radiusd.conf uncomment daily in the instantiate
|
|||
|
section
|
|||
|
- append to /etc/freeradius/dictionary
|
|||
|
|
|||
|
|
|||
|
.. code-block:: c
|
|||
|
|
|||
|
ATTRIBUTE Daily-Session-Time 3000 integer
|
|||
|
ATTRIBUTE Max-Daily-Session 3001 integer
|
|||
|
|
|||
|
|
|||
|
- uncomment sradutmp in the accounting section, to be able to use the
|
|||
|
radwho command.
|
|||
|
|
|||
|
--------------
|
|||
|
Add test users
|
|||
|
--------------
|
|||
|
|
|||
|
You can add your test users to /etc/freeradius/users, they should look
|
|||
|
like this:
|
|||
|
|
|||
|
.. code-block:: c
|
|||
|
|
|||
|
"test" Cleartext-Password := "test", Max-Daily-Session := 1800
|
|||
|
Framed-IP-Address = 10.211.55.100,
|
|||
|
Reply-Message = "Hello, %{User-Name}"
|
|||
|
|
|||
|
|
|||
|
Make sure the second and third lines are indented by a single tab
|
|||
|
character.
|
|||
|
|
|||
|
This should result in a user with a maxim use per day of 1800 seconds.
|
|||
|
|
|||
|
-----------
|
|||
|
Test radius
|
|||
|
-----------
|
|||
|
|
|||
|
For the initial test, it might be practical to debug the traffic going
|
|||
|
in and out from Freeradius. The next steps help you start Freeradius in
|
|||
|
debug mode, without output to console:
|
|||
|
|
|||
|
|
|||
|
.. code-block:: c
|
|||
|
|
|||
|
/etc/init.d/freeradius stop
|
|||
|
freeradius -X
|