Управление Windows Firewall с помощью консоли

В данной статье речь пойдет об управлении Windows Firewall (брандмауэр Windows) из окна консоли. Рассматривать будем на примере обеспечения доступа к компьютеру по RDP (порт 3389).

Условия: Имеется сервер с операционной системой Windows Server 2008R2, используется бухгалтерией в качестве терминального сервера

Задача: Запретить доступ к серверу со стороны всех пользователей в нерабочие часы, обеспечить доступ техподдержке всегда.

Принято решение использовать возможности Windows Firewall с Windows Scheduler (планировщик задач), а также написать батник, который это реализует, для того, чтобы на других серверах эту процедуру можно было бы провести намного быстрее. Разберемся с управлением самого Windows Firewall:

Управление Windows Firewall

Включить Windows Firewall:

netsh advfirewall set <Profile> state on

Выключить Windows Firewall:

netsh advfirewall set <Profile> state off

Вместо <Profile> необходимо вставить требуемый профиль. Они бывают: Domainprofile, Privateprofile, Publicprofile, а если вам необходимо управлять сразу всеми профилями, то вставьте Allprofiles.

Перед включением Windows Firewall на удаленном сервере, убедитесь, что вы не потеряете к нему доступ, лучше сначала сделать все правила, и только потом включать Windows Firewall. Управление правилами довольно простое:

Создать новое правило:

netsh advfirewall firewall add rule name="RuleName" [Параметры]

Возможных параметров довольно много, вот некоторые из них (востребованные чаще всего):

dir=in — указывает направление трафика, в данном случае — входящее подключение

action=allow — указывает действие при срабатывании правила, в данном случае «Разрешить». Возможен вариант «block»

protocol=TCP — указывает протоколы, для которых будет работать правило. Если нужно разрешить все протоколы, то пишем «any»

localport=3389 — указывает локальный порт для подключения

remoteip=111.22.33.44 — указывает ip-адреса удаленных компьютеров, которые могут подключиться. Если адресов несколько, то их можно указать через запятую, для добавления подсети адресов напишите сеть/маска, например 192.168.11.0/24

enable=yes — указывает, включено ли правило

Удалить правило:

netsh advfirewall firewall delete rule name="RuleName"

Для изменения существующего правила необходимо указать его имя, далее ключевое слово new, и следом указать связки <Параметр>=<Значение>, которые требуется изменить. В качестве примера я отключу существующее правило:

netsh advfirewall firewall set rule name="RuleName" new enable=no

Теперь переходим конкретно к нашей задаче. Нам потребуется 2 правила: одно будет разрешать доступ по порту 3389 всем, второе будет разрешать доступ только для указанных ip-адресов (адреса техподдержки). В конце рабочего дня первое правило будет отключаться, в начале рабочего дня — включаться. Ниже приведу код батника для создания этих двух правил.

@echo off
echo Creating Windows Firewall rule "RDP Day"...
netsh advfirewall firewall add rule name="RDP Day" dir=in action=allow protocol=TCP localport=3389 enable=yes
echo Creating Windows Firewall rule "RDP Night"...
netsh advfirewall firewall add rule name="RDP Night" dir=in action=allow protocol=TCP localport=3389 enable=yes remoteip=111.222.33.44
timeout 30

Вместо ip-адреса 111.222.33.44 подставьте свой. Как включать/отключать (не удалять!) правила вы уже знаете из примера, поэтому пишем еще 2 батника: в одном правило RDP Day включается, в другом — отключается. Далее займемся Windows Scheduler. Параметров в командах множество, я покажу на примере необходимые параметры:

schtasks /create /TN "Starting a work day" /SC Daily /ST 09:00 /TR C:\Scripts\StartDay.bat
schtasks /create /TN "Ending a work day" /SC Daily /ST 18:00 /TR C:\Scripts\EndDay.bat

schtasks — команда Windows Scheduler

/create — ключ, сообщающий, что мы хотим создать задачу

/TN — имя создаваемой задачи

/SC — расписание, с какой периодичностью выполняется задача, в данном случае ежедневно

/ST — время начала выполнения задачи. Формат времени: hh:mm

/TR — путь до исполняемого файла, в нашем случае — путь до батников

После выполнения данных команд, вы можете наблюдать в планировщике задач 2 новые ежедневные задачи. Одна будет отключать правило доступа для всех, вторая будет его, наоборот, включать.

Задача решена, теперь можно в подобных случаях использовать написанные батники на других серверах.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *