poniedziałek, 1 grudnia 2014

Cygwin + rsync - bezpieczna i szybka archiwizacja danych

Wstęp W jednym z poprzednich artykułów opisałem oprogramowanie Cygwin, które doskonale emuluje środowisku Linux w systemach Microsoft. Cygwin oferuje wiele rozwiązań, umożliwiając korzystanie z profesjonalnych narzędzi, takich jak rsync. Przed przejściem do opisania procedury zabezpieczania lokalnych plików z systemu Windows na zdalnej maszynie z systemem Linux, wyjaśnię podstawowe, proste zagadnienia związane z programem rsync.

Zaczynamy 


Utwórzmy testowy katalog danych
mlattari@thor1 ~ $ mkdir dane; touch dane/plik

A teraz skopiujmy utworzony katalog oraz plik do katalogu archiwum:
mlattari@thor1 ~ $ rsync -avr dane archiwum
sending incremental file list created directory archiwum dane/ dane/plik sent 111 bytes received 35 bytes 292.00 bytes/sec total size is 0 speedup is 0.00

Opcje -arh oznaczają, że program wykonuje swoje zadanie w trybie archiwizacji (-a), wyświetla wszelkie komunikaty o swoim działaniu (-v), włączony jest tryb działania rekursywny (-r). Tryb rekursywny umożliwia rekursywne kopiowanie zawartości wszelkich ewentualnych podkatalogów podanej ścieżki. Teraz przejdźmy do sieciowego kopiowania plików przy pomocy programu rsync. Zakładając, że pliki znajdujące się na komputerze z systemem Microsoft Windows mają być skopiowane poprzez sieć LAN i że maszyną docelową jest komputer o nazwie serwer1 z uruchomionym systemem operacyjnym Linux, na którym posiadamy konto o nazwie tester, to aby skopiować zawartość utworzonego wcześniej katalogu, należy z wiersza poleceń Cygwin wydać następujące polecenie:
mlattari@thor1 ~ $ rsync -avr dane tester@serwer1:kopia

Wynikiem uruchomienia powyższego polecenia program rsync prosi o hasło podanego użytkownika maszyny docelowej serwer1, a po wprowadzeniu prawidłowego hasła zawartość katalogu zostaje skopiowana do docelowego katalogu /home/tester/kopia/.
tester@serwer1's password:
sending incremental file list dane/ dane/plik

Automatyzacja procedury W celu automatyzacji całej procedury archiwizacji należy wykonać kilka dodatkowych kroków. Aby wyeliminować każdorazową konieczność wprowadzania hasła użytkownika dla zdalnej maszyny, na której pliki mają być regularnie archiwizowane, można posłużyć się narzędziem ssh-keygen z uprzednio zainstalowanego pakietu openssh, w celu utworzenia klucza publicznego maszyny z systemem Windows i umieszczenia go w odpowiednim pliku na maszynie z systemem Linux. Aby to zrobić należy z wiersza poleceń Cygwin wygenerować odpowiednie klucze ssh za pomocą polecenia ssh-keygen, definiując dowolną frazę autoryzującą połączenie, którą początkowo (w dalszej części artykułu procedura ta zostanie zautomatyzowana) będzie trzeba wprowadzać ręcznie przy każdej próbie nawiązania połączenia ssh z maszyną zdalną:
mlattari@thor1 ~ $ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/mlattari/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/mlattari/.ssh/id_dsa.
Your public key has been saved in /home/mlattari/.ssh/id_dsa.pub.
The key fingerprint is: b6:28:be:6e:4c:73:53:89:7f:93:5f:9d:42:63:e0:1f
mlattari@thor The key's randomart image is: +--[ DSA 1024]----+ | | | . | | . .. . | | . o . E | | oS .+ o..| | o oo..+ o...| | o.o.... o .. | | .o. . | | o+. | +-----------------+

Po zatwierdzeniu polecenia, zostają utworzone pliki z kluczami prywatnym i publicznym:

mlattari@thor1 ~ $ ls -al /home/mlattari/.ssh
razem 7 drwx------+ 1 mlattari Brak 0 05-21 22:12 . drwxr-xr-x+ 1 mlattari Brak 0 05-21 12:28 .. -rw------- 1 mlattari Brak 668 05-21 22:12 id_dsa -rw-r--r-- 1 mlattari Brak 603 05-21 22:12 id_dsa.pub -rw-r--r-- 1 mlattari Brak 393 05-20 21:11 known_hosts

Kolejną czynnością jest skopiowanie zawartości utworzonego pliku id_dsa.pub i wklejenie jej do pliku ~/.ssh/authorized_keys (~ oznacza ścieżkę do domowego katalogu użytkownika). Aby zachować spójność z poprzednimi przykładami, plik na maszynie Linux, do którego należy wkleić skopiowany klucz publiczny z maszyny z systemem Windows to: /home/tester/.ssh/authorized_keys

