TPS*_*TPS 4 monitoring usb-drive
我必须为我们的互联网服务器设置一个监控系统,以监控安装和卸载哪些 USB 闪存驱动器(笔式驱动器)以及何时。(这是为了避免误用,并捕获哪些未经授权的设备已连接/已连接。)
是否有任何方法可以监控闪存驱动器信息,例如:a)序列号,b)制造商,c)型号,d)容量 e)标签 f)安装/卸载时间等,并存储它,以查看有关它的历史记录?
我知道有很多命令可以监控当前安装的 USB 设备。喜欢lsusb,lshw。但是我如何存储这些信息。
嗯,我知道没有现成的软件。但是您可以编写自己的脚本,该脚本会在从 USB 端口插入 | 删除 Pendrive 时启动。如果您将此脚本添加到/etc/udev/rules/99-local.rules以下内容,则该脚本将由 udev 运行:
ACTION=="add|remove", SUBSYSTEM=="block", KERNEL=="sd*", RUN+="/usr/local/bin/usb-add.sh"
Run Code Online (Sandbox Code Playgroud)
然后在此脚本中,您将拥有以下环境变量:
ACTION=add (or remove)
DEVLINKS='/dev/disk/by-id/usb-TDK_LoR_TF10_0703293903BE2444-0:0 /dev/disk/by-path/pci-0000:00:16.2-usb-0:1.1:1.0-scsi-0:0:0:0'
DEVNAME=/dev/sdf
DEVPATH=/devices/pci0000:00/0000:00:16.2/usb7/7-1/7-1.1/7-1.1:1.0/host14/target14:0:0/14:0:0:0/block/sdf
DEVTYPE=disk ? this is important to check in script
ID_BUS=usb ? this is important to check in script
ID_FS_TYPE=
ID_INSTANCE=0:0
ID_MODEL=TF10 ? model
ID_MODEL_ENC='TF10\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'
ID_MODEL_ID=070a
ID_PART_TABLE_TYPE=dos
ID_PART_TABLE_UUID=686bc5da
ID_PATH=pci-0000:00:16.2-usb-0:1.1:1.0-scsi-0:0:0:0
ID_PATH_TAG=pci-0000_00_16_2-usb-0_1_1_1_0-scsi-0_0_0_0
ID_REVISION=PMAP
ID_SERIAL=TDK_LoR_TF10_0703293903BE2444-0:0
ID_SERIAL_SHORT=0703293903BE2444 ? serial number
ID_TYPE=disk
ID_USB_DRIVER=usb-storage
ID_USB_INTERFACES=:080650:
ID_USB_INTERFACE_NUM=00
ID_VENDOR=TDK_LoR ? vendor
ID_VENDOR_ENC='TDK\x20LoR\x20'
ID_VENDOR_ID=0718
Run Code Online (Sandbox Code Playgroud)
您可以使用以下方法检查随身碟:
fdisk -l ${DEVNAME}
Run Code Online (Sandbox Code Playgroud)
获取容量和分区布局。并做各种各样的事情。您可以将信息存储在文件或数据库中。一切都取决于你。如果您愿意,您甚至可以通过发送 SCSI STOP UNIT 并从系统中移除驱动器来拒绝对该设备的访问。
检查${ID_BUS}以仅检查 USB 设备也很重要。检查 很重要,${DEVTYPE}因为脚本也将被调用为 USB 设备上的每个分区:
DEVLINKS='/dev/disk/by-id/usb-TDK_LoR_TF10_0703293903BE2444-0:0-part1 /dev/disk/by-label/BACKUPS /dev/disk/by-path/pci-0000:00:16.2-usb-0:1.1:1.0-scsi-0:0:0:0-part1 /dev/disk/by-uuid/0FAA-E0EB'
DEVNAME=/dev/sdf1
DEVPATH=/devices/pci0000:00/0000:00:16.2/usb7/7-1/7-1.1/7-1.1:1.0/host18/target18:0:0/18:0:0:0/block/sdf/sdf1
DEVTYPE=partition
ID_BUS=usb
ID_FS_LABEL=BACKUPS ? filesystem label
ID_FS_LABEL_ENC=BACKUPS
ID_FS_TYPE=vfat
ID_FS_USAGE=filesystem
ID_FS_UUID=0FAA-E0EB
ID_FS_UUID_ENC=0FAA-E0EB
ID_FS_VERSION=FAT32
ID_INSTANCE=0:0
ID_MODEL=TF10
ID_MODEL_ENC='TF10\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20'
ID_MODEL_ID=070a
ID_PART_ENTRY_DISK=8:80
ID_PART_ENTRY_NUMBER=1
ID_PART_ENTRY_OFFSET=2048
ID_PART_ENTRY_SCHEME=dos
ID_PART_ENTRY_SIZE=15104000 ? size ;)
ID_PART_ENTRY_TYPE=0xc
ID_PART_ENTRY_UUID=686bc5da-01
ID_PART_TABLE_TYPE=dos
ID_PART_TABLE_UUID=686bc5da
ID_PATH=pci-0000:00:16.2-usb-0:1.1:1.0-scsi-0:0:0:0
ID_PATH_TAG=pci-0000_00_16_2-usb-0_1_1_1_0-scsi-0_0_0_0
ID_REVISION=PMAP
ID_SERIAL=TDK_LoR_TF10_0703293903BE2444-0:0
ID_SERIAL_SHORT=0703293903BE2444
ID_TYPE=disk
ID_USB_DRIVER=usb-storage
ID_USB_INTERFACES=:080650:
ID_USB_INTERFACE_NUM=00
ID_VENDOR=TDK_LoR
ID_VENDOR_ENC='TDK\x20LoR\x20'
ID_VENDOR_ID=0718
Run Code Online (Sandbox Code Playgroud)
也许在${DEVTYPE}=disk存储有关所有分区的信息时限制访问是一个好主意– ${DEVTYPE}=partition。
HTH,干杯