在Ubuntu 20.04上使用daloRADIUS安装FreeRADIUS

在本教程中,我们提供了有关如何在Ubuntu 20.04上使用daloRADIUS安装FreeRADIUS的分步指南。 FreeRADIUS 是一个开放源代码的高性能和高度可配置的RADIUS套件,可在诸如802.1x(WiFi),拨号,PPPoE,VPN,VoIP等系统上提供集中式网络身份验证。 达罗RADIUS 另一方面是用于管理FreeRADIUS服务器的高级Web应用程序。

FreeRADIUS支持各种各样的数据库后端,包括OpenLDAP,MySQL,Redis,Microsoft AD,Apache Cassandra,PostgreSQL等。

在Ubuntu 20.04上使用daloRADIUS安装FreeRADIUS

在本演示中,我们将使用MySQL作为后端数据库来设置FreeRADIUS。因此,在继续操作之前,请确保满足以下先决条件。

先决条件

更新和升级您的系统软件包;

apt update
apt upgrade

通过以下链接在Ubuntu 20.04上安装LAMP Stack;

在Ubuntu 20.04上安装LAMP Stack

安装其他必需的PHP模块;

apt install php-gd php-mail php-mail-mime php-mysql php-pear php-db php-mbstring php-xml php-curl

在Ubuntu 20.04上安装和配置FreeRADIUS

安装FreeRADIUS

满足以上所有前提条件后,请继续在Ubuntu 20.04上安装FreeRADIUS。 FreeRADIUS 3.0.x是撰写本文时的最新稳定发行版,可在默认的Ubuntu 20.04存储库上使用。

要在Ubuntu 20.04上安装FreeRADIUS和其他FreeRADIUS实用程序,包括MySQL数据库后端实用程序,请执行以下命令;

apt install freeradius freeradius-mysql freeradius-utils

在调试模式下运行FreeRADIUS

通常,在完成安装后,FreeRADIUS可以在默认配置下正​​常运行。要进行验证,请在调试模式下运行FreeRADIUS,以确认已准备好处理请求。

在调试模式下运行FreeRADIUS之前,您需要首先停止其服务(安装后自动启动);

systemctl stop freeradius

完成后,在调试模式下运行FreeRADIUS。

freeradius -X

如果FreeRADIUS按预期运行,您应该会看到一行, 准备处理请求

   	max_connections = 16
   	lifetime = 0
   	idle_timeout = 30
   }
}
Listening on auth address 127.0.0.1 port 18120 bound to server inner-tunnel
Listening on auth address * port 1812 bound to server default
Listening on acct address * port 1813 bound to server default
Listening on auth address :: port 1812 bound to server default
Listening on acct address :: port 1813 bound to server default
Listening on proxy address * port 59191
Listening on proxy address :: port 33772
Ready to process requests

通过按停止调试模式 Ctrl + C

启动并启用FreeRADIUS以在系统启动时运行;

systemctl enable --now freeradius

在防火墙上打开FreeRADIUS

FreeRADIUS使用UDP端口 1812 用于身份验证和授权以及UDP端口 1813 作为配偶 港口。因此,如果UFW正在运行,请打开这些端口。

ufw allow to any port 1812 proto udp
ufw allow to any port 1813 proto udp

通过运行以下命令确认端口打开;

ss -alun4 | grep -E ':1812|:1813'
UNCONN  0       0               127.0.0.1:18120          0.0.0.0:*              
UNCONN  0       0                 0.0.0.0:1812           0.0.0.0:*              
UNCONN  0       0                 0.0.0.0:1813           0.0.0.0:*

创建FreeRADIUS MySQL数据库和数据库用户

登录MySQL服务器并创建FreeRADIUS数据库;

mysql -u root -p
create database radiusdb;

创建FreeRADIUS数据库用户并授予上面创建的数据库的所有特权;

create user [email protected] identified by '[email protected]';
grant all on radiusdb.* to [email protected];

重新加载特权表以影响更改并退出数据库。

flush privileges;
quit

创建FreeRADIUS SQL模式

FreeRADIUS附带了位于下面的默认数据库模式 /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql。将该模式导入到上面创建的FreeRADIUS数据库中;

mysql -u root -p radiusdb < /etc/freeradius/3.0/mods-config/sql/main/mysql/schema.sql

配置FreeRADIUS以使用SQL

要配置FreeRADIUS使用SQL模块,请打开SQL模块配置文件。

vim /etc/freeradius/3.0/mods-available/sql

将SQL方言设置为 MySQL的,然后定义上面创建的FreeRADIUS数据库连接设置。

