Comment effectuer une vérification de la liste de blocage des adresses IP WAN avec PowerShell

Le blacklistage des adresses IP publiques est une menace silencieuse mais significative dans les environnements d’entreprise hyperconnectés. Lorsque l’IP WAN de votre entreprise se retrouve sur une liste de blocage basée sur le DNS (DNSBL), cela peut entraîner des courriels non délivrés, des communications interrompues et une perte de confiance de la part des clients. Pour les fournisseurs de services gérés (MSP) et les professionnels de l’informatique, il est essentiel de détecter ces incidents et d’y répondre avant qu’ils n’aient un impact sur les opérations. Apprendre à automatiser la vérification de la liste de blocage des adresses IP WAN (réseau étendu) avec PowerShell peut constituer un outil puissant dans la boîte à outils de la cybersécurité proactive.

Contexte

De nombreuses entreprises ne se rendent pas compte que leur adresse IP WAN a été mise sur liste noire avant d’être confrontées à des problèmes de délivrabilité du courrier électronique ou de recevoir des plaintes de la part de leurs clients. Les listes noires sont gérées par des services tiers qui signalent les adresses IP impliquées dans des spams ou des activités malveillantes. Bien que ces services soient essentiels à l’hygiène globale du courrier électronique, les faux positifs ne sont pas rares, en particulier pour les adresses IP dynamiques ou les environnements d’hébergement partagés.

Ce script PowerShell a été conçu pour automatiser le processus de vérification d’une adresse IP WAN par rapport à des dizaines de DNSBL courants. Il peut être exécuté manuellement ou programmé pour des vérifications périodiques, ce qui en fait un excellent outil pour les MSP et les équipes d’exploitation informatique internes qui doivent vérifier la santé de l’IP externe dans plusieurs environnements clients.

Le script

#Requires -Version 5.1

<#
.SYNOPSIS
    Checks several common blacklists to see if the device's WAN IP is currently being blacklisted. A private recursive DNS server is recommended, as it is not uncommon for DNS blocklists to block public DNS servers such as 1.1.1.1.
.DESCRIPTION
    Checks several common blacklists to see if the device's WAN IP is currently being blacklisted. A private recursive DNS server is recommended, as it is not uncommon for DNS blocklists to block public DNS servers such as 1.1.1.1. 
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).
.EXAMPLE
    (No Parameters) - When found on blacklist

    [Alert] The WAN IP '127.0.0.1' was found on 9 blacklist(s).
    You may want to validate these results with 'https://mxtoolbox.com/SuperTool.aspx?action=blacklist%3a127.0.0.1'.
    Name                          TTL                                                ResponseCode                          
    ----                          ---                                                ------------                          
    Blocklist.de                  1269                                               127.0.0.14                            
    Interserver RBL               903                                                127.0.0.2                             
    Interserver Spam Assassin RBL 903                                                127.0.0.2                             
    Mailspike Z                   120                                                127.0.0.2                             
    Mailspike BL                  120                                                127.0.0.2                             
    S5H                           5, 86400, 86400, 86400, 30, 300, 30, 300, 300, 300 127.0.0.2, 85.119.82.99, 2001:ba8:1...
    UCE Protect - L1              902                                                127.0.0.2                             
    UCE Protect - L2              902                                                127.0.0.2                             
    UCE Protect - L3              902                                                127.0.0.2

    Blacklists Checked: 0Spam, 0Spam RBL, Anonmails DNSBL, Backscatterer, Blocklist.de, Cymru Bogons, Dan Tor, Dan Tor Exit, Drone BL, Fabel Sources, Host Karma, ImproWare (IMP) DNS RBL, ImproWare (IMP) Spam RBL, Interserver RBL, Interserver Spam Assassin RBL, JIPPG's Relay Blackhole List Project, Kempt.net DNS Black List, Mailspike Z, Mailspike BL, Nordspam BL, PSBL, S5H, Schulte, Spam Eating Monkey - Backscatter, Spam Eating Monkey - Black, SpamCop, Suomispam, Truncate, UCE Protect - L1, UCE Protect - L2, UCE Protect - L3, ZapBL

