Сообщество / Настройка

3389 в wan — даже не холивар

n1kita
Junior
Сообщения: 40
Репутация: 14
Дата регистрации:
19.08.2026
АВТОР ТЕМЫ31 авг. 2026 г., 20:17 (GMT+3)
Держу свои серверы и присматриваю за винсервером у знакомых, там 1С. Порт 3389 наружу не торчит ни на одном, и я объясню на цифрах, а не на страшилках.

Один раз открыл. «На вечер, файлы перекинуть». Через двадцать минут в журнале безопасности пошёл брут: Administrator, admin, user, 1c, адреса из трёх стран. К утру несколько тысяч событий 4625. Пароль выдержал, но выдерживать его никто не просил. Сканеры приходят раньше, чем ты допьёшь чай.

Дальше схема одна. 3389 слушает только 127.0.0.1, наружу не отдаётся вообще, вход через туннель. Не «длинный пароль», не «нестандартный порт»: диапазон обходят целиком, ваш 33890 найдут за час.

fail2ban и лимиты на rdp — это отсрочка, а не защита. Порт всё равно открыт, просто стучат медленнее.

У кого 3389 сейчас в wan — откройте журнал безопасности и посмотрите 4625 за последние сутки. Сколько там попыток? Интересно, у всех ли цифры такие же, или мне тогда особенно повезло.
1
tema_py
Junior
Сообщения: 25
Репутация: 11
Дата регистрации:
18.08.2026
31 авг. 2026 г., 20:28 (GMT+3)
n1kita ну да, даже не холивар. 3389 в мир это я уже проходил — как токен бота в git, только стучат ещё злее))

я rdp почти не трогаю. питон, вебхуки, ssh, иногда compose который я считаю нормальным пока кто-то не ткнёт пальцем. один раз на старом хосте открыл 3389 "на час, с винды удобнее файлы кидать". через минут пятнадцать в логах уже брут из трёх стран. чай не допил, как ты и сказал.

ща если прям стол нужен — только туннель, иначе даже не включаю.


ssh -N -L 13389:127.0.0.1:3389 user@vps


дальше rdp на 127.0.0.1:13389 и наружу тишина. на timeweb я ещё и fail2ban ставил криво, там неделю разбирался со своим же юнитом. тут диск не тупит, не отвлекает от ботов.

для телеграм-бота мне 3389 как пятое колесо. вебхук и всё. а у кого ещё rdp "временно" наружу висит — сколько минут до первого скана было? мне вот 15 хватило, чтобы больше так не делать 🤦
0
n1kita
Junior
Сообщения: 40
Репутация: 14
Дата регистрации:
19.08.2026
31 авг. 2026 г., 21:13 (GMT+3)
tema_py туннель не закрывает 3389. если rdp слушает 0.0.0.0 — сканеры идут мимо ssh. bind на 127.0.0.1, потом -L.
1
lexa92
Junior
Сообщения: 59
Репутация: 20
Дата регистрации:
09.08.2026
31 авг. 2026 г., 22:23 (GMT+3)
n1kita bind на 127.0.0.1 — не лозунг, а проверка.

n1kita писал:
если rdp слушает 0.0.0.0 — сканеры идут мимо ssh



на винде сразу:


netstat -an | findstr :3389


нужно 127.0.0.1:3389 LISTENING. если 0.0.0.0:3389 — сканер идёт мимо любого -L. туннель стоит рядом, порт в wan открыт. шторы на окне без стекла.

LanAdapter в реестре на Win Server часто крутят вхолостую, слушает всё равно всё. проще резать wan:


netsh advfirewall firewall add rule name=rdp-wan-drop dir=in action=block protocol=tcp localport=3389


loopback не трогает, в мир 3389 молчит. потом уже -L.

ssh на час хватает. если ходишь каждый день — wg и AllowedIPs только до этой машины, не 0.0.0.0/0.

журнал 4625 смотреть можно. но сначала netstat. если там 0.0.0.0, цифры в логе уже не важны.
0
tema_py
Junior
Сообщения: 25
Репутация: 11
Дата регистрации:
18.08.2026
31 авг. 2026 г., 23:01 (GMT+3)
lexa92 это я в прошлом посте как раз шторы без стекла повесил)) -L кинул, bind не смотрел.

lexa92 писал:
если 0.0.0.0:3389 — сканер идёт мимо любого -L



на старом хосте так и ловил брут, чай не допил. netstat теперь первым делом. firewall понял, в реестр не полезу. rdp мне редко, ssh на час хватит.
0
n1kita
Junior
Сообщения: 40
Репутация: 14
Дата регистрации:
19.08.2026
01 сент. 2026 г., 00:01 (GMT+3)
tema_py netstat первым — нормально. 4625 после этого должен быть пустой. если нет — bind всё ещё 0.0.0.0.
0
tema_py
Junior
Сообщения: 25
Репутация: 11
Дата регистрации:
18.08.2026
01 сент. 2026 г., 20:12 (GMT+3)
n1kita понял, 4625 после netstat. если не пустой — bind ещё 0.0.0.0, ssh тут ни при чём.

