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
文件并修改以下内容
31 行附近的
driver = "rlm_sql_null"
修改为driver = "rlm_sql_postgresql"
87 行附近的
dialect = "..."
修改为dialect = "postgresql"
91 行附近的
server``port``login``password
取消注释并修改为对应的值。本例中server=localhost
port=5679
login=radius
password=radpass
打开 /etc/raddb/sites-available/default
文件,修改所有的 -sql
为 sql
打开 /etc/raddb/sites-available/inner-tunnel
文件,修改所有的 -sql
为 sql
新增用户
在服务器中执行下列命令来新建一个账号为 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.cnf
、server.cnf
与 client.cnf
三个文件,主要修改内容与注意事项如下:
CA_default 下的
default_days
与default_crl_days
设置为较长时间,以防需要频繁信任证书certificate_authority 下均可修改,ca.cnf 文件的 commonName 习惯设定为
"XXX Certificate Authority"
,server.cnf 文件的 commonName 习惯设定为"XXX Server Certificate"
,client.cnf 文件的 commonName 习惯设定为个人电子邮箱,同时需要注意这三个文件的 commonName 不能相同。req 下的
input_password
和output_password
可修改为任意字符串(证书加密密码),但(如非专业用户)需保证二者值相等。其他选项请不要修改(除非明确知道这样做的目的与结果)
然后在终端运行下面的命令完成证书的配置
cd /etc/raddb/certs/
重启 Radius 服务即可
systemctl restart radius