.EXAMPLE
    (No Parameters) - When not found on blacklist

    The WAN IP '127.0.0.1' was not found on any blacklists.
    You may want to validate these results with 'https://mxtoolbox.com/SuperTool.aspx?action=blacklist%3a127.0.0.1'.

    Blacklists Checked: 0Spam, 0Spam RBL, Anonmails DNSBL, Backscatterer, Blocklist.de, Cymru Bogons, Dan Tor, Dan Tor Exit, Drone BL, Fabel Sources, Host Karma, ImproWare (IMP) DNS RBL, ImproWare (IMP) Spam RBL, Interserver RBL, Interserver Spam Assassin RBL, JIPPG's Relay Blackhole List Project, Kempt.net DNS Black List, Mailspike Z, Mailspike BL, Nordspam BL, PSBL, S5H, Schulte, Spam Eating Monkey - Backscatter, Spam Eating Monkey - Black, SpamCop, Suomispam, Truncate, UCE Protect - L1, UCE Protect - L2, UCE Protect - L3, ZapBL

PARAMETER: -CustomField "ReplaceMeWithYourDesiredMultilineCustomField"
    Optionally specify the name of a multiline custom field to store the results in.

.NOTES
    Minimum OS Architecture Supported: Windows 10, Windows Server 2016
    Release Notes: Initial Release
#>

[CmdletBinding()]
param (
    [Parameter()]
    [String]$CustomField
)

