Logo Khaganat
Traductions de cette page?:

Ceci est une ancienne révision du document !


Burp

Paramétrer le logiciel n'est qu'une part de la sauvegarde.

Il faut aussi passer du temps à voir quels dossiers sauvegarder.

Si vous avez des bases de donnée, pensez à réaliser un petit script qui va les sauver (dump) dans un dossier sauvegardé par Burp.

Les principes généraux de la sauvegarde d'un serveur sont dans l'article Processus de sauvegarde sur un serveur.

Burp, le logiciel de base

Installation de Burp

Le même paquet permet de faire client et serveur.

Sur Debian

sudo apt install burp

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, il va préparer les sauvegardes et les envoyer là où on lui demande.
  • 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.

Pour la suite de l'article, nous avons deux serveurs d'exemple :

  • Blanu, le serveur qu'on veut sauvegarder (soit “le client”, mais cette terminologie risque de prêter à confusion vu qu'on a des fichiers de configuration de client des deux côtés)
  • Xunre, le serveur qui va stocker les sauvegardes (soit “le serveur”, et ça prête déjà à confusion…)

En lojban, Blanu veut dire “bleu” et Xunre “rouge” ;-)

Paramétrer les fichiers de client

La partie client se configure avec le fichier /etc/burp/burp.conf.

Burp permet beaucoup de choses et ce fichier, abondamment commenté, donne un aperçu des possibilités.

Nous allons faire simple et modifier uniquement les lignes suivantes :

  • server = ::1 ⇒ l'adresse du serveur à qui envoyer les sauvegardes. ::1 indique que c'est en local (à laisser tel quel sur Xunre). Sur Blanu, on va indiquer l'adresse de Xunre : server = xunre.khaganat.net
  • 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 !
  • 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.
  • 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.

Il y a aussi des indications de port (port = 4971 et status_port = 4972). Ne touchez pas à ça sans nécessité. Si Xunre et Blanu sont deux VM sur le même hyperviseur, elles communiqueront très bien avec ces ports par défaut, sans toucher à iptable.

Par contre, dans le cas de deux VM sur un hyperviseur, c'est l'adresse de Xunre qui va poser souci. Il faut passer par les ip internes.

On peut aussi faire mentir le DNS, en ajoutant l'ip par rapport au nom de domaine.

Par exemple, dans /etc/hosts de Blanu (mon client), j'ajoute l'ip interne de Xunre.

192.168.20.13 xunre.khaganat.net

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_key /etc/burp/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

Sur la machine client (Blanu), pour le moment, c'est tout !

Paramétrer la partie serveur

Sur Xunre, qui va stocker les sauvegardes, le client doit aussi être configuré, comme indiqué au dessus, mais on va aussi en plus paramétrer /etc/burp/burp-server.conf.

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 = /var/spool/burp

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_conf = /etc/burp/CA.cnf
ca_name = burpCA
ca_server_name = burpserver
ca_burp_ca = /usr/sbin/burp_ca

Déclarer les clients

Toujours dans ce fichier, pour pouvoir restaurer d'autres clients que le local, indiquer leurs noms (autant de ligne que de clients) :

restore_client = xunre
restore_client = blanu

Enregistrez, savourez.

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. Attention, il faut paramétrer le client local même si on n'a pas prévu de s'en servir ; ici, ce sera le fichier /etc/burp/clientconfdir/xunre, en plus de /etc/burp/clientconfdir/blanu.

Le contenu minimal du fichier ressemble à ça :

cname = blanu
password = abcd

Lancer les sauvegardes, contrôler que tout marche

Sur le serveur Xunre, lancer la commande suivante, qui va générer les certificats SSL :

sudo burp -c /etc/burp/burp-server.conf

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

S'il n'y a pas d'erreur SSL ou autre, c'est le moment de faire un backup à la main :

sudo burp -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 :

sudo burp -a l -C blanu

Restaurer une sauvegarde

Si on veut contrôler, on peut décompresser une archive dans un dossier temporaire sur le serveur (option -d /chemin/).

sudo burp -a r -b 0000001 -d /home/user/burptemp/

Pour décompresser une archive venant d'une autre machine, on ajoute -C Nomduclient :

sudo burp -a r -C blanu -b 0000001 -d /home/user/burptemp/

