如何自动将纯加密 USB 闪存驱动器安装到我的 OpenWRT 路由器?

如何自动将纯加密 USB 闪存驱动器安装到我的 OpenWRT 路由器?

我刚刚使用密钥文件加密了我的外部硬盘驱动器,并将其安装到我的路由器。问题是,每次重新启动我都必须手动重新创建映射并再次安装它。

OpenWRT的文档似乎有很多要说的自动挂载普通硬盘,但我没有看到太多关于自动安装普通加密硬盘的信息。 Google 建议使用/etc/crypttab,这在我的 OpenWRT 系统上似乎不存在。

如何自动安装明文加密的外部设备?

答案1

我删除了之前的答案,因为它不充分。

警告:我在 openwrt 的 virtualbox 映像上尝试了此解决方案(姿态调整(12.9,r36088)),可能在路由器上略有不同。

我假设密钥文件是 /root/keyfile 并且使用的密码是 aes-xts-plain。您必须根据您的设置更改这些值。

如果你愿意,我可以告诉你如何在 openwrt 上启用 luks 扩展。

假设你的系统已经支持 cryptsetup 和所有各种密码,你必须在 hotplug 级别上操作,因为 openwrt 的 cryptosetup 实现似乎不支持 /etc/crypttab (可能应该重新编译启动映像)

安装热插拔支持

root@OpenWrt:~# opkg install block-mount

打开/etc/hotplug.d/usb/10-usb,在我的系统中该文件如下所示:

#!/bin/sh

# Copyright (C) 2009 OpenWrt.org


case "$ACTION" in
        add)
                # update LEDs
                ;;                     
        remove)            
                # update LEDs
                ;;           
esac 

我已经编辑了该文件:

#!/bin/sh

# Copyright (C) 2009 OpenWrt.org


case "$ACTION" in
        add)
                # update LEDs
                exec logger "PRD:" ${PRODUCT};
                ;;                     
        remove)            
                # update LEDs
                ;;           
esac 

在插入光盘之前,从连接到路由器的终端跟踪日志:

root@OpenWrt:~# logread -f|grep PRD

连接 USB 磁盘,您应该看到类似以下的行:

Oct 29 10:43:48 OpenWrt user.notice root: PRD: 13fe/3600/100

记下PRD后面的字符串:它用于识别要解密的磁盘

现在,热插拔机制首先调用位于 /etc/hotplug.d/usb 中的脚本,然后调用 /etc/hotplug.d/block 中的 40-mount 脚本。设备和挂载点的数据通过环境变量传递,但我无法理解如何与 40-mount 脚本通信,我们想要使用环境变量挂载加密分区。所以我选择了不太优雅但仍然实用的。我修改了文件/etc/hotplug.d/usb/10-usb

#!/bin/sh

# Copyright (C) 2009 OpenWrt.org
PRODID="13fe/3600/100"
case "$ACTION" in
    add)
        # update LEDs
        if [ "${PRODUCT}" = "${PRODID}" ];
        then
            touch /tmp/crypt
        fi
        ;;
    remove)
        # update LEDs
                if [ "${PRODUCT}" = "${PRODID}" ];      
                then            
                        rm /tmp/crypt
            fi           

        ;;
esac    

当插入加密光盘时,将创建文件 /tmp/cryp,当取出光盘时,该文件将被删除。所以我编辑了文件/etc/hotplug.d/block/40-mount:

case "$ACTION" in
        add)

### AUTO DECRYPT
            if [ -e /tmp/crypt ];
               then
                  /usr/sbin/cryptsetup -c aes-xts-plain create -d /root/keyfile cryptousb /dev/$device;
                  device="mapper/cryptousb"
                  mountpoint="/mnt/cryptousb"
                  sleep 10
            fi
#### END AUTO DECRYPT

和:

remove)                          
### AUTO DECRYPT               
          if [ -e /tmp/crypt ];
             then           
                /usr/sbin/cryptsetup remove cryptousb;
                device="mapper/cryptousb"
                mountpoint="/mnt/cryptousb"
                sleep 10                 
        rm /tmp/crypt
          fi

#### END AUTO DECRYPT

当插入光盘并识别其 PRODID 时,在安装之前打开并映射加密卷,然后更改设备名称和安装点。睡眠是等待密码设置过程完成所必需的。当您卸载卷时,/dev/mapper 中的映射将被删除。

希望这对你有用

相关内容