Cryptage, sécurité et automatisation

Bonjour à tous!

J’ai un problème assez spécifique et que je trouve intéressant mais je ne sais pas trop par quel bout le prendre…
Je suis en train de déployer un serveur backuppc (mais n’importe quelle autre solution de sauvegarde aurait le même problème) dans les bureaux de l’ONG où je travaille.
Donc la nuit l’ordi en question démarre, se connecte aux serveurs dont on veut sauvegarder les données et fait toute les sauvegardes.
Le problème est le suivant:

  • Sachant qu’il s’agit d’un processus automatisé (donc pas d’intervention humaine pour entrer un mot de passe).
  • Voulant que les partitions qui reçoivent la configuration de backuppc (contenant entre autre les clés de connexion en root à nos serveurs :frowning: ) et les sauvegardes soit encryptées

Comment monter les partitions cryptées au démarrage sans avoir les codes en clair sur la machine et sans que cela marche si la machine n’est pas sur notre réseau (typiquement après un vol si le mec démarre la machine chez lui)

j’avoue que je suis un peu largué - avec LDAP peut-être ? Ou alors je complique les choses et il y a un moyen plus simple de sécuriser le truc ?

Bonjour,

J’ai un peu du mal à saisir la procédure de sauvegarde. Un ordinateur/serveur s’allume toutes les nuits et va chercher les données sur un (ou plusieurs) autres serveurs ?
J’ai l’impression que la machine de sauvegarde est un portable quand tu dis “si la machine n’est pas sur notre réseau” ou quand tu parles de vols.

Niveau sécurité, tu peux passer par un chiffrement du disque dur du serveur de sauvegarde. Je sais que Backuppc peux faire ses sauvegardes via SSH donc niveau sécurité sur le réseau c’est une protection suffisante. Pour sécurisé un répertoire/partition qui stockerai la configuration de backuppc tu pourrais utiliser Truecrypt qui peut être utilisé en ligne de commande, il suffirait alors de script l’ouverture et la fermeture de la partition chiffrée. Tu vois ou je veux en venir ?

J’avais mis en place un backuppc sur un serveur de sauvegarde, je me rappel que j’ai du aller modifier la ligne de sauvegarde (je fonctionnait en mode “tar” via SSH) pour qu’il puisse utiliser une clé plutôt qu’un mot de passe (qui se saisit manuellement). Tu peux te pencher de ce coté la aussi, tout sera automatisé, il suffira que le serveur cible connaisse déjà la clé du serveur de sauvegarde.

En espérant t’avoir aidé un peu !

[quote=“Neaj744”]
J’ai un peu du mal à saisir la procédure de sauvegarde. Un ordinateur/serveur s’allume toutes les nuits et va chercher les données sur un (ou plusieurs) autres serveurs ? [/quote]
C’est ça !

Non c’est un fixe mais si on se fait cambrioler… (il peut paraître saugrenu de cambrioler le siège d’une ONG pour voler 3-4 ordinateurs, mais disons que là ou je suis ça mérite au moins d’être envisagé)

[quote=“Neaj744”]
Niveau sécurité, tu peux passer par un chiffrement du disque dur du serveur de sauvegarde. Je sais que Backuppc peux faire ses sauvegardes via SSH donc niveau sécurité sur le réseau c’est une protection suffisante. Pour sécurisé un répertoire/partition qui stockerai la configuration de backuppc tu pourrais utiliser Truecrypt qui peut être utilisé en ligne de commande, il suffirait alors de script l’ouverture et la fermeture de la partition chiffrée. Tu vois ou je veux en venir ?[/quote]

oui mais si j’ai un script qui monte ma partition automatiquement, il doit contenir le mot de passe en clair, ou alors je crypte aussi la partition root mais de toute façon pour lancer l’ordi automatiquement il faut bien que à un moment ou à un autre j’ai un script avec mot de passe en clair. D’autre part si je scripte le montage de partition ça n’offre pas de protection en cas de vols puisqu’il suffit de démarrer l’ordi pour que la partition se monte automatiquement… c’est précisément la question que je me pose…

EDIT: C’est un peu parano comme problème, mais je trouve que c’est intéressant à poser. Et puis un administrateur système qui n’est pas parano, de nos jours ça me paraît limite…

