Documentation

Server 2.x

RADIUS#

This document describes how to configure RADIUS for deployed systems. We assume you used the deploy_${DIST}.sh script to deploy the software. Below we assume you use vpn.example, but modify this domain to your own domain name!

RADIUS integration can currently only be used to authenticate users, not for authorization/ACL purposes.

In order to make a particular user an “administrator” in the portal, see PORTAL_ADMIN.

NOTE: you absolutely MUST make sure the communication between the VPN server and the RADIUS server is secure! Without additional steps the credentials will be transmitted as plain text!

NOTE: RADIUS integration does NOT support PEAP/TTLS, plain text authentication ONLY!, RADIUS servers used for eduroam authentication will typically be configured with PEAP/TTLS, as plain text authentication is not supported for 802.1X.

NOTE: If you have the choice between LDAP and RADIUS, always choose LDAP! LDAP is supported by all common IdMs, even Active Directory. Go here for instructions on how to configure LDAP.

Configuration#

First install the PHP module for RADIUS:

$ sudo yum install php-pecl-radius # CentOS/Fedora
$ sudo apt install php-radius      # Debian

Restart PHP to activate the RADIUS module:

$ sudo systemctl restart php-fpm                            # CentOS/Fedora
$ sudo systemctl restart php$(/usr/sbin/phpquery -V)-fpm    # Debian

You can configure the portal to use RADIUS. This is configured in the file /etc/vpn-user-portal/config.php.

You have to set authMethod first:

'authMethod' => 'FormRadiusAuthentication',

Then you can configure the RADIUS server:

// RADIUS
'FormRadiusAuthentication' => [
    'serverList' => [
        [
            'host' => 'radius.example.org',
            'secret' => 'testing123',
            //'port' => 1812,
        ],
    ],
    //'addRealm' => 'example.org',
    //'nasIdentifier' => 'vpn.example.org',
    //'permissionAttribute' => RADIUS_REPLY_MESSAGE,
    //'permissionAttribute' => 16,
],

Here serverList is an array of server configurations where you can add multiple RADIUS servers to be used for user authentication. Set the host to the host of your RADIUS server. You can optionally also specify the port (defaults to 1812).

You can also configure whether or not to add a “realm” to the identifier the user provides. If for example the user provides foo as a user ID, the addRealm option when set to example.org modifies the user ID to foo@example.org and uses that to authenticate to the RADIUS server.

The host and secret options are REQUIRED, the others are optional.

In vpn-user-portal >= 2.3.13 it is also possible to specify an attribute for user authorization using the permissionAttribute configuration option. For now only officially registered attributes are supported, so NO vendor specific attributes. See the list here for a complete list. Make sure you use a “text” or “string” type. Not all attributes are registered in the PHP RADIUS plugin, so you can also use the integer value, e.g. 16 instead of RADIUS_REPLY_MESSAGE. For the PHP list look here.