mirror of
https://github.com/opnsense/src.git
synced 2026-02-18 18:20:26 -05:00
Highlights from the release notes are reproduced below. Some security and bug fixes were previously merged into FreeBSD and have been elided. See the upstream release notes for full details (https://www.openssh.com/releasenotes.html). --- Future deprecation notice ========================= OpenSSH plans to remove support for the DSA signature algorithm in early 2025. Potentially-incompatible changes -------------------------------- * sshd(8): the server will now block client addresses that repeatedly fail authentication, repeatedly connect without ever completing authentication or that crash the server. See the discussion of PerSourcePenalties below for more information. Operators of servers that accept connections from many users, or servers that accept connections from addresses behind NAT or proxies may need to consider these settings. * sshd(8): the server has been split into a listener binary, sshd(8), and a per-session binary "sshd-session". This allows for a much smaller listener binary, as it no longer needs to support the SSH protocol. As part of this work, support for disabling privilege separation (which previously required code changes to disable) and disabling re-execution of sshd(8) has been removed. Further separation of sshd-session into additional, minimal binaries is planned for the future. * sshd(8): several log messages have changed. In particular, some log messages will be tagged with as originating from a process named "sshd-session" rather than "sshd". * ssh-keyscan(1): this tool previously emitted comment lines containing the hostname and SSH protocol banner to standard error. This release now emits them to standard output, but adds a new "-q" flag to silence them altogether. * sshd(8): (portable OpenSSH only) sshd will no longer use argv[0] as the PAM service name. A new "PAMServiceName" sshd_config(5) directive allows selecting the service name at runtime. This defaults to "sshd". bz2101 New features ------------ * sshd(8): sshd(8) will now penalise client addresses that, for various reasons, do not successfully complete authentication. This feature is controlled by a new sshd_config(5) PerSourcePenalties option and is on by default. * ssh(8): allow the HostkeyAlgorithms directive to disable the implicit fallback from certificate host key to plain host keys. Portability ----------- * sshd(8): expose SSH_AUTH_INFO_0 always to PAM auth modules unconditionally. The previous behaviour was to expose it only when particular authentication methods were in use. * ssh(1), ssh-agent(8): allow the presence of the WAYLAND_DISPLAY environment variable to enable SSH_ASKPASS, similarly to the X11 DISPLAY environment variable. GHPR479 --- Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D48914 (cherry picked from commit 0fdf8fae8b569bf9fff3b5171e669dcd7cf9c79e) (cherry picked from commit b4bb480ae9294d7e4b375f0ead9ae57517c79ef3) (cherry picked from commit e95979047aec384852102cf8bb1d55278ea77eeb) (cherry picked from commit dcb4ae528d357f34e4a4b4882c2757c67c98e395) Approved by: re (accelerated MFC)
118 lines
4.3 KiB
Text
118 lines
4.3 KiB
Text
The SSH agent protocol is described in
|
|
https://tools.ietf.org/html/draft-miller-ssh-agent
|
|
|
|
This file documents OpenSSH's extensions to the agent protocol.
|
|
|
|
1. session-bind@openssh.com extension
|
|
|
|
This extension allows a ssh client to bind an agent connection to a
|
|
particular SSH session identifier as derived from the initial key
|
|
exchange (as per RFC4253 section 7.2) and the host key used for that
|
|
exchange. This binding is verifiable at the agent by including the
|
|
initial KEX signature made by the host key.
|
|
|
|
The message format is:
|
|
|
|
byte SSH_AGENTC_EXTENSION (0x1b)
|
|
string session-bind@openssh.com
|
|
string hostkey
|
|
string session identifier
|
|
string signature
|
|
bool is_forwarding
|
|
|
|
Where 'hostkey' is the encoded server host public key, 'session
|
|
identifier' is the exchange hash derived from the initial key
|
|
exchange, 'signature' is the server's signature of the session
|
|
identifier using the private hostkey, as sent in the final
|
|
SSH2_MSG_KEXDH_REPLY/SSH2_MSG_KEXECDH_REPLY message of the initial key
|
|
exchange. 'is_forwarding' is a flag indicating whether this connection
|
|
should be bound for user authentication or forwarding.
|
|
|
|
When an agent received this message, it will verify the signature and
|
|
check the consistency of its contents, including refusing to accept
|
|
a duplicate session identifier, or any attempt to bind a connection
|
|
previously bound for authentication. It will then record the
|
|
binding for the life of the connection for use later in testing per-key
|
|
destination constraints.
|
|
|
|
2. restrict-destination-v00@openssh.com key constraint extension
|
|
|
|
The key constraint extension supports destination- and forwarding path-
|
|
restricted keys. It may be attached as a constraint when keys or
|
|
smartcard keys are added to an agent.
|
|
|
|
byte SSH_AGENT_CONSTRAIN_EXTENSION (0xff)
|
|
string restrict-destination-v00@openssh.com
|
|
constraint[] constraints
|
|
|
|
Where a constraint consists of:
|
|
|
|
string from_username (must be empty)
|
|
string from_hostname
|
|
string reserved
|
|
keyspec[] from_hostkeys
|
|
string to_username
|
|
string to_hostname
|
|
string reserved
|
|
keyspec[] to_hostkeys
|
|
string reserved
|
|
|
|
And a keyspec consists of:
|
|
|
|
string keyblob
|
|
bool is_ca
|
|
|
|
When receiving this message, the agent will ensure that the
|
|
'from_username' field is empty, and that 'to_hostname' and 'to_hostkeys'
|
|
have been supplied (empty 'from_hostname' and 'from_hostkeys' are valid
|
|
and signify the initial hop from the host running ssh-agent). The agent
|
|
will then record the constraint against the key.
|
|
|
|
Subsequent operations on this key including add/remove/request
|
|
identities and, in particular, signature requests will check the key
|
|
constraints against the session-bind@openssh.com bindings recorded for
|
|
the agent connection over which they were received.
|
|
|
|
3. SSH_AGENT_CONSTRAIN_MAXSIGN key constraint
|
|
|
|
This key constraint allows communication to an agent of the maximum
|
|
number of signatures that may be made with an XMSS key. The format of
|
|
the constraint is:
|
|
|
|
byte SSH_AGENT_CONSTRAIN_MAXSIGN (0x03)
|
|
uint32 max_signatures
|
|
|
|
This option is only valid for XMSS keys.
|
|
|
|
3. associated-certs-v00@openssh.com key constraint extension
|
|
|
|
The key constraint extension allows certificates to be associated
|
|
with private keys as they are loaded from a PKCS#11 token.
|
|
|
|
byte SSH_AGENT_CONSTRAIN_EXTENSION (0xff)
|
|
string associated-certs-v00@openssh.com
|
|
bool certs_only
|
|
string certsblob
|
|
|
|
Where "certsblob" consists of one or more certificates encoded as public
|
|
key blobs:
|
|
|
|
string[] certificates
|
|
|
|
This extension is only valid for SSH_AGENTC_ADD_SMARTCARD_KEY_CONSTRAINED
|
|
requests. When an agent receives this extension, it will attempt to match
|
|
each certificate in the request with a corresponding private key loaded
|
|
from the requested PKCS#11 token. When a matching key is found, the
|
|
agent will graft the certificate contents to the token-hosted private key
|
|
and store the result for subsequent use by regular agent operations.
|
|
|
|
If the "certs_only" flag is set, then this extension will cause ONLY
|
|
the resultant certificates to be loaded to the agent. The default
|
|
behaviour is to load the PKCS#11-hosted private key as well as the
|
|
resultant certificate.
|
|
|
|
A SSH_AGENTC_ADD_SMARTCARD_KEY_CONSTRAINED will return SSH_AGENT_SUCCESS
|
|
if any key (plain private or certificate) was successfully loaded, or
|
|
SSH_AGENT_FAILURE if no key was loaded.
|
|
|
|
$OpenBSD: PROTOCOL.agent,v 1.23 2024/04/30 05:45:56 djm Exp $
|