Configurar RSYNC II

En aquesta segona entrada anem a fer segura la connexió entre client i servidor. Ara que ja hem aconseguit fer connexió ‘a pèl’ i comprovar que funciona be, ens toca configurar la seguretat. Per a encriptar la informació que enviem s’utilitza SSH ja que rsync no té encara opció de fer-ho (però si opció d’ajudar-se amb ssh).

El que fa rsync amb ssh és connectar les dues màquines pel protocol segur (amb usuari/password) i una vegada establida la connexió és quan s’executa l’odre del rsync, que demanarà el password de l’usuari del rsync. Ací ja venen diversos errors com confondre usuaris o passwords, que l’usuari que s’utilitza al ssh tinga accés a la carpeta del rsync al servidor,…..que si seguim aquesta configuració desapareixeran.

Com acabem de veure, realment posem en marxa dues aplicacions i les dues necessiten usuari/password, que no tenen perque coincidir els usuaris a les dues connexions (ni els passwords tampoc, clar).

Aleshores, per a començar tenim dos usuaris diferents: Un per a la connexió ssh, que serà un usuari del servidor, i l’altre l’usuari per a la connexió rsync, que estarà configurat a rsync (i no té perquè existir al sistema del servidor). Però recordem que el que volem és copiar els arxius i preservar els seus atributs, owners,… (el que significa executar rsync com a super usuari ja que el uid l’hem posat com a root). La forma més ràpida (i perillosa) és connectar-se per ssh com a root, amb el perill que comporta ‘deixar’ el password de root d’una màquina a un usuari d’una altra. L’altra forma és fer-ho ben fet: al servidor habilitar que el nostre usuari que utilitzarem per a ssh puga executar rsync amb drets de super usuari i sense que ens demane password (aquest últim requisit no és per gust sino perquè rsync no admet interacció amb sudo, l’apicació que utilitzarem).

Per supost anem a fer la segona opció! Primer anem a instal·lar l’aplicació sudo, que al debian no està i s’instal·la fent un #apt-get install sudo i després anem a configurar per a que l’usuari que anem a utilitzar a ssh puga executar rsync com a super usuari sense que ens demane password. Exactament anem a indicar el que acabe d’escriure, solament podrà executar aquest programa com a super usuari sense que demane password, eixe i solament eixe. És més, si no es configura com a usuari sudoer (que no anem a fer-ho) no podrà executar ninguna aplicació més com a super usuari encara que siga demanant password. Insistixc molt per a que es veja que és molt més segur la segona opció que la primera. Ale va! a configurar:

#nano /etc/sudoers

i afegim al final aquesta línia:

user_ssh ALL= NOPASSWD:/usr/bin/rsync

    Explicació

  • user_ssh: És l’usuari que utilitzarem per a fer login a ssh.
  • ALL: indiquem que des de qualsevol màquina.
  • NOPASSWD: indiquem que no fa falta introduïr password.
  • /usr/bin/rsync: És la ruta on està l’executable rsync ( si és una altra ruta, es posa l’altra ruta).

Ara com ja ho tenim configurat anem a fer la còpia utilitzant ssh:

$rsync -avz --rsh 'ssh -l user_ssh' --rsync-path="sudo rsync" /ruta/oritge backup_user@servidor_destí::BACKUP

    En aquesta ordre hem introduït nous elements que explique ara mateix:

  • –rsh ‘ssh -l user_ssh’: Indica que la remote shell serà ssh i que l’usuari per a ssh serà user_ssh.
  • –rsync-path=”sudo rsync” aquesta opció s’utilitza per a indicar on està rsync si no està al seu lloc per defecte però es pot utilitzar per a fer el que nosaltres volem, indicant-li que el path és “sudo rsync”. Aleshores quan es faça la connexió ssh, rsync executarà l’odre sudo rsync com al usuari user_ssh (que ja hem indicat que no necessita password per a executar rsync), aconseguint dret de super usuari per a l’aplicació i poder mantindre els seus atributs, owners,…

Si ara el que volem és fer una connexió però a un port ssh diferent (podem observar que ara no utilitzem el port del rsync sino el del ssh), ho executem de la següent forma:

$rsync -avz --rsh 'ssh -p port -l user_ssh' --rsync-path="sudo rsync" /ruta/oritge backup_user@servidor_destí::BACKUP

El :: és correcte i també es pot canviar –rsh per -e, és la mateixa opció però amb el mètode abreviat

Per a finalitzar dir que al executar aquesta ordre primer demana el password del usuari ssh i després el del usuari rsync, si es passa la primera autenticació però no s’arriba a la segona es que hi ha un error amb l’usuari ssh, una vegada ja s’ha posat el password de l’usuari de rsync… ja el problema està a la teulada del rsync.

I ja està acabat el segon post sobre el tema, prompte el tercer! on vorem com fer que no ens demane passwords el rsync i poder posar al cron per a que s’execute automàticament

Configurar RSYNC I

Bon dia!

Hui vaig a explicar com configurar un servidor rsync per a que des d’un client rsync es puguen fer còpies de seguretat. Primer vaig a fer-ho senzill, després aniré complicant un poc més la coseta fins que se’ns quede ‘una cosa be’. Vaig a escriure-ho perquè m’he vist en la necessitat de fer-ho i pensant-me que hi hauria molta informació al respecte m’he equivocat: al principi costa bastant arrancar, si busques a la xarxa veus molts problemes diferents que donen els mateixos errors i exemples de configuració que a mi no m’han funcionat. Així que jo explique el meu cas, pot ser que a vosaltres tampoc vos vaja be (qui sap!) però espere que al menys vos ‘despeje’ dubtes.

Primer vaig a aclarir unes definicions que diuen per ahí per la xarxa: PULL i PUSH, que si ho traduïm és com les etiquetes de les portes de les tendes “ESTIRAR” i “EMPUJAR”, és adir que en la primera “estires” la informació i en la segona “espentes” la informació:

