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

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


Админ - @maksimshap
Download Telegram
👻 Windows: Режим «Призрака» в RDP (Shadow Mode)

Ситуация: Звонит бухгалтер. "У меня 1С не открывается, ошибка какая-то". Вы подключаетесь по RDP — и выкидываете пользователя из сессии (экран блокируется). Приходится кричать в трубку: "Ну что там написано?", а в ответ: "Ой, всё пропало, черный экран!".

В Windows встроен штатный способ подключиться к сессии пользователя, не выкидывая его (он видит, что вы делаете).

Как это сделать:

Узнаем ID сессии пользователя:

qwinsta /server:BUH-PC-01
# Видим: buhgalter ID: 1 Active

Подключаемся в режиме Shadow:

mstsc /shadow:1 /v:BUH-PC-01 /control

Что значат ключи:
/shadow:1 — подключиться к сессии с ID 1.

/control — разрешить управление мышкой/клавиатурой (без этого будет только просмотр).

/noConsentPrompt — подключиться без спроса (нужна настройка GPO, иначе у пользователя вылезет окошко "Разрешить админу просмотр?").

Идеально для техподдержки. Вы видите проблему глазами пользователя.

#windows #rdp #helpdesk #tips #shadowmode #cmd
👍4
🪟 CMD: Охота на зависшие RDP-сессии

Перед праздниками полезно проверить терминальные серверы. Часто бывает, что пользователи нажали "крестик", но сессия осталась висеть, поедая оперативную память и блокируя файлы. Диспетчер задач открывать долго.

1. Смотрим, кто в системе:


quser

Вывод покажет: USERNAME, ID, STATE (Active/Disc). Ищите тех, у кого статус Disc (Disconnected) висит уже несколько дней.

2. Сбрасываем зависшую сессию: Запоминаем ID из прошлой команды (например, 7).


logoff 7

3. Удаленно (если лень заходить):


quser /server:SRV-TERM-01
logoff 7 /server:SRV-TERM-01

Пять минут на чистку — и серверу станет легче дышать на каникулах.

#windows #rdp #cmd #maintenance #adminlife #cleanup
🪟 Windows Server: Почему тормозит RDP? Отключаем UDP.

Замечали, что иногда курсор в RDP-сессии двигается рывками, а текст печатается с задержкой? По умолчанию современный RDP (начиная с версии 8.0) пытается использовать протокол UDP для ускорения графики. Но на нестабильных каналах или при наличии определенных файерволов это дает обратный эффект.

Как «вылечить» и сделать сессию плавной: Нужно принудительно заставить RDP работать только через TCP.

1. Нажмите Win + R, введите gpedit.msc.

2. Путь: Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Удаленная сессия.

3. Найдите: «Выбор протоколов передачи данных удаленного рабочего стола».

4. Установите: «Включено» и выберите «Только TCP».

После этого задержки (input lag) обычно пропадают.

#windows #server #rdp #sysadmin #troubleshooting #it
👍2
🪟 Windows Server: Гроза «зависших» сессий — PowerShell-скрипт для очистки RDP 🧹

Знакомая ситуация: ты пытаешься зайти на сервер по RDP, а он тебе: «Превышено максимальное число подключений». Кто-то из коллег просто закрыл крестиком окно вместо Log off, и сессия висит «призраком», занимая слот.

Не нужно гадать, кто это. Выбиваем бездельников одной командой.

Сниппет для поиска и завершения зависших сессий:


# Показать все сессии, которые висят в статусе "Disconnected" более 2 часов
$sessions = qwinsta /server:localhost | Append-Output | Select-String "Disc"
foreach ($sess in $sessions) {
$sessId = ($sess -split '\s+')[2]
rwinsta $sessId /server:localhost
Write-Host "Сессия $sessId принудительно завершена." -ForegroundColor Yellow
}



Админский совет: Настрой этот скрипт в планировщике задач на контроллерах домена и терминальных серверах. Пусть система сама чистит за теми, кто забывает разлогиниться.

#windows #powershell #rdp #sysadmin #automation #server #admin_future
🛡️ Защита 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