Knowledge Base
VNC открыт публично (порты 5900–5909)
VNC открыт публично — порты 5900–5909
Категория: Server Hardening · Риск: critical
VNC открыт публично — порты 5900–5909
Угрозы
VNC (Virtual Network Computing) предоставляет графический удалённый рабочий стол. Публичный VNC означает:
- **Брутфорс паролей**: VNC не имеет lockout по умолчанию, автоматические атаки ведутся непрерывно
- **Отсутствие шифрования** в некоторых реализациях (VNC 3.3) — пароль перехватывается
- **Слабое шифрование пароля**: VNC хранит 8-байтный хэш пароля — уязвим к brute-force
Shodan и массовые сканеры находят открытые VNC-серверы в течение минут.
Проверка
# Проверить открытые порты VNC
nc -zv <IP> 5900
nc -zv <IP> 5901
nc -zv <IP> 5902
Немедленное исправление
Закрыть публичный доступ
# ufw
ufw deny 5900:5909/tcp
Привязать только к localhost
# x11vnc
x11vnc -localhost -rfbport 5900 ...
# tigervnc
# /etc/tigervnc/vncserver.users
# В системном конфиге: :1=username
# Запуск: vncserver -localhost yes :1
Безопасный удалённый доступ через SSH туннель
# Локальная машина: создать туннель
ssh -L 5901:localhost:5901 user@remote-server
# Подключиться через VNC-клиент к localhost:5901
# Соединение идёт через зашифрованный SSH-туннель
Или использовать NX / NoMachine / Guacamole
Более современные решения с TLS и многофакторной аутентификацией.
Если VNC вынужденно публичен
# Обязательные меры:
# 1. Установить надёжный пароль (≥16 символов)
# 2. Включить X.509 TLS в VNC (vncserver -X509Cert / -X509Key)
# 3. Использовать fail2ban для VNC:
# /etc/fail2ban/jail.d/vnc.conf
[vnc]
enabled = true
port = 5900:5909
filter = vnc
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
Связанные проверки
- [RDP открыт публично](/kb/server_hardening/exposed-rdp-3389)
- [SSH порт 22](/kb/server_hardening/public-ssh-port-22)
- [Tailscale VPN](/kb/vpn/tailscale-admin)