Bonjour,
Dans ce tuto je vais vous montrer comment externaliser les logs du firewall d'OMV vers un fichier dédié. Par défaut les logs du firewall se retrouve dans les log système d'OMV, ce qui n'est pas très pratique quand nous souhaitons les consulter facilement.
Je vais procéder en plusieurs étapes :
Nous allons modifier le gestionnaire de log 'rsyslog' afin de rediriger les traces du firewall dans un fichier de log 'iptables'. Nous allons modifier le fichier de config '/etc/rsyslog.conf' via la commande :
Nous rajoutons la ligne suivante en dessous du paragraphe ‘RULES’ (vers la ligne 63).
Nous signalons au système que nous voulons filtrer les messages contenant la chaine ‘[iptables] ‘.
On sauve le fichier en tapant les deux touches simultanément ‘CTRL+O’, puis on fait de même pour quitter en tapant ‘CTRL+X’.
Nous allons configurer la gestion de rotation de notre ficher de log 'iptables'.
Il faudra créer un fichier de configuration pour la rotation d'un log sur 7 jours en créant le fichier '/etc/logrotatde.d/iptables' suivant :
Il faut relancer le daemon système ‘rsyslog’ pour que les modification soient prises en compte; puis on vérifie aussi le bon fonctionnement du daemon ‘rsyslog‘ :
Le firewall d’OMV est par défaut actif mais tous les ports sont ouverts. Je vais partir sur l'hypothèse ou vous avez ouvert tous ce dont vous avez besoin et vous bloquez tout le reste.
Nous allons ajoutés deux règles dans le firewall pour renvoyer tout ce qui est rejeté en INPUT et OUTPUT vers le log avec le préfixe ‘[iptables] ‘. Ces deux règles devront se situer à la fin de toutes les autres règles du firewall, juste avant la ou les dernières règle(s) 'DROP'.
Concrètement dans le firewall, cela donnera ca comme règles :
Vous pouvez vérifier la présence du fichier '/var/log/iptables.log' qui vous indiquera les connexions qui ont été bloquées. S’il n’est pas présent c’est que le Firewall n’a encore rien bloquer pour le moment.
Pour terminer, nous allons vérifier le bon fonctionnement du fichier de log. Taper par exemple une requête extérieur sur le port 23 (TELNET) ou un protocole que vous bloquez en sortie :
Vous devriez voir la trace du blocage dans le fichier de log :
Vous pouvez aussi surveiller votre fichier de log 'iptables' pour qu'il vous envoi une notification en cas de nouvelle entrée.
Au préalable il faudra ajouter des règles dans le firewall an amont de la direction 'LOG' pour filtrer tous les rejets considérés comme normal (broadcast... etc)
Voici un exemple de script à rajouter par exemple dans le cron pour qu'il démarre au lancement d'OMV.
Il envoi une notification dans un canal dédié à 'Gotify' en cas de nouvelle entrée de le log 'iptables'.
Gotify est installé ici derrière un reverse proxy (Swag).
Il faudra remplacer dans le script :
GOTIFY_URL : Chemin vers l'URL du containeur Gotify
GOTIFY_TOKEN : Le 'token' du canal vers lequel la notification sera envoyée.
Les tables 'cron' d'OMV se trouve dans le répertoire '/etc/cron.d'.
Pour créer des taches spécifiques en dehors de l'interface d'administration d'OMV , il faut créer un fichier 'cron' dans ce répertoire.
Pour lancer par exemple un script "checkFirewall" & Envoyer un email à chaque démarrage d'OMV, il faut créer un fichier en y ajoutant le code suivant :
Dans ce tuto je vais vous montrer comment externaliser les logs du firewall d'OMV vers un fichier dédié. Par défaut les logs du firewall se retrouve dans les log système d'OMV, ce qui n'est pas très pratique quand nous souhaitons les consulter facilement.
Je vais procéder en plusieurs étapes :
1) Modification du gestionnaire de log
Nous allons modifier le gestionnaire de log 'rsyslog' afin de rediriger les traces du firewall dans un fichier de log 'iptables'. Nous allons modifier le fichier de config '/etc/rsyslog.conf' via la commande :
Code:
$ sudo nano /etc/rsyslog.conf
Nous rajoutons la ligne suivante en dessous du paragraphe ‘RULES’ (vers la ligne 63).
Code:
:msg, contains, "[iptables]" -/var/log/iptables.log
& stop
Nous signalons au système que nous voulons filtrer les messages contenant la chaine ‘[iptables] ‘.
On sauve le fichier en tapant les deux touches simultanément ‘CTRL+O’, puis on fait de même pour quitter en tapant ‘CTRL+X’.
2) Gestion de logrotate
Nous allons configurer la gestion de rotation de notre ficher de log 'iptables'.
Il faudra créer un fichier de configuration pour la rotation d'un log sur 7 jours en créant le fichier '/etc/logrotatde.d/iptables' suivant :
Code:
/var/log/iptables.log
{
rotate 7
daily
missingok
notifempty
delaycompress
compress
postrotate
/usr/lib/rsyslog/rsyslog-rotate >/dev/null
endscript
}
Il faut relancer le daemon système ‘rsyslog’ pour que les modification soient prises en compte; puis on vérifie aussi le bon fonctionnement du daemon ‘rsyslog‘ :
Code:
$ sudo systemctl restart rsyslog
$ sudo systemctl status rsyslog
3) Règles spécifiques pour gérer les logs dans le firewall
Le firewall d’OMV est par défaut actif mais tous les ports sont ouverts. Je vais partir sur l'hypothèse ou vous avez ouvert tous ce dont vous avez besoin et vous bloquez tout le reste.
Nous allons ajoutés deux règles dans le firewall pour renvoyer tout ce qui est rejeté en INPUT et OUTPUT vers le log avec le préfixe ‘[iptables] ‘. Ces deux règles devront se situer à la fin de toutes les autres règles du firewall, juste avant la ou les dernières règle(s) 'DROP'.
Code:
INPUT ACCEPT ALL -j LOG --log-prefix "[iptables] in : "
OUTPUT ACCEPT ALL -j LOG --log-prefix "[iptables] Out : "
Concrètement dans le firewall, cela donnera ca comme règles :
4) Vérification bon fonctionnement
Vous pouvez vérifier la présence du fichier '/var/log/iptables.log' qui vous indiquera les connexions qui ont été bloquées. S’il n’est pas présent c’est que le Firewall n’a encore rien bloquer pour le moment.
Pour terminer, nous allons vérifier le bon fonctionnement du fichier de log. Taper par exemple une requête extérieur sur le port 23 (TELNET) ou un protocole que vous bloquez en sortie :
$ wget google.fr:23
Vous devriez voir la trace du blocage dans le fichier de log :
5) Recevoir des notifications
Vous pouvez aussi surveiller votre fichier de log 'iptables' pour qu'il vous envoi une notification en cas de nouvelle entrée.
Au préalable il faudra ajouter des règles dans le firewall an amont de la direction 'LOG' pour filtrer tous les rejets considérés comme normal (broadcast... etc)
Voici un exemple de script à rajouter par exemple dans le cron pour qu'il démarre au lancement d'OMV.
Il envoi une notification dans un canal dédié à 'Gotify' en cas de nouvelle entrée de le log 'iptables'.
Gotify est installé ici derrière un reverse proxy (Swag).
Il faudra remplacer dans le script :
GOTIFY_URL : Chemin vers l'URL du containeur Gotify
GOTIFY_TOKEN : Le 'token' du canal vers lequel la notification sera envoyée.
Bash:
#!/bin/sh
IPTABLES_FILE="/var/log/iptables.log"
IPTABLES_FILESIZE=$(wc -c <"$IPTABLES_FILE")
GOTIFY_URL=https://gotify.xxxx.duckdns.org
GOTIFY_TOKEN=xxxxxxxxxxx
GOTIFY_PRIORITY=2
URL=${GOTIFY_URL}/message?token=${GOTIFY_TOKEN}
MESSAGE="Nouveau blocage dans le firewall"
TITLE=iptables
while true
do
IPTABLES_FILESIZE_ACTUEL=$(wc -c <"$IPTABLES_FILE")
if [ "$IPTABLES_FILESIZE_ACTUEL" != "$IPTABLES_FILESIZE" ]; then
# actualise taille et envoi message Gotify
IPTABLES_FILESIZE=${IPTABLES_FILESIZE_ACTUEL}
curl -s -S --data '{"message": "'"${MESSAGE}"'", "title": "'"${TITLE}"'", "priority":'"${GOTIFY_PRIORITY}"', "extras": {"client::display": {"contentType": "text/markdown"}}}' -X POST -H Content-Type:application/json "$URL"
fi
sleep 300
done
6) Démarrer script notification au lancement d'OMV
Les tables 'cron' d'OMV se trouve dans le répertoire '/etc/cron.d'.
Pour créer des taches spécifiques en dehors de l'interface d'administration d'OMV , il faut créer un fichier 'cron' dans ce répertoire.
Pour lancer par exemple un script "checkFirewall" & Envoyer un email à chaque démarrage d'OMV, il faut créer un fichier en y ajoutant le code suivant :
Bash:
@reboot root sleep 5 && /xxx/checkFirewall.sh | mail -E -s "Cron - Lancement /xxx/checkFirewall.sh" -a "From: Daemon root" root >/dev.null 2>&1
Dernière édition: