Bonjour à tous,
J’ai décidé de plus laisser mon serveur web directement ouvert sur internet et de tout faire passer via un reverse proxy nginx (qui était déjà mon serveur web).
Tant qu’à faire, comme le serveur ne servira qu’à cela, j’en ai profité pour partir sur un freebsd 15 pour ne plus tout avoir sous Debian.
Je vais rapidement vous partager ma configuration pour nginx et ensuite je vous expliquerai comment j’ai intégré à Wazuh, CheckMK et Ansible et 2-3 autres trucs.
Adressage fixe
Ouvrez le fichier RC :
nano /etc/rc.conf
Désactivez IPv6 et configurez votre IPv4 et ses options selon vos besoins :
# Disable IPv6 ipv6_activate_all_interfaces="NO" # Disable DHCPv6 (rtsold) rtsold_enable="NO" # Static IPv4 configuration ifconfig_hn0="inet 192.168.1.12 netmask 255.255.255.0" defaultrouter="192.168.1.254" # Optional: DNS servers nameserver="192.168.1.254"
Reverse Proxy NGINX
Dans un premier temps, installez NGINX avec la commande suivante pour la génération de certificats Wildcard :
pkg install nginx-full wget
Ensuite, récupérez ma config depuis mon Github :
curl -o /usr/local/etc/nginx/nginx.conf https://raw.githubusercontent.com/stylersnico/nginx-secure-config/refs/heads/master/nginx.conf-freebsd15
J’ai adapté ma config nginx sécurisée de Debian pour FreeBSD 15.1, plus d’informations ici : https://github.com/stylersnico/nginx-secure-config
Ensuite, les configurations nginx sont les mêmes, elles sont simplement dans /usr/local/etc/nginx/sites-enabled/
Pour finir, activez et lancez le service nginx :
service nginx enable && service nginx start
Certbot avec plugin Infomaniak
Malheureusement, le plugin Infomaniak n’existe pas comme paquet sur FreeBSD, il faut donc utiliser python et pip.
Installez Python et pip avec la commande suivante :
pkg install python3 py312-pip
Ensuite, installez certbot avec pip :
pip install certbot certbot-dns-infomaniak
Reconnectez-vous pour avoir la commande certbot et suivez la procédure suivante : https://wiki.abyssproject.net/fr/debian/webservers/wildcard-ecdsa-infomaniak-letsencrypt
Installation de l’agent Wazuh et connexion au serveur
Pour vous connecter à votre console Wazuh, installez d’abord l’agent :
pkg install -y wazuh-agent
Ouvrez le fichier de configuration :
nano /var/ossec/etc/ossec.conf
Indiquez l’adresse de votre serveur Wazuh :
<server> <address>192.168.1.16</address> <port>1514</port> <protocol>tcp</protocol> </server>
Ensuite, activez l’agent au démarrage et lancez le :
service wazuh-agent enable && service wazuh-agent start
Installation de l’agent CheckMK et connexion au serveur
Créez d’abord l’utilisateur “cmk_agent” :
adduser cmk_agent
Ensuite, installez sudo, l’agent et ouvrez le fichier des sudoers :
pkg install sudo check_mk_agent visudo
Ajoutez la ligne suivante pour le monitoring des services :
cmk_agent ALL=(root) NOPASSWD: /usr/sbin/service
Créez votre fichier de configuration CheckMK avec la clé d’enregistrement de votre serveur :
nano /etc/check_mk/checkmk.conf
En modifiant votre clé et l’adresse de votre serveur :
CHECKMK_HOSTNAME="Reverse" CHECKMK_SERVER="checkmk.internal" CHECKMK_PORT="8000" CHECKMK_SITE="cmk" CHECKMK_OTT="37d7axxx1cc"
Ajoutez le service dans inetd et démarrez le :
echo "check_mk 6556/tcp" >> /etc/services echo "check_mk stream tcp nowait cmk_agent /usr/local/bin/check_mk_agent check_mk_agent -c /etc/check_mk/checkmk.conf" >> /etc/inetd.conf service inetd enable && service inetd start
Vérifiez ensuite que l’agent tourne avec la commande suivante :
nc -zv localhost 6556
Le retour devrait être le suivant :
Connection to localhost 6556 port [tcp/check_mk] succeeded!
Ensuite, pour la surveillance des services, surtout nginx dans mon cas, créez un script de surveillance comme ceci :
cat > /usr/local/lib/check_mk_agent/local/freebsd_services << 'EOF'
#!/bin/sh
# Monitor FreeBSD services
echo "<<>>"
# Services to monitor
SERVICES="sshd inetd nginx"
for service in $SERVICES; do
if sudo service $service status > /dev/null 2>&1; then
echo "0 \"FreeBSD Service $service\" - Service $service is running"
else
echo "2 \"FreeBSD Service $service\" - Service $service is NOT running"
fi
done
EOF
Ensuite, rendez le exécutable et testez le :
chmod +x /usr/local/lib/check_mk_agent/local/freebsd_services && /usr/local/lib/check_mk_agent/local/freebsd_services
Le retour devrait être comme ceci :
<<<local>>> 0 "FreeBSD Service sshd" - Service sshd is running 0 "FreeBSD Service inetd" - Service inetd is running 0 "FreeBSD Service nginx" - Service nginx is running
Ensuite, lancez une découverte depuis votre instance CheckMK.
Mise à jour avec Ansible
Voici un playbook pour mettre à jour vos FreeBSD et vos paquets via Ansible :
- hosts: freebsd
become: yes
become_method: sudo
tasks:
- name: Fetch base system updates
command: freebsd-update fetch
failed_when: false
- name: Update base system
command: freebsd-update install
register: base_update
failed_when: false
changed_when: "'installed' in base_update.stdout or 'Executing' in base_update.stdout"
- name: Update packages
command: pkg upgrade -y
- name: Clean old packages
command: pkg clean -y
- name: Reboot if needed
reboot:
reboot_timeout: 600
when: base_update.changed
Et voilà, je crois que j’ai fait le tour, notez que cet article aura une suite purement basée sur NGINX et l’intégration complète de Naxsi comme firewall applicatif 🙂
