Micro-Net-Hub 对接 //远程办公网络接入//

423 阅读5分钟

new-micro-net-hub-logo.png

Micro-Net-Hub 项目当前(v0.3.2)实现了一个 Radius 认证服务, 和一个简单的 LDAP Search/Bind 服务。

基于这两种认证协议的加持,

可以使用这两种认证方式去对接远程办公登录 (Ocserv, Anylink...)。

本文就项目和 Ocserv,Anylink 的对接展开,希望对有类似需求的伙伴提供些许思路。

背景

轻资产运行的互联网公司,有些是没有物理机房的,所有服务器资源都采用公有云服务。

除了暴露在公网上的产品,

一定还有些不便于公开的内部网站,仅允许员工使用的内部服务.

这个时候你可能就会用到//远程办公网络接入//,让公司员工通过//远程办公网络接入// 访问这些内部服务。

企业级 //远程办公网络接入//

我常用到的就是基于 "ietf-openconnect 协议" 实现的 Ocserv 和 Anylink 这两个 //远程办公网络接入// Server.


对接

😂,语文一直不及格,词汇贫乏,就先用 ”对接“ 描述 //远程办公网络接入// Server 配置使用 Micro-Net-Hub 进行用户认证的过程。

对接就两步,有繁有简:

1. 启动 Micro-Net-Hub,包括依赖的 Mysql 和 Openldap。 (因为我实现的那个 ldap Search/Bind 功能还不足以覆盖所有场景。)

先按照代码仓库中的文档启动 Micro-Net-Hub

Micro-Net-Hub --- 基于 go-ldap-admin 边学边练的二开项目 也有介绍。

记得修改配置文件 email 相关部分,方便您接收新建用户的账户信息。 email-config.png

指定可以用于 BIND 的 LDAP 账户角色 Keyword。 micro-net-hub_config-ldapsrv-v0.3.2.png

查看日志, 如果有以下几行,那就说明启动成功了。

2024-07-13 15:19:49     INFO    radiussrv/radius.go:124 micro-net-hub/internal/radiussrv.NewRadiusServer        New radius server on: 0.0.0.0:1812
2024-07-13 15:19:49     INFO    dnssrv/dnssrv.go:24     micro-net-hub/internal/dnssrv.NewDnsServerUdp   New dns server on UDP: 0.0.0.0:53
2024-07-13 15:19:49     INFO    dnssrv/dnssrv.go:45     micro-net-hub/internal/dnssrv.NewDnsServerTcp   New dns server on TCP: 0.0.0.0:53
2024-07-13 15:19:49     INFO    ldapsrv/ldapsrv.go:16   micro-net-hub/internal/ldapsrv.NewLdapServer    New Ldap server on: 0.0.0.0:1389
2024-07-13 15:19:49     INFO    ldapsrv/ldapsrv.go:33   micro-net-hub/internal/ldapsrv.NewLdapServerWithTotpVerify	New Ldap server With Totp Verify on: 0.0.0.0:1390
2024-07-13 15:19:49     INFO    server/server.go:57     micro-net-hub/internal/server.NewGinServer      New Gin server on: 0.0.0.0:9000

日志显示了监听 53/UDP -- DNS服务,1389/TCP -- LDAP服务,1390/TCP -- LDAP(密码加TOTP验证)服务,1812/UDP -- Radius服务,9000/TCP -- Micro-Net-Hub后台。

启动完成后,登录管理界面,创建角色、用户组和用户,准备后续登录 //远程办公网络接入//。

  • 创建用于 bind 的用户角色 (用户没有 bind 角色,不能被用于 LDAP Bind) role-created.png

  • 创建组 group-created.png

  • 创建用户 user-created.png

  • 创建完用户收到的邮件 user-email-received.png


2. //远程办公网络接入// 配置关联 Radius/LDAP service, 启动后测试。

2.1 Ocserv

我们开始一直使用 Ocserv 提供 //远程办公网络接入// 服务,主要通过修改服务器上配置文件完成关联。

使用 yum/apt 安装完 Ocserv 之后,会有 /etc/ocserv/etc/radcli 两个相关的配置目录自动创建。

修改以下配置文件。我贴出来了关键配置行。 Ocserv 使用 Radius 建立认证关联

  • /etc/radcli/servers
### "default-radius-secret" 是Micro-Net-Hub Radius 配置的默认密码。
micro-net-hub				default-radius-secret
  • /etc/radcli/radcli.conf
authserver 	micro-net-hub
servers		/etc/radcli/servers
  • /etc/ocserv/ocserv.conf
auth = "radius[config=/etc/radcli/radcli.conf,groupconfig=true]"

都配置完成后, 执行 systemctl start ocserv , 就配置成功了。

现在你就可以用一个已创建好的账户, 用 Anyconnect 客户端登录检测一下了。

密码是 Micro-Net-Hub 用户的密码直接跟上 TOTP 动态码。

比如:

用户名:example
密码: password
TOTPcode: 234567

Ocserv 使用 Radius 认证:
用户名: example
密码: password234567

2.2 Anylink

现在有个要求,我们希望 //远程办公网络接入// 提供的账户,可以针对不同的用户,下发不同的路由和 DNS。并方便管理。

Ocserv 可以实现上述需求,但是仍需要在配置文件上修改。

这个时候,有后台管理界面的 Anylink 实现,就极大程度的减轻了针对不同用户管理规则的烦恼。

说明:

  1. Anylink 可以使用 Radius 认证关联。
  2. Anylink 使用 LDAP 认证关联可以通过 LDAP Filter 进行分组。

为了实现统一管理用户,并且 //远程办公网络接入// 可以给不同用户下发不同路由/DNS 策略。

我们让 Micro-Net-Hub 把用户按需求分组, Anylink 按 LDAP 组进行 Filter 用户,并配置规则,就可以实现这个需求。

2.2.1 通过管理后台配置

anylink-ldap.png

到这里,您可能会有疑问,为什么不直接用 openldap 呢?

因为, 一般来说 //远程办公网络接入// 安全要求较高,登录密码加上 TOTP 验证是个不错的选择。

  • 截图中的配置, 密码是 用户的密码 password
  • 如果您修改 LDAP服务器地址 为 127.0.0.1:1390, 密码就是 用户的密码直接跟上 TOTP 动态码password234567 了。
2.2.2 最后也贴出一个 Radius 配置参考

anylink-radius.png


瑕疵

我自己实现的 LDAP 仅仅实现了 Bind 和 Search 方法,主要是为了认证,并且适配了 Anylink 的登录。

其余常用的开源工具, 如 Gitlab, Nexus 等已经测试过了,配置和测试结果都在这里: Micro-Net-Hub -- LDAP认证服务支持的开源工具

文中没有罗列的,如果要对接,可以参考已经测试过的先试一试,

还是不行的话,就是先用 Micro-Net-Hub 管理的 OpenLDAP, 或者留言给我。


Micro-Net-Hub 项目地址 https://github.com/bagechashu/micro-net-hub

最后,欢迎大家的批评和意见,谢谢啦