Logo Khaganat

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
fr:burp [2020/12/10 09:10]
zatalyz [Paramétrer les fichiers de client] Échec critique
fr:burp [2020/12/25 09:45] (Version actuelle)
zatalyz [Peer exiting] ho la coquille
Ligne 10: Ligne 10:
 Les principes généraux de la sauvegarde d'un serveur sont dans l'​article [[fr:​sauver_serveur]].</​WRAP>​ Les principes généraux de la sauvegarde d'un serveur sont dans l'​article [[fr:​sauver_serveur]].</​WRAP>​
  
 +<WRAP center round info 60%>
 +Trop de blabla ? La version courte de cet article est sur [[fr:​burp-rapide]].
 +</​WRAP>​
 ===== Burp, le logiciel de base ===== ===== Burp, le logiciel de base =====
  
Ligne 36: Ligne 39:
 En lojban, Blanu veut dire "​bleu"​ et Xunre "​rouge"​ ;-) En lojban, Blanu veut dire "​bleu"​ et Xunre "​rouge"​ ;-)
 </​WRAP>​ </​WRAP>​
 +<WRAP center round tip 90%>
 +Astuce n°2 : Un backup, c'est trop peu !
 +
 +Si, dans ce tutoriel, on va surtout détailler comment Blanu est sauvegardé sur Xunre, nous allons aussi envisager qu'un autre serveur de backup existe, Crino ("​vert"​ en lojban). Crino fera aussi une sauvegarde de Blanu, en utilisant les mêmes mécanismes que Xunre. Mais comme il y a envoi de deux copies à deux serveurs, cela demande d'​adapter l'​architecture pour s'y retrouver ! 
 +
 +Ainsi, la configuration dans Blanu pour l'​envoie vers Xunre sera dans ''/​etc/​burp/​xunre'',​ et celle pour Crino dans ''/​etc/​burp/​crino''​.
 +</​WRAP>​
 +
  
 ==== Paramétrer les fichiers de client ==== ==== Paramétrer les fichiers de client ====
Ligne 41: Ligne 52:
  
 Burp permet beaucoup de choses et ce fichier, abondamment commenté, donne un aperçu des possibilités. Burp permet beaucoup de choses et ce fichier, abondamment commenté, donne un aperçu des possibilités.
 +
 +Sur Blanu, nous allons copier ce fichier dans le dossier ''/​etc/​burp/​xunre/​burp.conf''​. ​
  
 Nous allons faire simple et modifier uniquement les lignes suivantes : Nous allons faire simple et modifier uniquement les lignes suivantes :
Ligne 46: Ligne 59:
   * ''​password = abcd''​ => mot de passe qui va servir à ce que Xunre et Blanu échangent. Générez un bon mot de passe !   * ''​password = abcd''​ => mot de passe qui va servir à ce que Xunre et Blanu échangent. Générez un bon mot de passe !
   * ''​cname = machin''​ => ça identifiera les sauvegardes comme venant du client machin. Donc mettez ''​xunre''​ sur le serveur Xunre, et ''​blanu''​ sur le serveur Blanu !   * ''​cname = machin''​ => ça identifiera les sauvegardes comme venant du client machin. Donc mettez ''​xunre''​ sur le serveur Xunre, et ''​blanu''​ sur le serveur Blanu !
-  * ''​ssl_peer_cn = burpserver''​ => cela doit être le même nom que ce qui est configuré dans le fichier ''/​etc/​burp/​burp-server.conf''​ sur le serveur de sauvegarde (donc Xunre). Vous pouvez laisser la configuration par défaut.+  * ''​ssl_peer_cn = burpserver''​ => cela doit être le même nom que ce qui est configuré dans le fichier ''/​etc/​burp/​burp-server.conf''​ sur le serveur de sauvegarde (donc Xunre). Vous pouvez laisser la configuration par défaut ​sur Xunre, ou bien l'​appeler ''​xunreserver''​.
   * ''​include = /​home''​ => Indiquez les dossiers à inclure dans la sauvegarde. On peut exclure certains dossiers aussi, ou certaines extensions, expressions régulières. Par défaut, c'est le /home qui est sauvegardé,​ adaptez le chemin.   * ''​include = /​home''​ => Indiquez les dossiers à inclure dans la sauvegarde. On peut exclure certains dossiers aussi, ou certaines extensions, expressions régulières. Par défaut, c'est le /home qui est sauvegardé,​ adaptez le chemin.
  
