Différences
Ci-dessous, les différences entre deux révisions de la page.
Prochaine révision | Révision précédente | ||
fr:burp [2019/05/30 22:25] – créée Deed | fr:burp [2023/11/10 09:09] (Version actuelle) – [Côté client (Blanu)] zatalyz | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== Burp ====== | ====== Burp ====== | ||
- | BROUILLON | + | <WRAP center round tip 60%> |
+ | Paramétrer le logiciel n'est qu'une part de la sauvegarde. | ||
- | Sauvegarde des serveurs | + | Il faut aussi passer du temps à voir quels dossiers sauvegarder. |
- | =====Installation de Burp===== | + | Si vous avez des bases de donnée, pensez à réaliser un petit script qui va les sauver (//dump//) dans un dossier |
- | Coté client et server | + | sauvegardé par Burp. |
- | apt install burp | + | |
+ | Les principes généraux de la sauvegarde d'un serveur sont dans l' | ||
+ | |||
+ | <WRAP center round info 60%> | ||
+ | Trop de blabla ? La version courte de cet article est sur [[fr: | ||
+ | </ | ||
+ | ===== Burp, le logiciel de base ===== | ||
+ | |||
+ | |||
+ | ==== Installation de Burp ==== | ||
+ | Le même paquet permet de faire client et serveur. | ||
+ | |||
+ | Sur Debian | ||
+ | | ||
+ | |||
+ | <WRAP center round info 90%> | ||
+ | C'est le paramétrage des fichiers de configuration qui va faire que Burp agit en serveur, en client, ou les deux. | ||
+ | * Le client est sur le serveur à sauvegarder, | ||
+ | * Le serveur est à paramétrer où on va stocker les sauvegardes. Les clients se connectent à lui et lui envoient les sauvegardes. Le serveur gère combien de temps il archive le bazar. | ||
+ | |||
+ | Le serveur est aussi une autorité de certification pour les clients, les échanges se font en SSL. | ||
+ | |||
+ | Il faut toujours paramétrer un client sur le serveur, même s'il ne servira pas ensuite ; sinon il y a des soucis pour lire les sauvegardes. | ||
+ | </ | ||
+ | |||
+ | <WRAP center round tip 90%> | ||
+ | Pour la suite de l' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | En lojban, Blanu veut dire " | ||
+ | </ | ||
+ | <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 (" | ||
+ | |||
+ | Ainsi, la configuration dans Blanu pour l' | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Paramétrer les fichiers de client ==== | ||
+ | La partie client se configure avec le fichier ''/ | ||
+ | |||
+ | 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 ''/ | ||
+ | |||
+ | Nous allons faire simple et modifier uniquement les lignes suivantes : | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | Sur la machine client (Blanu), nous allons mettre le certificat dans notre dossier ''/ | ||
+ | < | ||
+ | ca_burp_ca = / | ||
+ | ca_csr_dir = / | ||
+ | ssl_cert_ca = / | ||
+ | ssl_cert = / | ||
+ | ssl_key = / | ||
+ | # Attention celui-ci doit être le même nom côté serveur et client ! | ||
+ | ssl_peer_cn = xunreserver | ||
+ | </ | ||
+ | |||
+ | C'est tout pour le moment sur Blanu, il faut configurer un peu Xunre pour aller plus loin. | ||
+ | |||
+ | === Ports, hyperviseurs, | ||
+ | |||
+ | Il y a aussi des indications de port ('' | ||
+ | |||
+ | == Cas de deux VM sur le même hyperviseur == | ||
+ | La bonne pratique d'une sauvegarde consiste à envoyer les données sauvegardées dans un autre lieu physique (de préférence distant de plusieurs centaines de kilomètres). Ainsi, si le datacenter crame, vous n'avez pas tout perdu. | ||
+ | |||
+ | Mais diverses raisons peuvent amener à sauver une VM sur une autre, sur le même [[fr: | ||
+ | |||
+ | Si Xunre et Blanu sont deux VM sur le même hyperviseur, | ||
+ | |||
+ | On peut faire mentir le DNS, en ajoutant l'ip par rapport au nom de domaine. | ||
+ | |||
+ | Par exemple, dans ''/ | ||
+ | |||
+ | 192.168.20.13 xunre.khaganat.net | ||
+ | |||
+ | Si ce n'est pas fait, lors d'une sauvegarde, on aura l' | ||
+ | |||
+ | 2019-06-09 08:18:19: burp[24782] Could not find ssl_cert / | ||
+ | 2019-06-09 08:18:19: burp[24782] Could not find ssl_key / | ||
+ | 2019-06-09 08:18:19: burp[24782] Could not find ssl_cert_ca / | ||
+ | |||
+ | == 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. | ||
+ | |||
+ | À ce moment, on va bidouiller iptable. Plus précisément, | ||
+ | |||
+ | < | ||
+ | iptables -t nat -I PREROUTING -p tcp --destination-port 4972 -j DNAT --to 192.168.20.16: | ||
+ | |||
+ | iptables-save > / | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Paramétrer la partie serveur ==== | ||
+ | Sur Xunre, qui va stocker les sauvegardes, | ||
+ | |||
+ | Paramétrez “keep” (comment on garde les sauvegardes). On créé autant de lignes “keep = ” à la suite que nécessaire. Le code suivant se lirait : une sauvegarde par jour pendant 7 jours, puis une par semaine pendant 4 semaine, puis une par quatre semaine pendant 6 périodes de quatre semaines. Donc 6 mois de conservation maximum, mais en éliminant des redondances au fil du temps. | ||
+ | |||
+ | keep = 7 | ||
+ | keep = 4 | ||
+ | keep = 6 | ||
+ | |||
+ | On peut aussi modifier où sont stockées les sauvegardes. C'est le paramètre suivant (et sa valeur par défaut) : | ||
+ | directory = / | ||
+ | |||
+ | On peut aussi modifier les valeurs du CA. Laisser la configuration par défaut est aussi simple et évitera des erreurs par la suite : | ||
+ | < | ||
+ | ca_name = burpCA | ||
+ | ca_server_name = burpserver | ||
+ | ca_burp_ca = / | ||
+ | |||
+ | <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 | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | === Déclarer les clients === | ||
+ | Toujours dans ce fichier, pour pouvoir restaurer d' | ||
+ | restore_client = xunre | ||
+ | restore_client = blanu | ||
+ | |||
+ | Enregistrez. | ||
+ | |||
+ | Il faut encore déclarer ailleurs les détails du ou des clients à sauver. Chaque client est représenté par un fichier dans ''/ | ||
+ | sudo nano / | ||
+ | |||
+ | Le contenu minimal du fichier ressemble à ça (en mettant le bon mot de passe) : | ||
+ | < | ||
+ | password = abcd</ | ||
+ | |||
+ | ==== Lancer les sauvegardes, | ||
+ | Sur le serveur Xunre, lancer la commande suivante, qui va générer les certificats SSL : | ||
+ | sudo burp -c / | ||
+ | |||
+ | Sur chacun des serveurs, lancer la commande suivante, qui va vérifier que tout se passe bien, sans rien écrire (cela liste les sauvegardes, | ||
+ | sudo burp -c / | ||
+ | |||
+ | S'il n'y a pas d' | ||
+ | sudo burp -c / | ||
+ | |||
+ | Explication : | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | 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 | ||
+ | |||
+ | ==== 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' | ||
+ | |||
+ | Pour le client : | ||
+ | < | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * ''>>/ | ||
+ | |||
+ | Si vous envoyez les sauvegardes à un second serveur, vous pouvez ajouter la ligne suivante : | ||
+ | < | ||
+ | * '' | ||
+ | |||
+ | Voici à quoi devrait ressembler votre cron pour la partie concernant Burp : | ||
+ | < | ||
+ | # CLIENT Burp | ||
+ | 20 4 * * * / | ||
+ | |||
+ | # Si vous avez du mysql ou autre BDD, pensez au script | ||
+ | 00 1 * * * / | ||
+ | </ | ||
+ | <WRAP center round info 60%> | ||
+ | Retrouvez le superbe script de sauvegarde des bases de donnés [[fr: | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | === 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' | ||
+ | < | ||
+ | # Envoie un résumé à 6h (donc, tous les jours). | ||
+ | 0 6 * * * / | ||
+ | |||
+ | # 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 / | ||
+ | #0 8 * * 6 / | ||
+ | </ | ||
+ | |||
+ | <WRAP center round todo 60%> | ||
+ | Cette partie serait à améliorer : envoyer un mail s'il y a un souci, plutôt ? | ||
+ | |||
+ | La déduplication, | ||
+ | </ | ||
+ | |||
+ | ==== Restaurer une sauvegarde ==== | ||
+ | Si on veut contrôler, on peut décompresser une archive dans un dossier temporaire sur le serveur (option '' | ||
+ | |||
+ | sudo burp -a r -b 0000001 -d / | ||
+ | Pour décompresser une archive venant d'une autre machine, on ajoute '' | ||
+ | sudo burp -a r -C blanu -b 0000001 -d / | ||
+ | |||
+ | Les options : | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | Restauration simplement dans le client | ||
+ | burp -ar -C nom_du_client | ||
+ | |||
+ | ==== Sauvegarder sur un deuxième serveur ==== | ||
+ | Faire une copie du fichier de configuration client pour le deuxième serveur, Crino : | ||
+ | cp / | ||
+ | nano / | ||
+ | |||
+ | Changer l' | ||
+ | < | ||
+ | server = crino | ||
+ | password = ******* | ||
+ | cname = blanucrino | ||
+ | |||
+ | ca_burp_ca = / | ||
+ | ca_csr_dir = / | ||
+ | ssl_cert_ca = / | ||
+ | ssl_cert = / | ||
+ | ssl_key = / | ||
+ | |||
+ | ssl_peer_cn = crino | ||
+ | </ | ||
+ | |||
+ | Crino (côté second serveur, donc), doit avoir son nom en rapport pour le certificat : | ||
+ | ca_server_name = crino | ||
+ | |||
+ | Lancer la commande de vérification depuis Blanu : | ||
+ | burp -c / | ||
+ | |||
+ | Pour lancer une sauvgarde manuellement: | ||
+ | burp -c / | ||
+ | |||
+ | ===== Burp-ui , interface web ===== | ||
+ | L' | ||
+ | |||
+ | <WRAP center round todo 60%> | ||
+ | Cette partie n'est pas assez testée, on n'a pas encore fait marcher ce truc. | ||
+ | </ | ||
- | =====Burp-ui , interface web===== | ||
====Installation de Burp-ui==== | ====Installation de Burp-ui==== | ||
- | Dans une VM web : | + | Voir https:// |
+ | |||
+ | En root : | ||
apt install python3-pip | apt install python3-pip | ||
pip3 install burp-ui | pip3 install burp-ui | ||
| | ||
- | Pour voir si tout fonctionne | + | Pour voir si tout fonctionne |
burp-ui -- | burp-ui -- | ||
- | ====configuration conf==== | + | Par défaut, le fichier de configuration se trouve dans ''/ |
+ | |||
+ | Si vous testez juste "si ça marche", | ||
+ | |||
+ | ==== burpui.cfg | ||
+ | Changez la partie concernant les identifiants. Il y a plusieurs possibilités, | ||
+ | |||
+ | <WRAP center round todo 60%> | ||
+ | bloc à faire : paramétrer un fichier de conf idéal, commenté, et le partager ici. | ||
+ | </ | ||
====configuration service==== | ====configuration service==== | ||
+ | <WRAP center round todo 60%> | ||
+ | bloc à faire : expliquer comment faire que burpui soit en prod, donc toujours lancé. | ||
+ | </ | ||
====configuration web==== | ====configuration web==== | ||
+ | ===Apache2=== | ||
+ | |||
+ | <code bash> | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===Nginx :=== | ||
+ | |||
+ | Sur le serveur où est installé burp-ui : | ||
+ | <code bash> | ||
+ | server { | ||
+ | listen 80; | ||
+ | server_name burpui.example.com; | ||
+ | |||
+ | access_log | ||
+ | error_log | ||
+ | |||
+ | location / { | ||
+ | |||
+ | # you need to change this to " | ||
+ | proxy_set_header | ||
+ | proxy_set_header | ||
+ | proxy_set_header | ||
+ | |||
+ | proxy_read_timeout 300; | ||
+ | proxy_connect_timeout 300; | ||
+ | |||
+ | proxy_pass http:// | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Si la VM où est burp-ui est elle-même derrière un proxy, la VM-proxy doit contenir un fichier de configuration de ce genre : | ||
+ | |||
+ | < | ||
+ | server { | ||
+ | listen | ||
+ | server_name " | ||
+ | |||
+ | location / { | ||
+ | proxy_set_header | ||
+ | proxy_set_header | ||
+ | proxy_pass | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | ===== Erreurs diverses ===== | ||
+ | ==== Sur le serveur ==== | ||
+ | === main socket: network read problem === | ||
+ | |||
+ | L' | ||
+ | < | ||
+ | 2020-12-16 09:43:46 +0000: burp[6400] Connecting to localhost: | ||
+ | 2020-12-16 09:43:46 +0000: burp[6400] main socket: network read problem in asfd_do_read_ssl: | ||
+ | 140108238101952: | ||
+ | 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 | ||
+ | </ | ||
+ | |||
+ | Faites | ||
+ | sudo ps -A | grep burp | ||
+ | Et tuez le processus, puis relancez les commandes. | ||
+ | |||
+ | === could not connect to x:4971 === | ||
+ | Après un reboot, j'ai eu ceci lors d'une quelconque commande avec burp : | ||
+ | |||
+ | < | ||
+ | sudo burp -c / | ||
+ | 2023-07-28 06:05:20 +0000: burp[10783] Connecting to (adresse ip):4971 | ||
+ | 2023-07-28 06:05:20 +0000: burp[10783] could not connect to (adresse ip):4971 | ||
+ | </ | ||
+ | |||
+ | Simplement, le démon de burp sur le serveur ne s'est pas rallumé... | ||
+ | |||
+ | Pour le lancer : | ||
+ | < | ||
+ | |||
+ | ==== Sur le client ==== | ||
+ | === Peer exiting === | ||
+ | |||
+ | On a changé le serveur où sauver les choses, et là, burp nous dit ça côté client : | ||
+ | < | ||
+ | 2020-12-16 10:10:40 +0000: burp[7295] Could not find ssl_cert_ca / | ||
+ | 2020-12-16 10:10:40 +0000: burp[7295] Connecting to nuxru.khaganat.net: | ||
+ | 2020-12-16 10:10:40 +0000: burp[7295] main socket: network read problem in asfd_do_read_ssl: | ||
+ | 140426189172160: | ||
+ | 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 | ||
+ | </ | ||
+ | |||
+ | Ici aussi, tuez le processus ET supprimez le certificat actuel : | ||
+ | sudo rm / | ||
+ | |||
+ | En relançant la commande, cela le régènerera. | ||
+ | |||
+ | === unexpected command in authorise_client === | ||
+ | |||
+ | < | ||
+ | 2020-12-16 10:53:00 +0000: burp[1190987] Could not find ssl_cert / | ||
+ | 2020-12-16 10:53:00 +0000: burp[1190987] Could not find ssl_key / | ||
+ | 2020-12-16 10:53:00 +0000: burp[1190987] Could not find ssl_cert_ca / | ||
+ | 2020-12-16 10:53:00 +0000: burp[1190987] Connecting to nuxru.khaganat.net: | ||
+ | 2020-12-16 10:53:00 +0000: burp[1190987] unexpected command in authorise_client(): | ||
+ | Avant de trop s' | ||
+ | ===== Sources, Liens utiles ===== | ||
+ | Voir aussi : | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
- | {{tag> | + | {{tag> |