pour répliquer un serveur il faut
1 – les programmes, si tu installe tout grace à un gestionnaire de paquets (dpkg, apt, aptitude …) recupère le résultat de la commande dpkg –get-selections qui donne la liste des paquets installés. tu les installera sur le second serveur en chargant ce fichier avec dpkg –set-selections.
2 – les config des programmes. sur debian tout est dans /etc, recupere regulièrement une archive de ce dossier avec rsync.
avec ces deux premiers points tu es capable d’obtenir deux machines identiques (attention quand même aux adressages IP)
3 – les bases de données et les données. l’idéal est DRDB car même si mysql sait faire de la replication, ça reste en mode asynchrone. et un petit dump de temps en temps permet aussi un retour arrière.
tuto:
On imagine deux serveurs: serv1 & serv2
On va considérer que serv1 a l’ip 192.168..20.20 et serv2 à l’ip 192.168.20.30 (c’est juste pour l’exemple hein, je vais pas mettre d’ip publiques dans le tuto vous changer par l’ip publique principale de votre serveur = eth0
On est parti, phase 1.
- Configuration d’un tunnel VPN IPSEC en mode transport
Pour que les échanges d’information réseau entre les deux serveurs dédiés soient un minimum sécurisé (comprendre difficilement « sniffable »), j’ai décider de monter un tunnel VPN en IPSEC entre les deux.
Les serveurs sont sous Debian. (vous adapter si vous avez un autre OS)
IPSEC autorise 2 modes de communication le mode tunnel (1 serveur/réseau vers 1 réseau) et le mode Transport (1 serveur vers 1 serveur)
Donc pour nous le mode transport.
apt-get install ipsec-tools
on se configure le /etc/ipsec-tools.conf sur les deux serveurs.
serv1 :
#!/usr/sbin/setkey -f flush; spdflush; (pour plus d’infos sur crontab # AH add 192.168.20.30 192.168.20.20 ah 15700 -A hmac-md5 "1234567890123456"; add 192.168.20.20 192.168.20.30 ah 24500 -A hmac-md5 "1234567890123456"; # ESP add 192.168.20.30 192.168.20.20 esp 15701 -E 3des-cbc "123456789012123456789012"; add 192.168.20.20 192.168.20.30 esp 24501 -E 3des-cbc "123456789012123456789012"; spdadd 192.168.20.20 192.168.20.30 any -P out ipsec esp/transport//require ah/transport//require; spdadd 192.168.20.30 192.168.20.20 any -P in ipsec esp/transport//require ah/transport//require;
serv2 :
#!/usr/sbin/setkey -f flush; spdflush; # AH add 192.168.20.30 192.168.20.20 ah 15700 -A hmac-md5 "1234567890123456"; add 192.168.20.20 192.168.20.30 ah 24500 -A hmac-md5 "1234567890123456"; # ESP add 192.168.20.30 192.168.20.20 esp 15701 -E 3des-cbc "123456789012123456789012"; add 192.168.20.20 192.168.20.30 esp 24501 -E 3des-cbc "123456789012123456789012"; spdadd 192.168.20.30 192.168.20.20 any -P out ipsec esp/transport//require ah/transport//require; spdadd 192.168.20.20 192.168.20.30 any -P in ipsec esp/transport//require ah/transport//require;
Vous remarquerez que les changements portent sur les sens de trafic.
Bien évidemment, vous changez les clés (32 octets hexadecimaux, et 48 pour les clés 3des-cbc), générable faisable facilement par un :
hexdump -e ‘8/2 “%04x” ‘ /dev/urandom -n 16; echo (pour les 32 caractères)
hexdump -e ‘8/2 “%04x” ‘ /dev/urandom -n 24; echo (pour 48)
Exemple :
hexdump -e ‘8/2 « %04x » ‘ /dev/urandom -n 16; echo
6e99170129b4bc1b774161f0c7ecf50f
la clé = 0x6e99170129b4bc1b774161f0c7ecf50f (sans les guillemets).
Un ping vers l’autre serveur et un tcpdump vous démontreront le cryptage effectif :
# tcpdump -n "host 192.168.20.30" 01:23:27.996891 IP 192.168.20.20 > 192.168.20.30: AH(spi=0x00000302,seq=0x1): ESP(spi=0x00000303,seq=0x1), length 88 01:23:27.998282 IP 192.168.20.30 > 192.168.20.20: AH(spi=0x00000202,seq=0x277ac2): ESP(spi=0x00000203,seq=0x277ac2), length 88 01:23:28.999853 IP 192.168.20.20 > 192.168.20.30: AH(spi=0x00000302,seq=0x2): ESP(spi=0x00000303,seq=0x2), length 88 01:23:29.001726 IP 192.168.20.30 > 192.168.20.20: AH(spi=0x00000202,seq=0x277ac3): ESP(spi=0x00000203,seq=0x277ac3), length 88 4 packets captured 15653 packets received by filter 0 packets dropped by kernel
Comme nous ne faisons que du 1 pour 1, inutile de se fatiguer à installer une gestion des clés (type isakmpd ou Racoon).
NB : Pour sécuriser tout cela, vous peaufiner votre Iptables pour n’accepter que du trafic Ipsec entre les deux serveurs.