Jak skonfigurować zaszyfrowany plik wymiany w systemie Linux?

15

2017 OSTRZEŻENIE! Akceptowana odpowiedź wydaje się działać, ale w przypadku ostatnich jąder odkryłem, że system zawiesi się, jak tylko zacznie się zamieniać. Jeśli spróbujesz użyć zaszyfrowanego pliku wymiany, upewnij się, że faktycznie zamienia poprawnie. Długo zajęło mi ustalenie, dlaczego mój system blokuje się bez wyraźnego powodu. Wróciłem do korzystania z zaszyfrowanej partycji wymiany, która działa poprawnie.


Jak skonfigurować zaszyfrowany plik wymiany (nie partycję) w systemie Linux? Czy to w ogóle możliwe? Wszystkie przewodniki, które znalazłem, mówią o zaszyfrowanych partycjach wymiany, ale nie mam partycji wymiany i wolałbym nie partycjonować dysku.

Nie potrzebuję obsługi zawieszenia na dysk, więc chciałbym użyć losowego klucza przy każdym uruchomieniu.

Już używam woluminu hostowanego przez pliki TrueCrypt dla moich danych, ale nie chcę umieszczać wymiany w tym woluminie. Nie mam zamiaru używać TrueCrypt dla pliku wymiany, jeśli istnieje lepsze rozwiązanie.

Używam Arch Linux z domyślnym jądrem, jeśli to ma znaczenie.

cjm
źródło
Jaki byłby tego sens? Musiałby zostać odszyfrowany podczas używania i byłby pusty, gdy nie będzie używany.
tkbx
1
Gdy szukasz encrypted swapfilepierwszego wyniku, prowadzi do raylinux.blogspot.de/2011/01/…
ott--
@ott, mimo że w tytule jest napisane „plik wymiany”, jeśli czytasz wskazówki w tym poście, wyraźnie opisują partycję wymiany.
cjm
@tkbx, chodzi o to, aby uniemożliwić komuś odzyskanie poufnych danych z pliku wymiany po wyłączeniu komputera. (Lub ktoś nie był w stanie odgadnąć mojego hasła, więc restartuje się na płycie CD itp.)
cjm
2
@tkbx, nie wierzę w to. Wymagałoby to zapisania gigabajtów danych za każdym razem, gdy wyłączasz komputer. Dane w pliku wymiany nie są używane podczas ponownego uruchamiania, ale to nie znaczy, że są usuwane z dysku.
cjm

Odpowiedzi:

14

Rzeczywiście strona opisuje konfigurowanie partycji, ale jest podobna do pliku wymiany:

dd if=/dev/urandom of=swapfile.crypt bs=1M count=64
loop=$(losetup -f)
losetup ${loop} swapfile.crypt
cryptsetup open --type plain --key-file /dev/urandom ${loop} swapfile
mkswap /dev/mapper/swapfile
swapon /dev/mapper/swapfile

Wynik:

# swapon -s
Filename                                Type            Size    Used    Priority
/dev/mapper/swap0                       partition       4000176 0       -1
/dev/mapper/swap1                       partition       2000084 0       -2
/dev/mapper/swapfile                    partition       65528   0       -3

swap0 i swap1 są prawdziwymi partycjami.

ott--
źródło
loop-AES.README mówi w rozdziale 7.1: „File backed pętle nie mogą być wykorzystywane do wymiany.” Czy to nieprawda (czy tylko prawda w przypadku pętli AES)?
cjm
To bez mapera urządzeń.
ott--
Zmieniłem twoje polecenie cryptsetup, aby openzamiast niego używać create(które według strony podręcznika jest przestarzałe) i użyć losowego klucza zamiast pytania o hasło. Wygląda na to że działa.
cjm
Wydaje się, że to nie utrzymuje się przy ponownym uruchomieniu: „swapon: nie można otworzyć / dev / mapper / swapfile: brak takiego pliku lub katalogu”
therobyouknow 1'18
6

Ta konfiguracja używa losowo generowanych kluczy podczas rozruchu i nie będzie obsługiwać hibernacji na dysku twardym! Powinieneś wyłączyć hibernację za pomocą narzędzia szacowania DE Power Management Utility i ustawić ją na Shutdown on Critical, aby uniknąć utraty danych!

Pamiętaj, aby uruchomić sudo -slub suprzed uruchomieniem następujących.

  1. Wyłącz zamianę:

    # swapoff -a
    
  2. Znajdź istniejącą partycję wymiany

    # lsblk
    

    Otrzymasz coś takiego:

    sda3    8:3    0     8G  0 part [SWAP]
    
  3. Zastąp Old Swap

    # dd if=/dev/zero bs=1024000 of=/dev/sda<#>
    

    na przykład:

    # dd if=/dev/zero bs=1024000 of=/dev/sda3
    
  4. fstab Ustawiać

    # vim /etc/fstab
    

    Zamień stare urządzenie SWAP na nazwę mapera crypttab: /dev/mapper/cswap

    #<file system>      <mount point>   <type>  <options>   <dump>  <pass>
    /dev/mapper/cswap   none            swap    pri=1,defaults  0   0
    
  5. Konfiguracja szyfrowania

    # ls -lF /dev/disk/by-id
    

    Na przykład:

    ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3 -> ../../sda3
    
    # vim /etc/crypttab
    
    # <name>    <device>                            <password>  <options>
      cswap     /dev/disk/by-id/ata-HGST_HTS545050A7E680_TEK55D4F0BU3GV-part3   /dev/urandom    swap,cipher=aes-cbc-essiv:sha256,size=256
    
  6. Active Encrypted Swap

    # reboot
    
  7. Zweryfikuj szyfrowane operacje zamiany

    Na przykład:

    # dmsetup -C info 
    cswap      253   0 L--w    2    1      0 CRYPT-PLAIN-cswap  
    # lsblk
    ├─sda3                8:3    0     8G  0 part  
    │ └─cswap             253:0    0     8G  0 crypt [SWAP]
    # cat /proc/swaps 
    Filename                Type        Size    Used    Priority
    /dev/dm-0               partition   8385532 0       -1
    
Timothy Butterworth
źródło
1

Jeśli używasz dd if=/dev/zero of=/swapfile bs=8G count=1, a następnie mkswap /swapfilei swapon /swapfile, powinieneś mieć działający plik wymiany w głównym systemie plików. (używamy, ddaby upewnić się, że nie ma dziur w pliku wymiany)

Pozwala to uniknąć bałaganu w urządzeniach pętli i / lub crypttabie i po prostu umieszcza plik wymiany w już zaszyfrowanym systemie plików. (Zakładamy, że używasz szyfrowania dla całego dysku tutaj. Wpisz /swapfileparametr ze ścieżką do zaszyfrowanego katalogu, jeśli jest on gdzie indziej)

Zobacz man mkswapi man swaponwięcej informacji.

Mio Rin
źródło
Próbowałem utworzyć taki plik wymiany w moim zaszyfrowanym katalogu domowym w ten sposób, i
zawiesił
Czy katalog domowy jest odblokowany podczas uruchamiania systemu lub po zalogowaniu? Jeśli odblokowuje się tylko podczas logowania, nie możesz mieć tam pliku wymiany. Zamiana musi zostać odblokowana i udostępniona podczas uruchamiania systemu. Poza tym nie chcesz rzeczy systemowych w katalogu domowym użytkownika. To zarezerwowane dla rzeczy użytkownika.
Mio Rin