-Sur la machine client (Blanu), ​pour le momentc'est tout !+Sur la machine client (Blanu), ​nous allons mettre ​le certificat dans notre dossier ''/​etc/​burp/​xunre/''​ (ils seront automatiquement généré au premier contact avec xunre). Doncmodifiez les lignes suivantes :  
 +<​code>​ 
 +ca_burp_ca = /​usr/​sbin/​burp_ca 
 +ca_csr_dir = /​etc/​burp/​xunre/​CA-client 
 +ssl_cert_ca = /​etc/​burp/​xunre/​ssl_cert_ca.pem 
 +ssl_cert = /​etc/​burp/​xunre/​ssl_cert-client.pem 
 +ssl_key = /​etc/​burp/​xunre/​ssl_cert-client.key 
 +# Attention celui-ci doit être le même nom côté serveur et client ! 
 +ssl_peer_cn = xunreserver 
 +</​code>​ 
 + 
 +C'est tout pour le moment sur Blanu, il faut configurer un peu Xunre pour aller plus loin.
  
 === Ports, hyperviseurs,​ etc === === Ports, hyperviseurs,​ etc ===
  
-Il y a aussi des indications de port (''​port = 4971''​ et ''​status_port = 4972''​). Ne touchez pas à ça sans nécessité. Si vous êtes dans une configuration standard (deux serveurs dédiés, chacun son ip/nom de domaine) ça marchera simplement. ​+Il y a aussi des indications de port (''​port = 4971''​ et ''​status_port = 4972''​). Ne touchez pas à ça sans nécessité. Si vous êtes dans une configuration standard (deux serveurs dédiés, chacun son ip/nom de domaine) ça marchera simplement. ​Ne touchez pas à iptable !
  
 == Cas de deux VM sur le même hyperviseur == == Cas de deux VM sur le même hyperviseur ==
Ligne 70: Ligne 94:
 Si ce n'est pas fait, lors d'une sauvegarde, on aura l'​erreur suivante : Si ce n'est pas fait, lors d'une sauvegarde, on aura l'​erreur suivante :
  
-  2019-06-09 08:18:19: burp[24782] Could not find ssl_cert /​etc/​burp/​ssl_cert-client.pem:​ No such file or directory +  2019-06-09 08:18:19: burp[24782] Could not find ssl_cert /etc/burp/xunre/​ssl_cert-client.pem:​ No such file or directory 
-  2019-06-09 08:18:19: burp[24782] Could not find ssl_key /​etc/​burp/​ssl_cert-client.key:​ No such file or directory +  2019-06-09 08:18:19: burp[24782] Could not find ssl_key /etc/burp/xunre/​ssl_cert-client.key:​ No such file or directory 
-  2019-06-09 08:18:19: burp[24782] Could not find ssl_cert_ca /​etc/​burp/​ssl_cert_ca.pem:​ No such file or directory+  2019-06-09 08:18:19: burp[24782] Could not find ssl_cert_ca /etc/burp/xunre/​ssl_cert_ca.pem:​ No such file or directory
  
 == Cas d'un client envoyant vers un serveur dans une VM == == Cas d'un client envoyant vers un serveur dans une VM ==
 Dans le cas où Blanu est sur un dédié, et que Xunre est sur un autre dédié MAIS dans une VM, il y a aussi un problème, lié au fait que le nom de domaine ne va pas forcément renvoyer sur la VM. Pour être plus précis, ici on ne passe pas par Apache. Dans le cas où Blanu est sur un dédié, et que Xunre est sur un autre dédié MAIS dans une VM, il y a aussi un problème, lié au fait que le nom de domaine ne va pas forcément renvoyer sur la VM. Pour être plus précis, ici on ne passe pas par Apache.
  
