Archive for April, 2008:

Quick and dirty unix backup – Part 2

Pár évvel ezelõtt írtam egy Quick and dirty unix backup nevû tutorialt, ami legalább ekkora részben magamnak is referencia, amikor egy új gépet állítunk be valahova.

A korábbi megoldás netcat-el és inetd-vel mûködött, ami egy kicsit hack-elés, viszont biztonságos — ezen keresztül biztosan nem lehet betörni a gépbe. Viszont a netcat hiányosságai miatt network timeout-ot használ a transzfer befejezésének a jelzésére, ami mindíg is zavart.

Sokat gondolkodtam, hogy hogy lehet ezt korrektebbül csinálni, és nemrég, a technikai mai szintjén már, sikerült összehozni egy jobb megoldást (fõleg az SSH2 és az OpenSSH elterjedésének köszönhetõen).

Ez a megoldás ssh public key-t használ authentikációra, miközben elégségesen megvédi a tároló gépet is attól, hogy ha illetéktelenek hozzáférnének egy másik gép tartalmához, azzal a tároló gépet is veszélyeztessék. Ez nagyon fontos nálunk, ahol elég sok net-en lévõ szerver gép egymásra backup-ol, miközben mindegyik valaminek az “éles” szervere is.

Ugyanilyen fontos, és ez megmarad ebben a megoldásban is, hogy a forrás gép tartalma még helyben titkosításra kerül, tehát a fordított eset sem fordulhat elõ, hogy egy tároló gép illetéktelen kezekbe kerülése esetén az azon lévõ biztonsági másolatokból nem szerezhetõ meg a forrás gép tartalma (jelszavak, adatbázisok, stb).

A forrás gép setup majdnem teljesen ugyanaz, mint a korábbi megoldásban, csak a netcat változik ssh-ra. Tehát a backup-olando gepen, root-kent, crontab -e:


0 6 * * * (/usr/bin/tar zcvf - --exclude=/usr/home/bakker /etc /usr/local/etc /usr/home /var/db/mysql /var/cron /var/mail | /usr/bin/openssl enc -e -k SECRET -blowfish | ssh bakker@SERVER )

Ahol “SERVER” es “SECRET” ertelemszeruen lecserelendo.

Termeszetesen felvehetoek mas konyvtarak is, de a tapasztalatok szerint ezeket a legerdemesebb backup-olni. Hasznalhatjuk a tar “–exclude” opciojat is, “–exclude=’Fun Mail’” pld kiveszi a backup-bol a “Fun Mail” nevu file-t, ezzel helyet es savszelesseget sporolva. (A “-” utan irando, lehet tobb ilyen is egymas utan.)

Még egy dolog kell a backup-olandó gépen, ez pedig egy


ssh-keygen -t rsa

jelszó nélkül, és a file-ok mehetnek a default helyekre. Ezután a root “.ssh” könyvtárában lévõ “id_rsa.pub” file tartalmát másoljuk clipboard-ra.

A cél gép (tároló) setup-ja:

Csináljunk egy “bakker” nevû felhasználót, nem kell neki se jelszó, semmi. A legjobb, ha jelszóval egyáltalán nem tud bejelentkezni. Ez a legtöbb Unix-on “adduser”, vagy “useradd” parancs, OS X-en bonyolultabb, ezért ezt idemásolom:


dscl . -create /Users/bakker
dscl . -create /Users/bakker UserShell /bin/bash
dscl . -create /Users/bakker RealName "Backup Account"
dscl . -create /Users/bakker UniqueID 503
dscl . -create /Users/bakker PrimaryGroupID 1000
dscl . -create /Users/bakker NFSHomeDirectory /Users/bakker
mkdir /Users/bakker
chown bakker /Users/bakker
su bakker
mkdir /Users/bakker/.ssh
touch /Users/bakker/.ssh/authorized_keys
chown bakker /Users/bakker/.ssh/authorized_keys
chmod 600 /Users/bakker/.ssh/authorized_keys
vim /Users/bakker/.ssh/authorized_keys

Ezek után copy-zzuk be a file-ba a clipboard-unkon lévõ public key-t, de kicsit módosítva (elé írva ami kell):


no-pty,no-port-forwarding,command="/Users/bakker/bakker.sh",from="IP.CIM.JON.IDE" ssh-rsa AAAAB.....1795A79 root@forrasgep.hu

Ezután már csak meg kell csinálnunk a /Users/bakker/bakker.sh-t (nyilván a “/Users/” rész az “/home/” ha nem OS X a célgép):


#!/bin/sh
cat -u >/Users/bakker/dataport-`date +%Y%m%d-%H%M%S`-$SSH_CLIENT.dat
find /Users/bakker/ \( -type f \! -ctime -7 -name 'dataport-*' \) -print | xargs rm

Mint látjuk, ez majdnem teljesen ugyanaz, mint a korábbi megoldás scriptje, csak SSH-ra kiélezve, és a régi file-ok törléséért felelõs find is ide kerül.

Egyszerre ennyi, most üzemeltem be ezt a megoldást két gépünk között, holnap leellenõrzöm, hogy minden mûködött-e. Ha kell valamit módosítani, azt átvezetem majd ide is. Addig work in progress.

Leave a Comment

Egyszer ez is el kellett jöjjön

Telefonbeszélgetés, ma délelõtt:

Woman: “And which country are you from?”
Me: “Hungary”.
Woman: “Could you please spell?”

Leave a Comment