merde, j’ai pas de backup…

Tags: , ,
1 Comment »

Combien de fois cette phrase a retenti dans vos esprits imprudents ? dans mon esprit imprudent à moi, plein.
Alors, comme je viens de toper un kimloli sur les conseils de mon bouquetin favori, je me suis dit que, pour une fois, j’y collerais bien une procedure de backup propre.

J’ai déjà parlé et probablement pasté ici même un petit script gentil qui, grâce au couple rsync / rsyncd, permettait de rendre cette opération relativement rapide assez simplement. J’y ai apporté quelques modifs et enrobé le tout d’un chouillat de sécu. Un chouillat j’ai dit, trépigne pas spoty.

Le kimloli est un FreeBSD 6.2, j’y installe rsync via les ports.
Le backup est fait sur une bête workstation Ubuntu, chez moi. J’y installe rsync via apt-get.

Voici les differentes étapes que j’ai suivi pour préparer mon rsyncd sur ma machine à backuper :

Activation du rsync dans inetd :

# grep rsync /etc/inetd.conf
# backup
rsync           stream  tcp     nowait  root    /usr/local/bin/rsync rsyncd --daemon --config=/usr/local/etc/rsyncd.conf

Interdiction d’y accéder d’ailleurs que de ma ligne DSL qui dispose d’une IP fixe :

ALL : localhost ip.publique.dsl : allow
rsync : ALL : deny

Configuration du demon rsync

pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log

uid = root
gid = wheel
use chroot = no
max connections = 1
syslog facility = local5

[homes]
        path = /home
        comment = Homes
	# seul utilisateur autorisé
        auth users = bkp
        secrets file = /usr/local/etc/rsyncd.secrets
        hosts allow = ip.publique.dsl
[usr_local]
        path = /usr/local
        comment = usr local directories
        auth users = bkp
        secrets file = /usr/local/etc/rsyncd.secrets
        hosts allow = ip.publique.dsl

Créaction du très simple fichier d’authentification /usr/local/etc/rsyncd.secrets :

bkp:mangemoitoute

Activation de inetd au démarrage :

# grep inetd /etc/rc.conf
inetd_enable="YES"

Et on démarre tout ce petit monde :

# /etc/rc.d/inetd start

La conf serveur est prête. Coté client, je vous propose ce script :

#!/bin/sh

# Simple rsync client script
# if "console" is specified, verbose output and --delete are implied
# iMil 

RSYNC="/usr/bin/rsync"

usage()
{
        echo "usage: $0    "
        exit 1
}

if [ $# != 4 ]
then
        usage
fi

HOST=$2
FROM=$3
TO=$4
EXCLUDE="/home/bkp/rsync.exclude"
SECRET="/home/bkp/rsync.secret"
USER="bkp"

OPTIONS="--compress -a --recursive --times --perms --links"

if [ -f ${EXCLUDE} ]; then
        OPTIONS="${OPTIONS} --exclude-from=${EXCLUDE}"
fi
if [ -f ${SECRET} ]; then
        OPTIONS="${OPTIONS} --password-file=${SECRET}"
fi

case $1 in
        console)
                CONSOLE="--verbose --progress --stats --delete"
                ;;
        cron)
                CONSOLE=""
                ;;
        *)
                usage
                ;;
esac

CMD="${RSYNC} ${CONSOLE} ${OPTIONS} ${USER}@${HOST}::${FROM} ${TO}/${FROM}"

echo running: ${CMD}

eval ${CMD}

On crée le fichier /home/bkp/rsync.secret qui contiendra UNIQUEMENT le mot de passe précisé dans le fichier secret du serveur, puis /home/bkp/rsync.exclude qui est composé de la liste des fichiers et repertoires à exclude, par exemple :

/home/ftp
/home/mirror
*access_log
*error_log

On teste en console :

bin/bkp.sh console kimloli212 usr_local /home/bkp/kimloli

Et si tout va bien, on cron :

0 2 * * * /home/bkp/bin/bkp.sh cron kimloli212 homes /home/bkp/kimloli

Joyeux backups

tin, 23%…

Tags:
No Comments »

Problème :

Tu as, sur ta machine chez toi, démarré une application graphique qui n’a pas de pendant console et tu es curieux de savoir à combien de poucents en est le… la… COMPILATION. Ta machine est bien evidemment située derrière une gate quelconque dont la seule particularité est de disposer d’un access ssh accessible.

“Damn foukine shit”, te dis-tu, “Ca va etre une tannée pas croyable”

Que nenni

Solution (qui suppose que tu as un VNC server qui tourne sur ta workstation) :

sur la machine client

$ ssh -L 2222:gate:22 -L 2223:workstation:22 gate cat -
^Z
$ bg
$ cat .ssh/config
host workstation
hostname 127.0.0.1
port 2223
$ vncpasswd
$ vncviewer -via workstation workstation:0

woohoo !
tin… 23%… ca avance pas.

local

Tags: ,
1 Comment »

update

