Результаты поиска
C:\DNS_DEBUG.log, извлекает IP-адреса из строк, содержащих «UDP Rcv» (входящие UDP-пакеты), группирует их по частоте появления и выводит топ-10 самых активных отправителей.- 216.239.38.x: Эти адреса часто соответствуют облачным именам серверов Google (например,
ns-cloud-e4.googledomains.com). - 216.239.36.x: Используются для Google Domains (например,
ns-cloud-a3.googledomains.com). - 216.239.32.x: Также относятся к неймсерверам Google (например,
ns-cloud-e1.googledomains.com).
- Нормальная работа: Если ваш сервер является полномочным (authoritative) для каких-то доменов, Google DNS просто присылает запросы для разрешения имен.
- DNS-рекурсия: Если ваш сервер настроен как открытый рекурсор, сторонние системы (через Google DNS) могут использовать его для разрешения имен, что создает лишнюю нагрузку.
# Более быстрый вариант для больших файлов
$logPath = "C:\DNS_DEBUG.log"
if (Test-Path $logPath) {
Select-String -Path $logPath -Pattern "UDP Rcv" | ForEach-Object {
if ($_.Line -match "(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})") {
$Matches[1]
}
} | Group-Object | Sort-Object Count -Descending | Select-Object -First 10
}
$logPath = "C:\DNS_DEBUG.log"
if (Test-Path $logPath) {
# Читаем файл построчно, чтобы не перегружать RAM
Get-Content $logPath -ErrorAction SilentlyContinue | Where-Object { $_ -match "UDP Rcv" } | ForEach-Object {
# Регулярное выражение:
# 1-я группа: IP-адрес
# 2-я группа: Доменное имя (обычно идет после типа запроса, например [0001 A (7)google(3)com(0)])
if ($_ -match "(\d{1,3}(?:\.\d{1,3}){3}).*\]\s+\(?\d+\)?([a-zA-Z0-9\-\.]+)\(") {
$ip = $Matches[1]
$domain = $Matches[2].Trim('.') # Очищаем точки по краям
# Создаем объект для группировки
[PSCustomObject]@{
IP = $ip
Domain = $domain
}
}
} | Group-Object IP, Domain | Sort-Object Count -Descending | Select-Object -First 15 | ForEach-Object {
[PSCustomObject]@{
Count = $_.Count
IP = $_.Values[0]
Domain = $_.Values[1]
}
} | Format-Table -AutoSize
} else {
Write-Host "Файл лога не найден по пути $logPath" -ForegroundColor Red
}
Read-Host "Нажмите Enter для выхода"
- Регулярное выражение: Теперь оно ищет не только IP, но и текст внутри скобок или после идентификаторов запроса (в логах DNS имена часто пишутся как
(6)google(3)com). - Группировка по двум полям: Скрипт теперь считает уникальные пары «кто спросил + что спросил».
- Форматирование: Вывод в виде таблицы
Format-Tableдля удобства чтения.
(7)example(3)com), скажите об этом — я подправлю регулярное выражение именно под ваш формат записи.(12)open-systems(3)com(0).(12)domain(3)com в читаемый domain.com.$logPath = "C:\DNS_DEBUG.log"
if (Test-Path $logPath) {
Get-Content $logPath -ErrorAction SilentlyContinue | ForEach-Object {
# Регулярное выражение ищет:
# 1. Направление (UDP Rcv/Snd)
# 2. IP адрес
# 3. Домен в скобках в конце строки
if ($_ -match "UDP (Rcv|Snd)\s+(\d{1,3}(?:\.\d{1,3}){3}).*\((?:\d+)\)(.*)\(0\)") {
$direction = $Matches[1]
$ip = $Matches[2]
# Убираем цифры в скобках и заменяем их на точки
$rawDomain = $Matches[3]
$cleanDomain = [regex]::Replace($rawDomain, "\(\d+\)", ".")
[PSCustomObject]@{
Direction = $direction
IP = $ip
Domain = $cleanDomain
}
}
} | Group-Object IP, Domain | Sort-Object Count -Descending | Select-Object -First 20 | ForEach-Object {
[PSCustomObject]@{
Count = $_.Count
IP = $_.Group[0].IP
Domain = $_.Group[0].Domain
# Если нужно видеть, были это только входящие или исходящие
Types = ($_.Group.Direction | Select-Object -Unique) -join ", "
}
} | Format-Table -AutoSize
} else {
Write-Host "Файл не найден" -ForegroundColor Red
}
Read-Host "Нажмите Enter для завершения"
- UDP Rcv: Входящие запросы от разных IP (например, из Бразилии
177.75.x.x). - UDP Snd: Ваш сервер пересылает эти запросы дальше на сервера Google (
216.239.x.x), чтобы получить ответ для клиента.
177.75.x.x (Бразилия) и 201.149.x.x (Мексика) вам не знакомы, возможно, ваш DNS-сервер открыт для всего интернета (Open Resolver), и его используют посторонние люди.- DNS Amplification Attack (Усиление): Злоумышленники используют ваш сервер как «усилитель» для DDoS-атак. Они подделывают свой IP-адрес на адрес жертвы и шлют вам короткий запрос (например,
TXTилиANY), а ваш сервер отправляет жертве огромный ответ. В вашем логе как раз видны запросыTXTиALL(эквивалент ANY) — это классика таких атак. - Сканирование ботнетами: Боты постоянно ищут открытые DNS-серверы, чтобы добавить их в свои списки для будущих атак.
- Ограничьте доступ на брандмауэре (Firewall): Разрешите входящий UDP порт 53 только из ваших доверенных подсетей.
- Настройте прослушивание: В свойствах DNS-сервера (вкладка «Интерфейсы») укажите только внутренний IP-адрес, а не «Все IP-адреса».
- Отключите рекурсию для внешних запросов: В свойствах сервера на вкладке «Дополнительно» можно поставить галочку «Отключить рекурсию», но это может сломать интернет вашим пользователям, если не настроены пересыльщики (Forwarders).
TXT или ALL? Это поможет точно вычислить адреса, участвующие в атаке.# Включаем ограничение скорости ответов
Set-DnsServerResponseRateLimiting -Enforce $True -ResponsesPerSecond 5 -ErrorsPerSecond 5
ANY.# Создаем правило: если тип запроса ANY (ALL), то игнорировать его
Add-DnsServerQueryResolutionPolicy -Name "BlockANY" -Action IGNORE -QType "EQ,ANY"
- Создайте список ваших доверенных подсетей (например, 192.168.1.0/24):powershell
Add-DnsServerClientSubnet -Name "InternalSubnet" -IPv4Subnet "192.168.1.0/24"Используйте код с осторожностью. - Разрешите рекурсию только для этой подсети:powershell
# Это требует настройки зон и политик рекурсии, что чуть сложнее, # но полностью закрывает сервер от внешнего мира.Используйте код с осторожностью.
UDP Snd (исходящих), значит, защита работает.BlockANY), используйте команду:Get-DnsServerQueryResolutionPolicy
Enabled), действие (Action) и условия фильтрации.Disable-DnsServerQueryResolutionPolicy -Name "BlockANY"
Enable-DnsServerQueryResolutionPolicy -Name "BlockANY" )ANY), выполните:Remove-DnsServerQueryResolutionPolicy -Name "BlockANY"
-Force, чтобы удалить без вопроса).ANY, но заметите, что она мешает каким-то вашим внутренним сервисам, вы можете сделать правило более точным — например, блокировать ANY только для внешних запросов, разрешив его для своей сети:# Пример: Блокировать ANY для всех, КРОМЕ вашей подсети (если она создана в ClientSubnet)
Add-DnsServerQueryResolutionPolicy -Name "BlockExternalANY" -Action IGNORE -QType "EQ,ANY" -ClientSubnet "NE,InternalSubnet"
NE означает "Not Equal" — не равно вашей подсети).ClientSubnet) для таких точных правил?InternalSubnet). Чтобы это правило заработало, нужно сначала создать объект подсети, а затем применить политику.192.168.1.0/24 на вашу реальную локальную сеть (или несколько сетей через запятую).Add-DnsServerClientSubnet -Name "InternalSubnet" -IPv4Subnet "192.168.1.0/24", "10.0.0.0/8"
-ClientSubnet "NE,InternalSubnet" буквально означает: «Применить правило, если отправитель НЕ (Not Equal) из списка InternalSubnet».Add-DnsServerQueryResolutionPolicy -Name "BlockExternalANY" -Action IGNORE -QType "EQ,ANY" -ClientSubnet "NE,InternalSubnet"
Get-DnsServerClientSubnet
Remove-DnsServerClientSubnet -Name "InternalSubnet"
- Внешние боты при запросе
ANYбудут получать «тишину» (сервер просто сбросит пакет). - Ваши админы и сервисы внутри сети по-прежнему смогут выполнять любые запросы для диагностики.
BlockExternalANY), блокирует только тип запроса ANY (все записи сразу). Обычные запросы, которые чаще всего использует DoT и стандартный DNS (типа A, AAAA, MX, TXT), будут работать как обычно.- Эта политика никак не помешает серверу общаться с ними. Она фильтрует только входящие запросы от клиентов к вам.
- Стандартные политики DNS в Windows Server (Query Resolution Policies) работают на уровне обработки DNS-пакетов.
- Если запрос типа
ANYпридет внутри зашифрованного TLS-туннеля, DNS-сервер сначала расшифрует его, а затем применит те же правила. - Следовательно, если внешний клиент попробует запросить
ANYчерез DoT, политика также его заблокирует (если IP клиента не входит в ваш «белый список»InternalSubnet).
ANY. Сломаются только специфические инструменты диагностики (например, nslookup -type=any) для внешних пользователей.TXT или MX), мы немного модифицируем регулярное выражение в скрипте.$logPath = "C:\DNS_DEBUG.log"
if (Test-Path $logPath) {
Write-Host "Анализирую лог, подождите..." -ForegroundColor Cyan
Get-Content $logPath -ErrorAction SilentlyContinue | Where-Object { $_ -match "UDP Rcv" } | ForEach-Object {
# Ищем IP, Тип запроса (после скобок []) и Домен
if ($_ -match "UDP Rcv\s+(\d{1,3}(?:\.\d{1,3}){3}).*\]\s+([A-Z*]+)\s+\((?:\d+)\)(.*)\(0\)") {
$rawDomain = $Matches[3]
[PSCustomObject]@{
IP = $Matches[1]
Type = $Matches[2]
Domain = [regex]::Replace($rawDomain, "\(\d+\)", ".")
}
}
} | Group-Object Type, Domain | Sort-Object Count -Descending | Select-Object -First 20 | ForEach-Object {
[PSCustomObject]@{
Count = $_.Count
Type = $_.Group[0].Type
Domain = $_.Group[0].Domain
# Пример IP, которые это запрашивают (первые 3 уникальных)
TopClients = ($_.Group.IP | Select-Object -Unique -First 3) -join ", "
}
} | Format-Table -AutoSize
} else {
Write-Host "Файл лога не найден." -ForegroundColor Red
}
Read-Host "Нажмите Enter для выхода"
- Тип ALL (ANY): Если после применения политики
BlockExternalANYв колонкеUDP Snd(если вы ее добавите) они исчезли, а вUDP Rcvостались — значит, политика работает (запросы приходят, но сервер их игнорирует). - Тип TXT: Часто используется в паре с
ANYдля атак усиления, так как ответыTXT(например, записи SPF или DKIM) могут быть очень длинными. Если видите аномально много запросовTXTот внешних IP к одному и тому же домену — это атака. - Тип A / AAAA: Это обычные запросы. Если их тысячи от одного IP к разным доменам — это может быть сканирование или работа ботнета.
TXT от внешних адресов, вы можете расширить политику:# Добавляем TXT в список блокировки для внешних сетей
Set-DnsServerQueryResolutionPolicy -Name "BlockExternalANY" -QType "EQ,ANY,TXT"
ANY).- Разные типы запросов:
- Когда другой почтовый сервер (например, Gmail) хочет проверить ваш SPF, он шлет запрос типа
TXT. - Когда он проверяет DKIM, он тоже шлет запрос типа
TXT. - Когда он хочет узнать, куда доставить письмо, он шлет запрос
MX. - Правило
BlockExternalANYблокирует только запросы, где явно указан типANY(запрос всех записей разом). Запросы типовTXT,MX,Aбудут обрабатываться сервером как обычно.
- Когда другой почтовый сервер (например, Gmail) хочет проверить ваш SPF, он шлет запрос типа
- Запросы ANY в реальной жизни:
Почтовые сервера почти никогда не используютANYдля проверки SPF или MX. Это считается плохим тоном и устаревшей практикой, так как ответ получается слишком тяжелым. Современные системы всегда запрашивают конкретный тип записи. - Важный нюанс (если вы решите блокировать TXT):
Если вы увидите атаку черезTXTи решите добавить этот тип в блокировку (командойSet-DnsServerQueryResolutionPolicy -QType "EQ,ANY,TXT"), вот тогда почта сломается, так как SPF и DKIM перестанут быть видны извне.
- Блокировка
ANY— безопасна для почты. - Блокировка
TXT— опасна (сломает SPF/DKIM). - Блокировка
MX— опасна (почта перестанет приходить).
ujbuda.hu, paloaltonetworks.com). Злоумышленники шлют вам короткие запросы, а ваш сервер вынужден искать тяжелые ответы и отправлять их «жертвам».- Тип ALL (ANY): Составляет 90% подозрительного трафика. Ваша команда
Add-DnsServerQueryResolutionPolicy -Name "BlockANY" -Action IGNORE -QType "EQ,ANY"уже должна была начать их отсекать. - Тип TXT: Запросы к
paloaltonetworks.comиpresidio.com— это тоже попытка вытянуть максимально большой объем данных (SPF/TXT записи этих компаний очень объемные). - География: IP из Бразилии (
177.75.x.x), Венгрии (212.52.x.x) и Мексики (201.149.x.x) явно не являются вашими клиентами.
- Действие IGNORE в политике заставляет сервер молчать в ответ на запрос. В логе
DNS_DEBUG.logвы всё равно будете видеть входящий пакет (UDP Rcv), но вы не должны больше видеть исходящий пакет (UDP Snd) для этих запросов.
TXT (которые нельзя заблокировать полностью из-за почты), лучше всего ограничить рекурсию только для ваших IP.- Проверьте, ушли ли исходящие пакеты:
Запустите скрипт из предыдущего сообщения, но измените в нем фильтр сUDP RcvнаUDP Snd. Если в спискеSnd(отправка) всё еще много ответов типаALL, значит, политика не применилась. - Включите RRL (Response Rate Limiting):
Это «умный» ограничитель. Он позволит вашим почтовым записям (SPF/DKIM) быть доступными, но если кто-то начнет запрашивать их слишком часто (как сейчас в логе), сервер начнет их игнорировать.powershellSet-DnsServerResponseRateLimiting -Enforce $True -ResponsesPerSecond 5 -ErrorsPerSecond 5Используйте код с осторожностью. - Уточните: должен ли ваш сервер вообще отвечать кому-то, кроме ваших сотрудников/офиса?
Если нет, то лучшим решением будет создание «белого списка» подсетей, как мы обсуждали ранее.
BlockANY.BlockANY, ваш сервер перестал отвечать на эти запросы (они есть в Rcv, но их не должно быть в Snd).TXT нельзя (сломается почта), но можно применить умное ограничение скорости (RRL). Это идеальное решение для публичного сервера: он будет отвечать на редкие запросы SPF/DKIM, но начнет игнорировать тех, кто шлет их сотнями (как в вашем логе).Эта команда ограничит количество ответов одному и тому же клиенту до 5 в секунду.
Set-DnsServerResponseRateLimiting -Enforce $True -ResponsesPerSecond 5 -ErrorsPerSecond 5
Давайте убедимся, что политика
BlockANY реально работает и сервер перестал отправлять ответы. Запустите этот скрипт — он сравнит входящие и исходящие пакеты:$logPath = "C:\DNS_DEBUG.log"
$data = Get-Content $logPath -ErrorAction SilentlyContinue | Where-Object { $_ -match "UDP (Rcv|Snd)" } | ForEach-Object {
if ($_ -match "UDP (Rcv|Snd)\s+(?:\d{1,3}(?:\.\d{1,3}){3}).*\]\s+([A-Z*]+)\s+\((?:\d+)\)(.*)\(0\)") {
[PSCustomObject]@{
Direction = $Matches[1]
Type = $Matches[2]
Domain = [regex]::Replace($Matches[3], "\(\d+\)", ".")
}
}
}
$data | Group-Object Type, Domain, Direction | Select-Object Count, @{N='Type';E={$_.Values[0]}}, @{N='Domain';E={$_.Values[1]}}, @{N='Dir';E={$_.Values[2]}} |
Sort-Object Domain, Type | Format-Table -AutoSize
- Если для домена (например,
nexiuslearning.com) есть строкаRcv(300 штук), но нет строкиSnd(или там всего 1-2 штуки) — политика BlockANY работает идеально. - Если в колонке
Snd(отправка) для типаALLвсё еще большие числа — значит, политика по какой-то причине не активна.
Если вы видите, что запросы
TXT к чужим доменам (paloaltonetworks.com) продолжают забивать канал, вы можете создать временную политику блокировки именно для этих доменов, не трогая свой:# Блокировка запросов К КОНКРЕТНОМУ чужому домену, который используют для атаки
Add-DnsServerQueryResolutionPolicy -Name "BlockAttackDomain" -Action IGNORE -FQDN "EQ,*.paloaltonetworks.com"
UDP Rcv) типа ALL (ANY) от подсетей Бразилии (177.75.x.x). Злоумышленники запрашивают через вас данные крупных доменов (bmw.de, suffolk.com, vanabbemuseum.nl), надеясь, что ваш сервер отправит огромный ответ на подделанный IP-адрес жертвы.02:07:33) пришло 9 разных запросов только в этом фрагменте, говорит о том, что реальный поток составляет сотни запросов в секунду.UDP Rcv).- Если в логе отсутствуют соответствующие им пакеты
UDP Snd(отправка) для этих же доменов, значит, ваша политикаBlockANYс действиемIGNOREуспешно работает — сервер «молчит» и не участвует в атаке. - Однако сам факт обработки этих пакетов всё равно нагружает сетевой стек и процессор.
- Проверьте загрузку CPU и канала:
Если из-за обилияUDP Rcvсервер начинает тормозить, блокировка на уровне DNS-приложения может быть недостаточной. В этом случае стоит перенести блокировку на уровень Firewall (брандмауэра). - Блокировка на уровне IP (Firewall):
Поскольку почти все вредоносные запросы идут из диапазона177.75.0.0/16, вы можете временно заблокировать этот диапазон на вход в брандмауэре Windows:powershellNew-NetFirewallRule -DisplayName "Block Brazil DNS Attack" -Direction Inbound -Action Block -RemoteAddress 177.75.0.0/16 -Protocol UDP -LocalPort 53Используйте код с осторожностью. - Обязательно включите RRL (если еще не сделали):
Это защитит вас от атак через типTXT, который вы не блокировали:powershellSet-DnsServerResponseRateLimiting -Enforce $True -ResponsesPerSecond 5 -ErrorsPerSecond 5Используйте код с осторожностью.
paloaltonetworks.com, gm.com, cigna.com). Это логично: так как вы заблокировали ANY, боты переключились на другой «тяжелый» тип записей, чтобы всё равно использовать ваш сервер для усиления.- Эффективность BlockANY: Если эти цифры (например, 42 для
humany.net) относятся к UDP Rcv (входящим), то это просто «шум» от ботов, которые еще не поняли, что вы их игнорируете. - Атака через TXT: Запросы к
paloaltonetworks.comиcigna.comопасны тем, что их ответы могут весить несколько килобайт. 90 запросов за короткий промежуток времени — это попытка забить ваш исходящий канал.
TXT полностью. Нужно использовать Response Rate Limiting (RRL). Это заставит сервер отвечать на 1-2 запроса от этих IP, а остальные отбрасывать.Set-DnsServerResponseRateLimiting -Enforce $True -ResponsesPerSecond 5 -ErrorsPerSecond 5
Если вы не имеете отношения к Palo Alto или GM, можно временно запретить вашему серверу разрешать их имена для внешних клиентов:
Add-DnsServerQueryResolutionPolicy -Name "BlockAttackTXT" -Action IGNORE -FQDN "EQ,*.paloaltonetworks.com,*.cigna.com,*.turing.com"
Mode : Disable). Это значит, что сервер видит лимиты (5 ответов в секунду), но не применяет их, продолжая отвечать на каждый вредоносный запрос TXT.paloaltonetworks.com), переведите его в режим принудительного исполнения (Enforce):Set-DnsServerResponseRateLimiting -Enforce $True
Mode должен измениться на Enforce.BlockANY их не трогает, а RRL как раз создан для таких случаев:- Если один IP (например,
40.132.59.35) пришлет 90 запросов за секунду, сервер ответит только на первые 5, а остальные проигнорирует. - Ваша почта (SPF/DKIM) при этом не пострадает, так как обычные почтовые сервера присылают запросы редко (раз в несколько минут).
- Входящие запросы (
UDP Rcv) в логе всё равно будут видны (боты продолжают стучать). - А вот количество исходящих ответов (
UDP Snd) для этих доменов должно резко упасть.
Add-DnsServerQueryResolutionPolicy -Name "DropAttackDomains" -Action IGNORE -FQDN "EQ,*.paloaltonetworks.com,*.gm.com,*.cigna.com,*.turing.com"
Get-DnsServerResponseRateLimiting — изменился ли Mode на Enforce?Enable.- Защита от TXT-атак: Если IP
40.132.59.35(из вашего топа) пришлет 90 запросов за секунду кpaloaltonetworks.com, ваш сервер ответит только на первые 5 (параметрResponsesPerSec), а остальные проигнорирует. - Экономия канала: Исходящий трафик (самое дорогое в таких атаках) резко упадет.
- Безопасность для почты: Реальные почтовые серверы запрашивают SPF/DKIM один раз при доставке письма, поэтому лимит в 5 запросов в секунду их никак не затронет.
- LeakRate (3): Каждые 3 пропущенных (заблокированных) запроса сервер будет «пропускать» один ответ. Это нужно для легитимных клиентов, которые случайно попали под лимит.
- IPv4PrefixLength (24): Лимиты применяются не к конкретному IP, а к подсети
/24(например, ко всем адресам177.75.234.x). Это очень эффективно против ботнетов, которые меняют последние цифры IP.
UDP Rcv) в логах никуда не денутся — боты будут продолжать стучать.$logPath = "C:\DNS_DEBUG.log"
Get-Content $logPath -Tail 2000 | Where-Object { $_ -match "UDP Snd" } | ForEach-Object {
if ($_ -match "UDP Snd\s+(\d{1,3}(?:\.\d{1,3}){3}).*\]\s+([A-Z*]+)\s+\((?:\d+)\)(.*)\(0\)") {
[PSCustomObject]@{
IP = $Matches[1]
Type = $Matches[2]
Domain = [regex]::Replace($Matches[3], "\(\d+\)", ".")
}
}
} | Group-Object Type, Domain | Sort-Object Count -Descending | Select-Object -First 10
Count стали маленькими (в пределах 5-15), значит, RRL успешно "душит" атаку.paloaltonetworks.com в одном фрагменте лога, а теперь в исходящих (UDP Snd) их всего 4.- RRL работает: Боты по-прежнему присылают сотни запросов (входящий трафик), но ваш сервер теперь игнорирует 95% из них, отвечая лишь единицам.
- Атака подавлена: Вы больше не являетесь эффективным «усилителем» для DDoS-атак. Ваш исходящий канал освободился, а репутация сервера улучшилась.
- ANY заблокирован: В этом топе вообще нет типа
ALL. Значит, политикаBlockANYполностью отсекает эти запросы «на корню».
- Мониторинг: Рекомендую раз в пару дней запускать скрипт для проверки
UDP Snd. Если цифры в колонкеCountснова полезут вверх (например, станут > 20-30), можно будет уменьшить лимитResponsesPerSecс 5 до 3. - Логи: Не забудьте потом выключить DNS Debug Logging, если он вам больше не нужен для тестов. Эти логи очень быстро растут и могут забить место на диске
C:\.
microsoft.com, astrazeneca.com, crowdstrike.com).- UDP Snd всё еще есть: В логе видны пары
UDP Rcv->UDP Sndдля типа TXT. Это значит, что сервер всё еще отвечает на многие запросы. - Тип ALL (ANY): В текстовом дампе (внизу) много
Rcvдля типаALL, но для них нет соответствующихSnd. Это отлично — ваша политикаBlockANYработает и отсекает их полностью. - Тип TXT: Сейчас это основная проблема. Боты запрашивают TXT записи известных компаний, которые весят очень много.
Лимит 5 запросов в секунду для публичного сервера — это стандарт, но в условиях активной атаки его можно временно снизить до 2-3.
Set-DnsServerResponseRateLimiting -ResponsesPerSec 2 -ErrorsPerSec 2
Это заставит сервер отвечать на подозрительные запросы не полным списком данных, а коротким пакетом с флагом
TC (Truncated). Легитимный клиент (браузер или почтовик) поймет это и переключится на TCP, а боты-усилители просто отвалятся, так как им нужны именно большие UDP ответы.Set-DnsServerResponseRateLimiting -TruncateRate 1
Убедитесь, что она стоит на первом месте в списке и активна:
Get-DnsServerQueryResolutionPolicy | Select-Object Name, Action, Priority
UDP Rcv. Если вы уже поняли природу атаки, выключите Debug Log, иначе он создаст огромную нагрузку на диск (I/O) и может привести к зависанию службы DNS.# Выключить детальное логирование (когда закончите анализ)
Set-DnsServerDiagnostics -EnableLogging $false
BlockANY (с действием IGNORE), то ответ на вопрос: нет, они ничего не получат.ANY на ваш сервер:- Сервер сверяет запрос с вашей политикой
BlockANY. - Поскольку действие установлено в
IGNORE, сервер просто выбрасывает пакет. - Запрашивающий не получит даже ошибки (вроде «Refused»), он получит тайм-аут (пустоту). Ваш сервер для него будет выглядеть как «черная дыра».
TXT в список блокировки (например, Set-DnsServerQueryResolutionPolicy -Name "BlockANY" -QType "EQ,ANY,TXT"):- Снаружи: Никто не сможет узнать ваши SPF-записи и ключи DKIM.
- Последствия для почты: Почтовые сервера (Gmail, Mail.ru и др.) при попытке отправить вам письмо не смогут проверить подлинность вашего домена. Ваша почта с огромной вероятностью начнет попадать в спам или вообще отклоняться другими серверами.
- Рекомендация:
TXTлучше не блокировать полностью, а ограничивать через RRL (что мы уже сделали командами выше). Это позволит реальным почтовикам получать одну запись раз в минуту, но не даст ботам качать их сотнями.
- Проверка ANY (должен быть тайм-аут):Результат должен быть: "Request timed out".bash
nslookup -type=any ваш_домен_или_IPИспользуйте код с осторожностью. - Проверка TXT (должен быть ответ):Результат должен показать вашу SPF-запись.bash
nslookup -type=txt ваш_домен_или_IPИспользуйте код с осторожностью.
BlockANY + RRL) — это золотая середина. Вы:- Полностью отсекли самый опасный тип атак (
ANY). - «Задушили» атаки через
TXT, сохранив при этом работоспособность своей почты.
ANY только для вашего внутреннего IP, чтобы вы могли проводить диагностику, а все остальные получали блок?nslookup может сбить с толку, но на самом деле он подтверждает, что ваша блокировка работает.- Кто ответил? В строке
Address: 192.168.0.1видно, что запрос обработал ваш домашний роутер, а не ваш DNS-сервер напрямую. - Что он нашел? Поскольку вы ввели IP-адрес (
89.179.240.91),nslookupавтоматически выполнил обратный запрос (PTR-запись), чтобы узнать имя хоста. - Результат: Он нашел имя
89-179-240-91.static.corbina.ru. Эту информацию он взял из кэша или у провайдера (Corbina/Beeline), а не с вашего сервера.
BlockANY, нужно явно указать nslookup обращаться к вашему IP:# Замените 89.179.240.91 на ваш публичный IP, если он другой
nslookup -type=any google.com 89.179.240.91
- Если политика
BlockANYактивна (действиеIGNORE): вы получите сообщение «DNS request timed out» (запрос истек по тайм-ауту). Это значит, сервер «промолчал», как мы и настраивали. - Если бы сервер ответил: вы бы увидели длинный список записей (A, MX, TXT и т.д.).
google.com, microsoft.com и другие тяжелые домены. Ваша политика BlockANY теперь запрещает серверу отвечать на такие запросы всем «чужим» IP.-Action может принимать три основных значения. Каждое из них по-разному влияет на то, что увидит атакующий и как нагрузится ваш сервер.- Что происходит: Сервер получает пакет, понимает, что это запрещенный тип (например,
ANY), и просто выбрасывает его в корзину, не отправляя ничего в ответ. - Результат для клиента: Тайм-аут (
Request timed out). - Плюсы: Самый экономный режим для вашего канала. Вы не тратите ни одного байта на ответ взломщику.
- Минусы: Клиент (или бот) может подумать, что пакет просто потерялся, и отправить его еще несколько раз.
- Что происходит: Сервер получает запрос и вежливо (но твердо) отправляет в ответ короткий пакет с кодом ошибки REFUSED.
- Результат для клиента: Сообщение
Query refusedилиОтказано в доступе. - Плюсы: Клиент сразу понимает, что обращаться сюда бесполезно, и может перестать слать повторные запросы.
- Минусы: Вы всё равно тратите исходящий трафик на отправку ответа «Нет». В случае мощной DDoS-атаки это всё равно может забить ваш канал.
- Что происходит: Сервер обрабатывает запрос в обычном режиме и возвращает все найденные записи.
- Результат для клиента: Получение данных.
- Применение: Используется, когда вам нужно создать исключение. Например: «Блокировать ANY для всех (IGNORE), но для моего домашнего IP — ALLOW».
При атаке типа "усиление" (Amplification) задача злоумышленника — заставить ваш сервер отправить любой ответ на адрес жертвы. Если вы поставите
DENY, ваш сервер всё равно отправит пакет REFUSED жертве. Да, он будет маленьким, но при миллионах запросов это всё равно превращается в атаку.Set-DnsServerQueryResolutionPolicy -Name "BlockANY" -Action DENY
Turn on your Visual Search History?
Google uses its visual recognition technologies to process the images you use to search, like when you search with Google Lens. If you turn on your Visual Search History, Google will save these images from eligible Google services to your Web & App Activity when you’re signed in to your Google Account. You can learn more about this setting and which Google services save images to it at g.co/Search/VisualSearchHistory.
How visual search history is used
Your Visual Search History may be used to improve your experience on Google services, like letting you revisit your past visual searches. It may be used to develop and improve Google’s visual recognition and search technologies, as well as the Google services that use them.
When visual search history is off
If you turn this setting off, any previous Visual Search History may still be kept and used to improve Google’s visual recognition and search technologies, unless you delete it from your Web & App Activity.
Visual Search History doesn’t affect images saved by other settings, like Gemini Apps Activity.
How to manage your Visual Search History
You can view, delete, or manage your Visual Search History at activity.google.com. To download your Visual Search History, visit takeout.google.com. Images will be deleted in accordance with your Web & App Activity auto-delete settings, although some types of images may be deleted sooner.
Google uses and saves data in accordance with Google Privacy Policy.
