unvdb开启Radius认证方式

安装 FreeRadius

yum -y install freeradius freeradius-utils freeradius-postgresql

检测 Radius 是否工作正常

修改用户账号配置

修改 /etc/raddb/users 文件,在首行添加

testing Cleartext-Password := "password"

此操作目的是为了「新建」一个用户名为「testing」、密码为「password」的测试用户。

之后每次修改配置后都应重启 Radius 服务。

在服务器的另一个终端窗口执行下面的命令来测试连接是否正常

radtest testing password 127.0.0.1 0 testing123  #其中的testing123参数不需要调整这个是共享密钥

radtest 命令格式

radtest [OPTIONS] user passwd radius-server[:port] nas-port-number secret

上述命令表示测试用户名为 testing、密码为 password、服务器为本地服务器、nas-port-number 为 0、secret (共享密钥)为 testing123

配置 Clients

打开 /etc/raddb/clients.conf,在文件首添加

client all_network {
	ipaddr = 0.0.0.0/0
	secret = testing-456
}
#testing-456此共享密钥在最后测试连接的时候使用

以放行所有 IP 地址(也可根据实际需要设定 IP 地址段),并设定一个新的 secret(此 secret 与上述 radtest 中的 secret 作用相同)

如果使用一些云主机,则可能需要进行端口安全组配置:入站 - UDP:1812

配置用于 FreeRadius 的 unvdb 表

添加 radius 账户

adduser radius

然后创建 unvdb 数据库

su unvdb
source ../unvdb/env.sh
createuser radius --no-superuser --no-createdb --no-createrole -P
createdb radius --owner=radius
exit

createuser命令执行时会提示设置一个数据库密码,此处设置为radpass

导入表结构

cd /etc/raddb/mods-config/sql/main/postgresql
ud_sql -U  radius -p 5679 radius < schema.sql

开启Radius认证

#进入ud_hba.conf文件添加或修改为以下配置
host    all             all             0.0.0.0/0               radius radiusservers=192.168.4.98 radiussecrets=testing-456 radiusports=1812

#其中radiusservers 是Radius认证服务器地址、radiussecrets 是之前设置的共享密钥、radiusports是 RADIUS 服务器使用的端口号默认情况下是 1812(用于认证)

配置 FreeRadius 来让其使用 PostgreSQL

ln -s /etc/raddb/mods-available/sql /etc/raddb/mods-enabled/sql
#如果/etc/raddb/mods-enabled目录下存在这个软链接则不需要执行上一条命令

打开 /etc/raddb/mods-available/sql 文件并修改以下内容

  1. 31 行附近的 driver = "rlm_sql_null" 修改为 driver = "rlm_sql_postgresql"

  2. 87 行附近的 dialect = "..." 修改为 dialect = "postgresql"

  3. 91 行附近的 server``port``login``password 取消注释并修改为对应的值。本例中 server=localhost port=5679 login=radius password=radpass

打开 /etc/raddb/sites-available/default 文件,修改所有的 -sqlsql

打开 /etc/raddb/sites-available/inner-tunnel 文件,修改所有的 -sqlsql

新增用户

在服务器中执行下列命令来新建一个账号为 fredf 密码为 wilma 的用户

create user fredf with password 'wilma';
#进入之前导入的数据库中
unvdb=# \c  radius
#执行以下命令进行登记
radius=# INSERT INTO radcheck (username, attribute, value, op) VALUES ('fredf', 'Cleartext-Password', 'wilma', ':=');
radius=# INSERT INTO radcheck (username, attribute, value, op) VALUES ('unvdb', 'Cleartext-Password', '123', ':=');
#可用如下命令检测用户是否插入成功
select * from radcheck;

Radius登录验证

radtest fredf wilma 127.0.0.1 0 testing123 #本地登录验证
radtest fredf wilma 192.168.4.98 0 testing-456  #远程登录验证 

如果成功会输出以下参数

Sent Access-Request Id 145 from 0.0.0.0:35490 to 192.168.4.98:1812 length 75 User-Name = “fredf” User-Password = “wilma” NAS-IP-Address = 192.168.4.98 NAS-Port = 0 Message-Authenticator = 0x00 Cleartext-Password = “123” Received Access-Accept Id 145 from 192.168.4.98:1812 to 0.0.0.0:0 length 20

数据库登录验证

ud_sql -U unvdb -p 5679  -h 192.168.4.98
Password for user unvdb:  #我的密码是123
ud_sql (24.2)
Type "help" for help.

unvdb=# 

#可以看到登录是正常的,此时我们将密码修改一下改为1

unvdb=# ALTER USER unvdb PASSWORD '1';
ALTER ROLE
unvdb=# \q

#可以看到已经报错没有通过验证,这个密码和之前登记的不一样

[root@x98 udb-49]# ud_sql -U unvdb -p 5679  -h 192.168.4.98
Password for user unvdb: #这时的密码是1
ud_sql: error: connection to server at "192.168.4.98", port 5679 failed: FATAL:  RADIUS authentication failed for user "unvdb"
[root@x98 udb-49]# 

不要忘了修改一些默认参数

在测试通过后,千万不要忘记修改一些参数

  • /etc/raddb/users 文件首行的测试账号记得删除

  • 生产环境下使用的服务命令

    • systemctl enable radiusd

    • systemctl start radiusd

  • /etc/raddb/clients.conf 内的 secret 记得调整

  • unvdb 的radius账户密码记得修改

    • alter user radius with password '新密码';

    • 同步修改 /etc/raddb/mods-available/sql 文件信息

  • 数据库内的用户信息记得修改

证书配置

进入到 /etc/raddb/ 目录下,备份 certs 文件夹的内容

cp -r certs certs.bak

进入到 /etc/raddb/certs/ 目录,删除掉原有的证书和记录

rm -rf *.crt *.csr *.key *.pem *.der *.p12 index*

修改 ca.cnfserver.cnfclient.cnf 三个文件,主要修改内容与注意事项如下:

  1. CA_default 下的 default_daysdefault_crl_days 设置为较长时间,以防需要频繁信任证书

  2. certificate_authority 下均可修改,ca.cnf 文件的 commonName 习惯设定为 "XXX Certificate Authority",server.cnf 文件的 commonName 习惯设定为"XXX Server Certificate",client.cnf 文件的 commonName 习惯设定为个人电子邮箱,同时需要注意这三个文件的 commonName 不能相同。

  3. req 下的 input_passwordoutput_password 可修改为任意字符串(证书加密密码),但(如非专业用户)需保证二者值相等。

  4. 其他选项请不要修改(除非明确知道这样做的目的与结果)

然后在终端运行下面的命令完成证书的配置

cd /etc/raddb/certs/

重启 Radius 服务即可

systemctl restart radius

参考CentOS 7.4 配置 WPA2 Enterprise(Radius) 认证 | Origin