Je configure une image de déploiement de masse qui inclut Snort. Comme je ne connais pas la plage d'adresses réseau sur laquelle chaque image résidera, j'ai pensé à utiliser une variable d'environnement pour contenir la plage de réseaux et utiliser cette variable d'environnement dans le fichier snort.conf
pour définir HOME_NET
.
Mais c'est là que tout s'effondre. Cela peut-il être fait? Comment? J'envisage essentiellement quelque chose comme:
$ export SYS_HOME_NET=192.168.1.0/16
# snort.conf
ipvar HOME_NET %SYS_HOME_NET%
De toute évidence, cela ne fonctionne pas. Des idées?
Je le ferais légèrement différemment. En supposant que la commande qui vous donne la plage IP est
echo ipvar HOME_NET "$(/sbin/ip route | awk '/eth0/ && ++i==2 { print $1 }')"
Vous pourriez écrire un petit script qui lance snort
:
#!/usr/bin/env bash
echo ipvar HOME_NET "$(/sbin/ip route | awk '/eth0/ && ++i==2 { print $1 }')" > ~/HOME_NET.conf
snort
Si vous enregistrez ce fichier sous le nom snort.sh
, le rendez exécutable (chmod a+x snort.sh
) et l'exécutez, il mettra à jour le fichier ~/HOME_NET.conf
avec la plage d'adresses IP correcte avant lancement snort
donc tout devrait fonctionner comme prévu.
Une méthode à laquelle je viens de penser est de créer un fichier .conf
externe qui crée cette variable et de l’inclure dans le snort.conf
comme ceci:
#snort.conf
#ipvar HOME_NET any
include ./HOME_NET.conf
Ensuite, créez un fichier HOME_NET.conf
qui ressemble à ceci:
ipvar HOME_NET 192.168.1.0/16
et changez/remplacez le contenu de HOME_NET.conf
par un script .sh
lors du démarrage ou de la configuration initiale de l'image.