PULL és quan el directori oritge és extern (una altra màquina) i el directori destí és local. Exemple: Tens un servidor on es configuren totes les tasques de còpies de seguretat dels demés servidors i va copiant de les demés màquines a local

PUSH és quan el directori orige és local i el directori destí és extern (una altra màquina). Exemple: En aquest cas cada servidor tindria la seua tasca de còpia de seguretat apuntant al servidor de còpies.

Depén de situacions serà millor un sistema o un altre, depen de l’accés que es tinga a les màquines, accés de xarxa, enrutament,… Per exemple si eres administrador de totes les màquines i estan connectades a la mateixa xarxa igual és millor centralitzar les còpies i utilitzar PULL, per contra si sols eres administrador de la teua màquina i t’han passat els paràmetres per a connectar-te al servdor de còpies o no estan les màquines en una mateixa xarxa privada (accés per internet) o moltes altres possibilitats, es possible que vulgues utilitzar PUSH. Jo vaig a utilitzar PUSH, però si vols utilitzar PULL tan sols has de canviar les rutes. De totes formes a veure si tinc un ratet i faig també una entrada utilitzant configuració PULL. Ara anem al lio!

La instal·lació a debian és molt senzilla: apt-get install rsync, i ja està!

Ara falta crear el fitxer de configuració, de passwords i habilitar el servei per a que arranque automàticament. El fitxer de configuració és ben senzill, es diferèncien dues parts: la part global i la part dels mòduls, cada mòdul és una configuració per a fer còpies (on es còpia, permisos, comentaris, accions a realitzar, canviar paràmetres globals per a aquest mòdul en concret,…). Ací deixe un petit exemple:


#nano /etc/rsyncd.conf
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid

[BACKUP]
uid = backup_user
gid = backup_user
path = /mnt/backup
comment = Copia de backup
auth users = backup_user
read only = no
list = yes
secrets file = /etc/rsyncd.pass

La part global és la inicial, i la part de cada mòdul começa amb els comentaris entre [], en aquest cas hi ha un sol mòdul, el [BACKUP]. Els primers tres paràmetres són importants però no necessaris per al funcionament (si els lleves funcionen igual, jeje). El lock i el pid és per a controlar les execucions de l’aplicació i el log per a tenir un registre general del programa. També va be posar el llímit d’usuaris per a no saturar el servidor, aquest paràmetre és el max connections. Com ja he comentat, qualsevol paràmetre pot estar en global o al mòdul (al menys els que jo he provat).

Ara passem al mòdul d’aquest exemple:
– Primer indiquem el usuari:grup (uid i gid respectivament) que serà el owner (l’amo) de les dades que van a copiar-se al servidor, si al orige és un altre… al copiar-se al destí es canviarà per l’indicat ací.
– Es definix la ruta destí al servidor (path). Important que l’usuari definit abans tinga accés rw a aquesta ruta, sino dona error i no funciona. Feu-me cas que ja he estat ‘peleant’ pensant que havia donat permisos i resulta que no ho havia fet 🙁
Comment: un xicotet comentari per a saber de que va
– Indiquem que no és soles lectura (per a poder escriure també) amb el read only
– El següent paràmetre si no està no passa res, és per a que aquest mòdul siga visible a l’hora de llistar els mòduls disponibles al servidor, crec que per defecte està habilitat encara que no es configure.
– I finalment una part important (i crec que sense ella no funcionaria el rsyncd): El fitxer on es guarda la relació user:pass, aquest fitxer és un fitxer pla (es pot llegir perfectament per una persona, no està encriptat) i he vist que si no se li fa un chmod 600 com a root a aquest fitxer, no es pot llençar backups com a un usuari normal des del client. Al log ix un error com aquest:

[4834] secrets file must not be other-accessible (see strict modes option)
[4834] continuing without secrets file
[4834] auth failed on module NAS from nom_ip_que_he_ocultat (ip_que_he_ocultat): missing secret for user "backup_user"

Recordem: l’usuari que indiquem com a owner dels fitxers que van a copiar-se té que tindre accés de rw a la ruta que es posa en path. Ademés s’ha d’especificar un screts file i com a root fer-li un chmod 600. Important perquè sino donarà bastants errors. Ah! i no va mal definir un fitxer de log per a revisar els possibles errors que apareguen a la part del server.

Tot seguit passem a crear el fitxer de passwords, la configuració d’aquest fitxer és senzilla: en cada línia una parella de usuari:password. Aleshores fem un

#nano /etc/rsyncd.pass

I posem a la primera línia: backup_user:pass_back