-<WRAP center round help 60%+À ce moment, on va bidouiller iptable. Plus précisément,​ on va faire que les deux ports en question de l'​hyperviseur renvoie sur ceux de la VM. Dans l'​exemple suivant, remplacez ''​192.168.20.16''​ par l'ip interne de votre VM servant à la sauvegarde : 
-Comment on fait ? je n'en sais rien ^^" + 
-</WRAP>+<code>iptables -t nat -I PREROUTING -p tcp --destination-port 4971 -j DNAT --to 192.168.20.16:​4971 
 +iptables -t nat -I PREROUTING -p tcp --destination-port 4972 -j DNAT --to 192.168.20.16:​4972 
 + 
 +iptables-save > /​etc/​iptables/​iptables.rules 
 +</code>
  
  
Ligne 99: Ligne 127:
 ca_server_name = burpserver ca_server_name = burpserver
 ca_burp_ca = /​usr/​sbin/​burp_ca</​code>​ ca_burp_ca = /​usr/​sbin/​burp_ca</​code>​
 +
 +<WRAP center round important 60%>
 +Si le client a comme valeur ​
 +  ssl_peer_cn = xunreserver
 +Alors le serveur doit avoir la valeur
 +  ca_server_name = xunreserver
 +</​WRAP>​
  
  
Ligne 107: Ligne 142:
   restore_client = blanu   restore_client = blanu
  
-Enregistrez, savourez.+Enregistrez.
  
-Il faut encore déclarer ailleurs les détails du ou des clients à sauver. Chaque client est représenté par un fichier dans ''/​etc/​burp/​clientconfdir/'',​ sur le serveur (Xunre). On crée donc un fichier ''/​etc/​burp/​clientconfdir/​Machin'',​ dans lequel on renseigne la même chose que pour cname et password dans la config des clients. <wrap important>​Attention,​ il faut paramétrer le client local même si on n'a pas prévu de s'en servir</​wrap>​ ; ici, ce sera le fichier ''/​etc/​burp/​clientconfdir/​xunre'',​ en plus de ''/​etc/​burp/​clientconfdir/​blanu''​.+Il faut encore déclarer ailleurs les détails du ou des clients à sauver. Chaque client est représenté par un fichier dans ''/​etc/​burp/​clientconfdir/'',​ sur le serveur (Xunre). On crée donc un fichier ''/​etc/​burp/​clientconfdir/​Machin'',​ dans lequel on renseigne la même chose que pour cname et password dans la config des clients. <wrap important>​Attention,​ il faut paramétrer le client local sur Xunre; ​même si on n'a pas prévu de s'en servir</​wrap>​ ; ici, ce sera le fichier ''/​etc/​burp/​clientconfdir/​xunre'',​ en plus de ''/​etc/​burp/​clientconfdir/​blanu''​. 
 +  sudo nano /​etc/​burp/​clientconfdir/​blanu
  
-Le contenu minimal du fichier ressemble à ça :+Le contenu minimal du fichier ressemble à ça (en mettant le bon mot de passe) ​:
 <​code>​cname = blanu <​code>​cname = blanu
 password = abcd</​code>​ password = abcd</​code>​
Ligne 120: Ligne 156:
  
 Sur chacun des serveurs, lancer la commande suivante, qui va vérifier que tout se passe bien, sans rien écrire (cela liste les sauvegardes,​ aussi, quand il y en a) : Sur chacun des serveurs, lancer la commande suivante, qui va vérifier que tout se passe bien, sans rien écrire (cela liste les sauvegardes,​ aussi, quand il y en a) :
-  sudo burp -a l+  sudo burp -c /​etc/​burp/​xunre/​burp.conf ​-a l
  
-S'il n'y a pas d'​erreur SSL ou autre, c'est le moment de faire un backup à la main : +S'il n'y a pas d'​erreur SSL ou autre, c'est le moment de faire un backup à la main (à lancer dans screen/tmux parce que ça peut être long !) 
-  sudo burp -a b+  sudo burp -c /​etc/​burp/​xunre/​burp.conf ​-a b
  
