背景
最近系统要集成 Radius 认证,支持 Radius 身份认证方式。
发现 Apache/guacamole 支持 Radius 认证方式。就搭建了一个 guacamole 环境,学习了一下 guacamole 的实现。
Guacamole 环境搭建
Guacamole 采用的是 1.4.0 版本
采用 Docker 来部署 Guacamole。
参考 使用Docker部署Guacamole 文章来进行搭建。
说明:
docker pull guacamole/guacamole
docker pull guacamole/guacd
guacamole/guacamole 是 guacamole 的前端项目,我们一般只需要关注该项目即可。
guacamole/guacd 是 guacamole 的后端项目,多是 c 项目,不用关注。
Guacamole 开启 Radius 认证方式
Guacamole 官方 Radius 身份认证方式的文档
从官方文档了解到:
Radius 是 LGPL 协议,与 Apache 2.0 license 不兼容,所以 guacamole 无法发布 Radius 的二进制版本,需要我们手动构建
Guacamole 构建 Radius jar 包步骤:
- wget https://apache.org/dyn/closer.lua/guacamole/1.4.0/source/guacamole-client-1.4.0.tar.gz?action=download 下载 1.4.0 的 guacamole 包;
- tar -zxvf xxx 进行解压;
- 进入到解压后的目录,执行 mvn clean package -Plgpl-extensions 进行构建(如果失败,可以先 mvn clean,再 mvn install ,最后再执行构建命令)
- 构建成功后,在 extensions/guacamole-auth-radius/target/ 下有 guacamole-auth-radius-1.4.0.jar;
- 执行命令 docker cp data/guacamole/extensions/guacamole-auth-radius-1.4.0.jar guacamole:/home/guacamole/.guacamole/extensions/guacamole-auth-radius-1.4.0.jar 把 radius jar 包拷贝到 guacamole 的 extensions 目录下;
- 配置 Radius 身份认证方式的配置文件 guacamole.properties
- 执行 docker cp data/guacamole/guacamole.properties guacamole:/home/guacamole/.guacamole/guacamole.properties 覆盖 guacamole 的 guacamole.properties 配置文件(注意:要保留原文件内容)
guacamole.properties 配置文件如下:
# 上面这部分是 guacamole 原有的配置文件,需要保留
# guacamole.properties - generated Thu Nov 17 03:25:00 AM UTC 2022
guacd-hostname: 172.17.0.3
guacd-port: 4822
mysql-username: root
mysql-password: sim
mysql-database: guac
mysql-hostname: 172.17.0.2
mysql-port: 3306
# 下面是 guacamole 开启 Radius 的配置文件
# radius 服务器主机地址
radius-hostname: 192.168.0.143
# radius 服务器认证端口
radius-auth-port: 1812
# 共享密钥
radius-shared-secret: testing123
# 协议 PAP 是密码认证
radius-auth-protocol: pap
# 失败重试次数
radius-retries: 3
# 超时时间
radius-timeout: 10
useSSL: false
写了一个脚本来做上面的一系列事情:
#!/bin/bash
# docker stop $1 && docker rm $1
docker ps | grep "guacamole/guacamole" | awk '{print $1}'
docker run --name guacamole --link guacd:guacd --link mysql:mysql -e MYSQL_DATABASE=guac -e MYSQL_USER=root -e MYSQL_PASSWORD=sim -v /root/liuwx/guacamole/data/guacamole:/etc/guacamole/ -d -p 9090:8080 guacamole/guacamole
docker cp guacamole-auth-radius-1.4.0.jar guacamole:/home/guacamole/.guacamole/extensions/guacamole-auth-radius-1.4.0.jar
docker cp guacamole.properties guacamole:/home/guacamole/.guacamole/guacamole.properties
~
测试
使用 radius 服务器上的用户和密码去进行登录。
Radius 服务器的搭建和配置见文章:FreeRadius 服务器环境搭建(PAP 版)