Самоуничтожение виртуальной машины Linux с доступом только по SSH

Вот awkодин -вкладыш.

awk '/^abc/ {prev = $0; prevabc = "true"}; /^xyz/ {if (prevabc == "true") {print prev; prevabc = "false" } ; print}' file.txt

Пояснение

  • /^abc/ {prev = $0; prevabc = "true"};:Если строка начинается с abc, не печатайте ее, а вместо этого сохраните значение строки в переменной prevи укажите, что эта строка начинается с abc, сохранив trueв переменной prevabc.
  • /^xyz/ {if (prevabc == "true") {print prev; prevabc = "false" } ; print}:Если строка начинается с xyz, выполните следующие действия.
    • if (prevabc == "true") {print prev; prevabc = "false" }:Если предыдущая строка начиналась сabc(из-за prevabc == "true"), то напечатайте предыдущую строку prevи сбросьте prevabcна false.
    • print:Так как эта строка начинается с xyz, выведите и эту строку.
0
19.03.2020, 11:40
1 ответ

Основная идея

  1. Создайте RAM-диск --или tmpfs
  2. Установите busybox со статической привязкой на электронный диск.
  3. Создайте узлы разработки для ваших дисков и /dev/null и т.п. на RAM-диске.
  4. pivot_rootна RAM-диск.
  5. execоболочка busybox.
  6. killчто-либо еще, работающее на машине, препятствующее следующему шагу. Возможно, вам придется также поместить ssh-сервер на электронный диск или использовать что-то вроде busybox nc -l -l -p1234 -e busybox sh, чтобы предоставить вам альтернативный доступ.
  7. Размонтировать «настоящие» диски.
  8. используйте команду busybox ddдля очистки «настоящих» дисков.

Обратите внимание, что эта строка busybox не дает вам «терминал», а только оболочку, так что многие вещи выглядят странно. И если вы используете telnetдля подключения к нему, это становится еще более странным. В частности, вы получаете возврат каретки перед каждым переводом строки, поэтому ввод pwdне работает, но последующее добавление пробела работает. Я рекомендую использовать ncили busybox ncв качестве клиента.

Проблема

Вы не можете убить init и остаться безнаказанным. Вы можете или не можете размонтировать диски, убив все, что началось с этого диска.

Я думаю, что есть две альтернативы.

  1. Измените сценарии загрузки, чтобы настроить туннель или выполнить очистку диска за вас. Существуют наборы инструментов для очистки диска, у которых может быть версия, которую можно комбинировать с модулями вашего ядра, чтобы сделать это позже.
  2. Попробуйте стереть диски, не размонтируя их. Если вы это сделаете, убедитесь, что вы poweroff -fn.
2
28.04.2021, 23:20

Теги

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