.. _sshgl: Служба ssh ========== Служба ssh предназначена для поддержки сетевого протокола SSH, который обеспечивает аутентификацию и шифрование данных для удалённого доступа и управления, что позволяет исключить подслушивание трафика, перехват соединения и другие атаки. Данная служба применима для предоставления безопасного доступа к узлам через защищённые каналы. По умолчанию служба использует TCP-порт 22 для связи между клиентом и сервером. Кроме того, служба предоставляет большой набор возможностей безопасного соединения, несколько методов аутентификации и широкие параметры конфигурации. Служба состоит из серверной части, которая служит для предоставления удалённого доступа другим узлам в сети, и клиентской части, которая предоставляет инструменты для подключения к удалённым узлам, операций с файлами на этих узлах. Для идентификации узла, на котором запущена служба у других клиентов, необходимо присутствие асимметричной ключевой пары на нём. Данная пара генерируется автоматически и не требует настройки администратором. Настройка службы ssh осуществляется на следующем уровне конфигурации: :: [edit service ssh] Настройка серверной части ------------------------- Для активации службы и обеспечения возможности удалённого подключения к узлу необходимо запустить службу. Для запуска службы применяется команда: :: [edit service ssh] # set enable По данной команде служба настраивается на приём SSH-соединений на всех интерфейсах через TCP-порт 22. Для изменения номера порта прослушивания по умолчанию применяется команда: :: [edit service ssh] # set listen port |noindent| где ```` – число от 1 до 65535. Для настройки прослушивания соединений на указанных IP-адресах (и портах) интерфейсов применяется команда: :: [edit service ssh] # set listen ipv4|ipv6 address
[port ] |noindent| где - ``ipv4|ipv6`` – уровень конфигурации IPv4/IPv6; - ``
`` – IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:...:H`` в зависимости от уровня конфигурации; - ```` – число от 1 до 65535. Параметр ``port`` является необязательным. Если в команде параметр не задан, используется значение номера порта по умолчанию. Для настройки прослушивания соединений на всех IPv4-адресах применяется команда: :: [edit service ssh] # set listen ipv4 address 0.0.0.0 [port ] |noindent| где ```` – число от 1 до 65535. Параметр ``port`` является необязательным. Если в команде параметр не задан, используется значение номера порта по умолчанию. Для настройки прослушивания соединений на всех IPv6-адресах применяется команда: :: [edit service ssh] # set listen ipv6 address :: [port ] |noindent| где ```` – число от 1 до 65535. Параметр ``port`` является необязательным. Если в команде параметр не задан, используется значение номера порта по умолчанию. Настройка контроля доступа ~~~~~~~~~~~~~~~~~~~~~~~~~~ По умолчанию служба предоставляет доступ извне ко всем учётным записям администраторов, за исключением учётной записи администратора ``root``, которая является служебной. Для предоставления удалённого доступа к учётной записи ``root`` применяется команда: :: [edit service ssh] # set access root-login В службе ssh предусмотрены несколько режимов аутентификации: с использованием пароля и с использованием ключевой информации (без пароля). По умолчанию активированы оба режима работы. Для отключения аутентификации с использованием паролей и применения только аутентификации по ключам применяется команда: :: [edit service ssh] # set access no-password В службе реализованы различные настройки для обеспечения контроля доступа: возможно указание учётных записей и IP-адресов, с которых разрешено или запрещено удалённое управление. Кроме того, при определении имени учётной записи поддерживаются шаблоны, по которым осуществляется проверка на соответствие правилу доступа. Шаблон может содержать символ “\*” для обозначения набора символов любой длины, в том числе нулевой, и символ “?” для обозначения одного символа. При отсутствии IP-адреса в настройке правило применяется для любого адреса. Для разрешения доступа с указанной учётной записи (и IP-адреса) применяется команда: :: [edit service ssh] # set access allow login [address
] |noindent| где - ```` – строка; - ``
`` – IPv4-адрес в формате ``A.B.C.D[/mask]`` или IPv6-адрес в формате ``A:B:...:H[/mask]``. По данной команде предоставляется доступ для указанных учётных записей. Если указан IP-адрес (диапазон адресов, указанный с помощью маски), он также проверяется на соответствие правилу. Подключение учётных записей, которые не соответствуют правилу, отклоняется. Для запрета доступа с указанной учётной записи (и IP-адреса) применяется команда: :: [edit service ssh] # set access deny login [address
] |noindent| где - ```` – строка; - ``
`` – IPv4-адрес в формате ``A.B.C.D[/mask]`` или IPv6-адрес в формате ``A:B:...:H[/mask]``. По данной команде предоставляется доступ для всех учётных записей, за исключением указанных в команде. .. warning:: Приоритет команды ``deny`` выше приоритета команды ``allow``. Если используется команда ``allow``, доступ предоставляется только указанным учётным записям (и адресам). .. warning:: Команды ``allow`` и ``deny`` являются наиболее приоритетными при настройке контроля доступа, поэтому для предоставления доступа с учётной записи администратора ``root`` необходимо использовать команду ``access root-login`` совместно с указанными командами – добавить разрешающее правило для учётной записи администратора ``root`` с помощью команд: :: [edit service ssh] # set access root-login # set access allow login root Списки доступа ~~~~~~~~~~~~~~ Для осуществления контроля доступа также применимы списки соответствий (доступа). Список может содержать шаблоны имён учётных записей или IP-адресов, для которых разрешён доступ. Для списков возможно отключение аутентификации с использованием паролей. Имена списков используются исключительно для удобства администрирования. Настройка списков доступа осуществляется на следующем уровне конфигурации: :: [edit service ssh access match-list ] |noindent| где ```` – строка. Для добавления шаблона имени учётной записи в список применяется команда: :: [edit service ssh access match-list ] # set user |noindent| где ```` – строка. Для добавления шаблона адреса удалённого узла в список применяется команда: :: [edit service ssh access match-list ] # set host |noindent| где ```` – строка. Для отключения аутентификации с использованием пароля для подключений, соответствующих списку, применяется команда: :: [edit service ssh access match-list ] # set no-password Настройка параметров соединения ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Служба ssh позволяет контролировать некоторые параметры уже установленного соединения. Для определения тайм-аута ожидания сервером (службой ssh) сигнала от клиента применяется команда: :: [edit service ssh] # set access alive-interval |noindent| где ```` – число секунд от 0 до 4294967295. Если в течение указанного времени клиент не отправляет сигнал, служба закрывает соединение. Для определения максимального количества попыток повторной передачи данных применяется команда: :: [edit service ssh] # set access alive-count |noindent| где ```` – число от 0 до 4294967295. Настройка параметров беспарольного доступа ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Для настройки беспарольного доступа используются открытые ключи. Для предоставления доступа без пароля к ПАК “Фортикс” необходимо добавить открытый ключ удалённого узла в настройки учётной записи в системе. Настройка беспарольного доступа осуществляется в режиме конфигурации системы. Возможно указание как значения открытого ключа удалённого узла, с которого осуществляется подключение, так и файла, содержащего открытый ключ. Для добавления значения ключа в настройки учётной записи применяется команда: :: # setup login ssh-pubkey text |noindent| где - ```` – имя существующей учётной записи; - ```` – строка. Для добавления файла, содержащего открытый ключ удалённого узла, в настройки учётной записи применяется команда: :: # setup login ssh-pubkey file |noindent| где - ```` – имя существующей учётной записи; - ```` – полное имя файла или имя файла относительно домашней директории пользователя. Для предоставления ПАК “Фортикс” беспарольного доступа к удалённому узлу необходимо сгенерировать на ПАК “Фортикс” ключевую пару (открытый и закрытый ключ), а затем добавить на удалённый узел полученный открытый ключ. Для генерации ключевой пары применяется команда: :: > ssh key generate [dsa|rsa|ecdsa] [comment ] |noindent| где - ``dsa|rsa|ecdsa`` – алгоритм шифрования (по умолчанию – ``rsa``); - ```` – строка. Необязательный параметр ``comment`` указывается для записи описания в файл открытого ключа. Настройка алгоритмов ~~~~~~~~~~~~~~~~~~~~ Служба поддерживает настройку алгоритмов шифрования, аутентификации (MAC), обмена ключей (KEX) и алгоритмов ключей хоста. Для настройки использования указанного алгоритма шифрования в режиме конфигурации службы применяется команда: :: [edit service ssh] # set algo cipher true|false |noindent| где ```` – алгоритм шифрования (см. ниже). Доступные алгоритмы шифрования: - ``des3-cbc`` – по умолчанию отключён; - ``aes128-cbc`` – по умолчанию отключён; - ``aes192-cbc`` – по умолчанию отключён; - ``aes256-cbc`` – по умолчанию отключён; - ``aes128-ctr`` – по умолчанию включён; - ``aes192-ctr`` – по умолчанию включён; - ``aes256-ctr`` – по умолчанию включён; - ``aes128-gcm-openssh.com`` – по умолчанию включён; - ``aes256-gcm-openssh.com`` – по умолчанию включён; - ``chacha20-poly1305-openssh.com`` – по умолчанию включён. Для настройки использования указанного алгоритма аутентификации применяется команда: :: [edit service ssh] # set algo mac true|false |noindent| где ```` – алгоритм аутентификации (см. ниже). Доступные алгоритмы аутентификации: - ``hmac-sha1`` – по умолчанию включён; - ``hmac-sha1-96`` – по умолчанию отключён; - ``hmac-sha2-256`` – по умолчанию включён; - ``hmac-sha2-512`` – по умолчанию включён; - ``hmac-md5`` – по умолчанию отключён; - ``hmac-md5-96`` – по умолчанию отключён; - ``umac-64-openssh.com`` – по умолчанию включён; - ``umac-128-openssh.com`` – по умолчанию включён; - ``hmac-sha1-etm-openssh.com`` – по умолчанию включён; - ``hmac-sha1-96-etm-openssh.com`` – по умолчанию отключён; - ``hmac-sha2-256-etm-openssh.com`` – по умолчанию включён; - ``hmac-sha2-512-etm-openssh.com`` – по умолчанию включён; - ``hmac-md5-etm-openssh.com`` – по умолчанию отключён; - ``hmac-md5-96-etm-openssh.com`` – по умолчанию отключён; - ``umac-64-etm-openssh.com`` – по умолчанию включён; - ``umac-128-etm-openssh.com`` – по умолчанию включён. Для настройки использования указанного алгоритма обмена ключей применяется команда: :: [edit service ssh] # set algo kex true|false |noindent| где ```` – алгоритм обмена ключей (см. ниже). Доступные алгоритмы обмена ключей: - ``curve25519-sha256`` – по умолчанию включён; - ``curve25519-sha256-libssh.org`` – по умолчанию включён; - ``diffie-hellman-group1-sha1`` – по умолчанию отключён; - ``diffie-hellman-group14-sha1`` – по умолчанию отключён; - ``diffie-hellman-group14-sha256`` – по умолчанию включён; - ``diffie-hellman-group16-sha512`` – по умолчанию включён; - ``diffie-hellman-group18-sha512`` – по умолчанию включён; - ``diffie-hellman-group-exchange-sha1`` – по умолчанию отключён; - ``diffie-hellman-group-exchange-sha256`` – по умолчанию включён; - ``ecdh-sha2-nistp256`` – по умолчанию включён; - ``ecdh-sha2-nistp384`` – по умолчанию включён; - ``ecdh-sha2-nistp521`` – по умолчанию включён; - ``sntrup761x25519-sha512-openssh.com`` – по умолчанию отключён. Для настройки использования указанного алгоритма формирования ключей хоста применяется команда: :: [edit service ssh] # set algo host-key true|false |noindent| где ```` – алгоритм формирования ключей хоста. Доступные алгоритмы формирования ключей хоста: - ``ssh-ed25519`` – по умолчанию включён; - ``ssh-ed25519-cert-v01-openssh.com`` – по умолчанию включён; - ``sk-ssh-ed25519-openssh.com`` – по умолчанию включён; - ``sk-ssh-ed25519-cert-v01-openssh.com`` – по умолчанию включён; - ``ssh-rsa`` – по умолчанию отключён; - ``rsa-sha2-256`` – по умолчанию включён; - ``rsa-sha2-512`` – по умолчанию включён; - ``ssh-dss`` – по умолчанию отключён; - ``ecdsa-sha2-nistp256`` – по умолчанию включён; - ``ecdsa-sha2-nistp384`` – по умолчанию включён; - ``ecdsa-sha2-nistp521`` – по умолчанию включён; - ``sk-ecdsa-sha2-nistp256-openssh.com`` – по умолчанию включён; - ``ssh-rsa-cert-v01-openssh.com`` – по умолчанию отключён; - ``rsa-sha2-256-cert-v01-openssh.com`` – по умолчанию включён; - ``rsa-sha2-512-cert-v01-openssh.com`` – по умолчанию включён; - ``ssh-dss-cert-v01-openssh.com`` – по умолчанию отключён; - ``ecdsa-sha2-nistp256-cert-v01-openssh.com`` – по умолчанию включён; - ``ecdsa-sha2-nistp384-cert-v01-openssh.com`` – по умолчанию включён; - ``ecdsa-sha2-nistp521-cert-v01-openssh.com`` – по умолчанию включён; - ``sk-ecdsa-sha2-nistp256-cert-v01-openssh.com`` – по умолчанию включён. .. _sshclientcommand: Команды клиентской части ------------------------ Для подключения к удалённому узлу применяется команда: :: > ssh connect
[port ] [source ] [vrf ] |noindent| где - ```` – учётная запись удалённого узла; - ``
`` – IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:...:H`` или хост SSH-сервера удалённого узла; - ```` – номер порта от 1 до 65535 SSH-сервера удалённого узла; - ```` – локальный IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:...:H`` системы, с которого осуществляется подключение; - ```` – имя виртуальной таблицы маршрутизации (имя интерфейса). Для копирования файлов c ПАК “Фортикс” на удалённый узел применяется команда: :: > ssh put
[port ] [source ] [vrf ] [] |noindent| где - ```` – полное имя файла или имя файла относительно домашней директории пользователя в локальной файловой системе ПАК “Фортикс”; - ```` – учётная запись удалённого узла; - ``
`` – IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:...:H`` или хост SSH-сервера удалённого узла; - ```` – номер порта от 1 до 65535 SSH-сервера удалённого узла; - ```` – локальный IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:...:H`` системы, с которого осуществляется подключение; - ```` – имя виртуальной таблицы маршрутизации (имя интерфейса); - ```` – имя файла на удалённом узле. Для копирования файлов на ПАК “Фортикс” с удалённого узла применяется команда: :: > ssh get
[port ] [source ] [vrf ] [] |noindent| где - ```` – учётная запись удалённого узла; - ``
`` – IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:...:H`` или хост SSH-сервера удалённого узла; - ```` – имя файла на удалённом узле; - ```` – номер порта от 1 до 65535 SSH-сервера удалённого узла; - ```` – локальный IPv4-адрес в формате ``A.B.C.D`` или IPv6-адрес в формате ``A:B:...:H`` системы, с которого осуществляется подключение; - ```` – имя виртуальной таблицы маршрутизации (имя интерфейса); - ```` – полное имя файла или имя файла относительно домашней директории пользователя в локальной файловой системе ПАК “Фортикс”. Для хранения списка известных SSH-ключей серверов в системе используется файл ``known_hosts``, который расположен в каталоге ``ssh/`` домашней директории администратора: :: > ls ssh/ 22.03.2024 01:16:36 known_hosts Файл ``known_hosts`` используется для предотвращения атак, связанных с подменой IP-адресов. Файл содержит имя хоста, IP-адрес или ключ сервера и дату последнего обновления информации о сервере. При попытке администратора подключиться к серверу по протоколу SSH служба проверяет наличие записи для данного сервера в файле ``known_hosts``. Если запись присутствует и устарела, служба сообщает о необходимости обновления информации о сервере. Если запись для сервера отсутствует, служба добавляет новую запись и подключается к серверу. Для редактирования файла ``known_hosts`` доступны стандартные средства системы.