Sophos Firewall – Exécution de script sans tâche cron
Ce billet explique comment exécuter un script sur une Sophos Firewall sans utiliser de tâche cron, car la Sophos Firewall ne vous permet pas de créer une tâche cron.
Thèmes
Pourquoi exécuter un script sur Sophos Firewall ?
Dans certaines situations, il peut être nécessaire d’exécuter un script personnalisé sur Sophos Firewall. Cela peut servir, par exemple, à ajuster les paramètres réseau, à envoyer régulièrement des signaux de battement aux services de surveillance ou à modifier les règles du pare-feu. Souvent, cette fonctionnalité doit être conservée même après le redémarrage du pare-feu, ce qui signifie que vous devez ajuster la configuration par défaut de Sophos Firewall.
Activer les droits d’écriture sur le système de fichiers
Par défaut, le système de fichiers de Sophos Firewall est en lecture seule.
Pour apporter des modifications aux scripts, il doit d’abord être monté en écriture :
mount -no remount,rw /
Créer ou modifier un script
Ensuite, vous pouvez créer un script ou modifier un script existant.
Dans cet exemple, nous créons un script personnalisé qui définit certaines règles de réseau :
vi /scripts/system/clientpref/customization_application_startup.sh
Ajoutez le contenu suivant :
#!/bin/sh
iptables -t mangle -D POSTROUTING -d 172.19.0.0/16 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 900
exit 0;
Cette commande supprime une règle existante et en définit une nouvelle afin de fixer la taille maximale des segments (MSS) pour les connexions TCP à 900 octets.
#!/usr/bin/expect -f
spawn ssh <Sophos Firewall IP> -l admin
expect "password:"
send "<Admin Password>\r"
expect "Select Menu Number \\\[0-7\\\]:"
send "7\r"
expect "Shutdown(S/s) or Reboot(R/r) Device (S/s/R/r): No (Enter) >"
send "r\r"
expect eof
exit
Cette commande assure le redémarrage de Sophos Firewall chaque nuit.
Enregistrer les modifications et protéger à nouveau le système de fichiers en écriture
Une fois le script modifié, les modifications doivent être enregistrées et la protection en écriture du système de fichiers doit être réactivée :
mount -no remount,ro /
Pour s’assurer que le script est exécuté même après un redémarrage du pare-feu, il doit être intégré à la procédure de démarrage du pare-feu. Le script précédemment modifié (customization_application_startup.sh) est exécuté à chaque démarrage du pare-feu et garantit que les paramètres souhaités sont appliqués.
Exemple de script heartbeat
S’il est nécessaire d’envoyer un heartbeat à un service de surveillance comme Uptimerobot, vous pouvez utiliser l’exemple suivant :
1. créer un nouveau script
touch /var/script.sh
2. modifiez le script
vi /var/script.sh
3. ajoutez votre contenu, voici un exemple :
#!/bin/sh
while [ 1 ];
do
curl --insecure https://heartbeat.uptimerobot.com/xxxxxxx-20cf67c87a3c0a318820d201f19483e06c99c9f7 >/dev/null 2>&1
sleep 60 ;
done
4. rendre le script exécutable :
chmod 755 /var/script.sh
5. exécutez le script
/var/script.sh >> /dev/null 2>&1 &
6) Pour que le script s’exécute automatiquement même après un redémarrage, ajoutez la ligne suivante au fichier customization_application_startup.sh :
/var/script.sh >> /dev/null 2>&1 &
Remarques importantes
- Cluster de haute disponibilité (HA): si vous utilisez un cluster HA, le script doit être appliqué aux deux nœuds.
- Persistance sur les redémarrages: si le script doit être exécuté à chaque redémarrage du pare-feu, les étapes décrites doivent être suivies pour l’intégrer à la procédure de démarrage.
- Risques: Il convient d’être prudent lors de la modification des scripts de démarrage du pare-feu, car des paramètres incorrects peuvent affecter la fonctionnalité du pare-feu.