Amb aquesta línia estem definint l’usuari backup_user amb password pass_back (que és el que hem indicat que té accés al mòdul BACKUP al fitxer de configuració del rsyncd.

Finalment anem a habilitar el servidor de rsync:

#nano /etc/default/rsync

i la línia que diu: RSYNC_ENABLE=false, la canviem per RSYNC_ENABLE=true

Amb aquesta configuració ja es pot fer una còpia de backup des del client amb el següent comandament:

$ rsync -avz /ruta/oritge rsync://backup_user@servidor_destí/BACKUP

Amb aquesta ordre es fa una còpia amb els paràmetres avz, que ho explicaré més endavant, de la ruta actual al servidor amb nom servidor_destí i al mòdul BACKUP, utilitzant l’usuari backup_user que hem definit al /etc/rsyncd.pass. El port per defecte del servici rsyncd és el 873, si pel que siga l’hem canviat al servidor l’ordre a executar seria:

$ rsync -avz /ruta/oritge rsync://backup_user@servidor_destí:port/BACKUP

Cal recordar que amb aquesta ordre el que fem és sustituïr el owner original dels fitxers copiats (els de backup) pel que hem indicat a la configuració. Modificant els paràmetres del uid i el gid a root ens solucionarà aquest problema.

Passem a explicar les opcions que hem posat al rsync:

  • -a: equival a -rlptgoD, que vol dir: recursiu, còpia enllàços simbòlics, preserva els permisos, guarda el temps, preserva el grup, preserva el owner i preserva els device files. Com hem vist, el tema de preservar permisos, temps, usuari i companyia sols ho fa si hem definit com a root el uid.
  • -v: verbose, necesari per al log
  • -z: transmitir la informació comprimint-la.

Hi ha més opcions però podem dir que ‘aquestes són les normals’. Respecte a l’opció -z he fet proves i he tingut els següents resultats:

  • Sense compresió: sent 27368118 bytes received 4818 bytes 71376.63 bytes/sec total size is 27839822 speedup is 1.02
  • Amb compresió: sent 24222524 bytes received 5007 bytes 72429.09 bytes/sec total size is 27839822 speedup is 1.15

Es pot veure que si que millora amb compresió.

Fins ara no han aparegut nous possibles errors que no haja comentat ja. Però si volem fer una còpia a través de internet a un altre servidor d’un amic (per exemple) tindrém en compte que:

  • Tenim resposta Ok del ping.
  • Té el port disponible (el que és per defecte o un altre que ens dirà per a configurar-lo). Ací entra que al router que tinga en casa estiga ben configurat la redirecció (fordwarding) del router a la IP del servidor rsyncd.
  • Primer heu provat a la seua xarxa (que no té cap intermediari) i ha funcionat OK.

Cal tenir en compte que la velocitat de còpia no serà la mateixa, els exemples que he posat jo corresponen a còpies petites a traves de la Internet. Si vos fixeu, he fet una còpia de 26Mb i pico a una velocitat de 70’73kb/s en el cas més ràpid tardant 6 minuts 18 segons. Ara fem càlculs i 1Gb tarda 4.20h, 500Gb ja són 87 dies (o el que és el mateix… casi 3 mesos!). Hem de tenir en compte el tema de volum, estic parlant d’un ADSL de 10mb, no res de fibra i coses d’ixes rares que no arriben al meu poble. En aquestos cas jo crec que és millor portar el client on estiga el server i fer la còpia en xarxa local, i després ja la incremental fer-la a distància.

I fins ací arriba el primer post parlant sobre la configuració del RSYNC

Comença el curs 2012/2013

Arriba Setembre i comencen ja els anuncis de ‘colecionables’ a la televisió. I amb això les meues ganes d’estabilitzar una altra vegada la vida després de l’estiu.

I qué millor que anar buscant nous ‘mini reptes’ informàtics? Per ara ja he pensat en 3 temetes que tinc pendents. El primer i més ràpid és el de muntar un pc connectat a la televisió on poder jugar a jocs ‘de tota la vida’ amb un Pad fabricat per mi mateix a partir d’un teclat. Se que una vegada el tinga en marxa ja no l’utilitzaré casi.

El segon projecte és apendre correctament el funcionament del Mikrotik RouterOS que tinc i finalitzar formalment (i professionalment) la instal·lació wifi que tinc implantada en casa ma tia – caseta ma tia, ja que des que es va averiar el servidor que tenia i després de la compra del mikrotik que s’ha quedat este tema que ja no se ni com està.

Després, este el reserve per a Nadal ja que tinc que gastar-me dinerets i ja que estic em faig el regal de Reis, tinc pensat el fer-me una nova NAS per a ma casa. La que tinc està molt be però sols tinc 1 HDD de 500Gb i ara que estic passant-me tots els cd’s de quan era jove vull tindre la seguretat que no se me perda la informació i aumentar la capacitat. M’agradaria vore de 3 o 4HDD i RAID 5, de 1Tb cada HDD, però també tinc que valorar el cost econòmic i el cost energètic.

I finalment el projecte que pot ocupar més temps i que els resultats es poden veure a mig o llarg plaç és el apendre HTML5

Açò més que un programa del curs que ve pareix que siga un llistat de proposicions d’any nou, espere que com a mínim els dos primers a any nou ja els haja fet i el tercer en any nou, a vorem…

Lliberar Samsung Galaxy Ace S5830

Vaig a obrir una nova secció al meu blog, aquesta va a dedicar-se a l’android, ja que en tinc un ja fa un parell d’anys i no li he dedicat temps per a trastejar amb ell.

Per a estrenar aquesta secció no vaig a parlar del meu telèfon (que igual prompte el canvie) si no que vaig a parlar com lliberar el telèfon Samsung Galaxy Ace S5830, que no se jo però serà paregut per als seus germans. Ja comence diguent que no servix aquest mètode per al HTC HERO (que és el que tinc jo per ara). Primer explique un poc el que es vol aconseguir i després ja ho explique com es fa.

Resulta que en aquest mòbil la informació del IMEI i del número de desbloqueig de xarxes està guardat en un fitxer imatge, així que el que es pretén fer és muntar aquest fitxer en un directori i accedir a eixa informació. Compodeu vore no hi ha complicació alguna en la explicació de la falla, així que passe a la part pràctica (però sense il·lustracions).

Per a poder entrar en mode escritura a les particions arrel primer tenim que ser ROOT, sino sols podem en mòde lectura, aixi que anem a ‘rootear’ l’android. Per a poder fer-ho es baixa l’aplicació One Click i s’instal·la el Samsung Kies (aquest és per a que el Windows tinga els drivers del mòbil i es puga detectar). Una vegada instal·lat el Kies i baixat el OneClick, executem el Oneclick (tenint el mòbil connectat al PC), clic al botó “root” i arreglat!

Ara passem a la segona part, en aquesta part s’instal·la la SDK de l’Android (a la seva pàgina oficial, gratuït) i una vegada instal·lat afegim el paquet “android platform tools”

Va que açò ja va arribant al final, ara que ja tenim tot el necessari és quan va de bo. S’obri una consola de windows (Inicio -> Ejecutar -> ‘cmd’) i s’escriu el següent:

set PATH=%PATH%;R_U_T_A

On R_U_T_A és la ruta on està instal·lades les platform-tools, en el meu cas és “C:\Program Files\Android\android-sdk\platform-tools”, depenent d’on s’instal·le serà una ruta o una altra. I ara ja a seguir en les següents comandes:

cd /
mount -o remount rw /
mkdir /efs
mount -o nosuid,ro,nodev -t vfat /dev/block/stl5 /efs
cat /efs/mits/perso.txt

i eixirà una informació pareguda a la següent:

Fixeu-se que en la consola aparega el símbol #, si apareix el $ aleshores abans del cd / executeu un su.

La explicació del que s’ha escrit és fàcil: Es passa al directori arrel, es modifiquen els permisos de muntatge a escritura/lectura, es crea un directori amb el nom efs, es munta l’arxiu imatge on està el número que busquem i finalment es mostra per pantalla la informació (clar? més clar aigua).

Ara s’apaga el telèfon i es canvia la targeta SIM, s’encen i després de posar el PIN ens demanarà el codi que hem obtés per a desbloquejar el terminal. Pot ser que al tornar a posar la SIM antigua ens torne a demanar aquest codi, es torna a posar i ja està.

 

Referències:

http://flashea.com/2011/08/liberar-samsunggalaxy-ace-s5830.html

http://forum.xda-developers.com/showthread.php?t=1204705

Xifrar les nostres dades (IV)

En aquest post vaig a parlar de com implementar Dropbox per a poder tindre les nostres dades segures i disponibles des de qualsevol lloc. Com casi sempre vaig darrere de les tronades crec que no fa falta explicar a estes altures qué és Dropbox, de totes formes faig un resum. Dropbox és un servei d’allotjament en el que ens trobem en la opció de 2Gb gratuïts i altres opcions que són pagant. Però a nosaltres ens interessa la part gratuïta (que es pot extrapolar a les altres opcions també), ah! per cert vos podeu registrar si encara no teniu un compte fent clic ací. No s’apureu que és l’enllaç per a la meua “invitació” aixina em doneu 250Mb a mi i vosaltres comenceu en 2’25Gb, que no està mal,no?.

Be seguim en el tema. El que anem a fer es crear un arxiu contenedor del tamany de 2Gb (2’25Gb si s’heu registrat des del meu enllaç) i que es puge a l’espai en ‘el nuvol’. Per a fer això primer s’instal·la el software del Dropbox, disponible tant per a Linux com per a Windows, es configura amb el nostre compte (està molt be perquè també té la opció de configurar proxy inclós si fa falta usuari i clau de pas), s’indica la carpeta que es sincronitzarà i després es pot modificar les opcions per a indicar quines carpetes del Dropbox sincronitzar.

El que fa el programa del Dropbox és comprovar l’estat de la carpeta que hem escollit i la sincronitza en el nostre compte de Dropbox, aleshores si ho instal·lem en els nostres pc’s (casa, feina, …) tindrem una carpeta sincronitzada en tot moment entre els nostres pc’s. El que fa Dropbox és comprovar els bits que s’han modificat i els sincronitza, així si tenim un arxiu de 2Gb (l’arxiu continedor) i es modifica… no es tindrà que sincronitzar tot l’arxiu, sols la part modificada, és un punt en tindre en compte ja que si s’haguera de sincronitzar tot el fitxer no es podria dur a terme pel temps necessitat. No ho he comentat però el nostre disc també està disponible a la web, on es poden descarreguar els arxius que vulgam.

Ara que ja està instal·lat i configurat el software del Dropbox, creem un arxiu contenidor en el Truecrypt i el deixem en la carpeta que es sincrontiza amb el compte de Dropbox, si el registre del compte l’heu fet des de l’enllaç que vos he posat, podeu crear un arxiu contenidor de 2’1Gb (per exemple) i copiar també el programa de Truecrypt a la carpeta, així sempre ‘tenim a mà’ el programa per a muntar l’arxiu. No es realitza el muntatge de la imatge i s’espera a que es sincronitze (tardarà unes quantes hores, no vos despacencieu, jo ho vaig fer després de sopar, em vaig gitar i a l’endemà ja estava sincronitzat), aquesta és la part que més tarda, després la sincronització amb els altres pc’s és més ràpida, ja que es baixa la informació, no es puja.

Una vegada sincronitzada es fa la prova de muntar l’arxiu, modificar, desmuntar i es vorà com s’actualitza l’arxiu (i no tot sencer, sino sols els bits modificats). El problema més gran es que Dropbox no sincronitza mentre la imatge està muntada, aleshores no és una sincronització inmediata, com ocurrix en els arxius no xifrats.

Ara ja tenim les nostres dades ‘al núvol’ xifrades. I amb l’aplicació que ho des-encripta amb elles, que no és problema perquè ningú més sap de la nostra clau de pas. La veritat que aquest post tampoc té res que veure amb el que anomenem realment xifrar dades, però si que ho complementa, ja que així tenim la nostra informació compartida i xifrada.

Links:

Registrar-se al Dropbox (‘invitació’ meua per a tenir més espai tu i jo 😉 )

Xifrar les nostres dades (III)

Bon dia!

Hui presente una altra ferramenta de gran utilitat, realment no té res que vore en el xifratge de dades. Aquesta ferramenta és un ‘clauer’, és a dir un software per a almacenar els passwords que tingam. Sempre s’ha dit que no es deu d’apuntar els passwords en cap lloc ja que si els apuntem… per a que volem tindre’ls? Pero ho he vist interessant per a almacenar els noms d’usuaris i claus de fòrums, webs,… que et registres per qualsevol motiu (per exemple en taringa per a vore posts, en una web d’alguna tenda per a comprar qualsevol article,…), entres una vegada i ja t’oblides.

Doncs be, l’aplicació de la que parle és KeePass, com les demés aplicacions també és lliure i es presenta en dues versions: Classic edition i Professional edition. La profesional té més opcions i és la que jo utilitce. A la seua web es pot trobar un bon manual en castellà on ens explica el funcionament del programa, bueno està un poc anticuat però no està tant mal, jaja.

El funcionament és senzill, es crea una base de dades nova, que es pot protegir per password, per compte d’usuari del windows o també es pot generar un arxiu clau que guardarem en una memòria USB, per exemple, i dins d’aquesta BD es van creant noves entrades amb nom d’usuari, clau, web, e-mail, descripció,… Aquestes entrades es poden classificar en carpetes per a organitzar-ho com nosaltres vulgam. Personalment jo la tinc descarregada com a versió portable, sense instal·lar, així es pot portar en una memòria USB tant el programa com la bd (com a seguretat utilitce una clau, no un arxiu clau) i així vaja on vaja sempre tinc aquestes claus a ma, això si, les claus més importants no les tinc guardades en cap lloc, només que en el meu cap (i espere que no se m’obliden).

Com he dit abans en altres posts… recordeu que si oblideu la clau ‘esteu venuts’, no hi ha forma de recuperar la informació d’aquesta bd. Així que aneu en compte amb la clau mestra que li poseu a la bd

 

Links:

Web oficial KeePass

Xifrar les nostres dades (II)

L’altre dia estava parlant de com ocultar les dades als altres usuaris del mateix equip. És veritat que també es xifren les dades però és un mètode poc segur en comparació amb l’aplicació que presente hui: Truecrypt.

Jo m’atreviria a dir que aquesta és la aplicació per excelència al àmbit del xifratge d’arxius. Igual hi ha software més potent o més segur, però aquest dona molt bon servei a part de ser gratuït. El seu funcionament és senzill, després de triar el tipus de xifratge (en la web oficial descriu els tipus que suporta) es crea un arxiu contenedor el qual l’aplicació s’encarrega de muntar en una unitat virutal (al cas de Windows) o un punt de muntatge (al cas de linux), està clar que per a poder muntar aquest arxiu fa falta una clau de pas. És a dir que el sistema interpreta aquest arxiu com una unitat més, el problema es que el tamany de l’arxiu contenidor no es pot variar, sempre serà l’inicial, així que es deu escollir be el tamany d’aquest a l’inici. També hi ha opció de xifrar una partició sencera, però no l’he provat.

Aquesta aplicació es pot instal·lar o simplement descomprimir i executar-la. Per al cas de l’arxiu contenidor no fa falta instal·lació. Com vegeu tampoc comente el funcionament tècnic del programa perquè és molt senzill. Aquesta ferramenta va be, per exemple, per a fer un arxiu contenidor en una memoria flash i deixar en la mateixa memòria el programa, així per exemple en una memòria de 8Gb es pot crear un contenidor de 7’8Gb i es deixa el programa també, així s’obté una memòria amb dades completament xifrades. Però aquest és sols un exemple.

Torne a recordar que el perill més gran d’aquestes aplicacions i del xifratge de les dades no és que altres puguen accedir a elles sino que s’oblide la clau i ja no es puga tornar a accedir a les dades!!

Links:

Web oficial de Truecrypt

Xifrar les nostres dades

Ve Setembre (ja ha passat) i és època per a començar nous projectes o com a mínim per a anar pensant-los. Esta vegada m’ha pegat per la seguretat de les nostres dades, sobre tot si compartim equip i hi ha dades que no volem que els demés usuaris puguen accedir a elles.

Poc a poc aniré introduïnt nous posts amb més informació sobre aquest tema, passant pel Truecrypt, dropbox, STRATO HiDrive i tot el que se m’ocurrixca. No sols és el xifrar les dades sino també el tindre les dades en un lloc segur, còpies de seguretat,….

Per començar podem trobar una utilitat molt senzilla que s’anomena My Lockbox, de la qual trobem la versió free i la pro (la segon és de pagament, com no)

Per a l’us que li volem fer en la free edition ja tenim prou. La diferència més gran és que en la free sols pots controlar una carpeta i en la pro pots controlar varies carpetes. Aquesta utilitat el que fa és xifrar una carpeta i ocultar-la, per a poder recuperar la carpeta i treballar amb ella cal executar el programa (que ens preguntarà la clau que hem introduït) i ja serà visible a l’explorador.

Amb aquesta ferramenta ja hem posat un grau de seguretat a les nostres dades personals, ja que per a qualsevol altre usuari que accedisca al nostre equip aquestes no seran visibles. Cal recordar que un dels problemes més greus en aquest tipus de programes és que el propi usuari s’oblide del password que ha posat i és un problema molt gran perquè aleshores no hi ha possibilitat per a poder accedir novament a les dades, així que aneu amb compte amb el passwords, tampoc val a apuntar-s’ho en un post-it perquè a les hores… per a qué tanta seguretat si ‘deixes la clau al pany’?

Ah! no comente res més sobre el funcionament del programa perquè és molt senzill, la instal·lació és la típica ‘siguiente, siguiente’, després li indiques el password de seguritat i la carpeta a la que vols que ‘monitoritze’ i ja està (més o menys “a grandes rasgos”)

Links:

Pàgina web oficial de My LockBox

Configurant el MySQL al DRBD

Ara que ja tenim el servidor redundant (però redundant del tot eh! jaja), anem a donar-li alguna utilitat, perquè per ara està configurat per a que monitoritze el HeartBeat al Apache, però este no està configurat per a que siga redundant, simplement està per a saber quan està o no en marxa.

Instal·lació i configuració del servidor MySQL
Anem a instalar el MySQL i configurar-lo per a que siga redundant, és molt fàcil. Primer que res s’instal·la el servidor MySQL als dos servidors i es configura com si foren independents (al final la configuració que valdrà serà la del servidor 1)
root@pc:/# apt-get install mysql-server mysql-common mysql-client

Aixina amb el client podem provar que està en marxa quan s’acabe la instal·lació:
root@pc:/# mysql -u root -p

I si tot va be ja estarem en la línia de comandament del servidor MySQL. Després d’aquesta comprovació (que s’ha de fer precís i així sabem que com a mínim fins a ací arriba be) es configura la redundancia de les dades al servidor 1, així que tot el que s’explica a continuació fa referència al servidor 1.
Parem el servici:
root@pc:/# mysqladmin -p shutdown

I ara anem a moure els fitxers de configuració i de la base de dades a la partició del DRBD. Ací explique com fer-ho sensefer backups dels fitxers però és recomanable que abans de moure cap arxiu també es faja un backup d’aquestos ‘per si les mosques’, quedeu avisats!
Primer creem una carpeta per a tenir-ho tot ben estructurat en la partició del DRBD:
root@pc:/# mkdir /mnt/mysql

Migrem la carpeta de configuració a aquesta carpeta i fem un enllaç simbolic que reemplaça la carpeta anterior:
root@pc:/# mv -f /etc/mysql /mnt/mysql/conf
root@pc:/# ln -s /mnt/mysql/conf /etc/mysql

Ara es mou la carpeta on es troben les db’s:
root@pc:/# mv -f /var/lib/mysql /mnt/mysql/data
root@pc:/# chown mysql:mysql /mnt/mysql/data
<– Per a que funcione correctament el MySQL aquesta carpeta tindrà com a owner l’usuari que utilitze mysqld (per defecte mysql).

I es modifica l’axiu de configuració per a indicar la nova ruta, així que s’edita el my.cnf que es troba al /etc/mysql, modificant el paràmetre datadir:
datadir = /mnt/mysql/data

Finalmente posem en marxa una altra vegada el servici de mysql
root@pc:/# /etc/init.d/mysql start

Si ha arrancat el servici comprobem que es pot accedir correctament
root@pc:/# mysql -u root -p

I funciona, a que si? Be ací he supost que l’usuari per a accedir al servidor de dades és el root i que necessita password. També s’havera pogut configurar la carpeta de bd’s com la de configuració, és a dir, mitjançant enllaços simbòlics però crec que aixina està tot més controlat.
Ara que ja està configurat l’apartat del MySQL al servidor 1 passem al servidor 2, que és més senzill. S’elimina la carpeta de configuració (recordeu que recomane fer primer un backup) i després es crea l’enllaç simbòlic a la carpeta de la partició DRBD:
root@pc:/# mysqladmin -p shutdown <– Parem el servici
root@pc:/# rm -fr /etc/mysql
root@pc:/# ln -s /mnt/mysql/conf /etc/mysql

Per a fer la prova de l’ou ara forcem el HeartBeat per a que el servidor 2 es pose en marxa i una vegada fet això tornem a posar en marxa el servici del MySQL i comprovem que es pot entrar, no fa falta que torne a escriure les ordres perquè ja està abans.
Funciona? Espere que si, a mi si que m’ha funcionat.

Configuració del HeartBeat
Tot el que es configura es farà tant en el servidor 1 com en el servidor 2. Ara passem a configurar el HeartBeat per a que monitoritze i pose en marxa el MySQL automàticament. Creem l’arxiu (si no està creat ja) /etc/ha.d/resource.d/mysql.resource amb el següent contingut:

#!/bin/bash
#
#This script is inteded to be used as resource script by heartbeat
#
#Mar 2006 by Monty Taylor
#
###
. /etc/ha.d/shellfuncs
case "$1" in
start)
res=`/etc/init.d/mysql start`
ret=$?
ha_log $res
exit $ret
;;
stop)
res=`/etc/init.d/mysql stop`
ret=$?
ha_log $res
exit $ret
;;
status)
if [[ `ps -ef | grep '[m]ysqld'` > 1 ]] ; then
echo "running"
else
echo "stopped"
fi
;;
*)
echo "Usage: mysql {start|stop|status}"
exit 1
;;
esac
exit 0