Oui le problème est intéressant ! =)

Si tu chiffres toutes tes partitions : le “voleur” qui kidnappe ton poste ne pourra pas les lires ni s’authentifier sur le poste car tu auras choisi un mot de passe fort ( :wink:) Cela éviterais également de chiffrer le répertoire contenant les clés/configurations car le disque serait déjà lui même chiffré.

Le serveur de sauvegarde doit à tout prix être éteins le reste du temps ? Si ta crainte est qu’il soit disponible inutilement sur le réseau le reste du temps, on peut simplement imaginer un script qui active la carte réseau à une heure précise et qui la referme à une autre heure ( le matin par exemple).

Si tu sais déjà comment allumer/éteindre ton poste automatiquement la question ne se pose pas. Dés que ton poste sera allumé, backuppc démarrera également et ira sauvegarder si c’est l’heure de la sauvegarde, pas besoin d’ouvrir une session sur le poste (tu le sais peut être déjà mais au cas ou je préfère le détailler =) )

En reprenant, une fois que backuppc est démarré, il utilisera la clés SSH dont il dispose pour aller se logguer sur le serveur cible et aucun mot de passe ne sera nul part. je t’oriente vers ce tutoriel

Si le poste se fait kidnappé --> Disque dur chiffré donc aucune crainte.

Un petit tutoriel qui détaille la mise en place d’une connexion SSH par clés au cas ou tu en aurais besoin : http://www.it-connect.fr/authentification-ssh-par-cles/

Comprends tu ?

@Neaj744 À moins que j’aie zappé un truc dans tes explications, il me semble que tu oublies un détail important (qui est justement le problème que notre ami essaye de résoudre) : si le disque est chiffré, tu ne peux pas allumer automatiquement l’ordinateur sans intervention humaine, car il faut un mot de passe pour déchiffre le disque. Même chose pour une partition séparée. Et bien entendu si tu n’as pas besoin de mot de passe alors tu n’as aucune sécurité en cas de vol.

@Baruch C’est un peu le problème de la poule et de l’œuf là. La seule solution à laquelle je pense (il y en a sûrement d’autres cela dit) c’est d’utiliser une tierce partie pour te fournir le mot de passe qui te permettra de déchiffrer ta partition.

En supposant que tu as une IP internet fixe :

  • tu démarres automatiquement ta machine
  • tu contactes un serveur qui n’est pas dans tes locaux (car on suppose que tes locaux se sont fait cambrioler, donc le serveur tierce partie serait aussi entre les mains de l’attaquant s’il était dans tes locaux)
  • ce serveur vérifie que la requête provient bien de ton IP
  • il envoie le secret nécessaire pour déchiffrer la partition chiffrée de ta machine
  • tu utilises ce secret

Bien entendu ça repose sur l’IP externe qu’on suppose fixe. Tout autre moyen fiable de détecter si la machine est bien dans tes locaux peut marcher aussi (mais là tout de suite je vois que l’IP externe).

C’est pas faux ! J’avais oublié ce détail, il est vrai que le chiffrement du disque ajoute une authentification supplémentaire au démarrage!

Mes excuses ! =)

Autre possibilité à laquelle je viens de penser, qui ne nécessite pas un serveur tiers…

Tu dérives une clé de ton environnement réseau (IP/MAC de la passerelle, IP de ta machine – attribuée par DHCP mais associée à ta MAC, IP externe, ce genre de choses) qui va te servir à déchiffrer le secret qui te donne accès à ta partition chiffrée.
L’avantage des deux niveaux (clé qui déchiffre la clé qui déchiffre la partition) c’est qu’en cas de changement de ton environnement réseau c’est facile à mettre à jour.

Enfin entre ça et ma proposition précédente je pense que tu vois à peu près où je veux en venir (même si c’est pas très clair non plus dans ma tête). :slightly_smiling:

:041 [quote=“Neaj744”]En supposant que tu as une IP internet fixe :

  • tu démarres automatiquement ta machine
  • tu contactes un serveur qui n’est pas dans tes locaux (car on suppose que tes locaux se sont fait cambrioler, donc le serveur tierce partie serait aussi entre les mains de l’attaquant s’il était dans tes locaux)
  • ce serveur vérifie que la requête provient bien de ton IP
  • il envoie le secret nécessaire pour déchiffrer la partition chiffrée de ta machine
  • tu utilises ce secret[/quote]