Non seulement ce qui est ecrit ci dessous est faux mais en plus ca ne marche absolument pas.
En réalité il suffisait de spécifier à la classe w de chercher tous les attributs sendmailMTAClassName=w dans l’arbre, soit :

define(`confCW_FILE', `@ldap: -k sendmailMTAClassName=w -v sendmailMTACLassValue')

dans le fichier .mc

C’est pris à la volée et ca marche impeccablement bien.

P’tit tip en passant, pour verifier tes local-host-names :

echo '$=w' | sendmail -bt


Je me demandais pourquoi donc après avoir ajouté des hosts dans la classe sendmailMTAClassName=w (équivalent de local-host-names), les mails à destination de ces derniers étaient refusés / non relayés si je ne restartais pas sendmail. En fait, et c’est très ennuyeux, il faut effectivement restarter sendmail pour que la classe w soit reloadée. MAIS ASTUCE ! je viens également d’apprendre ici qu’on peut elegamment remplacer le fichier classique des domaines locaux par une entrée dans la mailertable et dans l’access.db pour authoriser son relay. En LDAP ca nous donne :

# mailer, sendmail, gcu.info.dotpure.net
dn: sendmailMTAMapName=mailer,ou=sendmail,dc=gcu.info,dc=dotpure,dc=net
objectClass: top
objectClass: sendmailMTA
objectClass: sendmailMTAMap
objectClass: sendmailMTAMapObject
sendmailMTACluster: dotpure.net
sendmailMTAKey: gcu.info
sendmailMTAMapName: mailer
sendmailMTAMapValue: local:

# access, sendmail, gcu.info.dotpure.net
dn: sendmailMTAMapName=access,ou=sendmail,dc=gcu.info,dc=dotpure,dc=net
objectClass: top
objectClass: sendmailMTA
objectClass: sendmailMTAMap
objectClass: sendmailMTAMapObject
sendmailMTACluster: dotpure.net
sendmailMTAMapName: access
sendmailMTAKey: gcu.info
sendmailMTAMapValue: RELAY

c’est beau hein :)

procmail, mon ami pour la vie

Tags: ,
No Comments »

Voila quelques temps que je demandais comment automatiser le provisionning de mes users virtuels sachant que je veux utiliser le format maildir pour stocker les mails. Original: la solution s’appelle procmail. Je n’en savais rien et pourtant procmail propose le format maildir depuis belle lurette semble-t-il. Voici un petit procmailrc qui crée automatiquement le home du user ainsi que son repository maildir, une petite astuce est nécessaire pour délivrer effectivement le premier mail reçu :

[~] cat /usr/local/etc/procmailrc
DROPPRIVS=yes

# virtual provisionning, users may not have homedirs
:0
* ? /bin/test -d $HOME || /bin/mkdir -p $HOME
{
}

:0
* ? /bin/test -d $HOME/Maildir || /bin/mkdir -p $HOME/Maildir
{
:0
$HOME/Maildir/
}

back me up

Tags:
1 Comment »

Qui dit redondance dit backup, hormis la réplication LDAP dont je parlerai certainement un de ces 4, voici la méthode, simplissime, que j’utilise pour pas loser mes confs :

# adduser
[...]
Username : bkp
Password :
Full Name : backup
Uid : 1017
Class :
Groups : wheel
Home : /home/bkp
Shell : /bin/sh
Locked : no

# su - bkp
$ cat > bkp.sh
#!/bin/sh

TAR="/usr/bin/tar"
WHO="/home/bkp/who"
SED="/usr/bin/sed"

cd /

for line in `cat ${WHO}`
do
ARC=`/bin/echo ${line}|${SED} s@/@_@g`
${TAR} zcvf /home/bkp/${ARC}-backup.tar.gz ${line} > /dev/null
done
^D
$ cat > who
/etc
/usr/local/etc
/var/db
/var/named
^D

Comme vous le comprenez, tous les repertoires listés dans “who” seront archivés dans /home/bkp
Reste à cron’er l’archivage :

# crontab -e
30 0 * * * /bin/sh /home/bkp/bkp.sh > /dev/null 2>&1

Sur la machine depuis laquelle vous voulez downloader les sauvegardes, créez une clé ssh avec une passphrase vide.
Sur la machine à backuper, installez si ce n’est déjà fait le logiciel “scponly” (/usr/ports/shells/scponly/) et remplacez le shell du user bkp par /usr/local/bin/scponly

Il ne reste qu’a cron’er le scp sur la machine “cliente”, par exemple :

00 05 * * * /bin/sh /home/bkp/bkp-clt.sh > /dev/null 2>&1

avec

$ cat > bkp-clt.sh
#!/bin/sh

/usr/bin/scp serveur.a.backuper:*backup* /home/bkp
^D

La methode est assez artisanale, c’est pas incrémental pour deux sous (voir rsync dans ce cas), mais ca se met en place en deux coups de cuiller à pot.

WP Theme & Icons based on GlossyBlue by N.Design Studio
Banner from www.trynthlas.com
Entries RSS Comments RSS Log in
Performance Optimization WordPress Plugins by W3 EDGE