Que serà el script encarregat de posar en marxa i parar el servici de MySQL quan canvie de servidor (si està mal escrit en la referència que pose més avall es pot aconseguir)

Per a finalitzar la configuració del HeartBeat modifiquem l’arxiu /etc/ha.d/haresources afegint mysql al final de la línia, tenint en compte que aquesta instal·lació s’ha fet als servidors que hem configurat en el post anterior, l’arxiu quedaria així:
server1 drbddisk::r0 Filesystem::/dev/drbd1::/servidor::ext3 IPaddr2::10.7.250.10/16/eth0 apache2 mysql

Es reinicia el servei de HeartBeat als dos servidors…. i a rodar!!! Ja es pot fer les proves per a comprovar

Webs d’interés
==============
http://downloads.mysql.com/docs/mysql-ha-drbd-en.pdf

 

Servidor Redundant DRBD+HeartBeat

DRBD + HEARTBEAT

Hui explicaré com poder tenir un servidor redundant. No estic parlant d’un simple RAID de HDD’s, sino de redundacia de servidor completa, que si per el que siga el servidor es para es puga donar servei igualment. Està clar que per a això fan falta 2 servers, un que és el principal i l’altre que està ‘dormint’ i quan detecta que el primer està ‘caigut’ es ‘desperta’ i continua donant el mateix servei.
Açò s’aconseguix amb el DRBD i el HEARTBEAT. El que fa el DRBD és el mateix que un RAID1 però a nivell de xarxa i el funcionament és el següent: Es sincronitzen dues particions iguals (una a cada servidor) formant una partició virtual visible pels dos servidors, el servidor principal té accés RW i el secundari sols R. Quan el principal cau, el secundari passa a ser el principal i ja té accés RW. Tota la informació que s’escriu a aquesta partició, s’escriu tant a la partició física del propi servidor principal, com a la partició física del servidor secundari (enviant les dades per la xarxa), així quan el servidor primari torna a estar en funcionament es torna a sincronitzar les particions i torna a ser el principal.
El HEARTBEAT és l’encarregat de monitoritzar l’estat dels dos servidors i activar el servidor secundari quan el primari ha caigut, sense el HEARTBEAT aquesta feina s’hauria de fer en manual, que també l’explicaré per si ho tenim que fer alguna vegada.
Una vegada explicat més o menys els conceptes (qui no tinga qualsevol cosa clara que pregunte, jeje) passe ja a començar el tutorial:
No és requisit indispensable que les dues máquines siguen idèntiques, sols les particions a sincronitzar (encara que per a que no es veja afectat el rendiment del servidor si que deuria de ser igual)
Les particions que van a utilitzar-se en el DRBD no tindran cap format ni estaran muntades, en aquest cas anem a dir que les particions que anem a utilitzar són la /dev/sda7 per als dos servidors i que tenen el mateix tamany.
Les proves les he fet en la debian 6.0 i he utilitzat el repositori per a la instal·lació de les aplicacions, no he compilat res (facilet ehhhh), anem allà.

