Płyty należy przechowywać w różnych (fizycznie) miejscach. Zabezpieczmy się w ten sposób przed utratą danych w wyniku np.: kradzieży lub pożaru. Dane należy zabezpieczyć też przed odczytaniem przez niepowołane osoby (np.: złodzieja). Ponieważ na serwerach używam głównie FreeBSD to sposób wykonywania kopii zapasowych dostosowałem do tego systemu. Zresztą nie ma problemu, by napęd BR fizycznie podłączony do stacji roboczej pracującej pod Debianem był dostępny dla FreeBSD, gdzie przeprowadzimy proces deszyfracji - po czym ponownie możemy już odszyfrowane dane udostępnić do stacji roboczej pracującej pod Debianem :-D
Napęd możemy udostępnić jako plik lub urządzenie:
iSCSI form Debian (target) to FreeBSD (initiator)
Wybrałem następujący sposób szyfrowania danych:
1) Przygotowuję plik o rozmiarze pozwalającym na pełne wykorzystanie posiadanego napędu i płyt.
2) Montuję ww. plik jako urządzenie (dysk) i szyfruję go całego.
3) Na zamontowany, szyfrowany w "locie", wirtualny dyski (plik) nagrywam dane.
4) Tak przygotowany, duży plik nagrywam na nośniki.
Brzmi to bardziej skomplikowanie, niż jest w rzeczywistości, szczególnie, że tego samego mechanizmu używam do szyfrowania fizycznych dysków. Dzięki temu mam opanowany i przetestowany jeden mechanizm szyfrowania.
Przygotowanie pliku na dane:
Przygotowujemy plik, który będzie emulować dysk. Do inicjującego zapełnienia dysku, dla bezpieczeństwa powinniśmy użyć urządzenia: /dev/random, a dla przyspieszenia tego procesu możemy użyć: /dev/zero
dd if=/dev/random of=/data_file/br00.disk bs=1m count=23800
dd if=/dev/zero of=/data_file/br00.disk bs=1m count=23800
Parametry "bs" i "count" dobrałem tak by były łatwe w użyciu. Dla optymalizacji procesu można użyć dd na przykład tak (użyte wartości powinny zależeć od użytego dysku):
dd if=/dev/random of=/data_file/br00.disk bs=64k count=380800
dd if=/dev/random of=/data_file/br00.disk bs=128k count=190400
Rozmiar (bs * count) dobrałem do jednowarstwowych płyt Blu-ray, których używam.
Montujemy plik jako urządzenie /dev/md1 (ja używam /dev/md0 do obsługi swap - tak, 32MB swap)
mdconfig -a -t vnode -f /data_file/br00.disk -u 1
Zdemontować możemy poleceniem:
mdconfig -d -u 1
Sprawdzić zamontowane urządzenia możemy poleceniem:
mdconfig -lv
Do szyfrowania używam mojego ulubionego i sprawdzonego GELI.
mdconfig -d -u 1
Sprawdzić zamontowane urządzenia możemy poleceniem:
mdconfig -lv
Zaszyfrowanie danych w pliku
Do szyfrowania używam mojego ulubionego i sprawdzonego GELI.
Polecenia, które mogą uszkodzić dane wgrane na plikowy "dysk" poprzedziłem potrójmy znakiem #. Takie polecenia używa sie tylko do inicjalizacji pliku.
Poniższym poleceniem tworzymy klucz, który później zabezpieczymy frazą. Klucz powinniśmy przechowywać w bezpiecznym miejscu, np.: szyfrowanym dysku lub szyfrowanym USB. Należy pamiętać o kopii tego klucza!!! (też bezpiecznie przechowywanej)
Inicjalizujemy szyfrowanie wskazując klucz. Zostaniemy poproszeni o podanie frazy zabezpieczającej. Fraza powinna być długa - ja zalecam stosowanie od 20 do 40 znaków. Otrzymamy nowe urządzenie /dev/md1.eli (inicjalizacja oznacza również wykonanie polecenia "attach"). Wybrałem szyfrowanie AES z kluczem 256bitowym, a rozmiar "komórki danych" ustawiłem na 4096 bajtów. W ten sposób przyspieszam deszyfrowanie, choć odczyt takiej porcji danych będzie wymagać odczytu dwóch sektorów dysku BR. Ja przechowuję duże pliki (zdjęcia, zmontowane filmy, archiwa), dlatego dążę do rozsądnej maksymalizacji porcji danych.
### geli init -s 4096 -e AES -l 256 -K /etc/keys/br2014.key /dev/md1
Otrzymamy komunikat o wykonaniu kopii metadanych. Ten plik warto też zarchiwizować.
Metadata backup can be found in /var/backups/md1.eli and
can be restored with the following command:
# geli restore /var/backups/md1.eli /dev/md1
Do późniejszego montowania szyfrowanego urządzenia użyjemy polecenia:
geli attach -k /etc/keys/br2014.key /dev/md1
Do demontowania szyfrowanego urządzenia użyjemy:
geli detach /dev/md1
Poniższym poleceniem sformatujemy dysk::
### newfs -O 2 -m 0 -S 4096 /dev/md1.eli
Ustanawiamy ponownie spójną z poprzednimi poleceniami jednostkę danych i nie rezerwujemy przestrzeni dyskowej. Możemy założyć system plików FreeBSD: (bsdlabel -w md1 auto), lecz nie musimy - samo formatowanie UFS wystarczy:
Tak dysk montujemy
mount /dev/md1.eli /data_crypto
Podsumowanie:
Polecenie przygotowujące:
### dd if=/dev/random of=/data_file/br00.disk bs=1m count=23800mdconfig -a -t vnode -f /data_file/br00.disk -u 1
### dd if=/dev/random of=/etc/keys/br2014.key bs=64 count=1
### geli init -s 4096 -e AES -l 256 -K /etc/keys/br2014.key /dev/md1
### newfs -O 2 -m 0 -S 4096 /dev/md1.eli
mount /dev/md1.eli /data_crypto
Polecenia służące do użytkowania szyfrowanego pliku:
mdconfig -a -t vnode -f /data_file/br00.disk -u 1geli attach -k /etc/keys/br2014.key /dev/md1
mount /dev/md1.eli /data_crypto
Polecenia służące do odmontowania zasobów:
umount /dev/md1.eli
geli detach /dev/md1
Update: 2014.09.10
Create: 2014.09.10
mdconfig -d -u 1
Update: 2014.09.10
Create: 2014.09.10
Brak komentarzy:
Prześlij komentarz