Заменить раздел «Лук» с разделом EXT4 с той же содержимым

Вы разрешаете только icmp типов 0,3,8,11. Попробуйте удалить их и разрешить все с

iptables -A INPUT -i eth0 -p icmp -j ACCEPT

Если это сработает, то начните сначала и настройте типы icmp, которые вы хотите пропускать.

2
28.09.2018, 20:40
2 ответа

Это чрезвычайно опасная операция, и ее следует выполнять с большой осторожностью.

На самом упрощенном уровне существует утилита под названием cryptsetup -reencrypt , которая позволяет выполнять эту операцию. Он явно вызывает на своей справочной странице:

   WARNING: The cryptsetup-reencrypt program is not resistant to
   hardware or kernel failures during reencryption (you can lose your
   data in this case).

   ALWAYS BE SURE YOU HAVE RELIABLE BACKUP BEFORE USING THIS TOOL.
   The reencryption can be temporarily suspended (by TERM signal or by
   using ctrl+c) but you need to retain temporary files named
   LUKS-<uuid>.[log|org|new].  LUKS device is unavailable until
   reencryption is finished though.

Согласно разделу «Примеры» справочной страницы:

   Remove LUKS encryption completely

          cryptsetup-reencrypt /dev/sdb1 --decrypt

Скорее всего, это нужно будет сделать из «живой» среды (, что означает полностью работающую эфемерную среду Linux, подобную той, которая предоставляется Fedora Live или Ubuntu Live .

В качестве альтернативы этому рабочему процессу вы также можете выбрать более явный путь резервного копирования данных, удаления раздела и его повторного создания. В Arch Linux есть отличная документация по этому рабочему процессу, а также дополнительные шаги по устранению неполадок :

.

https://wiki.archlinux.org/index.php/Removing_System_Encryption

Опять же,следует подчеркнуть, что это нетривиальная операция, и резервное копирование всех данных имеет первостепенное значение в случае катастрофического сбоя.

2
27.01.2020, 22:08

Как говорит @BrianRedbeard, для этого есть инструмент(cryptsetup-reencrypt). Внимательно прочитайте соответствующую документацию. Это опасная операция. (В -место преобразования данных всегда есть. Один неверный шаг, и он превратится в дым.)

Просто для удовольствия, ручной процесс:

На самом деле это довольно просто (и не работает так в другом направлении! ). Вы можете просто скопировать его вот так:

pv < /dev/mapper/cryptsdx1 > /dev/sdx1

Но так как мы читаем и пишем на одно и то же физическое устройство, может быть быстрее сделать с ddи большим размером блока (при условии, что у вас достаточно оперативной памяти ). На жестком диске это, вероятно, быстрее, поскольку он выполняет меньше операций поиска, а поиск выполняется медленно.

dd status=progress bs=1G iflag=fullblock if=/dev/mapper/cryptsdx1 of=/dev/sdx1

Но сначала вам следует сделать резервную копию заголовка LUKS, поскольку заголовок LUKS — это первое, что вы перезапишете в этом процессе, и вы не сможете возобновить работу, даже если захотите.

cryptsetup luksHeaderBackup /dev/sdx1 --header-backup-file myluksheader.backup

Убедитесь, что эта резервная копия в безопасности, а не только в оперативной памяти среды LiveCD.

Устройство LUKS в основном такое:

| LUKS HEADER | ENCRYPTED DATA |

а после пв/дд должно получиться вот так:

| DECRYPTED DATA | FREE SPACE |

Таким образом, заголовок LUKS находится в начале устройства и имеет размер около 2 МиБ (. Раньше он составлял 1 МиБ плюс несколько секторов ). И поскольку мы избавляемся от него, в конце устройства будет свободное место, и вы сможете увеличить файловую систему на 2 МБ. Уии!

Соответственно, сами данные находятся по смещению (обычно 2МиБ, сверьтесь сcryptsetup luksDump). Это смещение важно здесь -оно означает, что данные должны быть не только расшифрованы, но и сдвинуты -начало расшифровки появится там, где изначально был сохранен заголовок LUKS.

Это также означает, что на протяжении всего процесса будет существовать перекрывающаяся область, которая существует как в расшифрованной, так и в зашифрованной формах. Это полезно в случае сбоя машины и необходимости найти точку возобновления -.


Итак, что делать в случае сбоя?

Сначала вам нужно повторно -создать шифровальное устройство, используя резервную копию:

cryptsetup --header myluksheader.backup luksOpen /dev/sdx1 cryptsdx1

Затем найдите точку перекрытия:

skip=0 # or skip=X if you're sure at least X bytes were copied
step=$((1024*1024)) # 1MiB, use 512KiB for old 1MiB headers (offset / 2)
while ! cmp --bytes=$step /dev/sdx1 /dev/mapper/cryptsdx1 $skip $skip
do
    skip=$(($skip+$step))
done

cmp --bytes=$step /dev/sdx1 /dev/mapper/cryptsdx1 $skip $skip && echo $skip || echo fail

Наконец возобновить:

dd status=progress bs=1G iflag=fullblock,skip_bytes oflag=seek_bytes \
   skip=$skip seek=$skip if=/dev/mapper/cryptsdx1 of=/dev/sdx1

Прежде чем использовать какой-либо метод в вашей реальной файловой системе, стоит выполнить пробный запуск на несвязанном разделе (или даже просто на петлевом устройстве ), просто чтобы убедиться, что он все еще работает.

Например, здесь я не принял во внимание новый формат LUKS2, который в своей базовой форме работает так же, как (заголовок 4МиБ ), но поддерживает такие странные вещи, как множественные сегменты данных и еще много чего. Поэтому, если вы используете такие функции, это немного сложнее (и я не думаю, что cryptsetup-reencryptеще не охватывает это ).

1
27.01.2020, 22:08

Теги

Похожие вопросы