Les options :

  • -a comme action, suivi de
    • r indique que l'action à effectuer est une restauration (-a r),
    • b pour un backup (-a b),
    • l pour lister (-a l)
  • -b numero_sauvegarde est la sauvegarde qu'on va restaurer, ce numéro étant visible grâce à la commande burp -a l ou en listant ce qu'on trouve dans trouve dans le dossier de sauvegarde de burp, ce qui est parfois plus lisible :
    • sudo ls -1 /var/spool/burp/blanu
  • -r sert à utiliser une regexp, par exemple pour choisir le chemin qu'on veut restaurer dans la sauvegarde
  • -d /chemin/ indique le dossier où on va décompresser l'archive, que ce soit pour la restaurer ou la contrôler. Si le nom du dossier n'existe pas, il sera créé ; sinon, cela risque d'écraser ce que ce dossier contient.
  • -C Nom_client permet d'indiquer le client à restaurer ; sinon par défaut c'est celui sur le serveur même (donc Xunre cherche à restaurer uniquement les fichiers de Xunre, sauf si on lui demande explicitement de s'occuper de Blanu).

Restauration simplement dans le client

burp -ar -C nom_du_client

Sauvegarder sur un 2eme servers

Faire une copie du fichier de configuration client pour le deuxième server:

cp /etc/burp/burp.conf /etc/burp/burp-2sauvgarde.conf
nano /etc/burp/burp-2sauvgarde.conf

Changer IP, nom, mdp

server = IP 2eme server
password = *******
cname = client_blabla

Changer l'emplacement du certificat du 2eme server

# Uncomment the following lines to automatically generate a certificate signing
# request and send it to the server.
ca_burp_ca = /usr/sbin/burp_ca
ca_csr_dir = /etc/burp/server2/CA-client_blabla
# SSL certificate authority - same file on both server and client
ssl_cert_ca = /etc/burp/ssl_cert-client_ca_blabla.pem
# 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:

ca_server_name = server2

Lancer la commande de vérification:

burp -c /etc/burp/burp-2sauvgarde.conf -a l

Pour lancer une sauvgarde manuellement:

burp -c /etc/burp/burp-2sauvgarde.conf -a b

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.

Installation de Burp-ui

Voir https://burp-ui.readthedocs.io/en/latest/installation.html

En root :

apt install python3-pip
pip3 install burp-ui

Pour voir si tout fonctionne :

burp-ui --

Par défaut, le fichier de configuration se trouve dans /usr/local/share/burpui/etc/burpui.sample.cfg. Renommez-le en burpui.cfg (ou plutôt, créez un fichier burpui.cfg avec juste les infos utiles).

Si vous testez juste “si ça marche”, le couple login/mot de passe par défaut est admin/admin.

burpui.cfg

Changez la partie concernant les identifiants. Il y a plusieurs possibilités, y compris LDAP. Cf https://burp-ui.readthedocs.io/en/latest/advanced_usage.html#authentication (doc à améliorer ici).

bloc à faire : paramétrer un fichier de conf idéal, commenté, et le partager ici.

configuration service

bloc à faire : expliquer comment faire que burpui soit en prod, donc toujours lancé.

configuration web

Apache2

 

Nginx :

Sur le serveur où est installé burp-ui :

server {
    listen 80;
    server_name burpui.example.com;
 
    access_log  /var/log/nginx/burpui.access.log;
    error_log   /var/log/nginx/burpui.error.log;
 
    location / {
 
        # you need to change this to "https", if you set "ssl" directive to "on"
        proxy_set_header   X-FORWARDED_PROTO http;
        proxy_set_header   Host              $http_host;
        proxy_set_header   X-Forwarded-For   $remote_addr;
 
        proxy_read_timeout 300;
        proxy_connect_timeout 300;
 
        proxy_pass http://localhost:5000;
    }
}

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      192.168.20.35:443 ssl http2;
    server_name "burpui.example.com";

    location / {
        proxy_set_header    Host $host;
        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass          http://192.168.20.40/;
    }
}

Sources, Liens utiles

CC Attribution-Share Alike 4.0 International Driven by DokuWiki
fr/burp.1587985403.txt.gz · Dernière modification : 2021/12/03 19:18 (modification externe)

Licences Mentions légales Accueil du site Contact