Guide de vérification et de gestion de l’état du pare-feu macOS pour garantir la sécurité informatique

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

Obtenir l’accès

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

Pour aller plus loin

Pour créer une équipe informatique efficace et performante, il est essentiel d'avoir une solution centralisée qui joue le rôle de nœud principal pour vos services. NinjaOne permet aux équipes informatiques de surveiller, gérer, sécuriser et prendre en charge tous les appareils, où qu'ils soient, sans avoir besoin d'une infrastructure complexe sur site. Pour en savoir plus sur NinjaOne Endpoint Management, participez à une visite guidée, ou profitez d'un essai gratuit de la plateforme NinjaOne.

Catégories :

Vous pourriez aussi aimer

×

Voir NinjaOne en action !

En soumettant ce formulaire, j'accepte la politique de confidentialité de NinjaOne.

Termes et conditions NinjaOne

En cliquant sur le bouton “J’accepte” ci-dessous, vous indiquez que vous acceptez les termes juridiques suivants ainsi que nos conditions d’utilisation:

  • Droits de propriété: NinjaOne possède et continuera de posséder tous les droits, titres et intérêts relatifs au script (y compris les droits d’auteur). NinjaOne vous accorde une licence limitée pour l’utilisation du script conformément à ces conditions légales.
  • Limitation de l’utilisation: Les scripts ne peuvent être utilisés qu’à des fins personnelles ou professionnelles internes légitimes et ne peuvent être partagés avec d’autres entités.
  • Interdiction de publication: Vous n’êtes en aucun cas autorisé à publier le script dans une bibliothèque de scripts appartenant à, ou sous le contrôle d’un autre fournisseur de logiciels.
  • Clause de non-responsabilité: Le texte est fourni “tel quel” et “tel que disponible”, sans garantie d’aucune sorte. NinjaOne ne promet ni ne garantit que le script sera exempt de défauts ou qu’il répondra à vos besoins ou attentes particulières.
  • Acceptation des risques: L’utilisation du script est sous votre propre responsabilité. Vous reconnaissez qu’il existe certains risques inhérents à l’utilisation du script, et vous comprenez et assumez chacun de ces risques.
  • Renonciation et exonération de responsabilité: Vous ne tiendrez pas NinjaOne pour responsable des conséquences négatives ou involontaires résultant de votre utilisation du script, et vous renoncez à tout droit ou recours légal ou équitable que vous pourriez avoir contre NinjaOne en rapport avec votre utilisation du script.
  • EULA: Si vous êtes un client de NinjaOne, votre utilisation du script est soumise au contrat de licence d’utilisateur final qui vous est applicable (End User License Agreement (EULA)).