begin {
    # If using script form variables, replace command line parameters with them.
    if($env:multilineCustomFieldName -and $env:multilineCustomFieldName -notlike "null") { $CustomField = $env:multilineCustomFieldName }

    # Local administrator privileges are required to set custom fields.
    function Test-IsElevated {
        $id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
        $p = New-Object System.Security.Principal.WindowsPrincipal($id)
        $p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)
    }

    function Set-NinjaProperty {
        [CmdletBinding()]
        Param(
            [Parameter(Mandatory = $True)]
            [String]$Name,
            [Parameter()]
            [String]$Type,
            [Parameter(Mandatory = $True, ValueFromPipeline = $True)]
            $Value,
            [Parameter()]
            [String]$DocumentName
        )
        
        $Characters = $Value | Out-String | Measure-Object -Character | Select-Object -ExpandProperty Characters
        if ($Characters -ge 200000) {
            throw [System.ArgumentOutOfRangeException]::New("Character limit exceeded: the value is greater than or equal to 200,000 characters.")
        }
            
        # If requested to set the field value for a Ninja document, specify it here.
        $DocumentationParams = @{}
        if ($DocumentName) { $DocumentationParams["DocumentName"] = $DocumentName }
            
        # This is a list of valid fields that can be set. If no type is specified, assume that the input does not need to be changed.
        $ValidFields = "Attachment", "Checkbox", "Date", "Date or Date Time", "Decimal", "Dropdown", "Email", "Integer", "IP Address", "MultiLine", "MultiSelect", "Phone", "Secure", "Text", "Time", "URL", "WYSIWYG"
        if ($Type -and $ValidFields -notcontains $Type) { Write-Warning "$Type is an invalid type. Please check here for valid types: https://ninjarmm.zendesk.com/hc/en-us/articles/16973443979789-Command-Line-Interface-CLI-Supported-Fields-and-Functionality" }
            
        # The field below requires additional information to set.
        $NeedsOptions = "Dropdown"
        if ($DocumentName) {
            if ($NeedsOptions -contains $Type) {
                # Redirect error output to the success stream to handle errors more easily if nothing is found or something else goes wrong.
                $NinjaPropertyOptions = Ninja-Property-Docs-Options -AttributeName $Name @DocumentationParams 2>&1
            }
        }
        else {
            if ($NeedsOptions -contains $Type) {
                $NinjaPropertyOptions = Ninja-Property-Options -Name $Name 2>&1
            }
        }
            
        # If an error is received with an exception property, exit the function with that error information.
        if ($NinjaPropertyOptions.Exception) { throw $NinjaPropertyOptions }
            
        # The types below require values not typically given to be set. The code below will convert whatever we're given into a format ninjarmm-cli supports.
        switch ($Type) {
            "Checkbox" {
                # Although it's highly likely we were given a value like "True" or a boolean data type, it's better to be safe than sorry.
                $NinjaValue = [System.Convert]::ToBoolean($Value)
            }
            "Date or Date Time" {
                # Ninjarmm-cli expects the GUID of the option to be selected. Therefore, match the given value with a GUID.
                $Date = (Get-Date $Value).ToUniversalTime()
                $TimeSpan = New-TimeSpan (Get-Date "1970-01-01 00:00:00") $Date
                $NinjaValue = $TimeSpan.TotalSeconds
            }
            "Dropdown" {
                # Ninjarmm-cli expects the GUID of the option we're trying to select, so match the value we were given with a GUID.
                $Options = $NinjaPropertyOptions -replace '=', ',' | ConvertFrom-Csv -Header "GUID", "Name"
                $Selection = $Options | Where-Object { $_.Name -eq $Value } | Select-Object -ExpandProperty GUID
            
                if (-not $Selection) {
                    throw [System.ArgumentOutOfRangeException]::New("Value is not present in dropdown options.")
                }
            
                $NinjaValue = $Selection
            }
            default {
                # All the other types shouldn't require additional work on the input.
                $NinjaValue = $Value
            }
        }
            
        # Set the field differently depending on whether it's a field in a Ninja Document or not.
        if ($DocumentName) {
            $CustomField = Ninja-Property-Docs-Set -AttributeName $Name -AttributeValue $NinjaValue @DocumentationParams 2>&1
        }
        else {
            $CustomField = $NinjaValue | Ninja-Property-Set-Piped -Name $Name 2>&1
        }
            
        if ($CustomField.Exception) {
            throw $CustomField
        }
    }

    # Blacklists we are going to check.
    $BlackLists = @(
        [PSCustomObject]@{
            DisplayName     = "0Spam"
            DNSBLDomainName = "bl.0spam.org"
        }
        [PSCustomObject]@{
            DisplayName     = "0Spam RBL"
            DNSBLDomainName = "rbl.0spam.org"
        }
        [PSCustomObject]@{
            DisplayName     = "Anonmails DNSBL"
            DNSBLDomainName = "spam.dnsbl.anonmails.de"
        }
        [PSCustomObject]@{
            DisplayName     = "Backscatterer"
            DNSBLDomainName = "ips.backscatterer.org"
        }
        [PSCustomObject]@{
            DisplayName     = "Blocklist.de"
            DNSBLDomainName = "bl.blocklist.de"
        }
        [PSCustomObject]@{
            DisplayName     = "Cymru Bogons"
            DNSBLDomainName = "bogons.cymru.com"
        }
        [PSCustomObject]@{
            DisplayName     = "Dan Tor"
            DNSBLDomainName = "tor.dan.me.uk"
        }
        [PSCustomObject]@{
            DisplayName     = "Dan Tor Exit"
            DNSBLDomainName = "torexit.dan.me.uk"
        }
        [PSCustomObject]@{
            DisplayName     = "Drone BL"
            DNSBLDomainName = "dnsbl.dronebl.org"
        }
        [PSCustomObject]@{
            DisplayName     = "Fabel Sources"
            DNSBLDomainName = "spamsources.fabel.dk"
        }
        [PSCustomObject]@{
            DisplayName     = "Host Karma"
            DNSBLDomainName = "hostkarma.junkemailfilter.com"
        }
        [PSCustomObject]@{
            DisplayName     = "ImproWare (IMP) DNS RBL"
            DNSBLDomainName = "dnsrbl.swinog.ch"
        }
        [PSCustomObject]@{
            DisplayName     = "ImproWare (IMP) Spam RBL"
            DNSBLDomainName = "spamrbl.swinog.ch"
        }
        [PSCustomObject]@{
            DisplayName     = "Interserver RBL"
            DNSBLDomainName = "rbl.interserver.net"
        }
        [PSCustomObject]@{
            DisplayName     = "Interserver Spam Assassin RBL"
            DNSBLDomainName = "rblspamassassin.interserver.net"
        }
        [PSCustomObject]@{
            DisplayName     = "JIPPG's Relay Blackhole List Project"
            DNSBLDomainName = "mail-abuse.blacklist.jippg.org"
        }
        [PSCustomObject]@{
            DisplayName     = "Kempt.net DNS Black List"
            DNSBLDomainName = "dnsbl.kempt.net"
        }
        [PSCustomObject]@{
            DisplayName     = "Mailspike Z"
            DNSBLDomainName = "z.mailspike.net"
        }
        [PSCustomObject]@{
            DisplayName     = "Mailspike BL"
            DNSBLDomainName = "bl.mailspike.net"
        }
        [PSCustomObject]@{
            DisplayName     = "Nordspam BL"
            DNSBLDomainName = "bl.nordspam.com"
        }
        [PSCustomObject]@{
            DisplayName     = "PSBL"
            DNSBLDomainName = "psbl.surriel.com"
        }
        [PSCustomObject]@{
            DisplayName     = "S5H"
            DNSBLDomainName = "all.s5h.net"
        }
        [PSCustomObject]@{
            DisplayName     = "Schulte"
            DNSBLDomainName = "rbl.schulte.org"
        }
        [PSCustomObject]@{
            DisplayName     = "Spam Eating Monkey - Backscatter"
            DNSBLDomainName = "backscatter.spameatingmonkey.net"
        }
        [PSCustomObject]@{
            DisplayName     = "Spam Eating Monkey - Black"
            DNSBLDomainName = "bl.spameatingmonkey.net"
        }
        [PSCustomObject]@{
            DisplayName     = "SpamCop"
            DNSBLDomainName = "bl.spamcop.net"
        }
        [PSCustomObject]@{
            DisplayName     = "Suomispam"
            DNSBLDomainName = "bl.suomispam.net"
        }
        [PSCustomObject]@{
            DisplayName     = "Truncate"
            DNSBLDomainName = "truncate.gbudb.net"
        }
        [PSCustomObject]@{
            DisplayName     = "UCE Protect - L1"
            DNSBLDomainName = "dnsbl-1.uceprotect.net"
        }
        [PSCustomObject]@{
            DisplayName     = "UCE Protect - L2"
            DNSBLDomainName = "dnsbl-2.uceprotect.net"
        }
        [PSCustomObject]@{
            DisplayName     = "UCE Protect - L3"
            DNSBLDomainName = "dnsbl-3.uceprotect.net"
        }
        [PSCustomObject]@{
            DisplayName     = "ZapBL"
            DNSBLDomainName = "dnsbl.zapbl.net"
        }
    )

    if (!$ExitCode) {
        $ExitCode = 0
    }
}
process {
    # Check if the script is running with elevated privileges (Administrator)
    if (!(Test-IsElevated)) {
        Write-Host -Object "[Error] Access Denied. Please run with Administrator privileges."
        exit 1
    }

    # Try to retrieve the WAN IP using the ipify.org service
    try {
        $WanIP = (Invoke-WebRequest -Uri "api.ipify.org" -UseBasicParsing).Content
    }
    catch {
        Write-Host -Object "[Error] Failed to retrieve WAN IP."
        Write-Host -Object "[Error] $($_.Exception.Message)"
        exit 1
    }

    # Validate the retrieved WAN IP format
    if ($WanIP -notmatch '\d+\.\d+\.\d+\.\d+') {
        Write-Host -Object "[Error] The service ipify.org returned '$WanIp' which is not a valid IP."
        exit 1
    }

    # Further validate the WAN IP by attempting to cast it as an IP address object
    try {
        [IPAddress]$WanIP | Out-Null
    }
    catch {
        Write-Host -Object "[Error] The service ipify.org returned '$WanIp' which is not a valid IP."
        Write-Host -Object "[Error] $($_.Exception.Message)"
        exit 1
    }

    # Reverse the IP address octets for DNSBL query
    $IPOctets = $WanIP -split '\.'
    [array]::Reverse($IPOctets)
    $ReversedIp = $IPOctets -join '.'

    # Validate the reversed IP format
    if ($ReversedIp -notmatch '\d+\.\d+\.\d+\.\d+') {
        Write-Host -Object "[Error] '$ReversedIp' is not a valid reversed IP of '$WanIP'."
        exit 1
    }

    # Further validate the reversed IP by attempting to cast it as an IP address object
    try {
        [IPAddress]$ReversedIp | Out-Null
    }
    catch {
        Write-Host -Object "[Error] '$ReversedIp' is not a valid reversed IP of '$WanIP'."
        Write-Host -Object "[Error] $($_.Exception.Message)"
        exit 1
    }

    # Initialize a list to store blacklisted services
    $BlackListedServices = New-Object System.Collections.Generic.List[object]

    # Loop through each DNSBL to check if the IP is listed
    $BlackLists | ForEach-Object {
        try {
            $Result = Resolve-DnsName -Name "$ReversedIp.$($_.DNSBLDomainName)" -NoHostsFile -DnsOnly -QuickTimeout -ErrorAction Stop

            $BlockListIP = Resolve-DnsName -Name $($_.DNSBLDomainName) -NoHostsFile -DnsOnly -QuickTimeout -ErrorAction SilentlyContinue | Select-Object -ExpandProperty IPAddress -ErrorAction SilentlyContinue

            foreach($IPAddress in $Result.IPAddress){
                if($IPaddress -notmatch '^127\.0\.' -and $BlockListIP -and $BlockListIP -notcontains $IPAddress){
                    Write-Host -Object "[Error] A Response Code of '$IPaddress' was given by $($_.DisplayName)."
                    Write-Host -Object "[Error] Typically response codes start with '127.0.' you may want to use different DNS servers."
                    $ExitCode = 1
                    return
                }
            }

            # If the result does not contain an IP address skip to next entry
            if(!$($Result.IPAddress)){
                return
            }

            $BlackListedServices.Add(
                [PSCustomObject]@{
                    Name         = $($_.DisplayName)
                    TTL          = $($Result.TTL -join ', ')
                    ResponseCode = $($Result.IPAddress -join ', ')
                }
            )
        }
        catch {
            return
        }
    }

    # Create a custom field value to store the results
    $CustomFieldValue = New-Object System.Collections.Generic.List[string]
    $MXToolboxLink = "https://mxtoolbox.com/SuperTool.aspx?action=blacklist%3a$WanIP"

    # Check if any blacklists contain the WAN IP and output the results
    if($BlackListedServices.Count -gt 0){
        Write-Host -Object "[Alert] The WAN IP '$WanIp' was found on $($BlackListedServices.Count) blacklist(s)."
        Write-Host -Object "You may want to validate these results with '$MXToolboxLink'."
        $CustomFieldValue.Add("[Alert] The WAN IP '$WanIp' was found on $($BlackListedServices.Count) blacklist(s).")
        $CustomFieldValue.Add($MXToolboxLink)

        ($BlackListedServices | Format-Table | Out-String).Trim() | Write-Host
        $CustomFieldValue.Add($($BlackListedServices | Format-List | Out-String))
    }else{
        Write-Host -Object "The WAN IP '$WanIp' was not found on any blacklists."
        Write-Host -Object "You may want to validate these results with '$MXToolboxLink'."

        $CustomFieldValue.Add("The WAN IP '$WanIp' was not found on any blacklists.")
        $CustomFieldValue.Add($MXToolboxLink)
    }

    # Output the list of blacklists checked
    Write-Host -Object "`nBlacklists Checked: $($BlackLists.DisplayName -join ', ')"

    # Optionally set a custom field with the results
    if($CustomField){
        try {
            Write-Host "`nAttempting to set Custom Field '$CustomField'."
            Set-NinjaProperty -Name $CustomField -Value $CustomFieldValue
            Write-Host "Successfully set Custom Field '$CustomField'!"
        }
        catch {
            Write-Host "[Error] $($_.Exception.Message)"
            exit 1
        }
    }

    exit $ExitCode
}
end {
    
    
    
}

 

