Защищаем домашний сервер на Windows от DDoS
Поднять на домашнем компьютере сервер любимой игрушки или веб-сайта — это лишь полдела. Настоящее искусство — уметь грамотно его защитить. В этом небольшом материале мы рассмотрим методы защиты домашнего сервера на базе Windows от DDoS-атак.

Пояснение
реклама
DDoS — это вид удалённых атак, использующих недостатки протокола TCP/IP для перегрузки интернет-канала или мощностей атакуемого сервера. Злоумышленнику нет нужды задействовать сетевые сканеры безопасности, ища бреши в системе: он эксплуатирует сам принцип передачи данных и готовность сервера отвечать на поступающий запрос.
Скрываем IP
Любая защита начинается с сокрытия IP-адреса. Ведь как злоумышленнику атаковать сервер, если его адрес не известен? Для этого специалистами по сетевой безопасности применяются так называемые зеркала (ретрансляторы), выступающие прокладкой между пользователем и конечным сервером.
Реализация скрытия IP сервера:
реклама

В итоге, DDoS-атаки поглощаются VPS, а IP вашего домашнего сервера остаётся скрытым. К огромному сожалению, я не могу подробно описать публично реализацию такого метода защиты из-за недавнего закона о средствах обхода блокировок, тем не менее имейте в виду, что это фундамент без которого не имеет никакого смысла поднимать что-то серьёзное на домашнем ПК.
Запрещаем ответы
По умолчанию практически все редакции Windows настроены таким образом, чтобы отвечать на любые запросы из вне. Затрудним жизнь хакеров запретив Windows отвечать на внешние команды.
P.S. Все последующие действия совершаются вами на свой страх и риск. Администрация overclockers.ru и автор материала не несут ответственности за любые возможные последствия.
реклама
1. Запрещаем через политики брандмауэра пропинговку нашего сервера.

2. Блокируем любой входящий трафик через брандмауэр для всех профилей (Domain, Public, Private), кроме того, что был нами разрешён на рабочие порты.

реклама
3. Запрещаем Windows оповещать злоумышленника, какие порты открыты/закрыты на сервере.
«PublicProfile»,"StandardProfile" | % { Set-ItemProperty «HKLM:\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\$_» «DisableStealthMode» 0 }
4. Отключаем так любимый хакерами протокол NetBIOS и службу SSDP.

5. Перезагружаем ПК и пробуем пропинговать сервер. Сервер молчит, как партизан на допросе!

Ограничиваем соединения
Если хакер всё же узнал настоящий IP-адрес сервера и бьёт напрямую, то необходимо всеми силами ограничить количество обрабатываемых соединений.
1. Ограничиваем число полуоткрытых TCP-соединений и уменьшаем время ожидания их подтверждения.

Оптимизирует TCP-параметры: минимальный RTO = 300 мс, максимум SYN-ретрансмиссий = 2, начальный RTO = 1000 мс. Ускоряет переподключение при потерях пакетов.
2. Уменьшаем время ожидания сброса неактивных соединений до 1 минуты, вместо стандартных 2 часов.

3. Запускаем скрипт, который автоматически будет сканировать порты сервера и банить злоумышленника, если с одного IP более 30 постоянных соединений.
$Limit = 30
$Ports = 3724, 8085, 7878
$Name = "ANTIDDOS_TCP_BLOCK"
$Log = "C:\tcp_bans.log"
$LastReset = Get-Date
if (-not (Get-NetFirewallRule -DisplayName $Name -EA 0)) {
New-NetFirewallRule -DisplayName $Name -Direction Inbound -Action Block -RemoteAddress 255.255.255.255
}
Write-Host "[START] Active. Limit: $Limit" -FG Green
while($true) {
# Очистка раз в 3 дня
if ((Get-Date) -gt $LastReset.AddDays(3)) {
Set-NetFirewallRule -DisplayName $Name -RemoteAddress 255.255.255.255
$LastReset = Get-Date
Write-Host "[RESET] Ban list cleared" -FG Cyan
}
$Conns = Get-NetTCPConnection -LocalPort $Ports -State Established -EA 0 |
Group RemoteAddress | Where {$_.Count -gt $Limit -and $_.Name -notmatch "127.0.0.1|::1|0.0.0.0"}
if ($Conns) {
$Current = (Get-NetFirewallRule -DisplayName $Name | Get-NetFirewallAddressFilter).RemoteAddress
$NewBans = $Conns.Name | Where {$Current -notcontains $_}
if ($NewBans) {
$Current += $NewBans
Set-NetFirewallRule -DisplayName $Name -RemoteAddress $Current
$Msg = "$(Get-Date -f 'HH:mm:ss') BAN: $($NewBans -join ', ')"
Write-Host $Msg -FG Red
$Msg | Out-File $Log -Append
}
}
Start-Sleep 5
}
Лучше было бы воспользоваться программой BeeThink IP Blocker для минимизации ущерба, но она платная, поэтому имеем то, что имеем. Требует прав администратора.
Тестирование
Протестируем защиту, используя популярный сетевой сканер безопасности XSpider с профилем на проникновение для не отвечающих на запросы хостов.

Заключение
Конечно, описанные в материале методы не спасут ваш сервер от многотысячного ботнета, но от злостных школьников, возомнивших себя настоящими хакерами, — ещё как. Удачи на просторах сетевых морей.
Лента материалов
Соблюдение Правил конференции строго обязательно!
Флуд, флейм и оффтоп преследуются по всей строгости закона!
Комментарии, содержащие оскорбления, нецензурные выражения (в т.ч. замаскированный мат), экстремистские высказывания, рекламу и спам, удаляются независимо от содержимого, а к их авторам могут применяться меры вплоть до запрета написания комментариев и, в случае написания комментария через социальные сети, жалобы в администрацию данной сети.


Комментарии Правила