Instal·lació i configuració del DRBD

Instal·lem el paquet drbd8-utils:
root@pc:/# apt-get install drbd8-utils

I ara passem a configurar-ho, comentar que per a la comunicació entre els dos servidors es neccesita tenir oberts els ports 7788/TCP i 7799/TCP, com estic fent més o menys un ‘copy & paste’ del manual de la web oficial (però traduït, per supost) vaig a utilitzar les mateixes ip’s, configuracions,…. Així que les IP’s dels servidors, és a dir que el servidor1 té la IP 10.1.1.31 i el servidor 2 la 10.1.1.32 i utilitcen la tarjeta de xarxa eth1.
Mantenint la configuració que tenen per defecte sols hem de fer la següent modificació en el fitxer /etc/drbd.conf:

resource r0 {
on alice {
device    /dev/drbd1;
disk      /dev/sda7;
address   10.1.1.31:7789;
meta-disk internal;
}
on bob {
device    /dev/drbd1;
disk      /dev/sda7;
address   10.1.1.32:7789;
meta-disk internal;
}
}

Si ja tenim un resource el borrem i posem este, i ara toca explicar-lo un poc. En el tag resource es definix les particions locals a utilitzar en el servidors i la partició virtual que es crea. Podem vore que el nom que es definix en resource és el r0 i que hi ha dos servidors dins del resource el servidor ‘alice’ i el ‘bob’. En cada servidor està definit la seva IP, la seva partició que s’utilitzarà i la partició virtual a la que pertany.
Així que per a extrapolar-ho al nostre cas sols falta canviar els noms dels servidors, les IP’s i les particions locals que s’utilitzaran, la partició virtual (el ‘device’) podem mantindre el que apareix en l’exemple.
Continuem en l’activació de l’aplicació amb els següents programes (teniu en compte que on diu ‘r0’ es modificarà per el nom del resource que heu posat vosaltres):
Primer carreguem el mòdul al kernel:
root@pc:/#modprobe drbd

Es crea el metadata del resource, aqueta acció sols es farà la primera vegada que es cree el device (en aquest cas el /dev/drbd1)
root@pc:/#drbdadm create-md r0

Apareixerà un resultat paregut a aquest:
v08 Magic number not found
Writing meta data...
initialising activity log
NOT initialized bitmap
New drbd meta data block sucessfully created.
success

i continuem amb
root@pc:/#drbdadm up r0

Si falla aquest comandament es pot provar d’una altra forma:
root@pc:/#drbdadm attach r0 (asocia el device als servidors)
root@pc:/#drbdadm syncer r0 (configura els paràmetres de sincronització)
root@pc:/#drbdadm connect r0 (connecta els servidors)

Be fent la primera opcció o la segona opcio per a comprovar que està tot correcte es fa un
root@pc:/#cat /proc/drbd

I el que mostre per pantalla serà similar al que es mostra
version: 8.3.0 (api:88/proto:86-89)
GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by buildsystem@linbit, 2008-12-18 16:02:26
1: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r---
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:200768

Diu Inconsistent/Inconsistent perquè encara no s’ha sincronitzat.
Si fins a ací ha funcionat tot correcte… ja toca sincronitzar les dues particions, si no ha funcionat tot correcte reviseu la configuració que algo mal hi haurà. Per a sincronitzar les particions i dir quin servidor és el node principal s’executa el següent comandament (sols en el servidor principal):
root@pc:/#drbdadm -- --overwrite-data-of-peer primary r0

