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 root
użytkownika. Jest to uważane za „wystarczająco bezpieczne”, jeśli nikt nie może uruchomić komputera bez Twojej zgody lub podnieść dysku twardego. root
W tym przypadku korzystamy z użytkownika, ponieważ root
uż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ć i
atrybutu, 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ć +i
z -i
odblokować plik tymczasowo. Zobacz odpowiedź Rinzwinda, aby uzyskać bardziej szczegółowy obraz.
Teraz, jeśli inne osoby mają dostęp do twojego komputera ( sudo
dostęp zdalny lub jakikolwiek inny dostęp fizyczny), natychmiast się to rozpada. Osoba atakująca może użyć root
uprawnień 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 +i
jest 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 /crypt
i 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 /crypt
i 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 :
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
Wypełnij skarbiec:
sudo mkdir /crypt
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000
Zablokuj sklepienie:
sudo umount /crypt
sudo cryptsetup luksClose my-secret-device
Zatrzymaj skarbiec:
chmod 400 ~/NSA-Data-Dump-20161012.img
sudo chattr +i ~/NSA-Data-Dump-20161012.img
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