Description détaillée

À un niveau élevé, le script effectue les opérations suivantes :

  1. Préparation de l’environnement
    • Nécessite PowerShell 5.1 et des privilèges d’administrateur.
    • S’intègre en option avec les champs personnalisés de NinjaOne pour l’établissement de rapports.
  2. Récupérer l’IP WAN
    • Utilise ipify.org pour obtenir l’adresse IP actuelle du réseau étendu.
  3. Formatage inversé de l’IP
    • Formate l’IP pour les requêtes DNSBL (par exemple, 1.2.3.4 devient 4.3.2.1).
  4. Exécution de la requête DNSBL
    • Passe en boucle par plus de 30 listes de blocage prédéfinies.
    • Utilise Resolve-DnsName pour vérifier les entrées de la liste de blocage.
    • Identifie si l’IP est listée et capture le TTL et les codes de réponse.
  5. Enregistrement et sortie des résultats
    • Produit les résultats de la liste de blocage dans un format lisible par l’homme.
    • Génère un lien pour valider les résultats via MXToolbox.
    • Il est possible d’écrire dans un champ personnalisé multiligne NinjaOne à l’aide d’une fonction Set-NinjaProperty intégrée.
  6. Code de sortie
    • Définit un code de sortie approprié en fonction de la présence d’une liste noire, ce qui facilite l’intégration dans les processus d’automatisation.

