Jak zabezpieczyć pliki?

24

Jak zrobić, aby jakiś plik zawierający kluczowe dane był chroniony? Załóżmy na przykład, że mam kilka ważnych plików. Czy istnieje jakakolwiek metoda lub strategia, która zapewni lepszą ochronę tego rodzaju plików w systemie Ubuntu? Chcę nawet, aby niektóre pliki prosiły o hasło za każdym razem, gdy ktoś próbuje je otworzyć. Czy wpływa to na wersję Ubuntu pod względem zasad bezpieczeństwa? Czy mogę użyć dowolnego algorytmu szyfrowania na zewnątrz? Pozdrowienia.

Avani badheka
źródło
co rozumiesz przez ochronny? Chcesz utrudnić modyfikację lub usunięcie pliku?
Zanna,
w sensie ochronnym nikt nie może uzyskać do niego dostępu bez mojej zgody lub nawet łatwe usunięcie jakiejkolwiek modyfikacji. LUB potrzebuje hasła, aby je otworzyć w trudny sposób.
Avani badheka
masz na myśli po prostu chown rooti chmod go-rwx?
njzk2
Aby wymagać hasła, użyj zaszyfrowanego dysku lub pliku obrazu dysku, który nie jest automatycznie montowany.
Joshua

Odpowiedzi:

32

Najlepszą metodą jest chattr +i {file}. Ustawia to atrybut niezmienny, a następnie pliku nie można modyfikować, usuwać, zmieniać nazwy ani tworzyć twardego łącza przez nikogo, w tym użytkownika root.

Jedyną osobą, która może edytować plik, jest root. (S) musi to cofnąć, usuwając niezmienny bit: chattr -i {file}i może zrobić cokolwiek z plikiem. Ponowne ustawienie + i blokuje plik przed jakąkolwiek modyfikacją.

Nie zapobiegnie to jednak sformatowaniu partycji, na której plik jest przechowywany. Zapobiegnie to kradzieży pliku.


Możesz to zrobić nawet na pełnym punkcie montowania, jeśli chcesz:

chattr +i -R /discworld

sprawiłoby, że cały „świat dysku” i wszystko w nim pozostało niezmienne ( chattr -i -R /discworldaby go cofnąć;))


Rinzwind
źródło
Chciałbym zmodyfikować, usunąć, zmienić nazwę itp. Można to zrobić tylko przez rootowanie. Nawet jeśli root nie może się zmienić, będzie czytał tylko dla wszystkich, czego w moim przypadku nie chcę.
Avani badheka
@Avanibadheka root może zrobić chattr -i przed edycją, a następnie ponownie wykonać chattr + i, aby go zablokować.
Rinzwind,
1
Możesz także trwale (do ponownego uruchomienia) usunąć możliwość modyfikowania DOWOLNEGO niezmiennego bitu z systemu.
rackandboneman
Nie można go nawet skopiować? Czy plik cat> wyjście czy dd nie działa?
Konerak,
1
Niezmienny plik można skopiować (chyba że jest ustawiony jako chmod a-r). Zobacz mój dziennik terminali na przykład test.
Ruslan
18

Nie robiąc nic specjalnego, możesz utrudnić innym odczytanie, zmianę lub usunięcie pliku poprzez usunięcie uprawnień dla wszystkich oprócz właściciela. Ustaw root jako właściciela pliku i umieść go w katalogu, do którego tylko root ma dostęp ...

sudo mkdir /home/secret     #this directory will be owned by root, no need to chown
sudo chmod 700 /home/secret

przenieś ( sudo mv file /home/secret) swój plik tam i zrób

sudo chown root: /home/secret/file
sudo chmod 600 /home/secret/file

chmodi chownweź wiele argumentów: chmod 600 file1 file2lubchmod 600 file*

poza tym użyj szyfrowania ...

Zanna
źródło
3
Być może łatwiej to zrozumieć, jeśli używasz uprawnień do znaków zamiast ósemkowego. Byłoby to np. „Chmod go-rwx”, aby usunąć uprawnienia do odczytu, zapisu i wykonywania z grupy i innych. Zobacz stronę podręcznika użytkownika chmod.
jamesqf
12

