Chia sẻ mạng mã thông báo mật mã giữa những người dùng dựa trên usbip

Liên quan đến những thay đổi trong luật liên quan đến dịch vụ ủy thác (“Giới thiệu về dịch vụ ủy thác điện tử” Ukraine), doanh nghiệp cần có một số bộ phận làm việc với các khóa nằm trên mã thông báo (hiện tại, câu hỏi về số lượng khóa phần cứng vẫn còn bỏ ngỏ ).

Là một công cụ có chi phí thấp nhất (miễn phí), sự lựa chọn ngay lập tức thuộc về usbip. Máy chủ trên Ubintu 18.04 bắt đầu hoạt động nhờ xuất bản Thuần hóa USB/IP và đã thử nghiệm thành công trên một số ổ flash (do lúc đó thiếu token). Không có vấn đề đặc biệt nào ngoài quyền sở hữu độc quyền (đặt chỗ cho người dùng) được xác định tại thời điểm đó. Rõ ràng là để tổ chức quyền truy cập cho nhiều người dùng (ít nhất là hai người, bắt đầu), cần phải phân chia quyền truy cập của họ theo thời gian và buộc họ phải làm việc lần lượt.

Câu hỏi đặt ra là: Làm thế nào tôi có thể làm điều đó với ít thời gian khiêu vũ nhất để mọi thứ đều phù hợp với tất cả mọi người...

Một phần vụng về

Chia sẻ mạng mã thông báo mật mã giữa những người dùng dựa trên usbip
lựa chọn 1. Một số phím tắt đến tập tin bat, cụ thể là
a) Kết nối khóa truy cập.
b) Cố tình ngắt kết nối.

Đoạn văn "б» gây tranh cãi nên quyết định dành thời gian làm việc với phím là 3 phút.

Điểm đặc biệt của máy khách usbip là sau khi khởi chạy, nó vẫn bị treo trong bảng điều khiển; mà không làm gián đoạn phiên bảng điều khiển, bạn có thể đóng kết nối “đại khái” từ phía máy khách và cả từ phía máy chủ.

Đây là những gì đã làm việc tốt cho chúng tôi:

đầu tiên: kết nối trên.bat

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

thứ hai: tắt máy tắt.bat

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

Không phụ thuộc vào ý thức của người dùng, các tập lệnh được kết hợp thành token.bat

on.bat | off.bat

Điều gì xảy ra: tất cả các tệp đều nằm trong cùng một thư mục, được khởi chạy bởi tệp token.bat, nếu kết nối bị đóng, người dùng sẽ ngay lập tức nhận được thông báo về việc khóa không khả dụng, trong một trường hợp khác, chỉ sau 180 ping. Các dòng mã trên có thể được trang bị “@ECHO OFF” và hướng bảng điều khiển về “> nul” để không gây sốc cho người dùng quá nhiều nhưng không cần thiết phải chạy thử nghiệm. Lần “chạy” đầu tiên trên ổ USB cho thấy mọi thứ đều có thể dự đoán được, đáng tin cậy và rõ ràng. Hơn nữa, không cần thao tác nào từ phía máy chủ.

Chia sẻ mạng mã thông báo mật mã giữa những người dùng dựa trên usbip

Đương nhiên, khi làm việc trực tiếp với mã thông báo, mọi thứ không diễn ra như mong đợi: với kết nối vật lý trong trình quản lý thiết bị, mã thông báo được đăng ký dưới dạng 2 thiết bị (WUDF và thẻ thông minh) và với kết nối mạng chỉ là WUDF (mặc dù điều này là đủ để yêu cầu mã PIN).

Chia sẻ mạng mã thông báo mật mã giữa những người dùng dựa trên usbip

Nó cũng chỉ ra rằng "taskkill" tàn bạo không quá nghiêm trọng và việc đóng kết nối trên máy khách là một vấn đề và ngay cả khi thành công, nó cũng không đảm bảo việc đóng kết nối trên máy chủ cho nó.