Cas d’utilisation potentiels

Imaginez un scénario dans lequel un fournisseur de services gérés (MSP) reçoit des rapports indiquant que les e-mails des clients sont rejetés. Au lieu de vérifier manuellement l’IP WAN par rapport à plusieurs DNSBL, le technicien exécute ce script à distance via NinjaOne. En quelques instants, le script identifie que l’adresse IP du client figure sur quatre listes noires. Le technicien utilise la sortie pour lancer les procédures de radiation tout en documentant le résultat dans un champ personnalisé NinjaOne pour référence ultérieure.

Ce niveau de réponse rapide réduit considérablement les temps d’arrêt et assure la transparence pour les parties prenantes internes et les clients.

Comparaisons

Traditionnellement, les vérifications des listes de blocage sont effectuées manuellement à l’aide d’outils Web tels que MXToolbox ou par l’intermédiaire de plateformes de surveillance haut de gamme. Bien qu’efficaces, ces méthodes sont réactives et nécessitent un déclenchement manuel. En revanche, ce script PowerShell :

  • Permet l’automatisation et la planification,
  • Peut être utiliser pour un grand nombre de terminaux, et
  • Intégration native avec les champs personnalisés de NinjaOne pour la création de rapports et la documentation.

Il existe d’autres approches de script, mais peu d’entre elles offrent ce niveau de gestion intégrée des erreurs, de couverture de plusieurs listes et de formatage des résultats adapté aux flux de travail des entreprises MSP.

