Вопрос или проблема
Клиент раз в неделю получает записи с удаленного экземпляра MSSQL, используя Excel, для чего он включен в белый список на Windows Server, на котором работает этот экземпляр. Однако время от времени его интернет-провайдер назначает ему новый IP, и мне приходится вручную добавлять его в брандмауэр, чтобы вернуть ему доступ.
В идеале я хотел бы, чтобы он начал использовать DuckDNS или другую службу динамического DNS, чтобы я мог просто добавить домен в белый список, а не вносить изменения вручную. Возможно ли это каким-либо образом на Windows? Включение целого диапазона IP-адресов решило бы проблему, но открыло бы сервер для большего количества машин, с которыми я некомфортно.
Есть ли у брандмауэра Windows такая возможность, и если да, то как мне это настроить?
Брандмауэр Windows работает по IP-адресу, а не по доменному имени.
Возможным решением могло бы быть создание скрипта PowerShell и его запуск при входе в систему. Скрипт тогда будет разрешать DNS-имя и создавать новое правило. Он также должен удалять последнее правило, потому что иначе они будут накапливаться, возможно, даже ежедневно.
Вы можете найти полезные фрагменты PowerShell (с некоторыми изменениями) в статье
Как заблокировать домен или веб-сайт в брандмауэре Windows Defender с помощью PowerShell?
.
Ответ или решение
Разрешение доменного имени вместо IP-адреса в Windows Firewall
В условиях постоянно меняющихся IP-адресов, особенно когда речь идет о динамических диапазонах, настройка доступа к удаленным ресурсам может стать настоящим вызовом. В этой статье мы рассмотрим подходы к решению задачи, связанной с разрешением доменного имени, а не IP-адреса, в Windows Firewall, что позволит упростить управление доступом к MSSQL-инстансам.
Проблема
Ваш клиент, использующий Excel для получения данных из удаленной базы данных MSSQL, сталкивается с проблемой, связанной со сменой IP-адреса, назначаемого его интернет-провайдером. Для обеспечения доступа его IP необходимо добавлять в список разрешенных в Windows Server, что требует постоянного ручного вмешательства. Политика безопасности требует, чтобы вы не открывали доступ для большого диапазона IP-адресов из соображений безопасности.
Решение
К сожалению, Windows Firewall изначально работает с IP-адресами и не поддерживает возможности по созданию правил фильтрации на основе доменных имен. Тем не менее, существует эффективное решение, которое можно реализовать с помощью PowerShell.
Использование PowerShell для динамического обновления правил
-
Настройка динамического DNS: Первым шагом будет настройка клиента на использование услуги динамического DNS, такой как DuckDNS. Это позволит вашему клиенту иметь фиксированное доменное имя, которое будет всегда указывать на его текущий IP-адрес.
-
Создание PowerShell-скрипта: Напишите скрипт на PowerShell, который будет разрешать доменное имя в IP-адрес и обновлять правила Windows Firewall.
$domainName = "yourclient.duckdns.org" $ip = (Resolve-DnsName $domainName).IPAddress[0] # Получение IP-адреса # Удаление предыдущего правила try { Remove-NetFirewallRule -DisplayName "Access to MSSQL from $domainName" } catch { Write-Host "Правило не найдено, возможно, это первая настройка." } # Создание нового правила New-NetFirewallRule -DisplayName "Access to MSSQL from $domainName" -Direction Inbound -Action Allow -RemoteAddress $ip -Protocol TCP -LocalPort 1433
-
Автоматизация скрипта: Настройте планировщик задач (Task Scheduler) для выполнения данного скрипта при каждом входе пользователя или по расписанию, чтобы гарантировать, что правило будет актуальным.
-
Проверка и обслуживание: Рекомендуется добавить логику контроля, которая будет проверять актуальность IP каждый раз, когда выполняется скрипт, а также уведомлять администратора в случае ошибок.
Заключение
Хотя Windows Firewall не поддерживает прямую работу с доменными именами, использование PowerShell и динамического DNS предоставляет мощное и гибкое решение для автоматизации процессов управления доступом. Это метод не только уменьшит количество ручных операций, но и повысит уровень безопасности вашего сервера, исключая необходимость предоставления доступа широкой группе IP-адресов. Теперь ваш клиент сможет без проблем получать данные из MSSQL, а вы сможете сосредоточиться на других задачах, не беспокоясь о постоянных изменениях IP-адресов.