Note: This script is a part of Rigutils toolset. GitHub: ConfigureFirewall.bat

Prerequisites

  1. Complete Disable UAC step

General info

Detailed information on firewall setup as well as GUI oriented tutorial could be found here.


Instruction

STEP 1. Launch command prompt via cmd_rigutils.bat

STEP 2. Run ConfigureFirewall.bat

1. Type ConfigureFirewall.bat (case of letters doesn't matter)

2. Press Enter

You may start typing Conf and then press the Tab key on your keyboard to speedup command entry. cmd.exe will search for commands in current directory starting with Conf and expand it to it's full name automatically.

ConfigureFirewall.bat

attachmentconfig_firewall_bat_00.pdn


3. You don't have to do anything until the script begins to ask you questions (see STEP 3 below). Here is just a step-by-step walkthrough of actions this script performs:


3.1. Saving current state of firewall into a backup file

set "BackupDir=%~dp0firewall.bak"
if not exist "%BackupDir%" (
    echo == Creating backup directory ==
    echo %BackupDir%
    mkdir "%BackupDir%" || goto :exitWithError
)
 
if not exist "%BackupDir%\firewall.wfw" (
    echo == Saving current firewall configuration ==
    echo file: %BackupDir%\firewall.wfw
    netsh advfirewall export "%BackupDir%\firewall.wfw" || goto :exitWithError    
)

Output:

== Creating backup directory ==
C:\bin\rigutils\windows_tuning\firewall.bak
 
== Saving current firewall configuration ==
file: C:\bin\rigutils\windows_tuning\firewall.bak\firewall.wfw
Ok.
 
For restoring of your original firewall configuration use the command:
  netsh advfirewall import C:\bin\rigutils\windows_tuning\firewall.bak\firewall.wfw
or the following command if you want to restore default Windows settings:
  netsh advfirewall reset

3.2. Disabling ALL non BLOCKING inbound rules

This nice one-liner powershell script loops through all inbound rules which allow connections and disables them one by one

powershell -Command "& { $fw=New-object -comObject HNetCfg.FwPolicy2 ; $fw.rules | where-object { $_.Direction -eq 1 -and $_.Enabled -eq $true -and $_.Action -ne 0 } | ForEach { echo $_.Name; $_.Enabled=0 }; $rc=@($rules).Count; echo ' ' \"$rc firewall rules were disabled\" }" || goto :exitWithError

Output:

== Disabling ALL PERMISSIVE inbound rules ==
<A lengthy list of disabled rules goes here>

201 firewall rules were disabled

For restoring of your original firewall configuration use the command:
  netsh advfirewall import C:\bin\rigutils\windows_tuning\firewall.bak\firewall.wfw
or the following command if you want to restore default Windows settings:
  netsh advfirewall reset

3.3. Disabling IPv6 Detailed information on IPv6 enabling/disabling could be found here at support.microsoft.com

set "RegPath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"
set "RegValue=255"
 
echo RegPath: %RegPath%
echo RegValue: %RegValue%
 
reg.exe ADD %RegPath% /v DisabledComponents /t REG_DWORD /d %RegValue% /f || goto :exitWithError

Output:

== Disabling IPv6 ==
RegPath: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters
RegValue: 255
The operation completed successfully.

3.4. Activating the restrictive firewall policy

Read this nice blog post on working with firewall from CLI.

echo == Configuring firewall policy ==
echo deny ALL INCOMING connections with NO MATCHING rules and allow ALL OUTGOING connections
netsh advfirewall set allprofiles firewallpolicy blockinbound,allowoutbound || goto :exitWithError
 
echo To re-enable ALL INCOMING connections by default run the following command: 
echo   netsh advfirewall set allprofiles firewallpolicy allowinbound,allowoutbound

Output:

== Configuring firewall policy ==
deny ALL INCOMING connections with NO MATCHING rules and allow ALL OUTGOING connections
Ok.

To re-enable ALL INCOMING connections by default run the following command:
  netsh advfirewall set allprofiles firewallpolicy allowinbound,allowoutbound

STEP 3. Allow selected inbound connections

If you got the message Some error occurred! then you have to analyze output of the script and fix the problem by yourself before running the script again.

Shut up Telemetry.bat

attachmentshutuptelemetry_02.pdn


GitHub ShutupTelemetry.bat

This topic does not exist yet

You've followed a link to a topic that doesn't exist yet. If permissions allow, you may create it by clicking on “Create this page”.