i començarà una sincronització completa de les particions, que depenent del tamany de la partició, recursos dels servidors i connexió de xarxa tardarà més o menys (ja vos assegure que tardar si que tarda prou en completar). Per a monitoritzar la sincornització es pot fer un
root@pc:/#watch -n1 cat /proc/drbd

i veurem com va avançant la sincronització.

Posada en marxa i comprovació del sistema

Ara que ja ha acabat de sincronitzar-se les particions ja podem començar a utilitzar-les. Recordar que en aquest sistema el servidor primari té accés de RW a la partició /dev/drbd1 mentre que el servidor secundari sols R.
Com aquesta partició no té format ni està utilitzant-se el primer que es fa és donar-li format
root@pc:/#mkfs.ext3 /dev/drbd1

i la muntem en un directori que creem nosaltres
root@pc:/#mount /dev/drbd1 /mnt
root@pc:/#mount

Aixina que ens mostre si s’ha muntat o no i ja podem accedir a ella i crear qualsevol cosa, ara si s’intenta fer el mateix des del servidor secundari es comprovarà que no es pot fer. Si es necessitara poder accedir es tindria que configurar d’una altra forma (si que es pot) fent els dos servidors com a principals i utilitzar un altre format (GFS per exemple), i açò està explicat en la web principal i en altres blogs.
Passem a comprovar que el que es modifica en el primer servidor també ho fa al secundari. Desmuntem la partició en el primari:
root@pc:/#umount /mnt

Canviem el rol en el server primari a secundari
root@pc:/#drbdadm secondary r0

I ara fem el contrari en el server secundari
root@pc:/#drbdadm primary r0
root@pc:/#mount /dev/drbd1 /mnt
root@pc:/#mount

Així comprovem que està muntat correctament i si accedim al seu punt de muntatge trobarem que les dades són les mateixes, tornem a fer la mateixa operació per a deixar-ho com estava (el servidor principal el tornem a fer principal i el secundari el tornem a fer secundari)
I si tot ha anat be ja tenim en marxa el DRBD!

Instal·lació i configuració del HeartBeat

root@pc:/#apt-get install heartbeat

