Jak ustawić Linux Ditribution na autodestrukcję (aby usunąć wszystko z partycji systemowej) za pomocą skryptu

11

Pomogę ułatwić kurs wykorzystujący licencjonowane oprogramowanie. Oprogramowanie jest dość drogie i pozwala tylko na ograniczoną liczbę jednoczesnych instalacji, więc zrobię to, aby zainstalować jedną instancję na zaszyfrowanym dysku wirtualnym z zainstalowanym Ubuntu (lub innym rodzajem linuksa). Aby zmniejszyć ryzyko niepotrzebnego piractwa, zamierzam zaplanować (używając crona) skrypt autodestrukcji, który będzie uruchamiany natychmiast po ostatnim dniu kursu. (Lub najpóźniej podczas pierwszego uruchomienia po ostatnim dniu).

Mimo że uwielbiam projekty freeware i open source (i ogólnie pozyskiwanie tłumu), mam również zdrowy szacunek dla oprogramowania komercyjnego oraz czasu i wysiłku, który twórcy poświęcili na opracowanie dobrego produktu - nie chcą ostatecznie niechcący przyczynić się do piractwa ich krwi, potu i łez.

Byłbym wdzięczny za pomysł, jak zaimplementować ten skrypt autodestrukcji na komputerze z systemem Linux.

techtechmo
źródło
2
Nie jestem pewien, dlaczego zostało to odrzucone. To uzasadnione pytanie o uzasadnionej wartości.
BinaryMisfit,
Miłe pytanie. Dziękujemy za zainteresowanie programistami. +1
D'Arvit
Nie jestem pewien, czy to naprawdę przyczyni się do osiągnięcia twoich celów. Jeśli planują ukraść oprogramowanie, prawdopodobnie będą chcieli pobrać kopię maszyny wirtualnej podczas kursu. Będą w stanie zepsuć to w wolnym czasie. Zawsze mogą uruchomić maszynę wirtualną z płyty CD na żywo, aby sprawdzić, co się stało.
Michael Kohne,
Dziękuję wszystkim, którzy udzielili odpowiedzi, jestem wdzięczny za wkład. :)
techtechmo

Odpowiedzi:

3

Jak wspomniano kilka razy, usunięcie zaszyfrowanego obrazu powinno wystarczyć. Innym podejściem byłoby zainstalowanie aplikacji na własnej partycji, a następnie wyczyszczenie jej za pomocą dd.

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

Spowoduje to zastąpienie wszystkiego wartością zero, co wystarczy, aby usunąć dane poza odzyskiwaniem.

OliverS
źródło
Aby to wyjaśnić, po uruchomieniu skryptu system usunie się z (w tym przypadku wirtualnej) partycji i nie ma anulowania? Brzmi jak to, co zamierzam zrobić. :) Co jeśli, na przykład, powiem maszynie wirtualnej, aby wyłączyła się na kilka sekund, po wykonaniu polecenia? Chociaż system może być dostępny, teoretycznie nadal byłoby możliwe zamontowanie nieusuniętych części dysku, prawda? Być może pierwszym krokiem skryptu powinno być najpierw usunięcie oprogramowania, a następnie uruchomienie skryptu autodestrukcji?
techtechmo
Cóż, jeśli użytkownik jest zalogowany jako użytkownik z odpowiednimi uprawnieniami ORAZ jeśli wie, co się dzieje, teoretycznie mógłby zabić polecenie „dd”, ale nie wcześniej, niż spowoduje to duże szkody (tablice partycji są na przykład w pobliżu przedniej części dysku).
Michael Kohne,
6

Aby zniszczyć wszystko, wydaje się to trochę przesadą, po prostu usuń / odinstaluj swój program.

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

A może wdrożysz normalny serwer licencyjny, z którym program musi się skontaktować, zanim będzie mógł się uruchomić?


Aktualizacja : Jako otwarte pytanie, czy planujesz zniszczyć dane użytkowników, a także swój program? Czy dane użytkowników są przechowywane gdzie indziej?

I może użytkownik powinien otrzymać powiadomienie o nagware, że planujesz zniszczyć wszystko! Coś jak

- „To oprogramowanie ulegnie samozniszczeniu, jeśli nie zapłacisz więcej pieniędzy, pozostało Ci X dni”.

Jako użytkownik byłbym naprawdę zdenerwowany, jeśli po prostu zniszczyłeś coś na moim komputerze, nawet nie mówiąc mi, że to się stanie (więc przynajmniej mam szansę wpłynąć na wynik).

Szkoda, że ​​wszyscy płacący klienci nienawidzą cię.

