基于 usbip 的用户之间的加密令牌的网络共享

由于信托服务立法的变化(“关于电子信托服务”乌克兰),企业需要多个部门来处理位于代币上的密钥(目前,硬件密钥的数量问题仍然悬而未决) )。

作为成本最低(免费)的工具,选择立刻就落在了 usbip。 由于该发布,Ubintu 18.04 上的服务器开始工作 驯服 USB/IP 并在多个闪存驱动器上成功测试(由于当时缺少令牌)。 当时除了垄断所有权(为用户保留)之外没有发现任何特殊问题。 显然,为了组织多个用户(至少两个)的访问,有必要及时划分他们的访问权限并强制他们轮流工作。

问题是:我怎样才能用最少的舞蹈来做到这一点,以便一切都适合每个人......

该部分很笨拙

基于 usbip 的用户之间的加密令牌的网络共享
选项XNUMX。 bat文件的几个快捷方式,分别是
a) 连接访问密钥。
b) 故意断开连接。

段落 ”б» 有争议,因此决定将密钥的使用时间定为 3 分钟。

usbip 客户端的特点是,启动后,它仍然挂在控制台中;在不中断控制台会话的情况下,您可以从客户端和服务器端“粗略地”关闭连接。

这对我们来说效果很好:

第一:连接 蝙蝠

usbip -a 172.16.12.26 4-1
msg * "Подпись/токен недоступны или заняты "

第二:关机 关闭蝙蝠

ping 127.0.0.1 -n 180
taskkill /IM usbip.exe /F

不依赖用户的意识,将脚本组合成 令牌.bat

on.bat | off.bat

会发生什么:所有文件都位于同一个文件夹中,由 token.bat 文件启动,如果连接关闭,用户会立即收到有关密钥不可用的消息,在另一种情况下,仅在 180 次 ping 后才会收到消息。 上述几行代码可以配备“@ECHO OFF”并将控制台方向设置为“> nul”,以免对用户造成太大冲击,但不需要运行测试。 在 USB 驱动器上的初始“运行”表明一切都是可预测的、可靠且清晰的。 此外,服务器端不需要任何操作。

基于 usbip 的用户之间的加密令牌的网络共享

当然,当直接使用令牌时,一切都不会按预期进行:通过设备管理器中的物理连接,令牌被注册为 2 个设备(WUDF 和智能卡),并且仅作为 WUDF 进行网络连接(尽管这足以请求 PIN 码)。

基于 usbip 的用户之间的加密令牌的网络共享

事实证明,残酷的“taskkill”并没有那么严重,在客户端关闭连接是有问题的,即使成功了,也不能保证在服务器上为他关闭。

牺牲了客户端上的所有控制台后,第二个脚本采用了以下形式:

ping 127.0.0.1 -n 180 > nul
taskkill /IM usbip.exe /F /T  > nul
ping 127.0.0.1 -n 10 > nul
taskkill /IM conhost.exe /F /T  > nul

尽管其有效性低于 50%,因为服务器顽固地继续认为连接已打开。

连接问题引发了升级服务器端的想法。

服务器部分

你所需要的:

  1. 断开非活动用户与服务的连接。
  2. 查看谁当前正在使用(或仍在借用)该代币。
  3. 查看令牌是否连接到计算机本身。

使用 crontab 和 apache 服务解决了这些问题。 重写我们感兴趣的点2和3的监控结果的状态的离散性表明文件系统可以位于ramdrive上。 已将行添加到 /etc/fstab

tmpfs   /ram_drive      tmpfs   defaults,nodev,size=64K         0       0

根目录下已经创建了一个包含脚本的脚本文件夹:卸载-挂载令牌usb_restart.sh

usbip unbind -b 1-2
sleep 2
usbip bind -b 1-2
sleep 2
usbip attach --remote=localhost --busid=1-2
sleep 2
usbip detach --port=00

获取活动设备列表 usblist_id.sh

usbip list -r 127.0.0.1 | grep ':' |awk -F ":" '{print $1}'| sed s/' '//g | grep -v "^$" > /ram_drive/usb_id.txt

获取活动 IP 列表(随后进行修改以显示用户 ID) usbip_client_ip.sh

netstat -an | grep :3240 | grep ESTABLISHED|awk '{print $5}'|cut -f1 -d":" > /ram_drive/usb_ip_cli.txt

crontab 本身看起来像这样:

*/5 * * * * /!script/usb_restart.sh > /dev/null 2>&1
* * * * * ( sleep 30 ; /!script/usblist_id.sh > /dev/null)
* * * * * (sleep 10 ; /!script/usbip_client_ip.sh > /dev/hull)

所以我们有:每 5 分钟就有一个新用户可以连接,无论谁使用了该令牌。 /ramdrive文件夹使用符号链接连接到http服务器,其中保存了2个文本文件,显示了usbip服务器的状态。

下一部分:“包装纸里的丑陋”

选项二。 至少用一些不那么令人生畏的界面来取悦用户。 令人困惑的是,用户拥有不同版本的 Windows,具有不同的框架、不同的权限,以及问题较少的方法 拉撒路 我没有找到它(我当然支持 C#,但在本例中不是)。 您可以从后台界面启动bat文件,最小化,但如果没有适当的测试,我个人的观点是:您需要将其可视化以收集用户的不满。

基于 usbip 的用户之间的加密令牌的网络共享

通过界面和软件解决了以下任务:

  1. 显示令牌当前是否忙碌。
  2. 首次启动时,初始设置涉及生成“正确的”bat 文件,这些文件实现与令牌服务器的会话的启动和中断。 在随后的启动中,使用密码执行“服务”模式。
  3. 检查与服务器的连接是否存在,结果是轮询服务器是否繁忙或显示有关问题的消息。 当通信恢复时,程序自动开始在正常模式下工作。

使用 WEB 服务器是通过使用附加的 fphttpclient 管理单元来实现的。


这里是客户端当前版本的链接

还有对文章主题的进一步考虑,以及对 VirtualHere 产品及其功能的部分最初热情......

来源: habr.com

添加评论