les grands esprits se rencontrant j’avais pensé à un truc du genre en effet.

[quote=“syam”]
Tu dérives une clé de ton environnement réseau (IP/MAC de la passerelle, IP de ta machine – attribuée par DHCP mais associée à ta MAC, IP externe, ce genre de choses) qui va te servir à déchiffrer le secret qui te donne accès à ta partition chiffrée.
L’avantage des deux niveaux (clé qui déchiffre la clé qui déchiffre la partition) c’est qu’en cas de changement de ton environnement réseau c’est facile à mettre à jour.[/quote]

ça par contre c’est vraiment brillant. Techniquement comment je génère les clés?

En premier tu récupères évidemment toutes les infos nécessaires (attention j’utilise Bash car ça rend les choses plus pratiques pour certaines redirections plus tard) :

[code]#!/bin/bash
export PATH="$PATH:/sbin:/usr/sbin"
export LANG=“C.UTF-8”

get_gateway_on_iface() {

récupérer l’IP de la passerelle pour l’interface choisie

netstat -nr | grep -E “$1”’$’ | sed ‘s@\s+@ @g’ | cut -d ’ ’ -f 2 | grep -vFx ‘0.0.0.0’
}

get_mac_of_ip() {

ping pour forcer la présence de l’IP dans la table ARP

ping -c 1 “$1” >/dev/null 2>&1

récupérer l’adresse MAC

arp -n -a “$1” | grep -F “$1” | sed ‘s@^.* at ([0-9a-f:]+) .*$@\1@g’
}

get_ip_of_iface() {
ifconfig “$1” | grep -E ‘^ +inet addr:’ | sed ‘s@^ +inet addr:([0-9.]+) .*$@\1@g’
}

INTERFACE=“eth0"
GATEWAY_IP=”$(get_gateway_on_iface “$INTERFACE”)“
GATEWAY_MAC=”$(get_mac_of_ip “$GATEWAY_IP”)“
IFACE_IP=”$(get_ip_of_iface “$INTERFACE”)"[/code]
Si ton IP externe est fixe, trouve un moyen de la récupérer dynamiquement (par exemple en contactant monip.org puis extraire l’IP de la réponse). Ça permettra de lier la clé réseau à ta connexion internet et non plus seulement à ton environnement LAN (quitte à être parano, on peut toujours imaginer que le cambrioleur prend tout l’équipement réseau y compris ta passerelle et va remonter ton LAN chez lui à l’identique – mais il ne pourra que difficilement reproduire l’IP externe).

Tu dérives ensuite une clé à partir de ces informations (j’ai choisi un hachage SHA512 mais tu peux utiliser autre chose) :

Une fois que tu as ta “clé réseau” tu peux créer le fichier chiffré contenant ton secret :

[code]SECRET_FILE="secret.aes"
SECRET="secret_de_la_partition"
echo -n “$NETWORK_KEY” | openssl enc -aes-256-cbc -a -in <(echo -n “$SECRET”) -out “$SECRET_FILE” -pass stdin

^ c’est pour cette redirection que Bash est intéressant

ça évite de passer par un fichier temporaire[/code]

Et pour déchiffrer le secret à partir de la “clé réseau” c’est pas plus compliqué :

[code]SECRET_FILE=“secret.aes"
SECRET=”$(echo -n “$NETWORK_KEY” | openssl enc -d -aes-256-cbc -a -in “$SECRET_FILE” -pass stdin)"

utiliser $SECRET pour déchiffrer la partition (j’ai pas cherché comment faire mais ça doit pas être très compliqué non plus)[/code]

Comme je disais, l’avantage c’est que toi tu connais toujours le secret_de_la_partition (qui te sert à réellement la déchiffrer…) donc même si ta “clé réseau” change à cause d’une modification de la config réseau tu peux facilement recréer le fichier SECRET_FILE à partir de ton secret d’origine. Et tu n’as nulle part le secret de ta partition qui se balade en clair (à part dans le coffre-fort à la banque :wink:).

Excelent c’est exactement ce qu’il me fallait merci merci merci :041

EDIT:
Je vais arranger tout ça clairement et je posterai un truc dans le wiki/les truc et astuces