SSH Server

SSH (Secure Shell) - криптографический сетевой протокол для безопасного удаленного управления системой VyOS.

Обзор

SSH предоставляет:

  • Защищенное удаленное подключение к CLI
  • Шифрование всего трафика
  • Аутентификацию по паролю или ключам
  • Замену небезопасным протоколам (Telnet, rlogin)

По умолчанию SSH работает на порту 22/TCP.

Базовая конфигурация

Включение SSH

Минимальная конфигурация:

set service ssh
commit

SSH будет слушать на всех интерфейсах на порту 22.

Указание порта

Изменение порта по умолчанию:

set service ssh port 2222
commit

Привязка к адресу

Ограничение на конкретный IP-адрес:

set service ssh listen-address 192.168.1.1
commit

Множественные адреса:

set service ssh listen-address 192.168.1.1
set service ssh listen-address 10.0.0.1
set service ssh listen-address 2001:db8::1
commit

Аутентификация

Парольная аутентификация

По умолчанию включена. Пользователи могут входить используя пароли.

Отключение парольной аутентификации:

set service ssh disable-password-authentication
commit

Важно: Перед отключением убедитесь, что настроена аутентификация по ключам!

Аутентификация по SSH-ключам

Добавление публичного ключа для пользователя

set system login user admin authentication public-keys user@host key 'AAAAB3NzaC1yc2EAAAADAQABAAABAQC...'
set system login user admin authentication public-keys user@host type 'ssh-rsa'
commit

Типы ключей:

  • ssh-rsa - RSA ключ
  • ssh-dss - DSA ключ (устарел, не рекомендуется)
  • ecdsa-sha2-nistp256 - ECDSA 256-бит
  • ecdsa-sha2-nistp384 - ECDSA 384-бит
  • ecdsa-sha2-nistp521 - ECDSA 521-бит
  • ssh-ed25519 - Ed25519 (рекомендуется)

Генерация ключей на клиенте

На Linux/macOS:

ssh-keygen -t ed25519 -C "user@vyos"

На Windows (PowerShell):

ssh-keygen -t ed25519 -C "user@vyos"

Публичный ключ будет в файле ~/.ssh/id_ed25519.pub.

Копирование ключа на VyOS

С клиента Linux/macOS:

ssh-copy-id -i ~/.ssh/id_ed25519.pub vyos@192.168.1.1

Или вручную скопируйте содержимое id_ed25519.pub и добавьте через CLI.

Отключение root login

Root login отключен по умолчанию начиная с VyOS 1.2+.

Проверка:

show service ssh

Контроль доступа

По пользователям

Разрешение только конкретным пользователям:

set service ssh access-control allow user admin
set service ssh access-control allow user operator
commit

Запрет конкретным пользователям:

set service ssh access-control deny user guest
commit

По группам

Разрешение по группам:

set service ssh access-control allow group operators
commit

Запрет по группам:

set service ssh access-control deny group guests
commit

Настройки безопасности

Алгоритмы шифрования (Ciphers)

Указание разрешенных алгоритмов шифрования:

set service ssh ciphers 'chacha20-poly1305@openssh.com'
set service ssh ciphers 'aes256-gcm@openssh.com'
set service ssh ciphers 'aes128-gcm@openssh.com'
set service ssh ciphers 'aes256-ctr'
set service ssh ciphers 'aes192-ctr'
set service ssh ciphers 'aes128-ctr'
commit

Рекомендуемые современные алгоритмы:

  • chacha20-poly1305@openssh.com - ChaCha20-Poly1305
  • aes256-gcm@openssh.com - AES256-GCM
  • aes128-gcm@openssh.com - AES128-GCM

Не рекомендуются (устаревшие):

  • 3des-cbc - Triple DES
  • aes128-cbc, aes192-cbc, aes256-cbc - CBC режим
  • arcfour, arcfour128, arcfour256 - RC4

MAC алгоритмы

Message Authentication Code алгоритмы:

