Защита Windows server с помощью Mikrotik - нужен powershell

Раздел для тех, кто начинает знакомиться с MikroTik
Правила форума
Как правильно оформить вопрос.
Прежде чем начать настройку роутера, представьте, как это работает. Попробуйте почитать статьи об устройстве интернет-сетей. Убедитесь, что всё, что Вы задумали выполнимо вообще и на данном оборудовании в частности.
Не нужно изначально строить Наполеоновских планов. Попробуйте настроить простейшую конфигурацию, а усложнения добавлять в случае успеха постепенно.
Пожалуйста, не игнорируйте правила русского языка. Отсутствие знаков препинания и неграмотность автора топика для многих гуру достаточный повод проигнорировать топик вообще.

1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку "Действия до настройки роутера".
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
Ответить
pavel.skiba
Сообщения: 1
Зарегистрирован: 02 мар 2021, 17:16

Добрый день уважаемое сообщество!
Обращаюсь к «всемирному разуму» для решения одной и может интересной именно для Вас задачей.
Задача: защита windows server с опубликованным доступам наружу.
У всех есть сервера, у большинства они имеют доступ из сети интернет. Мы будем рассматривать доступ к RDP по порту 3389, но данный проект, не ограничивается именно этим приложением и этим портом, его можно будет применять и на другие порты. Не будем тут обсуждать именно номер порта и так понятно, что он меняется. Но рано или поздно, хакеры его вычислять и начнут «долбать» сервер.
Конечно, многие мне тут скажут, что есть защита от Брутфорса правилами Mikrotika, ограничивать количество соединений от одного IP адреса по времени и так далее… Со всеми согласен и применяю такие решения на практике, они решают свои задачи но опять же не в полной мере, все равно, прилетают запросы на сервер.
Я буду рассматривать другую задача: мгновенная блокировка IP адреса на Mikrotik считывая журнал безопасности в Windows server (2012r2 – 2019).
Схема такова:
Хакер, подключается к серверу с фейковым логин и паролем, Windows server регистрирует данное событий и заносит в «журнал событий -> журнал windows -> безопасность» с кодом 4625.
 
Изображение
Привяываем к данному событию задачу которая выдаст нам IP адрес атакующего.
Отступление :
1. У многих не высвечивается ip адрес в журнале событий. Да, есть такое в windows server начиная с 2012 и по сей день, но это, если вы выставили его на прозрачном сервере. Если вы, поместите Mikrotik между интернетом и windows server, то чудесным образом, получаете IP адрес атакующего.
2. Бывает случайно сотрудник ввел не правильно пароль, это можно проигнорировать и установив количество неудачных попыток в течении ХХ минут.
Получаем список IP адресов в разных форматах в текстовом файле:
 
Изображение
или
 
Изображение
или же оставляем в скрипте для дальнейшей обработки.
Далее:
Из самой Винды, посредствам PowerShell скрипта, подключаемся к Mikrotik и заносим эти IP адреса в «/ip/firewall/address-list/» в группу которую ДРОПаем на уровне Firewall в самом Mikrotik.
Отступление :
1. Да, есть возможность на уровне Windows Firewall блокировать доступ к серверу из этих ip адресов. Но, мне как-то не очень хочется, чтобы хакеры вообще попадали за приделы Mikrotik. Тем более, что у некоторых есть и другие сервера.
Вот такая задача.
Выкладываю скрипт для windows server, который отлавливает делает выборку IP адресов из журнала.
 
$Last_n_Hours = [DateTime]::Now.AddHours(-2)
$log = "E:\blocked_ip_rdp.txt"
$badRDPlogons = Get-EventLog -LogName 'Security' -after $Last_n_Hours -InstanceId 4625 | ?{$_.Message -match 'Тип входа:\s+(3)\s'} | Select-Object @{n='IpAddress';e={$_.ReplacementStrings[-2]} }
$getip = $badRDPlogons | group-object -property IpAddress | where {$_.Count -gt 5} | Select -property Name
#$getip>$log
$current_ips = (Get-NetFirewallRule -DisplayName "BlockRDPBruteForce" | Get-NetFirewallAddressFilter ).RemoteAddress -split(",")
foreach ($ip in $getip)
{
if ($ip.name -and $ip.name -ne "-" -and !($current_ips -contains $ip.Name)) {
$current_ips += $ip.name
# Write-Output $ip.name
(Get-Date).ToString() + ' ' + $ip.name + ' IP заблокирован за ' + ($badRDPlogons | where {$_.IpAddress -eq $ip.name}).count + ' попыток за 2 часа'>> $log # запись события блокировки IP адреса в лог файл
}
}
#Write-Output "---------------------------------"
#Write-Output $current_ips
Set-NetFirewallRule -DisplayName "BlockRDPBruteForce" -RemoteAddress $current_ips
Что нужно ?
А нужно:
Скрипт powershell, который будет эту выборку брать, соединяться с Mikrotik ( можно по SSH или Telnet), и автоматически добавлять в Mikrotik «ip/firewall/address-list/» эти IP адреса для блокировки.
IP адреса можно брать как с файла TXT который находится на диске сервера или продолжать работать в самом скрипте (что было бы лучшем решением).


bst-botsman
Сообщения: 188
Зарегистрирован: 13 окт 2018, 20:53
Откуда: Беларусь

pavel.skiba писал(а): 02 мар 2021, 18:03 1. Да, есть возможность на уровне Windows Firewall блокировать доступ к серверу из этих ip адресов. Но, мне как-то не очень хочется, чтобы хакеры вообще попадали за приделы Mikrotik.
Исходя из вашего описания задачи - они уже у вас в сети...
:-(


RB3011UiAS x 1
RB4011iGS+5HacQ2HnD x 3
951Ui-2nD x 2
hAP ac^2 x 24
CheckPoint 1590 x 1
Ответить