Dość bezpiecznym sposobem ochrony dokumentów jest szyfrowanie (pod warunkiem zniszczenia oryginału i prawidłowego przechowywania zaszyfrowanej wersji).

Uprawnienia (jak sugerują inne odpowiedzi) można obejść (patrz to ).

Dlatego zalecam prawidłowe szyfrowanie pliku. Oto jak:

(Informacje na temat metody interfejsu graficznego znajdują się na końcu tej odpowiedzi)

Upewnij się, że masz gpgzainstalowany.

Na przykład, aby zaszyfrować plik o nazwie Important_File.txt, użyj

$ gpg -c Important_File.txt

Teraz wprowadź hasło (zostanie ono wykorzystane później, gdy będziesz musiał je przeczytać).

Otrzymasz teraz na przykład plik z nazwą oryginału i .gpgrozszerzeniem Important_File.txt.gpg.

Usuń oryginalny plik i zachowaj .gpgwersję. Pobieranie oryginalnego pliku z dysku może być łatwe, jeśli nie korzystasz z bezpiecznego shrednarzędzia (które nadal nie będzie działać na dyskach SSD lub kartach SD):

$ shred Important_File.txt

Teraz mamy tylko Important_File.txt.gpgz nami.

Kiedy tylko musisz to przeczytać, po prostu

$ gpg Important_File.txt.gpg

Następnie wprowadź hasło ustawione w pierwszym poleceniu. Otrzymasz oryginał Important_File.txt.

UWAGA : Chroni to tylko zawartość zaszyfrowanego .gpgpliku przed odczytaniem przez kogokolwiek (przy użyciu szyfrowania), ale każdy może go usunąć, skopiować lub przenieść ! W celu podstawowej ochrony przed tym użyj metod uprawnień innych odpowiedzi na zaszyfrowanym .gpgpliku.

Metoda interfejsu graficznego (GUI)

Zainstaluj aplikację Seahorse.

Następnie możesz to zrobić w aplikacji Pliki:

Zrzut ekranu z szyfrowaniem plików GNOME

UniversallyUniqueID
źródło
1
„Jedynym bezpiecznym sposobem ochrony dokumentów jest szyfrowanie” Nie zgadzam się. Akt szyfrowania nie jest bezpieczny, co czyni go bezpiecznym. To właśnie część społeczna. Jeśli utworzysz plik Readme obok uszkodzonego pliku za pomocą „to hasło: 11212324234”, możesz zaszyfrować wszystko, co chcesz zabezpieczyć.
Rinzwind,
1
@Rinzwind Edytowane. W każdym razie przy tym poziomie głupoty nic nie jest bezpieczne.
UniversallyUniqueID
Oczekiwany w oczekiwaniu ;-)
Rinzwind,
Zauważ, że odzyskanie oryginalnego niezaszyfrowanego pliku może być łatwe, jeśli usuniesz go ( rmlub usuniesz z menedżera plików). Trzeba by go zastąpić, aby było niemożliwe do odzyskania, np shred. Za pomocą . Jest to również bezużyteczne na dyskach SSD i dyskach flash ...
Byte Commander
@ByteCommander Dzięki, dodałem to do odpowiedzi.
UniversallyUniqueID
9

Wystarczy ustawić bardzo ścisłe uprawnienie 600, aby tylko właściciel mógł je czytać i zapisywać (jeśli potrzebujesz uprawnień do wykonywania, będzie to 700).

Można również zrobić to w formie graficznej - wystarczy kliknąć prawym przyciskiem myszy na pliku, wybierz Properties > Permissions > Seti ustaw wszystko ale z ownerboiska do niczego.

Zobacz zdjęcie jako przykład:

zdjęcie

dadexix86
źródło
Hej, myślę, że twoja odpowiedź skorzystałaby na zrzucie ekranu pokazującym, jak to zrobić za pomocą GUI.
grooveplex
Gotowe, dziękuję :) (ale mój system jest po włosku ...)
dadexix86,
@Zanna dobra obserwacja (zmodyfikowałem odpowiedź)
dadexix86,
8

Jeśli jesteś jednym użytkownikiem w systemie i nikt nie może uzyskać dostępu do twojego komputera bez twoich uprawnień, możesz po prostu zablokować dostęp za pomocą tego polecenia, zgodnie z odpowiedzią Zanny :