set service ssh mac 'hmac-sha2-512-etm@openssh.com'
set service ssh mac 'hmac-sha2-256-etm@openssh.com'
set service ssh mac 'hmac-sha2-512'
set service ssh mac 'hmac-sha2-256'
commit

Рекомендуемые:

  • hmac-sha2-512-etm@openssh.com
  • hmac-sha2-256-etm@openssh.com
  • hmac-sha2-512
  • hmac-sha2-256

Не рекомендуются:

  • hmac-md5 - устарел
  • hmac-sha1 - считается слабым

Key Exchange алгоритмы

Алгоритмы обмена ключами:

set service ssh key-exchange 'curve25519-sha256@libssh.org'
set service ssh key-exchange 'diffie-hellman-group-exchange-sha256'
set service ssh key-exchange 'ecdh-sha2-nistp521'
set service ssh key-exchange 'ecdh-sha2-nistp384'
set service ssh key-exchange 'ecdh-sha2-nistp256'
commit

Рекомендуемые:

  • curve25519-sha256@libssh.org
  • curve25519-sha256
  • diffie-hellman-group-exchange-sha256
  • ecdh-sha2-nistp521

Не рекомендуются:

  • diffie-hellman-group1-sha1 - устарел
  • diffie-hellman-group14-sha1 - устарел

Host Key Validation

Отключение проверки host key (не рекомендуется для продакшена):

set service ssh disable-host-validation
commit

Защита от brute-force атак

Dynamic Protection

Автоматическая блокировка при превышении лимита неудачных попыток:

set service ssh dynamic-protection
commit

Настройка параметров защиты

Количество попыток до блокировки:

set service ssh dynamic-protection threshold 3
commit

Время блокировки (секунды):

set service ssh dynamic-protection block-time 600
commit

Whitelist адресов

Исключение доверенных адресов из защиты:

set service ssh dynamic-protection allow-from 192.168.1.0/24
set service ssh dynamic-protection allow-from 10.0.0.100
commit

Примеры конфигурации

Базовая безопасная конфигурация

# Основные настройки
set service ssh port 22
set service ssh listen-address 192.168.1.1

# Только ключевая аутентификация
set service ssh disable-password-authentication

# Контроль доступа
set service ssh access-control allow user admin
set service ssh access-control allow user operator

# Защита от brute-force
set service ssh dynamic-protection
set service ssh dynamic-protection threshold 3
set service ssh dynamic-protection block-time 600

commit

Усиленная безопасность

# Нестандартный порт
set service ssh port 2222
set service ssh listen-address 192.168.1.1

# Только ключевая аутентификация
set service ssh disable-password-authentication

# Современные алгоритмы шифрования
set service ssh ciphers 'chacha20-poly1305@openssh.com'
set service ssh ciphers 'aes256-gcm@openssh.com'
set service ssh ciphers 'aes128-gcm@openssh.com'

# Современные MAC
set service ssh mac 'hmac-sha2-512-etm@openssh.com'
set service ssh mac 'hmac-sha2-256-etm@openssh.com'

# Современный key exchange
set service ssh key-exchange 'curve25519-sha256@libssh.org'
set service ssh key-exchange 'diffie-hellman-group-exchange-sha256'

# Контроль доступа
set service ssh access-control allow user admin

# Защита от атак
set service ssh dynamic-protection
set service ssh dynamic-protection threshold 2
set service ssh dynamic-protection block-time 1800
set service ssh dynamic-protection allow-from 192.168.1.0/24

commit

Множественные порты и адреса

# Слушать на нескольких адресах
set service ssh port 22
set service ssh listen-address 192.168.1.1
set service ssh listen-address 10.0.0.1
set service ssh listen-address 2001:db8::1

# Контроль доступа
set service ssh access-control allow group operators

# Базовая защита
set service ssh dynamic-protection

commit

Операционные команды

Просмотр конфигурации

show service ssh

Просмотр SSH fingerprints

show ssh server-fingerprints