Đã hy sinh tất cả bảng điều khiển trên máy khách, tập lệnh thứ hai có dạng:

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

mặc dù hiệu quả của nó thấp hơn 50%, vì máy chủ vẫn ngoan cố tiếp tục coi kết nối đã mở.

Sự cố kết nối dẫn đến suy nghĩ về việc nâng cấp phía máy chủ.

Phần máy chủ

Những gì bạn cần:

  1. Ngắt kết nối người dùng không hoạt động khỏi dịch vụ.
  2. Xem ai hiện đang sử dụng (hoặc vẫn mượn) mã thông báo.
  3. Xem liệu mã thông báo có được kết nối với chính máy tính hay không.

Những vấn đề này đã được giải quyết bằng cách sử dụng dịch vụ crontab và apache. Bản chất riêng biệt của việc viết lại trạng thái kết quả giám sát của điểm 2 và 3 mà chúng tôi quan tâm chỉ ra rằng hệ thống tệp có thể được đặt trên ramdrive. Đã thêm dòng vào/etc/fstab

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

Một thư mục tập lệnh chứa các tập lệnh đã được tạo trong thư mục gốc: unmounting-mounting the token 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

lấy danh sách các thiết bị đang hoạt động 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

lấy danh sách IP đang hoạt động (với sửa đổi tiếp theo để hiển thị ID người dùng) usbip_client_ip.sh

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

Bản thân crontab trông như thế này:

*/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)

Vì vậy, chúng tôi có: cứ sau 5 phút lại có một người dùng mới có thể kết nối, bất kể ai đã làm việc với mã thông báo. Thư mục /ramdrive được kết nối với máy chủ http bằng liên kết tượng trưng, ​​​​trong đó có 2 tệp văn bản được lưu, hiển thị trạng thái của máy chủ usbip.

Phần tiếp theo: “Xấu xí trong lớp giấy gói”

Phương án II. Để làm hài lòng người dùng một chút với ít nhất một số giao diện ít đáng sợ hơn. Bối rối trước thực tế là người dùng có các phiên bản Windows khác nhau với các khung khác nhau, các quyền khác nhau, cách tiếp cận ít vấn đề hơn so với Lazarus Tôi không tìm thấy nó (tất nhiên là tôi học C#, nhưng không phải trong trường hợp này). Bạn có thể khởi chạy các tệp bat từ giao diện ở chế độ nền, được thu nhỏ, nhưng nếu không kiểm tra thích hợp, cá nhân tôi có quan điểm: bạn cần hình dung nó để thu thập sự không hài lòng của người dùng.

Chia sẻ mạng mã thông báo mật mã giữa những người dùng dựa trên usbip

Các tác vụ sau được giải quyết bằng giao diện và phần mềm:

  1. Hiển thị xem mã thông báo hiện có đang bận hay không.
  2. Ở lần khởi chạy đầu tiên, quá trình thiết lập ban đầu bao gồm việc tạo các tệp bat “chính xác” để triển khai việc khởi chạy và gián đoạn phiên với máy chủ mã thông báo. Ở những lần khởi động tiếp theo, hãy triển khai chế độ “dịch vụ” bằng mật khẩu.
  3. Kiểm tra sự hiện diện của kết nối với máy chủ, nhờ đó nó sẽ thăm dò xem nó có bận hay hiển thị thông báo về sự cố hay không. Khi liên lạc được nối lại, chương trình sẽ tự động bắt đầu hoạt động ở chế độ bình thường.

Làm việc với máy chủ WEB được triển khai bằng cách sử dụng phần đính kèm fphttpclient bổ sung.


đây sẽ là liên kết đến phiên bản hiện tại của máy khách

cũng có những cân nhắc sâu hơn về chủ đề của bài viết, cũng như một phần sự nhiệt tình ban đầu đối với sản phẩm VirtualHere với các tính năng của nó...

Nguồn: www.habr.com

Thêm một lời nhận xét