Questions fréquentes

Q : Que se passe-t-il si l’adresse IP WAN ne peut être récupérée ?

R : Le script se termine de manière élégante et informe l’utilisateur par un message d’erreur si ipify.org est inaccessible ou renvoie un format non valide.

Q : Puis-je utiliser un serveur DNS public comme 8.8.8.8 ?

R : Ce n’est pas recommandé. De nombreux DNSBL bloquent les requêtes provenant de résolveurs publics. Utilisez un serveur DNS récursif privé pour obtenir des résultats précis.

Q : Comment ce système est-il intégré à NinjaOne ?

R : Si un nom de champ personnalisé est fourni, le script écrit les résultats dans ce champ en utilisant l’interface en ligne de commande (CLI) de NinjaOne. C’est idéal pour les pistes d’audit et la documentation.

Q : Ce script va-t-il modifier la configuration de mon réseau ?

R : Non, le script est en lecture seule, sauf lorsqu’il écrit dans les champs NinjaOne (s’ils sont configurés).

Implications

Si une IP WAN est trouvée dans un seul DNSBL, cela peut entraîner le rejet ou le renvoi silencieux des e-mails sortants. Cela peut nuire à la réputation de l’entreprise et perturber ses activités. L’automatisation de la détection des listes de blocage permet aux équipes informatiques de réagir rapidement et d’éviter que de petits problèmes ne se transforment en incidents majeurs.

De plus, des entrées répétées dans la liste de blocage peuvent signaler des problèmes plus profonds, tels que des dispositifs internes compromis ou des relais de messagerie mal configurés. Des contrôles réguliers permettent de détecter ces anomalies à un stade précoce.

Recommandations

  • Exécutez le script chaque semaine sur les appareils critiques ou les clients disposant d’une adresse IP statique.
  • Utilisez un serveur DNS sécurisé et récursif pour garantir des résultats fiables.
  • Utilisez les champs de NinjaOne pour enregistrer l’historique des listes de blocage et en dégager des tendances.
  • Assurez le suivi de toute détection de liste noire en consultant le fournisseur de liste noire pour connaître les mesures correctives à prendre.
  • Incorporez le script dans les pipelines RMM ou CI/CD pour une surveillance continue.

Conclusion

La vérification de la liste de blocage des adresses IP du réseau étendu à l’aide de PowerShell permet aux équipes informatiques de connaître les risques de réputation externes avant qu’ils ne deviennent critiques. Ce script, en particulier lorsqu’il est associé aux fonctions d’automatisation et de documentation de NinjaOne, permet d’adopter une position proactive en matière de délivrabilité du courrier électronique et d’hygiène de la sécurité. Il permet aux entreprises MSP et aux administrateurs informatiques de disposer d’une solution évolutive et vérifiable pour gérer et maintenir l’intégrité des IP WAN dans l’ensemble de leur parc informatique.

Si vous cherchez à rendre opérationnels vos contrôles de l’intégrité du réseau ou à optimiser les rapports destinés aux clients, l’intégration de ce script dans vos flux de travail NinjaOne est un point de départ pratique et à fort impact.

Next Steps

Building an efficient and effective IT team requires a centralized solution that acts as your core service delivery tool. NinjaOne enables IT teams to monitor, manage, secure, and support all their devices, wherever they are, without the need for complex on-premises infrastructure.

Learn more about NinjaOne Remote Script Deployment, check out a live tour, or start your free trial of the NinjaOne platform.

Catégories :

Vous pourriez aussi aimer