Перезапуск SSH

restart ssh

Генерация серверных ключей

generate ssh server-key

Просмотр активных сессий

show users

Логи SSH

show log ssh
monitor log | grep sshd

Подключение к VyOS

С Linux/macOS

Стандартное подключение:

ssh vyos@192.168.1.1

С указанием порта:

ssh -p 2222 vyos@192.168.1.1

С указанием ключа:

ssh -i ~/.ssh/id_ed25519 vyos@192.168.1.1

С Windows

PowerShell (Windows 10/11):

ssh vyos@192.168.1.1

PuTTY:

  1. Запустите PuTTY
  2. Введите адрес: 192.168.1.1
  3. Порт: 22 (или ваш)
  4. Connection type: SSH
  5. Click “Open”

Устранение неполадок

Не могу подключиться

Проверьте статус SSH:

show service ssh

Проверьте firewall:

show firewall

Убедитесь что порт открыт:

show firewall ipv4 input filter

Проверьте, слушает ли SSH:

netstat -tlnp | grep sshd

Отключил пароли и потерял доступ

Если есть консольный доступ:

configure
delete service ssh disable-password-authentication
commit

Если нет консольного доступа - потребуется физический доступ к устройству или восстановление из резервной копии.

Проблемы с ключами

Проверьте формат ключа:

show system login user admin authentication public-keys

Проверьте логи:

show log ssh

Убедитесь что ключ правильного типа (RSA, Ed25519 и т.д.).

Брандмауэр блокирует

Разрешите SSH в firewall:

set firewall ipv4 input filter rule 10 action accept
set firewall ipv4 input filter rule 10 destination port 22
set firewall ipv4 input filter rule 10 protocol tcp
set firewall ipv4 input filter rule 10 source address 192.168.1.0/24
commit

Безопасность и лучшие практики

1. Используйте ключевую аутентификацию

Отключите пароли:

set service ssh disable-password-authentication

2. Измените порт по умолчанию

set service ssh port 2222

Это уменьшит количество автоматических атак.

3. Ограничьте доступ

По пользователям:

set service ssh access-control allow user admin

По адресам (через firewall):

set firewall ipv4 input filter rule 10 action accept
set firewall ipv4 input filter rule 10 destination port 22
set firewall ipv4 input filter rule 10 protocol tcp
set firewall ipv4 input filter rule 10 source address 192.168.1.0/24

4. Включите защиту от brute-force

set service ssh dynamic-protection
set service ssh dynamic-protection threshold 3
set service ssh dynamic-protection block-time 600

5. Используйте современные алгоритмы

Отключите устаревшие ciphers и MAC алгоритмы.

6. Мониторьте логи

Регулярно проверяйте SSH логи:

show log ssh

7. Используйте jump host

Для критичных систем используйте bastion host (jump server) вместо прямого доступа.

8. Регулярно обновляйте ключи

Пересоздавайте SSH ключи периодически (раз в 1-2 года).

9. Используйте сильные ключи

Ed25519 или RSA 4096-бит:

ssh-keygen -t ed25519
# или
ssh-keygen -t rsa -b 4096

10. Резервное копирование

Всегда сохраняйте резервную копию конфигурации:

save

Интеграция с другими системами

Jump Host / Bastion

Использование VyOS как jump host:

  1. Разрешите port forwarding в sshd
  2. Подключайтесь через ProxyJump:
ssh -J vyos@jumphost.example.com user@internal-server

SSH Agent Forwarding

На клиенте добавьте в ~/.ssh/config:

Host vyos-router
    HostName 192.168.1.1
    User vyos
    ForwardAgent yes

SSH Certificates (CA)

Для больших инфраструктур используйте SSH Certificate Authority вместо индивидуальных ключей.

Следующие шаги

  • HTTPS/API - веб-интерфейс и REST API
  • Firewall - настройка доступа к SSH
  • System Login - управление пользователями
Проверено OpenNix LLC · Обновлено