Uwaga! Należy skopiować cały ciąg znaków, z których składa się klucz publiczny. Należy się upewnić, że na końcu skopiowanego i wklejonego ciągu znaków znajduje się nazwa użytkownika.

Jeżeli plik docelowy nie istnieje, należy go utworzyć. Należy również upewnić się, że uprawnienia katalogu domowego użytkownika docelowej maszyny archiwizacji, ścieżki .ssh oraz pliku authorized_keys są prawidłowe, w przeciwnym przypadku logowanie oparte na kluczu publicznym nie zadziała.

Uprawnienia pliku authorized_keys
-rw------- 1 m.lattari m.lattari 604 May 21 23:14 authorized_keys
Uprawnienia ścieżki .ssh
-rw------- 1 m.lattari m.lattari 604 May 21 23:14 authorized_keys

Uprawnienia katalogu domowego:
rwx-----x 17 m.lattari m.lattari 4096 Jul 25 2010 m.lattari

Po wykonaniu wyżej opisanych czynności, należy sprawdzić czy z wiersza poleceń Cygwin można się teraz zalogować do maszyny Linux, bez konieczności podawania hasła:
mlattari@thor1 ~ $ ssh tester@serwer1
Enter passphrase for key '/home/mlattari/.ssh/id_dsa':
Last login: Tue May 21 23:23:32 2013 from 192.168.0.150
[tester@serwer1 ~]$
sent 111 bytes received 35 bytes 17.18 bytes/sec

total size is 0 speedup is 0.00

Należy zwrócić uwagę na fakt, iż skopiowany plik to pusty, testowy plik i z tej przyczyny mamy powiadomienie 'total size is 0 speedup is 0.00'. Zakładając jednak, że maszyną docelową jest odległy host, do którego trasa prowadzi poprzez sieć internet, warto zabezpieczyć transmitowane dane za pomocą protokołu ssh, z którym rsync radzi sobie świetnie.

Aby zabezpieczyć transmitowane dane, należy skorzystać z opcji programu rsync –-rsh, np.:
mlattari@thor1 ~ $ rsync -avr –-rsh=/bin/ssh dane tester@serwer1.daleko.com:kopia

Planowanie 


Usługa cron w środowisku Cygwin w Windows 8 Aby uruchomić usługę cron w środowisku Cygwin, po pomyślnie przeprowadzonej instalacjipodstawowych pakietów Cygwin, konieczna jest instalacja dwóch dodatkowych pakietów Cygwin: cron oraz cygrunsrv. Oba te pakiety znajdują się w kategorii pakietów 'Admin' instalatora Cygwin. Po udanym zainstalowaniu obu pakietów, należy z wiersza poleceń Cygwin uruchomić scrypt cron-config, którego zadaniem jest instalacja programu cron jako usługa systemu Windows, ponieważ tylko w taki sposób można będzie w pełni korzystać z dobrodziejstw usługi cron na maszynie z systemem operacyjnym Windows.

Ważna uwaga: w systemie Microsoft Windows 8 skrypt cron-config należy uruchomić z wiersza poleceń Cygwin będąc zalogowany do systemu Windows jako Adminitrator (wyłączone domyślnie konto Administratora należy włączyć w celu tymczasowego zalogowania się i przeprowadzenia konfiguracji cron-config), w przeciwnym przypadku procedura przewidziana w skrypcie nie powiedzie się, a zostanie wyświetlony komunikat o odmowie dostępu.

Uruchomienie skryptu cron-config z wiersza poleceń Cygwin:
Administrator@thor1 ~ $ cron-config

Skrypt zadaje kilka pytań na które należy odpowiedzieć w następujący sposób:

Do you want to install the cron daemon as a service? (yes/no) => yes
Enter the value of CYGWIN for the daemon: [ntsec smbntsec] => ntsec
Do you want to the cron daemon to run as yourself? (yes/no) => no

Ponieważ odpowiedź na ostatnie z powyższych pytań brzmi nie, to kolejne pytania dotyczą nazwy użytkownika, którego skrypt utworzy w celu umożliwienia uruchamiania programu cron jako usługa, która będzie korzystała z utworzonego konta użytkownika w celu uwierzytelnienia się w systemie Windows. Należy zatem wprowadzić wybraną nazwę użytkownika lub zatwierdzić domyślnie sugerowaną przez skrypt nazwę 'cyg_serwer'. Należy również wybrać i dwukrotnie wprowadzić hasło dla nowego użytkownika. Po pomyślnym wykonaniu skryptu, nowo utworzony przez skrypt użytkownik powinien widnieć na liście użytkowników systemu Windows. Po uruchomieniu menedżera zadań powinna widnieć usługa 'cron' w zakładce dotyczącej usług i powinna posiadać status usługi uruchomionej. Teraz można czasowo zaplanować działania korzystając z crontaba.

Brak komentarzy:

Prześlij komentarz