Как настроить Linux Ditribution для самоуничтожения (чтобы стереть все с системного раздела) через скрипт


11

Я буду помогать облегчить курс, который использует лицензионное программное обеспечение. Программное обеспечение несколько дорогое и допускает лишь ограниченное количество одновременных установок, поэтому я сделаю только одну копию на зашифрованном виртуальном диске с установленной Ubuntu (или другой разновидностью linux). Просто чтобы уменьшить вероятность появления ненужного пиратства, я планирую (используя cron) скрипт самоуничтожения запускаться сразу после последнего дня курса. (Или, самое позднее, при первой загрузке после последнего дня.)

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

Буду признателен за любую идею о том, как реализовать этот скрипт самоуничтожения на компьютере с Linux.


2
Я не уверен, почему это было понижено. Это законный вопрос с законной ценностью.
BinaryMisfit

Хороший вопрос Спасибо за внимание разработчиков программного обеспечения. +1
Д'Арвит

Я не уверен, что это действительно поможет вашим целям. Если они планируют украсть программное обеспечение, они, вероятно, собираются получить копию виртуальной машины во время курса. Они, они смогут ввернуть это на досуге. Они всегда могут загрузить виртуальную машину с live-cd, чтобы проверить, что вы сделали.
Майкл Кохн

Спасибо всем, кто дал ответ, я благодарен за вклад. :)
techtechmo

Ответы:


3

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

dd if=/dev/zero of=/dev/TARGETPARTITION bs=1M

Это заменит все с нуля, что достаточно, чтобы удалить данные без возможности восстановления.


Так что просто для пояснения: после выполнения скрипта система удалит себя из (в данном случае виртуального) раздела, и отмены нет? Это похоже на то, что я собираюсь сделать. :) Что, если, например, я скажу виртуальной машине отключить питание всего через несколько секунд, когда команда выполнится? Хотя система может быть доступной, теоретически все же можно будет смонтировать неотрезанные части диска, верно? Возможно, первым шагом сценария должно быть удаление программного обеспечения, а затем запуск сценария самоуничтожения?
techtechmo

Что ж, если пользователь вошел в систему как пользователь с соответствующими разрешениями, И если он знает, что происходит, то теоретически он может убить команду 'dd', но не раньше, чем она нанесет большой ущерб (таблицы разделов). например, в передней части диска).
Майкл Кохн

6

Чтобы уничтожить все, кажется немного излишним, как насчет просто удалить / удалить вашу программу.

rm -rf /path/to/your/program/ 

Или как насчет того, чтобы внедрить обычный сервер лицензирования, с которым программа должна связаться, прежде чем она сможет запуститься?


Обновление : как открытый вопрос, планируете ли вы уничтожить данные пользователей, а также вашу программу? Или данные пользователей хранятся в другом месте?

И, возможно, пользователь должен получить какое-то ворчливое уведомление, что вы планируете уничтожить все! Что-то вроде

- «Это программное обеспечение самоуничтожится, если вы не заплатите больше денег, у вас осталось X дней».

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

Это немного плохо для вашей компании, если все ваши платящие клиенты будут ненавидеть вас.


Как я уже упоминал, программное обеспечение будет находиться на виртуальном диске, созданном специально для курса. Это изолированная среда без каких-либо пользовательских файлов, предназначенная, в частности, для того, чтобы участники могли практиковаться в обучении с программным обеспечением. Одна вещь, от которой я хочу защититься, - это кто-то копирует этот виртуальный диск, скажем, на USB-накопитель и в конечном итоге копирует программное обеспечение внутри. Таким образом, я намеренно хочу настроить систему на самоуничтожение сразу после курса, чтобы минимизировать вероятность того, что что-то подобное произойдет. Ваша проблема, конечно, действительна, спасибо, что поделились. :)
techtechmo

Кстати, они никоим образом не покупают лицензию на программное обеспечение, которое будет использоваться. И, учитывая, насколько пресловутое пиратство в моей части мира, я предпочел бы подготовиться, предполагая худшее, но работая на лучшее. :)
techtechmo

2

Немного стар, но хорошо. В соответствии с этой настройкой, я бы предпочел просто зашифровать файловую систему ВМ, и во время сеансов (при условии, что они подключены к сети) вы могли бы удаленно войти в систему. Если бы они скопировали виртуальную машину, им пришлось бы взломать пароль, вряд ли, что ваши пользователи должны делать :)

например, если вы не возражаете, вы можете зашифровать точку монтирования: Примечание: эта система защиты является незаконной, по-видимому, в некоторых странах / штатах? (хорошо в США, но вы, кажется, из Англии?)

Настройка зашифрованного пароля:

dd if=/dev/urandom of=/home/user/virtualfolder bs=16065b count=100  
modprobe loop  
modprobe cryptoloop  
modprobe aes  
losetup -e aes /dev/loop1 ./virtualfolder  
password: <enter your password here which you don't show to the users>  
mkreiserfs /dev/loop1  
mkdir /theprogram  
mount -o loop,encryption=aes,acl ./virtualdrive /theprogram  
password:<enter the same passy>

Теперь установите / переместите вашу программу в / theprogram

(Каждый раз, когда вы хотите получить доступ к / программе снова, сделайте):

монтаж

mount -o loop,encryption=aes,acl ./virtualdrive /theprogram  
password:<enter the same passy>

размонтирования

umount /theprogram  
losetup -d /dev/loop1  
rmmod aes  
rmmod cryptoloop  
rmmod loop 

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

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


0

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

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


Хорошая идея, но я думаю, что что-то вроде этого потребует некоторого опыта и комфорта при внедрении системы, которую вы описали - к сожалению, у меня нет такой роскоши. :) Практика с программным обеспечением будет сделана в комнате, где я буду помогать, однако я не хочу продолжать смотреть через плечо. Ваш комментарий в этом вопросе именно то, что я ожидаю - даже если они получат копию виртуальной машины, при следующей загрузке виртуальная машина должна очистить себя от всего. (Я, конечно, даже не упомяну о существовании сценария «стереть все».)
techtechmo

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

Я буду зашифровывать файловую систему VM при установке (надеюсь, это будет моей первой попыткой сделать это), так что это еще один способ отговорить потенциальных воров. Как я уже сказал, все эти проблемы, скорее всего, будут излишними - средний пользователь может и не подумать, что стоит потрудиться продолжать ковыряться. Но я действительно предпочел бы предположить худшее в любом случае - пиратство является нормой здесь. Программное обеспечение, которое я буду использовать, является родным для Windows: хорошо, что оно работает на Linux через Wine. И я предпочел бы подготовить все для Linux, потому что, честно говоря, будет намного сложнее пиратское программное обеспечение оттуда. Еще раз спасибо!
techtechmo
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.