rdp у меня почти не крутится, питон и вебхуки. но если стол понадобится — сначала 127.0.0.1, потом уже -L. в прошлый раз наоборот сделал и чай так и остыл))
0
n1kita
Junior
Сообщения: 40
Репутация: 14
Дата регистрации:
19.08.2026
01 сент. 2026 г., 20:37 (GMT+3)
lexa92 wan-drop после bind, не вместо.

tema_py писал:
rdp у меня почти не крутится


тогда службу сними. «почти» в netstat не ищут.
0
lexa92
Junior
Сообщения: 59
Репутация: 20
Дата регистрации:
09.08.2026
01 сент. 2026 г., 20:41 (GMT+3)
tema_py если бокс под питон и вебхуки — 3389 там не слушает. «почти не крутится» в netstat не ищут: либо LISTENING, либо пусто.

n1kita wan-drop после bind — да. правило в фаерволе это второй слой, не замена. drop снимают «на час» так же охотно, как открывают порт. bind на 127.0.0.1 остаётся, даже когда правило снесут.

тебе служба не нужна. на линуксе:

ss -lntp | grep 3389

если винда ещё где-то жива:

Stop-Service TermService -Force
Set-Service TermService -StartupType Disabled
netstat -an | findstr :3389

пусто — -L не нужен, в wan нечего сканить. если снова 0.0.0.0:3389 — службу не снял.

когда стол понадобится: bind, wan-drop, потом -L. в том порядке, пока чай горячий.

скинь ss или netstat. без вывода дальше не гадаю.
0
lexa92
Junior
Сообщения: 59
Репутация: 20
Дата регистрации:
09.08.2026
01 сент. 2026 г., 21:27 (GMT+3)
tema_py порядок на словах ты уже назвал. bind, потом -L. на боксе вывода всё ещё нет. «почти не крутится» — это не статус службы, это самоуспокоение.

tema_py писал:
rdp у меня почти не крутится, питон и вебхуки



тогда 3389 сейчас либо не слушает, либо слушает зря. netstat не понимает «почти»: либо LISTENING, либо пусто. раз бокс под питон, вебхуки и compose — сначала снять что открыто, а не обсуждать стол, которого нет.

1. что слушает.

linux:

ss -lntp
ss -lntp | grep -E ':3389|:5900|:22'

22 — да. 3389 и 5900 — пусто. если xrdp или vnc всплыли из гайда «удалённый стол» — пакет снимать. systemctl stop «на потом» через ребут возвращается.

если винда на этом боксе ещё жива:

netstat -an | findstr :3389
Get-Service TermService | Format-List Name,Status,StartType

нужно пусто или 127.0.0.1:3389 LISTENING. 0.0.0.0:3389 — сканер идёт мимо любого -L. это ты на старом хосте уже ловил за пятнадцать минут.

2. compose. ты его сам упомянул, вот оттуда 3389 чаще всего и вылезает, хотя «rdp не крутится».

grep -nE '3389|5900' docker-compose.yml docker-compose.yaml compose.yml 2>/dev/null
docker ps --format '{{.Names}} {{.Ports}}'

ports: "3389:3389" публикует в wan независимо от bind внутри контейнера и независимо от ssh -L. фаервол на хосте тогда уже опоздал: докер прокинул через свои цепочки. если стол в контейнере когда-нибудь нужен — 127.0.0.1:3389:3389, не голый 3389:3389.

3. bind, не галка в гуи.

на Win Server fDenyTSConnections службу не биндит. LanAdapter в реестре крутят вхолостую, слушает 0.0.0.0. единственная проверка — netstat, не «я же ограничил».

xrdp по умолчанию тоже 0.0.0.0. если стол реально понадобится:

# /etc/xrdp/xrdp.ini
port=127.0.0.1:3389

потом снова ss -lntp | grep 3389. пока там не 127.0.0.1 — дальше не ходи.

4. wan-drop — второй слой, не замена bind.

windows:

netsh advfirewall firewall add rule name=rdp-wan-drop dir=in action=block protocol=tcp localport=3389

linux:

iptables -C INPUT -p tcp --dport 3389 -j DROP 2>/dev/null || iptables -I INPUT -p tcp --dport 3389 -j DROP

правило снимают «на час, файлы скинуть» так же охотно, как открывают порт. bind на 127.0.0.1 остаётся, даже когда правило снесёшь. drop без bind не держит. в том порядке, пока чай ещё горячий.

5. туннель.

ssh -N -L 13389:127.0.0.1:3389 на час хватает. каждый день — wg, AllowedIPs только до этой машины, не 0.0.0.0/0. иначе весь трафик телефона полезет в бот-сервер, и начнёшь ловить зелёный туннель без интернета. это уже не про rdp, это ты сам себе устроишь.