I ja tenim instal·lada l’aplicació (que senzilles són les coses!), ara passem a la configuració d’aquest. Es necessiten 3 arxius de configuració:
/etc/ha.d/authkeys <- definix el xifratge
/etc/ha.d/ha.cf <-paràmetres per a la monitorització
/etc/ha.d/haresources <- paràmetres d’IPV, servici a monitoritzar,…

Abans de fer res en el fitxer /etc/hosts es posen dues linies amb les ip’s i noms dels dos servidors per a un millor funcionament del heartbeat. Després ja podem passar a crear els arxius de configuració ja que al fer-ho jo he vist que no se me crea cap arxiu, els creem a ma i funciona igual, primer creem el authkeys amb el següent contingut

auth 1
1 crc

és l’autenticació menys forta però per a proves funciona be, per a altres métodes més forts buscar ‘per ahí’

Ara li toca al ha.cf

#       File to write debug messages to
debugfile /var/log/ha-debug
#
#
#       File to write other messages to
#
logfile /var/log/ha-log
#
#
#       Facility to use for syslog()/logger
#
logfacility     local0
#
#
#       A note on specifying "how long" times below...
#
#       The default time unit is seconds
#               10 means ten seconds
#
#       You can also specify them in milliseconds
#               1500ms means 1.5 seconds
#
#
#       keepalive: how long between heartbeats?
#
keepalive       2
#
#       deadtime: how long-to-declare-host-dead?
#
#               If you set this too low you will get the problematic
#               split-brain (or cluster partition) problem.
#               See the FAQ for how to use warntime to tune deadtime.
#
deadtime        30
#
#       warntime: how long before issuing "late heartbeat" warning?
#       See the FAQ for how to use warntime to tune deadtime.
#
warntime 10
#
#
#       Very first dead time (initdead)
#
#       On some machines/OSes, etc. the network takes a while to come up
#       and start working right after you've been rebooted.  As a result
#       we have a separate dead time for when things first come up.
#       It should be at least twice the normal dead time.
#
initdead        120
#
#
#       What UDP port to use for bcast/ucast communication?
#
udpport 694
#       Set up a unicast / udp heartbeat medium
#       ucast [dev] [peer-ip-addr]
#
#       [dev]           device to send/rcv heartbeats on
#       [peer-ip-addr]  IP address of peer to send packets to
#
ucast eth0 (ip_del_otro_servidor)
#
auto_failback   on
#       Tell what machines are in the cluster
#       node    nodename ...    -- must match uname -n
node    server1
node    server2
#
bcast   eth1

D’on es modifica el ‘ucast eth0 (ip_del_otro_servidor)‘ posant-li la IP de l’altre servidor (en el servidor primari es posa la IP del servidor secundari i en el secundari la del primari) i en node es posen els noms dels servers. Si s’utilitzara una altra interficie diferent a eth1, es modificaria el bcast.

Ja donem pas al haresources:

servidor1 drbddisk::r0 Filesystem::/dev/drbd1::/mnt::ext3 IPaddr2::192.168.1.10/24/eth1 apache2

Tot està a la mateixa línia, en primer lloc es posa el nom del servidor principal, després del drbddisk:: es posa el nom del resource que s’havia posat en el DRBD, supose que el que està en el filesystem no fa falta que ho explique, no? partició, punt de muntatge i format de la partició, jejeje
El punt de IPaddr2 és important, aquesta és la IP virtual. Gràcies a aquesta IP el sistema és redundant, ja que encara que cada servidor té una IP diferent, el servidor que estiga en actiu també respondrà a la IP virtual, tenint així sempre un servidor que responga a esta IP (a no ser que es paren els 2). Està format per la IP/màscara/interficie de xarxa.
I al final es posa els servicis a monitoritzar, en aquest cas he posat el apache2, que no ho he dit en aquest post però l’he instal·lat també per a poder ser monitoritzat.
Aquestos 3 fitxers de configuració seran iguals en els dos servidors (exeptuant l’apartat ucast del ha.cf)
Es reinicia el Heartbeat en els dos servidors, que si està tot correcte no donarà cap error
root@pc:/#/etc/init.d/heartbeat restart

I ja ho tenim funcionant!

Posada en marxa i comprovació

He posat “posada en marxa” però és mentida, ja està en marxa, dona igual és per a seguir els mateixos apartats en una aplicació que en l’altra.
El primer pas per a comprovar que el HeartBeat funciona correctament és fer un ping a la IP virtual, si respon es que està tot correcte, de vegades quan es posa en marxa per primera vegada li costa un poc respondre al ping.
I el segon pas de comprovació és simular la caiguda del servidor primar i comprovar que el secundari es ‘desperta’. Per a això deixem un ping constant a la IP virtual des d’una màquina que no siga ni el server1 ni el server2 i executem:
root@pc:/#/etc/init.d/heartbeat stop

El ping es pedrà per uns pocs segons i tornarà a fer-se. En aquest moment intentem accedir al punt de muntatge del servidor2 i es comprovarà que s’ha muntat automàticament.
Ara simulem que torna tot a la normalitat
root@pc:/#/etc/init.d/heartbeat start

I es veu que el ping es torna a perdre i torna a fer-se, també es comprova que la partició s’ha muntat en el servidor1 i que ja no està accesible des del servidor2.

Ara ja si que es pot dir que tenim el servidor redundant en marxa. Ara falta utilitzar-lo en algun servei, si puc més endavant penjaré en un nou post com muntar un servidor FTP amb usuari per MySQL sobre aquest sistema.

Webs d’interés
==============

http://www.drbd.org/users-guide/ –D’on he tret la instal·lació del DRBD
http://bytecoders.net/content/servidores-de-alta-disponibilidad-heartbeat.html –D’on he tret la instal·lació del HeartBeat
http://bytecoders.net/content/servidores-de-alta-disponibilidad-drbd.html –D’on he tret la instal·lació del HeartBeat
https://help.ubuntu.com/10.04/serverguide/C/drbd.html
http://www.howtoforge.com/drbd-on-centos-4.5