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
).