Présentation du projet
Amon 3 est une refonte totale de notre module pare-feu.
Il est construit à partir du firewalll OPNsense® qui est un fork du projet pfSense® lui même basé sur FreeBSD.
Nous avons choisi OPNsense® qui offre des avancées importantes par rapport à son homologue pfSense® en matière de sécurité, de qualité du code et d’interface. Pour permettre une gestion centralisée des Amon 3, nous avons ajouté le logiciel de gestion de configuration Saltstack dans notre image d’installation.
La gestion centrale de tous les systèmes cibles s’effectue via un serveur nommé salt-master. Les commandes et les fichiers sont transmis par son intermédiaire.
Une formula Saltstack que l’on nommera Amon permet la personnalisation des serveurs Amon 3.
Gestion centralisée des Amon 3 en version Alpha
Installation du serveur salt-master
Pour cela, nous allons utiliser le module eolebase de la distribution EOLE 2.8.0. Le logiciel Saltstack est préinstallé sur ce module.
L’image d’installation est téléchargeable ici :
http://eole.ac-dijon.fr/pub/iso/devel/2.8/releases/2.8.0/
Il faut activer le service salt-master
et ouvrir les ports d’écoute en créant un dictionnaire 99_salt-master.xml
dans le répertoire /usr/share/eole/creole/dicos/local/
avec ce contenu :
<?xml version="1.0" encoding="utf-8"?>
<creole>
<files>
<service>salt-master</service>
<service_access service='salt-master'>
<port>4505</port>
<port>4506</port>
</service_access>
<package>git</package>
</files>
<variables />
<constraints />
<help />
</creole>
<!-- vim: ts=4 sw=4 expandtab
-->
Il suffit ensuite de configurer et d’instancier le serveur après avoir ajouté ce dictionnaire en suivant la documentation :
http://eole.ac-dijon.fr/documentations/2.8/completes/HTML/Eolebase/co/Eolebase.html
Mise en place de la formula
La formula est disponible dans ce dépôt git :
cd /root
git clone https://dev-eole.ac-dijon.fr/git/amon3.git
Création du répertoire nécessaire à salt-master :
mkdir -p /srv/salt
Création du lien symbolique vers la formula :ln -s /root/amon3/master/opnsense /srv/salt/opnsense
La personnalisation des Amon 3 s’effectue avec les pillars. Deux exemples de pillars sont disponibles dans le dépôt .
Création du lien symbolique vers les pillars :ln -s /root/amon3/master/pillar /srv/pillar
Installation d’Amon 3
L’image d’installation est disponible à cette adresse :
http://test-eole.ac-dijon.fr/amon3/FreeBSD%3a12%3aamd64/20.7/sets/amon3-a0.iso
- Booter sur l’iso
- Se connecter avec l’utilisateur installer mot de passe opnsense
- Valider “< Ok, let’s go. >”
- Sélectionner la disposition de votre clavier (fr.acc si clavier français)
- Accepter le paramétrage
- Installation guidée
- Choisir le disque de destination de l’installation
- Choisir le mode d’installation “< GPT/UEFI mode >”
- Valider la création de la partition swap
- Définir le mot de passe de l’utilisateur root
- Retirer le média d’installation de redémarrer
Configuration minimale d’Amon 3
- Se connecter avec l’utilisateur root et le mot de passe initialisé pendant l’installation (par défaut opnsense si pas modifié)
- Assigner uniquement l’interface WAN à la première interface de la liste
- Ne pas assigner d’interface LAN, valider sans rien saisir
- Ne pas assigner d’autre interface, valider sans rien saisir
- Valider l’assignation de l’interface WAN
- Si un serveur DHCP est présent, l’interface WAN est configurée par celui-ci
- Configurer l’interface WAN si pas de serveur DHCP
Configuration centralisée des Amon 3
Toutes les opérations sont centralisées sur le serveur salt-master
- Accepter la clé du serveur Amon 3 avec configuration minimale
salt-key -a OPNsense.localdomain -y
- Renommer l’id du minion
salt 'OPNsense.localdomain' file.write /usr/local/etc/salt/minion_id etb1.ac-test.fr
salt 'OPNsense.localdomain' at.at 'now +10 seconds' 'service salt_minion restart'
- Vérifier que le minion est bien redémarré et répond sous son nouveau nom
salt-run state.event pretty=True
- Accepter le minion sous son nouveau nom
salt-key -a etb1.ac-test.fr -y
- Supprimer l’id du minion avec configuration minimale
salt-key -d OPNsense.localdomain -y
- Générer la configuration finale de l’OPNsense
salt 'etb1.ac-test.fr' state.apply opnsense.config
- Programmer le redémarrage de salt_minion sur Amon 3 pour la prise en compte d’une éventuelle adresse IP différente
salt 'etb1.ac-test.fr' at.at 'now +30 seconds' 'service salt_minion restart'
- Appliquer la configuration finale
salt --async 'etb1.ac-test.fr' cmd.run /usr/local/etc/rc.reload_all
- Vérifier que la configuration est appliquée
salt-run state.event pretty=True