Настройка параметров безопасности SSH
Здесь перечисляются и кратко описываются параметры безопасности сервиса OpenSSH. Это может быть не критичным, но подразумевается, что настройка выполняется в только что установленной операционной системе. Набор рассматриваемых параметров характерен для OpenSSH 9.3p2 с OpenSSL 1.1.1t.
После рассмотренного примера настройки, приводится перевод всех параметров OpenSSH на основании данных из man.
Подготовка
Создайте резервную копию файла конфигурации:
Посмотреть действующие параметры сервиса можно командой:
Пример конфигурации
Далее приводится пример конфигурации, в котором учтены базовые параметры защиты данного сервиса. Параметры и их значения указываются в файле конфигурации /etc/ssh/sshd_config.
AddressFamily inet
AllowAgentForwarding no
# AllowGroups ...
AllowStreamLocalForwarding no
AllowTcpForwarding no
AllowUsers user@127.0.0.*
AuthenticationMethods publickey
AuthorizedKeysFile /etc/ssh/authorized-keys/%u
Banner none
# ChrootDirectory ...
# ChallengeResponseAuthentication no <-- outdated
Ciphers aes128-ctr,aes192-ctr,aes256-ctr
ClientAliveCountMax 1
ClientAliveInterval 300
# DenyGroups ...
# DenyUsers ...
DisableForwarding yes
# HostCertificate ...
# HostKey ...
# HostKeyAlgorithms ...
KbdInteractiveAuthentication no
KexAlgorithms ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha256
ListenAddress 192.168.0.3:2414
LoginGraceTime 20
LogLevel VERBOSE
MACs hmac-sha2-256,hmac-sha2-512,hmac-sha1
# Match ...
MaxAuthTries 3
MaxSessions 2
PermitEmptyPasswords no
PermitRootLogin no
# RequiredRSASize ...
# StrictModes ...
# Subsystem ...
SyslogFacility AUTHPRIV
# TrustedUserCAKeys ...
# UseBlacklist ...
X11Forwarding no
X11UseLocalhost no
При создании новых пользователей в системе помните, что у каждого из них есть параметр - имя оболочки. Если пользователю не нужен интерактивный вход в систему, но нужен, например сервис SFTP, то оболочку можно отключить в свойствах пользователя.
Дополнительные опции
Далее приведены некоторые опции конфигурации OpenSSH, которые можно включить при соответствующей необходимости:
AllowGroupsTEMPLATE: список шаблонов групп, разделенных пробелами, членам которых доступ будет разрешен;AllowUsersTEMPLATE: список шаблонов имен пользователей, которым доступ будет разрешен;ForceCommand[COMMAND]: выполняетCOMMANDпри подключении пользователя;ForceCommand internal-sftp: запускает демон SFTP для пользователя (полезно, когда у пользователя нет оболочки);AuthenticationMethods: список методов аутентификации, которые должны быть успешно завершены для предоставления доступа;AuthorizedKeysFile: файл, содержащий открытые ключи, используемые для аутентификации пользователя;Banner: если аргумент равенnone, то баннер не отображается;ChrootDirectory[DIR]: устанавливает директориюDIRдля пользователя (полезно, когда у пользователя нет оболочки, но ему разрешен SFTP);ClientAliveCountMax: количество проверок доступности клиента сервером, которые могут оставаться без ответа клиента;ClientAliveInterval: интервал ожидания в секундах, по истечении которого, если от клиента не было получено никаких данных, sshd отправит сообщение по зашифрованному каналу, чтобы запросить ответ от клиента;DenyGroups: список шаблонов имен групп, членам которых вход в систему будет запрещен;DenyUsers: список шаблонов имен пользователей, которым вход в систему будет запрещен;DisableForwarding: отключает функции переадресации вызовов;HostCertificate: файл, содержащий общедоступный сертификат хоста;HostKey: файл, содержащий закрытый ключ хоста;HostKeyAlgorithms: алгоритмы подписи ключа хоста, предлагаемые сервером;MatchUser[USERNAME]: переопределяет некоторые параметры исключительно дляUSERNAME;- AuthenticationMethods : позволяет указывать последовательности методов аутентификации. Только при выполнении такой последовательности, аутентификация будет пройдена. Можно, например, настроить аутентификацию с помощью двух ключей или паролей, или ключа и пароля и т.п.;
- Существует возможность использовать сертификаты клиентов. Можно сказать, что при этом OpenSSH интегрируется в существующую PKI. Для реализации этого, смотрите описание команд AuthorizedPrincipalsCommand, AuthorizedPrincipalsCommandUser, AuthorizedPrincipalsFile, TrustedUserCAKeys, CASignatureAlgorithms;
RequiredRSASize: минимальный размер ключа RSA (в битах);StrictModes: должен ли sshd проверять права собственности на файлы пользователя и домашний каталог;Subsystem: настраивает внешнюю подсистему (например, демон передачи файлов);TrustedUserCAKeys: файл, содержащий открытые ключи центров сертификации, которым доверено подписывать пользовательские сертификаты;UseBlacklist: будет ли sshd пытаться отправлять сообщения об успешной аутентификации и сбое в работе демону blacklistd.
Ключи пользователей
В OpenSSH ассиметричное шифрование используется для обмена ключами и для установки шифрования соединения. Для каждого пользователя должна быть сгенерирована собственная пара ключей (секретный и публичный). Рекомендуется передавать на сервер уже сгенерированный публичный ключ пользователя. Поэтому на стороне клиента ключи можно сгенерировать командой:
где USER_EMAIL - адрес электронной почты пользователя (здесь может быть любой комментарий о пользователе); USERNAME - имя файлов ключей (USERNAME - для файла секретного ключа и USERNAME.pub - для файла публичного ключа).
Файл публичного ключа нужно передать на сервер каким-либо способом. Например, до активации параметров PubkeyAuthentication, AuthorizedKeysFile, PasswordAuthentication и ChallengeResponseAuthentication выполнить:
Будет запрошен пароль пользователя, а при успешном выполнении команды вы увидите что-то подобное:
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/USERNAME/USERNAME.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
(USERNAME@SERVER_IP) Password for USERNAME@SERVER_IP:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh -p '2214' 'USERNAME@SERVER_IP'"
and check to make sure that only the key(s) you wanted were added.
В итоге, открытый ключ пользователя будет записан в файл /home/USERNAME/.ssh/authorized_keys на сервере. Если вы собираетесь активировать опцию OpenSSH AuthorizedKeysFile, то на сервере от имени root перенесите файл открытого ключа в директорию пользовательских ключей, установите пользователя владельцем и также установите ограниченные права на этот файл:
mkdir /etc/ssh/authorized-keys
mv /home/USERNAME/.ssh/authorized_keys /etc/ssh/authorized-keys/USERNAME
chown USERNAME:USERNAME /etc/ssh/authorized-keys/USERNAME
chmod 400 /etc/ssh/authorized-keys/USERNAME
После этого можно активировать опции PubkeyAuthentication, AuthorizedKeysFile, PasswordAuthentication и ChallengeResponseAuthentication в конфигурации OpenSSH.
Подключиться к серверу теперь можно командой:
Обратите внимание на то, что
/home/USERNAME/USERNAME- имя файла секретного ключа, который хранится у пользователя.
Темы настройки OpenSSH, которые заслуживают отдельного рассмотрения
- туннелирование и переадресация;
- использование сертификатов и PKI;
- FIDO-аутентификация.
Дополнительные материалы
- Усиление защиты OpenSSH в Ubuntu 18.04
- Служба sshd - OpenSSH, сервер протокола SSH, описание
- sshd_config - How to Configure the OpenSSH Server?
- Конфигурационный файл SSHD_CONFIG
Полный перечень параметров OpenSSH
sshd считывает данные конфигурации из /etc/ssh/sshd_config (или файла, указанного в командной строке с помощью параметра -f). Файл содержит пары "ключевое слово-аргумент", по одной на строку. Если не указано иное, для каждого ключевого слова будет использоваться первое полученное значение. Строки, начинающиеся с # и пустые строки интерпретируются как комментарии. Аргументы дополнительно могут быть заключены в двойные кавычки "" для представления аргументов, содержащих пробелы.
Обратите внимание, что ключевые слова не учитывают регистр, а аргументы - регистрозависимы.
Возможные ключевые слова и их значения:
AcceptEnv
Указывает, какие переменные окружения, отправленные клиентом, будут скопированы в среду сеанса. Смотрите разделы SendEnv и SetEnv в ssh_config о том, как настроить клиент. Переменная окружения TERM всегда принимается всякий раз, когда клиент запрашивает псевдотерминал, как того требует протокол. Переменные задаются по имени, которое может содержать подстановочные знаки * и ?. Несколько переменных окружения могут быть разделены пробелами или распределены по нескольким директивам AcceptEnv.
Имейте в виду, что некоторые переменные среды могут использоваться для обхода пользовательских сред с ограниченным доступом. По этой причине следует соблюдать осторожность при использовании данной директивы. По-умолчанию не принимаются никакие переменные окружения.
AddressFamily
Указывает, какое семейство адресов должно использоваться sshd. Допустимыми аргументами являются any (по-умолчанию), inet (только IPv4) или inet6 (только IPv6).
AllowAgentForwarding
Функция переадресации агента позволяет вашему локальному агенту ssh связаться через существующее ssh-соединение и прозрачно аутентифицироваться на удаленном сервере.
Параметр AllowAgentForwarding указывает, разрешена ли переадресация ssh-agent. Значение по-умолчанию - yes. Обратите внимание, что отключение переадресации агента не повышает безопасность, если только пользователям также не отказано в доступе к командной строке, поскольку они всегда могут установить свои собственные переадресаторы.
AllowGroups
За этим ключевым словом может следовать список шаблонов имен групп, разделенных пробелами. Если это указано, вход в систему разрешен только для пользователей указанных групп. Допустимы только названия групп, числовой идентификатор группы не распознается. По-умолчанию вход в систему разрешен для всех групп. Директивы allow/deny обрабатываются в следующем порядке: DenyGroups, AllowGroups.
Смотрите "шаблоны" в описании ssh_config для получения дополнительной информации о шаблонах. Это ключевое слово может появляться в sshd_config несколько раз, при этом каждый экземпляр добавляется в список.
AllowStreamLocalForwarding
Указывает, разрешена ли локальная переадресация сокета домена Unix. Доступные опции: yes (по-умолчанию) или all, чтобы разрешить потоковую переадресацию, no - запретить всю потоковую локальную переадресацию, local - разрешить только локальную (с точки зрения ssh) переадресацию, или remote - разрешить только удаленную переадресацию.
Обратите внимание, что отключение локальной переадресации потоков не повышает безопасность, если только пользователям также не отказано в доступе к оболочке, поскольку они всегда могут установить свои собственные переадресаторы.
AllowTcpForwarding
Указывает, разрешена ли переадресация TCP. Доступные параметры: yes (по-умолчанию) или all, чтобы разрешить переадресацию TCP, no - запретить всю переадресацию TCP, local - разрешить только локальную (с точки зрения ssh) переадресацию, или remote - разрешить только удаленную переадресацию. Обратите внимание, что отключение переадресации TCP не повышает безопасность, если только пользователям также не отказано в доступе к оболочке, поскольку они всегда могут установить свои собственные средства переадресации.
AllowUsers
За этим ключевым словом может следовать список шаблонов имен пользователей, разделенных пробелами. Если указано, вход в систему разрешен только для имен пользователей, соответствующих одному из шаблонов. Допустимы только имена пользователей, а числовой идентификатор пользователя не распознается. По-умолчанию вход в систему разрешен для всех пользователей. Если шаблон принимает форму USER@HOST, то USER и HOST проверяются отдельно, ограничивая вход в систему определенными пользователями с определенных хостов. HOST может дополнительно содержать адрес для сопоставления в формате CIDR. Директивы allow/deny обрабатываются в следующем порядке: DenyUsers, AllowUsers.
Смотрите "шаблоны" в описании ssh_config для получения дополнительной информации о шаблонах. Это ключевое слово может появляться в sshd_config несколько раз, при этом каждый экземпляр добавляется в список.
AuthenticationMethods
Указывает методы аутентификации, которые должны быть успешно завершены, чтобы пользователю был предоставлен доступ. За этим параметром должен следовать один или несколько списков имен методов аутентификации, разделенных запятыми, или одна строка any, указывающая на поведение по-умолчанию при принятии любого отдельного метода аутентификации. Если значение по-умолчанию переопределено, то для успешной аутентификации требуется завершение каждого метода по крайней мере в одном из этих списков.
Например, значение "publickey, password publickey, keyboard-interactive" потребует от пользователя завершения аутентификации по открытому ключу, за которой последует либо аутентификация по паролю, либо интерактивная аутентификация с клавиатуры. На каждом этапе указываются методы, которые будут следующими в списке, поэтому в этом примере было бы невозможно выполнить попытку аутентификации с использованием пароля или интерактивной клавиатуры перед использованием открытого ключа.
Для интерактивной аутентификации с клавиатуры также возможно ограничить аутентификацию определенным устройством, добавив двоеточие, за которым следует идентификатор устройства bsdauth или pam. в зависимости от конфигурации сервера. Например, значение "keyboard-interactive:bsdauth" ограничит интерактивную аутентификацию с клавиатуры устройством bsdauth.
Если метод publickey указан более одного раза, sshd проверяет, что успешно использованные ключи повторно не используются для последующих этапов. Например, значение "publickey, publickey" требует успешной аутентификации с использованием двух разных открытых ключей.
Обратите внимание, что каждый из перечисленных методов аутентификации также должен быть явно включен в конфигурации.
Доступные методы аутентификации:
gssapi-with-michostbasedkeyboard-interactivenone(используется для доступа к учетным записям без пароля, когда включенPermitEmptyPasswords)passwordpublickey
AuthorizedKeysCommand
Указывает программу, которая будет использоваться для поиска открытых ключей пользователя. Программа должна принадлежать root, быть недоступна для записи группе или другими пользователям и указана абсолютным путем. Аргументы принимают токены, описанные в разделе Токены. Если аргументы не указаны, то используется имя целевого пользователя.
Программа должна выдавать в стандартный вывод ноль или более строк вывода из authorized_keys (см. "AUTHORIZED_KEYS" в sshd). Команда AuthorizedKeysCommand выполняется после команды AuthorizedKeysFile и не будет выполнена, если до этого будет найден соответствующий ключ. По-умолчанию команда AuthorizedKeysCommand не выполняется.
AuthorizedKeysCommandUser
Указывает пользователя, под чьей учетной записью выполняется команда AuthorizedKeysCommand. Рекомендуется использовать выделенного пользователя, у которого нет другой роли на хосте, кроме выполнения этой команды. Если указана AuthorizedKeysCommand, но не указан AuthorizedKeysCommandUser, то sshd откажется запускаться.
AuthorizedKeysFile
Указывает файл, содержащий открытые ключи, используемые для аутентификации пользователя. Формат описан в разделе "фрмат" файла authorized_keys в описании sshd. Аргументы AuthorizedKeysFile принимают токены, описанные в разделе Токены. AuthorizedKeysFile принимается за абсолютный путь или относительный к домашнему каталогу пользователя. В списке может быть указано несколько файлов, разделенных пробелами. В качестве альтернативы для этой опции может быть установлено значение none, чтобы пропустить проверку наличия пользовательских ключей в файлах. Значение по-умолчанию - .ssh/authorized_keys .ssh/authorized_keys2.
AuthorizedPrincipalsCommand
Указывает программу, которая будет использоваться для создания списка разрешенных участников (principals) сертификата в соответствии с файлом AuthorizedPrincipalsFile. Программа должна принадлежать root, быть недоступна для записи группе или другим пользователям и указана абсолютным путем. Аргументы команды принимают токены, описанные в разделе Токены. Если аргументы не указаны, то используется имя целевого пользователя.
Программа должна выдавать в стандартный вывод ноль или более строк вывода AuthorizedPrincipalsFile. Если указано либо AuthorizedPrincipalsCommand, либо AuthorizedPrincipalsFile, то сертификаты, предлагаемые клиентом для аутентификации, должны содержать участника, который указан в списке. По-умолчанию команда AuthorizedPrincipalsCommand не выполняется.
AuthorizedPrincipalsCommandUser
Указывает пользователя, под чьей учетной записью выполняется команда AuthorizedPrincipalsCommand. Рекомендуется использовать выделенного пользователя, у которого нет другой роли на хосте, кроме выполнения команд авторизованных участников. Если указана AuthorizedPrincipalsCommand, но пользователь AuthorizedPrincipalsCommand не указан, то sshd откажется запускаться.
AuthorizedPrincipalsFile
Указывает файл, в котором перечислены имена участников, которые принимаются для проверки подлинности по сертификату. При использовании сертификатов, подписанных ключом, указанным в TrustedUserCAKeys, в этом файле перечисляются имена, одно из которых должно появиться в сертификате, чтобы оно было принято для проверки подлинности. Имена перечисляются по одному в строке, перед ними указаны параметры ключа (как описано в разделе "Формат файла authorized_keys" в sshd). Пустые строки и комментарии, начинающиеся с #, игнорируются.
Аргументы AuthorizedPrincipalsFile принимают токены, описанные в разделе "токены". AuthorizedPrincipalsFile принимается за абсолютный или относительный путь к домашнему каталогу пользователя. Значение по-умолчанию равно none, т.е. не использовать файл участников - в этом случае имя пользователя должно появиться в списке участников сертификата, чтобы оно было принято.
Обратите внимание, что AuthorizedPrincipalsFile используется только тогда, когда аутентификация выполняется с использованием центра сертификации, указанного в TrustedUserCAKeys, и не запрашивается для центров сертификации, которым доверяют через ~/.ssh/authorized_keys, хотя параметр principals=key предлагает аналогичную возможность (подробности смотрите в sshd).
Banner
Содержимое указанного в аргументе этой команды файла отправляется удаленному пользователю до того, как будет разрешена аутентификация. Если аргумент равен none, то баннер не отображается. По-умолчанию баннер не отображается.
CASignatureAlgorithms
Указывает, какие алгоритмы разрешены для подписи сертификатов центрами сертификации (CAS). Значение по-умолчанию равно: "ssh-ed25519,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,sk-ssh-ed25519@openssh.com,sk-ecdsa-sha2-nistp256@openssh.com,rsa-sha2-512,rsa-sha2-256"
Если указанный список начинается с символа +, то указанные алгоритмы будут добавлены к набору по-умолчанию вместо их замены. Если указанный список начинается с символа -, то указанные алгоритмы (включая подстановочные знаки) будут удалены из набора по-умолчанию вместо их замены.
Сертификаты, подписанные с использованием других алгоритмов, не будут приниматься для аутентификации с открытым ключом или на основе хоста.
ChannelTimeout
Протокол SSH требует, чтобы запросы на услуги на удаленном компьютере выполнялись по каналам. Одно SSH-соединение может содержать несколько каналов, все из которых работают одновременно по этому соединению. Естественно, это происходит не одновременно, они работают по принципу "разделения времени", разделяя полосу пропускания соединения. Тем не менее, тот факт, что эти каналы существуют, делает работу с протоколом SSH немного более сложной, чем с более простыми протоколами (такими как FTP, HTTP или Telnet).
ChannelTimeout указывает, следует ли и как быстро sshd будет закрывать неактивные каналы. Тайм-ауты задаются в виде одной или нескольких пар type=interval, разделенных пробелом, где type должно быть именем типа канала (как описано в таблице ниже), необязательно содержащим подстановочные знаки.
Значение тайм-аута interval указывается в секундах или может использоваться любая из единиц измерения, описанных в разделе "форматы времени". Например, session:*=5m приведет к завершению всех сеансов после пяти минут бездействия. Указание нулевого значения отключает тайм-аут бездействия.
Доступные типы каналов:
agent-connection: соединения ssh-agent;direct-tcpip,direct-streamlocal@openssh.com: соединения TCP или Unix сокетов, которые были установлены с помощью локальной переадресации, т.е. LocalForward или DynamicForward;forwarded-tcpip,forwarded-streamlocal@openssh.com: соединения TCP или Unix сокетов, которые были установлены для sshd, прослушивающего от имени ssh удаленной переадресации, т.е. RemoteForward;session:command: сеансы выполнения команд;session:shell: интерактивный сеанс;session:subsystem:...: сеансы подсистем, например для sftp, которые могут быть идентифицированы какsession:subsystem:sftp;x11-connection: сеансы переадресации X11.
Обратите внимание, что во всех вышеперечисленных случаях завершение неактивного сеанса не гарантирует удаление всех ресурсов, связанных с сеансом, например, процессы оболочки или клиенты X11, относящиеся к сеансу, могут продолжать выполняться.
Более того, завершение неактивного канала или сеанса не обязательно приводит к закрытию SSH-соединения и не мешает клиенту запрашивать другой канал того же типа. В частности, истечение срока действия неактивного сеанса переадресации не препятствует последующему созданию другого идентичного сеанса переадресации. Смотрите также UnusedConnectionTimeout, который может использоваться в сочетании с этой опцией.
По-умолчанию срок действия каналов любого типа не истекает из-за неактивности.
ChrootDirectory
Указывает путь к каталогу, к которому chroot будет подключен после проверки подлинности. При запуске сеанса sshd проверяет, что все компоненты пути являются корневыми каталогами, которые недоступны для записи никаким другим пользователям или группам. После chroot sshd изменяет рабочий каталог на домашний каталог пользователя. Аргументы для ChrootDirectory принимают токены, описанные в разделе "токены".
ChrootDirectory должен содержать необходимые файлы и каталоги для поддержки сеанса пользователя. Для интерактивного сеанса требуется, по крайней мере, оболочка, обычно sh, и базовые узлы /dev, такие как устройства null, zero, stdin, stdout, stderr и tty. Для сеансов передачи файлов с использованием SFTP не требуется дополнительной настройки среды, если используется sftp-сервер в процессе, хотя для сеансов, использующих ведение журнала, может потребоваться /dev/log внутри каталога chroot в некоторых операционных система.
В целях безопасности очень важно, чтобы иерархия каталогов была защищена от изменения другими процессами в системе (особенно теми, которые находятся за пределами контейнера (jail)). Неправильная настройка может привести к возникновению небезопасных сред, которые sshd не может обнаружить.
Значение по-умолчанию равно none, что указывает на отсутствие chroot.
Ciphers
Указывает разрешенные шифры. Несколько шифров должны быть разделены запятой. Если указанный список начинается с символа +, то указанные шифры будут добавлены к набору по-умолчанию вместо их замены. Если указанный список начинается с символа -, то указанные шифры (включая подстановочные знаки) будут удалены из набора по-умолчанию вместо их замены. Если указанный список начинается с символа ^, то указанные шифры будут помещены в начало набора по-умолчанию.
Поддерживаемые шифры:
3des-cbcaes128-cbcaes192-cbcaes256-cbcaes128-ctraes192-ctraes256-ctraes128-gcm@openssh.comaes256-gcm@openssh.comchacha20-poly1305@openssh.com
Набор шифров по-умолчанию: "chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com"
Список доступных шифров может быть получен по команде:
ClientAliveCountMax
Устанавливает количество проверок доступности клиента сервером, которые могут оставаться без ответа клиента. Если этот порог будет достигнут во время отправки сообщений "client alive", sshd отключит клиента, завершив сеанс. Важно отметить, что использование сообщений "client alive" сильно отличается от TCPKeepAlive. Сообщения "client alive" отправляются по зашифрованному каналу и, следовательно, не поддаются подделке. Механизм "client alive" полезен, когда клиент или сервер зависят от знания того, когда соединение перестало отвечать на запросы.
Значение по-умолчанию равно 3. Если ClientAliveInterval установлено равным 15, а ClientAliveCountMax оставлено на значении по-умолчанию, не отвечающие SSH-клиенты будут отключены примерно через 45 секунд. Установка значения 0 отключает завершение соединения.
ClientAliveInterval
Устанавливает интервал ожидания в секундах, по истечении которого, если от клиента не было получено никаких данных, sshd отправит сообщение по зашифрованному каналу, чтобы запросить ответ от клиента. Значение по-умолчанию равно 0, что указывает на то, что эти сообщения не будут отправлены клиенту.
Compression
Указывает, включено ли сжатие после успешной аутентификации пользователя. Аргументом должно быть yes, delayed (устаревший синоним yes) или no. Значение по-умолчанию - yes.
DenyGroups
За этим ключевым словом может следовать список шаблонов имен групп, разделенных пробелами. Вход в систему запрещен пользователям, список основных или дополнительных групп которых соответствует одному из шаблонов. Допустимы только названия групп, а числовой идентификатор группы не распознается. По-умолчанию вход в систему разрешен для всех групп. Директивы allow/deny обрабатываются в следующем порядке: DenyGroups, AllowGroups.
Смотрите "шаблоны" в ssh_config для получения дополнительной информации о шаблонах. Это ключевое слово может появляться в sshd_config несколько раз, при этом каждый экземпляр добавляется в список.
DenyUsers
За этим ключевым словом может следовать список шаблонов имен пользователей, разделенных пробелами. Вход в систему запрещен для имен пользователей, соответствующих одному из шаблонов. Допустимы только имена пользователей, а числовой идентификатор пользователя не распознается. По-умолчанию вход в систему разрешен для всех пользователей. Если шаблон принимает форму USER@HOST, то USER и HOST проверяются отдельно, ограничивая вход в систему определенными пользователями с определенных хостов. Критерии HOST могут дополнительно содержать адреса для сопоставления в формате CIDR address/masklen. Директивы allow/deny обрабатываются в следующем порядке: DenyUsers, AllowUsers.
Смотрите "шаблоны" в ssh_config для получения дополнительной информации о шаблонах. Это ключевое слово может появляться в sshd_config несколько раз, при этом каждый экземпляр добавляется в список.
DisableForwarding
Отключает функции переадресации вызовов, включая X11, ssh-агент, TCP и StreamLocal. Этот параметр переопределяет все другие параметры, связанные с переадресацией, и может упростить настройки с ограниченным доступом.
Доступны значения yes и no.
ExposeAuthInfo
Записывает временный файл, содержащий список методов аутентификации и общедоступных учетных данных (например, ключей), используемых для аутентификации пользователя. Местоположение файла доступно сеансу пользователя через переменную окружения SSH_USER_AUTH. Значение по-умолчанию - no.
FingerprintHash
Определяет алгоритм хэширования, используемый при регистрации отпечатков ключей. Допустимыми параметрами являются: md5 и sha256. Значение по-умолчанию - sha256.
ForceCommand
Принудительно выполняет команду, указанную ForceCommand, игнорируя любую команду, предоставленную клиентом, и ~/.ssh/rc, если присутствует. Команда вызывается с помощью оболочки входа пользователя в систему с параметром -c. Это относится к выполнению оболочки, команды или подсистемы. Это наиболее полезно внутри блока Match. Команда, первоначально предоставленная клиентом, доступна в переменной окружения SSH_ORIGINAL_COMMAND. Указание команды internal-sftp приведет к принудительному использованию внутрипроцессного SFTP-сервера, который не требует файлов поддержки при использовании с ChrootDirectory. Значение по-умолчанию - no.
GatewayPorts
Указывает, разрешено ли удаленным узлам подключаться к портам, перенаправленным для клиента. По-умолчанию sshd привязывает переадресацию удаленных портов к обратному адресу. Это предотвращает подключение других удаленных хостов к переадресованным портам. GatewayPorts можно использовать для указания того, что sshd должен разрешать привязку удаленной переадресации портов к адресам без обратной связи, что позволяет подключаться другим хостам. Аргументом может быть no, чтобы принудительная переадресация удаленных портов была доступна только локальному хосту, yes, чтобы принудительная переадресация удаленных портов привязывалась к подстановочному адресу, или clientspecified, чтобы позволить клиенту выбрать адрес, к которому привязана переадресация. Значение по-умолчанию - no.
GSSAPIAuthentication
Указывает, разрешена ли аутентификация пользователя на основе GSSAPI. Значение по-умолчанию - no.
GSSAPICleanupCredentials
Указывает, следует ли автоматически уничтожать кэш учетных данных пользователя при выходе из системы. Значение по-умолчанию - yes.
GSSAPIStrictAcceptorCheck
Определяет, следует ли строго относиться к идентификации акцептора GSSAPI, с которым клиент проходит аутентификацию. Если установлено значение yes, то клиент должен пройти аутентификацию в службе хоста по текущему имени хоста. Если установлено значение no, то клиент может пройти аутентификацию по любому служебному ключу, хранящемуся в хранилище компьютера по-умолчанию. Это средство предназначено для облегчения работы на машинах с несколькими домами. Значение по-умолчанию - yes.
HostbasedAcceptedAlgorithms
Определяет алгоритмы подписи, которые будут приниматься для аутентификации на основе хоста, в виде списка шаблонов, разделенных запятыми. С другой стороны, если указанный список начинается с символа +, то указанные алгоритмы подписи будут добавлены к набору по-умолчанию вместо их замены. Если указанный список начинается с символа -, то указанные алгоритмы подписи (включая подстановочные знаки) будут удалены из набора по-умолчанию вместо их замены. Если указанный список начинается с символа ^, то указанные алгоритмы подписи будут помещены в начало набора по-умолчанию. Значение по-умолчанию для этого параметра равно:
ssh-ed25519-cert-v01@openssh.comecdsa-sha2-nistp256-cert-v01@openssh.comecdsa-sha2-nistp384-cert-v01@openssh.comecdsa-sha2-nistp521-cert-v01@openssh.comsk-ssh-ed25519-cert-v01@openssh.comsk-ecdsa-sha2-nistp256-cert-v01@openssh.comrsa-sha2-512-cert-v01@openssh.comrsa-sha2-256-cert-v01@openssh.comssh-rsa-cert-v01@openssh.comssh-ed25519ecdsa-sha2-nistp256ecdsa-sha2-nistp384ecdsa-sha2-nistp521sk-ssh-ed25519@openssh.comsk-ecdsa-sha2-nistp256@openssh.comrsa-sha2-512rsa-sha2-256ssh-rsa
Список доступных алгоритмов подписи также можно получить с помощью команды:
Ранее это называлось принятыми типами ключей на основе хоста.
HostbasedAuthentication
Указывает, разрешена ли аутентификация rhosts или /etc/hosts.equiv вместе с успешной аутентификацией хоста клиента с открытым ключом (аутентификация на основе хоста). Значение по-умолчанию - no.
HostbasedUsesNameFromPacketOnly
Указывает, будет ли сервер пытаться выполнить обратный поиск имени при сопоставлении имени в файлах ~/.shosts, ~/.rhosts и /etc/hosts.equiv при использовании HostbasedAuthentication. Значение yes означает, что sshd использует имя, предоставленное клиентом, вместо того, чтобы пытаться разрешить имя из самого TCP-соединения. Значение по-умолчанию - no.
HostCertificate
Указывает файл, содержащий общедоступный сертификат хоста. Открытый ключ сертификата должен соответствовать закрытому ключу хоста, уже указанному в HostKey. Поведение sshd по-умолчанию заключается в том, что он не загружает никаких сертификатов.
HostKey
Указывает файл, содержащий закрытый ключ хоста, используемый SSH. Значения по-умолчанию:
/etc/ssh/ssh_host_ecdsa_key/etc/ssh/ssh_host_ed25519_key/etc/ssh/ssh_host_rsa_key
Обратите внимание, что sshd откажется использовать файл, если он доступен группе или "миру", и что параметр HostKeyAlgorithms ограничивает, какие из ключей фактически используются sshd.
Возможно наличие нескольких файлов ключей хоста. Вместо этого также можно указать файлы открытых ключей хоста. В этом случае операции с закрытым ключом будут делегированы ssh-агенту.
HostKeyAgent
Определяет сокет домена UNIX, используемый для связи с агентом, имеющим доступ к закрытым ключам хоста. Если указана строка "SSH_AUTH_SOCK", местоположение сокета будет считано из переменной окружения SSH_AUTH_SOCK.
HostKeyAlgorithms
Определяет алгоритмы подписи ключа хоста, предлагаемые сервером. Значение по-умолчанию для этого параметра равно:
ssh-ed25519-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-ssh-ed25519-cert-v01@openssh.com
sk-ecdsa-sha2-nistp256-cert-v01@openssh.com
rsa-sha2-512-cert-v01@openssh.com
rsa-sha2-256-cert-v01@openssh.com
ssh-rsa-cert-v01@openssh.com
ssh-ed25519
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
sk-ssh-ed25519@openssh.com
sk-ecdsa-sha2-nistp256@openssh.com
rsa-sha2-512
rsa-sha2-256
ssh-rsa
Список доступных алгоритмов подписи также можно получить с помощью команды:
IgnoreRhosts
Указывает, следует ли игнорировать файлы .rhosts и .shosts для каждого пользователя во время проверки подлинности HostbasedAuthentication. Общесистемные /etc/hosts.equiv и /etc/ssh/shosts.equiv по-прежнему используются независимо от этого параметра.
Допустимые значения - yes (по-умолчанию) для игнорирования всех пользовательских файлов; ghosts-only для разрешения использования .ghosts, но для игнорирования .rhosts или no, чтобы разрешить оба .shosts и .rhosts.
IgnoreUserKnownHosts
Указывает, должен ли sshd игнорировать ~/.ssh/known_hosts пользователя во время проверки подлинности на основе HostbasedAuthentication и использовать только общесистемный файл известных хостов /etc/ssh/ssh_known_hosts. Значение по-умолчанию - no.
Include
Включить указанный файл конфигурации. Может быть указано несколько имен и каждое имя может содержать глобальные подстановочные знаки, которые будут расширены и обработаны в лексическом порядке. Предполагается, что файлы без абсолютных путей находятся в /etc/ssh. Директива Include может появиться внутри блока сопоставления для выполнения условного включения.
IPQoS
Определяет тип обслуживания IPv4 или класс DSCP для подключения. Допустимыми значениями являются:
af11af12af13af21af22af23af31af32af33af41af42af43cs0cs1cs2cs3cs4cs5cs6cs7eflelowdelaythroughputreliabillity- числовое значение
noneдля использования значения по-умолчанию.
Этот параметр может принимать один или два аргумента, разделенных пробелом. Если указан один аргумент, он безоговорочно используется в качестве класса пакета. Если заданы два значения, то первое автоматически выбирается для интерактивных сеансов, а второе - для неинтерактивных сеансов. Значение по-умолчанию - af21 (Low-Latency Data) для интерактивных сеансов и cs1 (Lower Effort) для неинтерактивных сеансов.
KbdInteractiveAuthentication
Указывает, разрешать ли аутентификацию с использованием клавиатуры. Поддерживаются все стили аутентификации из login.conf. Значение по-умолчанию - yes. Аргументом для этого ключевого слова должно быть yes или no. ChallengeResponseAuthentication является устаревшим псевдонимом для этого.
KerberosAuthentication
Указывает, будет ли пароль, указанный пользователем при PasswordAuthentication, проверяться с помощью Kerberos KDC. Чтобы использовать эту опцию, серверу требуется Kerberos srvtab, который позволяет проверять личность KDC. Значение по-умолчанию - no.
KerberosGetAFSToken
Если AFS активен и у пользователя есть Kerberos 5 TGT, пытается получить токен AFS, прежде чем обращаться к домашнему каталогу пользователя. Значение по-умолчанию - no.
KerberosOrLocalPasswd
Если аутентификация по паролю через Kerberos завершится неудачей, то пароль будет проверен с помощью любого дополнительного локального механизма, такого как /etc/passwd. Значение по-умолчанию - yes.
KerberosTicketCleanup
Указывает, следует ли автоматически уничтожать файл кэша заявок пользователя при выходе из системы. Значение по-умолчанию - yes.
KexAlgorithms
Определяет доступные алгоритмы KEX (обмена ключами). Несколько алгоритмов должны быть разделены запятыми. С другой стороны, если указанный список начинается с символа +, то указанные алгоритмы будут добавлены к набору по-умолчанию вместо их замены. Если указанный список начинается с символа -, то указанные алгоритмы (включая подстановочные знаки) будут удалены из набора по-умолчанию вместо их замены. Если указанный список начинается с символа ^, то указанные алгоритмы будут помещены в начало набора по-умолчанию. Поддерживаемыми алгоритмами являются:
curve25519-sha256curve25519-sha256@libssh.orgdiffie-hellman-group1-sha1diffie-hellman-group14-sha1diffie-hellman-group14-sha256diffie-hellman-group16-sha512diffie-hellman-group18-sha512diffie-hellman-group-exchange-sha1diffie-hellman-group-exchange-sha256ecdh-sha2-nistp256ecdh-sha2-nistp384ecdh-sha2-nistp521sntrup761x25519-sha512@openssh.com
Значение по-умолчанию:
sntrup761x25519-sha512@openssh.com
curve25519-sha256
curve25519-sha256@libssh.org
ecdh-sha2-nistp256
ecdh-sha2-nistp384
ecdh-sha2-nistp521
diffie-hellman-group-exchange-sha256
diffie-hellman-group16-sha512
diffie-hellman-group18-sha512
diffie-hellman-group14-sha256
Список доступных алгоритмов обмена ключами также можно получить с помощью команды:
ListenAddress
Указывает локальные адреса, которые должен прослушивать sshd. Могут быть использованы следующие формы:
ListenAddress hostname|address [rdomain domain]ListenAddress hostname:port [rdomain domain]ListenAddress IPv4_address:port [rdomain domain]ListenAddress [hostname|address]:port [rdomain domain]
Если порт не указан, sshd будет прослушивать указанный адрес и все указанные параметры порта. По-умолчанию выполняется прослушивание всех локальных адресов в текущем домене. Допускается несколько вариантов адреса прослушивания. Дополнительные сведения о доменах маршрутизации см. в разделе "домен".
LoginGraceTime
По истечении этого времени соединение закрывается, если пользователь не успел выполнить успешный вход в систему. Если значение равно 0, то ограничения по времени нет. Значение по-умолчанию равно 120 секундам.
LogLevel
Задает уровень детализации, который используется при протоколировании сообщений с sshd. Возможные значения:
QUIETFATALERRORINFOVERBOSEDEBUGDEBUG1DEBUG2DEBUG3
Значение по-умолчанию - INFO. DEBUG и DEBUG1 эквивалентны. DEBUG2 и DEBUG3 задают более высокие уровни вывода отладочных данных.
Ведение журнала на уровне отладки нарушает конфиденциальность пользователей и не рекомендуется.
LogVerbose
Указывает одно или несколько переопределений для LogLevel. Переопределение состоит из списков шаблонов, которые соответствуют исходному файлу, функции и номеру строки для принудительного ведения подробного журнала. Например, шаблон переопределения:
kex.c:*:1000,*:kex_exchange_identification():*,packet.c:*
включает подробное ведение журнала для строки 1000 файла kex.c, всего содержимого функции kex_exchange_identification() и всего кода в файле packet.c. Этот параметр предназначен для отладки, и по-умолчанию никакие переопределения не включены.
MACs
Определяет доступные алгоритмы аутентификации сообщений. Алгоритм MAC используется для защиты целостности данных. Несколько алгоритмов должны быть разделены запятыми. Если указанный список начинается с символа +, то указанные алгоритмы будут добавлены к набору по-умолчанию вместо их замены. Если указанный список начинается с символа -, то указанные алгоритмы (включая подстановочные знаки) будут удалены из набора по-умолчанию вместо их замены. Если указанный список начинается с символа ^, то указанные алгоритмы будут помещены в начало набора по-умолчанию. Алгоритмы, содержащие -etm, вычисляют MAC-адрес после шифрования (encrypt-then-mac). Они считаются более безопасными, и их использование рекомендуется. Поддерживаемыми алгоритмами являются:
hmac-md5hmac-md5-96hmac-sha1hmac-sha1-96hmac-sha2-256hmac-sha2-512umac-64@openssh.comumac-128@openssh.comhmac-md5-etm@openssh.comhmac-md5-96-etm@openssh.comhmac-sha1-etm@openssh.comhmac-sha1-96-etm@openssh.comhmac-sha2-256-etm@openssh.comhmac-sha2-512-etm@openssh.comumac-64-etm@openssh.comumac-128-etm@openssh.com
Значение по-умолчанию:
umac-64-etm@openssh.com
umac-128-etm@openssh.com
hmac-sha2-256-etm@openssh.com
hmac-sha2-512-etm@openssh.com
hmac-sha1-etm@openssh.com
umac-64@openssh.com
umac-128@openssh.com
hmac-sha2-256
hmac-sha2-512,hmac-sha1
Список доступных MAC-алгоритмов также можно получить с помощью команды:
Match
Вводит условный блок. Если все критерии в строке соответствия выполнены, ключевые слова в следующих строках переопределяют ключевые слова, заданные в глобальном разделе конфигурационного файла, либо до другой строки соответствия, либо до конца файла. Если ключевое слово появляется в нескольких блоках совпадений, которые удовлетворяют требованиям, применяется только первый экземпляр ключевого слова.
Аргументами Match являются одна или несколько пар критериев-шаблонов или один токен all, который соответствует всем критериям. Доступными критериями являются User, Group, Host, LocalAddress, LocalPort, Domain и Address (при этом Domain представляет rdomain, по которому было получено соединение).
Шаблоны Match могут состоять из отдельных записей или списков, разделенных запятыми, и могут использовать операторы подстановки и отрицания, описанные в разделе "шаблоны" ssh_config.
Шаблоны в Address могут дополнительно содержать адреса для сопоставления в формате CIDR address/masklen, например 192.0.2.0/24 или 2001:db8::/32. Обратите внимание, что указанная длина маски должна соответствовать адресу - указание длины маски, которая слишком велика для адреса, или длины с битами, установленными в этой части адреса хоста, является ошибкой. Например, 192.0.2.0/33 и 192.0.2.0/8 соответственно.
В строках, следующих за Match, может использоваться только подмножество ключевых слов. Доступны следующие ключевые слова:
AcceptEnvAllowAgentForwardingAllowGroupsAllowStreamLocalForwardingAllowTcpForwardingAllowUsersAuthenticationMethodsAuthorizedKeysCommandAuthorizedKeysCommandUserAuthorizedKeysFileAuthorizedPrincipalsCommandAuthorizedPrincipalsCommandUserAuthorizedPrincipalsFileBannerCASignatureAlgorithmsChannelTimeoutChrootDirectoryClientAliveCountMaxClientAliveIntervalDenyGroupsDenyUsersDisableForwardingExposeAuthInfoForceCommandGatewayPortsGSSAPIAuthenticationHostbasedAcceptedAlgorithmsHostbasedAuthenticationHostbasedUsesNameFromPacketOnlyIgnoreRhostsIncludeIPQoSKbdInteractiveAuthenticationKerberosAuthenticationLogLevelMaxAuthTriesMaxSessionsPasswordAuthenticationPermitEmptyPasswordsPermitListenPermitOpenPermitRootLoginPermitTTYPermitTunnelPermitUserRCPubkeyAcceptedAlgorithmsPubkeyAuthenticationPubkeyAuthOptionsRekeyLimitRevokedKeysRDomainSetEnvStreamLocalBindMaskStreamLocalBindUnlinkTrustedUserCAKeysUnusedConnectionTimeoutX11DisplayOffsetX11ForwardingX11UseLocalhost
MaxAuthTries
Указывает максимальное количество попыток аутентификации, разрешенных для каждого подключения. Как только количество сбоев достигает половины этого значения, регистрируются дополнительные сбои. Значение по-умолчанию равно 6.
MaxSessions
Указывает максимальное количество сеансов открытой оболочки, входа в систему или подсистемы (например, sftp), разрешенных для каждого сетевого подключения. Клиенты, поддерживающие мультиплексирование соединений, могут устанавливать несколько сеансов. Установка значения MaxSessions равным 1 фактически отключит мультиплексирование сеансов, в то время как установка значения 0 предотвратит все сеансы оболочки, входа в систему и подсистемы, по-прежнему разрешая переадресацию. Значение по-умолчанию равно 10.
MaxStartups
Указывает максимальное количество одновременных не прошедших проверку подлинности подключений к демону SSH. Дополнительные подключения будут отключены до тех пор, пока проверка подлинности не завершится успешно или не истечет время входа в систему для подключения (LoginGraceTime). Значение по-умолчанию - 10:30:100.
В качестве альтернативы можно включить случайное раннее удаление, указав три значения, разделенных двоеточием, start:rate:full (например, 10:30:60). sshd отклонит попытки подключения с вероятностью rate/100 (30%), если в данный момент запущено 10 не прошедших проверку подлинности подключений. Вероятность линейно возрастает, и все попытки подключения отклоняются, если количество не прошедших проверку подлинности подключений достигает полного значения 60.
ModuliFile
Указывает файл модуля, содержащий группы Диффи-Хеллмана, используемые для методов обмена ключами diffie-hellman-group-exchange-sha1 и diffie-hellman-group-exchange-sha256. Значение по-умолчанию - /etc/moduli.
PasswordAuthentication
Указывает, разрешена ли аутентификация по паролю. Обратите внимание, что пароли также могут приниматься с помощью KbdInteractiveAuthentication. Смотрите также UsePAM. Значение по-умолчанию - no.
PermitEmptyPasswords
Когда разрешена аутентификация по паролю, это указывает, разрешает ли сервер входить в учетные записи с пустыми строками паролей. Значение по-умолчанию - no.
PermitListen
Указывает адреса и порты, по которым может прослушиваться удаленная переадресация TCP-портов. Спецификация прослушивания должна иметь одну из следующих форм:
PermitListen portPermitListen host:port
Можно указать несколько разрешений, разделив их пробелом. Аргумент any может быть использован для снятия всех ограничений и разрешения любых запросов на прослушивание. Аргумент none может быть использован для запрета всех запросов на прослушивание. Имя хоста может содержать подстановочные знаки, как описано в разделе "шаблоны" в ssh_config. Подстановочный знак * также может использоваться вместо номера порта, чтобы разрешить доступ ко всем портам. По-умолчанию разрешены все запросы на прослушивание переадресации портов. Обратите внимание, что опция GatewayPorts может дополнительно ограничить, какие адреса могут прослушиваться. Обратите также внимание, что ssh запросит хост прослушивания localhost, если специально не запрашивался хост прослушивания, и это имя обрабатывается иначе, чем явные адреса localhost, 127.0.0.1 и ::1.
PermitOpen
Указывает пункты назначения, на которые разрешена переадресация TCP-портов. Спецификация переадресации должна быть в одной из следующих форм:
PermitOpen host:portPermitOpen IPv4_addr:portPermitOpen [IPv6_addr]:port
Можно указать несколько переадресаций, разделив их пробелом. Аргумент any может быть использован для снятия всех ограничений и разрешения любых запросов на переадресацию. Аргумент none может быть использован для запрета всех запросов на переадресацию. Подстановочный знак * может использоваться для хоста или порта, чтобы разрешить доступ ко всем хостам или портам соответственно. В противном случае сопоставление с образцом или поиск адресов по указанным именам не выполняются. По-умолчанию разрешены все запросы на переадресацию портов.
PermitRootLogin
Указывает, может ли root войти в систему с помощью ssh. Аргументом должно быть yes, prohibit-password, force-commands-only или no. Значение по-умолчанию - no. Обратите внимание, что если установлено ChallengeResponseAuthentication и используется PAM, этот параметр может быть переопределен политикой PAM.
Если для этого параметра установлено значение prohibit-password (или его устаревший псевдоним, without-password), аутентификация по паролю и с помощью клавиатуры отключена для root.
Если для этой опции установлено значение force-commands-only, будет разрешен вход root с аутентификацией по открытому ключу, но только в том случае, если был указан параметр command (что может быть полезно для создания удаленных резервных копий, даже если вход root обычно запрещен). Все остальные методы аутентификации отключены для root.
Если для этого параметра установлено значение no, пользователю root не разрешается входить в систему.
PermitTTY
Указывает, разрешено ли распределение pty. Значение по-умолчанию - yes.
PermitTunnel
Указывает, разрешена ли переадресация устройства tun. Аргументом должно быть yes, point-to-point (layer 3), ethernet (level 2) или no. Указание yes разрешает как соединение point-to-point, так и ethernet. Значение по-умолчанию - no.
Независимо от этого параметра разрешения выбранного устройства tun должны разрешать доступ пользователю.
PermitUserEnvironment
Указывает, обрабатываются ли параметры ~/.ssh/environment и environment= в ~/.ssh/authorized_keys с помощью sshd. Допустимыми параметрами являются yes, no или pattern-list, указывающий, какие имена переменных окружения принимать (например, LANG,LC_*). Значение по-умолчанию - no. Включение обработки в среде может позволить пользователям обходить ограничения доступа в некоторых конфигурациях, используя такие механизмы, как LD_PRELOAD.
PermitUserRC
Указывает, выполняется ли какой-либо файл ~/.ssh/rc. Значение по-умолчанию - yes.
PerSourceMaxStartups
Указывает количество не прошедших проверку подлинности подключений, разрешенных с заданного исходного адреса, или none, если ограничений нет. Это ограничение применяется в дополнение к MaxStartups, в зависимости от того, какое значение меньше. Значение по-умолчанию - none.
PerSourceNetBlockSize
Указывает количество битов исходного адреса, которые группируются вместе для целей применения ограничений PerSourceMaxStartups. Могут быть указаны значения для IPv4 и, необязательно, IPv6, разделенные двоеточием. Значение по-умолчанию равно 32:128, что означает, что каждый адрес рассматривается индивидуально.
PidFile
Указывает файл, содержащий идентификатор процесса SSH-демона, или none, чтобы не записывать его. Значение по-умолчанию - /var/run/sshd.pid.
Port
Указывает номер порта, который прослушивает sshd. Значение по-умолчанию равно 22. Допускается несколько вариантов этого типа. Смотрите также ListenAddress.
PrintLastLog
Указывает, должен ли sshd печатать дату и время последнего входа пользователя в систему, когда пользователь входит в систему в интерактивном режиме. Значение по-умолчанию - yes.
PrintMotd
Указывает, должен ли sshd печатать файл /etc/motd при интерактивном входе пользователя в систему. (В некоторых системах он также печатается оболочкой, /etc/profile или эквивалентом). Значение по-умолчанию - yes.
PubkeyAcceptedAlgorithms
Определяет алгоритмы подписи, которые будут приниматься для аутентификации с открытым ключом, в виде списка шаблонов, разделенных запятыми. Если указанный список начинается с символа +, то указанные алгоритмы будут добавлены к набору по-умолчанию вместо их замены. Если указанный список начинается с символа -, то указанные алгоритмы (включая подстановочные знаки) будут удалены из набора по-умолчанию вместо их замены. Если указанный список начинается с символа ^, то указанные алгоритмы будут помещены в начало набора по-умолчанию. Значение по-умолчанию для этого параметра равно:
ssh-ed25519-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-ssh-ed25519-cert-v01@openssh.com
sk-ecdsa-sha2-nistp256-cert-v01@openssh.com
rsa-sha2-512-cert-v01@openssh.com
rsa-sha2-256-cert-v01@openssh.com
ssh-rsa-cert-v01@openssh.com
ssh-ed25519
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
sk-ssh-ed25519@openssh.com
sk-ecdsa-sha2-nistp256@openssh.com
rsa-sha2-512
rsa-sha2-256
ssh-rsa
Список доступных алгоритмов подписи также можно получить с помощью команды:
PubkeyAuthOptions
Устанавливает один или несколько параметров аутентификации с открытым ключом. Поддерживаемые ключевые слова: none (по-умолчанию; указывает, что дополнительные опции не включены), touch-required и verify-required.
Параметр touch-required приводит к тому, что аутентификация с использованием открытого ключа с использованием алгоритма аутентификации FIDO (Fast IDentity Online) (например, ecdsa-sk или ed25519-sk) всегда требует подписи для подтверждения того, что физически присутствующий пользователь явно подтвердил аутентификацию (обычно "прикосновением" к аутентификатору). По-умолчанию sshd требует присутствия пользователя, если только он не переопределен параметром authorized_keys. Флажок touch-required отключает это переопределение.
Для параметра verify-required требуется подпись ключа FIDO, подтверждающая, что пользователь был верифицирован, например, с помощью PIN-кода.
Ни параметр touch-required, ни verify-required не имеют никакого эффекта для других типов открытых ключей, отличных от FIDO.
PubkeyAuthentication
Указывает, разрешена ли проверка подлинности с открытым ключом. Значение по-умолчанию - yes.
RekeyLimit
Указывает максимальный объем данных, который может быть передан или получен до повторного согласования сеансового ключа, за которым необязательно следует максимальное количество времени, которое может пройти до повторного согласования сеансового ключа. Первый аргумент задается в байтах и может иметь суффикс K, M или G для обозначения килобайт, мегабайт или гигабайт соответственно. Значение по-умолчанию находится в диапазоне от 1G до 4G, в зависимости от шифра. Необязательное второе значение указывается в секундах и может использовать любую из единиц измерения, описанных в разделе "форматы времени". Значение по-умолчанию для RekeyLimit равно ''none'', что означает, что повторный ввод выполняется после того, как был отправлен или получен объем данных шифра по-умолчанию, и повторный ввод по времени не выполняется.
RequiredRSASize
Указывает минимальный размер ключа RSA (в битах), который будет принимать sshd. Ключи аутентификации пользователя и хоста, размер которых меньше этого предела, будут отклонены. Значение по-умолчанию равно 1024 битам. Обратите внимание, что это ограничение может быть увеличено только по сравнению с значением по-умолчанию.
RevokedKeys
Указывает файл отозванных открытых ключей или none, чтобы не использовать его. Ключи, перечисленные в этом файле, будут отклонены для аутентификации с помощью открытого ключа. Обратите внимание, что если этот файл недоступен для чтения, то всем пользователям будет отказано в аутентификации по открытому ключу. Ключи могут быть указаны в виде текстового файла, содержащего по одному открытому ключу в строке, или в виде списка отзыва ключей OpenSSH (KRL), сгенерированного ssh-keygen. Для получения дополнительной информации о KRLS смотрите раздел "списки отзыва ключей" в ssh-keygen.
RDomain
Указывает явный домен маршрутизации, который применяется после завершения проверки подлинности. Сеанс пользователя, а также любые переадресованные или прослушивающие IP-сокеты будут привязаны к этому rdomain. Если для домена маршрутизации задано значение %D, то будет применен домен, в котором было получено входящее соединение.
SecurityKeyProvider
Указывает путь к библиотеке, которая будет использоваться при загрузке ключей FIDO authenticator-hosted, переопределяя использование встроенной поддержки USB HID по-умолчанию.
SetEnv
Указывает одну или несколько переменных окружения для установки в дочерних сеансах, запускаемых sshd, как NAME=VALUE. Значение переменной окружения может быть заключено в кавычки (например, если оно содержит пробельные символы). Переменные среды, заданные с помощью SetEnv, переопределяют среду по-умолчанию и любые переменные, указанные пользователем с помощью AcceptEnv или PermitUserEnvironment.
StreamLocalBindMask
Устанавливает восьмеричную маску режима создания файла (umask), используемую при создании файла сокета домена Unix для локальной или удаленной переадресации портов. Этот параметр используется только для переадресации портов в файл сокета домена Unix.
Значение по-умолчанию равно 0177, что создает файл сокета домена Unix, доступный для чтения и записи только владельцем. Обратите внимание, что не все операционные системы поддерживают файловый режим для файлов сокетов домена Unix.
StreamLocalBindUnlink
Указывает, следует ли удалять существующий файл сокета домена Unix для локальной или удаленной переадресации портов перед созданием нового. Если файл сокета уже существует и StreamLocalBindUnlink не включен, sshd не сможет перенаправить порт в файл сокета домена Unix. Этот параметр используется только для переадресации портов в файл сокета домена Unix.
Аргумент должен быть yes или no. Значение по-умолчанию - no.
StrictModes
Указывает, должен ли sshd проверять права собственности на файлы пользователя и домашний каталог, прежде чем принимать вход в систему. Обычно это желательно, потому что новички иногда случайно оставляют свой каталог или файлы доступными для записи всем. Значение по-умолчанию - yes. Обратите внимание, что это не относится к ChrootDirectory, права доступа и владение которым проверяются безоговорочно.
Subsystem
Настраивает внешнюю подсистему (например, демон передачи файлов). Аргументами должны быть имя подсистемы и команда (с необязательными аргументами), выполняемая по запросу подсистемы.
Команда sftp-server реализует подсистему передачи файлов SFTP.
Альтернативно, имя internal-sftp реализует внутрипроцессный SFTP-сервер. Это может упростить настройку с использованием ChrootDirectory для принудительного использования другого корневого каталога файловой системы на клиентах.
По-умолчанию никакие подсистемы не определены.
SyslogFacility
Задает код объекта, который используется при протоколировании сообщений sshd. Возможные значения:
DAEMONUSERAUTHLOCAL0LOCAL1LOCAL2LOCAL3LOCAL4LOCAL5LOCAL6LOCAL7
Значение по-умолчанию AUTH.
TCPKeepAlive
Указывает, должна ли система отправлять сообщения "TCP keepalive" другой стороне. Если они будут отправлены, обрыв соединения или сбой в работе одной из машин будут должным образом замечены. Однако это означает, что соединения прервутся, если маршрут будет временно недоступен, и некоторые люди находят это раздражающим. С другой стороны, если "TCP keepalive" не отправляются, сеансы могут зависать на сервере бесконечно, оставляя "призрачных" пользователей и потребляя ресурсы сервера.
Значение по-умолчанию - yes (для отправки сообщений "TCP keepalive"), и сервер заметит, если сеть выйдет из строя или клиентский хост выйдет из строя. Это позволяет избежать бесконечного зависания сеансов.
Чтобы отключить сообщения "TCP keepalive", значение должно быть равно no.
TrustedUserCAKeys
Указывает файл, содержащий открытые ключи центров сертификации, которым доверено подписывать пользовательские сертификаты для проверки подлинности, или none, чтобы не использовать один из них. Ключи перечислены по одному в строке, допускаются пустые строки и комментарии, начинающиеся с #. Если сертификат представлен для проверки подлинности и его подписывающий ключ CA указан в этом файле, то он может быть использован для проверки подлинности любого пользователя, указанного в списке участников сертификата. Обратите внимание, что сертификаты, в которых отсутствует список участников, не будут разрешены для проверки подлинности с использованием TrustedUserCAKeys. Для получения более подробной информации о сертификатах смотрите раздел "сертификаты" в ssh-keygen.
UnusedConnectionTimeout
Указывает, следует ли и как быстро sshd закрывать клиентские соединения без открытых каналов. Открытые каналы включают активную оболочку, сеансы выполнения команд или подсистемы, подключенную сеть, сокет, агент или пересылку X11. Прослушиватели пересылки, такие как прослушиватели с флагом ssh -R, не считаются открытыми каналами и не предотвращают тайм-аут. Значение тайм-аута указывается в секундах или может использоваться любая из единиц измерения, описанных в разделе "форматы времени".
Обратите внимание, что этот тайм-аут начинается, когда клиентское соединение завершает аутентификацию пользователя, но до того, как у клиента появится возможность открыть какие-либо каналы. Следует соблюдать осторожность при использовании коротких значений тайм-аута, поскольку они могут не предоставить клиенту достаточного времени для запроса и открытия своих каналов перед завершением соединения.
Значение по-умолчанию none означает, что срок действия подключений никогда не истекает из-за отсутствия открытых каналов. Эта опция может быть полезна в сочетании с тайм-аутом канала.
UseBlacklist
Указывает, будет ли sshd пытаться отправлять сообщения об успешной аутентификации и сбое в работе демону blacklistd. Значение по-умолчанию - no. Для прямой совместимости с предстоящим переименованием blacklistd вместо этого можно использовать псевдоним UseBlocklist.
UseDNS
Указывает, должен ли sshd искать имя удаленного хоста и проверять, соответствует ли разрешенное имя хоста для удаленного IP-адреса тому же самому IP-адресу.
Если для этого параметра установлено значение no, то в ~/.ssh/authorized_keys и sshd_config могут использоваться только адреса, а не имена хостов. Значение по-умолчанию - yes.
UsePAM
Включает подключаемый интерфейс модуля аутентификации. Если установлено значение yes, это включит аутентификацию PAM с использованием KbdInteractiveAuthentication и PasswordAuthentication в дополнение к обработке учетной записи PAM и модуля сеанса для всех типов аутентификации.
Поскольку аутентификация с использованием интерактивной клавиатуры PAM обычно выполняет роль, эквивалентную аутентификации по паролю, вам следует отключить либо PasswordAuthentication, либо KbdInteractiveAuthentication.
Если UsePAM включен, вы не сможете запустить sshd от имени пользователя, не являющегося root. Значение по-умолчанию - yes.
VersionAddendum
Необязательно указывает дополнительный текст для добавления к баннеру протокола SSH, отправляемому сервером при подключении. Значение none может быть использовано для отключения этого параметра.
X11DisplayOffset
Указывает первый отображаемый номер, доступный для переадресации X11 по протоколу sshd. Это предотвращает вмешательство sshd в работу реальных серверов X11. Значение по-умолчанию равно 10.
X11Forwarding
Указывает, разрешена ли переадресация X11. Аргумент должен быть yes или no. Значение по-умолчанию - yes.
Когда включена переадресация X11, может быть дополнительный доступ к серверу и клиентским дисплеям, если отображение прокси-сервера sshd настроено на прослушивание по подстановочному адресу (см. X11UseLocalhost), хотя это не используется по-умолчанию. Кроме того, подмена аутентификации, а также проверка и подмена аутентификационных данных происходят на стороне клиента. Угроза безопасности при использовании переадресации X11 заключается в том, что сервер отображения X11 клиента может подвергнуться атаке, когда клиент SSH запрашивает переадресацию (смотрите предупреждения для ForwardX11 в ssh_config). Системный администратор может занять позицию, в соответствии с которой он хочет защитить клиентов, которые могут подвергнуть себя атаке, невольно запросив переадресацию X11, что может потребовать установки параметра no.
Обратите внимание, что отключение переадресации X11 не мешает пользователям переадресовывать трафик X11, поскольку пользователи всегда могут установить свои собственные переадресаторы.
X11UseLocalhost
Указывает, должен ли sshd привязывать сервер пересылки X11 к обратному адресу или к подстановочному адресу. По-умолчанию sshd привязывает сервер пересылки к обратному адресу и устанавливает для части переменной среды DISPLAY значение localhost. Это предотвращает подключение удаленных хостов к экрану прокси-сервера. Однако некоторые старые клиенты X11 могут не работать с этой конфигурацией. X11UseLocalhost может быть установлен в значение no, чтобы указать, что сервер пересылки должен быть привязан к подстановочному адресу. Аргумент должен быть yes или no. Значение по-умолчанию - yes.
XAuthLocation
Указывает полный путь к программе xauth или none, чтобы не использовать ее. Значение по-умолчанию - /usr/local/bin/xauth.
Форматы времени
аргументы командной строки sshd и параметры файла конфигурации, указывающие время, могут быть выражены с использованием последовательности вида: time[определитель], где time - это положительное целое значение, а определитель - одно из следующих:
|s | S seconds| |m | M minutes| |h | H hours| |d | D days| |w | W weeks|
Каждый элемент последовательности суммируется для вычисления общего значения времени.
Примеры формата времени:
Токены
Аргументы для некоторых ключевых слов могут использовать токены, которые расширяются во время выполнения:
%%символ%%Dдомен маршрутизации, в котором было получено входящее соединение%Fотпечаток ключа CA%fотпечаток ключа или сертификата%hдомашний каталог пользователя%iидентификатор ключа в сертификате%Kключ CA в кодировке base64%kключ или сертификат в кодировке base64%sсерийный номер сертификата%Tтип ключа CA%tтип ключа или сертификата%Uчисловой идентификатор пользователя%uимя пользователя
AuthorizedKeysCommand принимает %%, %f, %h, %k, %t, %U, и %u.
AuthorizedKeysFile принимает %%, %h, %U, и %u.
AuthorizedPrincipalsCommand принимает %%, %F, %f, %h, %i, %K, %k, %s, %T, %t, %U, и %u.
AuthorizedPrincipalsFile принимает %%, %h, %U, и %u.
ChrootDirectory принимает %%, %h, %U, и %u.
RoutingDomain принимает %D.
Файлы
/etc/ssh/sshd_config
Содержит данные конфигурации для sshd. Этот файл должен быть доступен для записи только root, но рекомендуется (хотя и не обязательно), чтобы он был доступен для чтения всем.