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

  1. Booter sur l’iso
  2. Se connecter avec l’utilisateur installer mot de passe opnsense
    installer connection
  3. Valider « < Ok, let’s go. > »
  4. Sélectionner la disposition de votre clavier (fr.acc si clavier français)
    OPsense keymap setting
  5. Accepter le paramétrage
  6. Installation guidée
    OPNsense guided installation
  7. Choisir le disque de destination de l’installation
  8. Choisir le mode d’installation « < GPT/UEFI mode > »
    OPNsense installation mode
  9. Valider la création de la partition swap
  10. Définir le mot de passe de l’utilisateur root
  11. Retirer le média d’installation de redémarrer
    OPNsense terminated installation

Configuration minimale d’Amon 3

  1. Se connecter avec l’utilisateur root et le mot de passe initialisé pendant l’installation (par défaut opnsense si pas modifié)
  2. Assigner uniquement l’interface WAN à la première interface de la liste
    OPNsense assign WAN interface
  3. Ne pas assigner d’interface LAN, valider sans rien saisir
  4. Ne pas assigner d’autre interface, valider sans rien saisir
  5. Valider l’assignation de l’interface WAN
    OPNsense confirm WAN interface
  6. Si un serveur DHCP est présent, l’interface WAN est configurée par celui-ci
    OPNsense WAN behind DHCP

     

    1. Dans ce cas vérifier que le serveur DNS résoud bien le nom salt
      OPNsense ping salt
  7. Configurer l’interface WAN si pas de serveur DHCP
    OPNsense configure IP WAN manually

     

    1. Si la passerelle est aussi serveur DNS, répondre Y à la question « Do you want to use the gateway as the IPv4 name server »
      Sinon, répondre N et renseigner son adresse IP
    2. Terminer la configuration sans IPv6 et conserver l’interface Web en HTTPS
      OPNsense end WAN configuration

Configuration centralisée des Amon 3

Toutes les opérations sont centralisées sur le serveur salt-master

  1. Accepter la clé du serveur Amon 3 avec configuration minimale
    salt-key -a OPNsense.localdomain -y
  2. 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'
  3. Vérifier que le minion est bien redémarré et répond sous son nouveau nom
    salt-run state.event pretty=True
  4. Accepter le minion sous son nouveau nom
    salt-key -a etb1.ac-test.fr -y
  5. Supprimer l’id du minion avec configuration minimale
    salt-key -d OPNsense.localdomain -y
  6. Générer la configuration finale de l’OPNsense
    salt 'etb1.ac-test.fr' state.apply opnsense.config
  7. 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'
  8. Appliquer la configuration finale
    salt --async 'etb1.ac-test.fr' cmd.run /usr/local/etc/rc.reload_all
  9. Vérifier que la configuration est appliquée
    salt-run state.event pretty=True