none
не добавляются правила блокировки брандмаузера RRS feed

  • Вопрос

  • не добавляются правила блокировки в брандмаузер сначала я пробовал с этим скриптом ошибок в PowerShell не было

    $IPListFileName = "iplist.txt"                # file with list of IP's.
    $NetshCmdFile = "BlockTheseIPs.cmd"           # cmd file to execute
    $GenRuleCount = 5                             # Generate a rule for n IP addresses
    $RuleNo = 1
    $Count = 0
    $IPs = ""
    "" | Out-File -Encoding unicode  -FilePath $NetshCmdFile
    Get-Content $IPListFileName | %{
      #"Got $_"
       $IPs = "$IPs,$_"
       $Count = $Count + 1
       if ($Count -eq $GenRuleCount)
       {
            $IPs = $ips.Substring(1)         # get rid of leading comma
            "netsh advfirewall firewall set rule name=""IPSBLOCKED_$RuleNo"" new remoteip=""$IPs"""
            "netsh advfirewall firewall set rule name=""IPSBLOCKED_$RuleNo"" new remoteip=""$IPs""" | Out-File -Encoding unicode -FilePath $NetshCmdFile -Append
            $RuleNo = $RuleNo + 1
            $Count = 0
            $IPs = ""        
       }
    }
    # Did we hit EOF before generating the last command?
    if ($IPs -ne "") {
     $IPs = $ips.Substring(1)         # get rid of leading comma
     "netsh advfirewall firewall set rule name=""IPSBLOCKED_$RuleNo"" new remoteip=""$IPs"""
     "netsh advfirewall firewall set rule name=""IPSBLOCKED_$RuleNo"" new remoteip=""$IPs""" | Out-File -Encoding unicode -FilePath $NetshCmdFile -Append
     }
    "pause" | Out-File -Encoding unicode -FilePath $NetshCmdFile -Append     

                    

    ####################################################################################
    #.Synopsis 
    #    Block all IP addresses listed in a text file using the Windows Firewall.
    #
    #.Description 
    #    Script will create inbound and outbound rules in the Windows Firewall to
    #    block all the IPv4 and/or IPv6 addresses listed in an input text file.  IP
    #    address ranges can be defined with CIDR notation (10.4.0.0/16) or with a
    #    dash (10.4.0.0-10.4.255.255).  Comments and blank lines are ignored in the
    #    input file.  The script deletes and recreates the rules each time the 
    #    script is run, so don't edit the rules by hand.  Requires admin privileges.
    #    Multiple rules will be created if the input list is large.  Requires
    #    Windows Vista, Windows 7, Server 2008 or later operating system.  Blocking
    #    more than 5000 IP address ranges does delay initial connections, will slow
    #    the loading of the Windows Firewall snap-in, and will lengthen the time 
    #    to disable/enable a network interface. This script is just a wrapper for
    #    the netsh.exe tool.  You can block individual IP addresses too, you do not
    #    need to use CIDR notation for this (10.1.1.1/32), though this does work.
    #
    #.Parameter InputFile
    #    File containing IP addresses and ranges to block; IPv4 and IPv6 supported.
    #    By default, the script will look for and use a file named 'blocklist.txt'.
    #
    #.Parameter RuleName
    #    (Optional) Override default firewall rule name; default based on file name.
    #    When used with -DeleteOnly, just give the rule basename without the "-#1".
    #
    #.Parameter ProfileType
    #    (Optional) Comma-delimited list of network profile types for which the
    #    blocking rules will apply: public, private, domain, any (default = any).
    #
    #.Parameter InterfaceType
    #    (Optional) Comma-delimited list of interface types for which the
    #    blocking rules will apply: wireless, ras, lan, any (default = any).
    #
    #.Parameter DeleteOnly
    #    (Switch) Matching firewall rules will be deleted, none will be created.
    #    When used with -RuleName, leave off the "-#1" at the end of the rulename.
    #
    #.Example 
    #    import-firewall-blocklist.ps1 -inputfile IpToBlock.txt
    #
    #.Example
    #    import-firewall-blocklist.ps1 -inputfile iptoblock.txt -profiletype public
    #
    #.Example
    #    import-firewall-blocklist.ps1 -inputfile iptoblock.txt -interfacetype wireless
    #
    #.Example 
    #    import-firewall-blocklist.ps1 -inputfile IpToBlock.txt -deleteonly
    #
    #.Example 
    #    import-firewall-blocklist.ps1 -rulename IpToBlock -deleteonly
    #
    #Requires -Version 1.0 
    #
    #.Notes 
    #  Author: Jason Fossen (http://www.sans.org/windows-security/)  
    # Version: 1.2
    # Updated: 20.Mar.2012
    #   LEGAL: PUBLIC DOMAIN.  SCRIPT PROVIDED "AS IS" WITH NO WARRANTIES OR GUARANTEES OF 
    #          ANY KIND, INCLUDING BUT NOT LIMITED TO MERCHANTABILITY AND/OR FITNESS FOR
    #          A PARTICULAR PURPOSE.  ALL RISKS OF DAMAGE REMAINS WITH THE USER, EVEN IF
    #          THE AUTHOR, SUPPLIER OR DISTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY OF
    #          ANY SUCH DAMAGE.  IF YOUR STATE DOES NOT PERMIT THE COMPLETE LIMITATION OF
    #          LIABILITY, THEN DELETE THIS FILE SINCE YOU ARE NOW PROHIBITED TO HAVE IT.
    ####################################################################################

    param ($InputFile = "BlockList.txt", $RuleName, $ProfileType = "any", $InterfaceType = "any", [Switch] $DeleteOnly)

    # Look for some help arguments, show help, then quit.
    if ($InputFile -match '/[?h]') { "`nPlease run 'get-help .\import-firewall-blocklist.ps1 -full' for help on PowerShell 2.0 and later, or just read the script's header in a text editor.`n" ; exit }  

    # Get input file and set the name of the firewall rule.
    $file = get-item $InputFile -ErrorAction SilentlyContinue # Sometimes rules will be deleted by name and there is no file.
    if (-not $? -and -not $DeleteOnly) { "`nCannot find $InputFile, quitting...`n" ; exit } 
    if (-not $rulename) { $rulename = $file.basename }  # The '-#1' will be appended later.

    # Description will be seen in the properties of the firewall rules.
    $description = "Rule created by script on $(get-date). Do not edit rule by hand, it will be overwritten when the script is run again. By default, the name of the rule is named after the input file."

    # Any existing firewall rules which match the name are deleted every time the script runs.
    "`nDeleting any inbound or outbound firewall rules named like '$rulename-#*'`n"
    $currentrules = netsh.exe advfirewall firewall show rule name=all | select-string '^[Rule Name|Regelname]+:\s+(.+$)' | foreach { $_.matches[0].groups[1].value } 
    if ($currentrules.count -lt 3) {"`nProblem getting a list of current firewall rules, quitting...`n" ; exit } 
    # Note: If you are getting the above error, try editing the regex pattern two lines above to include the 'Rule Name' in your local language.
    $currentrules | foreach { if ($_ -like "$rulename-#*"){ netsh.exe advfirewall firewall delete rule name="$_" | out-null } } 

    # Don't create the firewall rules again if the -DeleteOnly switch was used.
    if ($deleteonly -and $rulename) { "`nReminder: when deleting by name, leave off the '-#1' at the end of the rulename.`n" } 
    if ($deleteonly) { exit } 

    # Create array of IP ranges; any line that doesn't start like an IPv4/IPv6 address is ignored.
    $ranges = get-content $file | where {($_.trim().length -ne 0) -and ($_ -match '^[0-9a-f]{1,4}[\.\:]')} 
    if (-not $?) { "`nCould not parse $file, quitting...`n" ; exit } 
    $linecount = $ranges.count
    if ($linecount -eq 0) { "`nZero IP addresses to block, quitting...`n" ; exit } 

    # Now start creating rules with hundreds of IP address ranges per rule.  Testing shows
    # that netsh.exe errors begin to occur with more than 400 IPv4 ranges per rule, and 
    # this number might still be too large when using IPv6 or the Start-to-End format, so 
    # default to only 100 ranges per rule, but feel free to edit the following variable:
    $MaxRangesPerRule = 100

    $i = 1                     # Rule number counter, when more than one rule must be created, e.g., BlockList-#001.
    $start = 1                 # For array slicing out of IP $ranges.
    $end = $maxrangesperrule   # For array slicing out of IP $ranges.
    do {
        $icount = $i.tostring().padleft(3,"0")  # Used in name of rule, e.g., BlockList-#042.

        if ($end -gt $linecount) { $end = $linecount } 
        $textranges = [System.String]::Join(",",$($ranges[$($start - 1)..$($end - 1)])) 

        "`nCreating an  inbound firewall rule named '$rulename-#$icount' for IP ranges $start - $end" 
        netsh.exe advfirewall firewall add rule name="$rulename-#$icount" dir=in action=block localip=any remoteip="$textranges" description="$description" profile="$profiletype" interfacetype="$interfacetype"
        if (-not $?) { "`nFailed to create '$rulename-#$icount' inbound rule for some reason, continuing anyway..."}

        "`nCreating an outbound firewall rule named '$rulename-#$icount' for IP ranges $start - $end" 
        netsh.exe advfirewall firewall add rule name="$rulename-#$icount" dir=out action=block localip=any remoteip="$textranges" description="$description" profile="$profiletype" interfacetype="$interfacetype"
        if (-not $?) { "`nFailed to create '$rulename-#$icount' outbound rule for some reason, continuing anyway..."}

        $i++
        $start += $maxrangesperrule
        $end += $maxrangesperrule
    } while ($start -le $linecount)



    # END-O-SCRIPT

    # Incidentally, testing shows a delay of 2-5 seconds sometimes for the initial
    # connection when there are more than 5000 IP address ranges total in the various
    # outbound rules (once established, there is no delay).  However, it does not seem
    # consistent.  Also, at 5000+ subnets in one's rules, it delays the opening of the
    # Windows Firewall snap-in, and at 9000+ subnets it sometimes prevents the WF snap-in
    # from opening successfully at all.  However, this behavior is not consistent either.

    Deleting any inbound or outbound firewall rules named like 'BlockList-#*'


    Problem getting a list of current firewall rules, quitting...

    со 2 скриптом вылетает ошибка 

    Deleting any inbound or outbound firewall rules named like 'BlockList-#*'


    Problem getting a list of current firewall rules, quitting...

    21 октября 2019 г. 13:38