-Pour vérifier les sauvegarde d'un client externe. Par exemple, sur Xunre, vérifier qu'on a bien les sauvegardes de Blanu :+Explication : 
 +  * ''​-c /​etc/​burp/​xunre/​burp.conf''​ : indique le fichier de configuration à prendre en compte, ici celui qui enverra vers xunre. 
 +  * ''​-a l''​ : littéralement "​action list". Va vérifier l'​état du bazar sans rien écrire. Permet donc de voir si ça va bien se passer. 
 +  * ''​-a b''​ : littéralement "​action backup"​. Lance un backup classique. 
 + 
 +Pour vérifier les sauvegarde d'un client externe, par exemple, sur Xunre, vérifier qu'on a bien les sauvegardes de Blanu :
   sudo burp -a l -C blanu   sudo burp -a l -C blanu
 +
 +==== Réaliser les sauvegardes régulières ====
 +Cela fonctionne juste avec cron.
 +
 +=== Côté client (Blanu) ===
 +
 +Si tout va bien, il est temps de paramétrer des sauvegardes régulières.
 +
 +Sur votre client Blanu, créez les règles suivantes dans le cron de l'​utilisateur root (''​crontab -e''​ en tant que root).
 +
 +Pour le client :
 +<​code>​20 4 * * * /​usr/​sbin/​burp -c /​etc/​burp/​xunre/​burp.conf -a t -q 1200 >>/​var/​log/​burp-client 2>&​1</​code>​
 +  * ''​20 4 * * *''​ le client se lance toutes les 20 minutes. Cela permet de sauvegarder régulièrement dans la journée (moins de delta à envoyer d'un coup).
 +  * ''​-a''​ pour "​action",​ ''​t''​ pour "timed backup"​. ​
 +  * ''​-q 1200''​ utilise un nombre aléatoire (ici en seconde : 1200 secondes soit 20 minutes) pour lancer la commande.
 +  * ''>>/​var/​log/​burp-client 2>&​1''​ écrit un fichier de log. La sortie d'​erreur (STDERR) est redirigée vers la sortie standart (STDOUT) donc aussi écrite dans le log.
 +
 +Si vous envoyez les sauvegardes à un second serveur, vous pouvez ajouter la ligne suivante :
 +<​code>​20 4 * * * /​usr/​sbin/​burp -c /​etc/​burp/​crino/​borg.conf -a t -q 1200 >>/​var/​log/​burp_2sauvgarde 2>&​1</​code>​
 +  * ''​-c /​etc/​burp/​crino/​borg.conf''​ indique un autre fichier de configuration à prendre en compte (cf [[fr:​burp#​sauvegarder_sur_un_2eme_servers|plus bas]]pour les détails)
 +
 +Voici à quoi devrait ressembler votre cron pour la partie concernant Burp :
 +<​code>​
 +# CLIENT Burp
 +20 4 * * * /​usr/​sbin/​burp -c /​etc/​burp/​xunre/​burp.conf -a t -q 1200 >>/​var/​log/​burp-client 2>&1
 +
 +# Si vous avez du mysql ou autre BDD, pensez au script ​
 +00 1 * * * /​home/​user/​script/​mysqlbackup.sh
 +</​code>​
 +
 +<WRAP center round todo 60%>
 +Faire un lien vers le script de mysql backup.
 +</​WRAP>​
 +
 +
 +=== Côté serveur (Xunre) ===
 +
 +Votre crontab reprend les mêmes éléments côté client mais ajoute des éléments côté serveur pour s'​assurer que tout va bien (pensez à changer l'​email et à vous assurer que votre serveur sait envoyer des mails) :
 +<​code>#​ SERVER Burp
 +# Envoie un résumé à 6h (donc, tous les jours).
 +0 6 * * * /​usr/​sbin/​burp -a S | mail -s "​Résumé des backup"​ admin@mon email.com
 +
 +# The following will run file deduplication over all client storages every
 +# Saturday at 8 in the morning. Again, if your server is using a different
 +# config file to /​etc/​burp/​burp-server.conf,​ change that argument.
 +#0 8 * * 6 /​usr/​sbin/​bedup -l -c /​etc/​burp/​burp-server.conf >>/​var/​log/​burp-bedup 2>&1
 +</​code>​
 +
 +<WRAP center round todo 60%>
 +Cette partie serait à améliorer : envoyer un mail s'il y a un souci, plutôt ? 
 +
 +La déduplication,​ j'ai pas tout compris, et ça semble plutôt se paramétrer dans le fichier de conf, mais je laisse le code (commenté) pour qui pourra comprendre.
 +</​WRAP>​
  
 ==== Restaurer une sauvegarde ==== ==== Restaurer une sauvegarde ====
Ligne 149: Ligne 243:
   burp -ar -C nom_du_client   burp -ar -C nom_du_client
   ​   ​
-==== Sauvegarder sur un 2eme servers ​==== +==== Sauvegarder sur un deuxième serveur ​==== 
-Faire une copie du fichier de configuration client pour le deuxième ​server+Faire une copie du fichier de configuration client pour le deuxième ​serveur, Crino 
-  cp /​etc/​burp/​burp.conf /​etc/​burp/​burp-2sauvgarde.conf +  cp /​etc/​burp/​burp.conf /etc/burp/crino/​burp.conf 
-  nano /​etc/​burp/​burp-2sauvgarde.conf+  nano /etc/burp/crino/burp.conf
  
-Changer ​IP, nom, mdp +Changer ​l'​adresse du serveurle mdp, peut-être le nom du client pour ne pas s'​emmêler les pinceaux ? Ainsi que l'​emplacement du certificat. 
-  server = IP 2eme server +<​code>​ 
-  password = ******* +server = crino 
-  cname = client_blabla+password = ******* 
 +cname = blanucrino
  
-Changer l'​emplacement du certificat du 2eme server +ca_burp_ca = /​usr/​sbin/​burp_ca 
-  # Uncomment the following lines to automatically generate a certificate signing +ca_csr_dir = /etc/burp/crino/CA-client 
-  # request and send it to the server. +ssl_cert_ca = /​etc/​burp/​crino/​ssl_cert-client_ca.pem 
-  ​ca_burp_ca = /​usr/​sbin/​burp_ca +ssl_cert = /​etc/​burp/​crino/​ssl_cert-client.pem 
-  ca_csr_dir = /etc/burp/server2/CA-client_blabla+ssl_key = /​etc/​burp/​crino/​ssl_cert-client.key
  
-  # SSL certificate authority - same file on both server and client +ssl_peer_cn ​crino 
-  ssl_cert_ca ​/​etc/​burp/​ssl_cert-client_ca_blabla.pem +</code>
- +
-  # Client SSL certificate +
-  ssl_cert = /etc/​burp/​ssl_cert-client_blabla.pem +
- +
-  # Client SSL key +
-  ssl_key = /​etc/​burp/​ssl_cert-client_blabla.key +
- +
-Changer le nom du server +
-  ssl_peer_cn = server2+
  
-Ne pas oublier de changer le nom sur le server+Crino (côté second serveur, donc), doit avoir son nom en rapport pour le certificat ​
-  ca_server_name = server2+  ca_server_name = crino
  
-Lancer la commande de vérification:​ +Lancer la commande de vérification ​depuis Blanu 
-  burp -c /​etc/​burp/​burp-2sauvgarde.conf -a l+  burp -c /etc/burp/crino/burp.conf -a l
   ​   ​
 Pour lancer une sauvgarde manuellement:​ Pour lancer une sauvgarde manuellement:​
-  burp -c /​etc/​burp/​burp-2sauvgarde.conf -a b+  burp -c /etc/burp/crino/burp.conf -a b
  
-=====Burp-ui , interface web=====+===== Burp-ui , interface web =====
 L'​interface web peut simplifier certaines opérations et c'est plus visuel. Cependant il faudra quand même paramétrer proprement Burp en amont. L'​interface web peut simplifier certaines opérations et c'est plus visuel. Cependant il faudra quand même paramétrer proprement Burp en amont.
- + 
 +<WRAP center round todo 60%> 
 +Cette partie n'est pas assez testée, on n'a pas encore fait marcher ce truc. 
 +</​WRAP>​ 
 ====Installation de Burp-ui==== ====Installation de Burp-ui====
 Voir https://​burp-ui.readthedocs.io/​en/​latest/​installation.html Voir https://​burp-ui.readthedocs.io/​en/​latest/​installation.html
Ligne 265: Ligne 355:
 </​code>​ </​code>​
  
 +===== Erreurs diverses =====
 +==== Sur le serveur ====
 +
 +L'​install de base a foiré, vous avez purgé le paquet, recommencé,​ et vous avez cette erreur :
 +<​code>​
 +2020-12-16 09:43:46 +0000: burp[6400] Connecting to localhost:​4971
 +2020-12-16 09:43:46 +0000: burp[6400] main socket: network read problem in asfd_do_read_ssl:​ 1 - 0=Success
 +140108238101952:​error:​1409441B:​SSL routines:​ssl3_read_bytes:​tlsv1 alert decrypt error:​../​ssl/​record/​rec_layer_s3.c:​1544:​SSL alert number 51
 +2020-12-16 09:43:46 +0000: burp[6400] This is probably caused by the peer exiting.
 +2020-12-16 09:43:46 +0000: burp[6400] Please check the peer's logs.
 +2020-12-16 09:43:46 +0000: burp[6400] problem with auth
 +</​code>​
 +
 +Faites ​
 +  sudo ps -A | grep burp
 +Et tuez le processus, puis relancez les commandes.
 +
 +==== Sur le client ====
 +=== Peer exiting ===
 +
 +On a changé le serveur où sauver les choses, et là, burp nous dit ça côté client :
 +<​code>​burp -a l
 +2020-12-16 10:10:40 +0000: burp[7295] Could not find ssl_cert_ca /​etc/​burp/​ssl_cert_ca.pem:​ No such file or directory
 +2020-12-16 10:10:40 +0000: burp[7295] Connecting to nuxru.khaganat.net:​4971
 +2020-12-16 10:10:40 +0000: burp[7295] main socket: network read problem in asfd_do_read_ssl:​ 1 - 0=Success
 +140426189172160:​error:​14094418:​SSL routines:​ssl3_read_bytes:​tlsv1 alert unknown ca:​../​ssl/​record/​rec_layer_s3.c:​1544:​SSL alert number 48
 +2020-12-16 10:10:40 +0000: burp[7295] This is probably caused by the peer exiting.
 +2020-12-16 10:10:40 +0000: burp[7295] Please check the peer's logs.
 +2020-12-16 10:10:40 +0000: burp[7295] problem with auth
 +</​code>​
 +
 +Ici aussi, tuez le processus ET supprimez le certificat actuel :
 +  sudo rm /​etc/​burp/​ssl_cert*
 +
 +En relançant la commande, cela le régènerera.
 +
 +=== unexpected command in authorise_client ===
  
 +<​code>​burp -c /​etc/​burp/​nuxru/​burp_nuxru.conf -a l
 +2020-12-16 10:53:00 +0000: burp[1190987] Could not find ssl_cert /​etc/​burp/​nuxru/​ssl_cert-client.pem:​ No such file or directory
 +2020-12-16 10:53:00 +0000: burp[1190987] Could not find ssl_key /​etc/​burp/​nuxru/​ssl_cert-client.key:​ No such file or directory
 +2020-12-16 10:53:00 +0000: burp[1190987] Could not find ssl_cert_ca /​etc/​burp/​nuxru/​ssl_cert_ca.pem:​ No such file or directory
 +2020-12-16 10:53:00 +0000: burp[1190987] Connecting to nuxru.khaganat.net:​4971
 +2020-12-16 10:53:00 +0000: burp[1190987] unexpected command in authorise_client():​ e:​001D:​unable to authorise on server</​code>​
 +Avant de trop s'​exciter... Simplement vérifier que côté serveur, le client a été renseigné dans ''/​etc/​burp/​clientconfdir/​monclient''​ et que la ligne ''​restore_client = monclient''​ est ajoutée dans ''/​etc/​burp/​burp-server.conf''​.
  
 ===== Sources, Liens utiles ===== ===== Sources, Liens utiles =====
CC Attribution-Share Alike 4.0 International Driven by DokuWiki
fr/burp.1607591448.txt.gz · Dernière modification: 2020/12/10 09:10 par zatalyz

Licences Mentions légales Accueil du site Contact