sudo chown root:root /my/secret/file.txt
sudo chmod 600 /my/secret/file.txt

W takim przypadku plik może być odczytany i / lub zapisany tylko przez rootużytkownika. Jest to uważane za „wystarczająco bezpieczne”, jeśli nikt nie może uruchomić komputera bez Twojej zgody lub podnieść dysku twardego. rootW tym przypadku korzystamy z użytkownika, ponieważ rootużytkownik zawsze może czytać pliki, nawet jeśli nie ma uprawnień. Korzystając z użytkownika root, wymuszamy dostęp tylko do jednego użytkownika.

Jeśli chcesz oznaczyć plik jako niezmienny w jakikolwiek sposób, kształt lub formę, możesz użyć iatrybutu, aby oznaczyć plik jako niezmienny . W takim przypadku uprawnienia do pliku są zablokowane i nie mogą być zmieniane w żadnych okolicznościach. W ten sposób możesz wykonać następujące polecenie, aby plik był niezmienny i chronić go przed usunięciem i zmianami uprawnień:

sudo chattr +i /my/secret/file.txt

Jeśli chcesz go zmienić, zastąpić +iz -iodblokować plik tymczasowo. Zobacz odpowiedź Rinzwinda, aby uzyskać bardziej szczegółowy obraz.

Teraz, jeśli inne osoby mają dostęp do twojego komputera ( sudodostęp zdalny lub jakikolwiek inny dostęp fizyczny), natychmiast się to rozpada. Osoba atakująca może użyć rootuprawnień do odczytania pliku, włożenia Live USB lub po prostu wyciągnięcia dysku twardego.

Dlatego musimy zaszyfrować plik. Ja osobiście wolę używać „pojemników z plikami”, abyś mógł w nich więcej trzymać i aby rozwijał się w miarę potrzeb. chattr +ijest nadal zalecane, aby plik nie został przypadkowo usunięty (lub zmieniony). Wreszcie, jeśli używasz zaszyfrowanego obrazu, możesz ustawić uprawnienia, aby umożliwić innym dostęp do bardzo ograniczonego zbioru plików, gdy dysk jest zamontowany, co czyni go dobrym dla serwera. Ten przewodnik był pierwotnie dostępny tutaj i został przystosowany do użytku tutaj.

Po pierwsze, chcesz utworzyć obraz dysku do własnego użytku. W tym przykładzie zrobimy to 5 GB.

dd if=/dev/zero bs=1M count=5000 of=~/NSA-Data-Dump-20161012.img

Następnie musimy zaszyfrować Twój obraz:

sudo cryptsetup luksFormat ~/NSA-Data-Dump-20161012.img

Tutaj będziesz mógł wybrać preferowane hasło szyfrowania. Po wykonaniu tej czynności musimy udostępnić surowe urządzenie blokowe:

sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device

W tej chwili mamy odszyfrowany kontener plików, ale nie ma systemu plików i jest tak dobry, jak bezużyteczny. Naprawmy to:

sudo mkfs.ext4 /dev/mapper/my-secret-device

Teraz potrzebujemy miejsca do zamontowania naszej nowej partycji. W tym przypadku zamierzam to zrobić /crypt. Jestem użytkownikiem 1000, więc ustawię moją partycję tak, aby pozwalała mi (i rootowi) tylko na odczyt / zapis z niej.

sudo mkdir /crypt
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000

Teraz mogę korzystać z mojego narzędzia do plików, aby nawigować do /crypti mogę tam przechowywać wszystkie moje wrażliwe pliki. Po zakończeniu będę musiał odmontować i ponownie zaszyfrować moją partycję.

sudo umount /crypt
sudo cryptsetup luksClose my-secret-device

Teraz ustawię odpowiednie partycje w moim pliku obrazu, tak aby tylko ja i root mogliśmy uzyskać do niego dostęp i że nie można go już zmienić.

chmod 400 ~/NSA-Data-Dump-20161012.img
sudo chattr +i ~/NSA-Data-Dump-20161012.img

Ilekroć chcę otworzyć ten plik do odczytu, po prostu muszę uruchomić te dwa polecenia, które z łatwością mogę uzyskać alias:

sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro

Moje zaszyfrowane dane będą dostępne pod adresem /crypti pozostaną tylko do odczytu i będą dostępne tylko dla mnie i root.

Jeśli chcę zmienić plik, muszę zmienić uprawnienia, a następnie zamontować:

sudo chattr -i ~/NSA-Data-Dump-20161012.img
chmod 700 ~/NSA-Data-Dump-20161012.img
sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro

Teraz musisz zachować ostrożność, ponieważ jeśli użytkownik ma root w swoim systemie, może zmodyfikować / zniszczyć zaszyfrowaną partycję, czyniąc ją bezużyteczną. Mogą również kraść dane z dysku, ale tylko wtedy, gdy jest on otwarty. Nie mogą jednak kraść danych ani nawet widzieć, że dane istnieją bez ich jawnego otwarcia. Dlatego Twoim obowiązkiem jest upewnić się, że twój system jest wystarczająco bezpieczny, aby żaden użytkownik root nie był online podczas otwierania zaszyfrowanego woluminu.


TL; DR :

  1. Wykonaj sklepienie:

    dd if=/dev/zero bs=1M count=5000 of=~/NSA-Data-Dump-20161012.img
    sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
    sudo mkfs.ext4 /dev/mapper/my-secret-device
    
  2. Wypełnij skarbiec:

    sudo mkdir /crypt
    sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000
    
  3. Zablokuj sklepienie:

    sudo umount /crypt
    sudo cryptsetup luksClose my-secret-device
    
  4. Zatrzymaj skarbiec:

    chmod 400 ~/NSA-Data-Dump-20161012.img
    sudo chattr +i ~/NSA-Data-Dump-20161012.img
    
  5. Otwórz skarbiec:

    sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
    sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro
    
Kaz Wolfe
źródło
Oczywiście użytkownik z dostępem do roota może również zastąpić cryptsetupcoś, co rejestruje wszelkie wprowadzone hasła ...
Hagen von Eitzen,
@HagenvonEitzen Tak, cóż, nie ma czegoś takiego jak „naprawdę bezpieczne” na komputerach. Jest punkt, w którym narysujesz linię.
Kaz Wolfe
7

Do szyfrowania katalogu można użyć szyfrowania .

Zasadniczo musisz utworzyć 2 katalogi, 1, w którym będą przechowywane zaszyfrowane dane, i 1, w którym uzyskasz dostęp do tych danych:

mkdir ~/.encrypted
mkdir ~/private

Następnie uruchom (musisz wykonać ten wiersz za każdym razem, gdy chcesz „zamontować” swój katalog):

encfs ~/.encrypted/ ~/private/

Jeśli nie wiesz więcej na ten temat, po prostu naciśnij, ENTERaby przejść do standardowych ustawień (pytany tylko za pierwszym razem).

Następnie wprowadź hasło, które zostanie zamontowane.

Twoje dane będą dostępne tylko dla twojego użytkownika bezpiecznie w ~/private/(możesz prawie zignorować ~/.encrypted)

Aby odmontować:

sudo umount ~/private/

lub

fusermount -u ~/private/

Proste.

lepe
źródło
3

Możesz szyfrować dane za pomocą cryptkeepera, który jest naprawdę bardzo dobrą aplikacją i może zapewnić bezpieczeństwo twojego pliku. Możesz go zainstalować za pomocą:

sudo apt-get update
sudo apt-get install cryptkeeper

Zasadniczo zaleca się zaszyfrowanie folderu o nazwie zaczynającej się od, . ponieważ umieszczenie go przed nazwą pliku spowoduje jego ukrycie. To mała sztuczka, ale działa.

Aby odkryć folder, użyj Ctrl+ hlub odwrotnie.

SHUBHRANEEL GHOSH
źródło
1
Dla jakiej aplikacji obowiązuje kombinacja klawiszy Ctrl + h? To na lspewno nie zadziała .
Melebius
Ctrl-H działa przynajmniej na Nautilusa (i jego widelce, jak Nemo). Co do innych menedżerów plików, nie mogę powiedzieć. Podczas używania lsmożesz użyć -aprzełącznika, aby wyświetlić wszystkie (tj. W tym ukryte) pliki.
s3lph