Ответы

  • Windows 7 powershell v 1.0 или 2.0 с автором я не связывался нету необходимости мне просто нужно закрыть диапозоны айпишников


    Ну если проблема возникает с работой сценария, то лучше сообщить об этом автору, чтобы он его доработал, сообщив более детально шаги как можно воспроизвести проблему.

    Если не хотите обращаться к автору, то попробуйте по этапно проанализировать на каком шаге возникает проблема.

    Если опираться на сообщение указанное вами, выполнения сценария завершается на следующем этапе:

    if ($currentrules.count -lt 3) {"`nProblem getting a list of current firewall rules, quitting...`n" ; exit } 


    Avis de non-responsabilité:
    Mon opinion ne peut pas coïncider avec la position officielle de Microsoft.

    Bien cordialement, Andrei ...

    MCP

    • Изменено SQxModerator 21 октября 2019 г. 17:08 обновлено
    • Помечено в качестве ответа Vector BCOModerator 2 ноября 2019 г. 15:10
    21 октября 2019 г. 17:07
    Модератор

Все ответы

  • Здравствуйте,

    Насколько я понимаю у Вас возникает проблема со следующим скриптом из GItHub.
    - Вы пробовали связаться с автором данного скрипта?

    - На какой ОС и версии Powershell возникает проблема?


    Avis de non-responsabilité:
    Mon opinion ne peut pas coïncider avec la position officielle de Microsoft.

    Bien cordialement, Andrei ...

    MCP

    21 октября 2019 г. 14:23
    Модератор
  • Здравствуйте,

    Насколько я понимаю у Вас возникает проблема со следующим скриптом из GItHub.
    - Вы пробовали связаться с автором данного скрипта?

    - На какой ОС и версии Powershell возникает проблема?


    Avis de non-responsabilité:
    Mon opinion ne peut pas coïncider avec la position officielle de Microsoft.

    Bien cordialement, Andrei ...

    MCP

    Windows 7 powershell v 1.0 или 2.0 с автором я не связывался нету необходимости мне просто нужно закрыть диапозоны айпишников



    21 октября 2019 г. 16:19
  • Windows 7 powershell v 1.0 или 2.0 с автором я не связывался нету необходимости мне просто нужно закрыть диапозоны айпишников


    Ну если проблема возникает с работой сценария, то лучше сообщить об этом автору, чтобы он его доработал, сообщив более детально шаги как можно воспроизвести проблему.

    Если не хотите обращаться к автору, то попробуйте по этапно проанализировать на каком шаге возникает проблема.

    Если опираться на сообщение указанное вами, выполнения сценария завершается на следующем этапе:

    if ($currentrules.count -lt 3) {"`nProblem getting a list of current firewall rules, quitting...`n" ; exit } 


    Avis de non-responsabilité:
    Mon opinion ne peut pas coïncider avec la position officielle de Microsoft.

    Bien cordialement, Andrei ...

    MCP

    • Изменено SQxModerator 21 октября 2019 г. 17:08 обновлено
    • Помечено в качестве ответа Vector BCOModerator 2 ноября 2019 г. 15:10
    21 октября 2019 г. 17:07
    Модератор

  • Windows 7 powershell v 1.0 или 2.0 с автором я не связывался нету необходимости мне просто нужно закрыть диапозоны айпишников

    на windows 7 по умолчанию установлен posh второй версии, который без проблем обновляется до версии 5 (что рекоммендуется)

    posh первой версии в рабочем состоянии найти большая задача


    The opinion expressed by me is not an official position of Microsoft

    21 октября 2019 г. 19:25
    Модератор