Points à retenir
- Le script « Check-FirewallStatusMac.sh » est un outil essentiel pour automatiser les vérifications de l’état du pare-feu macOS et garantir la sécurité du réseau.
- Il fonctionne selon deux modes : avec des contrôles prédéfinis ou des arguments spécifiés par l’utilisateur (–inboundblocked et –stealthmode).
- Utilise les commandes socketfilterfw et defaults de macOS pour récupérer les configurations de pare-feu.
- Les statuts de sortie (1 pour les risques de sécurité, 2 pour les entrées non valides) donnent un aperçu rapide de l’état du pare-feu.
- Offre une alternative plus efficace et plus résistante aux erreurs que les contrôles manuels des pare-feux.
- Idéal pour les administrateurs informatiques et les MSP afin d’assurer la conformité avec les politiques de sécurité sur plusieurs appareils macOS.
- L’utilisation régulière dans le cadre des routines de maintenance informatique renforce les mesures de sécurité proactives.
- La personnalisation et l’intégration dans des systèmes de gestion informatique plus larges tels que NinjaOne peuvent simplifier et optimiser les processus de sécurité de votre entreprise.
Introduction
La gestion du pare-feu est un élément essentiel de la protection de l’infrastructure informatique de toute entreprise. Avec la dépendance croissante à l’égard des systèmes numériques, il devient impératif de comprendre et de contrôler le trafic réseau pour empêcher les accès non autorisés et garantir l’intégrité des données. Dans ce contexte, des scripts tels que « Check-FirewallStatusMac.sh » jouent un rôle essentiel, car ils offrent un moyen rationnel et efficace de surveiller l’état du pare-feu macOS.
Contexte
Dans le monde dynamique de la sécurité informatique, les professionnels et les fournisseurs de services gérés (MSP) sont constamment mis au défi de maintenir des postures de sécurité optimales. Ce script s’avère être un outil essentiel pour les administrateurs informatiques, leur permettant d’automatiser la surveillance des paramètres du pare-feu. Il est conçu pour vérifier si le pare-feu est activé, si les connexions entrantes sont bloquées et si le système est en mode furtif, paramètres essentiels pour une sécurité réseau performante.
Le script :
#!/usr/bin/env bash # Description: Checks whether or not firewall is enabled and whether or not it's blocking inbound connections and optionally in stealth mode. # Will exit with status code 1 if any of those are not true. It exits with status code 2 for invalid input! # Release Notes: Initial Release # By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use. # Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. # Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. # Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. # Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. # Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. # Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. # EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA). # # Usage: ./Check-FirewallStatusMac.sh [--inboundblocked] [--stealthmode] # <> are required # [] are optional # Example: ./Check-FirewallStatusMac.sh --inboundblocked --stealthmode # # Notes: # # function socketfilterfw() { /usr/libexec/ApplicationFirewall/socketfilterfw "$@" } function defaults() { /usr/bin/defaults "$@" } # When run directly without testing, the "__()" function does nothing. test || __() { :; } __ begin __ if [ $# -eq 0 ]; then if [[ "${inboundblocked}" == "true" ]]; then inboundCheck=$(socketfilterfw --getblockall | grep DISABLED) if [[ -n $inboundCheck ]]; then echo "Inbound traffic is not being blocked by default!" failed="True" fi fi if [[ "${stealthmode}" == "true" ]]; then stealthCheck=$(socketfilterfw --getstealthmode | grep disabled) if [[ -n $stealthCheck ]]; then echo "Stealthmode is NOT enabled!" failed="True" fi fi else for i in "$@"; do if [[ $i != **"--inboundblocked"** && $i != **"--stealthmode"** && -n $i ]]; then echo "[Error] invalid input! Only supports --inboundblocked and --stealthmode" 1>&2 echo "Exiting with status code 2" 1>&2 exit 2 fi if [[ $i == *"--inboundblocked"* ]]; then inboundCheck=$(socketfilterfw --getblockall | grep DISABLED) if [[ -n $inboundCheck ]]; then echo "Inbound traffic is not being blocked by default!" failed="True" fi fi if [[ $i == *"--stealthmode"* ]]; then stealthCheck=$(socketfilterfw --getstealthmode | grep disabled) if [[ -n $stealthCheck ]]; then echo "Stealthmode is NOT enabled!" failed="True" fi fi done fi firewallSocket=$(socketfilterfw --getglobalstate | grep disabled) firewallALF=$(defaults read /Library/Preferences/com.apple.alf globalstate | grep 0) if [[ -n $firewallSocket || -n $firewallALF ]]; then echo "The firewall is currently disabled." failed="True" fi if [[ $failed == "True" ]]; then echo "One or more checks have failed. Exiting with status code 1." exit 1 else echo "The firewall is enabled and all other checks have passed." exit 0 fi __ end __
Accédez à plus de 700 scripts dans le Dojo NinjaOne
Description détaillée
Le script commence par une définition de fonction pour socketfilterfw et defaults, qui sont des commandes macOS permettant respectivement de gérer le pare-feu applicatif et les préférences. Il fonctionne selon deux modes : avec ou sans arguments. Si aucun argument n’est fourni, il vérifie si les connexions entrantes sont bloquées et si le mode furtif est activé en fonction de variables prédéfinies.
Avec des arguments, il les parcourt, valide et exécute des vérifications pour –inboundblocked et –stealthmode. Il utilise la commande socketfilterfw pour récupérer les paramètres actuels et utilise grep pour filtrer la sortie. Le script vérifie ensuite l’état du pare-feu global et la préférence ALF (Application Layer Firewall). Toute défaillance dans ces contrôles entraîne un état de sortie de 1, indiquant un risque potentiel pour la sécurité, tandis que les entrées non valides déclenchent un état de sortie de 2.
Cas d’utilisation potentiels
Prenons l’exemple d’un administrateur informatique qui gère un réseau comportant plusieurs appareils macOS. Ils peuvent déployer ce script sur l’ensemble du réseau pour vérifier périodiquement les paramètres du pare-feu et s’assurer que tous les appareils sont conformes aux politiques de sécurité de l’entreprise. En cas de divergence, les résultats du script peuvent déclencher une enquête plus approfondie ou des mesures correctives automatiques.
Comparaisons
Bien qu’il soit possible de procéder à une vérification manuelle via les préférences du système ou les commandes du terminal, cette opération prend du temps et est sujette à des erreurs humaines. D’autres solutions logicielles offrent des fonctionnalités similaires mais s’accompagnent souvent de coûts supplémentaires et de complexité. Ce script offre une alternative simple, personnalisable et rentable.
FAQ
- Comment exécuter le script ?
- Exécutez le script dans le terminal avec les arguments optionnels –inboundblocked et –stealthmode.
- Que signifie un statut de sortie de 1 ?
- Il indique que le pare-feu est désactivé, que les connexions entrantes ne sont pas bloquées ou que le mode furtif n’est pas activé.
- Ce script est-il compatible avec toutes les versions de macOS ?
- Il est conçu pour macOS mais doit être testé sur des versions spécifiques pour assurer la compatibilité.
Implications
Les résultats du script ont des implications importantes pour la sécurité informatique. Un pare-feu désactivé ou des paramètres mal configurés peuvent exposer le réseau à des vulnérabilités. Des contrôles réguliers à l’aide de ce script peuvent faire partie d’une stratégie de sécurité proactive, réduisant ainsi le risque de cyber-attaques.
Recommandations
L’exécution régulière de scripts fait partie des bonnes pratiques, par exemple dans le cadre d’une maintenance planifiée. Les administrateurs doivent également revoir et ajuster le script en fonction des besoins spécifiques de l’entreprise et des versions de macOS. L’intégration avec des systèmes de gestion informatique plus larges permet d’optimiser davantage les processus de sécurité.
Conclusion :
Dans un monde où la complexité de l’infrastructure informatique ne cesse de croître, des outils comme NinjaOne offrent des solutions complètes pour gérer efficacement les environnements informatiques. L’intégration de scripts tels que « Check-FirewallStatusMac.sh » dans la plateforme de NinjaOne pourrait améliorer ses capacités, en offrant une surveillance optimale du pare-feu et en garantissant une posture de sécurité solide pour les entreprises utilisant des systèmes macOS