Admin Future
241 subscribers
51 photos
1 video
4 files
120 links
Превращаем эникейщиков в System Architects.
🚀 Твой навигатор в мире IT-инфраструктуры:

▪️ Hard Skills: Linux, Windows, Network, Security
▪️ Tools: Лучший софт и скрытые фишки
▪️ Mindset: Как думать, чтобы платили много


Админ - @maksimshap
Download Telegram
🛡️ Защита RDP: Как не дать подобрать ключи от сервера

Привет, коллеги! Оставлять 3389 порт открытым в дикий интернет — это как оставить ключи от квартиры под ковриком, на котором написано здесь лежат деньги. Ботнеты найдут вас через 30 секунд после поднятия интерфейса. Разберем, как превратить обычный RDP в неприступный шлюз, используя блокировки и GeoIP.

Уровень 1: Политика блокировки учетных записей

Если у вас нет блокировки после N неудачных попыток, хакер может брутфорсить ваш пароль годами. Нам нужно, чтобы после 5 попыток дверь закрывалась перед носом атакующего. В Windows это настраивается через групповые политики, но мы сделаем это быстрее через командную строку.


Команда для настройки:


# Устанавливаем порог блокировки в 5 попыток
net accounts /lockoutthreshold:5

# Время блокировки (в минутах)
net accounts /lockoutduration:30

# Окно сброса счетчика попыток
net accounts /lockoutwindow:30


Теперь, если бот попробует подобрать пароль, учетка заблокируется на полчаса. Это резко снижает эффективность любого перебора.

Уровень 2: GeoIP — Фильтруем по прописке

Зачем вашему серверу принимать подключения из других стран, если ваши сотрудники сидят в одном регионе? Использование GeoIP списков для фаервола — это база. Мы можем использовать PowerShell, чтобы разрешить доступ только для определенных диапазонов адресов.


Скрипт для блокировки чужих подсетей (пример логики):


# Импортируем список разрешенных IP-адресов
$AllowedIPs = Get-Content C:\Scripts\allowed_ips.txt

# Создаем правило фаервола, которое разрешает RDP только для этих IP
New-NetFirewallRule -DisplayName Allow RDP Region Only -Direction Inbound -Action Allow -Protocol TCP -LocalPort 3389 -RemoteAddress $AllowedIPs

# Отключаем дефолтное правило, которое разрешает RDP всем
Disable-NetFirewallRule -DisplayName Remote Desktop - User Mode (TCP-In)


Уровень 3: Автоматический бан через Event Log

Самый эффективный способ — динамический бан. Если кто-то стучится и ошибается, его IP должен лететь в черный список фаервола немедленно.



# Порог попыток перед баном
$Threshold = 3
# За какой период смотреть логи (в минутах)
$TimeRange = 10
$StartTime = (Get-Date).AddMinutes(-$TimeRange)

# Собираем события неудачного входа (ID 4625)
$Events = Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625; StartTime=$StartTime} -ErrorAction SilentlyContinue

if ($Events) {
# Группируем по IP-адресу (свойство 19 обычно содержит IP)
$FailedIPs = $Events | ForEach-Object {
[PSCustomObject]@{
IP = $_.Properties[19].Value
}
} | Group-Object IP | Where-Object { $_.Count -ge $Threshold -and $_.Name -ne "-" -and $_.Name -ne "127.0.0.1" }

foreach ($Item in $FailedIPs) {
$IP = $Item.Name
$RuleName = "AutoBan_$IP"

# Проверяем, нет ли уже такого правила
if (-not (Get-NetFirewallRule -Name $RuleName -ErrorAction SilentlyContinue)) {
Write-Host "Блокируем IP: $IP (Попыток: $($Item.Count))" -ForegroundColor Red
New-NetFirewallRule -DisplayName $RuleName -Name $RuleName -Direction Inbound -Action Block -RemoteAddress $IP
}
}
}


Логика проста:
1. Скрипт мониторит журнал событий на наличие Event ID 4625 (ошибка входа).
2. Если с одного IP пришло несколько ошибок за минуту — этот IP улетает в блок в фаерволе.

Зачем это нужно:
Защита RDP — это многослойный пирог. Одного сложного пароля мало. Блокировка учеток спасает от медленного перебора, GeoIP отсекает лишний мировой шум, а динамический бан добивает самых настырных.


Золотое правило: Лучший RDP — это тот, который доступен только через VPN. Если всё же нужен прямой доступ — используй все три уровня защиты.

#security #rdp #powershell #geoip #bruteforce #admin_future
✍2👍2