...
sql {
        #
        #  The dialect of SQL being used.
        #
        #  Allowed dialects are:
        #
        #       mssql
...
        dialect = "mysql"

        # The driver module used to execute the queries.
        #driver = "rlm_sql_null"
        driver = "rlm_sql_${dialect}"
...
        # Connection info:
        #
        server = "localhost"
        port = 3306
        login = "radiusadmin"
        password = "[email protected]"
...
        # Database table configuration for everything except Oracle
        radius_db = "radiusdb"
...

默认情况下,使用MySQL数据库会强制使用TLS证书。在本演示中,我们不使用TLS证书,因此注释掉了MYSQL TLS部分。

...
        mysql {
                # If any of the files below are set, TLS encryption is enabled
                #tls {
                #       ca_file = "/etc/ssl/certs/my_ca.crt"
                #       ca_path = "/etc/ssl/certs/"
                #       certificate_file = "/etc/ssl/certs/private/client.crt"
                #       private_key_file = "/etc/ssl/certs/private/client.key"
                #       cipher = "DHE-RSA-AES256-SHA:AES128-SHA"
                #
                #       tls_required = yes
                #       tls_check_cert = no
                #       tls_check_cert_cn = no
                #}

...

通过取消注释(除去哈希),使FreeRADIUS服务器能够从数据库读取客户端 #read_clients = yes

...
        # Set to 'yes' to read radius clients from the database ('nas' table)
        # Clients will ONLY be read on server startup.
        read_clients = yes
...

接下来,通过创建SQL mods的符号链接(启用到启用mods的启用)来启用SQL模块。

ln -s /etc/freeradius/3.0/mods-available/sql /etc/freeradius/3.0/mods-enabled/

如下所示,将所有权用户和已启用的SQL模块(符号链接)的组更改为freerad。

chown -h freerad.freerad /etc/freeradius/3.0/mods-enabled/sql

重新启动FreeRADIUS服务,

systemctl restart freeradius

验证FreeRADIUS对SQL数据库的使用

要验证FreeRADIUS现在可以正常使用MySQL数据库,请在FreeRADIUS数据库中填充一些虚拟数据。以上面创建的FreeRADIUS数据库用户身份登录FreeRADIUS数据库;

mysql -u radiusadmin -p
use radiusdb;

在以下位置创建虚拟用户条目 radcheck 表;

insert into radcheck (id,username,attribute,op,value) values("1", "demouser", "Cleartext-Password", ":=", "demopass");

验证相同;

select * from radcheck where id="1";
+----+----------+--------------------+----+----------+
| id | username | attribute          | op | value    |
+----+----------+--------------------+----+----------+
|  1 | demouser | Cleartext-Password | := | demopass |
+----+----------+--------------------+----+----------+
1 row in set (0.01 sec)

退出数据库,停止FreeRADIUS,然后在调试模式下再次运行它以验证它是否运行良好。

systemctl stop freeradius
freeradius -X

FreeRADIUS提供了一个简单的测试工具, radtest,它将数据包发送到RADIUS服务器并显示答复。使用的语法 radtest 命令行工具是;

radtest {username} {password} {hostname} 10 {radius_secret}

阅读手册页, man radtest,以获取有关所使用选项的更多信息。

因此,当FreeRADIUS以调试模式运行时,请打开另一个终端并运行下面的test命令。 注意testing123 是本地主机客户端的共享机密,请检查 clients.conf

radtest demouser demopass localhost 10 testing123

如果你得到 Access-Accept,在验证后响应,则完成POC。

Sent Access-Request Id 129 from 0.0.0.0:40930 to 127.0.0.1:1812 length 78
	User-Name = "demouser"
	User-Password = "demopass"
	NAS-IP-Address = 10.0.2.15
	NAS-Port = 10
	Message-Authenticator = 0x00
	Cleartext-Password = "demopass"
Received Access-Accept Id 129 from 127.0.0.1:1812 to 127.0.0.1:40930 length 20

停止FreeRADIUS调试模式并启动服务。

systemctl start freeradius

在Ubuntu 20.04上安装和配置daloRADIUS

daloRADIUS是用于管理FreeRADIUS服务器的高级Web应用程序。 daloRADIUS主页托管在sourceforge上, https://sourceforge.net/projects/dalo​​​​radius。要下载最新版本,只需从sourceforge主页获取即可。

下载daloRADIUS zip文件后,将其解压缩到您的Web根目录;

unzip daloradius-1.1-2.zip 'daloradius/*' -d /var/www/html/
ls /var/www/html/
daloradius

daloRADIUS附带了其默认的MySQL表。将这些表导入到上面创建的FreeRADIUS数据库中。

mysql -u root -p radiusdb < /var/www/html/daloradius/contrib/db/fr2-mysql-daloradius-and-freeradius.sql
mysql -u root -p radiusdb < /var/www/html/daloradius/contrib/db/mysql-daloradius.sql

如下所示,将daloRADIUS Web配置文件的所有权配置给Apache Web用户。

chown -R www-data.www-data /var/www/html/daloradius/

将daloRADIUS主配置文件的权限配置为 664 如下所示;

chmod 664 /var/www/html/daloradius/library/daloradius.conf.php

配置daloRADIUS数据库连接设置;

vim /var/www/html/daloradius/library/daloradius.conf.php

根据您的设置来设置连接设置。

...
$configValues['DALORADIUS_VERSION'] = '1.1-2';
$configValues['DALORADIUS_DATE'] = '08 Aug 2019';
$configValues['FREERADIUS_VERSION'] = '2';
$configValues['CONFIG_DB_ENGINE'] = 'mysqli';
$configValues['CONFIG_DB_HOST'] = 'localhost';
$configValues['CONFIG_DB_PORT'] = '3306';
$configValues['CONFIG_DB_USER'] = 'radiusadmin'; 
$configValues['CONFIG_DB_PASS'] = '[email protected]';
$configValues['CONFIG_DB_NAME'] = 'radiusdb';
...

保存并退出配置文件并重新启动FreeRADIUS。

systemctl restart freeradius

从Web访问daloRADIUS

现在,您可以从Web访问daloRADIUS,因此可以轻松管理FreeRADIUS。使用地址, http://server-IP-Or-Hostname/daloradius

使用默认凭据登录:用户名: administrator 密码: radius

在Ubuntu 20.04上使用daloRADIUS安装FreeRADIUS

然后你去。您已在Ubuntu 20.04上成功安装了带有daloRADIUS的FreeRADIUS。探索RADIUS…

参考

在Debian / Ubuntu上安装FreeRADIUS 3.x

Sidebar