название
SSHD - OpenSSH SSH-демон
конспект
SSHD -deiqtD46 -б биты -е config_file -г login_grace_time -час host_key_file -К key_gen_time -о вариант -п порт -U Len
Описание
SSHD (SSH Daemon) - это программа демона для ssh (1). Вместе эти программы заменяют Rlogin а также RSH, и обеспечить безопасную зашифрованную связь между двумя ненадежными хостами по небезопасной сети. Программы должны быть максимально просты в установке и использовании.
SSHD это демон, который слушает подключения от клиентов. Обычно он запускается при загрузке из / etc / rc. Он открывает новый демон для каждого входящего соединения. Развернутые демоны обрабатывают обмен ключами, шифрование, аутентификацию, выполнение команд и обмен данными. Эта реализацияSSHD одновременно поддерживает протокол SSH версии 1 и 2.
Протокол SSH версии 1
Каждый хост имеет ключ RSA для конкретного хоста (обычно 1024 бит), используемый для идентификации хоста. Кроме того, при запуске демона он генерирует ключ RSA сервера (обычно 768 бит). Этот ключ обычно восстанавливается каждый час, если он был использован, и никогда не сохраняется на диске.
Всякий раз, когда клиент соединяет демона, он отвечает на его общедоступный хост и ключи сервера. Клиент сравнивает ключ хоста RSA с его собственной базой данных, чтобы убедиться, что он не изменился. Затем клиент генерирует 256-битное случайное число. Он шифрует это случайное число, используя как ключ хоста, так и ключ сервера, и отправляет зашифрованный номер на сервер. Затем обе стороны используют это случайное число как ключ сеанса, который используется для шифрования всех дальнейших сообщений в сеансе. Остальная часть сеанса шифруется с использованием обычного шифрования, в настоящее время Blowfish или 3DES, причем 3DES используется по умолчанию. Клиент выбирает алгоритм шифрования для использования с серверами, предлагаемыми сервером.
Затем сервер и клиент вводят диалоговое окно проверки подлинности. Клиент пытается аутентифицироваться, используя аутентификацию .rhosts, аутентификацию .rhosts в сочетании с аутентификацией хоста RSA, аутентификацией запроса ответа RSA или аутентификацией на основе пароля.
Аутентификация Rhosts обычно отключена, поскольку она в основном небезопасна, но может быть включена в файле конфигурации сервера, если это необходимо. Безопасность системы не улучшается, если толькоРСХДrlogind и rexecd отключены (таким образом, полностью отключив rlogin и rsh в машине).
Протокол SSH версии 2
Версия 2 работает аналогично: каждый хост имеет ключ для конкретного узла (RSA или DSA), используемый для идентификации хоста. Однако, когда демон запускается, он не генерирует ключ сервера. Форвардная безопасность обеспечивается с помощью соглашения о ключах Диффи-Хеллмана. Это ключевое соглашение приводит к совместному сеансовому ключу.
Остальная часть сеанса шифруется с использованием симметричного шифра, в настоящее время 128 бит AES, Blowfish, 3DES, CAST128, Arcfour, 192 бит AES или 256 бит AES. Клиент выбирает алгоритм шифрования для использования с серверами, предлагаемыми сервером. Кроме того, целостность сеанса обеспечивается с помощью кода аутентификации криптографического сообщения (hmac-sha1 или hmac-md5).
Протокол версии 2 предоставляет метод аутентификации на основе открытого ключа (PubkeyAuthentication) или клиентского хоста (HostbasedAuthentication), обычную аутентификацию по паролю и методы на основе ответа на запрос.
Выполнение команд и передача данных
Если клиент успешно аутентифицируется, вводится диалог для подготовки сеанса. В это время клиент может запрашивать такие вещи, как распределение псевдо-tty, пересылка соединений X11, пересылка соединений TCP / IP или пересылка соединения агента аутентификации по защищенному каналу.
Наконец, клиент либо запрашивает оболочку, либо выполняет команду. Затем стороны переходят в режим сеанса. В этом режиме обе стороны могут отправлять данные в любое время, и такие данные пересылаются в / из оболочки или команды на стороне сервера и пользовательского терминала на стороне клиента.
Когда пользовательская программа завершается, и все переадресованные X11 и другие соединения были закрыты, сервер отправляет статус завершения команды клиенту и с обеих сторон выходит.
SSHD можно настроить с помощью параметров командной строки или файла конфигурации. Параметры командной строки переопределяют значения, указанные в файле конфигурации.
SSHD перечитывает свой файл конфигурации, когда он получает сигнал зависания,SIGHUP выполнив его с именем, которое было запущено как, например, / usr / sbin / sshd
Возможны следующие варианты:
-b биты
Указывает количество бит в ключе сервера эфемерного протокола версии 1 (по умолчанию 768).
-d
Режим отладки. Сервер отправляет подробный отладочный вывод в системный журнал и не ставит себя в фоновом режиме. Сервер также не будет работать и будет обрабатывать только одно соединение. Этот параметр предназначен только для отладки для сервера. Параметры multi-d увеличивают уровень отладки. Максимум - 3.
-e
Когда этот параметр указан,SSHD будет посылать результат на стандартную ошибку вместо системного журнала.
-f конфигурационный файл
Задает имя файла конфигурации. По умолчанию используется файл / etc / ssh / sshd_configSSHDотказывается запускаться, если нет файла конфигурации.
-г login_grace_time
Дает время отклика клиентов для аутентификации (по умолчанию 120 секунд). Если клиент не может выполнить аутентификацию пользователя за это несколько секунд, сервер отключается и выходит.Значение нуля указывает на отсутствие ограничений.
-час host_key_file
Указывает файл, из которого считывается ключ хоста. Эта опция должна быть задана, еслиSSHD не запускается как root (поскольку обычные файлы ключей хоста обычно не читаются кем-либо, кроме root). По умолчанию используется протокол / etc / ssh / ssh_host_key для протокола версии 1 и / etc / ssh / ssh_host_rsa_key и / etc / ssh / ssh_host_dsa_key для протокола версии 2. Возможно наличие нескольких файлов ключей хоста для разных версий протокола и ключа хоста алгоритмы.
-я
Указывает, чтоSSHD запускается из inetd.SSHD обычно не запускается из inetd, потому что ему необходимо сгенерировать ключ сервера, прежде чем он сможет ответить клиенту, и это может занять десятки секунд. Клиентам приходилось ждать слишком долго, если бы каждый раз восстанавливался ключ. Однако с небольшими размерами клавиш (например, 512), используяSSHD из inetd может быть осуществимым.
-k key_gen_time
Указывает, как часто восстанавливается ключ сервера эфемерного протокола версии 1 (по умолчанию 3600 секунд или один час). Мотивация для регенерации ключа довольно часто заключается в том, что ключ не хранится нигде, и примерно через час становится невозможным восстановить ключ для дешифрования перехваченных сообщений, даже если машина взломана или физически изъята. Значение нуля указывает на то, что ключ никогда не будет восстановлен.
-о вариант
Может использоваться для предоставления опций в формате, используемом в файле конфигурации. Это полезно для указания параметров, для которых нет отдельного флага командной строки.
-п порт
Указывает порт, на котором сервер прослушивает подключения (по умолчанию 22). Разрешено использование нескольких портов. Порты, указанные в файле конфигурации, игнорируются при указании порта командной строки.
-q
Бесшумный режим. В системный журнал ничего не отправляется. Обычно регистрируются начало, аутентификация и завершение каждого соединения.
-t
Тестовый режим. Проверьте только правильность файла конфигурации и разумность ключей. Это полезно для обновленияSSHD надежно, поскольку параметры конфигурации могут измениться.
-u Len
Этот параметр используется для указания размера поля вutmp структура, которая содержит имя удаленного хоста. Если разрешенное имя узла больше, чем Len вместо этого будет использоваться десятичное значение с точками. Это позволяет хостам с очень длинными именами хостов, которые переполняют это поле, все еще должны быть однозначно идентифицированы. Указание -u0 указывает, что в файл utmp должны быть помещены только точечные десятичные адреса. -u0 также используется для предотвращенияSSHD от выполнения запросов DNS, если этого не требует механизм или конфигурация аутентификации. Механизмы аутентификации, которые могут потребовать DNS, включают:RhostsAuthenticationRhostsRSAAuthentication HostbasedAuthentication и используяиз = модельного спискав ключевом файле. Параметры конфигурации, требующие DNS, включают использование USER @ HOSTpattern вAllowUsers или жеDenyUsers
-D
Когда указан этот параметрSSHD не будет отсоединяться и не станет демонами. Это позволяет легко контролироватьSSHD
-4
силSSHD для использования только адресов IPv4.
-6
силSSHD для использования только адресов IPv6.
Конфигурационный файл
SSHD считывает данные конфигурации из / etc / ssh / sshd_config (или файл, указанный с помощью -е в командной строке). Формат файла и параметры конфигурации описаны в sshd_config5.
Процесс входа в систему
Когда пользователь успешно войдет в систему,SSHD делает следующее:
- Если логин находится на tty, а команда не указана, печатает последнее время входа в систему и / etc / motd (если это не предотвращено в файле конфигурации или $ HOME / .hushlogin, см. Раздел SX FILES).
- Если логин находится на tty, записывается время входа в систему.
- Проверяет / etc / nologin, если он существует, печатает содержимое и завершает работу (кроме root).
- Изменения для запуска с обычными привилегиями пользователя.
- Устанавливает базовую среду.
- Читает $ HOME / .ssh / environment, если он существует, и пользователям разрешено изменять их среду. См.PermitUserEnvironment в sshd_config5.
- Изменения в домашнем каталоге пользователя.
- Если существует $ HOME / .ssh / rc, он запускает его; else если / etc / ssh / sshrc существует, запускает его; в противном случае выполняется xauth. Файлы `` rc '' получают протокол проверки подлинности X11 и cookie в стандартном вводе.
- Запускает оболочку или команду пользователя.
Формат файла Authorized_Keys
$ HOME / .ssh / authorized_keys - это файл по умолчанию, в котором перечислены открытые ключи, которые разрешены для аутентификации RSA в протоколе версии 1 и для проверки подлинности с открытым ключом (PubkeyAuthentication) в протоколе версии 2.AuthorizedKeysFile может использоваться для указания альтернативного файла.
Каждая строка файла содержит один ключ (пустые строки и строки, начинающиеся с символа `# ', игнорируются как комментарии). Каждый открытый ключ RSA состоит из следующих полей, разделенных пробелами: опциями, битами, экспонентой, модулем, комментарием. Каждый открытый ключ протокола версии 2 состоит из следующих: опции, keytype, key64 key comment, комментарий. Поле опций не является обязательным; его присутствие определяется тем, начинается ли строка с номера или нет (поле параметров никогда не начинается с числа). Биты, поля экспоненты, модуля и поля комментариев предоставляют ключ RSA для протокола версии 1; поле комментария не используется ни для чего (но может быть удобным для пользователя идентифицировать ключ). Для протокола версии 2 ключевым типом является `` ssh-dss '' или `` ssh-rsa ''
Обратите внимание, что строки в этом файле обычно составляют несколько сотен байтов (из-за размера кодировки открытого ключа). Вы не хотите вводить их; вместо этого скопируйте файл identity.pub id_dsa.pub или файл id_rsa.pub и отредактируйте его.
SSHD обеспечивает минимальный размер модуля ключа RSA для протокола 1 и ключей протокола 2 768 бит.
Параметры (если они есть) состоят из спецификаций параметров, разделенных запятыми. Пробелы не допускаются, за исключением двойных кавычек. Поддерживаются следующие спецификации параметров (обратите внимание, что ключевые слова опций не зависят от регистра):
из = модельного списка
Указывает, что в дополнение к аутентификации с открытым ключом каноническое имя удаленного хоста должно присутствовать в списке шаблонов, разделенных запятыми (`* 'и`?' Служат в качестве подстановочных знаков). Список также может содержать шаблоны, сбрасываемые с помощью префикса с помощью `! ' ; если имя канонического хоста соответствует отрицательному шаблону, ключ не принимается. Цель этого варианта - дополнительно повысить безопасность: аутентификация открытого ключа сама по себе не доверяет сетевым или серверам имен или чем-либо (но ключ); однако, если кто-то каким-то образом крадет ключ, ключ позволяет злоумышленнику войти в систему из любой точки мира. Эта дополнительная опция делает использование украденного ключа более сложным (серверы имен и / или маршрутизаторы должны быть скомпрометированы в дополнение к простому ключу).
Команда = команда
Указывает, что команда выполняется всякий раз, когда этот ключ используется для аутентификации. Команда, предоставленная пользователем (если есть), игнорируется. Команда запускается на pty, если клиент запрашивает pty; в противном случае он запускается без tty. Если требуется 8-битный чистый канал, нельзя запрашивать pty или указыватьнет-псевдотерминал Цитата может быть включена в команду, процитировав ее обратным слэшем. Этот параметр может быть полезен для ограничения определенных открытых ключей для выполнения только определенной операции. Примером может быть ключ, который позволяет удаленное резервное копирование, но не более того. Обратите внимание, что клиент может указать пересылку TCP / IP и / или X11, если они явно запрещены. Обратите внимание, что этот параметр применяется к выполнению оболочки, команды или подсистемы.
среда = ИМЯ = значение
Указывает, что строка должна быть добавлена в среду при входе в систему с использованием этого ключа. Переменные среды задаются таким образом, чтобы переопределить другие значения среды по умолчанию. Разрешено несколько вариантов этого типа. Обработка по умолчанию отключена по умолчанию и контролируется с помощьюPermitUserEnvironment вариант. Эта опция автоматически отключается, еслиUseLogin включен.
нет-переадресации портов
Запрещает пересылку TCP / IP, когда этот ключ используется для аутентификации. Любые запросы клиента на порт возвращают ошибку. Это может быть использовано, например, в связи скоманда вариант.
нет-X11-экспедиторская
Запрет переадресации X11, когда этот ключ используется для аутентификации. Любые запросы X11 от клиента возвращают ошибку.
нет-агент переадресации
Запрет переадресации агента аутентификации, когда этот ключ используется для аутентификации.
нет-псевдотерминал
Предотвращает выделение tty (запрос на выделение pty не удастся).
permitopen = хост: порт
Ограничить локальные`` ssh -L '' переадресация порта, чтобы он мог подключаться только к указанному хосту и порту. Адреса IPv6 могут быть указаны с помощью альтернативного синтаксиса: хост / порт множественный permitopen параметры могут применяться через запятую. Никакие сопоставления шаблонов не выполняются по указанным именам хостов, они должны быть буквальными доменами или адресами.
Примеры
1024 33 12121 … 312314325 [email protected]
from = "*. niksula.hut.fi,! pc.niksula.hut.fi" 1024 35 23 … 2334 ylo @ niksula
command = "dump / home", no-pty, no-port-forwarding 1024 33 23 … 2323 backup.hut.fi
allowopen = "10.2.1.55:80", permitopen = "10.2.1.56:25" 1024 33 23 … 2323
Формат файла Ssh_Known_Hosts
Файлы / etc / ssh / ssh_known_hosts и $ HOME / .ssh / known_hosts содержат общедоступные ключи хоста для всех известных хостов. Глобальный файл должен быть подготовлен администратором (необязательно), а файл для каждого пользователя поддерживается автоматически: всякий раз, когда пользователь подключается с неизвестного хоста, его ключ добавляется в файл для каждого пользователя.
Каждая строка в этих файлах содержит следующие поля: имена хостов, биты, экспоненты, модуль, комментарий. Поля разделяются пробелами.
Hostnames - это список шаблонов, разделенных запятыми ('*' и '?' Действуют как подстановочные знаки); каждый шаблон, в свою очередь, сопоставляется с каноническим именем хоста (при аутентификации клиента) или с предоставленным пользователем именем (при аутентификации сервера). Образцу также может предшествовать символ `! ' для указания отрицания: если имя хоста соответствует отрицательному шаблону, оно не принимается (по этой строке), даже если оно соответствует другому шаблону в строке.
Биты, экспоненты и модуль берутся непосредственно из ключа хоста RSA; они могут быть получены, например, из /etc/ssh/ssh_host_key.pub. Поле необязательных комментариев продолжается до конца строки и не используется.
Строки, начинающиеся с `# 'и пустые строки, игнорируются как комментарии.
При выполнении проверки подлинности хоста аутентификация принимается, если соответствующая строка имеет соответствующий ключ. Таким образом, допустимо (но не рекомендуется) иметь несколько строк или разных ключей хоста для тех же имен. Это неизбежно произойдет, если в файл будут добавлены короткие формы имен хостов из разных доменов. Возможно, файлы содержат противоречивую информацию; аутентификация принимается, если действительная информация может быть найдена из любого файла.
Обратите внимание, что строки в этих файлах обычно содержат сотни символов, и вы определенно не хотите вводить ключи хоста вручную. Скорее, сгенерируйте их по сценарию или, взяв /etc/ssh/ssh_host_key.pub и добавив имена хостов спереди.
Примеры
closenet, …, 130.233.208.41 1024 37 159 … 93 closenet.hut.fi cvs.openbsd.org, 199.185.137.3 ssh-rsa AAAA1234 ….. =
Смотрите также
scp (1), sftp (1), ssh (1), ssh-add1, ssh-agent1, ssh-keygen1, login.conf5, модули (5), sshd_config5, sftp-server8
Т. Илонен Т. Кивинен М. Сааринен Т. Ринне С. Лехтинен «Архитектура протокола SSH» draft-ietf-secsh-architecture-12.txt Январь 2002 г. Незавершенные материалы
M. Friedl N. Provos W. A. Simpson «Обмен группами Диффи-Хеллмана для протокола транспортного уровня SSH» draft-ietf-secsh-dh-group-exchange-02.txt Январь 2002 г. Незавершенное производство
Важный: Использовать человек команда ( % человек ), чтобы увидеть, как команда используется на вашем конкретном компьютере.