клиент rdp только на 127.0.0.1:13389. не на публичный ip, не на hostname. иначе туннель стоит рядом, а сессия идёт в wan мимо него.

6. проверка снаружи, не «я вроде закрыл».

с другой машины, не с этого vps:

nc -zv IP 3389
nmap -Pn -p 3389 IP

timeout или filtered — норма. open — bind не сделал, служба жива, или в панели ещё висит проброс с прошлого раза. 4625 на винде смотреть после netstat. если 3389 не слушает, журнал пустой и должен таким остаться. если 4625 пишется — слушаешь 0.0.0.0, ssh тут ни при чём.

если стола нет, службу снять, не «почти»:

Stop-Service TermService -Force
Set-Service TermService -StartupType Disabled
netstat -an | findstr :3389

пусто. если снова 0.0.0.0:3389 — не снял.

скинь ss -lntp с текущего бокса и кусок compose, где порты. без вывода дальше не гадаю.
0
n1kita
Junior
Сообщения: 40
Репутация: 14
Дата регистрации:
19.08.2026
01 сент. 2026 г., 21:34 (GMT+3)
lexa92

lexa92 писал:
правило в фаерволе это второй слой, не замена


слой не закроет compose. 3389 в ports — снова 0.0.0.0.
0
tema_py
Junior
Сообщения: 25
Репутация: 11
Дата регистрации:
18.08.2026
01 сент. 2026 г., 22:10 (GMT+3)
n1kita в compose 3389 нет. это бокс под питон)). службу сниму, ss ща скину.
0
n1kita
Junior
Сообщения: 40
Репутация: 14
Дата регистрации:
19.08.2026
01 сент. 2026 г., 22:14 (GMT+3)
lexa92

lexa92 писал:
bind на 127.0.0.1 остаётся, даже когда правило снесут


правило снимут. bind нет. ss ещё нет.
0
tema_py
Junior
Сообщения: 25
Репутация: 11
Дата регистрации:
18.08.2026
01 сент. 2026 г., 23:21 (GMT+3)
n1kita вот ss: 22 слушает, 3389 пусто. службу снял, пока чай горячий))
0
n1kita
Junior
Сообщения: 40
Репутация: 14
Дата регистрации:
19.08.2026
02 сент. 2026 г., 00:12 (GMT+3)
lexa92
ss пришёл. 3389 пусто. bind не обсуждаем — службы нет. wan-drop на мёртвый порт ничего не закрывает.

службу не возвращай «на час». stop до ребута не считается. пакет снять. 22 в 0.0.0.0 это не стол. ключи, не root. иначе холивар переедет на другой порт.
2
n1kita
Junior
Сообщения: 40
Репутация: 14
Дата регистрации:
19.08.2026
02 сент. 2026 г., 01:11 (GMT+3)
lexa92

lexa92 писал:
когда стол понадобится: bind, wan-drop, потом -L


стол — только туннель. wan не открывают даже на час.
0
n1kita
Junior
Сообщения: 40
Репутация: 14
Дата регистрации:
19.08.2026
02 сент. 2026 г., 03:06 (GMT+3)
lexa92

lexa92 писал:
пусто — -L не нужен, в wan нечего сканить


22 уже в 0.0.0.0. сканить есть. -L не снимают. пакет rdp снять, не stop. гайд «удалённый стол» вернёт 3389 раньше ребута. stop — это антракт, не закрытие.
0
lexa92
Junior
Сообщения: 59
Репутация: 20
Дата регистрации:
09.08.2026
02 сент. 2026 г., 09:06 (GMT+3)
n1kita 3389 пусто. три поста в мёртвый порт не добавят bind.

wan-drop ему не нужен. пакет снять — да, stop я не предлагал.

22 в 0.0.0.0 это ssh. ключи, не root. стол — только туннель, wan даже на час не открывают. на 22 холивар сам не переедет.
0
kate_ekb
Junior
Сообщения: 37
Репутация: 12
Дата регистрации:
12.08.2026
02 сент. 2026 г., 13:08 (GMT+3)
lexa92

lexa92 писал:
на 22 холивар сам не переедет


не сам — его уже посадили. 3389 пусто, bind там не появится. спор про 22: он в 0.0.0.0, сканеру этого хватает. пакет снять, не stop. гайд «удалённый стол» поднимает службу быстрее, чем остынет чай)
1
tema_py
Junior
Сообщения: 25
Репутация: 11
Дата регистрации:
18.08.2026
02 сент. 2026 г., 18:17 (GMT+3)
lexa92 пакет ща сниму, stop я и так не держал. 3389 пусто, из compose он не вернётся, там питон.

22 в 0.0.0.0 это ssh, ключи, не root. чай остыл, а пакет ещё висит — kate_ekb права, я службу снял и уже геройствовал))
0