Johan
źródło
Jak wspomniałem, oprogramowanie będzie znajdować się na wirtualnym dysku stworzonym specjalnie na potrzeby kursu. Jest to izolowane środowisko bez plików użytkownika, które w szczególności ma na celu umożliwienie uczestnikom szkolenia z użyciem oprogramowania. Jedną rzeczą, przed którą chcę się zabezpieczyć, jest to, że ktoś kopiuje ten dysk wirtualny na, powiedzmy, dysk USB i ostatecznie piruje oprogramowanie wewnątrz. Dlatego celowo chcę ustawić system na samozniszczenie zaraz po kursie, aby zminimalizować szansę na coś takiego. Twoje obawy są oczywiście ważne, dziękuję za udostępnienie. :)
techtechmo
Nawiasem mówiąc, nie kupują oni w żaden sposób licencji oprogramowania, które będzie używane. Biorąc pod uwagę, jak notoryczne piractwo występuje w mojej części świata, wolałbym przygotowywać się na najgorsze, ale pracując dla najlepszych. :)
techtechmo
2

Trochę stary, ale w porządku. Zgodnie z tą konfiguracją wolałbym raczej po prostu zaszyfrować system plików VM, a podczas sesji (zakładając, że są one połączone w sieć) zdalnie logowałbyś się. Gdyby skopiowali maszynę wirtualną, musieliby brutalnie wymusić hasło, a nie to, co powinni zrobić Twoi użytkownicy :)

tzn. jeśli nie masz nic przeciwko, możesz zaszyfrować punkt montowania: Uwaga: ten system ochrony jest najwyraźniej nielegalny w niektórych krajach / stanach? (dobrze w USA, ale wydaje się, że jesteś z Anglii?):

Konfigurowanie zaszyfrowanego, zabezpieczonego hasłem montażu:

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>

Teraz zainstaluj / przenieś swój program do / theprogram

(Za każdym razem, gdy chcesz uzyskać dostęp / ponownie wykonać program):

montowanie

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

odmontowywanie

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

Po zakończeniu spraw, aby folder oprogramowania wyglądał jak plik losowych bajtów.

Możesz także upewnić się, że konta użytkowników, których używają podczas sesji maszyny wirtualnej, nie mają suuprawnień na wypadek, gdyby skopiowali całość.

mike-delft
źródło
0

Nie wiem, jaka jest twoja konfiguracja, ale jeśli możesz wymagać od użytkowników dostępu do Internetu, możesz zastosować inną taktykę - spróbuj załadować oprogramowanie przez połączenie sieciowe, ilekroć go uruchomią. Jest to opłacalne i zależy od tego, czy możesz wydać jakiś identyfikator dla poszczególnych użytkowników. Miałbyś kod pośredniczący na maszynie wirtualnej, a kod ten automatycznie zamontowałby zdalny serwer i uruchomiłby z niego plik binarny. Nic, z czym nie mogliby sobie poradzić przy odrobinie pracy, ale byłoby to co najmniej trudniejsze niż obejście autodestrukcji.

Alternatywnie możesz pozwolić zdalnemu serwerowi odpowiedzieć kluczami i zachować zaszyfrowaną wersję programu na dysku - kod pośredniczący wysyła zapytanie do serwera o klucze, odszyfrowuje i uruchamia program, usuwając odpowiednio odszyfrowane pliki binarne. Byłoby to również trudniejsze do obejścia, ale ponownie wymaga unikalnych identyfikatorów użytkowników (co może być niemożliwe dla Ciebie).

Michael Kohne
źródło
Fajny pomysł, ale myślę, że coś takiego wymagałoby doświadczenia i wygody przy wdrażaniu systemu, który opisałeś - niestety nie mam tego luksusu. :) Praktyczne z oprogramowaniem zostanie wykonane w pokoju, w którym będę ułatwiać, ale nie chcę patrzeć przez ramię. Twój komentarz do pytania jest dokładnie tym, czego oczekuję - nawet jeśli pobiorą kopię maszyny wirtualnej, następnym razem, gdy ją uruchomią, maszyna wirtualna powinna wyczyścić się ze wszystkiego. (Oczywiście nie będę nawet wspominał o istnieniu skryptu
wymazywania
Problem polega na tym, że gdy zobaczą, jak maszyna wirtualna sama się niszczy, po prostu pobiorą kolejną kopię z pamięci USB, uruchomią maszynę wirtualną z płyty CD na żywo i zaczną się rozglądać, dopóki nie dowiedzą się, co robi, aby się zabić. Tak długo, jak czujesz się komfortowo z faktem, że wystarczająco zmotywowany użytkownik może go obejść, jesteś złoty. Następnie wystarczy zaktualizować obraz maszyny wirtualnej przed każdą klasą ...
Michael Kohne,
Będę szyfrował system plików VM podczas instalacji (mam nadzieję, że to będzie moja pierwsza próba, aby to zrobić), więc to kolejny sposób na zniechęcenie potencjalnych złodziei. Jak już powiedziałem, wszystkie te kłopoty prawdopodobnie byłyby przesadzone - przeciętny użytkownik może nie sądzić, że warto się tym przejmować. Ale tak naprawdę wolałbym zakładać najgorsze - piractwo jest tutaj normą. Oprogramowanie, którego będę używać, pochodzi z systemu Windows: dobrze, że działa w systemie Linux za pośrednictwem Wine. Wolę wszystko przygotować na Linuksie, bo szczerze mówiąc, piractwo oprogramowania będzie znacznie trudniejsze. Dzięki jeszcze raz!
techtechmo