Я посмотрел бы на использование scponly, я подозреваю, что оно может использоваться для перенаправления портов, а не scp/sftp-only доступа. Это предназначается для ограничения пользователя во входе в систему или выполнении команд через ssh.
Другой фактор Вы, возможно, должны или хотите, использовать sshd в chroot'ed среде, вот некоторые инструкции относительно установки sftp использующий chroot. Необходимо смочь адаптировать их довольно легко.
Я надеюсь, что это помогает Вам найти свое решение.
Попробуйте реализовать остальную часть решения, игнорируя файл инициализации. Похоже, этот фрагмент сценария инициализации предназначен только для вашей защиты. Либо Debian не защищает вас таким образом, либо он выдаст вам сообщение об ошибке, когда вы попытаетесь загрузиться с ним, что, надеюсь, приведет вас в нужное место.
Я также был бы осторожен, чтобы IIRC Debian и ArchLinux имеют разные форматы для / etc / crypttab (сумасшедший, я знаю, но я перешел с Ubuntu на Arch пару лет назад и в конце концов решил использовать прямой bash, а не вмешиваться в crypttabs).
В моем / etc / crypttab у меня есть
# <target name> <source device> <key file> <options>
swap /dev/mapper/cswap /dev/random swap
Здесь / dev / mapper / cswap - это логический том, созданный LVM, который заботится о правильном назначении имен логических томов независимо от диска названия букв. Это также позволяет мне легко изменять размер раздела подкачки.
Каждый раз, когда cryptsetup воссоздает зашифрованный раздел подкачки при загрузке раз он сгенерирует для него новый UUID! Дох!
В / etc / crypttab используйте / dev / disk / by-id вместо / dev / disk / by-UUID для ссылки на раздел подкачки. Например, ваша запись / etc / fstab для свопа может быть
#<file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/cswap none swap sw 0 0
Тогда правильная соответствующая запись в / etc / crypttab будет примерно такой же, как
# <name> <device> <password> <options>
cswap /dev/disk/by-id/ata-SAMSUNG_SSD_830_Series_S0XYNEAC762041-part5 /dev/urandom swap,cipher=aes-cbc-essiv:sha256,size=256
. Обратите внимание, что указанное выше устройство упоминается как / dev / disk / by-id, который вы можете узнать для своего диска, набрав в интерфейсе командной строки следующее:
ls -lF /dev/disk/by-id
запустите ecryptfs-setup-swap или вручную:
Эта конфигурация использует случайно сгенерированные ключи при загрузке и не поддерживает гибернацию на жестком диске! Вы должны отключить гибернацию с помощью соответствующей утилиты DE Power Management Utility и установить для нее значение «Завершение работы при критической ошибке», чтобы избежать потери данных!
su root или sudo для каждой команды
] swapoff -a
lsblk
, пример: sda3 8: 3 0 8G 0 часть [SWAP]
dd if = / dev / zero bs = 1024000 of = / dev / sda <#>
пример: dd if = / dev / zero bs = 1024000 of = / dev / sda3
vim / etc / fstab
Замените старое устройство SWAP на имя сопоставителя crypttab: / dev / mapper / cswap
Старый UUID = d03f3d8e-7888-48a5-b3cc-41de8dbbcfdc swap swap по умолчанию 0 0
NEW
/ dev / mapper / cswap none swap pri = 1, по умолчанию 0 0
ls -lF / dev / disk / by-id
Пример: ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3 -> ../../sda3[12106 impressionvim / etc / crypttab
cswap / dev / disk / by-id / ata-HGST_HTS545050A7E680_TEKU3 / dev / swap-swap-part3 / dev-swap-swap-dev3 / dev-swap-swap / dev-swap cbc-essiv: sha256, size = 256
Перезагрузите компьютер
dmsetup -C info
Пример: cswap 253 0 L - w 2 1 0 CRYPT-PLAIN-cswap
lsblk
Пример
├─sda3 8: 3 0 8G 0, часть
│ └─cswap 253: 0 0 8G 0 crypt [SWAP]
cat / proc / swaps
пример: Имя файла Тип Размер Используемый приоритет / dev / dm-0 раздел 8385532 0-1
Чтобы выполнить замену зашифрованного файла в разделе LVM при использовании опции by-uuid
невозможно... на этапе загрузки initramfs
или на большинстве этапов загрузки systemd
.
Вот почему...
Или перейдите к разделу «Шаги», чтобы начать работу с столь же безопасным зашифрованным пространством подкачки LVM, которое создается на этапе обычной загрузки (для systemd, Debian 10).
Вы создали раздел LVM с именем lv_swap_encrypted
, используя
100% пространства vg_swap
VG следующим образом:
lvcreate -l 1000%VG -n lv_swap_encrypted vg_swap
таким образом, наша цель состоит в том, чтобы иметь следующую логическую схему:
/dev/sda3
LVM Physical Volume (PV)
/dev/mapper/dm-7
LVM Volume Group (VG)
/dev/vg_swap
LVM Logical Volume (LV)
/dev/vg_swap/lv_swap_encrypted
cryptsetup plain
/dev/mapper/swap_unencrypted
swap space
Взгляните на недавно созданный раздел LVM с именем vg_swap-lv_swap_encrypted
только для использования с свопом (или зашифрованным свопом):
# ./lsblk-uuid
NAME UUID MOUNTPOINT
sda
├─sda1
├─sda2 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /boot
├─sda3 XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXX
│ └─vg_swap-lv_swap_encrypted
└─sda4 XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXX
├─arca_v1-root XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /
└─arca_v1-spare
...
Обратите внимание, что для этого раздела vg_swap-lv_swap_encrypted
нет UUID?
Вы МОЖЕТЕ выполнить mkswap vg_swap-lv_swap_encrypted
что ЛВМ
и получить этот UUID, но тогда мы пропустим столь необходимый
часть шифрования, которую мы хотели.
ВНИМАНИЕ: Вы выполнили mkswap
? Затем сотрите его, выполнив:
dd if=/dev/urandom of=/dev/mapper/vg_swap-lv_swap_encrypted
Выполнение dmsetup info /dev/dm-7
показывает другой формат UUID:
LVM-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
Я уже пробовал вариант UUID=
с этим причудливым Значение LVM выше не будет работать в
второе поле /etc/crypttab
. Стоило мне перезагрузки здесь.
Примечание: X представляет собой VG UUID, а Y представляет собой LV UUID на языке LVM.
На этапе загрузки initramfs доступно не так много символических ссылок для использования со стадией загрузки. Мы расследуем какие пути устройств доступны для зашифрованного обмена.
Нет необходимости выполнять здесь update-initramfs
или какую-либо пересборку initfs.
В каталоге /dev
LVM создает несколько символических ссылок.
для каждого раздела LV (логического тома), который lvcreate
(или systemd-lvm2
во время загрузки) активируется.
На этапе загрузки initramfs активация LVM создает следующее ссылки на блочные и символические файлы:
/dev/dm-X
/dev/mapper/vg_swap-lv_swap_encrypted
/dev/vg_swap/lv_swap_encrypted
Во время обычной загрузки ядра ОС позаботится об остальном из
следующие ссылки. Не нужно расследовать, кем и где,
поскольку наше внимание сосредоточено на доступности ссылки для зашифрованного раздела подкачки ВО ВРЕМЯ initramfs
стадии загрузки.
/dev/block/254:X
/dev/254:X
/dev/vg_swap-lv_swap_encrypted
/dev/lv_swap_encrypted
/dev/dm-name-vg_swap-lv_swap_encrypted
/ DEV / диск / по-идентификатор / дм-UUID-LVM-XXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYY YYYYYYYYYYYYYYY
/ DEV / дм-UUID-LVM-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY YYYY
Двадцать перезагружается в 2 уровня запуска позже, я узнал, что это будет
никогда не будет возможным (во время загрузки initramfs
)
использовать mount by-uuid
, потому что каждый раз, когда своппер
записывает незашифрованные данные в первые пару блоков в
зашифрованный раздел, какой бы UUID он ни имел до записи зашифрованных данных
над ним теперь давно, давно нет.
Для обычного этапа после загрузки UUID можно использовать в cryptsetup
/cryptdisks_*
.
Давайте отойдем от физического и расширенного UUID раздела к взгляните на LVM UUID здесь: Управление LVM в значительной степени гарантирует, что каждый раздел LVM уникален.
ОПАСНО: Короче говоря, единственная опасность для вас заключается в повторном использовании того же раздела LVM для что-то еще, кроме обмена. Если да, то при следующей перезагрузке раздел снова преобразуется в пространство подкачки, и любой недавно установленные данные исчезли (просто радуйтесь, что это не старые и ценные данные).
Такая схема перехода по имени LVM VG/LV будет невосприимчивой к потере данных. вызванные добавлением, удалением и переразметкой жесткого диска, будь то это своп или файловая система.
В этом /etc/crypttab
примере:
swap_unencrypted /dev/mapper/vg_swap-lv_swap_encrypted /dev/random none
обмен пространством подкачки с использованием рандомизированного ключа на основе памяти И с использованием пути VG/LV, этот подход возьмет ваш существующий раздел подкачки и преобразует его в зашифрованный Тед подкачки пространства.
В основном, следующие шаги будут
/etc/crypttab
/etc/fstab
mkswap
)все для повторного шифрования свопа пробел сейчас и после каждой перезагрузки.
Чтобы использовать рандомизированный ключ, вы должны понимать, что функция гибернации больше не поддерживается.
Прежде чем продолжить, вам также следует отключить режим гибернации. Спящий режим использует пространство подкачки, а рандомизированные ключи эффективно делают предыдущий спящий режим совершенно непригодным для использования.
Примечание:мы ХОТИМ установить для физического или расширенного раздела SWAP, чтобы обмануть генератор systemd initramfs
и НЕ отключить часть SUSPEND/SLEEP.
В Debian вы можете выполнить:
systemctl mask hibernate.target hybrid-sleep.target
systemctl restart systemd-logind.service # or reboot if using Gnome/gdm3 display manager
Хорошая новость заключается в том, что аппаратная приостановка или спящий режим по-прежнему будут работать.
В этих шагах предполагается, что у вас есть физический или расширенный (а не LVM) раздел. для раздела подкачки уже.
Предположим, что /dev/sda
— это имя диска.
Предположим, что 3
— это номер раздела диска /dev/sda
, на котором находится подкачка.
на.
Выполните fdisk
и используйте параметр t
, чтобы переименовать Linux swap
в Linux LVM
введя 31
(или вы можете использовать L
для перечисления всех опций после запятой t
й.
# fdisk /dev/sda
Welcome to fdisk (util-linux 2.33.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): t
Partition number (1-4, default 4): 3
Partition type (type L to list all types): 31
Changed type of partition 'Linux swap' to 'Linux LVM'.
Command (m for help): w
The partition table has been altered.
Syncing disks.
Создать физический том для LVM, выполнив:
pvcreate /dev/sda3
Создать группу томов для LVM, выполнив:
vgcreate vg_swap /dev/sda3
Хорошая вещь в группе томов: что вы можете расширить свое пространство подкачки позже с другим физическим жестким диском.
Создать логический том для LVM, выполнив:
lvcreate -l 100%vg -n lv_swap_encrypted vg_swap
# Make the LVM create a special file under /dev/vg_swap/lv_swap_encrypted
lvchange -a y vg_swap
Теперь у нас есть доступный блочный файл /dev/dm-7
.
Вы обнаружите, что:
/etc/mapper/vg_swap-lv_swap_encrypted
/etc/vg_swap/lv_swap_encrypted
все указывает на один и тот же /dev/dm-7
.
Я рекомендую использовать /etc/mapper/vg_swap-lv_swap_encrypted
, потому что это
является постоянным местоположением, которое большинство из нас может ожидать.
Не многие знают, что здесь нужно искать это пользовательское имя группы томов LVM.
например /dev/vg_swap
. Некоторые другие (например, большинство BOFH), которые создают труднодоступные
/etc/mapper_other
(VG-имя mapper
), чтобы было сложнее искать
за.
Мы не будем использовать /dev/dm-7
, так как это может быть
dm-19
или другой, в зависимости от схемы вашего раздела.
Теперь у нас есть путь к диску, логическому диску, но еще не зашифрованному диску.
e со случайным ключом, указывающим на /dev/mapper/vg_swap-lv_swap_encrypted
.
Добавьте или измените следующую запись в /etc/crypttab
:
swap_unencrypted /dev/mapper/vg_swap-lv_swap_encrypted /dev/urandom swap,cipher=
aes-cbc-essiv:sha256,size=256
Затем активируйте шифрование и создайте еще одно устройство dm в /dev/mapper
блочное устройство:
Выберите одну из двух команд ниже:
# cryptsetup open /dev/mapper/vg_swap-lv_swap_encrypted \
swap_unencrypted
или
# cryptdisks_start swap_unencrypted
[ ok ] Starting crypto disk...swap_unencrypted (running)...done.
Была создана новая символическая ссылка, выполните lsblk
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 3.7T 0 disk
├─sda1 8:1 0 1M 0 part
├─sda2 8:2 0 381M 0 part /boot
├─sda3 8:3 0 15.3G 0 part
│ └─vg_swap-lv_swap_encrypted 254:7 0 15.3G 0 lvm
│ └─swap_unencrypted 254:8 0 15.3G 0 crypt [SWAP]
└─sda4 8:4 0 3.6T 0 part
├─arca_v1-root 254:0 0 186.3G 0 lvm /
... 11:0 1 1024M 0 rom
Вы можете посмотреть UUID для этого раздела LVM, но это бесполезно в данный момент.
Выполните lsblk -o имя,uuid,точка монтирования
# ~/bin/lsblk -o name,uuid,mountpoint
NAME UUID MOUNTPOINT
sda
├─sda1
├─sda2 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /boot
├─sda3 XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXX
│ └─vg_swap-lv_swap_encrypted
│ └─swap_unencrypted
└─sda4 XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXX
├─arca_v1-root XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /
...
Вновь созданное блочное устройство для /dev/mapper/swap_unencrypted
теперь существует.
Подробности о /dev/mapper/swap_unencrypted:
# cryptsetup status swap_unencrypted
/dev/mapper/swap_unencrypted is active.
type: PLAIN
cipher: aes-cbc-essiv:sha256
keysize: 256 bits
key location: dm-crypt
device: /dev/mapper/vg_swap-lv_swap_encrypted
sector size: 512
offset: 0 sectors
size: 31997952 sectors
mode: read/write
Создать пространство подкачки:
# mkswap /dev/mapper/swap_unencrypted
Setting up swapspace version 1, size = 15.3 GiB (16382947328 bytes)
no label, UUID=8cd89984-9892-4d62-a9ba-ecfb6476379c
Теперь обратите внимание на UUID, созданный для swap_unencrypted
? Это всегда будет
быть разными для каждой перезагрузки.
# ~/bin/lsblk-uuid
NAME UUID MOUNTPOINT
sda
├─sda1
├─sda2 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /boot
├─sda3 XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXX
│ └─vg_swap-lv_swap_encrypted
│ └─swap_unencrypted 8cd89984-9892-4d62-a9ba-ecfb6476379c [SWAP]
└─sda4 XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXX
├─arca_v1-root XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /
...
В /etc/fstab
измените или добавьте строку записи подкачки:
/etc/mapper/swap_unencrypted none swap sw 0 0
Затем выполните:
# swapon /dev/mapper/swap_unencrypted
Пространство подкачки теперь шифруется случайным ключом .
Поскольку dm-crypt использует UUID, предоставленный блочным устройством LVM LV, это
должен быть достаточным ответом на функционально защищенный зашифрованный
место подкачки.
UUID нельзя использовать для зашифрованного раздела подкачки из-за случайного характера зашифрованных данных, препятствующего идентификации такого раздела (своп, ext4, btfs).
UUID нельзя использовать для незашифрованного раздела подкачки, предоставляемого cryptsetup
, поскольку наша цель — обновлять пространство подкачки при каждой перезагрузке.
Вы можете использовать /dev/disk/by-id
.
Но LVM предлагает более чем достаточную защиту благодаря ВАШЕМУ уникальному соглашению об именах для каждого раздела VG и LV.
Вышеупомянутая установка предоставляет уникально зашифрованный локатор пространства подкачки, который будет зашифрован. но не восстанавливается после каждой перезагрузки (или, в редких случаях, перемонтирования LVM.)
Если вы используете таблицы разделов GPT , то, например, /dev/disk/by-partuuid/d1a59352-aa44-4748-85fc-4cf785702f99
— это стабильное имя устройства, которое не изменится даже при изменении содержимого.