diff options
Diffstat (limited to 'debian')
121 files changed, 17014 insertions, 0 deletions
diff --git a/debian/.git-dpm b/debian/.git-dpm new file mode 100644 index 000000000..eb7f66c18 --- /dev/null +++ b/debian/.git-dpm | |||
@@ -0,0 +1,12 @@ | |||
1 | # see git-dpm(1) from git-dpm package | ||
2 | 0c3b0631695be33f711eda233bfee3dab77d405c | ||
3 | 0c3b0631695be33f711eda233bfee3dab77d405c | ||
4 | 102062f825fb26a74295a1c089c00c4c4c76b68a | ||
5 | 102062f825fb26a74295a1c089c00c4c4c76b68a | ||
6 | openssh_8.0p1.orig.tar.gz | ||
7 | 756dbb99193f9541c9206a667eaa27b0fa184a4f | ||
8 | 1597697 | ||
9 | debianTag="debian/%e%%%V" | ||
10 | patchedTag="patched/%e%%%V" | ||
11 | upstreamTag="upstream/%U" | ||
12 | signature:a287987d9d505aaa8a89e693920f14b9b9e27a5f:683:openssh_8.0p1.orig.tar.gz.asc | ||
diff --git a/debian/.gitignore b/debian/.gitignore new file mode 100644 index 000000000..988323b00 --- /dev/null +++ b/debian/.gitignore | |||
@@ -0,0 +1,17 @@ | |||
1 | /*.debhelper* | ||
2 | /*substvars | ||
3 | /build-deb | ||
4 | /build-udeb | ||
5 | /files | ||
6 | /keygen-test/key1 | ||
7 | /keygen-test/key1.pub | ||
8 | /keygen-test/key2 | ||
9 | /keygen-test/key2.pub | ||
10 | /openssh-client | ||
11 | /openssh-client-udeb | ||
12 | /openssh-server | ||
13 | /openssh-server-udeb | ||
14 | /ssh | ||
15 | /ssh-askpass-gnome | ||
16 | /ssh-krb5 | ||
17 | /tmp | ||
diff --git a/debian/.gitlab-ci.yml b/debian/.gitlab-ci.yml new file mode 100644 index 000000000..845003caf --- /dev/null +++ b/debian/.gitlab-ci.yml | |||
@@ -0,0 +1,9 @@ | |||
1 | image: registry.gitlab.com/eighthave/ci-image-git-buildpackage:latest | ||
2 | |||
3 | build: | ||
4 | artifacts: | ||
5 | paths: | ||
6 | - "*.deb" | ||
7 | expire_in: 1 day | ||
8 | script: | ||
9 | - gitlab-ci-git-buildpackage-all | ||
diff --git a/debian/NEWS b/debian/NEWS new file mode 100644 index 000000000..9c9bd7e78 --- /dev/null +++ b/debian/NEWS | |||
@@ -0,0 +1,261 @@ | |||
1 | openssh (1:8.0p1-1) experimental; urgency=medium | ||
2 | |||
3 | OpenSSH 8.0 includes a number of changes that may affect existing | ||
4 | configurations: | ||
5 | |||
6 | * sshd(8): Remove support for obsolete "host/port" syntax. | ||
7 | Slash-separated host/port was added in 2001 as an alternative to | ||
8 | host:port syntax for the benefit of IPv6 users. These days there are | ||
9 | established standards for this like [::1]:22 and the slash syntax is | ||
10 | easily mistaken for CIDR notation, which OpenSSH supports for some | ||
11 | things. Remove the slash notation from ListenAddress and PermitOpen. | ||
12 | |||
13 | -- Colin Watson <cjwatson@debian.org> Sun, 09 Jun 2019 22:47:27 +0100 | ||
14 | |||
15 | openssh (1:7.9p1-1) unstable; urgency=medium | ||
16 | |||
17 | OpenSSH 7.9 includes a number of changes that may affect existing | ||
18 | configurations: | ||
19 | |||
20 | * ssh(1), sshd(8): the setting of the new CASignatureAlgorithms option | ||
21 | bans the use of DSA keys as certificate authorities. | ||
22 | * sshd(8): the authentication success/failure log message has changed | ||
23 | format slightly. It now includes the certificate fingerprint | ||
24 | (previously it included only key ID and CA key fingerprint). | ||
25 | |||
26 | -- Colin Watson <cjwatson@debian.org> Sun, 21 Oct 2018 10:39:24 +0100 | ||
27 | |||
28 | openssh (1:7.8p1-1) unstable; urgency=medium | ||
29 | |||
30 | OpenSSH 7.8 includes a number of changes that may affect existing | ||
31 | configurations: | ||
32 | |||
33 | * ssh-keygen(1): Write OpenSSH format private keys by default instead of | ||
34 | using OpenSSL's PEM format. The OpenSSH format, supported in OpenSSH | ||
35 | releases since 2014 and described in the PROTOCOL.key file in the | ||
36 | source distribution, offers substantially better protection against | ||
37 | offline password guessing and supports key comments in private keys. | ||
38 | If necessary, it is possible to write old PEM-style keys by adding "-m | ||
39 | PEM" to ssh-keygen's arguments when generating or updating a key. | ||
40 | * sshd(8): Remove internal support for S/Key multiple factor | ||
41 | authentication. S/Key may still be used via PAM or BSD auth. | ||
42 | * ssh(1): Remove vestigial support for running ssh(1) as setuid. This | ||
43 | used to be required for hostbased authentication and the (long gone) | ||
44 | rhosts-style authentication, but has not been necessary for a long | ||
45 | time. Attempting to execute ssh as a setuid binary, or with uid != | ||
46 | effective uid will now yield a fatal error at runtime. | ||
47 | * sshd(8): The semantics of PubkeyAcceptedKeyTypes and the similar | ||
48 | HostbasedAcceptedKeyTypes options have changed. These now specify | ||
49 | signature algorithms that are accepted for their respective | ||
50 | authentication mechanism, where previously they specified accepted key | ||
51 | types. This distinction matters when using the RSA/SHA2 signature | ||
52 | algorithms "rsa-sha2-256", "rsa-sha2-512" and their certificate | ||
53 | counterparts. Configurations that override these options but omit | ||
54 | these algorithm names may cause unexpected authentication failures (no | ||
55 | action is required for configurations that accept the default for these | ||
56 | options). | ||
57 | * sshd(8): The precedence of session environment variables has changed. | ||
58 | ~/.ssh/environment and environment="..." options in authorized_keys | ||
59 | files can no longer override SSH_* variables set implicitly by sshd. | ||
60 | * ssh(1)/sshd(8): The default IPQoS used by ssh/sshd has changed. They | ||
61 | will now use DSCP AF21 for interactive traffic and CS1 for bulk. For a | ||
62 | detailed rationale, please see the commit message: | ||
63 | https://cvsweb.openbsd.org/src/usr.bin/ssh/readconf.c#rev1.284 | ||
64 | |||
65 | -- Colin Watson <cjwatson@debian.org> Thu, 30 Aug 2018 15:35:27 +0100 | ||
66 | |||
67 | openssh (1:7.6p1-1) unstable; urgency=medium | ||
68 | |||
69 | OpenSSH 7.6 includes a number of changes that may affect existing | ||
70 | configurations: | ||
71 | |||
72 | * ssh(1): Delete SSH protocol version 1 support, associated configuration | ||
73 | options and documentation. | ||
74 | * ssh(1)/sshd(8): Remove support for the hmac-ripemd160 MAC. | ||
75 | * ssh(1)/sshd(8): Remove support for the arcfour, blowfish and CAST | ||
76 | ciphers. | ||
77 | * Refuse RSA keys <1024 bits in length and improve reporting for keys | ||
78 | that do not meet this requirement. | ||
79 | * ssh(1): Do not offer CBC ciphers by default. | ||
80 | |||
81 | -- Colin Watson <cjwatson@debian.org> Fri, 06 Oct 2017 12:36:48 +0100 | ||
82 | |||
83 | openssh (1:7.5p1-1) experimental; urgency=medium | ||
84 | |||
85 | OpenSSH 7.5 includes a number of changes that may affect existing | ||
86 | configurations: | ||
87 | |||
88 | * This release deprecates the sshd_config UsePrivilegeSeparation option, | ||
89 | thereby making privilege separation mandatory. | ||
90 | |||
91 | * The format of several log messages emitted by the packet code has | ||
92 | changed to include additional information about the user and their | ||
93 | authentication state. Software that monitors ssh/sshd logs may need to | ||
94 | account for these changes. For example: | ||
95 | |||
96 | Connection closed by user x 1.1.1.1 port 1234 [preauth] | ||
97 | Connection closed by authenticating user x 10.1.1.1 port 1234 [preauth] | ||
98 | Connection closed by invalid user x 1.1.1.1 port 1234 [preauth] | ||
99 | |||
100 | Affected messages include connection closure, timeout, remote | ||
101 | disconnection, negotiation failure and some other fatal messages | ||
102 | generated by the packet code. | ||
103 | |||
104 | -- Colin Watson <cjwatson@debian.org> Sun, 02 Apr 2017 02:58:01 +0100 | ||
105 | |||
106 | openssh (1:7.4p1-7) unstable; urgency=medium | ||
107 | |||
108 | This version restores the default for AuthorizedKeysFile to search both | ||
109 | ~/.ssh/authorized_keys and ~/.ssh/authorized_keys2, as was the case in | ||
110 | Debian configurations before 1:7.4p1-1. Upstream intends to phase out | ||
111 | searching ~/.ssh/authorized_keys2 by default, so you should ensure that | ||
112 | you are only using ~/.ssh/authorized_keys, at least for critical | ||
113 | administrative access; do not assume that the current default will remain | ||
114 | in place forever. | ||
115 | |||
116 | -- Colin Watson <cjwatson@debian.org> Sun, 05 Mar 2017 02:12:42 +0000 | ||
117 | |||
118 | openssh (1:7.4p1-1) unstable; urgency=medium | ||
119 | |||
120 | OpenSSH 7.4 includes a number of changes that may affect existing | ||
121 | configurations: | ||
122 | |||
123 | * ssh(1): Remove 3des-cbc from the client's default proposal. 64-bit | ||
124 | block ciphers are not safe in 2016 and we don't want to wait until | ||
125 | attacks like SWEET32 are extended to SSH. As 3des-cbc was the only | ||
126 | mandatory cipher in the SSH RFCs, this may cause problems connecting to | ||
127 | older devices using the default configuration, but it's highly likely | ||
128 | that such devices already need explicit configuration for key exchange | ||
129 | and hostkey algorithms already anyway. | ||
130 | * sshd(8): Remove support for pre-authentication compression. Doing | ||
131 | compression early in the protocol probably seemed reasonable in the | ||
132 | 1990s, but today it's clearly a bad idea in terms of both cryptography | ||
133 | (cf. multiple compression oracle attacks in TLS) and attack surface. | ||
134 | Pre-auth compression support has been disabled by default for >10 | ||
135 | years. Support remains in the client. | ||
136 | * ssh-agent will refuse to load PKCS#11 modules outside a whitelist of | ||
137 | trusted paths by default. The path whitelist may be specified at | ||
138 | run-time. | ||
139 | * sshd(8): When a forced-command appears in both a certificate and an | ||
140 | authorized keys/principals command= restriction, sshd will now refuse | ||
141 | to accept the certificate unless they are identical. The previous | ||
142 | (documented) behaviour of having the certificate forced-command | ||
143 | override the other could be a bit confusing and error-prone. | ||
144 | * sshd(8): Remove the UseLogin configuration directive and support for | ||
145 | having /bin/login manage login sessions. | ||
146 | |||
147 | The unprivileged sshd process that deals with pre-authentication network | ||
148 | traffic is now subject to additional sandboxing restrictions by default: | ||
149 | that is, the default sshd_config now sets UsePrivilegeSeparation to | ||
150 | "sandbox" rather than "yes". This has been the case upstream for a while, | ||
151 | but until now the Debian configuration diverged unnecessarily. | ||
152 | |||
153 | -- Colin Watson <cjwatson@debian.org> Tue, 27 Dec 2016 18:01:46 +0000 | ||
154 | |||
155 | openssh (1:7.2p1-1) unstable; urgency=medium | ||
156 | |||
157 | OpenSSH 7.2 disables a number of legacy cryptographic algorithms by | ||
158 | default in ssh: | ||
159 | |||
160 | * Several ciphers blowfish-cbc, cast128-cbc, all arcfour variants and the | ||
161 | rijndael-cbc aliases for AES. | ||
162 | * MD5-based and truncated HMAC algorithms. | ||
163 | |||
164 | These algorithms are already disabled by default in sshd. | ||
165 | |||
166 | -- Colin Watson <cjwatson@debian.org> Tue, 08 Mar 2016 11:47:20 +0000 | ||
167 | |||
168 | openssh (1:7.1p1-2) unstable; urgency=medium | ||
169 | |||
170 | OpenSSH 7.0 disables several pieces of weak, legacy, and/or unsafe | ||
171 | cryptography. | ||
172 | |||
173 | * Support for the legacy SSH version 1 protocol is disabled by default at | ||
174 | compile time. Note that this also means that the Cipher keyword in | ||
175 | ssh_config(5) is effectively no longer usable; use Ciphers instead for | ||
176 | protocol 2. The openssh-client-ssh1 package includes "ssh1", "scp1", | ||
177 | and "ssh-keygen1" binaries which you can use if you have no alternative | ||
178 | way to connect to an outdated SSH1-only server; please contact the | ||
179 | server administrator or system vendor in such cases and ask them to | ||
180 | upgrade. | ||
181 | * Support for the 1024-bit diffie-hellman-group1-sha1 key exchange is | ||
182 | disabled by default at run-time. It may be re-enabled using the | ||
183 | instructions at http://www.openssh.com/legacy.html | ||
184 | * Support for ssh-dss, ssh-dss-cert-* host and user keys is disabled by | ||
185 | default at run-time. These may be re-enabled using the instructions at | ||
186 | http://www.openssh.com/legacy.html | ||
187 | * Support for the legacy v00 cert format has been removed. | ||
188 | |||
189 | Future releases will retire more legacy cryptography, including: | ||
190 | |||
191 | * Refusing all RSA keys smaller than 1024 bits (the current minimum is | ||
192 | 768 bits). | ||
193 | * Several ciphers will be disabled by default: blowfish-cbc, cast128-cbc, | ||
194 | all arcfour variants, and the rijndael-cbc aliases for AES. | ||
195 | * MD5-based HMAC algorithms will be disabled by default. | ||
196 | |||
197 | -- Colin Watson <cjwatson@debian.org> Tue, 08 Dec 2015 15:33:08 +0000 | ||
198 | |||
199 | openssh (1:6.9p1-1) unstable; urgency=medium | ||
200 | |||
201 | UseDNS now defaults to 'no'. Configurations that match against the client | ||
202 | host name (via sshd_config or authorized_keys) may need to re-enable it or | ||
203 | convert to matching against addresses. | ||
204 | |||
205 | -- Colin Watson <cjwatson@debian.org> Thu, 20 Aug 2015 10:38:58 +0100 | ||
206 | |||
207 | openssh (1:6.7p1-5) unstable; urgency=medium | ||
208 | |||
209 | openssh-server 1:6.7p1-4 changed the default setting of AcceptEnv to list | ||
210 | a number of specific LC_FOO variables rather than the wildcard LC_*. I | ||
211 | have since been persuaded that this was a bad idea and have reverted it, | ||
212 | but it is difficult to automatically undo the change to | ||
213 | /etc/ssh/sshd_config without compounding the problem (that of modifying | ||
214 | configuration that some users did not want to be modified) further. Most | ||
215 | users who upgraded via version 1:6.7p1-4 should restore the previous value | ||
216 | of "AcceptEnv LANG LC_*" in /etc/ssh/sshd_config. | ||
217 | |||
218 | -- Colin Watson <cjwatson@debian.org> Sun, 22 Mar 2015 23:09:32 +0000 | ||
219 | |||
220 | openssh (1:5.4p1-2) unstable; urgency=low | ||
221 | |||
222 | Smartcard support is now available using PKCS#11 tokens. If you were | ||
223 | previously using an unofficial build of Debian's OpenSSH package with | ||
224 | OpenSC-based smartcard support added, then note that commands like | ||
225 | 'ssh-add -s 0' will no longer work; you need to use 'ssh-add -s | ||
226 | /usr/lib/opensc-pkcs11.so' instead. | ||
227 | |||
228 | -- Colin Watson <cjwatson@debian.org> Sat, 10 Apr 2010 01:08:59 +0100 | ||
229 | |||
230 | openssh (1:3.8.1p1-9) experimental; urgency=low | ||
231 | |||
232 | The ssh package has been split into openssh-client and openssh-server. If | ||
233 | you had previously requested that the sshd server should not be run, then | ||
234 | that request will still be honoured. However, the recommended approach is | ||
235 | now to remove the openssh-server package if you do not want to run sshd. | ||
236 | You can remove the old /etc/ssh/sshd_not_to_be_run marker file after doing | ||
237 | that. | ||
238 | |||
239 | -- Colin Watson <cjwatson@debian.org> Mon, 2 Aug 2004 20:48:54 +0100 | ||
240 | |||
241 | openssh (1:3.5p1-1) unstable; urgency=low | ||
242 | |||
243 | This version of OpenSSH disables the environment option for public keys by | ||
244 | default, in order to avoid certain attacks (for example, LD_PRELOAD). If | ||
245 | you are using this option in an authorized_keys file, beware that the keys | ||
246 | in question will no longer work until the option is removed. | ||
247 | |||
248 | To re-enable this option, set "PermitUserEnvironment yes" in | ||
249 | /etc/ssh/sshd_config after the upgrade is complete, taking note of the | ||
250 | warning in the sshd_config(5) manual page. | ||
251 | |||
252 | -- Colin Watson <cjwatson@debian.org> Sat, 26 Oct 2002 19:41:51 +0100 | ||
253 | |||
254 | openssh (1:3.0.1p1-1) unstable; urgency=high | ||
255 | |||
256 | As of version 3, OpenSSH no longer uses separate files for ssh1 and ssh2 | ||
257 | keys. This means the authorized_keys2 and known_hosts2 files are no longer | ||
258 | needed. They will still be read in order to maintain backward | ||
259 | compatibility. | ||
260 | |||
261 | -- Matthew Vernon <matthew@debian.org> Thu, 28 Nov 2001 17:43:01 +0000 | ||
diff --git a/debian/README.Debian b/debian/README.Debian new file mode 100644 index 000000000..dbe6c2958 --- /dev/null +++ b/debian/README.Debian | |||
@@ -0,0 +1,295 @@ | |||
1 | OpenSSH for Debian | ||
2 | ------------------ | ||
3 | |||
4 | UPGRADE ISSUES | ||
5 | ============== | ||
6 | |||
7 | PermitRootLogin | ||
8 | --------------- | ||
9 | |||
10 | As of 1:6.6p1-1, new installations will be set to "PermitRootLogin | ||
11 | without-password" (or the synonymous "PermitRootLogin prohibit-password" as | ||
12 | of 1:7.1p1-1). This disables password authentication for root, foiling | ||
13 | password dictionary attacks on the root user. Some sites may wish to use | ||
14 | the stronger "PermitRootLogin forced-commands-only" or "PermitRootLogin no", | ||
15 | but note that "PermitRootLogin no" will break setups that SSH to root with a | ||
16 | forced command to take full-system backups. You can use PermitRootLogin in | ||
17 | a Match block if you want finer-grained control here. | ||
18 | |||
19 | For many years Debian's OpenSSH packaging used "PermitRootLogin yes", in | ||
20 | line with upstream. To avoid breaking local setups, this is still true for | ||
21 | installations upgraded from before 1:6.6p1-1. If you wish to change this, | ||
22 | you should edit /etc/ssh/sshd_config, change it manually, and run "service | ||
23 | ssh restart" as root. | ||
24 | |||
25 | Disabling PermitRootLogin means that an attacker possessing credentials for | ||
26 | the root account (any credentials in the case of "yes", or private key | ||
27 | material in the case of "prohibit-password") must compromise a normal user | ||
28 | account rather than being able to SSH directly to root. Be careful to avoid | ||
29 | a false illusion of security if you change this setting; any account you | ||
30 | escalate to root from should be considered equivalent to root for the | ||
31 | purposes of security against external attack. You might for example disable | ||
32 | it if you know you will only ever log in as root from the physical console. | ||
33 | |||
34 | Since the root account does not generally have non-password credentials | ||
35 | unless you explicitly install an SSH public key in its | ||
36 | ~/.ssh/authorized_keys, which you presumably only do if you want to SSH to | ||
37 | it, "prohibit-password" should be a reasonable default for most sites. | ||
38 | |||
39 | As of OpenSSH 7.0, this is the upstream default. | ||
40 | |||
41 | For further discussion, see: | ||
42 | |||
43 | https://bugs.debian.org/298138 | ||
44 | https://bugzilla.mindrot.org/show_bug.cgi?id=2164 | ||
45 | |||
46 | X11 Forwarding | ||
47 | -------------- | ||
48 | |||
49 | ssh's default for ForwardX11 has been changed to ``no'' because it has | ||
50 | been pointed out that logging into remote systems administered by | ||
51 | untrusted people is likely to open you up to X11 attacks, so you | ||
52 | should have to actively decide that you trust the remote machine's | ||
53 | root, before enabling X11. I strongly recommend that you do this on a | ||
54 | machine-by-machine basis, rather than just enabling it in the default | ||
55 | host settings. | ||
56 | |||
57 | In order for X11 forwarding to work, you need to install xauth on the | ||
58 | server. In Debian this is in the xbase-clients package. | ||
59 | |||
60 | As of OpenSSH 3.1, the remote $DISPLAY uses localhost by default to reduce | ||
61 | the security risks of X11 forwarding. Look up X11UseLocalhost in | ||
62 | sshd_config(8) if this is a problem. | ||
63 | |||
64 | OpenSSH 3.8 invented ForwardX11Trusted, which when set to no causes the | ||
65 | ssh client to create an untrusted X cookie so that attacks on the | ||
66 | forwarded X11 connection can't become attacks on X clients on the remote | ||
67 | machine. However, this has some problems in implementation - notably a | ||
68 | very short timeout of the untrusted cookie - breaks large numbers of | ||
69 | existing setups, and generally seems immature. The Debian package | ||
70 | therefore sets the default for this option to "yes" (in ssh itself, | ||
71 | rather than in ssh_config). | ||
72 | |||
73 | Fallback to RSH | ||
74 | --------------- | ||
75 | |||
76 | The default for this setting has been changed from Yes to No, for | ||
77 | security reasons, and to stop the delay attempting to rsh to machines | ||
78 | that don't offer the service. Simply switch it back on in either | ||
79 | /etc/ssh/ssh_config or ~/.ssh/config for those machines that you need | ||
80 | it for. | ||
81 | |||
82 | Setgid ssh-agent and environment variables | ||
83 | ------------------------------------------ | ||
84 | |||
85 | As of version 1:3.5p1-1, ssh-agent is installed setgid to prevent ptrace() | ||
86 | attacks retrieving private key material. This has the side-effect of causing | ||
87 | glibc to remove certain environment variables which might have security | ||
88 | implications for set-id programs, including LD_PRELOAD, LD_LIBRARY_PATH, and | ||
89 | TMPDIR. | ||
90 | |||
91 | If you need to set any of these environment variables, you will need to do | ||
92 | so in the program exec()ed by ssh-agent. This may involve creating a small | ||
93 | wrapper script. | ||
94 | |||
95 | Symlink Hostname invocation | ||
96 | --------------------------- | ||
97 | |||
98 | This version of ssh no longer includes support for invoking ssh with the | ||
99 | hostname as the name of the file run. People wanting this support should | ||
100 | use the ssh-argv0 script. | ||
101 | |||
102 | =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= | ||
103 | |||
104 | OTHER ISSUES | ||
105 | ============ | ||
106 | |||
107 | Authorization Forwarding | ||
108 | ------------------------ | ||
109 | |||
110 | Similarly, root on a remote server could make use of your ssh-agent | ||
111 | (while you're logged into their machine) to obtain access to machines | ||
112 | which trust your keys. This feature is therefore disabled by default. | ||
113 | You should only re-enable it for those hosts (in your ~/.ssh/config or | ||
114 | /etc/ssh/ssh_config) where you are confident that the remote machine | ||
115 | is not a threat. | ||
116 | |||
117 | Problems logging in with RSA authentication | ||
118 | ------------------------------------------- | ||
119 | |||
120 | If you have trouble logging in with RSA authentication then the | ||
121 | problem is probably caused by the fact that you have your home | ||
122 | directory writable by group, as well as user (this is the default on | ||
123 | Debian systems). | ||
124 | |||
125 | Depending upon other settings on your system (i.e. other users being | ||
126 | in your group) this could open a security hole, so you will need to | ||
127 | make your home directory writable only by yourself. Run this command, | ||
128 | as yourself: | ||
129 | |||
130 | chmod g-w ~/ | ||
131 | |||
132 | to remove group write permissions. If you use ssh-copy-id to install your | ||
133 | keys, it does this for you. | ||
134 | |||
135 | -L option of ssh nonfree | ||
136 | ------------------------ | ||
137 | |||
138 | non-free ssh supported the usage of the option -L to use a non privileged | ||
139 | port for scp. This option will not be supported by scp from openssh. | ||
140 | |||
141 | Please use instead scp -o "UsePrivilegedPort=no" as documented in the | ||
142 | manpage to scp itself. | ||
143 | |||
144 | Problem logging in because of TCP-Wrappers | ||
145 | ------------------------------------------ | ||
146 | |||
147 | ssh is compiled with support for tcp-wrappers. So if you can no longer | ||
148 | log into your system, please check that /etc/hosts.allow and /etc/hosts.deny | ||
149 | are configured so that ssh is not blocked. | ||
150 | |||
151 | Kerberos support | ||
152 | ---------------- | ||
153 | |||
154 | ssh is now compiled with Kerberos support. Unfortunately, privilege | ||
155 | separation is incompatible with parts of Kerberos support for protocol 2; | ||
156 | you may need to run kinit after logging in. | ||
157 | |||
158 | Interoperability between scp and the ssh.com SSH server | ||
159 | ------------------------------------------------------- | ||
160 | |||
161 | In version 2 and greater of the commercial SSH server produced by SSH | ||
162 | Communications Security, scp was changed to use SFTP (SSH2's file transfer | ||
163 | protocol) instead of the traditional rcp-over-ssh, thereby breaking | ||
164 | compatibility. The OpenSSH developers regard this as a bug in the ssh.com | ||
165 | server, and do not currently intend to change OpenSSH's scp to match. | ||
166 | |||
167 | Workarounds for this problem are to install scp1 on the server (scp2 will | ||
168 | fall back to it), to use sftp, or to use some other transfer mechanism such | ||
169 | as rsync-over-ssh or tar-over-ssh. | ||
170 | |||
171 | Running sshd from inittab | ||
172 | ------------------------- | ||
173 | |||
174 | Some people find it useful to run the sshd server from inittab, to make sure | ||
175 | that it always stays running. To do this, stop sshd ('service ssh stop'), | ||
176 | add the following line to /etc/inittab, and run 'telinit q': | ||
177 | |||
178 | ss:2345:respawn:/usr/sbin/sshd -D | ||
179 | |||
180 | If you do this, note that you will need to stop sshd being started in the | ||
181 | normal way ('update-rc.d ssh disable') and that you will need to restart | ||
182 | this sshd manually on upgrades. | ||
183 | |||
184 | Per-connection sshd instances with systemd | ||
185 | ------------------------------------------ | ||
186 | |||
187 | If you want to reconfigure systemd to listen on port 22 itself and launch an | ||
188 | instance of sshd for each connection (inetd-style socket activation), then | ||
189 | you can run: | ||
190 | |||
191 | systemctl stop ssh.service | ||
192 | systemctl start ssh.socket | ||
193 | |||
194 | To make this permanent: | ||
195 | |||
196 | systemctl disable ssh.service | ||
197 | systemctl enable ssh.socket | ||
198 | |||
199 | This may be appropriate in environments where minimal footprint is critical | ||
200 | (e.g. cloud guests). Be aware that this bypasses MaxStartups, and systemd's | ||
201 | MaxConnections cannot quite replace this as it cannot distinguish between | ||
202 | authenticated and unauthenticated connections; see | ||
203 | https://bugzilla.redhat.com/show_bug.cgi?id=963268 for more discussion. | ||
204 | |||
205 | The provided ssh.socket unit file sets ListenStream=22. If you need to have | ||
206 | it listen on a different address or port, then you will need to do this as | ||
207 | follows (modifying ListenStream to match your requirements): | ||
208 | |||
209 | mkdir -p /etc/systemd/system/ssh.socket.d | ||
210 | cat >/etc/systemd/system/ssh.socket.d/listen.conf <<EOF | ||
211 | [Socket] | ||
212 | ListenStream=2222 | ||
213 | EOF | ||
214 | systemctl daemon-reload | ||
215 | |||
216 | See systemd.socket(5) for details. | ||
217 | |||
218 | Terminating SSH sessions cleanly on shutdown/reboot with systemd | ||
219 | ---------------------------------------------------------------- | ||
220 | |||
221 | If you have libpam-systemd >= 230 installed (following openssh-server's | ||
222 | Recommends) and "UsePAM yes" in sshd_config (the default configuration | ||
223 | shipped by this package), then SSH sessions will be terminated cleanly when | ||
224 | the server is shut down or rebooted. | ||
225 | |||
226 | If either of these conditions does not hold, then you may find that SSH | ||
227 | sessions hang silently when the server is shut down or rebooted. If you do | ||
228 | not want to use PAM or configure it properly for whatever reason, then you | ||
229 | can instead copy | ||
230 | /usr/share/doc/openssh-server/examples/ssh-session-cleanup.service to | ||
231 | /etc/systemd/system/ and run "systemctl enable ssh-session-cleanup.service". | ||
232 | |||
233 | Non-systemd users may find /usr/lib/openssh/ssh-session-cleanup helpful if | ||
234 | they have a similar problem, although at present there is no system | ||
235 | integration for this for anything other than systemd. | ||
236 | |||
237 | SSH protocol 1 server support removed | ||
238 | ------------------------------------- | ||
239 | |||
240 | sshd(8) no longer supports the old SSH protocol 1, so all the configuration | ||
241 | options related to it are now deprecated and should be removed from | ||
242 | /etc/ssh/sshd_config. These are: | ||
243 | |||
244 | KeyRegenerationInterval | ||
245 | RSAAuthentication | ||
246 | RhostsRSAAuthentication | ||
247 | ServerKeyBits | ||
248 | |||
249 | The Protocol option is also no longer needed, although it is silently | ||
250 | ignored rather than deprecated. | ||
251 | |||
252 | if-up hook removed | ||
253 | ------------------ | ||
254 | |||
255 | openssh-server previously shipped an if-up hook that restarted sshd when a | ||
256 | network interface came up. This generally caused more problems than it | ||
257 | solved: for instance, it means that sshd stops listening briefly while being | ||
258 | restarted, which can cause problems in some environments, particularly | ||
259 | automated tests. | ||
260 | |||
261 | The only known situation where the if-up hook was useful was when | ||
262 | sshd_config was changed to add ListenAddress entries for particular IP | ||
263 | addresses, overriding the default of listening on all addresses, and the | ||
264 | system is one that often roams between networks. In such a situation, it is | ||
265 | better to remove ListenAddress entries from sshd_config (restoring it to the | ||
266 | default behaviour) and instead use firewall rules to restrict incoming SSH | ||
267 | connections to only the desired interfaces or addresses. | ||
268 | |||
269 | For further discussion, see: | ||
270 | |||
271 | https://bugs.launchpad.net/bugs/1674330 | ||
272 | |||
273 | IPQoS defaults reverted to pre-7.8 values | ||
274 | ----------------------------------------- | ||
275 | |||
276 | OpenSSH 7.8 changed the default IPQoS settings to use DSCP AF21 for | ||
277 | interactive traffic and CS1 for bulk. This caused some problems with other | ||
278 | software ("iptables -m tos" and VMware), so Debian's OpenSSH reverts this | ||
279 | change for the time being. | ||
280 | |||
281 | This is *temporary*, and we expect to come back into sync with upstream | ||
282 | OpenSSH once those other issues have been fixed. If you want to restore the | ||
283 | upstream default, add this to ssh_config and sshd_config: | ||
284 | |||
285 | IPQoS af21 cs1 | ||
286 | |||
287 | For further discussion, see: | ||
288 | |||
289 | https://bugs.debian.org/923879 | ||
290 | https://bugs.debian.org/926229 | ||
291 | https://bugs.launchpad.net/1822370 | ||
292 | |||
293 | -- | ||
294 | Matthew Vernon <matthew@debian.org> | ||
295 | Colin Watson <cjwatson@debian.org> | ||
diff --git a/debian/adjust-openssl-dependencies b/debian/adjust-openssl-dependencies new file mode 100755 index 000000000..1cd7f2997 --- /dev/null +++ b/debian/adjust-openssl-dependencies | |||
@@ -0,0 +1,36 @@ | |||
1 | #! /bin/sh | ||
2 | # Attempt to tighten libssl dependencies to match the check in entropy.c. | ||
3 | # Must be run after dpkg-shlibdeps. | ||
4 | |||
5 | client=debian/openssh-client.substvars | ||
6 | server=debian/openssh-server.substvars | ||
7 | |||
8 | libssl_version="$(dpkg-query -W libssl-dev 2>/dev/null | cut -f2)" | ||
9 | if [ -z "$libssl_version" ]; then | ||
10 | echo "Can't find libssl-dev version; leaving dependencies alone." | ||
11 | exit 0 | ||
12 | fi | ||
13 | libssl_version="$(echo "$libssl_version" | sed 's/[a-z-].*//')" | ||
14 | |||
15 | libssl_package="$(sed -n 's/.*[= ]\(libssl[0-9][a-z0-9+.-]*\).*/\1/p' "$client")" | ||
16 | if [ "$libssl_package" ]; then | ||
17 | new_dep="$libssl_package (>= $libssl_version)" | ||
18 | sed -i "/^shlibs:Depends=/s/\$/, $new_dep/" "$client" | ||
19 | sed -i "/^shlibs:Depends=/s/\$/, $new_dep/" "$server" | ||
20 | fi | ||
21 | |||
22 | client_udeb=debian/openssh-client-udeb.substvars | ||
23 | server_udeb=debian/openssh-server-udeb.substvars | ||
24 | |||
25 | libcrypto_package="$(sed -n 's/.*[= ]\(libcrypto[0-9][a-z0-9+.-]*\).*/\1/p' "$client_udeb")" | ||
26 | if [ "$libcrypto_package" ]; then | ||
27 | new_dep="$libcrypto_package (>= $libssl_version)" | ||
28 | if [ -e "$client_udeb" ]; then | ||
29 | sed -i "/^shlibs:Depends=/s/\$/, $new_dep/" "$client_udeb" | ||
30 | fi | ||
31 | if [ -e "$server_udeb" ]; then | ||
32 | sed -i "/^shlibs:Depends=/s/\$/, $new_dep/" "$server_udeb" | ||
33 | fi | ||
34 | fi | ||
35 | |||
36 | exit 0 | ||
diff --git a/debian/agent-launch b/debian/agent-launch new file mode 100755 index 000000000..f3cbfaef8 --- /dev/null +++ b/debian/agent-launch | |||
@@ -0,0 +1,23 @@ | |||
1 | #!/bin/sh | ||
2 | # helper script for launching ssh-agent, used by systemd unit | ||
3 | set -e | ||
4 | |||
5 | if [ ! -d "$XDG_RUNTIME_DIR" ]; then | ||
6 | echo 'This needs $XDG_RUNTIME_DIR to be set' >&2 | ||
7 | exit 1 | ||
8 | fi | ||
9 | |||
10 | if [ "$1" = start ]; then | ||
11 | if [ -z "$SSH_AUTH_SOCK" ] && grep -s -q '^use-ssh-agent$' /etc/X11/Xsession.options; then | ||
12 | S="$XDG_RUNTIME_DIR/openssh_agent" | ||
13 | dbus-update-activation-environment --verbose --systemd SSH_AUTH_SOCK=$S SSH_AGENT_LAUNCHER=openssh | ||
14 | exec ssh-agent -D -a $S | ||
15 | fi | ||
16 | elif [ "$1" = stop ]; then | ||
17 | if [ "$SSH_AGENT_LAUNCHER" = openssh ]; then | ||
18 | dbus-update-activation-environment --systemd SSH_AUTH_SOCK= | ||
19 | fi | ||
20 | else | ||
21 | echo "Unknown command $1" >&2 | ||
22 | exit 1 | ||
23 | fi | ||
diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 000000000..5c076b2ff --- /dev/null +++ b/debian/changelog | |||
@@ -0,0 +1,5548 @@ | |||
1 | openssh (1:8.0p1-2) UNRELEASED; urgency=medium | ||
2 | |||
3 | * Fix interop tests for recent regress changes. | ||
4 | |||
5 | -- Colin Watson <cjwatson@debian.org> Fri, 14 Jun 2019 12:05:23 +0100 | ||
6 | |||
7 | openssh (1:8.0p1-1) experimental; urgency=medium | ||
8 | |||
9 | * New upstream release (https://www.openssh.com/txt/release-8.0, closes: | ||
10 | #927792): | ||
11 | - ssh(1), ssh-agent(1), ssh-add(1): Add support for ECDSA keys in | ||
12 | PKCS#11 tokens (LP: #1665695). | ||
13 | - ssh(1), sshd(8): Add experimental quantum-computing resistant key | ||
14 | exchange method, based on a combination of Streamlined NTRU Prime | ||
15 | 4591^761 and X25519. | ||
16 | - ssh-keygen(1): Increase the default RSA key size to 3072 bits, | ||
17 | following NIST Special Publication 800-57's guidance for a 128-bit | ||
18 | equivalent symmetric security level (LP: #1445625). | ||
19 | - ssh(1): Allow "PKCS11Provider=none" to override later instances of the | ||
20 | PKCS11Provider directive in ssh_config. | ||
21 | - sshd(8): Add a log message for situations where a connection is | ||
22 | dropped for attempting to run a command but a sshd_config | ||
23 | ForceCommand=internal-sftp restriction is in effect. | ||
24 | - ssh(1): When prompting whether to record a new host key, accept the | ||
25 | key fingerprint as a synonym for "yes". This allows the user to paste | ||
26 | a fingerprint obtained out of band at the prompt and have the client | ||
27 | do the comparison for you. | ||
28 | - ssh-keygen(1): When signing multiple certificates on a single | ||
29 | command-line invocation, allow automatically incrementing the | ||
30 | certificate serial number. | ||
31 | - scp(1), sftp(1): Accept -J option as an alias to ProxyJump on the scp | ||
32 | and sftp command-lines. | ||
33 | - ssh-agent(1), ssh-pkcs11-helper(8), ssh-add(1): Accept "-v" | ||
34 | command-line flags to increase the verbosity of output; pass verbose | ||
35 | flags though to subprocesses, such as ssh-pkcs11-helper started from | ||
36 | ssh-agent. | ||
37 | - ssh-add(1): Add a "-T" option to allowing testing whether keys in an | ||
38 | agent are usable by performing a signature and a verification. | ||
39 | - sftp-server(8): Add a "lsetstat@openssh.com" protocol extension that | ||
40 | replicates the functionality of the existing SSH2_FXP_SETSTAT | ||
41 | operation but does not follow symlinks. | ||
42 | - sftp(1): Add "-h" flag to chown/chgrp/chmod commands to request they | ||
43 | do not follow symlinks. | ||
44 | - sshd(8): Expose $SSH_CONNECTION in the PAM environment. This makes | ||
45 | the connection 4-tuple available to PAM modules that wish to use it in | ||
46 | decision-making. | ||
47 | - sshd(8): Add a ssh_config "Match final" predicate. Matches in same | ||
48 | pass as "Match canonical" but doesn't require hostname | ||
49 | canonicalisation be enabled. | ||
50 | - sftp(1): Support a prefix of '@' to suppress echo of sftp batch | ||
51 | commands. | ||
52 | - ssh-keygen(1): When printing certificate contents using "ssh-keygen | ||
53 | -Lf /path/certificate", include the algorithm that the CA used to sign | ||
54 | the cert. | ||
55 | - sshd(8): Fix authentication failures when sshd_config contains | ||
56 | "AuthenticationMethods any" inside a Match block that overrides a more | ||
57 | restrictive default. | ||
58 | - sshd(8): Avoid sending duplicate keepalives when ClientAliveCount is | ||
59 | enabled. | ||
60 | - sshd(8): Fix two race conditions related to SIGHUP daemon restart. | ||
61 | Remnant file descriptors in recently-forked child processes could | ||
62 | block the parent sshd's attempt to listen(2) to the configured | ||
63 | addresses. Also, the restarting parent sshd could exit before any | ||
64 | child processes that were awaiting their re-execution state had | ||
65 | completed reading it, leaving them in a fallback path. | ||
66 | - ssh(1): Fix stdout potentially being redirected to /dev/null when | ||
67 | ProxyCommand=- was in use. | ||
68 | - sshd(8): Avoid sending SIGPIPE to child processes if they attempt to | ||
69 | write to stderr after their parent processes have exited. | ||
70 | - ssh(1): Fix bad interaction between the ssh_config ConnectTimeout and | ||
71 | ConnectionAttempts directives - connection attempts after the first | ||
72 | were ignoring the requested timeout (LP: #1798049). | ||
73 | - ssh-keyscan(1): Return a non-zero exit status if no keys were found | ||
74 | (closes: #374980, LP: #1661745). | ||
75 | - scp(1): Sanitize scp filenames to allow UTF-8 characters without | ||
76 | terminal control sequences. | ||
77 | - sshd(8): Fix confusion between ClientAliveInterval and time-based | ||
78 | RekeyLimit that could cause connections to be incorrectly closed. | ||
79 | - ssh(1), ssh-add(1): Correct some bugs in PKCS#11 token PIN handling at | ||
80 | initial token login. The attempt to read the PIN could be skipped in | ||
81 | some cases, particularly on devices with integrated PIN readers. This | ||
82 | would lead to an inability to retrieve keys from these tokens. | ||
83 | - ssh(1), ssh-add(1): Support keys on PKCS#11 tokens that set the | ||
84 | CKA_ALWAYS_AUTHENTICATE flag by requring a fresh login after the | ||
85 | C_SignInit operation. | ||
86 | - ssh(1): Improve documentation for ProxyJump/-J, clarifying that local | ||
87 | configuration does not apply to jump hosts. | ||
88 | - ssh-keygen(1): Clarify manual - ssh-keygen -e only writes public keys, | ||
89 | not private. | ||
90 | - ssh(1), sshd(8): be more strict in processing protocol banners, | ||
91 | allowing \r characters only immediately before \n. | ||
92 | - Various: fix a number of memory leaks. | ||
93 | - scp(1), sftp(1): fix calculation of initial bandwidth limits. Account | ||
94 | for bytes written before the timer starts and adjust the schedule on | ||
95 | which recalculations are performed. Avoids an initial burst of | ||
96 | traffic and yields more accurate bandwidth limits. | ||
97 | - sshd(8): Only consider the ext-info-c extension during the initial key | ||
98 | eschange. It shouldn't be sent in subsequent ones, but if it is | ||
99 | present we should ignore it. This prevents sshd from sending a | ||
100 | SSH_MSG_EXT_INFO for REKEX for these buggy clients. | ||
101 | - ssh-keygen(1): Clarify manual that ssh-keygen -F (find host in | ||
102 | authorized_keys) and -R (remove host from authorized_keys) options may | ||
103 | accept either a bare hostname or a [hostname]:port combo. | ||
104 | - ssh(1): Don't attempt to connect to empty SSH_AUTH_SOCK. | ||
105 | - sshd(8): Silence error messages when sshd fails to load some of the | ||
106 | default host keys. Failure to load an explicitly-configured hostkey | ||
107 | is still an error, and failure to load any host key is still fatal. | ||
108 | - ssh(1): Redirect stderr of ProxyCommands to /dev/null when ssh is | ||
109 | started with ControlPersist; prevents random ProxyCommand output from | ||
110 | interfering with session output. | ||
111 | - ssh(1): The ssh client was keeping a redundant ssh-agent socket | ||
112 | (leftover from authentication) around for the life of the connection. | ||
113 | - sshd(8): Fix bug in HostbasedAcceptedKeyTypes and | ||
114 | PubkeyAcceptedKeyTypes options. If only RSA-SHA2 signature types were | ||
115 | specified, then authentication would always fail for RSA keys as the | ||
116 | monitor checks only the base key (not the signature algorithm) type | ||
117 | against *AcceptedKeyTypes. | ||
118 | - ssh(1): Request correct signature types from ssh-agent when | ||
119 | certificate keys and RSA-SHA2 signatures are in use. | ||
120 | - sshd(8): Don't set $MAIL if UsePAM=yes as PAM typically specifies the | ||
121 | user environment if it's enabled (closes: #189920, #532754). | ||
122 | * Mostly resynced GSSAPI key exchange patch with Fedora. Major changes: | ||
123 | - Support selection of GSSAPI key exchange algorithms. | ||
124 | - Support GSSAPI key exchange methods with DH and SHA2. | ||
125 | - Support GSSAPI key exchange using ECDH and SHA2. | ||
126 | - Make sure the Kerberos tickets are cleaned up with the user context. | ||
127 | - Enable gssapi-keyex authentication without gssapi-with-mic. | ||
128 | - Allow querying for GSSAPI key exchange algorithms from ssh (-Q | ||
129 | kex-gss). | ||
130 | * Apply upstream patch to fix the utimensat regression tests when not | ||
131 | using the compatibility implementation. | ||
132 | |||
133 | -- Colin Watson <cjwatson@debian.org> Sun, 09 Jun 2019 22:47:27 +0100 | ||
134 | |||
135 | openssh (1:7.9p1-10) unstable; urgency=medium | ||
136 | |||
137 | * Temporarily revert IPQoS defaults to pre-7.8 values until issues with | ||
138 | "iptables -m tos" and VMware have been fixed (closes: #923879, #926229; | ||
139 | LP: #1822370). | ||
140 | |||
141 | -- Colin Watson <cjwatson@debian.org> Mon, 08 Apr 2019 11:13:04 +0100 | ||
142 | |||
143 | openssh (1:7.9p1-9) unstable; urgency=medium | ||
144 | |||
145 | * Apply upstream patch to make scp handle shell-style brace expansions | ||
146 | when checking that filenames sent by the server match what the client | ||
147 | requested (closes: #923486). | ||
148 | |||
149 | -- Colin Watson <cjwatson@debian.org> Fri, 01 Mar 2019 12:23:36 +0000 | ||
150 | |||
151 | openssh (1:7.9p1-8) unstable; urgency=medium | ||
152 | |||
153 | [ Colin Watson ] | ||
154 | * Apply upstream patch to fix bug in HostbasedAcceptedKeyTypes and | ||
155 | PubkeyAcceptedKeyTypes options in the case where only RSA-SHA2 signature | ||
156 | types were specified. | ||
157 | * Apply upstream patch to request RSA-SHA2 signatures for | ||
158 | rsa-sha2-{256|512}-cert-v01@openssh.com cert algorithms (closes: | ||
159 | #923419). | ||
160 | * Move moduli(5) manual page to openssh-server to go with /etc/ssh/moduli; | ||
161 | forgotten in 1:7.9p1-5. | ||
162 | |||
163 | [ Dominik George ] | ||
164 | * Correctly handle conffile move to openssh-server (closes: #919344). | ||
165 | |||
166 | -- Colin Watson <cjwatson@debian.org> Thu, 28 Feb 2019 19:31:49 +0000 | ||
167 | |||
168 | openssh (1:7.9p1-7) unstable; urgency=medium | ||
169 | |||
170 | * Recommend "default-logind | logind | libpam-systemd" rather than just | ||
171 | libpam-systemd (closes: #923199). (I've retained libpam-systemd as an | ||
172 | alternative for a while to avoid backporting accidents, although it can | ||
173 | be removed later.) | ||
174 | * Pass "--exec /usr/sbin/sshd" to start-stop-daemon on stop as well as | ||
175 | start and pass "--chuid 0:0" on start, to avoid problems with non-root | ||
176 | groups leaking into the ownership of /run/sshd.pid (closes: #922365). | ||
177 | |||
178 | -- Colin Watson <cjwatson@debian.org> Tue, 26 Feb 2019 15:13:23 +0000 | ||
179 | |||
180 | openssh (1:7.9p1-6) unstable; urgency=medium | ||
181 | |||
182 | * CVE-2019-6109: Apply upstream patches to sanitize scp filenames via | ||
183 | snmprintf (closes: #793412). | ||
184 | * CVE-2019-6111: Apply upstream patch to check in scp client that | ||
185 | filenames sent during remote->local directory copies satisfy the | ||
186 | wildcard specified by the user. | ||
187 | |||
188 | -- Colin Watson <cjwatson@debian.org> Fri, 08 Feb 2019 16:26:35 +0000 | ||
189 | |||
190 | openssh (1:7.9p1-5) unstable; urgency=high | ||
191 | |||
192 | * Move /etc/ssh/moduli to openssh-server, since it's reasonably large and | ||
193 | only used by sshd (closes: #858050). | ||
194 | * Drop obsolete alternate build-dependency on libssl1.0-dev (closes: | ||
195 | #917342). | ||
196 | * CVE-2018-20685: Apply upstream scp patch to disallow empty incoming | ||
197 | filename or ones that refer to the current directory (closes: #919101). | ||
198 | |||
199 | -- Colin Watson <cjwatson@debian.org> Sun, 13 Jan 2019 11:22:45 +0000 | ||
200 | |||
201 | openssh (1:7.9p1-4) unstable; urgency=medium | ||
202 | |||
203 | * Fix Ubuntu detection in debian/rules, since the documentation comment | ||
204 | for dpkg_vendor_derives_from is wrong (thanks, Jeremy Bicha; see | ||
205 | #913816). | ||
206 | |||
207 | -- Colin Watson <cjwatson@debian.org> Fri, 16 Nov 2018 11:27:28 +0000 | ||
208 | |||
209 | openssh (1:7.9p1-3) unstable; urgency=medium | ||
210 | |||
211 | * Be more specific about what files to install in openssh-tests, to avoid | ||
212 | installing a symlink into the build tree. | ||
213 | * Re-export debian/upstream/signing-key.asc without extra signatures. | ||
214 | * Restore direct test dependencies on openssl, putty-tools, and | ||
215 | python-twisted-conch; these are really only indirect dependencies via | ||
216 | openssh-tests, but including them means that this package will be | ||
217 | retested when they change. | ||
218 | |||
219 | -- Colin Watson <cjwatson@debian.org> Thu, 15 Nov 2018 01:30:56 +0000 | ||
220 | |||
221 | openssh (1:7.9p1-2) unstable; urgency=medium | ||
222 | |||
223 | * Add GitLab CI configuration. | ||
224 | * Make the autopkgtest create /run/sshd if it doesn't already exist. | ||
225 | * Drop "set -x" verbosity from the autopkgtest; I think we can do without | ||
226 | this in most cases nowadays. | ||
227 | * Add an openssh-tests binary package containing enough files to run the | ||
228 | upstream regression tests. This allows autopkgtest to run more | ||
229 | efficiently, as it doesn't have to build part of the source tree again. | ||
230 | |||
231 | -- Colin Watson <cjwatson@debian.org> Wed, 14 Nov 2018 15:55:48 +0000 | ||
232 | |||
233 | openssh (1:7.9p1-1) unstable; urgency=medium | ||
234 | |||
235 | * New upstream release (https://www.openssh.com/txt/release-7.9): | ||
236 | - ssh(1), sshd(8): allow most port numbers to be specified using service | ||
237 | names from getservbyname(3) (typically /etc/services; closes: | ||
238 | #177406). | ||
239 | - ssh(1): allow the IdentityAgent configuration directive to accept | ||
240 | environment variable names. This supports the use of multiple agent | ||
241 | sockets without needing to use fixed paths. | ||
242 | - sshd(8): support signalling sessions via the SSH protocol. A limited | ||
243 | subset of signals is supported and only for login or command sessions | ||
244 | (i.e. not subsystems) that were not subject to a forced command via | ||
245 | authorized_keys or sshd_config. | ||
246 | - ssh(1): support "ssh -Q sig" to list supported signature options. | ||
247 | Also "ssh -Q help" to show the full set of supported queries. | ||
248 | - ssh(1), sshd(8): add a CASignatureAlgorithms option for the client and | ||
249 | server configs to allow control over which signature formats are | ||
250 | allowed for CAs to sign certificates. For example, this allows | ||
251 | banning CAs that sign certificates using the RSA-SHA1 signature | ||
252 | algorithm. | ||
253 | - sshd(8), ssh-keygen(1): allow key revocation lists (KRLs) to revoke | ||
254 | keys specified by SHA256 hash. | ||
255 | - ssh-keygen(1): allow creation of key revocation lists directly from | ||
256 | base64-encoded SHA256 fingerprints. This supports revoking keys using | ||
257 | only the information contained in sshd(8) authentication log messages. | ||
258 | - ssh(1), ssh-keygen(1): avoid spurious "invalid format" errors when | ||
259 | attempting to load PEM private keys while using an incorrect | ||
260 | passphrase. | ||
261 | - sshd(8): when a channel closed message is received from a client, | ||
262 | close the stderr file descriptor at the same time stdout is closed. | ||
263 | This avoids stuck processes if they were waiting for stderr to close | ||
264 | and were insensitive to stdin/out closing (closes: #844494). | ||
265 | - ssh(1): allow ForwardX11Timeout=0 to disable the untrusted X11 | ||
266 | forwarding timeout and support X11 forwarding indefinitely. | ||
267 | Previously the behaviour of ForwardX11Timeout=0 was undefined. | ||
268 | - sshd(8): when compiled with GSSAPI support, cache supported method | ||
269 | OIDs regardless of whether GSSAPI authentication is enabled in the | ||
270 | main section of sshd_config. This avoids sandbox violations if GSSAPI | ||
271 | authentication was later enabled in a Match block. | ||
272 | - sshd(8): do not fail closed when configured with a text key revocation | ||
273 | list that contains a too-short key. | ||
274 | - ssh(1): treat connections with ProxyJump specified the same as ones | ||
275 | with a ProxyCommand set with regards to hostname canonicalisation | ||
276 | (i.e. don't try to canonicalise the hostname unless | ||
277 | CanonicalizeHostname is set to 'always'). | ||
278 | - ssh(1): fix regression in OpenSSH 7.8 that could prevent public-key | ||
279 | authentication using certificates hosted in a ssh-agent(1) or against | ||
280 | sshd(8) from OpenSSH <7.8 (LP: #1790963). | ||
281 | - All: support building against the openssl-1.1 API (releases 1.1.0g and | ||
282 | later). The openssl-1.0 API will remain supported at least until | ||
283 | OpenSSL terminates security patch support for that API version | ||
284 | (closes: #828475). | ||
285 | - sshd(8): allow the futex(2) syscall in the Linux seccomp sandbox; | ||
286 | apparently required by some glibc/OpenSSL combinations. | ||
287 | * Remove dh_builddeb override to use xz compression; this has been the | ||
288 | default since dpkg 1.17.0. | ||
289 | * Simplify debian/rules using /usr/share/dpkg/default.mk. | ||
290 | * Remove /etc/network/if-up.d/openssh-server, as it causes more problems | ||
291 | than it solves (thanks, Christian Ehrhardt, Andreas Hasenack, and David | ||
292 | Britton; closes: #789532, LP: #1037738, #1674330, #1718227). Add an | ||
293 | "if-up hook removed" section to README.Debian documenting the corner | ||
294 | case that may need configuration adjustments. | ||
295 | |||
296 | -- Colin Watson <cjwatson@debian.org> Sun, 21 Oct 2018 10:39:24 +0100 | ||
297 | |||
298 | openssh (1:7.8p1-1) unstable; urgency=medium | ||
299 | |||
300 | * New upstream release (https://www.openssh.com/txt/release-7.8, closes: | ||
301 | #907534): | ||
302 | - ssh-keygen(1): Write OpenSSH format private keys by default instead of | ||
303 | using OpenSSL's PEM format (closes: #905407). The OpenSSH format, | ||
304 | supported in OpenSSH releases since 2014 and described in the | ||
305 | PROTOCOL.key file in the source distribution, offers substantially | ||
306 | better protection against offline password guessing and supports key | ||
307 | comments in private keys. If necessary, it is possible to write old | ||
308 | PEM-style keys by adding "-m PEM" to ssh-keygen's arguments when | ||
309 | generating or updating a key. | ||
310 | - sshd(8): Remove internal support for S/Key multiple factor | ||
311 | authentication. S/Key may still be used via PAM or BSD auth. | ||
312 | - ssh(1): Remove vestigial support for running ssh(1) as setuid. This | ||
313 | used to be required for hostbased authentication and the (long gone) | ||
314 | rhosts-style authentication, but has not been necessary for a long | ||
315 | time. Attempting to execute ssh as a setuid binary, or with uid != | ||
316 | effective uid will now yield a fatal error at runtime. | ||
317 | - sshd(8): The semantics of PubkeyAcceptedKeyTypes and the similar | ||
318 | HostbasedAcceptedKeyTypes options have changed. These now specify | ||
319 | signature algorithms that are accepted for their respective | ||
320 | authentication mechanism, where previously they specified accepted key | ||
321 | types. This distinction matters when using the RSA/SHA2 signature | ||
322 | algorithms "rsa-sha2-256", "rsa-sha2-512" and their certificate | ||
323 | counterparts. Configurations that override these options but omit | ||
324 | these algorithm names may cause unexpected authentication failures (no | ||
325 | action is required for configurations that accept the default for | ||
326 | these options). | ||
327 | - sshd(8): The precedence of session environment variables has changed. | ||
328 | ~/.ssh/environment and environment="..." options in authorized_keys | ||
329 | files can no longer override SSH_* variables set implicitly by sshd. | ||
330 | - ssh(1)/sshd(8): The default IPQoS used by ssh/sshd has changed. They | ||
331 | will now use DSCP AF21 for interactive traffic and CS1 for bulk. For | ||
332 | a detailed rationale, please see the commit message: | ||
333 | https://cvsweb.openbsd.org/src/usr.bin/ssh/readconf.c#rev1.284 | ||
334 | - ssh(1)/sshd(8): Add new signature algorithms "rsa-sha2-256-cert- | ||
335 | v01@openssh.com" and "rsa-sha2-512-cert-v01@openssh.com" to explicitly | ||
336 | force use of RSA/SHA2 signatures in authentication. | ||
337 | - sshd(8): Extend the PermitUserEnvironment option to accept a whitelist | ||
338 | of environment variable names in addition to global "yes" or "no" | ||
339 | settings. | ||
340 | - sshd(8): Add a PermitListen directive to sshd_config(5) and a | ||
341 | corresponding permitlisten= authorized_keys option that control which | ||
342 | listen addresses and port numbers may be used by remote forwarding | ||
343 | (ssh -R ...). | ||
344 | - sshd(8): Add some countermeasures against timing attacks used for | ||
345 | account validation/enumeration. sshd will enforce a minimum time or | ||
346 | each failed authentication attempt consisting of a global 5ms minimum | ||
347 | plus an additional per-user 0-4ms delay derived from a host secret. | ||
348 | - sshd(8): Add a SetEnv directive to allow an administrator to | ||
349 | explicitly specify environment variables in sshd_config. Variables | ||
350 | set by SetEnv override the default and client-specified environment. | ||
351 | - ssh(1): Add a SetEnv directive to request that the server sets an | ||
352 | environment variable in the session. Similar to the existing SendEnv | ||
353 | option, these variables are set subject to server configuration. | ||
354 | - ssh(1): Allow "SendEnv -PATTERN" to clear environment variables | ||
355 | previously marked for sending to the server (closes: #573316). | ||
356 | - ssh(1)/sshd(8): Make UID available as a %-expansion everywhere that | ||
357 | the username is available currently. | ||
358 | - ssh(1): Allow setting ProxyJump=none to disable ProxyJump | ||
359 | functionality. | ||
360 | - sshd(8): Avoid observable differences in request parsing that could be | ||
361 | used to determine whether a target user is valid. | ||
362 | - ssh(1)/sshd(8): Fix some memory leaks. | ||
363 | - ssh(1): Fix a pwent clobber (introduced in openssh-7.7) that could | ||
364 | occur during key loading, manifesting as crash on some platforms. | ||
365 | - sshd_config(5): Clarify documentation for AuthenticationMethods | ||
366 | option. | ||
367 | - ssh(1): Ensure that the public key algorithm sent in a public key | ||
368 | SSH_MSG_USERAUTH_REQUEST matches the content of the signature blob. | ||
369 | Previously, these could be inconsistent when a legacy or non-OpenSSH | ||
370 | ssh-agent returned a RSA/SHA1 signature when asked to make a RSA/SHA2 | ||
371 | signature. | ||
372 | - sshd(8): Fix failures to read authorized_keys caused by faulty | ||
373 | supplemental group caching. | ||
374 | - scp(1): Apply umask to directories, fixing potential mkdir/chmod race | ||
375 | when copying directory trees. | ||
376 | - ssh-keygen(1): Return correct exit code when searching for and hashing | ||
377 | known_hosts entries in a single operation. | ||
378 | - ssh(1): Prefer the ssh binary pointed to via argv[0] to $PATH when | ||
379 | re-executing ssh for ProxyJump. | ||
380 | - sshd(8): Do not ban PTY allocation when a sshd session is restricted | ||
381 | because the user password is expired as it breaks password change | ||
382 | dialog. | ||
383 | - ssh(1)/sshd(8): Fix error reporting from select() failures. | ||
384 | - ssh(1): Improve documentation for -w (tunnel) flag, emphasising that | ||
385 | -w implicitly sets Tunnel=point-to-point. | ||
386 | - ssh-agent(1): Implement EMFILE mitigation for ssh-agent. ssh-agent | ||
387 | will no longer spin when its file descriptor limit is exceeded. | ||
388 | - ssh(1)/sshd(8): Disable SSH2_MSG_DEBUG messages for Twisted Conch | ||
389 | clients. Twisted Conch versions that lack a version number in their | ||
390 | identification strings will mishandle these messages when running on | ||
391 | Python 2.x (https://twistedmatrix.com/trac/ticket/9422). | ||
392 | - sftp(1): Notify user immediately when underlying ssh process dies | ||
393 | expectedly. | ||
394 | - ssh(1)/sshd(8): Fix tunnel forwarding; regression in 7.7 release. | ||
395 | - ssh-agent(1): Don't kill ssh-agent's listening socket entirely if it | ||
396 | fails to accept(2) a connection. | ||
397 | - ssh(1): Add some missing options in the configuration dump output (ssh | ||
398 | -G). | ||
399 | - sshd(8): Expose details of completed authentication to PAM auth | ||
400 | modules via SSH_AUTH_INFO_0 in the PAM environment. | ||
401 | * Switch debian/watch to HTTPS. | ||
402 | * Temporarily work around https://twistedmatrix.com/trac/ticket/9515 in | ||
403 | regression tests. | ||
404 | |||
405 | -- Colin Watson <cjwatson@debian.org> Thu, 30 Aug 2018 15:35:27 +0100 | ||
406 | |||
407 | openssh (1:7.7p1-4) unstable; urgency=high | ||
408 | |||
409 | * CVE-2018-15473: Apply upstream patch to delay bailout for invalid | ||
410 | authenticating user until after the packet containing the request has | ||
411 | been fully parsed (closes: #906236). | ||
412 | |||
413 | -- Colin Watson <cjwatson@debian.org> Fri, 17 Aug 2018 14:09:32 +0100 | ||
414 | |||
415 | openssh (1:7.7p1-3) unstable; urgency=medium | ||
416 | |||
417 | [ Colin Watson ] | ||
418 | * Adjust git-dpm tagging configuration. | ||
419 | * Remove no-longer-used Lintian overrides from openssh-server and ssh. | ||
420 | * Add Documentation keys to ssh-agent.service, ssh.service, and | ||
421 | ssh@.service. | ||
422 | |||
423 | [ Juri Grabowski ] | ||
424 | * Add rescue.target with ssh support. | ||
425 | |||
426 | [ Christian Ehrhardt ] | ||
427 | * Fix unintentional restriction of authorized keys environment options | ||
428 | to be alphanumeric (closes: #903474, LP: #1771011). | ||
429 | |||
430 | -- Colin Watson <cjwatson@debian.org> Tue, 10 Jul 2018 16:07:16 +0100 | ||
431 | |||
432 | openssh (1:7.7p1-2) unstable; urgency=medium | ||
433 | |||
434 | * Fix parsing of DebianBanner option (closes: #894730). | ||
435 | |||
436 | -- Colin Watson <cjwatson@debian.org> Wed, 04 Apr 2018 00:47:29 +0100 | ||
437 | |||
438 | openssh (1:7.7p1-1) unstable; urgency=medium | ||
439 | |||
440 | * New upstream release (https://www.openssh.com/txt/release-7.7): | ||
441 | - ssh(1)/sshd(8): Drop compatibility support for some very old SSH | ||
442 | implementations, including ssh.com <=2.* and OpenSSH <= 3.*. These | ||
443 | versions were all released in or before 2001 and predate the final SSH | ||
444 | RFCs. The support in question isn't necessary for RFC-compliant SSH | ||
445 | implementations. | ||
446 | - Add experimental support for PQC XMSS keys (Extended Hash-Based | ||
447 | Signatures). | ||
448 | - sshd(8): Add an "rdomain" criterion for the sshd_config Match keyword | ||
449 | to allow conditional configuration that depends on which routing | ||
450 | domain a connection was received on. | ||
451 | - sshd_config(5): Add an optional rdomain qualifier to the ListenAddress | ||
452 | directive to allow listening on different routing domains. | ||
453 | - sshd(8): Add "expiry-time" option for authorized_keys files to allow | ||
454 | for expiring keys. | ||
455 | - ssh(1): Add a BindInterface option to allow binding the outgoing | ||
456 | connection to an interface's address (basically a more usable | ||
457 | BindAddress; closes: #289592). | ||
458 | - ssh(1): Expose device allocated for tun/tap forwarding via a new %T | ||
459 | expansion for LocalCommand. This allows LocalCommand to be used to | ||
460 | prepare the interface. | ||
461 | - sshd(8): Expose the device allocated for tun/tap forwarding via a new | ||
462 | SSH_TUNNEL environment variable. This allows automatic setup of the | ||
463 | interface and surrounding network configuration automatically on the | ||
464 | server. | ||
465 | - ssh(1)/scp(1)/sftp(1): Add URI support to ssh, sftp and scp, e.g. | ||
466 | ssh://user@host or sftp://user@host/path. Additional connection | ||
467 | parameters described in draft-ietf-secsh-scp-sftp-ssh-uri-04 are not | ||
468 | implemented since the ssh fingerprint format in the draft uses the | ||
469 | deprecated MD5 hash with no way to specify any other algorithm. | ||
470 | - ssh-keygen(1): Allow certificate validity intervals that specify only | ||
471 | a start or stop time (instead of both or neither). | ||
472 | - sftp(1): Allow "cd" and "lcd" commands with no explicit path argument. | ||
473 | lcd will change to the local user's home directory as usual. cd will | ||
474 | change to the starting directory for session (because the protocol | ||
475 | offers no way to obtain the remote user's home directory). | ||
476 | - sshd(8): When doing a config test with sshd -T, only require the | ||
477 | attributes that are actually used in Match criteria rather than (an | ||
478 | incomplete list of) all criteria. | ||
479 | - ssh(1)/sshd(8): More strictly check signature types during key | ||
480 | exchange against what was negotiated. Prevents downgrade of RSA | ||
481 | signatures made with SHA-256/512 to SHA-1. | ||
482 | - sshd(8): Fix support for client that advertise a protocol version of | ||
483 | "1.99" (indicating that they are prepared to accept both SSHv1 and | ||
484 | SSHv2). This was broken in OpenSSH 7.6 during the removal of SSHv1 | ||
485 | support. | ||
486 | - ssh(1): Warn when the agent returns a ssh-rsa (SHA1) signature when a | ||
487 | rsa-sha2-256/512 signature was requested. This condition is possible | ||
488 | when an old or non-OpenSSH agent is in use. | ||
489 | - ssh-agent(1): Fix regression introduced in 7.6 that caused ssh-agent | ||
490 | to fatally exit if presented an invalid signature request message. | ||
491 | - sshd_config(5): Accept yes/no flag options case-insensitively, as has | ||
492 | been the case in ssh_config(5) for a long time (LP: #1656557). | ||
493 | - ssh(1): Improve error reporting for failures during connection. Under | ||
494 | some circumstances misleading errors were being shown. | ||
495 | - ssh-keyscan(1): Add -D option to allow printing of results directly in | ||
496 | SSHFP format. | ||
497 | - ssh(1): Compatibility fix for some servers that erroneously drop the | ||
498 | connection when the IUTF8 (RFC8160) option is sent. | ||
499 | - scp(1): Disable RemoteCommand and RequestTTY in the ssh session | ||
500 | started by scp (sftp was already doing this). | ||
501 | - ssh-keygen(1): Refuse to create a certificate with an unusable number | ||
502 | of principals. | ||
503 | - ssh-keygen(1): Fatally exit if ssh-keygen is unable to write all the | ||
504 | public key during key generation. Previously it would silently ignore | ||
505 | errors writing the comment and terminating newline. | ||
506 | - ssh(1): Do not modify hostname arguments that are addresses by | ||
507 | automatically forcing them to lower-case. Instead canonicalise them | ||
508 | jo resolve ambiguities (e.g. ::0001 => ::1) before they are matched | ||
509 | against known_hosts. | ||
510 | - ssh(1): Don't accept junk after "yes" or "no" responses to hostkey | ||
511 | prompts. | ||
512 | - sftp(1): Have sftp print a warning about shell cleanliness when | ||
513 | decoding the first packet fails, which is usually caused by shells | ||
514 | polluting stdout of non-interactive startups. | ||
515 | - ssh(1)/sshd(8): Switch timers in packet code from using wall-clock | ||
516 | time to monotonic time, allowing the packet layer to better function | ||
517 | over a clock step and avoiding possible integer overflows during | ||
518 | steps. | ||
519 | - sshd(8): Correctly detect MIPS ABI in use at configure time. Fixes | ||
520 | sandbox violations on some environments. | ||
521 | - Build and link with "retpoline" flags when available to mitigate the | ||
522 | "branch target injection" style (variant 2) of the Spectre | ||
523 | branch-prediction vulnerability. | ||
524 | |||
525 | -- Colin Watson <cjwatson@debian.org> Tue, 03 Apr 2018 12:40:24 +0100 | ||
526 | |||
527 | openssh (1:7.6p1-5) unstable; urgency=medium | ||
528 | |||
529 | * Explicitly build-depend on pkg-config, rather than implicitly | ||
530 | build-depending on it via libgtk-3-dev (thanks, Aurelien Jarno; closes: | ||
531 | #894558). | ||
532 | |||
533 | -- Colin Watson <cjwatson@debian.org> Sun, 01 Apr 2018 21:37:19 +0100 | ||
534 | |||
535 | openssh (1:7.6p1-4) unstable; urgency=medium | ||
536 | |||
537 | * Move VCS to salsa.debian.org. | ||
538 | * Add a preseeding-only openssh-server/password-authentication debconf | ||
539 | template that can be used to disable password authentication (closes: | ||
540 | #878945). | ||
541 | |||
542 | -- Colin Watson <cjwatson@debian.org> Sat, 10 Feb 2018 02:31:46 +0000 | ||
543 | |||
544 | openssh (1:7.6p1-3) unstable; urgency=medium | ||
545 | |||
546 | [ Colin Watson ] | ||
547 | * Remove the decade-old ssh-krb5 transitional package; upgrades of | ||
548 | openssh-server will preserve existing configuration, and new | ||
549 | installations should just enable GSSAPIAuthentication and | ||
550 | GSSAPIKeyExchange in sshd_config (closes: #878626). | ||
551 | * Support the "noudeb" build profile. | ||
552 | * Fix putty-transfer regression test. | ||
553 | |||
554 | [ Anders Kaseorg ] | ||
555 | * debian/systemd/ssh-agent.service: Add missing dbus dependency. | ||
556 | |||
557 | [ Jason Duerstock ] | ||
558 | * Add a "pkg.openssh.nognome" build profile, which disables building the | ||
559 | ssh-askpass-gnome binary package and avoids the build-dependency on | ||
560 | libgtk-3-dev (closes: #883819). | ||
561 | |||
562 | -- Colin Watson <cjwatson@debian.org> Tue, 16 Jan 2018 17:41:08 +0000 | ||
563 | |||
564 | openssh (1:7.6p1-2) unstable; urgency=medium | ||
565 | |||
566 | * Apply upstream patch to fix PermitOpen argument handling. | ||
567 | |||
568 | -- Colin Watson <cjwatson@debian.org> Sat, 07 Oct 2017 13:44:13 +0100 | ||
569 | |||
570 | openssh (1:7.6p1-1) unstable; urgency=medium | ||
571 | |||
572 | * New upstream release (https://www.openssh.com/txt/release-7.6): | ||
573 | - CVE-2017-15906: sftp-server(8): In read-only mode, sftp-server was | ||
574 | incorrectly permitting creation of zero-length files. Reported by | ||
575 | Michal Zalewski. | ||
576 | - ssh(1): Delete SSH protocol version 1 support, associated | ||
577 | configuration options and documentation (LP: #1584321). | ||
578 | - ssh(1)/sshd(8): Remove support for the hmac-ripemd160 MAC. | ||
579 | - ssh(1)/sshd(8): Remove support for the arcfour, blowfish and CAST | ||
580 | ciphers. | ||
581 | - Refuse RSA keys <1024 bits in length and improve reporting for keys | ||
582 | that do not meet this requirement. | ||
583 | - ssh(1): Do not offer CBC ciphers by default. | ||
584 | - ssh(1): Add RemoteCommand option to specify a command in the ssh | ||
585 | config file instead of giving it on the client's command line. This | ||
586 | allows the configuration file to specify the command that will be | ||
587 | executed on the remote host. | ||
588 | - sshd(8): Add ExposeAuthInfo option that enables writing details of the | ||
589 | authentication methods used (including public keys where applicable) | ||
590 | to a file that is exposed via a $SSH_USER_AUTH environment variable in | ||
591 | the subsequent session. | ||
592 | - ssh(1): Add support for reverse dynamic forwarding. In this mode, ssh | ||
593 | will act as a SOCKS4/5 proxy and forward connections to destinations | ||
594 | requested by the remote SOCKS client. This mode is requested using | ||
595 | extended syntax for the -R and RemoteForward options and, because it | ||
596 | is implemented solely at the client, does not require the server be | ||
597 | updated to be supported. | ||
598 | - sshd(8): Allow LogLevel directive in sshd_config Match blocks. | ||
599 | - ssh-keygen(1): Allow inclusion of arbitrary string or flag certificate | ||
600 | extensions and critical options. | ||
601 | - ssh-keygen(1): Allow ssh-keygen to use a key held in ssh-agent as a CA | ||
602 | when signing certificates. | ||
603 | - ssh(1)/sshd(8): Allow IPQoS=none in ssh/sshd to not set an explicit | ||
604 | ToS/DSCP value and just use the operating system default. | ||
605 | - ssh-add(1): Add -q option to make ssh-add quiet on success. | ||
606 | - ssh(1): Expand the StrictHostKeyChecking option with two new settings. | ||
607 | The first "accept-new" will automatically accept hitherto-unseen keys | ||
608 | but will refuse connections for changed or invalid hostkeys. This is | ||
609 | a safer subset of the current behaviour of StrictHostKeyChecking=no. | ||
610 | The second setting "off", is a synonym for the current behaviour of | ||
611 | StrictHostKeyChecking=no: accept new host keys, and continue | ||
612 | connection for hosts with incorrect hostkeys. A future release will | ||
613 | change the meaning of StrictHostKeyChecking=no to the behaviour of | ||
614 | "accept-new". | ||
615 | - ssh(1): Add SyslogFacility option to ssh(1) matching the equivalent | ||
616 | option in sshd(8). | ||
617 | - ssh(1): Use HostKeyAlias if specified instead of hostname for matching | ||
618 | host certificate principal names. | ||
619 | - sftp(1): Implement sorting for globbed ls. | ||
620 | - ssh(1): Add a user@host prefix to client's "Permission denied" | ||
621 | messages, useful in particular when using "stacked" connections (e.g. | ||
622 | ssh -J) where it's not clear which host is denying. | ||
623 | - ssh(1): Accept unknown EXT_INFO extension values that contain \0 | ||
624 | characters. These are legal, but would previously cause fatal | ||
625 | connection errors if received. | ||
626 | - sftp(1): Print '?' instead of incorrect link count (that the protocol | ||
627 | doesn't provide) for remote listings. | ||
628 | - ssh(1): Return failure rather than fatal() for more cases during | ||
629 | session multiplexing negotiations. Causes the session to fall back to | ||
630 | a non-mux connection if they occur. | ||
631 | - ssh(1): Mention that the server may send debug messages to explain | ||
632 | public key authentication problems under some circumstances. | ||
633 | - Translate OpenSSL error codes to better report incorrect passphrase | ||
634 | errors when loading private keys. | ||
635 | - sshd(8): Adjust compatibility patterns for WinSCP to correctly | ||
636 | identify versions that implement only the legacy DH group exchange | ||
637 | scheme (closes: #877800). | ||
638 | - ssh(1): Print the "Killed by signal 1" message only at LogLevel | ||
639 | verbose so that it is not shown at the default level; prevents it from | ||
640 | appearing during ssh -J and equivalent ProxyCommand configs. | ||
641 | - ssh-keygen(1): When generating all hostkeys (ssh-keygen -A), clobber | ||
642 | existing keys if they exist but are zero length. Zero-length keys | ||
643 | could previously be made if ssh-keygen failed or was interrupted part | ||
644 | way through generating them. | ||
645 | - ssh-keyscan(1): Avoid double-close() on file descriptors. | ||
646 | - sshd(8): Avoid reliance on shared use of pointers shared between | ||
647 | monitor and child sshd processes. | ||
648 | - sshd_config(8): Document available AuthenticationMethods. | ||
649 | - ssh(1): Avoid truncation in some login prompts. | ||
650 | - ssh(1): Make "--" before the hostname terminate argument processing | ||
651 | after the hostname too (closes: #873201). | ||
652 | - ssh-keygen(1): Switch from aes256-cbc to aes256-ctr for encrypting | ||
653 | new-style private keys. | ||
654 | - ssh(1): Warn and do not attempt to use keys when the public and | ||
655 | private halves do not match. | ||
656 | - sftp(1): Don't print verbose error message when ssh disconnects from | ||
657 | under sftp. | ||
658 | - sshd(8): Fix keepalive scheduling problem: prevent activity on a | ||
659 | forwarded port from preventing the keepalive from being sent. | ||
660 | - sshd(8): When started without root privileges, don't require the | ||
661 | privilege separation user or path to exist. | ||
662 | - ssh(1)/sshd(8): Correctness fix for channels implementation: accept | ||
663 | channel IDs greater than 0x7FFFFFFF. | ||
664 | - sshd(8): Expose list of completed authentication methods to PAM via | ||
665 | the SSH_AUTH_INFO_0 PAM environment variable. | ||
666 | - ssh(1)/sshd(8): Fix several problems in the tun/tap forwarding code, | ||
667 | mostly to do with host/network byte order confusion. | ||
668 | - sshd(8): Avoid Linux seccomp violations on ppc64le over the socketcall | ||
669 | syscall. | ||
670 | * Build-depend on debhelper (>= 9.20160709~) rather than dh-systemd. | ||
671 | * Change priorities of ssh and ssh-krb5 binary packages to optional, since | ||
672 | "Priority: extra" is now deprecated. | ||
673 | * Use HTTPS form of copyright-format URL. | ||
674 | * Adjust "Running sshd from inittab" instructions in README.Debian to | ||
675 | recommend using service(8) rather than calling the init script directly. | ||
676 | * Policy version 4.1.0. | ||
677 | * Adjust "Per-connection sshd instances with systemd" instructions in | ||
678 | README.Debian to recommend using a drop-in file rather than copying and | ||
679 | modifying the ssh.socket unit file. | ||
680 | |||
681 | -- Colin Watson <cjwatson@debian.org> Fri, 06 Oct 2017 12:36:48 +0100 | ||
682 | |||
683 | openssh (1:7.5p1-10) unstable; urgency=medium | ||
684 | |||
685 | * Tell haveged to create the pid file we expect. | ||
686 | * Give up and use systemctl to start haveged if running under systemd; | ||
687 | this shouldn't be necessary, but I can't seem to get things working in | ||
688 | the Ubuntu autopkgtest environment otherwise. | ||
689 | |||
690 | -- Colin Watson <cjwatson@debian.org> Fri, 01 Sep 2017 11:17:19 +0100 | ||
691 | |||
692 | openssh (1:7.5p1-9) unstable; urgency=medium | ||
693 | |||
694 | * Run debian/tests/regress with "set -x". | ||
695 | * Run haveged without "-w 1024", as setting the low water mark doesn't | ||
696 | seem possible in all autopkgtest virtualisation environments. | ||
697 | |||
698 | -- Colin Watson <cjwatson@debian.org> Thu, 31 Aug 2017 13:23:04 +0100 | ||
699 | |||
700 | openssh (1:7.5p1-8) unstable; urgency=medium | ||
701 | |||
702 | * Drop openssh-client-ssh1, now built by a separate source package. | ||
703 | * Run haveged during autopkgtests to ensure that they have enough entropy | ||
704 | for key generation (LP: #1712921). | ||
705 | * Apply patches from https://bugzilla.mindrot.org/show_bug.cgi?id=2752 to | ||
706 | allow some extra syscalls for crypto cards on s390x (LP: #1686618). | ||
707 | |||
708 | -- Colin Watson <cjwatson@debian.org> Mon, 28 Aug 2017 12:16:35 +0100 | ||
709 | |||
710 | openssh (1:7.5p1-7) unstable; urgency=medium | ||
711 | |||
712 | * Fix spelling of RuntimeDirectoryMode (closes: #872976). | ||
713 | * Add RuntimeDirectory and RuntimeDirectoryMode to ssh@.service as well as | ||
714 | ssh.service (closes: #872978). | ||
715 | |||
716 | -- Colin Watson <cjwatson@debian.org> Wed, 23 Aug 2017 12:12:59 +0100 | ||
717 | |||
718 | openssh (1:7.5p1-6) unstable; urgency=medium | ||
719 | |||
720 | [ Colin Watson ] | ||
721 | * Test configuration before starting or reloading sshd under systemd | ||
722 | (closes: #865770). | ||
723 | * Create /run/sshd under systemd using RuntimeDirectory rather than | ||
724 | tmpfiles.d (thanks, Dmitry Smirnov; closes: #864190). | ||
725 | |||
726 | [ Dimitri John Ledkov ] | ||
727 | * Drop upstart system and user jobs (closes: #872851). | ||
728 | |||
729 | [ Chris Lamb ] | ||
730 | * Quote IP address in suggested "ssh-keygen -f" calls (closes: #872643). | ||
731 | |||
732 | -- Colin Watson <cjwatson@debian.org> Wed, 23 Aug 2017 01:41:06 +0100 | ||
733 | |||
734 | openssh (1:7.5p1-5) unstable; urgency=medium | ||
735 | |||
736 | * Upload to unstable. | ||
737 | * Fix syntax error in debian/copyright. | ||
738 | |||
739 | -- Colin Watson <cjwatson@debian.org> Sun, 18 Jun 2017 12:08:42 +0100 | ||
740 | |||
741 | openssh (1:7.5p1-4) experimental; urgency=medium | ||
742 | |||
743 | * Drop README.Debian section on privilege separation, as it's no longer | ||
744 | optional. | ||
745 | * Only call "initctl set-env" from agent-launch if $UPSTART_SESSION is set | ||
746 | (LP: #1689299). | ||
747 | * Fix incoming compression statistics (thanks, Russell Coker; closes: | ||
748 | #797964). | ||
749 | * Relicense debian/* under a two-clause BSD licence for bidirectional | ||
750 | compatibility with upstream, with permission from Matthew Vernon and | ||
751 | others. | ||
752 | |||
753 | -- Colin Watson <cjwatson@debian.org> Tue, 06 Jun 2017 15:17:58 +0100 | ||
754 | |||
755 | openssh (1:7.5p1-3) experimental; urgency=medium | ||
756 | |||
757 | * Fix debian/adjust-openssl-dependencies to account for preferring | ||
758 | libssl1.0-dev. | ||
759 | * Adjust OpenSSL dependencies for openssh-client-ssh1 too. | ||
760 | * Fix purge failure when /etc/ssh has already somehow been removed | ||
761 | (LP: #1682817). | ||
762 | * Ensure that /etc/ssh exists before trying to create /etc/ssh/sshd_config | ||
763 | (LP: #1685022). | ||
764 | |||
765 | -- Colin Watson <cjwatson@debian.org> Tue, 02 May 2017 13:51:27 +0100 | ||
766 | |||
767 | openssh (1:7.5p1-2) experimental; urgency=medium | ||
768 | |||
769 | * Add missing header on Linux/s390. | ||
770 | * Fix syntax error on Linux/X32. | ||
771 | |||
772 | -- Colin Watson <cjwatson@debian.org> Sun, 02 Apr 2017 13:20:11 +0100 | ||
773 | |||
774 | openssh (1:7.5p1-1) experimental; urgency=medium | ||
775 | |||
776 | * New upstream release (https://www.openssh.com/txt/release-7.5): | ||
777 | - SECURITY: ssh(1), sshd(8): Fix weakness in CBC padding oracle | ||
778 | countermeasures that allowed a variant of the attack fixed in OpenSSH | ||
779 | 7.3 to proceed. Note that the OpenSSH client disables CBC ciphers by | ||
780 | default, sshd offers them as lowest-preference options and will remove | ||
781 | them by default entirely in the next release. | ||
782 | - This release deprecates the sshd_config UsePrivilegeSeparation option, | ||
783 | thereby making privilege separation mandatory (closes: #407754). | ||
784 | - The format of several log messages emitted by the packet code has | ||
785 | changed to include additional information about the user and their | ||
786 | authentication state. Software that monitors ssh/sshd logs may need | ||
787 | to account for these changes. | ||
788 | - ssh(1), sshd(8): Support "=-" syntax to easily remove methods from | ||
789 | algorithm lists, e.g. Ciphers=-*cbc. | ||
790 | - sshd(1): Fix NULL dereference crash when key exchange start messages | ||
791 | are sent out of sequence. | ||
792 | - ssh(1), sshd(8): Allow form-feed characters to appear in configuration | ||
793 | files. | ||
794 | - sshd(8): Fix regression in OpenSSH 7.4 support for the server-sig-algs | ||
795 | extension, where SHA2 RSA signature methods were not being correctly | ||
796 | advertised. | ||
797 | - ssh(1), ssh-keygen(1): Fix a number of case-sensitivity bugs in | ||
798 | known_hosts processing. | ||
799 | - ssh(1): Allow ssh to use certificates accompanied by a private key | ||
800 | file but no corresponding plain *.pub public key. | ||
801 | - ssh(1): When updating hostkeys using the UpdateHostKeys option, accept | ||
802 | RSA keys if HostkeyAlgorithms contains any RSA keytype. Previously, | ||
803 | ssh could ignore RSA keys when only the ssh-rsa-sha2-* methods were | ||
804 | enabled in HostkeyAlgorithms and not the old ssh-rsa method. | ||
805 | - ssh(1): Detect and report excessively long configuration file lines. | ||
806 | - Merge a number of fixes found by Coverity and reported via Redhat and | ||
807 | FreeBSD. Includes fixes for some memory and file descriptor leaks in | ||
808 | error paths. | ||
809 | - ssh(1), sshd(8): When logging long messages to stderr, don't truncate | ||
810 | "\r\n" if the length of the message exceeds the buffer. | ||
811 | - ssh(1): Fully quote [host]:port in generated ProxyJump/-J command- | ||
812 | line; avoid confusion over IPv6 addresses and shells that treat square | ||
813 | bracket characters specially. | ||
814 | - Fix various fallout and sharp edges caused by removing SSH protocol 1 | ||
815 | support from the server, including the server banner string being | ||
816 | incorrectly terminated with only \n (instead of \r\n), confusing error | ||
817 | messages from ssh-keyscan, and a segfault in sshd if protocol v.1 was | ||
818 | enabled for the client and sshd_config contained references to legacy | ||
819 | keys. | ||
820 | - ssh(1), sshd(8): Free fd_set on connection timeout. | ||
821 | - sftp(1): Fix division by zero crash in "df" output when server returns | ||
822 | zero total filesystem blocks/inodes. | ||
823 | - ssh(1), ssh-add(1), ssh-keygen(1), sshd(8): Translate OpenSSL errors | ||
824 | encountered during key loading to more meaningful error codes. | ||
825 | - ssh-keygen(1): Sanitise escape sequences in key comments sent to | ||
826 | printf but preserve valid UTF-8 when the locale supports it. | ||
827 | - ssh(1), sshd(8): Return reason for port forwarding failures where | ||
828 | feasible rather than always "administratively prohibited". | ||
829 | - sshd(8): Fix deadlock when AuthorizedKeysCommand or | ||
830 | AuthorizedPrincipalsCommand produces a lot of output and a key is | ||
831 | matched early. | ||
832 | - ssh(1): Fix typo in ~C error message for bad port forward | ||
833 | cancellation. | ||
834 | - ssh(1): Show a useful error message when included config files can't | ||
835 | be opened. | ||
836 | - sshd_config(5): Repair accidentally-deleted mention of %k token in | ||
837 | AuthorizedKeysCommand. | ||
838 | - sshd(8): Remove vestiges of previously removed LOGIN_PROGRAM. | ||
839 | - ssh-agent(1): Relax PKCS#11 whitelist to include libexec and common | ||
840 | 32-bit compatibility library directories. | ||
841 | - sftp-client(1): Fix non-exploitable integer overflow in SSH2_FXP_NAME | ||
842 | response handling. | ||
843 | - ssh-agent(1): Fix regression in 7.4 of deleting PKCS#11-hosted keys. | ||
844 | It was not possible to delete them except by specifying their full | ||
845 | physical path. | ||
846 | - sshd(8): Avoid sandbox errors for Linux S390 systems using an ICA | ||
847 | crypto coprocessor. | ||
848 | - sshd(8): Fix non-exploitable weakness in seccomp-bpf sandbox arg | ||
849 | inspection. | ||
850 | - ssh-keygen(1), ssh(1), sftp(1): Fix output truncation for various that | ||
851 | contain non-printable characters where the codeset in use is ASCII. | ||
852 | |||
853 | -- Colin Watson <cjwatson@debian.org> Sun, 02 Apr 2017 02:58:01 +0100 | ||
854 | |||
855 | openssh (1:7.4p1-11) unstable; urgency=medium | ||
856 | |||
857 | * Fix incoming compression statistics (thanks, Russell Coker; closes: | ||
858 | #797964). | ||
859 | |||
860 | -- Colin Watson <cjwatson@debian.org> Tue, 06 Jun 2017 15:03:48 +0100 | ||
861 | |||
862 | openssh (1:7.4p1-10) unstable; urgency=medium | ||
863 | |||
864 | * Move privilege separation directory and PID file from /var/run/ to /run/ | ||
865 | (closes: #760422, #856825). | ||
866 | * Unbreak Unix domain socket forwarding for root (closes: #858252). | ||
867 | |||
868 | -- Colin Watson <cjwatson@debian.org> Thu, 30 Mar 2017 11:19:04 +0100 | ||
869 | |||
870 | openssh (1:7.4p1-9) unstable; urgency=medium | ||
871 | |||
872 | * Fix null pointer dereference in ssh-keygen; this fixes an autopkgtest | ||
873 | regression introduced in 1:7.4p1-8. | ||
874 | |||
875 | -- Colin Watson <cjwatson@debian.org> Thu, 16 Mar 2017 13:43:15 +0000 | ||
876 | |||
877 | openssh (1:7.4p1-8) unstable; urgency=medium | ||
878 | |||
879 | * Fix ssh-keygen -H accidentally corrupting known_hosts that contained | ||
880 | already-hashed entries (closes: #851734, LP: #1668093). | ||
881 | * Fix ssh-keyscan to correctly hash hosts with a port number (closes: | ||
882 | #857736, LP: #1670745). | ||
883 | |||
884 | -- Colin Watson <cjwatson@debian.org> Tue, 14 Mar 2017 13:49:14 +0000 | ||
885 | |||
886 | openssh (1:7.4p1-7) unstable; urgency=medium | ||
887 | |||
888 | * Don't set "PermitRootLogin yes" on fresh installations (regression | ||
889 | introduced in 1:7.4p1-1; closes: #852781). | ||
890 | * Restore reading authorized_keys2 by default. Upstream seems to intend | ||
891 | to gradually phase this out, so don't assume that this will remain the | ||
892 | default forever. However, we were late in adopting the upstream | ||
893 | sshd_config changes, so it makes sense to extend the grace period | ||
894 | (closes: #852320). | ||
895 | |||
896 | -- Colin Watson <cjwatson@debian.org> Sun, 05 Mar 2017 02:12:42 +0000 | ||
897 | |||
898 | openssh (1:7.4p1-6) unstable; urgency=medium | ||
899 | |||
900 | * Remove temporary file on exit from postinst (closes: #850275). | ||
901 | * Remove LOGIN_PROGRAM and LOGIN_NO_ENDOPT definitions, since UseLogin is | ||
902 | gone. | ||
903 | * Document sshd_config changes that may be needed following the removal of | ||
904 | protocol 1 support from sshd (closes: #851573). | ||
905 | * Remove ssh_host_dsa_key from HostKey default (closes: #850614). | ||
906 | * Fix rekeying failure with GSSAPI key exchange (thanks, Harald Barth; | ||
907 | closes: #819361, LP: #1608965). | ||
908 | |||
909 | -- Colin Watson <cjwatson@debian.org> Mon, 16 Jan 2017 15:11:10 +0000 | ||
910 | |||
911 | openssh (1:7.4p1-5) unstable; urgency=medium | ||
912 | |||
913 | * Create mux socket for regression tests in a temporary directory. | ||
914 | * Work around clock_gettime kernel bug on Linux x32 (closes: #849923). | ||
915 | |||
916 | -- Colin Watson <cjwatson@debian.org> Tue, 03 Jan 2017 14:43:28 +0000 | ||
917 | |||
918 | openssh (1:7.4p1-4) unstable; urgency=medium | ||
919 | |||
920 | * Run regression tests inside annotate-output to try to diagnose timeout | ||
921 | issues. | ||
922 | * Make integrity tests more robust against timeouts in the case where the | ||
923 | first test in a series for a given MAC happens to modify the low bytes | ||
924 | of a packet length. | ||
925 | * Fix race conditions in forwarding tests. | ||
926 | |||
927 | -- Colin Watson <cjwatson@debian.org> Mon, 02 Jan 2017 19:37:23 +0000 | ||
928 | |||
929 | openssh (1:7.4p1-3) unstable; urgency=medium | ||
930 | |||
931 | * Revert attempted hack around regress/forwarding.sh test failure, since | ||
932 | it doesn't seem to help. | ||
933 | * Run regression tests using 'sh -x' to try to get more information about | ||
934 | failures. | ||
935 | * Dump some useful log files if regression tests fail. | ||
936 | * Tweak regression test setup to cope with the case where some of the | ||
937 | source directory is unreadable by the openssh-tests user. | ||
938 | |||
939 | -- Colin Watson <cjwatson@debian.org> Sat, 31 Dec 2016 02:48:17 +0000 | ||
940 | |||
941 | openssh (1:7.4p1-2) unstable; urgency=medium | ||
942 | |||
943 | * Attempt to hack around regress/forwarding.sh test failure in some | ||
944 | environments. | ||
945 | * Avoid calling into Kerberos libraries from ssh_gssapi_server_mechanisms | ||
946 | in the privsep monitor. | ||
947 | |||
948 | -- Colin Watson <cjwatson@debian.org> Thu, 29 Dec 2016 12:02:12 +0000 | ||
949 | |||
950 | openssh (1:7.4p1-1) unstable; urgency=medium | ||
951 | |||
952 | * New upstream release (http://www.openssh.com/txt/release-7.4): | ||
953 | - ssh(1): Remove 3des-cbc from the client's default proposal. 64-bit | ||
954 | block ciphers are not safe in 2016 and we don't want to wait until | ||
955 | attacks like SWEET32 are extended to SSH. As 3des-cbc was the only | ||
956 | mandatory cipher in the SSH RFCs, this may cause problems connecting | ||
957 | to older devices using the default configuration, but it's highly | ||
958 | likely that such devices already need explicit configuration for key | ||
959 | exchange and hostkey algorithms already anyway. | ||
960 | - sshd(8): When a forced-command appears in both a certificate and an | ||
961 | authorized keys/principals command= restriction, sshd will now refuse | ||
962 | to accept the certificate unless they are identical. The previous | ||
963 | (documented) behaviour of having the certificate forced-command | ||
964 | override the other could be a bit confusing and error-prone. | ||
965 | - sshd(8): Remove the UseLogin configuration directive and support for | ||
966 | having /bin/login manage login sessions. | ||
967 | - CVE-2016-10009: ssh-agent(1): Will now refuse to load PKCS#11 modules | ||
968 | from paths outside a trusted whitelist (run-time configurable). | ||
969 | Requests to load modules could be passed via agent forwarding and an | ||
970 | attacker could attempt to load a hostile PKCS#11 module across the | ||
971 | forwarded agent channel: PKCS#11 modules are shared libraries, so this | ||
972 | would result in code execution on the system running the ssh-agent if | ||
973 | the attacker has control of the forwarded agent-socket (on the host | ||
974 | running the sshd server) and the ability to write to the filesystem of | ||
975 | the host running ssh-agent (usually the host running the ssh client) | ||
976 | (closes: #848714). | ||
977 | - CVE-2016-10010: sshd(8): When privilege separation is disabled, | ||
978 | forwarded Unix-domain sockets would be created by sshd(8) with the | ||
979 | privileges of 'root' instead of the authenticated user. This release | ||
980 | refuses Unix-domain socket forwarding when privilege separation is | ||
981 | disabled (Privilege separation has been enabled by default for 14 | ||
982 | years) (closes: #848715). | ||
983 | - CVE-2016-10011: sshd(8): Avoid theoretical leak of host private key | ||
984 | material to privilege-separated child processes via realloc() when | ||
985 | reading keys. No such leak was observed in practice for normal-sized | ||
986 | keys, nor does a leak to the child processes directly expose key | ||
987 | material to unprivileged users (closes: #848716). | ||
988 | - CVE-2016-10012: sshd(8): The shared memory manager used by | ||
989 | pre-authentication compression support had a bounds checks that could | ||
990 | be elided by some optimising compilers. Additionally, this memory | ||
991 | manager was incorrectly accessible when pre-authentication compression | ||
992 | was disabled. This could potentially allow attacks against the | ||
993 | privileged monitor process from the sandboxed privilege-separation | ||
994 | process (a compromise of the latter would be required first). This | ||
995 | release removes support for pre-authentication compression from | ||
996 | sshd(8) (closes: #848717). | ||
997 | - SECURITY: sshd(8): Validate address ranges for AllowUser and DenyUsers | ||
998 | directives at configuration load time and refuse to accept invalid | ||
999 | ones. It was previously possible to specify invalid CIDR address | ||
1000 | ranges (e.g. user@127.1.2.3/55) and these would always match, possibly | ||
1001 | resulting in granting access where it was not intended. | ||
1002 | - ssh(1): Add a proxy multiplexing mode to ssh(1) inspired by the | ||
1003 | version in PuTTY by Simon Tatham. This allows a multiplexing client | ||
1004 | to communicate with the master process using a subset of the SSH | ||
1005 | packet and channels protocol over a Unix-domain socket, with the main | ||
1006 | process acting as a proxy that translates channel IDs, etc. This | ||
1007 | allows multiplexing mode to run on systems that lack file-descriptor | ||
1008 | passing (used by current multiplexing code) and potentially, in | ||
1009 | conjunction with Unix-domain socket forwarding, with the client and | ||
1010 | multiplexing master process on different machines. Multiplexing proxy | ||
1011 | mode may be invoked using "ssh -O proxy ...". | ||
1012 | - sshd(8): Add a sshd_config DisableForwarding option that disables X11, | ||
1013 | agent, TCP, tunnel and Unix domain socket forwarding, as well as | ||
1014 | anything else we might implement in the future. Like the 'restrict' | ||
1015 | authorized_keys flag, this is intended to be a simple and future-proof | ||
1016 | way of restricting an account. | ||
1017 | - sshd(8), ssh(1): Support the "curve25519-sha256" key exchange method. | ||
1018 | This is identical to the currently-supported method named | ||
1019 | "curve25519-sha256@libssh.org". | ||
1020 | - sshd(8): Improve handling of SIGHUP by checking to see if sshd is | ||
1021 | already daemonised at startup and skipping the call to daemon(3) if it | ||
1022 | is. This ensures that a SIGHUP restart of sshd(8) will retain the | ||
1023 | same process-ID as the initial execution. sshd(8) will also now | ||
1024 | unlink the PidFile prior to SIGHUP restart and re-create it after a | ||
1025 | successful restart, rather than leaving a stale file in the case of a | ||
1026 | configuration error. | ||
1027 | - sshd(8): Allow ClientAliveInterval and ClientAliveCountMax directives | ||
1028 | to appear in sshd_config Match blocks. | ||
1029 | - sshd(8): Add %-escapes to AuthorizedPrincipalsCommand to match those | ||
1030 | supported by AuthorizedKeysCommand (key, key type, fingerprint, etc.) | ||
1031 | and a few more to provide access to the contents of the certificate | ||
1032 | being offered. | ||
1033 | - ssh(1): Allow IdentityFile to successfully load and use certificates | ||
1034 | that have no corresponding bare public key. | ||
1035 | - ssh(1): Fix public key authentication when multiple authentication is | ||
1036 | in use and publickey is not just the first method attempted. | ||
1037 | - ssh(1): Improve reporting when attempting to load keys from PKCS#11 | ||
1038 | tokens with fewer useless log messages and more detail in debug | ||
1039 | messages. | ||
1040 | - ssh(1): When tearing down ControlMaster connections, don't pollute | ||
1041 | stderr when LogLevel=quiet. | ||
1042 | - sftp(1): On ^Z wait for underlying ssh(1) to suspend before suspending | ||
1043 | sftp(1) to ensure that ssh(1) restores the terminal mode correctly if | ||
1044 | suspended during a password prompt. | ||
1045 | - ssh(1): Avoid busy-wait when ssh(1) is suspended during a password | ||
1046 | prompt (LP: #1646813). | ||
1047 | - ssh(1), sshd(8): Correctly report errors during sending of ext-info | ||
1048 | messages. | ||
1049 | - sshd(8): Fix NULL-deref crash if sshd(8) received an out-of-sequence | ||
1050 | NEWKEYS message. | ||
1051 | - sshd(8): Correct list of supported signature algorithms sent in the | ||
1052 | server-sig-algs extension. | ||
1053 | - sshd(8): Fix sending ext_info message if privsep is disabled. | ||
1054 | - sshd(8): More strictly enforce the expected ordering of privilege | ||
1055 | separation monitor calls used for authentication and allow them only | ||
1056 | when their respective authentication methods are enabled in the | ||
1057 | configuration. | ||
1058 | - sshd_config(5): Use 2001:db8::/32, the official IPv6 subnet for | ||
1059 | configuration examples. | ||
1060 | - On environments configured with Turkish locales, fall back to the | ||
1061 | C/POSIX locale to avoid errors in configuration parsing caused by that | ||
1062 | locale's unique handling of the letters 'i' and 'I' (LP: #1638338). | ||
1063 | - contrib: Add a gnome-ssh-askpass3 with GTK+3 support. | ||
1064 | - sshd(8): Improve PRNG reseeding across privilege separation and force | ||
1065 | libcrypto to obtain a high-quality seed before chroot or sandboxing. | ||
1066 | * Apply "wrap-and-sort -at -f debian/control -f debian/tests/control". | ||
1067 | * Remove entries related to protocol 1 from the default sshd_config | ||
1068 | generated on new installations. | ||
1069 | * Remove some advice related to protocol 1 from README.Debian. | ||
1070 | * Start handling /etc/ssh/sshd_config using ucf. The immediate motivation | ||
1071 | for this is to deal with deprecations of options related to protocol 1, | ||
1072 | but something like this has been needed for a long time (closes: | ||
1073 | #419574, #848089): | ||
1074 | - sshd_config is now a slightly-patched version of upstream's, and only | ||
1075 | contains non-default settings (closes: #147201). | ||
1076 | - I've included as many historical md5sums of default versions of | ||
1077 | sshd_config as I could reconstruct from version control, but I'm sure | ||
1078 | I've missed some. | ||
1079 | - Explicitly synchronise the debconf database with the current | ||
1080 | configuration file state in openssh-server.config, to ensure that the | ||
1081 | PermitRootLogin setting is properly preserved. | ||
1082 | - UsePrivilegeSeparation now defaults to the stronger "sandbox" rather | ||
1083 | than "yes", per upstream. | ||
1084 | * Remove redundant "GSSAPIDelegateCredentials no" from ssh_config (already | ||
1085 | the upstream default), and document that setting ServerAliveInterval to | ||
1086 | 300 by default if BatchMode is set is Debian-specific (closes: #765630). | ||
1087 | * Build gnome-ssh-askpass with GTK+ 3 (LP: #801187). | ||
1088 | * When running regression tests under autopkgtest, use a non-root user | ||
1089 | with passwordless sudo. | ||
1090 | |||
1091 | -- Colin Watson <cjwatson@debian.org> Tue, 27 Dec 2016 18:01:46 +0000 | ||
1092 | |||
1093 | openssh (1:7.3p1-5) unstable; urgency=medium | ||
1094 | |||
1095 | * debian/tests/control: Add dependency on openssl, required by the PuTTY | ||
1096 | interoperability tests. | ||
1097 | |||
1098 | -- Colin Watson <cjwatson@debian.org> Sat, 03 Dec 2016 03:43:21 +0000 | ||
1099 | |||
1100 | openssh (1:7.3p1-4) unstable; urgency=medium | ||
1101 | |||
1102 | * Adjust Build-Depends further to avoid considering libssl-dev >= 1.1.0~ | ||
1103 | as sufficient. | ||
1104 | * Move build directories under debian/. | ||
1105 | * Remove the non-upstream .gitignore file and add the relevant entries to | ||
1106 | debian/.gitignore, in order to make the source tree more | ||
1107 | dgit-compatible. | ||
1108 | * Build all upstream regression test binaries using the new | ||
1109 | "regress-binaries" target. | ||
1110 | * Fix and enable PuTTY interoperability tests under autopkgtest. | ||
1111 | |||
1112 | -- Colin Watson <cjwatson@debian.org> Fri, 02 Dec 2016 20:49:30 +0000 | ||
1113 | |||
1114 | openssh (1:7.3p1-3) unstable; urgency=medium | ||
1115 | |||
1116 | * Avoid building with OpenSSL 1.1 for now (see #828475). | ||
1117 | * Add a missing License line to debian/copyright. | ||
1118 | * Policy version 3.9.8: no changes required. | ||
1119 | |||
1120 | -- Colin Watson <cjwatson@debian.org> Sat, 05 Nov 2016 15:37:15 +0000 | ||
1121 | |||
1122 | openssh (1:7.3p1-2) unstable; urgency=high | ||
1123 | |||
1124 | * Rewrite debian/copyright using copyright-format 1.0. | ||
1125 | * CVE-2016-8858: Unregister the KEXINIT handler after message has been | ||
1126 | received (closes: #841884). | ||
1127 | |||
1128 | -- Colin Watson <cjwatson@debian.org> Mon, 24 Oct 2016 11:18:00 +0100 | ||
1129 | |||
1130 | openssh (1:7.3p1-1) unstable; urgency=medium | ||
1131 | |||
1132 | * New upstream release (http://www.openssh.com/txt/release-7.3): | ||
1133 | - SECURITY: sshd(8): Mitigate a potential denial-of-service attack | ||
1134 | against the system's crypt(3) function via sshd(8). An attacker could | ||
1135 | send very long passwords that would cause excessive CPU use in | ||
1136 | crypt(3). sshd(8) now refuses to accept password authentication | ||
1137 | requests of length greater than 1024 characters. | ||
1138 | - SECURITY: ssh(1), sshd(8): Fix observable timing weakness in the CBC | ||
1139 | padding oracle countermeasures. Note that CBC ciphers are disabled by | ||
1140 | default and only included for legacy compatibility. | ||
1141 | - SECURITY: ssh(1), sshd(8): Improve operation ordering of MAC | ||
1142 | verification for Encrypt-then-MAC (EtM) mode transport MAC algorithms | ||
1143 | to verify the MAC before decrypting any ciphertext. This removes the | ||
1144 | possibility of timing differences leaking facts about the plaintext, | ||
1145 | though no such leakage has been observed. | ||
1146 | - ssh(1): Add a ProxyJump option and corresponding -J command-line flag | ||
1147 | to allow simplified indirection through a one or more SSH bastions or | ||
1148 | "jump hosts". | ||
1149 | - ssh(1): Add an IdentityAgent option to allow specifying specific agent | ||
1150 | sockets instead of accepting one from the environment. | ||
1151 | - ssh(1): Allow ExitOnForwardFailure and ClearAllForwardings to be | ||
1152 | optionally overridden when using ssh -W. | ||
1153 | - ssh(1), sshd(8): Implement support for the IUTF8 terminal mode as per | ||
1154 | draft-sgtatham-secsh-iutf8-00 (closes: #337041, LP: #394570). | ||
1155 | - ssh(1), sshd(8): Add support for additional fixed Diffie-Hellman 2K, | ||
1156 | 4K and 8K groups from draft-ietf-curdle-ssh-kex-sha2-03. | ||
1157 | - ssh-keygen(1), ssh(1), sshd(8): Support SHA256 and SHA512 RSA | ||
1158 | signatures in certificates. | ||
1159 | - ssh(1): Add an Include directive for ssh_config(5) files (closes: | ||
1160 | #536031). | ||
1161 | - ssh(1): Permit UTF-8 characters in pre-authentication banners sent | ||
1162 | from the server. | ||
1163 | - ssh(1), sshd(8): Reduce the syslog level of some relatively common | ||
1164 | protocol events from LOG_CRIT. | ||
1165 | - sshd(8): Refuse AuthenticationMethods="" in configurations and accept | ||
1166 | AuthenticationMethods=any for the default behaviour of not requiring | ||
1167 | multiple authentication. | ||
1168 | - sshd(8): Remove obsolete and misleading "POSSIBLE BREAK-IN ATTEMPT!" | ||
1169 | message when forward and reverse DNS don't match. | ||
1170 | - ssh(1): Deduplicate LocalForward and RemoteForward entries to fix | ||
1171 | failures when both ExitOnForwardFailure and hostname canonicalisation | ||
1172 | are enabled. | ||
1173 | - sshd(8): Remove fallback from moduli to obsolete "primes" file that | ||
1174 | was deprecated in 2001 (LP: #1528251). | ||
1175 | - sshd_config(5): Correct description of UseDNS: it affects ssh hostname | ||
1176 | processing for authorized_keys, not known_hosts. | ||
1177 | - sshd(8): Send ClientAliveInterval pings when a time-based RekeyLimit | ||
1178 | is set; previously keepalive packets were not being sent. | ||
1179 | - sshd(8): Whitelist more architectures to enable the seccomp-bpf | ||
1180 | sandbox. | ||
1181 | - scp(1): Respect the local user's LC_CTYPE locale (closes: #396295). | ||
1182 | - Take character display widths into account for the progressmeter | ||
1183 | (closes: #407088). | ||
1184 | |||
1185 | -- Colin Watson <cjwatson@debian.org> Sun, 07 Aug 2016 22:45:26 +0100 | ||
1186 | |||
1187 | openssh (1:7.2p2-8) unstable; urgency=medium | ||
1188 | |||
1189 | [ Colin Watson ] | ||
1190 | * Stop enabling ssh-session-cleanup.service by default; instead, ship it | ||
1191 | as an example and add a section to README.Debian. libpam-systemd >= 230 | ||
1192 | and "UsePAM yes" should take care of the original problem for most | ||
1193 | systemd users (thanks, Michael Biebl; closes: #832155). | ||
1194 | |||
1195 | [ Martin Pitt ] | ||
1196 | * Add debian/agent-launch: Helper script for conditionally starting the SSH | ||
1197 | agent in the user session. Use it in ssh-agent.user-session.upstart. | ||
1198 | * Add systemd user unit for graphical sessions that use systemd. Override | ||
1199 | the corresponding upstart job in that case (closes: #832445). | ||
1200 | * debian/openssh-server.if-up: Don't block on a finished reload of | ||
1201 | openssh.service, to avoid deadlocking with restarting networking. | ||
1202 | (closes: #832557, LP: #1584393) | ||
1203 | |||
1204 | -- Colin Watson <cjwatson@debian.org> Fri, 29 Jul 2016 02:51:32 +0100 | ||
1205 | |||
1206 | openssh (1:7.2p2-7) unstable; urgency=medium | ||
1207 | |||
1208 | * Don't stop the ssh-session-cleanup service on upgrade (closes: #832155). | ||
1209 | This may cause SSH sessions to be killed on upgrade to *this* version if | ||
1210 | you had previously installed 1:7.2p2-6. Sorry! If your session is | ||
1211 | killed, you can recover using "dpkg --unpack" on this openssh-server | ||
1212 | .deb, followed by "dpkg --configure -a". | ||
1213 | * Recommend libpam-systemd from openssh-server. It's a much better | ||
1214 | solution than the above for systemd users, but I'm wary of depending on | ||
1215 | it in case I cause an assortment of exciting dependency problems on | ||
1216 | upgrade for non-systemd users. | ||
1217 | |||
1218 | -- Colin Watson <cjwatson@debian.org> Sat, 23 Jul 2016 11:46:33 +0100 | ||
1219 | |||
1220 | openssh (1:7.2p2-6) unstable; urgency=medium | ||
1221 | |||
1222 | * debian/watch: Switch to HTTP (thanks, Nicholas Luedtke; closes: | ||
1223 | #822997). | ||
1224 | * Copy summary of supported SFTP protocol versions from upstream's | ||
1225 | PROTOCOL file into the openssh-sftp-server package description (closes: | ||
1226 | #766887). | ||
1227 | * Set SSH_PROGRAM=/usr/bin/ssh1 when building openssh-client-ssh1 so that | ||
1228 | scp1 works (reported by Olivier MATZ). | ||
1229 | * Retroactively add a NEWS.Debian entry for the UseDNS change in 6.9 (see | ||
1230 | LP #1588457). | ||
1231 | * CVE-2016-6210: Mitigate user enumeration via covert timing channel | ||
1232 | (closes: #831902). | ||
1233 | * Backport upstream patch to close ControlPersist background process | ||
1234 | stderr when not in debug mode or when logging to a file or syslog | ||
1235 | (closes: #714526). | ||
1236 | * Add a session cleanup script and a systemd unit file to trigger it, | ||
1237 | which serves to terminate SSH sessions cleanly if systemd doesn't do | ||
1238 | that itself, often because libpam-systemd is not installed (thanks, | ||
1239 | Vivek Das Mohapatra, Tom Hutter, and others; closes: #751636). | ||
1240 | * Stop generating DSA host keys by default (thanks, Santiago Vila; closes: | ||
1241 | #823827). | ||
1242 | |||
1243 | -- Colin Watson <cjwatson@debian.org> Fri, 22 Jul 2016 17:06:19 +0100 | ||
1244 | |||
1245 | openssh (1:7.2p2-5) unstable; urgency=medium | ||
1246 | |||
1247 | * Backport upstream patch to unbreak authentication using lone certificate | ||
1248 | keys in ssh-agent: when attempting pubkey auth with a certificate, if no | ||
1249 | separate private key is found among the keys then try with the | ||
1250 | certificate key itself (thanks, Paul Querna; LP: #1575961). | ||
1251 | |||
1252 | -- Colin Watson <cjwatson@debian.org> Thu, 28 Apr 2016 01:52:01 +0100 | ||
1253 | |||
1254 | openssh (1:7.2p2-4) unstable; urgency=medium | ||
1255 | |||
1256 | * Drop dependency on libnss-files-udeb (closes: #819686). | ||
1257 | * Policy version 3.9.7: no changes required. | ||
1258 | |||
1259 | -- Colin Watson <cjwatson@debian.org> Fri, 15 Apr 2016 16:40:07 +0100 | ||
1260 | |||
1261 | openssh (1:7.2p2-3) unstable; urgency=high | ||
1262 | |||
1263 | * Change all openssh.org references to openssh.com (closes: #819213). | ||
1264 | * CVE-2015-8325: Ignore PAM environment vars when UseLogin=yes. | ||
1265 | |||
1266 | -- Colin Watson <cjwatson@debian.org> Wed, 13 Apr 2016 16:42:28 +0100 | ||
1267 | |||
1268 | openssh (1:7.2p2-2) unstable; urgency=medium | ||
1269 | |||
1270 | * Fix kexgss_server to cope with DH_GRP_MIN/DH_GRP_MAX being stricter on | ||
1271 | the server end than the client (thanks, Damien Miller; closes: #817870, | ||
1272 | LP: #1558576). | ||
1273 | |||
1274 | -- Colin Watson <cjwatson@debian.org> Mon, 21 Mar 2016 12:08:55 +0000 | ||
1275 | |||
1276 | openssh (1:7.2p2-1) unstable; urgency=high | ||
1277 | |||
1278 | * New upstream release (http://www.openssh.com/txt/release-7.2p2): | ||
1279 | - CVE-2016-3115: sshd(8): Sanitise X11 authentication credentials to | ||
1280 | avoid xauth command injection when X11Forwarding is enabled | ||
1281 | (http://www.openssh.com/txt/x11fwd.adv). | ||
1282 | |||
1283 | -- Colin Watson <cjwatson@debian.org> Thu, 10 Mar 2016 13:04:29 +0000 | ||
1284 | |||
1285 | openssh (1:7.2p1-1) unstable; urgency=medium | ||
1286 | |||
1287 | * New upstream release (http://www.openssh.com/txt/release-7.2): | ||
1288 | - This release disables a number of legacy cryptographic algorithms by | ||
1289 | default in ssh: | ||
1290 | + Several ciphers blowfish-cbc, cast128-cbc, all arcfour variants and | ||
1291 | the rijndael-cbc aliases for AES. | ||
1292 | + MD5-based and truncated HMAC algorithms. | ||
1293 | These algorithms are already disabled by default in sshd. | ||
1294 | - ssh(1), sshd(8): Remove unfinished and unused roaming code (was | ||
1295 | already forcibly disabled in OpenSSH 7.1p2). | ||
1296 | - ssh(1): Eliminate fallback from untrusted X11 forwarding to trusted | ||
1297 | forwarding when the X server disables the SECURITY extension. | ||
1298 | - ssh(1), sshd(8): Increase the minimum modulus size supported for | ||
1299 | diffie-hellman-group-exchange to 2048 bits. | ||
1300 | - sshd(8): Pre-auth sandboxing is now enabled by default (previous | ||
1301 | releases enabled it for new installations via sshd_config). | ||
1302 | - all: Add support for RSA signatures using SHA-256/512 hash algorithms | ||
1303 | based on draft-rsa-dsa-sha2-256-03.txt and draft-ssh-ext-info-04.txt. | ||
1304 | - ssh(1): Add an AddKeysToAgent client option which can be set to 'yes', | ||
1305 | 'no', 'ask', or 'confirm', and defaults to 'no'. When enabled, a | ||
1306 | private key that is used during authentication will be added to | ||
1307 | ssh-agent if it is running (with confirmation enabled if set to | ||
1308 | 'confirm'). | ||
1309 | - sshd(8): Add a new authorized_keys option "restrict" that includes all | ||
1310 | current and future key restrictions (no-*-forwarding, etc.). Also add | ||
1311 | permissive versions of the existing restrictions, e.g. "no-pty" -> | ||
1312 | "pty". This simplifies the task of setting up restricted keys and | ||
1313 | ensures they are maximally-restricted, regardless of any permissions | ||
1314 | we might implement in the future. | ||
1315 | - ssh(1): Add ssh_config CertificateFile option to explicitly list | ||
1316 | certificates. | ||
1317 | - ssh-keygen(1): Allow ssh-keygen to change the key comment for all | ||
1318 | supported formats (closes: #811125). | ||
1319 | - ssh-keygen(1): Allow fingerprinting from standard input, e.g. | ||
1320 | "ssh-keygen -lf -" (closes: #509058). | ||
1321 | - ssh-keygen(1): Allow fingerprinting multiple public keys in a file, | ||
1322 | e.g. "ssh-keygen -lf ~/.ssh/authorized_keys". | ||
1323 | - sshd(8): Support "none" as an argument for sshd_config Foreground and | ||
1324 | ChrootDirectory. Useful inside Match blocks to override a global | ||
1325 | default. | ||
1326 | - ssh-keygen(1): Support multiple certificates (one per line) and | ||
1327 | reading from standard input (using "-f -") for "ssh-keygen -L" | ||
1328 | - ssh-keyscan(1): Add "ssh-keyscan -c ..." flag to allow fetching | ||
1329 | certificates instead of plain keys. | ||
1330 | - ssh(1): Better handle anchored FQDNs (e.g. 'cvs.openbsd.org.') in | ||
1331 | hostname canonicalisation - treat them as already canonical and remove | ||
1332 | the trailing '.' before matching ssh_config. | ||
1333 | - sftp(1): Existing destination directories should not terminate | ||
1334 | recursive uploads (regression in OpenSSH 6.8; LP: #1553378). | ||
1335 | * Use HTTPS for Vcs-* URLs, and link to cgit rather than gitweb. | ||
1336 | * Restore slogin symlinks for compatibility, although they were removed | ||
1337 | upstream. | ||
1338 | |||
1339 | -- Colin Watson <cjwatson@debian.org> Tue, 08 Mar 2016 11:47:20 +0000 | ||
1340 | |||
1341 | openssh (1:7.1p2-2) unstable; urgency=medium | ||
1342 | |||
1343 | * Remove protocol 1 host key generation from openssh-server.postinst | ||
1344 | (closes: #811265). | ||
1345 | |||
1346 | -- Colin Watson <cjwatson@debian.org> Sun, 17 Jan 2016 14:10:19 +0000 | ||
1347 | |||
1348 | openssh (1:7.1p2-1) unstable; urgency=high | ||
1349 | |||
1350 | * New upstream release (http://www.openssh.com/txt/release-7.1p2): | ||
1351 | - CVE-2016-0777, CVE-2016-0778: Disable experimental client-side support | ||
1352 | for roaming, which could be tricked by a malicious server into leaking | ||
1353 | client memory to the server, including private client user keys; this | ||
1354 | information leak is restricted to connections to malicious or | ||
1355 | compromised servers (closes: #810984). | ||
1356 | - SECURITY: Fix an out of-bound read access in the packet handling code. | ||
1357 | Reported by Ben Hawkes. | ||
1358 | - Further use of explicit_bzero has been added in various buffer | ||
1359 | handling code paths to guard against compilers aggressively doing | ||
1360 | dead-store removal. | ||
1361 | |||
1362 | -- Colin Watson <cjwatson@debian.org> Thu, 14 Jan 2016 15:28:03 +0000 | ||
1363 | |||
1364 | openssh (1:7.1p1-6) unstable; urgency=medium | ||
1365 | |||
1366 | [ Colin Watson ] | ||
1367 | * Remove explicit "XS-Testsuite: autopkgtest" from debian/control; | ||
1368 | dpkg-source now figures that out automatically based on the existence of | ||
1369 | debian/tests/control. | ||
1370 | * Allow authenticating as root using gssapi-keyex even with | ||
1371 | "PermitRootLogin prohibit-password" (closes: #809695). | ||
1372 | * Shuffle PROPOSAL_KEX_ALGS mangling for GSSAPI key exchange a little | ||
1373 | later in ssh_kex2 so that it's actually effective (closes: #809696). | ||
1374 | |||
1375 | [ Michael Biebl ] | ||
1376 | * Don't call sd_notify when sshd is re-execed (closes: #809035). | ||
1377 | |||
1378 | -- Colin Watson <cjwatson@debian.org> Mon, 04 Jan 2016 15:09:10 +0000 | ||
1379 | |||
1380 | openssh (1:7.1p1-5) unstable; urgency=medium | ||
1381 | |||
1382 | [ Michael Biebl ] | ||
1383 | * Add systemd readiness notification support (closes: #778913). | ||
1384 | |||
1385 | -- Colin Watson <cjwatson@debian.org> Mon, 21 Dec 2015 22:10:07 +0000 | ||
1386 | |||
1387 | openssh (1:7.1p1-4) unstable; urgency=medium | ||
1388 | |||
1389 | * Backport upstream patch to unbreak connections with peers that set | ||
1390 | first_kex_follows (LP: #1526357). | ||
1391 | |||
1392 | -- Colin Watson <cjwatson@debian.org> Tue, 15 Dec 2015 15:40:18 +0000 | ||
1393 | |||
1394 | openssh (1:7.1p1-3) unstable; urgency=medium | ||
1395 | |||
1396 | * Drop priority of openssh-client-ssh1 to extra (closes: #807518). | ||
1397 | * Redirect regression test input from /dev/zero, since otherwise conch | ||
1398 | will immediately send EOF. | ||
1399 | |||
1400 | -- Colin Watson <cjwatson@debian.org> Thu, 10 Dec 2015 15:12:10 +0000 | ||
1401 | |||
1402 | openssh (1:7.1p1-2) unstable; urgency=medium | ||
1403 | |||
1404 | * Really enable conch interoperability tests under autopkgtest. | ||
1405 | * Drop SSH1 keepalive patch. Now that SSH1 is disabled at compile-time, | ||
1406 | it's been rejected upstream and there isn't much point carrying it any | ||
1407 | more. | ||
1408 | * Add NEWS.Debian documenting cryptographic changes in OpenSSH 7.0 | ||
1409 | (closes: #806962). | ||
1410 | * Add an openssh-client-ssh1 binary package for people who need to connect | ||
1411 | to outdated SSH1-only servers (closes: #807107). | ||
1412 | * Update "Subsystem sftp" path in example sshd_config (closes: #691004, | ||
1413 | LP: #1437005). | ||
1414 | |||
1415 | -- Colin Watson <cjwatson@debian.org> Tue, 08 Dec 2015 15:33:08 +0000 | ||
1416 | |||
1417 | openssh (1:7.1p1-1) unstable; urgency=medium | ||
1418 | |||
1419 | * New upstream release (http://www.openssh.com/txt/release-7.0, closes: | ||
1420 | #785190): | ||
1421 | - Support for the legacy SSH version 1 protocol is disabled by default | ||
1422 | at compile time. | ||
1423 | - Support for the 1024-bit diffie-hellman-group1-sha1 key exchange is | ||
1424 | disabled by default at run-time. It may be re-enabled using the | ||
1425 | instructions at http://www.openssh.com/legacy.html | ||
1426 | - Support for ssh-dss, ssh-dss-cert-* host and user keys is disabled by | ||
1427 | default at run-time. These may be re-enabled using the instructions | ||
1428 | at http://www.openssh.com/legacy.html | ||
1429 | - Support for the legacy v00 cert format has been removed. | ||
1430 | - The default for the sshd_config(5) PermitRootLogin option has changed | ||
1431 | from "yes" to "prohibit-password". | ||
1432 | - PermitRootLogin=without-password/prohibit-password now bans all | ||
1433 | interactive authentication methods, allowing only public-key, | ||
1434 | hostbased and GSSAPI authentication (previously it permitted | ||
1435 | keyboard-interactive and password-less authentication if those were | ||
1436 | enabled). | ||
1437 | - ssh_config(5): Add PubkeyAcceptedKeyTypes option to control which | ||
1438 | public key types are available for user authentication. | ||
1439 | - sshd_config(5): Add HostKeyAlgorithms option to control which public | ||
1440 | key types are offered for host authentications. | ||
1441 | - ssh(1), sshd(8): Extend Ciphers, MACs, KexAlgorithms, | ||
1442 | HostKeyAlgorithms, PubkeyAcceptedKeyTypes and HostbasedKeyTypes | ||
1443 | options to allow appending to the default set of algorithms instead of | ||
1444 | replacing it. Options may now be prefixed with a '+' to append to the | ||
1445 | default, e.g. "HostKeyAlgorithms=+ssh-dss". | ||
1446 | - sshd_config(5): PermitRootLogin now accepts an argument of | ||
1447 | 'prohibit-password' as a less-ambiguous synonym of 'without- | ||
1448 | password'. | ||
1449 | - ssh(1), sshd(8): Add compatability workarounds for Cisco and more | ||
1450 | PuTTY versions. | ||
1451 | - Fix some omissions and errors in the PROTOCOL and PROTOCOL.mux | ||
1452 | documentation relating to Unix domain socket forwarding. | ||
1453 | - ssh(1): Improve the ssh(1) manual page to include a better description | ||
1454 | of Unix domain socket forwarding (closes: #779068). | ||
1455 | - ssh(1), ssh-agent(1): Skip uninitialised PKCS#11 slots, fixing | ||
1456 | failures to load keys when they are present. | ||
1457 | - ssh(1), ssh-agent(1): Do not ignore PKCS#11 hosted keys that wth empty | ||
1458 | CKA_ID. | ||
1459 | - sshd(8): Clarify documentation for UseDNS option. | ||
1460 | - Check realpath(3) behaviour matches what sftp-server requires and use | ||
1461 | a replacement if necessary. | ||
1462 | * New upstream release (http://www.openssh.com/txt/release-7.1): | ||
1463 | - sshd(8): OpenSSH 7.0 contained a logic error in PermitRootLogin= | ||
1464 | prohibit-password/without-password that could, depending on | ||
1465 | compile-time configuration, permit password authentication to root | ||
1466 | while preventing other forms of authentication. This problem was | ||
1467 | reported by Mantas Mikulenas. | ||
1468 | - ssh(1), sshd(8): Add compatibility workarounds for FuTTY. | ||
1469 | - ssh(1), sshd(8): Refine compatibility workarounds for WinSCP. | ||
1470 | - Fix a number of memory faults (double-free, free of uninitialised | ||
1471 | memory, etc) in ssh(1) and ssh-keygen(1). Reported by Mateusz | ||
1472 | Kocielski. | ||
1473 | * Change "PermitRootLogin without-password" to the new preferred spelling | ||
1474 | of "PermitRootLogin prohibit-password" in sshd_config, and update | ||
1475 | documentation to reflect the new upstream default. | ||
1476 | * Enable conch interoperability tests under autopkgtest. | ||
1477 | |||
1478 | -- Colin Watson <cjwatson@debian.org> Wed, 02 Dec 2015 20:18:35 +0000 | ||
1479 | |||
1480 | openssh (1:6.9p1-3) unstable; urgency=medium | ||
1481 | |||
1482 | * ssh_config(5): Fix markup errors in description of GSSAPITrustDns | ||
1483 | (closes: #799271). | ||
1484 | * Fix dh_install and dh_fixperms overrides to work properly with an | ||
1485 | architecture-independent-only build (closes: #806090). | ||
1486 | * Do much less work in architecture-independent-only builds. | ||
1487 | * Drop ConsoleKit session registration patch; it was only ever enabled for | ||
1488 | Ubuntu, which no longer needs it (LP: #1334916, #1502045). | ||
1489 | |||
1490 | -- Colin Watson <cjwatson@debian.org> Tue, 24 Nov 2015 22:48:53 +0000 | ||
1491 | |||
1492 | openssh (1:6.9p1-2) unstable; urgency=medium | ||
1493 | |||
1494 | [ Colin Watson ] | ||
1495 | * mention-ssh-keygen-on-keychange.patch: Move example ssh-keygen | ||
1496 | invocation onto a separate line to make it easier to copy and paste | ||
1497 | (LP: #1491532). | ||
1498 | |||
1499 | [ Tyler Hicks ] | ||
1500 | * Build with audit support on Linux (closes: #797727, LP: #1478087). | ||
1501 | |||
1502 | -- Colin Watson <cjwatson@debian.org> Thu, 10 Sep 2015 12:26:11 +0100 | ||
1503 | |||
1504 | openssh (1:6.9p1-1) unstable; urgency=medium | ||
1505 | |||
1506 | * New upstream release (http://www.openssh.com/txt/release-6.8): | ||
1507 | - sshd(8): UseDNS now defaults to 'no'. Configurations that match | ||
1508 | against the client host name (via sshd_config or authorized_keys) may | ||
1509 | need to re-enable it or convert to matching against addresses. | ||
1510 | - Add FingerprintHash option to ssh(1) and sshd(8), and equivalent | ||
1511 | command-line flags to the other tools to control algorithm used for | ||
1512 | key fingerprints. The default changes from MD5 to SHA256 and format | ||
1513 | from hex to base64. | ||
1514 | Fingerprints now have the hash algorithm prepended. An example of the | ||
1515 | new format: SHA256:mVPwvezndPv/ARoIadVY98vAC0g+P/5633yTC4d/wXE | ||
1516 | Please note that visual host keys will also be different. | ||
1517 | - ssh(1), sshd(8): Experimental host key rotation support. Add a | ||
1518 | protocol extension for a server to inform a client of all its | ||
1519 | available host keys after authentication has completed. The client | ||
1520 | may record the keys in known_hosts, allowing it to upgrade to better | ||
1521 | host key algorithms and a server to gracefully rotate its keys. | ||
1522 | The client side of this is controlled by a UpdateHostkeys config | ||
1523 | option (default off). | ||
1524 | - ssh(1): Add a ssh_config HostbasedKeyType option to control which host | ||
1525 | public key types are tried during host-based authentication. | ||
1526 | - ssh(1), sshd(8): Fix connection-killing host key mismatch errors when | ||
1527 | sshd offers multiple ECDSA keys of different lengths. | ||
1528 | - ssh(1): When host name canonicalisation is enabled, try to parse host | ||
1529 | names as addresses before looking them up for canonicalisation. Fixes | ||
1530 | bz#2074 and avoids needless DNS lookups in some cases. | ||
1531 | - ssh(1), ssh-keysign(8): Make ed25519 keys work for host based | ||
1532 | authentication. | ||
1533 | - sshd(8): SSH protocol v.1 workaround for the Meyer, et al, | ||
1534 | Bleichenbacher Side Channel Attack. Fake up a bignum key before RSA | ||
1535 | decryption. | ||
1536 | - sshd(8): Remember which public keys have been used for authentication | ||
1537 | and refuse to accept previously-used keys. This allows | ||
1538 | AuthenticationMethods=publickey,publickey to require that users | ||
1539 | authenticate using two _different_ public keys. | ||
1540 | - sshd(8): add sshd_config HostbasedAcceptedKeyTypes and | ||
1541 | PubkeyAcceptedKeyTypes options to allow sshd to control what public | ||
1542 | key types will be accepted (closes: #481133). Currently defaults to | ||
1543 | all. | ||
1544 | - sshd(8): Don't count partial authentication success as a failure | ||
1545 | against MaxAuthTries. | ||
1546 | - ssh(1): Add RevokedHostKeys option for the client to allow text-file | ||
1547 | or KRL-based revocation of host keys. | ||
1548 | - ssh-keygen(1), sshd(8): Permit KRLs that revoke certificates by serial | ||
1549 | number or key ID without scoping to a particular CA. | ||
1550 | - ssh(1): Add a "Match canonical" criteria that allows ssh_config Match | ||
1551 | blocks to trigger only in the second config pass. | ||
1552 | - ssh(1): Add a -G option to ssh that causes it to parse its | ||
1553 | configuration and dump the result to stdout, similar to "sshd -T". | ||
1554 | - ssh(1): Allow Match criteria to be negated. E.g. "Match !host". | ||
1555 | - ssh-keyscan(1): ssh-keyscan has been made much more robust against | ||
1556 | servers that hang or violate the SSH protocol (closes: #241119). | ||
1557 | - ssh(1), ssh-keygen(1): Fix regression bz#2306: Key path names were | ||
1558 | being lost as comment fields (closes: #787776). | ||
1559 | - ssh(1): Allow ssh_config Port options set in the second config parse | ||
1560 | phase to be applied (they were being ignored; closes: #774369). | ||
1561 | - ssh(1): Tweak config re-parsing with host canonicalisation - make the | ||
1562 | second pass through the config files always run when host name | ||
1563 | canonicalisation is enabled (and not whenever the host name changes) | ||
1564 | - ssh(1): Fix passing of wildcard forward bind addresses when connection | ||
1565 | multiplexing is in use. | ||
1566 | - ssh-keygen(1): Fix broken private key conversion from non-OpenSSH | ||
1567 | formats. | ||
1568 | - ssh-keygen(1): Fix KRL generation bug when multiple CAs are in use. | ||
1569 | * New upstream release (http://www.openssh.com/txt/release-6.9): | ||
1570 | - CVE-2015-5352: ssh(1): When forwarding X11 connections with | ||
1571 | ForwardX11Trusted=no, connections made after ForwardX11Timeout expired | ||
1572 | could be permitted and no longer subject to XSECURITY restrictions | ||
1573 | because of an ineffective timeout check in ssh(1) coupled with "fail | ||
1574 | open" behaviour in the X11 server when clients attempted connections | ||
1575 | with expired credentials (closes: #790798). This problem was reported | ||
1576 | by Jann Horn. | ||
1577 | - SECURITY: ssh-agent(1): Fix weakness of agent locking (ssh-add -x) to | ||
1578 | password guessing by implementing an increasing failure delay, storing | ||
1579 | a salted hash of the password rather than the password itself and | ||
1580 | using a timing-safe comparison function for verifying unlock attempts. | ||
1581 | This problem was reported by Ryan Castellucci. | ||
1582 | - sshd(8): Support admin-specified arguments to AuthorizedKeysCommand | ||
1583 | (closes: #740494). | ||
1584 | - sshd(8): Add AuthorizedPrincipalsCommand that allows retrieving | ||
1585 | authorized principals information from a subprocess rather than a | ||
1586 | file. | ||
1587 | - ssh(1), ssh-add(1): Support PKCS#11 devices with external PIN entry | ||
1588 | devices. | ||
1589 | - ssh-keygen(1): Support "ssh-keygen -lF hostname" to search known_hosts | ||
1590 | and print key hashes rather than full keys. | ||
1591 | - ssh-agent(1): Add -D flag to leave ssh-agent in foreground without | ||
1592 | enabling debug mode. | ||
1593 | - ssh(1), sshd(8): Deprecate legacy SSH2_MSG_KEX_DH_GEX_REQUEST_OLD | ||
1594 | message and do not try to use it against some 3rd-party SSH | ||
1595 | implementations that use it (older PuTTY, WinSCP). | ||
1596 | - ssh(1), sshd(8): Cap DH-GEX group size at 4Kbits for Cisco | ||
1597 | implementations as some would fail when attempting to use group sizes | ||
1598 | >4K (closes: #740307, LP: #1287222). | ||
1599 | - ssh(1): Fix out-of-bound read in EscapeChar configuration option | ||
1600 | parsing. | ||
1601 | - sshd(8): Fix application of PermitTunnel, LoginGraceTime, | ||
1602 | AuthenticationMethods and StreamLocalBindMask options in Match blocks. | ||
1603 | - ssh(1), sshd(8): Improve disconnection message on TCP reset. | ||
1604 | - ssh(1): Remove failed remote forwards established by multiplexing from | ||
1605 | the list of active forwards. | ||
1606 | - sshd(8): Make parsing of authorized_keys "environment=" options | ||
1607 | independent of PermitUserEnv being enabled. | ||
1608 | - sshd(8): Fix post-auth crash with permitopen=none (closes: #778807). | ||
1609 | - ssh(1), ssh-add(1), ssh-keygen(1): Allow new-format private keys to be | ||
1610 | encrypted with AEAD ciphers. | ||
1611 | - ssh(1): Allow ListenAddress, Port and AddressFamily configuration | ||
1612 | options to appear in any order. | ||
1613 | - sshd(8): Check for and reject missing arguments for VersionAddendum | ||
1614 | and ForceCommand. | ||
1615 | - ssh(1), sshd(8): Don't treat unknown certificate extensions as fatal. | ||
1616 | - ssh-keygen(1): Make stdout and stderr output consistent. | ||
1617 | - ssh(1): Mention missing DISPLAY environment in debug log when X11 | ||
1618 | forwarding requested. | ||
1619 | - sshd(8): Correctly record login when UseLogin is set. | ||
1620 | - sshd(8): Add some missing options to sshd -T output and fix output of | ||
1621 | VersionAddendum and HostCertificate. | ||
1622 | - Document and improve consistency of options that accept a "none" | ||
1623 | argument: TrustedUserCAKeys, RevokedKeys, AuthorizedPrincipalsFile. | ||
1624 | - ssh(1): Include remote username in debug output. | ||
1625 | - sshd(8): Avoid compatibility problem with some versions of Tera Term, | ||
1626 | which would crash when they received the hostkeys notification message | ||
1627 | (hostkeys-00@openssh.com). | ||
1628 | - sshd(8): Mention ssh-keygen -E as useful when comparing legacy MD5 | ||
1629 | host key fingerprints. | ||
1630 | - ssh(1): Clarify pseudo-terminal request behaviour and make manual | ||
1631 | language consistent. | ||
1632 | - ssh(1): Document that the TERM environment variable is not subject to | ||
1633 | SendEnv and AcceptEnv; bz#2386 | ||
1634 | - sshd(8): Format UsePAM setting when using sshd -T (closes: #767648). | ||
1635 | - moduli(5): Update DH-GEX moduli (closes: #787037). | ||
1636 | * There are some things I want to fix before upgrading to 7.0p1, though I | ||
1637 | intend to do that soon. In the meantime, backport some patches, mainly | ||
1638 | to fix security issues: | ||
1639 | - SECURITY: sshd(8): OpenSSH 6.8 and 6.9 incorrectly set TTYs to be | ||
1640 | world-writable. Local attackers may be able to write arbitrary | ||
1641 | messages to logged-in users, including terminal escape sequences. | ||
1642 | Reported by Nikolay Edigaryev. | ||
1643 | - SECURITY: sshd(8): Fixed a privilege separation weakness related to | ||
1644 | PAM support. Attackers who could successfully compromise the | ||
1645 | pre-authentication process for remote code execution and who had valid | ||
1646 | credentials on the host could impersonate other users. Reported by | ||
1647 | Moritz Jodeit. | ||
1648 | - SECURITY: sshd(8): Fixed a use-after-free bug related to PAM support | ||
1649 | that was reachable by attackers who could compromise the | ||
1650 | pre-authentication process for remote code execution (closes: | ||
1651 | #795711). Also reported by Moritz Jodeit. | ||
1652 | - CVE-2015-5600: sshd(8): Fix circumvention of MaxAuthTries using | ||
1653 | keyboard-interactive authentication (closes: #793616). By specifying | ||
1654 | a long, repeating keyboard-interactive "devices" string, an attacker | ||
1655 | could request the same authentication method be tried thousands of | ||
1656 | times in a single pass. The LoginGraceTime timeout in sshd(8) and any | ||
1657 | authentication failure delays implemented by the authentication | ||
1658 | mechanism itself were still applied. Found by Kingcope. | ||
1659 | - Let principals-command.sh work for noexec /var/run. | ||
1660 | * Thanks to Jakub Jelen of Red Hat for Fedora's rebased version of the | ||
1661 | GSSAPI key exchange patch. | ||
1662 | * Document the Debian-specific change to the default value of | ||
1663 | ForwardX11Trusted in ssh(1) (closes: #781469). | ||
1664 | |||
1665 | -- Colin Watson <cjwatson@debian.org> Thu, 20 Aug 2015 10:38:58 +0100 | ||
1666 | |||
1667 | openssh (1:6.7p1-6) unstable; urgency=medium | ||
1668 | |||
1669 | [ Martin Pitt ] | ||
1670 | * openssh-server.postinst: Quiesce "Unable to connect to Upstart" error | ||
1671 | message from initctl if upstart is installed, but not the current init | ||
1672 | system. (LP: #1440070) | ||
1673 | * openssh-server.postinst: Fix version comparisons of upgrade adjustments | ||
1674 | to not apply to fresh installs. | ||
1675 | |||
1676 | -- Colin Watson <cjwatson@debian.org> Sun, 19 Apr 2015 14:32:43 +0100 | ||
1677 | |||
1678 | openssh (1:6.7p1-5) unstable; urgency=medium | ||
1679 | |||
1680 | * Revert change from previous upload, which causes far more trouble than | ||
1681 | it is worth (closes: #780797): | ||
1682 | - Send/accept only specific known LC_* variables, rather than using a | ||
1683 | wildcard. | ||
1684 | * Add a NEWS.Debian entry documenting this reversion, as it is too | ||
1685 | difficult to undo the sshd_config change automatically without | ||
1686 | compounding the problem of (arguably) overwriting user configuration. | ||
1687 | |||
1688 | -- Colin Watson <cjwatson@debian.org> Sun, 22 Mar 2015 23:20:56 +0000 | ||
1689 | |||
1690 | openssh (1:6.7p1-4) unstable; urgency=medium | ||
1691 | |||
1692 | * Send/accept only specific known LC_* variables, rather than using a | ||
1693 | wildcard (closes: #765633). | ||
1694 | * Document interactions between ListenAddress/Port and ssh.socket in | ||
1695 | README.Debian (closes: #764842). | ||
1696 | * Debconf translations: | ||
1697 | - Brazilian Portuguese (thanks, José de Figueiredo; closes: #771859). | ||
1698 | |||
1699 | -- Colin Watson <cjwatson@debian.org> Wed, 18 Mar 2015 15:34:13 +0000 | ||
1700 | |||
1701 | openssh (1:6.7p1-3) unstable; urgency=medium | ||
1702 | |||
1703 | * Debconf translations: | ||
1704 | - Dutch (thanks, Frans Spiesschaert; closes: #765851). | ||
1705 | * Assume that dpkg-statoverride exists and drop the test for an obsolete | ||
1706 | compatibility path. | ||
1707 | |||
1708 | -- Colin Watson <cjwatson@debian.org> Mon, 03 Nov 2014 20:29:52 +0000 | ||
1709 | |||
1710 | openssh (1:6.7p1-2) unstable; urgency=medium | ||
1711 | |||
1712 | * debian/tests/control: Drop isolation-container, since the tests run on a | ||
1713 | high port. They're still not guaranteed to run correctly in an schroot, | ||
1714 | but may manage to work, so this lets the tests at least try to run on | ||
1715 | ci.debian.net. | ||
1716 | |||
1717 | -- Colin Watson <cjwatson@debian.org> Fri, 10 Oct 2014 10:47:19 +0100 | ||
1718 | |||
1719 | openssh (1:6.7p1-1) unstable; urgency=medium | ||
1720 | |||
1721 | * New upstream release (http://www.openssh.com/txt/release-6.7): | ||
1722 | - sshd(8): The default set of ciphers and MACs has been altered to | ||
1723 | remove unsafe algorithms. In particular, CBC ciphers and arcfour* are | ||
1724 | disabled by default. The full set of algorithms remains available if | ||
1725 | configured explicitly via the Ciphers and MACs sshd_config options. | ||
1726 | - ssh(1), sshd(8): Add support for Unix domain socket forwarding. A | ||
1727 | remote TCP port may be forwarded to a local Unix domain socket and | ||
1728 | vice versa or both ends may be a Unix domain socket (closes: #236718). | ||
1729 | - ssh(1), ssh-keygen(1): Add support for SSHFP DNS records for ED25519 | ||
1730 | key types. | ||
1731 | - sftp(1): Allow resumption of interrupted uploads. | ||
1732 | - ssh(1): When rekeying, skip file/DNS lookups of the hostkey if it is | ||
1733 | the same as the one sent during initial key exchange. | ||
1734 | - sshd(8): Allow explicit ::1 and 127.0.0.1 forwarding bind addresses | ||
1735 | when GatewayPorts=no; allows client to choose address family. | ||
1736 | - sshd(8): Add a sshd_config PermitUserRC option to control whether | ||
1737 | ~/.ssh/rc is executed, mirroring the no-user-rc authorized_keys | ||
1738 | option. | ||
1739 | - ssh(1): Add a %C escape sequence for LocalCommand and ControlPath that | ||
1740 | expands to a unique identifier based on a hash of the tuple of (local | ||
1741 | host, remote user, hostname, port). Helps avoid exceeding miserly | ||
1742 | pathname limits for Unix domain sockets in multiplexing control paths. | ||
1743 | - sshd(8): Make the "Too many authentication failures" message include | ||
1744 | the user, source address, port and protocol in a format similar to the | ||
1745 | authentication success / failure messages. | ||
1746 | - Use CLOCK_BOOTTIME in preference to CLOCK_MONOTONIC when it is | ||
1747 | available. It considers time spent suspended, thereby ensuring | ||
1748 | timeouts (e.g. for expiring agent keys) fire correctly (closes: | ||
1749 | #734553). | ||
1750 | - Use prctl() to prevent sftp-server from accessing | ||
1751 | /proc/self/{mem,maps}. | ||
1752 | * Restore TCP wrappers support, removed upstream in 6.7. It is true that | ||
1753 | dropping this reduces preauth attack surface in sshd. On the other | ||
1754 | hand, this support seems to be quite widely used, and abruptly dropping | ||
1755 | it (from the perspective of users who don't read openssh-unix-dev) could | ||
1756 | easily cause more serious problems in practice. It's not entirely clear | ||
1757 | what the right long-term answer for Debian is, but it at least probably | ||
1758 | doesn't involve dropping this feature shortly before a freeze. | ||
1759 | * Replace patch to disable OpenSSL version check with an updated version | ||
1760 | of Kurt Roeckx's patch from #732940 to just avoid checking the status | ||
1761 | field. | ||
1762 | * Build-depend on a new enough dpkg-dev for dpkg-buildflags, rather than | ||
1763 | simply a new enough dpkg. | ||
1764 | * Simplify debian/rules using /usr/share/dpkg/buildflags.mk. | ||
1765 | * Use Package-Type rather than XC-Package-Type, now that it is an official | ||
1766 | field. | ||
1767 | * Run a subset of the upstream regression test suite at package build | ||
1768 | time, and the rest of it under autopkgtest. | ||
1769 | |||
1770 | -- Colin Watson <cjwatson@debian.org> Thu, 09 Oct 2014 14:05:56 +0100 | ||
1771 | |||
1772 | openssh (1:6.6p1-8) unstable; urgency=medium | ||
1773 | |||
1774 | * Make the if-up hook use "reload" rather than "restart" if the system was | ||
1775 | booted using systemd (closes: #756547). | ||
1776 | * Show fingerprints of new keys after creating them in the postinst | ||
1777 | (closes: #762128). | ||
1778 | * Policy version 3.9.6: no changes required. | ||
1779 | * Don't link /usr/share/doc/ssh to openssh-client, as this is not safe | ||
1780 | between Architecture: all and Architecture: any binary packages (closes: | ||
1781 | #763375). | ||
1782 | |||
1783 | -- Colin Watson <cjwatson@debian.org> Fri, 03 Oct 2014 12:23:57 +0100 | ||
1784 | |||
1785 | openssh (1:6.6p1-7) unstable; urgency=medium | ||
1786 | |||
1787 | * Make sure that DEB_HOST_ARCH is set, even when invoking debian/rules | ||
1788 | directly. | ||
1789 | * Use dh-exec to simplify override_dh_install target. | ||
1790 | * Remove several unnecessary entries in debian/*.dirs. | ||
1791 | * Pass noupdate to the second call to pam_motd, not the first (thanks, Ken | ||
1792 | T Takusagawa; closes: #757059). | ||
1793 | * Debconf translations: | ||
1794 | - Turkish (thanks, Mert Dirik; closes: #756757). | ||
1795 | |||
1796 | -- Colin Watson <cjwatson@debian.org> Tue, 05 Aug 2014 09:10:04 +0100 | ||
1797 | |||
1798 | openssh (1:6.6p1-6) unstable; urgency=medium | ||
1799 | |||
1800 | * Upgrade to debhelper v9. | ||
1801 | * Only use pam_keyinit on Linux architectures (closes: #747245). | ||
1802 | * Make get_config_option more robust against trailing whitespace (thanks, | ||
1803 | LaMont Jones). | ||
1804 | * Debconf translations: | ||
1805 | - Czech (thanks, Michal Šimůnek; closes: #751419). | ||
1806 | |||
1807 | -- Colin Watson <cjwatson@debian.org> Sat, 28 Jun 2014 14:50:04 +0100 | ||
1808 | |||
1809 | openssh (1:6.6p1-5) unstable; urgency=medium | ||
1810 | |||
1811 | * Force ssh-agent Upstart job to use sh syntax regardless of the user's | ||
1812 | shell (thanks, Steffen Stempel; LP: #1312928). | ||
1813 | |||
1814 | -- Colin Watson <cjwatson@debian.org> Thu, 01 May 2014 16:27:53 +0100 | ||
1815 | |||
1816 | openssh (1:6.6p1-4) unstable; urgency=medium | ||
1817 | |||
1818 | * Debconf translations: | ||
1819 | - Spanish (thanks, Matías Bellone; closes: #744867). | ||
1820 | * Apply upstream-recommended patch to fix bignum encoding for | ||
1821 | curve25519-sha256@libssh.org, fixing occasional key exchange failures. | ||
1822 | |||
1823 | -- Colin Watson <cjwatson@debian.org> Mon, 21 Apr 2014 21:29:53 +0100 | ||
1824 | |||
1825 | openssh (1:6.6p1-3) unstable; urgency=medium | ||
1826 | |||
1827 | * Debconf translations: | ||
1828 | - French (thanks, Étienne Gilli; closes: #743242). | ||
1829 | * Never signal the service supervisor with SIGSTOP more than once, to | ||
1830 | prevent a hang on re-exec (thanks, Robie Basak; LP: #1306877). | ||
1831 | |||
1832 | -- Colin Watson <cjwatson@debian.org> Mon, 14 Apr 2014 12:11:50 +0100 | ||
1833 | |||
1834 | openssh (1:6.6p1-2) unstable; urgency=medium | ||
1835 | |||
1836 | * If no root password is set, then switch to "PermitRootLogin | ||
1837 | without-password" without asking (LP: #1300127). | ||
1838 | |||
1839 | -- Colin Watson <cjwatson@debian.org> Mon, 31 Mar 2014 12:20:46 +0100 | ||
1840 | |||
1841 | openssh (1:6.6p1-1) unstable; urgency=medium | ||
1842 | |||
1843 | [ Colin Watson ] | ||
1844 | * Apply various warning-suppression and regression-test fixes to | ||
1845 | gssapi.patch from Damien Miller. | ||
1846 | * New upstream release (http://www.openssh.com/txt/release-6.6, | ||
1847 | LP: #1298280): | ||
1848 | - CVE-2014-2532: sshd(8): when using environment passing with an | ||
1849 | sshd_config(5) AcceptEnv pattern with a wildcard, OpenSSH prior to 6.6 | ||
1850 | could be tricked into accepting any environment variable that contains | ||
1851 | the characters before the wildcard character. | ||
1852 | * Re-enable btmp logging, as its permissions were fixed a long time ago in | ||
1853 | response to #370050 (closes: #341883). | ||
1854 | * Change to "PermitRootLogin without-password" for new installations, and | ||
1855 | ask a debconf question when upgrading systems with "PermitRootLogin yes" | ||
1856 | from previous versions (closes: #298138). | ||
1857 | * Debconf translations: | ||
1858 | - Danish (thanks, Joe Hansen). | ||
1859 | - Portuguese (thanks, Américo Monteiro). | ||
1860 | - Russian (thanks, Yuri Kozlov; closes: #742308). | ||
1861 | - Swedish (thanks, Andreas Rönnquist). | ||
1862 | - Japanese (thanks, victory). | ||
1863 | - German (thanks, Stephan Beck; closes: #742541). | ||
1864 | - Italian (thanks, Beatrice Torracca). | ||
1865 | * Don't start ssh-agent from the Upstart user session job if something | ||
1866 | like Xsession has already done so (based on work by Bruno Vasselle; | ||
1867 | LP: #1244736). | ||
1868 | |||
1869 | [ Matthew Vernon ] | ||
1870 | * CVE-2014-2653: Fix failure to check SSHFP records if server presents a | ||
1871 | certificate (bug reported by me, patch by upstream's Damien Miller; | ||
1872 | thanks also to Mark Wooding for his help in fixing this) (Closes: | ||
1873 | #742513) | ||
1874 | |||
1875 | -- Colin Watson <cjwatson@debian.org> Fri, 28 Mar 2014 18:04:41 +0000 | ||
1876 | |||
1877 | openssh (1:6.5p1-6) unstable; urgency=medium | ||
1878 | |||
1879 | * Fix Breaks/Replaces versions of openssh-sftp-server on openssh-server | ||
1880 | (thanks, Axel Beckert). | ||
1881 | |||
1882 | -- Colin Watson <cjwatson@debian.org> Thu, 06 Mar 2014 16:18:44 +0000 | ||
1883 | |||
1884 | openssh (1:6.5p1-5) unstable; urgency=medium | ||
1885 | |||
1886 | [ Colin Watson ] | ||
1887 | * Add Alias=sshd.service to systemd ssh.service file, to match "Provides: | ||
1888 | sshd" in the sysvinit script (thanks, Michael Biebl). | ||
1889 | * Add Before=ssh.service to systemd ssh.socket file, since otherwise | ||
1890 | nothing guarantees that ssh.service has stopped before ssh.socket starts | ||
1891 | (thanks, Uoti Urpala). | ||
1892 | |||
1893 | [ Axel Beckert ] | ||
1894 | * Split sftp-server into its own package to allow it to also be used by | ||
1895 | other SSH server implementations like dropbear (closes: #504290). | ||
1896 | |||
1897 | -- Colin Watson <cjwatson@debian.org> Wed, 05 Mar 2014 13:53:08 +0000 | ||
1898 | |||
1899 | openssh (1:6.5p1-4) unstable; urgency=medium | ||
1900 | |||
1901 | * Configure --without-hardening on hppa, to work around | ||
1902 | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60155 (closes: #738798). | ||
1903 | * Amend "Running sshd from inittab" instructions in README.Debian to | ||
1904 | recommend 'update-rc.d ssh disable', rather than manual removal of rc*.d | ||
1905 | symlinks that won't work with dependency-based sysv-rc. | ||
1906 | * Remove code related to non-dependency-based sysv-rc ordering, since that | ||
1907 | is no longer supported. | ||
1908 | * Apply patch from https://bugzilla.mindrot.org/show_bug.cgi?id=2200 to | ||
1909 | fix getsockname errors when using "ssh -W" (closes: #738693). | ||
1910 | |||
1911 | -- Colin Watson <cjwatson@debian.org> Sat, 15 Feb 2014 02:19:36 +0000 | ||
1912 | |||
1913 | openssh (1:6.5p1-3) unstable; urgency=medium | ||
1914 | |||
1915 | * Clarify socket activation mode in README.Debian, as suggested by Uoti | ||
1916 | Urpala. | ||
1917 | * Stop claiming that "Protocol 2" is a Debian-specific default; this has | ||
1918 | been upstream's default since 5.4p1. | ||
1919 | * Avoid stdout noise from which(1) on purge of openssh-client. | ||
1920 | * Fix sysvinit->systemd transition code to cope with still-running | ||
1921 | sysvinit jobs being considered active by systemd (thanks, Uoti Urpala | ||
1922 | and Michael Biebl). | ||
1923 | * Bump guard version for sysvinit->systemd transition to 1:6.5p1-3; we may | ||
1924 | have got it wrong before, and it's fairly harmless to repeat it. | ||
1925 | * Remove tests for whether /dev/null is a character device from the | ||
1926 | Upstart job and the systemd service files; it's there to avoid a | ||
1927 | confusing failure mode in daemon(), but with modern init systems we use | ||
1928 | the -D option to suppress daemonisation anyway. | ||
1929 | * Refer to /usr/share/common-licenses/GPL-2 in debian/copyright (for the | ||
1930 | Debian patch) rather than plain GPL. | ||
1931 | * Drop some very old Conflicts and Replaces (ssh (<< 1:3.8.1p1-9), | ||
1932 | rsh-client (<< 0.16.1-1), ssh-krb5 (<< 1:4.3p2-7), ssh-nonfree (<< 2), | ||
1933 | and openssh-client (<< 1:3.8.1p1-11)). These all relate to pre-etch | ||
1934 | versions, for which we no longer have maintainer script code, and per | ||
1935 | policy they would have to become Breaks nowadays anyway. | ||
1936 | * Policy version 3.9.5. | ||
1937 | * Drop unnecessary -1 in zlib1g Build-Depends version. | ||
1938 | * Tweak dh_systemd_enable invocations to avoid lots of error noise. | ||
1939 | |||
1940 | -- Colin Watson <cjwatson@debian.org> Wed, 12 Feb 2014 13:10:08 +0000 | ||
1941 | |||
1942 | openssh (1:6.5p1-2) unstable; urgency=medium | ||
1943 | |||
1944 | * Only enable ssh.service for systemd, not both ssh.service and | ||
1945 | ssh.socket. Thanks to Michael Biebl for spotting this. | ||
1946 | * Backport upstream patch to unbreak case-sensitive matching of ssh_config | ||
1947 | (closes: #738619). | ||
1948 | |||
1949 | -- Colin Watson <cjwatson@debian.org> Tue, 11 Feb 2014 11:28:35 +0000 | ||
1950 | |||
1951 | openssh (1:6.5p1-1) unstable; urgency=medium | ||
1952 | |||
1953 | * New upstream release (http://www.openssh.com/txt/release-6.5, | ||
1954 | LP: #1275068): | ||
1955 | - ssh(1): Add support for client-side hostname canonicalisation using a | ||
1956 | set of DNS suffixes and rules in ssh_config(5). This allows | ||
1957 | unqualified names to be canonicalised to fully-qualified domain names | ||
1958 | to eliminate ambiguity when looking up keys in known_hosts or checking | ||
1959 | host certificate names (closes: #115286). | ||
1960 | * Switch to git; adjust Vcs-* fields. | ||
1961 | * Convert to git-dpm, and drop source package documentation associated | ||
1962 | with the old bzr/quilt patch handling workflow. | ||
1963 | * Drop ssh-vulnkey and the associated ssh/ssh-add/sshd integration code, | ||
1964 | leaving only basic configuration file compatibility, since it has been | ||
1965 | nearly six years since the original vulnerability and this code is not | ||
1966 | likely to be of much value any more (closes: #481853, #570651). See | ||
1967 | https://lists.debian.org/debian-devel/2013/09/msg00240.html for my full | ||
1968 | reasoning. | ||
1969 | * Add OpenPGP signature checking configuration to watch file (thanks, | ||
1970 | Daniel Kahn Gillmor; closes: #732441). | ||
1971 | * Add the pam_keyinit session module, to create a new session keyring on | ||
1972 | login (closes: #734816). | ||
1973 | * Incorporate default path changes from shadow 1:4.0.18.1-8, removing | ||
1974 | /usr/bin/X11 (closes: #644521). | ||
1975 | * Generate ED25519 host keys on fresh installations. Upgraders who wish | ||
1976 | to add such host keys should manually add 'HostKey | ||
1977 | /etc/ssh/ssh_host_ed25519_key' to /etc/ssh/sshd_config and run | ||
1978 | 'ssh-keygen -q -f /etc/ssh/ssh_host_ed25519_key -N "" -t ed25519'. | ||
1979 | * Drop long-obsolete "SSH now uses protocol 2 by default" section from | ||
1980 | README.Debian. | ||
1981 | * Add systemd support (thanks, Sven Joachim; closes: #676830). | ||
1982 | |||
1983 | -- Colin Watson <cjwatson@debian.org> Mon, 10 Feb 2014 14:58:26 +0000 | ||
1984 | |||
1985 | openssh (1:6.4p1-2) unstable; urgency=high | ||
1986 | |||
1987 | * Increase ServerKeyBits value in package-generated sshd_config to 1024 | ||
1988 | (closes: #727622, LP: #1244272). | ||
1989 | * Restore patch to disable OpenSSL version check (closes: #732940). | ||
1990 | |||
1991 | -- Colin Watson <cjwatson@debian.org> Mon, 23 Dec 2013 10:44:04 +0000 | ||
1992 | |||
1993 | openssh (1:6.4p1-1) unstable; urgency=high | ||
1994 | |||
1995 | * New upstream release. Important changes: | ||
1996 | - 6.3/6.3p1 (http://www.openssh.com/txt/release-6.3): | ||
1997 | + sftp(1): add support for resuming partial downloads using the | ||
1998 | "reget" command and on the sftp commandline or on the "get" | ||
1999 | commandline using the "-a" (append) option (closes: #158590). | ||
2000 | + ssh(1): add an "IgnoreUnknown" configuration option to selectively | ||
2001 | suppress errors arising from unknown configuration directives | ||
2002 | (closes: #436052). | ||
2003 | + sftp(1): update progressmeter when data is acknowledged, not when | ||
2004 | it's sent (partially addresses #708372). | ||
2005 | + ssh(1): do not fatally exit when attempting to cleanup multiplexing- | ||
2006 | created channels that are incompletely opened (closes: #651357). | ||
2007 | - 6.4/6.4p1 (http://www.openssh.com/txt/release-6.4): | ||
2008 | + CVE-2013-4548: sshd(8): fix a memory corruption problem triggered | ||
2009 | during rekeying when an AES-GCM cipher is selected (closes: | ||
2010 | #729029). Full details of the vulnerability are available at: | ||
2011 | http://www.openssh.com/txt/gcmrekey.adv | ||
2012 | * When running under Upstart, only consider the daemon started once it is | ||
2013 | ready to accept connections (by raising SIGSTOP at that point and using | ||
2014 | "expect stop"). | ||
2015 | |||
2016 | -- Colin Watson <cjwatson@debian.org> Sat, 09 Nov 2013 18:24:16 +0000 | ||
2017 | |||
2018 | openssh (1:6.2p2-6) unstable; urgency=low | ||
2019 | |||
2020 | * Update config.guess and config.sub automatically at build time. | ||
2021 | dh_autoreconf does not take care of that by default because openssh does | ||
2022 | not use automake. | ||
2023 | |||
2024 | -- Colin Watson <cjwatson@debian.org> Tue, 02 Jul 2013 22:54:49 +0100 | ||
2025 | |||
2026 | openssh (1:6.2p2-5) unstable; urgency=low | ||
2027 | |||
2028 | [ Colin Watson ] | ||
2029 | * Document consequences of ssh-agent being setgid in ssh-agent(1); see | ||
2030 | #711623. | ||
2031 | * Use 'set -e' rather than '#! /bin/sh -e' in maintainer scripts and | ||
2032 | ssh-argv0. | ||
2033 | |||
2034 | [ Yolanda Robla ] | ||
2035 | * debian/rules: Include real distribution in SSH_EXTRAVERSION instead of | ||
2036 | hardcoding Debian (LP: #1195342). | ||
2037 | |||
2038 | -- Colin Watson <cjwatson@debian.org> Thu, 27 Jun 2013 15:24:14 +0100 | ||
2039 | |||
2040 | openssh (1:6.2p2-4) unstable; urgency=low | ||
2041 | |||
2042 | * Fix non-portable shell in ssh-copy-id (closes: #711162). | ||
2043 | * Rebuild against debhelper 9.20130604 with fixed dependencies for | ||
2044 | invoke-rc.d and Upstart jobs (closes: #711159, #711364). | ||
2045 | * Set SELinux context on private host keys as well as public host keys | ||
2046 | (closes: #687436). | ||
2047 | |||
2048 | -- Colin Watson <cjwatson@debian.org> Thu, 06 Jun 2013 17:06:31 +0100 | ||
2049 | |||
2050 | openssh (1:6.2p2-3) unstable; urgency=low | ||
2051 | |||
2052 | * If the running init daemon is Upstart, then, on the first upgrade to | ||
2053 | this version, check whether sysvinit is still managing sshd; if so, | ||
2054 | manually stop it so that it can be restarted under upstart. We do this | ||
2055 | near the end of the postinst, so it shouldn't result in any appreciable | ||
2056 | extra window where sshd is not running during upgrade. | ||
2057 | |||
2058 | -- Colin Watson <cjwatson@debian.org> Wed, 22 May 2013 17:42:10 +0100 | ||
2059 | |||
2060 | openssh (1:6.2p2-2) unstable; urgency=low | ||
2061 | |||
2062 | * Change start condition of Upstart job to be just the standard "runlevel | ||
2063 | [2345]", rather than "filesystem or runlevel [2345]"; the latter makes | ||
2064 | it unreasonably difficult to ensure that urandom starts before ssh, and | ||
2065 | is not really necessary since one of static-network-up and failsafe-boot | ||
2066 | is guaranteed to happen and will trigger entry to the default runlevel, | ||
2067 | and we don't care about ssh starting before the network (LP: #1098299). | ||
2068 | * Drop conffile handling for direct upgrades from pre-split ssh package; | ||
2069 | this was originally added in 1:4.3p2-7 / 1:4.3p2-8, and contained a | ||
2070 | truly ghastly hack around a misbehaviour in sarge's dpkg. Since this is | ||
2071 | now four Debian releases ago, we can afford to drop this and simplify | ||
2072 | the packaging. | ||
2073 | * Remove ssh/use_old_init_script, which was a workaround for a very old | ||
2074 | bug in /etc/init.d/ssh. If anyone has ignored this for >10 years then | ||
2075 | they aren't going to be convinced now (closes: #214182). | ||
2076 | * Remove support for upgrading directly from ssh-nonfree. | ||
2077 | * Remove lots of maintainer script support for direct upgrades from | ||
2078 | pre-etch (three releases before current stable). | ||
2079 | * Add #DEBHELPER# tokens to openssh-client.postinst and | ||
2080 | openssh-server.postinst. | ||
2081 | * Replace old manual conffile handling code with dpkg-maintscript-helper, | ||
2082 | via dh_installdeb. | ||
2083 | * Switch to new unified layout for Upstart jobs as documented in | ||
2084 | https://wiki.ubuntu.com/UpstartCompatibleInitScripts: the init script | ||
2085 | checks for a running Upstart, and we now let dh_installinit handle most | ||
2086 | of the heavy lifting in maintainer scripts. Ubuntu users should be | ||
2087 | essentially unaffected except that sshd may no longer start | ||
2088 | automatically in chroots if the running Upstart predates 0.9.0; but the | ||
2089 | main goal is simply not to break when openssh-server is installed in a | ||
2090 | chroot. | ||
2091 | * Remove the check for vulnerable host keys; this was first added five | ||
2092 | years ago, and everyone should have upgraded through a version that | ||
2093 | applied these checks by now. The ssh-vulnkey tool and the blacklisting | ||
2094 | support in sshd are still here, at least for the moment. | ||
2095 | * This removes the last of our uses of debconf (closes: #221531). | ||
2096 | * Use the pam_loginuid session module (thanks, Laurent Bigonville; closes: | ||
2097 | #677440, LP: #1067779). | ||
2098 | * Bracket our session stack with calls to pam_selinux close/open (thanks, | ||
2099 | Laurent Bigonville; closes: #679458). | ||
2100 | * Fix dh_builddeb invocation so that we really use xz compression for | ||
2101 | binary packages, as intended since 1:6.1p1-2. | ||
2102 | |||
2103 | -- Colin Watson <cjwatson@debian.org> Wed, 22 May 2013 09:07:42 +0100 | ||
2104 | |||
2105 | openssh (1:6.2p2-1) unstable; urgency=low | ||
2106 | |||
2107 | * New upstream release (http://www.openssh.com/txt/release-6.2p2): | ||
2108 | - Only warn for missing identity files that were explicitly specified | ||
2109 | (closes: #708275). | ||
2110 | - Fix bug in contributed contrib/ssh-copy-id script that could result in | ||
2111 | "rm *" being called on mktemp failure (closes: #708419). | ||
2112 | |||
2113 | -- Colin Watson <cjwatson@debian.org> Thu, 16 May 2013 14:05:06 +0100 | ||
2114 | |||
2115 | openssh (1:6.2p1-3) unstable; urgency=low | ||
2116 | |||
2117 | * Renumber Debian-specific additions to enum monitor_reqtype so that they | ||
2118 | fit within a single byte (thanks, Jason Conti; LP: #1179202). | ||
2119 | |||
2120 | -- Colin Watson <cjwatson@debian.org> Mon, 13 May 2013 10:56:04 +0100 | ||
2121 | |||
2122 | openssh (1:6.2p1-2) unstable; urgency=low | ||
2123 | |||
2124 | * Fix build failure on Ubuntu: | ||
2125 | - Include openbsd-compat/sys-queue.h from consolekit.c. | ||
2126 | - Fix consolekit mismerges in monitor.c and monitor_wrap.c. | ||
2127 | |||
2128 | -- Colin Watson <cjwatson@debian.org> Thu, 09 May 2013 09:45:57 +0100 | ||
2129 | |||
2130 | openssh (1:6.2p1-1) unstable; urgency=low | ||
2131 | |||
2132 | * New upstream release (http://www.openssh.com/txt/release-6.2). | ||
2133 | - Add support for multiple required authentication in SSH protocol 2 via | ||
2134 | an AuthenticationMethods option (closes: #195716). | ||
2135 | - Fix Sophie Germain formula in moduli(5) (closes: #698612). | ||
2136 | - Update ssh-copy-id to Phil Hands' greatly revised version (closes: | ||
2137 | #99785, #322228, #620428; LP: #518883, #835901, #1074798). | ||
2138 | * Use dh-autoreconf. | ||
2139 | |||
2140 | -- Colin Watson <cjwatson@debian.org> Tue, 07 May 2013 11:48:16 +0100 | ||
2141 | |||
2142 | openssh (1:6.1p1-4) experimental; urgency=low | ||
2143 | |||
2144 | [ Gunnar Hjalmarsson ] | ||
2145 | * debian/openssh-server.sshd.pam: Explicitly state that ~/.pam_environment | ||
2146 | should be read, and move the pam_env calls from "auth" to "session" so | ||
2147 | that it's also read when $HOME is encrypted (LP: #952185). | ||
2148 | |||
2149 | [ Stéphane Graber ] | ||
2150 | * Add ssh-agent upstart user job. This implements something similar to | ||
2151 | the 90x11-common_ssh-agent Xsession script. That is, start ssh-agent | ||
2152 | and set the appropriate environment variables (closes: #703906). | ||
2153 | |||
2154 | -- Colin Watson <cjwatson@debian.org> Mon, 25 Mar 2013 16:58:04 +0000 | ||
2155 | |||
2156 | openssh (1:6.1p1-3) experimental; urgency=low | ||
2157 | |||
2158 | * Give ssh and ssh-krb5 versioned dependencies on openssh-client and | ||
2159 | openssh-server, to try to reduce confusion when people run 'apt-get | ||
2160 | install ssh' or similar and expect that to upgrade everything relevant. | ||
2161 | * CVE-2010-5107: Improve DoS resistance by changing default of MaxStartups | ||
2162 | to 10:30:100 (closes: #700102). | ||
2163 | |||
2164 | -- Colin Watson <cjwatson@debian.org> Fri, 08 Feb 2013 21:07:31 +0000 | ||
2165 | |||
2166 | openssh (1:6.1p1-2) experimental; urgency=low | ||
2167 | |||
2168 | * Use xz compression for binary packages. | ||
2169 | * Merge from Ubuntu: | ||
2170 | - Add support for registering ConsoleKit sessions on login. (This is | ||
2171 | currently enabled only when building for Ubuntu.) | ||
2172 | - Drop openssh-blacklist and openssh-blacklist-extra to Suggests. It's | ||
2173 | been long enough since the relevant vulnerability that we shouldn't | ||
2174 | need these installed by default nowadays. | ||
2175 | - Add an Upstart job (not currently used by default in Debian). | ||
2176 | - Add mention of ssh-keygen in ssh connect warning (Scott Moser). | ||
2177 | - Install apport hooks. | ||
2178 | * Only build with -j if DEB_BUILD_OPTIONS=parallel=* is used (closes: | ||
2179 | #694282). | ||
2180 | |||
2181 | -- Colin Watson <cjwatson@debian.org> Mon, 26 Nov 2012 16:39:07 +0000 | ||
2182 | |||
2183 | openssh (1:6.1p1-1) experimental; urgency=low | ||
2184 | |||
2185 | * New upstream release (http://www.openssh.com/txt/release-6.1). | ||
2186 | - Enable pre-auth sandboxing by default for new installs. | ||
2187 | - Allow "PermitOpen none" to refuse all port-forwarding requests | ||
2188 | (closes: #543683). | ||
2189 | |||
2190 | -- Colin Watson <cjwatson@debian.org> Fri, 07 Sep 2012 00:22:44 +0100 | ||
2191 | |||
2192 | openssh (1:6.0p1-3) unstable; urgency=low | ||
2193 | |||
2194 | * debconf template translations: | ||
2195 | - Add Indonesian (thanks, Andika Triwidada; closes: #681670). | ||
2196 | * Call restorecon on copied ~/.ssh/authorized_keys if possible, since some | ||
2197 | SELinux policies require this (closes: #658675). | ||
2198 | * Add ncurses-term to openssh-server's Recommends, since it's often needed | ||
2199 | to support unusual terminal emulators on clients (closes: #675362). | ||
2200 | |||
2201 | -- Colin Watson <cjwatson@debian.org> Fri, 24 Aug 2012 06:55:36 +0100 | ||
2202 | |||
2203 | openssh (1:6.0p1-2) unstable; urgency=low | ||
2204 | |||
2205 | * Tighten libssl1.0.0 and libcrypto1.0.0-udeb dependencies to the current | ||
2206 | "fix" version at build time (closes: #678661). | ||
2207 | |||
2208 | -- Colin Watson <cjwatson@debian.org> Sun, 24 Jun 2012 12:16:06 +0100 | ||
2209 | |||
2210 | openssh (1:6.0p1-1) unstable; urgency=low | ||
2211 | |||
2212 | [ Roger Leigh ] | ||
2213 | * Display dynamic part of MOTD from /run/motd.dynamic, if it exists | ||
2214 | (closes: #669699). | ||
2215 | |||
2216 | [ Colin Watson ] | ||
2217 | * Update OpenSSH FAQ to revision 1.113, fixing missing line break (closes: | ||
2218 | #669667). | ||
2219 | * New upstream release (closes: #671010, | ||
2220 | http://www.openssh.com/txt/release-6.0). | ||
2221 | - Fix IPQoS not being set on non-mapped v4-in-v6 addressed connections | ||
2222 | (closes: #643312, #650512, #671075). | ||
2223 | - Add a new privilege separation sandbox implementation for Linux's new | ||
2224 | seccomp sandbox, automatically enabled on platforms that support it. | ||
2225 | (Note: privilege separation sandboxing is still experimental.) | ||
2226 | * Fix a bashism in configure's seccomp_filter check. | ||
2227 | * Add a sandbox fallback mechanism, so that behaviour on Linux depends on | ||
2228 | whether the running system's kernel has seccomp_filter support, not the | ||
2229 | build system's kernel (forwarded upstream as | ||
2230 | https://bugzilla.mindrot.org/show_bug.cgi?id=2011). | ||
2231 | |||
2232 | -- Colin Watson <cjwatson@debian.org> Sat, 26 May 2012 13:48:14 +0100 | ||
2233 | |||
2234 | openssh (1:5.9p1-5) unstable; urgency=low | ||
2235 | |||
2236 | * Use dpkg-buildflags, including for hardening support; drop use of | ||
2237 | hardening-includes. | ||
2238 | * Fix cross-building: | ||
2239 | - Allow using a cross-architecture pkg-config. | ||
2240 | - Pass default LDFLAGS to contrib/Makefile. | ||
2241 | - Allow dh_strip to strip gnome-ssh-askpass, rather than calling | ||
2242 | 'install -s'. | ||
2243 | |||
2244 | -- Colin Watson <cjwatson@debian.org> Mon, 02 Apr 2012 11:20:33 +0100 | ||
2245 | |||
2246 | openssh (1:5.9p1-4) unstable; urgency=low | ||
2247 | |||
2248 | * Disable OpenSSL version check again, as its SONAME is sufficient | ||
2249 | nowadays (closes: #664383). | ||
2250 | |||
2251 | -- Colin Watson <cjwatson@debian.org> Mon, 19 Mar 2012 11:06:30 +0000 | ||
2252 | |||
2253 | openssh (1:5.9p1-3) unstable; urgency=low | ||
2254 | |||
2255 | * debconf template translations: | ||
2256 | - Update Polish (thanks, Michał Kułach; closes: #659829). | ||
2257 | * Ignore errors writing to console in init script (closes: #546743). | ||
2258 | * Move ssh-krb5 to Section: oldlibs. | ||
2259 | |||
2260 | -- Colin Watson <cjwatson@debian.org> Fri, 24 Feb 2012 08:56:18 +0000 | ||
2261 | |||
2262 | openssh (1:5.9p1-2) unstable; urgency=low | ||
2263 | |||
2264 | * Mark openssh-client and openssh-server as Multi-Arch: foreign. | ||
2265 | |||
2266 | -- Colin Watson <cjwatson@debian.org> Wed, 09 Nov 2011 02:06:48 +0000 | ||
2267 | |||
2268 | openssh (1:5.9p1-1) unstable; urgency=low | ||
2269 | |||
2270 | * New upstream release (http://www.openssh.com/txt/release-5.9). | ||
2271 | - Introduce sandboxing of the pre-auth privsep child using an optional | ||
2272 | sshd_config(5) "UsePrivilegeSeparation=sandbox" mode that enables | ||
2273 | mandatory restrictions on the syscalls the privsep child can perform. | ||
2274 | - Add new SHA256-based HMAC transport integrity modes from | ||
2275 | http://www.ietf.org/id/draft-dbider-sha2-mac-for-ssh-02.txt. | ||
2276 | - The pre-authentication sshd(8) privilege separation slave process now | ||
2277 | logs via a socket shared with the master process, avoiding the need to | ||
2278 | maintain /dev/log inside the chroot (closes: #75043, #429243, | ||
2279 | #599240). | ||
2280 | - ssh(1) now warns when a server refuses X11 forwarding (closes: | ||
2281 | #504757). | ||
2282 | - sshd_config(5)'s AuthorizedKeysFile now accepts multiple paths, | ||
2283 | separated by whitespace (closes: #76312). The authorized_keys2 | ||
2284 | fallback is deprecated but documented (closes: #560156). | ||
2285 | - ssh(1) and sshd(8): set IPv6 traffic class from IPQoS, as well as IPv4 | ||
2286 | ToS/DSCP (closes: #498297). | ||
2287 | - ssh-add(1) now accepts keys piped from standard input. E.g. "ssh-add | ||
2288 | - < /path/to/key" (closes: #229124). | ||
2289 | - Clean up lost-passphrase text in ssh-keygen(1) (closes: #444691). | ||
2290 | - Say "required" rather than "recommended" in unprotected-private-key | ||
2291 | warning (LP: #663455). | ||
2292 | * Update OpenSSH FAQ to revision 1.112. | ||
2293 | |||
2294 | -- Colin Watson <cjwatson@debian.org> Wed, 07 Sep 2011 23:46:00 +0100 | ||
2295 | |||
2296 | openssh (1:5.8p1-7) unstable; urgency=low | ||
2297 | |||
2298 | * Only recommend ssh-import-id when built on Ubuntu (closes: #635887). | ||
2299 | * Use 'dpkg-vendor --derives-from Ubuntu' to detect Ubuntu systems rather | ||
2300 | than 'lsb_release -is' so that Ubuntu derivatives behave the same way as | ||
2301 | Ubuntu itself. | ||
2302 | |||
2303 | -- Colin Watson <cjwatson@debian.org> Fri, 29 Jul 2011 14:27:52 +0100 | ||
2304 | |||
2305 | openssh (1:5.8p1-6) unstable; urgency=low | ||
2306 | |||
2307 | * openssh-client and openssh-server Suggests: monkeysphere. | ||
2308 | * Quieten logs when multiple from= restrictions are used in different | ||
2309 | authorized_keys lines for the same key; it's still not ideal, but at | ||
2310 | least you'll only get one log entry per key (closes: #630606). | ||
2311 | * Merge from Ubuntu (Dustin Kirkland): | ||
2312 | - openssh-server Recommends: ssh-import-id (no-op in Debian since that | ||
2313 | package doesn't exist there, but this reduces the Ubuntu delta). | ||
2314 | |||
2315 | -- Colin Watson <cjwatson@debian.org> Thu, 28 Jul 2011 17:10:18 +0100 | ||
2316 | |||
2317 | openssh (1:5.8p1-5) unstable; urgency=low | ||
2318 | |||
2319 | * Drop openssh-server's dependency on openssh-blacklist to a | ||
2320 | recommendation (closes: #622604). | ||
2321 | * Update Vcs-* fields and README.source for Alioth changes. | ||
2322 | * Backport from upstream: | ||
2323 | - Make hostbased auth with ECDSA keys work correctly (closes: #633368). | ||
2324 | |||
2325 | -- Colin Watson <cjwatson@debian.org> Sun, 24 Jul 2011 11:06:47 +0100 | ||
2326 | |||
2327 | openssh (1:5.8p1-4) unstable; urgency=low | ||
2328 | |||
2329 | * Drop hardcoded dependencies on libssl0.9.8 and libcrypto0.9.8-udeb, | ||
2330 | since the required minimum versions are rather old now anyway and | ||
2331 | openssl has bumped its SONAME (thanks, Julien Cristau; closes: #620828). | ||
2332 | * Remove unreachable code from openssh-server.postinst. | ||
2333 | |||
2334 | -- Colin Watson <cjwatson@debian.org> Mon, 04 Apr 2011 15:56:18 +0100 | ||
2335 | |||
2336 | openssh (1:5.8p1-3) unstable; urgency=low | ||
2337 | |||
2338 | * Correct ssh-keygen instruction in the changelog for 1:5.7p1-1 (thanks, | ||
2339 | Joel Stanley). | ||
2340 | * Allow ssh-add to read from FIFOs (thanks, Daniel Kahn Gillmor; closes: | ||
2341 | #614897). | ||
2342 | |||
2343 | -- Colin Watson <cjwatson@debian.org> Fri, 18 Mar 2011 16:42:42 +0000 | ||
2344 | |||
2345 | openssh (1:5.8p1-2) unstable; urgency=low | ||
2346 | |||
2347 | * Upload to unstable. | ||
2348 | |||
2349 | -- Colin Watson <cjwatson@debian.org> Tue, 08 Feb 2011 10:59:17 +0000 | ||
2350 | |||
2351 | openssh (1:5.8p1-1) experimental; urgency=low | ||
2352 | |||
2353 | * New upstream release (http://www.openssh.com/txt/release-5.8): | ||
2354 | - Fix stack information leak in legacy certificate signing | ||
2355 | (http://www.openssh.com/txt/legacy-cert.adv). | ||
2356 | |||
2357 | -- Colin Watson <cjwatson@debian.org> Sat, 05 Feb 2011 11:13:11 +0000 | ||
2358 | |||
2359 | openssh (1:5.7p1-2) experimental; urgency=low | ||
2360 | |||
2361 | * Fix crash in ssh_selinux_setfscreatecon when SELinux is disabled | ||
2362 | (LP: #708571). | ||
2363 | |||
2364 | -- Colin Watson <cjwatson@debian.org> Thu, 27 Jan 2011 12:14:17 +0000 | ||
2365 | |||
2366 | openssh (1:5.7p1-1) experimental; urgency=low | ||
2367 | |||
2368 | * New upstream release (http://www.openssh.com/txt/release-5.7): | ||
2369 | - Implement Elliptic Curve Cryptography modes for key exchange (ECDH) | ||
2370 | and host/user keys (ECDSA) as specified by RFC5656. ECDH and ECDSA | ||
2371 | offer better performance than plain DH and DSA at the same equivalent | ||
2372 | symmetric key length, as well as much shorter keys. | ||
2373 | - sftp(1)/sftp-server(8): add a protocol extension to support a hard | ||
2374 | link operation. It is available through the "ln" command in the | ||
2375 | client. The old "ln" behaviour of creating a symlink is available | ||
2376 | using its "-s" option or through the preexisting "symlink" command. | ||
2377 | - scp(1): Add a new -3 option to scp: Copies between two remote hosts | ||
2378 | are transferred through the local host (closes: #508613). | ||
2379 | - ssh(1): "atomically" create the listening mux socket by binding it on | ||
2380 | a temporary name and then linking it into position after listen() has | ||
2381 | succeeded. This allows the mux clients to determine that the server | ||
2382 | socket is either ready or stale without races (closes: #454784). | ||
2383 | Stale server sockets are now automatically removed (closes: #523250). | ||
2384 | - ssh(1): install a SIGCHLD handler to reap expired child process | ||
2385 | (closes: #594687). | ||
2386 | - ssh(1)/ssh-agent(1): honour $TMPDIR for client xauth and ssh-agent | ||
2387 | temporary directories (closes: #357469, although only if you arrange | ||
2388 | for ssh-agent to actually see $TMPDIR since the setgid bit will cause | ||
2389 | it to be stripped off). | ||
2390 | * Update to current GSSAPI patch from | ||
2391 | http://www.sxw.org.uk/computing/patches/openssh-5.7p1-gsskex-all-20110125.patch: | ||
2392 | - Add GSSAPIServerIdentity option. | ||
2393 | * Generate ECDSA host keys on fresh installations. Upgraders who wish to | ||
2394 | add such host keys should manually add 'HostKey | ||
2395 | /etc/ssh/ssh_host_ecdsa_key' to /etc/ssh/sshd_config and run 'ssh-keygen | ||
2396 | -q -f /etc/ssh/ssh_host_ecdsa_key -N "" -t ecdsa'. | ||
2397 | * Build-depend on libssl-dev (>= 0.9.8g) to ensure sufficient ECC support. | ||
2398 | * Backport SELinux build fix from CVS. | ||
2399 | * Rearrange selinux-role.patch so that it links properly given this | ||
2400 | SELinux build fix. | ||
2401 | |||
2402 | -- Colin Watson <cjwatson@debian.org> Wed, 26 Jan 2011 23:48:02 +0000 | ||
2403 | |||
2404 | openssh (1:5.6p1-3) experimental; urgency=low | ||
2405 | |||
2406 | * Drop override for desktop-file-but-no-dh_desktop-call, which Lintian no | ||
2407 | longer issues. | ||
2408 | * Merge 1:5.5p1-6. | ||
2409 | |||
2410 | -- Colin Watson <cjwatson@debian.org> Thu, 30 Dec 2010 11:48:00 +0000 | ||
2411 | |||
2412 | openssh (1:5.6p1-2) experimental; urgency=low | ||
2413 | |||
2414 | * Backport upstream patch to install a SIGCHLD handler to reap expired ssh | ||
2415 | child processes, preventing lots of zombies when using ControlPersist | ||
2416 | (closes: #594687). | ||
2417 | |||
2418 | -- Colin Watson <cjwatson@debian.org> Tue, 26 Oct 2010 14:46:40 +0100 | ||
2419 | |||
2420 | openssh (1:5.6p1-1) experimental; urgency=low | ||
2421 | |||
2422 | * New upstream release (http://www.openssh.com/txt/release-5.6): | ||
2423 | - Added a ControlPersist option to ssh_config(5) that automatically | ||
2424 | starts a background ssh(1) multiplex master when connecting. This | ||
2425 | connection can stay alive indefinitely, or can be set to automatically | ||
2426 | close after a user-specified duration of inactivity (closes: #335697, | ||
2427 | #350898, #454787, #500573, #550262). | ||
2428 | - Support AuthorizedKeysFile, AuthorizedPrincipalsFile, | ||
2429 | HostbasedUsesNameFromPacketOnly, and PermitTunnel in sshd_config(5) | ||
2430 | Match blocks (closes: #549858). | ||
2431 | - sftp(1): fix ls in working directories that contain globbing | ||
2432 | characters in their pathnames (LP: #530714). | ||
2433 | |||
2434 | -- Colin Watson <cjwatson@debian.org> Tue, 24 Aug 2010 00:37:54 +0100 | ||
2435 | |||
2436 | openssh (1:5.5p1-6) unstable; urgency=low | ||
2437 | |||
2438 | * Touch /var/run/sshd/.placeholder in the preinst so that /var/run/sshd, | ||
2439 | which is intentionally no longer shipped in the openssh-server package | ||
2440 | due to /var/run often being a temporary directory, is not removed on | ||
2441 | upgrade (closes: #575582). | ||
2442 | |||
2443 | -- Colin Watson <cjwatson@debian.org> Sun, 26 Dec 2010 18:09:29 +0000 | ||
2444 | |||
2445 | openssh (1:5.5p1-5) unstable; urgency=low | ||
2446 | |||
2447 | * Use an architecture wildcard for libselinux1-dev (closes: #591740). | ||
2448 | * debconf template translations: | ||
2449 | - Update Danish (thanks, Joe Hansen; closes: #592800). | ||
2450 | |||
2451 | -- Colin Watson <cjwatson@debian.org> Mon, 23 Aug 2010 22:59:03 +0100 | ||
2452 | |||
2453 | openssh (1:5.5p1-4) unstable; urgency=low | ||
2454 | |||
2455 | [ Sebastian Andrzej Siewior ] | ||
2456 | * Add powerpcspe to architecture list for libselinux1-dev build-dependency | ||
2457 | (closes: #579843). | ||
2458 | |||
2459 | [ Colin Watson ] | ||
2460 | * Allow ~/.ssh/authorized_keys and other secure files to be | ||
2461 | group-writable, provided that the group in question contains only the | ||
2462 | file's owner; this extends a patch previously applied to ~/.ssh/config | ||
2463 | (closes: #581919). | ||
2464 | * Check primary group memberships as well as supplementary group | ||
2465 | memberships, and only allow group-writability by groups with exactly one | ||
2466 | member, as zero-member groups are typically used by setgid binaries | ||
2467 | rather than being user-private groups (closes: #581697). | ||
2468 | |||
2469 | -- Colin Watson <cjwatson@debian.org> Sat, 22 May 2010 23:37:20 +0100 | ||
2470 | |||
2471 | openssh (1:5.5p1-3) unstable; urgency=low | ||
2472 | |||
2473 | * Discard error messages while checking whether rsh, rlogin, and rcp | ||
2474 | alternatives exist (closes: #579285). | ||
2475 | * Drop IDEA key check; I don't think it works properly any more due to | ||
2476 | textual changes in error output, it's only relevant for direct upgrades | ||
2477 | from truly ancient versions, and it breaks upgrades if | ||
2478 | /etc/ssh/ssh_host_key can't be loaded (closes: #579570). | ||
2479 | |||
2480 | -- Colin Watson <cjwatson@debian.org> Wed, 28 Apr 2010 22:12:47 +0100 | ||
2481 | |||
2482 | openssh (1:5.5p1-2) unstable; urgency=low | ||
2483 | |||
2484 | * Use dh_installinit -n, since our maintainer scripts already handle this | ||
2485 | more carefully (thanks, Julien Cristau). | ||
2486 | |||
2487 | -- Colin Watson <cjwatson@debian.org> Sat, 17 Apr 2010 12:55:56 +0100 | ||
2488 | |||
2489 | openssh (1:5.5p1-1) unstable; urgency=low | ||
2490 | |||
2491 | * New upstream release: | ||
2492 | - Unbreak sshd_config's AuthorizedKeysFile option for $HOME-relative | ||
2493 | paths. | ||
2494 | - Include a language tag when sending a protocol 2 disconnection | ||
2495 | message. | ||
2496 | - Make logging of certificates used for user authentication more clear | ||
2497 | and consistent between CAs specified using TrustedUserCAKeys and | ||
2498 | authorized_keys. | ||
2499 | |||
2500 | -- Colin Watson <cjwatson@debian.org> Fri, 16 Apr 2010 10:27:30 +0100 | ||
2501 | |||
2502 | openssh (1:5.4p1-2) unstable; urgency=low | ||
2503 | |||
2504 | * Borrow patch from Fedora to add DNSSEC support: if glibc 2.11 is | ||
2505 | installed, the host key is published in an SSHFP RR secured with DNSSEC, | ||
2506 | and VerifyHostKeyDNS=yes, then ssh will no longer prompt for host key | ||
2507 | verification (closes: #572049). | ||
2508 | * Convert to dh(1), and use dh_installdocs --link-doc. | ||
2509 | * Drop lpia support, since Ubuntu no longer supports this architecture. | ||
2510 | * Use dh_install more effectively. | ||
2511 | * Add a NEWS.Debian entry about changes in smartcard support relative to | ||
2512 | previous unofficial builds (closes: #231472). | ||
2513 | |||
2514 | -- Colin Watson <cjwatson@debian.org> Sat, 10 Apr 2010 01:08:59 +0100 | ||
2515 | |||
2516 | openssh (1:5.4p1-1) unstable; urgency=low | ||
2517 | |||
2518 | * New upstream release (LP: #535029). | ||
2519 | - After a transition period of about 10 years, this release disables SSH | ||
2520 | protocol 1 by default. Clients and servers that need to use the | ||
2521 | legacy protocol must explicitly enable it in ssh_config / sshd_config | ||
2522 | or on the command-line. | ||
2523 | - Remove the libsectok/OpenSC-based smartcard code and add support for | ||
2524 | PKCS#11 tokens. This support is enabled by default in the Debian | ||
2525 | packaging, since it now doesn't involve additional library | ||
2526 | dependencies (closes: #231472, LP: #16918). | ||
2527 | - Add support for certificate authentication of users and hosts using a | ||
2528 | new, minimal OpenSSH certificate format (closes: #482806). | ||
2529 | - Added a 'netcat mode' to ssh(1): "ssh -W host:port ...". | ||
2530 | - Add the ability to revoke keys in sshd(8) and ssh(1). (For the Debian | ||
2531 | package, this overlaps with the key blacklisting facility added in | ||
2532 | openssh 1:4.7p1-9, but with different file formats and slightly | ||
2533 | different scopes; for the moment, I've roughly merged the two.) | ||
2534 | - Various multiplexing improvements, including support for requesting | ||
2535 | port-forwardings via the multiplex protocol (closes: #360151). | ||
2536 | - Allow setting an explicit umask on the sftp-server(8) commandline to | ||
2537 | override whatever default the user has (closes: #496843). | ||
2538 | - Many sftp client improvements, including tab-completion, more options, | ||
2539 | and recursive transfer support for get/put (LP: #33378). The old | ||
2540 | mget/mput commands never worked properly and have been removed | ||
2541 | (closes: #270399, #428082). | ||
2542 | - Do not prompt for a passphrase if we fail to open a keyfile, and log | ||
2543 | the reason why the open failed to debug (closes: #431538). | ||
2544 | - Prevent sftp from crashing when given a "-" without a command. Also, | ||
2545 | allow whitespace to follow a "-" (closes: #531561). | ||
2546 | |||
2547 | * Fix 'debian/rules quilt-setup' to avoid writing .orig files if some | ||
2548 | patches apply with offsets. | ||
2549 | * Include debian/ssh-askpass-gnome.png in the Debian tarball now that | ||
2550 | we're using a source format that permits this, rather than messing | ||
2551 | around with uudecode. | ||
2552 | * Drop compatibility with the old gssapi mechanism used in ssh-krb5 << | ||
2553 | 3.8.1p1-1. Simon Wilkinson refused this patch since the old gssapi | ||
2554 | mechanism was removed due to a serious security hole, and since these | ||
2555 | versions of ssh-krb5 are no longer security-supported by Debian I don't | ||
2556 | think there's any point keeping client compatibility for them. | ||
2557 | * Fix substitution of ETC_PAM_D_SSH, following the rename in 1:4.7p1-4. | ||
2558 | * Hardcode the location of xauth to /usr/bin/xauth rather than | ||
2559 | /usr/bin/X11/xauth (thanks, Aron Griffis; closes: #575725, LP: #8440). | ||
2560 | xauth no longer depends on x11-common, so we're no longer guaranteed to | ||
2561 | have the /usr/bin/X11 symlink available. I was taking advantage of the | ||
2562 | /usr/bin/X11 symlink to smooth X's move to /usr/bin, but this is far | ||
2563 | enough in the past now that it's probably safe to just use /usr/bin. | ||
2564 | * Remove SSHD_OOM_ADJUST configuration. sshd now unconditionally makes | ||
2565 | itself non-OOM-killable, and doesn't require configuration to avoid log | ||
2566 | spam in virtualisation containers (closes: #555625). | ||
2567 | * Drop Debian-specific removal of OpenSSL version check. Upstream ignores | ||
2568 | the two patchlevel nybbles now, which is sufficient to address the | ||
2569 | original reason this change was introduced, and it appears that any | ||
2570 | change in the major/minor/fix nybbles would involve a new libssl package | ||
2571 | name. (We'd still lose if the status nybble were ever changed, but that | ||
2572 | would mean somebody had packaged a development/beta version rather than | ||
2573 | a proper release, which doesn't appear to be normal practice.) | ||
2574 | * Drop most of our "LogLevel SILENT" (-qq) patch. This was originally | ||
2575 | introduced to match the behaviour of non-free SSH, in which -q does not | ||
2576 | suppress fatal errors, but matching the behaviour of OpenSSH upstream is | ||
2577 | much more important nowadays. We no longer document that -q does not | ||
2578 | suppress fatal errors (closes: #280609). Migrate "LogLevel SILENT" to | ||
2579 | "LogLevel QUIET" in sshd_config on upgrade. | ||
2580 | * Policy version 3.8.4: | ||
2581 | - Add a Homepage field. | ||
2582 | |||
2583 | -- Colin Watson <cjwatson@debian.org> Tue, 06 Apr 2010 22:38:31 +0100 | ||
2584 | |||
2585 | openssh (1:5.3p1-3) unstable; urgency=low | ||
2586 | |||
2587 | * Convert to source format 3.0 (quilt). | ||
2588 | * Update README.source to match, and add a 'quilt-setup' target to | ||
2589 | debian/rules for the benefit of those checking out the package from | ||
2590 | revision control. | ||
2591 | * All patches are now maintained separately and tagged according to DEP-3. | ||
2592 | * Add GSSAPIStoreCredentialsOnRekey to 'sshd -T' configuration dump. | ||
2593 | * Remove documentation of building for Debian 3.0 in README.Debian. | ||
2594 | Support for this was removed in 1:4.7p1-2. | ||
2595 | * Remove obsolete header from README.Debian dating from when people | ||
2596 | expected non-free SSH. | ||
2597 | * Update copyright years for GSSAPI patch. | ||
2598 | |||
2599 | -- Colin Watson <cjwatson@debian.org> Sun, 28 Feb 2010 01:35:53 +0000 | ||
2600 | |||
2601 | openssh (1:5.3p1-2) unstable; urgency=low | ||
2602 | |||
2603 | * Link with -Wl,--as-needed (closes: #560155). | ||
2604 | * Install upstream sshd_config as an example (closes: #415008). | ||
2605 | * Use dh_lintian. | ||
2606 | * Honour DEB_BUILD_OPTIONS=nocheck. | ||
2607 | |||
2608 | -- Colin Watson <cjwatson@debian.org> Mon, 22 Feb 2010 12:43:24 +0000 | ||
2609 | |||
2610 | openssh (1:5.3p1-1) unstable; urgency=low | ||
2611 | |||
2612 | * New upstream release. | ||
2613 | * Update to GSSAPI patch from | ||
2614 | http://www.sxw.org.uk/computing/patches/openssh-5.3p1-gsskex-all-20100124.patch. | ||
2615 | * Backport from upstream: | ||
2616 | - Do not fall back to adding keys without constraints (ssh-add -c / -t | ||
2617 | ...) when the agent refuses the constrained add request. This was a | ||
2618 | useful migration measure back in 2002 when constraints were new, but | ||
2619 | just adds risk now (LP: #209447). | ||
2620 | * Drop change from 1:3.8p1-3 to avoid setresuid() and setresgid() system | ||
2621 | calls. This only applied to Linux 2.2, which it's no longer feasible to | ||
2622 | run anyway (see 1:5.2p1-2 changelog). | ||
2623 | |||
2624 | -- Colin Watson <cjwatson@debian.org> Tue, 26 Jan 2010 11:55:29 +0000 | ||
2625 | |||
2626 | openssh (1:5.2p1-2) unstable; urgency=low | ||
2627 | |||
2628 | [ Colin Watson ] | ||
2629 | * Backport from upstream: | ||
2630 | - After sshd receives a SIGHUP, ignore subsequent HUPs while sshd | ||
2631 | re-execs itself. Prevents two HUPs in quick succession from resulting | ||
2632 | in sshd dying (LP: #497781). | ||
2633 | - Output a debug if we can't open an existing keyfile (LP: #505301). | ||
2634 | * Use host compiler for ssh-askpass-gnome when cross-compiling. | ||
2635 | * Don't run tests when cross-compiling. | ||
2636 | * Drop change from 1:3.6.1p2-5 to disable cmsg_type check for file | ||
2637 | descriptor passing when running on Linux 2.0. The previous stable | ||
2638 | release of Debian dropped support for Linux 2.4, let alone 2.0, so this | ||
2639 | very likely has no remaining users depending on it. | ||
2640 | |||
2641 | [ Kees Cook ] | ||
2642 | * Implement DebianBanner server configuration flag that can be set to "no" | ||
2643 | to allow sshd to run without the Debian-specific extra version in the | ||
2644 | initial protocol handshake (closes: #562048). | ||
2645 | |||
2646 | -- Colin Watson <cjwatson@debian.org> Sat, 16 Jan 2010 01:28:58 +0000 | ||
2647 | |||
2648 | openssh (1:5.2p1-1) unstable; urgency=low | ||
2649 | |||
2650 | * New upstream release (closes: #536182). Yes, I know 5.3p1 has been out | ||
2651 | for a while, but there's no GSSAPI patch available for it yet. | ||
2652 | - Change the default cipher order to prefer the AES CTR modes and the | ||
2653 | revised "arcfour256" mode to CBC mode ciphers that are susceptible to | ||
2654 | CPNI-957037 "Plaintext Recovery Attack Against SSH". | ||
2655 | - Add countermeasures to mitigate CPNI-957037-style attacks against the | ||
2656 | SSH protocol's use of CBC-mode ciphers. Upon detection of an invalid | ||
2657 | packet length or Message Authentication Code, ssh/sshd will continue | ||
2658 | reading up to the maximum supported packet length rather than | ||
2659 | immediately terminating the connection. This eliminates most of the | ||
2660 | known differences in behaviour that leaked information about the | ||
2661 | plaintext of injected data which formed the basis of this attack | ||
2662 | (closes: #506115, LP: #379329). | ||
2663 | - ForceCommand directive now accepts commandline arguments for the | ||
2664 | internal-sftp server (closes: #524423, LP: #362511). | ||
2665 | - Add AllowAgentForwarding to available Match keywords list (closes: | ||
2666 | #540623). | ||
2667 | - Make ssh(1) send the correct channel number for | ||
2668 | SSH2_MSG_CHANNEL_SUCCESS and SSH2_MSG_CHANNEL_FAILURE messages to | ||
2669 | avoid triggering 'Non-public channel' error messages on sshd(8) in | ||
2670 | openssh-5.1. | ||
2671 | - Avoid printing 'Non-public channel' warnings in sshd(8), since the | ||
2672 | ssh(1) has sent incorrect channel numbers since ~2004 (this reverts a | ||
2673 | behaviour introduced in openssh-5.1; closes: #496017). | ||
2674 | - Disable nonfunctional ssh(1) ~C escape handler in multiplex slave | ||
2675 | connections (closes: #507541). | ||
2676 | - Fix "whitepsace" typo in ssh_config(5) (closes: #514313, LP: #303835). | ||
2677 | * Update to GSSAPI patch from | ||
2678 | http://www.sxw.org.uk/computing/patches/openssh-5.2p1-gsskex-all-20090726.patch, | ||
2679 | including cascading credentials support (LP: #416958). | ||
2680 | * Use x11.pc when compiling/linking gnome-ssh-askpass2 (closes: #555951). | ||
2681 | * Moved to bzr.debian.org; add Vcs-Bzr and Vcs-Browser control fields. | ||
2682 | * Add debian/README.source with instructions on bzr handling. | ||
2683 | * Make ChrootDirectory work with SELinux (thanks, Russell Coker; closes: | ||
2684 | #556644). | ||
2685 | * Initialise sc to NULL in ssh_selinux_getctxbyname (thanks, Václav Ovsík; | ||
2686 | closes: #498684). | ||
2687 | * Don't duplicate backslashes when displaying server banner (thanks, | ||
2688 | Michał Górny; closes: #505378, LP: #425346). | ||
2689 | * Use hardening-includes for hardening logic (thanks, Kees Cook; closes: | ||
2690 | #561887). | ||
2691 | * Update OpenSSH FAQ to revision 1.110. | ||
2692 | * Remove ssh/new_config, only needed for direct upgrades from potato which | ||
2693 | are no longer particularly feasible anyway (closes: #420682). | ||
2694 | * Cope with insserv reordering of init script links. | ||
2695 | * Remove init script stop link in rc1, as killprocs handles it already. | ||
2696 | * Adjust short descriptions to avoid relying on previous experience with | ||
2697 | rsh, based on suggestions from Reuben Thomas (closes: #512198). | ||
2698 | * Remove manual page references to login.conf, which aren't applicable on | ||
2699 | non-BSD systems (closes: #154434). | ||
2700 | * Remove/adjust manual page references to BSD-specific /etc/rc (closes: | ||
2701 | #513417). | ||
2702 | * Refer to sshd_config(5) rather than sshd(8) in postinst-written | ||
2703 | /etc/ssh/sshd_config, and add UsePAM commentary from upstream-shipped | ||
2704 | configuration file (closes: #415008, although unfortunately this will | ||
2705 | only be conveniently visible on new installations). | ||
2706 | * Include URL to OpenBSD's ssl(8) in ssh(1), since I don't see a better | ||
2707 | source for the same information among Debian's manual pages (closes: | ||
2708 | #530692, LP: #456660). | ||
2709 | |||
2710 | -- Colin Watson <cjwatson@debian.org> Mon, 04 Jan 2010 13:23:35 +0000 | ||
2711 | |||
2712 | openssh (1:5.1p1-8) unstable; urgency=low | ||
2713 | |||
2714 | * Build with just -fPIC on mips/mipsel, not -fPIE as well (thanks, LIU Qi; | ||
2715 | closes: #538313). | ||
2716 | * Build-depend on libselinux1-dev on sh4 too (thanks, Nobuhiro Iwamatsu; | ||
2717 | closes: #547103). | ||
2718 | * Fix grammar in if-up script (closes: #549128). | ||
2719 | * Pass $SSHD_OPTS when checking configuration too (thanks, "sobtwmxt"; | ||
2720 | closes: #548662). | ||
2721 | |||
2722 | -- Colin Watson <cjwatson@debian.org> Mon, 05 Oct 2009 13:30:49 +0100 | ||
2723 | |||
2724 | openssh (1:5.1p1-7) unstable; urgency=low | ||
2725 | |||
2726 | * Update config.guess and config.sub from autotools-dev 20090611.1 | ||
2727 | (closes: #538301). | ||
2728 | * Set umask to 022 in the init script as well as postinsts (closes: | ||
2729 | #539030). | ||
2730 | * Add ${misc:Depends} to keep Lintian happy. | ||
2731 | * Use 'which' rather than 'type' in maintainer scripts. | ||
2732 | * Upgrade to debhelper v7. | ||
2733 | |||
2734 | -- Colin Watson <cjwatson@debian.org> Fri, 31 Jul 2009 16:28:10 +0100 | ||
2735 | |||
2736 | openssh (1:5.1p1-6) unstable; urgency=low | ||
2737 | |||
2738 | * Open /proc/self/oom_adj with O_RDONLY or O_WRONLY as necessary, rather | ||
2739 | than O_RDWR. | ||
2740 | * Disable OOM adjustment for vserver/OpenVZ (thanks, Karl Chen; closes: | ||
2741 | #511771). | ||
2742 | * Add ufw integration (thanks, Didier Roche; see | ||
2743 | https://wiki.ubuntu.com/UbuntuFirewall#Integrating%20UFW%20with%20Packages; | ||
2744 | LP: #261884). | ||
2745 | * Add a comment above PermitRootLogin in sshd_config pointing to | ||
2746 | README.Debian. | ||
2747 | * Check if delgroup is present in openssh-client.postrm (closes: #530501). | ||
2748 | * Build with -fPIC on mips/mipsel (thanks, Luk Claes; closes: #531942). | ||
2749 | * Remove /var/run/sshd from openssh-server package; it will be created at | ||
2750 | run-time before starting the server. | ||
2751 | * Use invoke-rc.d in openssh-server's if-up script. | ||
2752 | |||
2753 | -- Colin Watson <cjwatson@debian.org> Fri, 05 Jun 2009 11:56:03 +0100 | ||
2754 | |||
2755 | openssh (1:5.1p1-5) unstable; urgency=low | ||
2756 | |||
2757 | * Backport from upstream CVS (Markus Friedl): | ||
2758 | - packet_disconnect() on padding error, too. Should reduce the success | ||
2759 | probability for the CPNI-957037 Plaintext Recovery Attack to 2^-18. | ||
2760 | * Check that /var/run/sshd.pid exists and that the process ID listed there | ||
2761 | corresponds to sshd before running '/etc/init.d/ssh reload' from if-up | ||
2762 | script; SIGHUP is racy if called at boot before sshd has a chance to | ||
2763 | install its signal handler, but fortunately the pid file is written | ||
2764 | after that which lets us avoid the race (closes: #502444). | ||
2765 | * While the above is a valuable sanity-check, it turns out that it doesn't | ||
2766 | really fix the bug (thanks to Kevin Price for testing), so for the | ||
2767 | meantime we'll just use '/etc/init.d/ssh restart', even though it is | ||
2768 | unfortunately heavyweight. | ||
2769 | |||
2770 | -- Colin Watson <cjwatson@debian.org> Wed, 14 Jan 2009 00:34:08 +0000 | ||
2771 | |||
2772 | openssh (1:5.1p1-4) unstable; urgency=low | ||
2773 | |||
2774 | * ssh-copy-id: Strip trailing colons from hostname (closes: #226172, | ||
2775 | LP: #249706; thanks to Karl Goetz for nudging this along; forwarded | ||
2776 | upstream as https://bugzilla.mindrot.org/show_bug.cgi?id=1530). | ||
2777 | * Backport from upstream CVS (Markus Friedl): | ||
2778 | - Only send eow and no-more-sessions requests to openssh 5 and newer; | ||
2779 | fixes interop problems with broken ssh v2 implementations (closes: | ||
2780 | #495917). | ||
2781 | * Fix double-free when failing to parse a forwarding specification given | ||
2782 | using ~C (closes: #505330; forwarded upstream as | ||
2783 | https://bugzilla.mindrot.org/show_bug.cgi?id=1539). | ||
2784 | |||
2785 | -- Colin Watson <cjwatson@debian.org> Sun, 23 Nov 2008 14:46:10 +0000 | ||
2786 | |||
2787 | openssh (1:5.1p1-3) unstable; urgency=low | ||
2788 | |||
2789 | * Remove unnecessary ssh-vulnkey output in non-verbose mode when no | ||
2790 | compromised or unknown keys were found (closes: #496495). | ||
2791 | * Configure with --disable-strip; dh_strip will deal with stripping | ||
2792 | binaries and will honour DEB_BUILD_OPTIONS (thanks, Bernhard R. Link; | ||
2793 | closes: #498681). | ||
2794 | * Fix handling of zero-length server banners (thanks, Tomas Mraz; closes: | ||
2795 | #497026). | ||
2796 | |||
2797 | -- Colin Watson <cjwatson@debian.org> Tue, 30 Sep 2008 23:09:58 +0100 | ||
2798 | |||
2799 | openssh (1:5.1p1-2) unstable; urgency=low | ||
2800 | |||
2801 | * Look for $SHELL on the path when executing ProxyCommands or | ||
2802 | LocalCommands (closes: #492728). | ||
2803 | |||
2804 | -- Colin Watson <cjwatson@debian.org> Tue, 29 Jul 2008 15:31:25 +0100 | ||
2805 | |||
2806 | openssh (1:5.1p1-1) unstable; urgency=low | ||
2807 | |||
2808 | * New upstream release (closes: #474301). Important changes not previously | ||
2809 | backported to 4.7p1: | ||
2810 | - 4.9/4.9p1 (http://www.openssh.com/txt/release-4.9): | ||
2811 | + Added chroot(2) support for sshd(8), controlled by a new option | ||
2812 | "ChrootDirectory" (closes: #139047, LP: #24777). | ||
2813 | + Linked sftp-server(8) into sshd(8). The internal sftp server is used | ||
2814 | when the command "internal-sftp" is specified in a Subsystem or | ||
2815 | ForceCommand declaration. When used with ChrootDirectory, the | ||
2816 | internal sftp server requires no special configuration of files | ||
2817 | inside the chroot environment. | ||
2818 | + Added a protocol extension method "posix-rename@openssh.com" for | ||
2819 | sftp-server(8) to perform POSIX atomic rename() operations; sftp(1) | ||
2820 | prefers this if available (closes: #308561). | ||
2821 | + Removed the fixed limit of 100 file handles in sftp-server(8). | ||
2822 | + ssh(8) will now skip generation of SSH protocol 1 ephemeral server | ||
2823 | keys when in inetd mode and protocol 2 connections are negotiated. | ||
2824 | This speeds up protocol 2 connections to inetd-mode servers that | ||
2825 | also allow Protocol 1. | ||
2826 | + Accept the PermitRootLogin directive in a sshd_config(5) Match | ||
2827 | block. Allows for, e.g. permitting root only from the local network. | ||
2828 | + Reworked sftp(1) argument splitting and escaping to be more | ||
2829 | internally consistent (i.e. between sftp commands) and more | ||
2830 | consistent with sh(1). Please note that this will change the | ||
2831 | interpretation of some quoted strings, especially those with | ||
2832 | embedded backslash escape sequences. | ||
2833 | + Support "Banner=none" in sshd_config(5) to disable sending of a | ||
2834 | pre-login banner (e.g. in a Match block). | ||
2835 | + ssh(1) ProxyCommands are now executed with $SHELL rather than | ||
2836 | /bin/sh. | ||
2837 | + ssh(1)'s ConnectTimeout option is now applied to both the TCP | ||
2838 | connection and the SSH banner exchange (previously it just covered | ||
2839 | the TCP connection). This allows callers of ssh(1) to better detect | ||
2840 | and deal with stuck servers that accept a TCP connection but don't | ||
2841 | progress the protocol, and also makes ConnectTimeout useful for | ||
2842 | connections via a ProxyCommand. | ||
2843 | + scp(1) incorrectly reported "stalled" on slow copies (closes: | ||
2844 | #140828). | ||
2845 | + scp(1) date underflow for timestamps before epoch. | ||
2846 | + ssh(1) used the obsolete SIG DNS RRtype for host keys in DNS, | ||
2847 | instead of the current standard RRSIG. | ||
2848 | + Correctly drain ACKs when a sftp(1) upload write fails midway, | ||
2849 | avoids a fatal() exit from what should be a recoverable condition. | ||
2850 | + Fixed ssh-keygen(1) selective host key hashing (i.e. "ssh-keygen -HF | ||
2851 | hostname") to not include any IP address in the data to be hashed. | ||
2852 | + Make ssh(1) skip listening on the IPv6 wildcard address when a | ||
2853 | binding address of 0.0.0.0 is used against an old SSH server that | ||
2854 | does not support the RFC4254 syntax for wildcard bind addresses. | ||
2855 | + Enable IPV6_V6ONLY socket option on sshd(8) listen socket, as is | ||
2856 | already done for X11/TCP forwarding sockets (closes: #439661). | ||
2857 | + Fix FD leak that could hang a ssh(1) connection multiplexing master. | ||
2858 | + Make ssh(1) -q option documentation consistent with reality. | ||
2859 | + Fixed sshd(8) PAM support not calling pam_session_close(), or | ||
2860 | failing to call it with root privileges (closes: #372680). | ||
2861 | + Fix activation of OpenSSL engine support when requested in configure | ||
2862 | (LP: #119295). | ||
2863 | + Cache SELinux status earlier so we know if it's enabled after a | ||
2864 | chroot (LP: #237557). | ||
2865 | - 5.1/5.1p1 (http://www.openssh.com/txt/release-5.1): | ||
2866 | + Introduce experimental SSH Fingerprint ASCII Visualisation to ssh(1) | ||
2867 | and ssh-keygen(1). Visual fingerprint display is controlled by a new | ||
2868 | ssh_config(5) option "VisualHostKey". The intent is to render SSH | ||
2869 | host keys in a visual form that is amenable to easy recall and | ||
2870 | rejection of changed host keys. | ||
2871 | + sshd_config(5) now supports CIDR address/masklen matching in "Match | ||
2872 | address" blocks, with a fallback to classic wildcard matching. | ||
2873 | + sshd(8) now supports CIDR matching in ~/.ssh/authorized_keys | ||
2874 | from="..." restrictions, also with a fallback to classic wildcard | ||
2875 | matching. | ||
2876 | + Added an extended test mode (-T) to sshd(8) to request that it write | ||
2877 | its effective configuration to stdout and exit. Extended test mode | ||
2878 | also supports the specification of connection parameters (username, | ||
2879 | source address and hostname) to test the application of | ||
2880 | sshd_config(5) Match rules. | ||
2881 | + ssh(1) now prints the number of bytes transferred and the overall | ||
2882 | connection throughput for SSH protocol 2 sessions when in verbose | ||
2883 | mode (previously these statistics were displayed for protocol 1 | ||
2884 | connections only). | ||
2885 | + sftp-server(8) now supports extension methods statvfs@openssh.com | ||
2886 | and fstatvfs@openssh.com that implement statvfs(2)-like operations. | ||
2887 | + sftp(1) now has a "df" command to the sftp client that uses the | ||
2888 | statvfs@openssh.com to produce a df(1)-like display of filesystem | ||
2889 | space and inode utilisation (requires statvfs@openssh.com support on | ||
2890 | the server). | ||
2891 | + Added a MaxSessions option to sshd_config(5) to allow control of the | ||
2892 | number of multiplexed sessions supported over a single TCP | ||
2893 | connection. This allows increasing the number of allowed sessions | ||
2894 | above the previous default of 10, disabling connection multiplexing | ||
2895 | (MaxSessions=1) or disallowing login/shell/subsystem sessions | ||
2896 | entirely (MaxSessions=0). | ||
2897 | + Added a no-more-sessions@openssh.com global request extension that | ||
2898 | is sent from ssh(1) to sshd(8) when the client knows that it will | ||
2899 | never request another session (i.e. when session multiplexing is | ||
2900 | disabled). This allows a server to disallow further session requests | ||
2901 | and terminate the session in cases where the client has been | ||
2902 | hijacked. | ||
2903 | + ssh-keygen(1) now supports the use of the -l option in combination | ||
2904 | with -F to search for a host in ~/.ssh/known_hosts and display its | ||
2905 | fingerprint. | ||
2906 | + ssh-keyscan(1) now defaults to "rsa" (protocol 2) keys, instead of | ||
2907 | "rsa1" (LP: #129794). | ||
2908 | + Added an AllowAgentForwarding option to sshd_config(8) to control | ||
2909 | whether authentication agent forwarding is permitted. Note that this | ||
2910 | is a loose control, as a client may install their own unofficial | ||
2911 | forwarder. | ||
2912 | + ssh(1) and sshd(8): avoid unnecessary malloc/copy/free when | ||
2913 | receiving network data, resulting in a ~10% speedup. | ||
2914 | + ssh(1) and sshd(8) will now try additional addresses when connecting | ||
2915 | to a port forward destination whose DNS name resolves to more than | ||
2916 | one address. The previous behaviour was to try the only first | ||
2917 | address and give up if that failed. | ||
2918 | + ssh(1) and sshd(8) now support signalling that channels are | ||
2919 | half-closed for writing, through a channel protocol extension | ||
2920 | notification "eow@openssh.com". This allows propagation of closed | ||
2921 | file descriptors, so that commands such as "ssh -2 localhost od | ||
2922 | /bin/ls | true" do not send unnecessary data over the wire. | ||
2923 | + sshd(8): increased the default size of ssh protocol 1 ephemeral keys | ||
2924 | from 768 to 1024 bits. | ||
2925 | + When ssh(1) has been requested to fork after authentication ("ssh | ||
2926 | -f") with ExitOnForwardFailure enabled, delay the fork until after | ||
2927 | replies for any -R forwards have been seen. Allows for robust | ||
2928 | detection of -R forward failure when using -f. | ||
2929 | + "Match group" blocks in sshd_config(5) now support negation of | ||
2930 | groups. E.g. "Match group staff,!guests". | ||
2931 | + sftp(1) and sftp-server(8) now allow chmod-like operations to set | ||
2932 | set[ug]id/sticky bits. | ||
2933 | + The MaxAuthTries option is now permitted in sshd_config(5) match | ||
2934 | blocks. | ||
2935 | + Multiplexed ssh(1) sessions now support a subset of the ~ escapes | ||
2936 | that are available to a primary connection. | ||
2937 | + ssh(1) connection multiplexing will now fall back to creating a new | ||
2938 | connection in most error cases (closes: #352830). | ||
2939 | + Make ssh(1) deal more gracefully with channel requests that fail. | ||
2940 | Previously it would optimistically assume that requests would always | ||
2941 | succeed, which could cause hangs if they did not (e.g. when the | ||
2942 | server runs out of file descriptors). | ||
2943 | + ssh(1) now reports multiplexing errors via the multiplex slave's | ||
2944 | stderr where possible (subject to LogLevel in the mux master). | ||
2945 | + Fixed an UMAC alignment problem that manifested on Itanium | ||
2946 | platforms. | ||
2947 | * Remove our local version of moduli(5) now that there's one upstream. | ||
2948 | * Say "GTK+" rather than "GTK" in ssh-askpass-gnome's description. | ||
2949 | * Add lintian overrides for empty /usr/share/doc/openssh-client | ||
2950 | directories in openssh-server and ssh (necessary due to being symlink | ||
2951 | targets). | ||
2952 | * Merge from Ubuntu: | ||
2953 | - Add 'status' action to openssh-server init script, requiring lsb-base | ||
2954 | (>= 3.2-13) (thanks, Dustin Kirkland). | ||
2955 | * debconf template translations: | ||
2956 | - Update Korean (thanks, Sunjae Park; closes: #484821). | ||
2957 | |||
2958 | -- Colin Watson <cjwatson@debian.org> Fri, 25 Jul 2008 10:45:08 +0100 | ||
2959 | |||
2960 | openssh (1:4.7p1-13) unstable; urgency=low | ||
2961 | |||
2962 | * Add some helpful advice to the end of ssh-vulnkey's output if there are | ||
2963 | unknown or compromised keys (thanks, Dan Jacobson; closes: #483756). | ||
2964 | * Check compromised key blacklist in ssh or ssh-add, as well as in the | ||
2965 | server (LP: #232391). To override the blacklist check in ssh | ||
2966 | temporarily, use 'ssh -o UseBlacklistedKeys=yes'; there is no override | ||
2967 | for the blacklist check in ssh-add. | ||
2968 | * Add cross-references to ssh-vulnkey(1) to ssh(1), ssh-add(1), | ||
2969 | ssh-keygen(1), and sshd(8) (closes: #484451). | ||
2970 | * Change openssh-client-udeb's Installer-Menu-Item from 99900 to 99999 | ||
2971 | (thanks, Frans Pop). | ||
2972 | * Drop openssh-client-udeb isinstallable hack, as main-menu (>= 1.26) now | ||
2973 | takes care of that (thanks, Frans Pop; closes: #484404). | ||
2974 | * Update DEB_BUILD_OPTIONS parsing code from policy 3.8.0. | ||
2975 | * Add documentation on removing openssh-blacklist locally (see #484269). | ||
2976 | * Clarify documentation of SSHD_OOM_ADJUST, and make setting it to the | ||
2977 | empty string actually skip adjustment as intended (closes: #487325). | ||
2978 | * Remove empty /usr/share/applications directory in ssh-askpass-gnome. | ||
2979 | * debconf template translations: | ||
2980 | - Update Romanian (thanks, Cătălin Feștilă; closes: #485415). | ||
2981 | |||
2982 | -- Colin Watson <cjwatson@debian.org> Mon, 21 Jul 2008 12:18:28 +0100 | ||
2983 | |||
2984 | openssh (1:4.7p1-12) unstable; urgency=low | ||
2985 | |||
2986 | * Fill in CVE identifier for ssh-vulnkey bug fixed in 1:4.7p1-10. | ||
2987 | * Refactor rejection of blacklisted user keys into a single | ||
2988 | reject_blacklisted_key function in auth.c (thanks, Dmitry V. Levin). | ||
2989 | * Fix memory leak of blacklisted host keys (thanks, Dmitry V. Levin). | ||
2990 | * debconf template translations: | ||
2991 | - Update Dutch (thanks, Bart Cornelis; closes: #483004). | ||
2992 | - Update Brazilian Portuguese (thanks, Eder L. Marques; closes: | ||
2993 | #483142). | ||
2994 | - Update Slovak (thanks, Ivan Masár; closes: #483517). | ||
2995 | |||
2996 | -- Colin Watson <cjwatson@debian.org> Thu, 29 May 2008 21:41:29 +0100 | ||
2997 | |||
2998 | openssh (1:4.7p1-11) unstable; urgency=low | ||
2999 | |||
3000 | * Make init script depend on $syslog, and fix some other dependency | ||
3001 | glitches (thanks, Petter Reinholdtsen; closes: #481018). | ||
3002 | * Remove 0 and 6 from Default-Stop in init script (thanks, Kel Modderman; | ||
3003 | closes: #481151). | ||
3004 | * Restore OOM killer adjustment for child processes (thanks, Vaclav Ovsik; | ||
3005 | closes: #480020). | ||
3006 | * Allow building with heimdal-dev (LP: #125805). | ||
3007 | |||
3008 | * Check RSA1 keys without the need for a separate blacklist. Thanks to | ||
3009 | Simon Tatham for the idea. | ||
3010 | * Generate two keys with the PID forced to the same value and test that | ||
3011 | they differ, to defend against recurrences of the recent Debian OpenSSL | ||
3012 | vulnerability. | ||
3013 | * Recommend openssh-blacklist from openssh-client (closes: #481187). | ||
3014 | * Recommend openssh-blacklist-extra from openssh-client and | ||
3015 | openssh-server. | ||
3016 | * Make ssh-vulnkey report the file name and line number for each key | ||
3017 | (thanks, Heiko Schlittermann and Christopher Perry; closes: #481398). | ||
3018 | * Check for blacklists in /usr/share/ssh/ as well as /etc/ssh/ (see | ||
3019 | #481283). | ||
3020 | * Log IP addresses of hosts attempting to use blacklisted keys (closes: | ||
3021 | #481721). | ||
3022 | * Incorporate various ssh-vulnkey suggestions from Hugh Daniel: | ||
3023 | - Add -v (verbose) option, and don't print output for keys that have a | ||
3024 | blacklist file but that are not listed unless in verbose mode. | ||
3025 | - Move exit status documentation to a separate section. | ||
3026 | - Document key status descriptions. | ||
3027 | - Add key type to output. | ||
3028 | - Fix error output if ssh-vulnkey fails to read key files, with the | ||
3029 | exception of host keys unless -a was given. | ||
3030 | - In verbose mode, output the name of each file examined. | ||
3031 | * Handle leading IP addresses in ssh-vulnkey input (LP: #230497). | ||
3032 | * Fix various ssh-vulnkey problems pointed out by Solar Designer: | ||
3033 | - Fix some buffer handling inconsistencies. | ||
3034 | - Use xasprintf to build user key file names, avoiding truncation | ||
3035 | problems. | ||
3036 | - Drop to the user's UID when reading user keys with -a. | ||
3037 | - Use EUID rather than UID when run with no file names and without -a. | ||
3038 | - Reword "Unknown (no blacklist information)" to "Unknown (blacklist | ||
3039 | file not installed)". | ||
3040 | |||
3041 | * Fix typo in ssh/vulnerable_host_keys message (thanks, Esko Arajärvi). | ||
3042 | * debconf template translations: | ||
3043 | - Update Finnish (thanks, Esko Arajärvi; closes: #481530). | ||
3044 | - Update French (thanks, Christian Perrier; closes: #481576). | ||
3045 | - Update Norwegian Bokmål (thanks, Bjørn Steensrud; closes: #481591). | ||
3046 | - Update Galician (thanks, Jacobo Tarrio; closes: #481596). | ||
3047 | - Update Japanese (thanks, Kenshi Muto; closes: #481621). | ||
3048 | - Update Czech (thanks, Miroslav Kure; closes: #481624). | ||
3049 | - Update German (thanks, Helge Kreutzmann; closes: #481676). | ||
3050 | - Update Portuguese (thanks, Ricardo Silva; closes: #481781). | ||
3051 | - Update Basque (thanks, Piarres Beobide; closes: #481836). | ||
3052 | - Update Bulgarian (thanks, Damyan Ivanov; closes: #481870). | ||
3053 | - Update Vietnamese (thanks, Clytie Siddall; closes: #481876). | ||
3054 | - Update Spanish (thanks, Javier Fernandez-Sanguino Peña; closes: | ||
3055 | #482341). | ||
3056 | - Update Turkish (thanks, Mert Dirik; closes: #482548). | ||
3057 | - Update Russian (thanks, Yuri Kozlov; closes: #482887). | ||
3058 | - Update Swedish (thanks, Martin Bagge; closes: #482464). | ||
3059 | - Update Italian (thanks, Luca Monducci; closes: #482808). | ||
3060 | |||
3061 | -- Colin Watson <cjwatson@debian.org> Mon, 26 May 2008 12:21:39 +0100 | ||
3062 | |||
3063 | openssh (1:4.7p1-10) unstable; urgency=low | ||
3064 | |||
3065 | * Add a FILES section to ssh-vulnkey(1) (thanks, Hugh Daniel). | ||
3066 | * CVE-2008-2285: ssh-vulnkey handles options in authorized_keys | ||
3067 | (LP: #230029), and treats # as introducing a comment even if it is | ||
3068 | preceded by whitespace. | ||
3069 | |||
3070 | -- Colin Watson <cjwatson@debian.org> Wed, 14 May 2008 12:35:05 +0100 | ||
3071 | |||
3072 | openssh (1:4.7p1-9) unstable; urgency=critical | ||
3073 | |||
3074 | * Fill in CVE identifier for security vulnerability fixed in 1:4.7p1-8. | ||
3075 | * Mitigate OpenSSL security vulnerability (CVE-2008-0166): | ||
3076 | - Add key blacklisting support. Keys listed in | ||
3077 | /etc/ssh/blacklist.TYPE-LENGTH will be rejected for authentication by | ||
3078 | sshd, unless "PermitBlacklistedKeys yes" is set in | ||
3079 | /etc/ssh/sshd_config. | ||
3080 | - Add a new program, ssh-vulnkey, which can be used to check keys | ||
3081 | against these blacklists. | ||
3082 | - Depend on openssh-blacklist. | ||
3083 | - Force dependencies on libssl0.9.8 / libcrypto0.9.8-udeb to at least | ||
3084 | 0.9.8g-9. | ||
3085 | - Automatically regenerate known-compromised host keys, with a | ||
3086 | critical-priority debconf note. (I regret that there was no time to | ||
3087 | gather translations.) | ||
3088 | |||
3089 | -- Colin Watson <cjwatson@debian.org> Tue, 13 May 2008 12:33:38 +0100 | ||
3090 | |||
3091 | openssh (1:4.7p1-8) unstable; urgency=high | ||
3092 | |||
3093 | * Fill in CVE identifier for security vulnerability fixed in 1:4.7p1-5. | ||
3094 | * Rename KeepAlive to TCPKeepAlive in sshd_config, cleaning up from old | ||
3095 | configurations (LP: #211400). | ||
3096 | * Tweak scp's reporting of filenames in verbose mode to be a bit less | ||
3097 | confusing with spaces (thanks, Nicolas Valcárcel; LP: #89945). | ||
3098 | * Backport from 4.9p1: | ||
3099 | - CVE-2008-1657: Ignore ~/.ssh/rc if a sshd_config ForceCommand is | ||
3100 | specified. | ||
3101 | - Add no-user-rc authorized_keys option to disable execution of | ||
3102 | ~/.ssh/rc. | ||
3103 | * Backport from Simon Wilkinson's GSSAPI key exchange patch for 5.0p1: | ||
3104 | - Add code to actually implement GSSAPIStrictAcceptorCheck, which had | ||
3105 | somehow been omitted from a previous version of this patch (closes: | ||
3106 | #474246). | ||
3107 | |||
3108 | -- Colin Watson <cjwatson@debian.org> Sun, 06 Apr 2008 12:34:19 +0100 | ||
3109 | |||
3110 | openssh (1:4.7p1-7) unstable; urgency=low | ||
3111 | |||
3112 | * Ignore errors writing to oom_adj (closes: #473573). | ||
3113 | |||
3114 | -- Colin Watson <cjwatson@debian.org> Mon, 31 Mar 2008 16:24:44 +0100 | ||
3115 | |||
3116 | openssh (1:4.7p1-6) unstable; urgency=low | ||
3117 | |||
3118 | * Disable the Linux kernel's OOM-killer for the sshd parent; tweak | ||
3119 | SSHD_OOM_ADJUST in /etc/default/ssh to change this (closes: #341767). | ||
3120 | |||
3121 | -- Colin Watson <cjwatson@debian.org> Sun, 30 Mar 2008 21:14:12 +0100 | ||
3122 | |||
3123 | openssh (1:4.7p1-5) unstable; urgency=low | ||
3124 | |||
3125 | * Recommends: xauth rather than Suggests: xbase-clients. | ||
3126 | * Document in ssh(1) that '-S none' disables connection sharing | ||
3127 | (closes: #471437). | ||
3128 | * Patch from Red Hat / Fedora: | ||
3129 | - CVE-2008-1483: Don't use X11 forwarding port which can't be bound on | ||
3130 | all address families, preventing hijacking of X11 forwarding by | ||
3131 | unprivileged users when both IPv4 and IPv6 are configured (closes: | ||
3132 | #463011). | ||
3133 | * Use printf rather than echo -en (a bashism) in openssh-server.config and | ||
3134 | openssh-server.preinst. | ||
3135 | * debconf template translations: | ||
3136 | - Update Finnish (thanks, Esko Arajärvi; closes: #468563). | ||
3137 | |||
3138 | -- Colin Watson <cjwatson@debian.org> Sat, 22 Mar 2008 12:37:00 +0000 | ||
3139 | |||
3140 | openssh (1:4.7p1-4) unstable; urgency=low | ||
3141 | |||
3142 | [ Caleb Case ] | ||
3143 | * Fix configure detection of getseuserbyname and | ||
3144 | get_default_context_with_level (closes: #465614, LP: #188136). | ||
3145 | |||
3146 | [ Colin Watson ] | ||
3147 | * Include the autogenerated debian/copyright in the source package. | ||
3148 | * Move /etc/pam.d/ssh to /etc/pam.d/sshd, allowing us to stop defining | ||
3149 | SSHD_PAM_SERVICE (closes: #255870). | ||
3150 | |||
3151 | -- Colin Watson <cjwatson@debian.org> Wed, 13 Feb 2008 18:18:52 +0000 | ||
3152 | |||
3153 | openssh (1:4.7p1-3) unstable; urgency=low | ||
3154 | |||
3155 | * Improve grammar of ssh-askpass-gnome description. | ||
3156 | * Backport from upstream: | ||
3157 | - Use the correct packet maximum sizes for remote port and agent | ||
3158 | forwarding. Prevents the server from killing the connection if too | ||
3159 | much data is queued and an excessively large packet gets sent | ||
3160 | (https://bugzilla.mindrot.org/show_bug.cgi?id=1360). | ||
3161 | * Allow passing temporary daemon parameters on the init script's command | ||
3162 | line, e.g. '/etc/init.d/ssh start "-o PermitRootLogin=yes"' (thanks, | ||
3163 | Marc Haber; closes: #458547). | ||
3164 | |||
3165 | -- Colin Watson <cjwatson@debian.org> Fri, 01 Feb 2008 21:59:59 +0000 | ||
3166 | |||
3167 | openssh (1:4.7p1-2) unstable; urgency=low | ||
3168 | |||
3169 | * Adjust many relative links in faq.html to point to | ||
3170 | http://www.openssh.com/ (thanks, Dan Jacobson; mentioned in #459807). | ||
3171 | * Pass --with-mantype=doc to configure rather than build-depending on | ||
3172 | groff (closes: #460121). | ||
3173 | * Add armel to architecture list for libselinux1-dev build-dependency | ||
3174 | (closes: #460136). | ||
3175 | * Drop source-compatibility with Debian 3.0: | ||
3176 | - Remove support for building with GNOME 1. This allows simplification | ||
3177 | of our GNOME build-dependencies (see #460136). | ||
3178 | - Remove hacks to support the old PAM configuration scheme. | ||
3179 | - Remove compatibility for building without po-debconf. | ||
3180 | * Build-depend on libgtk2.0-dev rather than libgnomeui-dev. As far as I | ||
3181 | can see, the GTK2 version of ssh-askpass-gnome has never required | ||
3182 | libgnomeui-dev. | ||
3183 | |||
3184 | -- Colin Watson <cjwatson@debian.org> Fri, 11 Jan 2008 00:14:10 +0000 | ||
3185 | |||
3186 | openssh (1:4.7p1-1) unstable; urgency=low | ||
3187 | |||
3188 | * New upstream release (closes: #453367). | ||
3189 | - CVE-2007-4752: Prevent ssh(1) from using a trusted X11 cookie if | ||
3190 | creation of an untrusted cookie fails; found and fixed by Jan Pechanec | ||
3191 | (closes: #444738). | ||
3192 | - sshd(8) in new installations defaults to SSH Protocol 2 only. Existing | ||
3193 | installations are unchanged. | ||
3194 | - The SSH channel window size has been increased, and both ssh(1) | ||
3195 | sshd(8) now send window updates more aggressively. These improves | ||
3196 | performance on high-BDP (Bandwidth Delay Product) networks. | ||
3197 | - ssh(1) and sshd(8) now preserve MAC contexts between packets, which | ||
3198 | saves 2 hash calls per packet and results in 12-16% speedup for | ||
3199 | arcfour256/hmac-md5. | ||
3200 | - A new MAC algorithm has been added, UMAC-64 (RFC4418) as | ||
3201 | "umac-64@openssh.com". UMAC-64 has been measured to be approximately | ||
3202 | 20% faster than HMAC-MD5. | ||
3203 | - Failure to establish a ssh(1) TunnelForward is now treated as a fatal | ||
3204 | error when the ExitOnForwardFailure option is set. | ||
3205 | - ssh(1) returns a sensible exit status if the control master goes away | ||
3206 | without passing the full exit status. | ||
3207 | - When using a ProxyCommand in ssh(1), set the outgoing hostname with | ||
3208 | gethostname(2), allowing hostbased authentication to work. | ||
3209 | - Make scp(1) skip FIFOs rather than hanging (closes: #246774). | ||
3210 | - Encode non-printing characters in scp(1) filenames. These could cause | ||
3211 | copies to be aborted with a "protocol error". | ||
3212 | - Handle SIGINT in sshd(8) privilege separation child process to ensure | ||
3213 | that wtmp and lastlog records are correctly updated. | ||
3214 | - Report GSSAPI mechanism in errors, for libraries that support multiple | ||
3215 | mechanisms. | ||
3216 | - Improve documentation for ssh-add(1)'s -d option. | ||
3217 | - Rearrange and tidy GSSAPI code, removing server-only code being linked | ||
3218 | into the client. | ||
3219 | - Delay execution of ssh(1)'s LocalCommand until after all forwardings | ||
3220 | have been established. | ||
3221 | - In scp(1), do not truncate non-regular files. | ||
3222 | - Improve exit message from ControlMaster clients. | ||
3223 | - Prevent sftp-server(8) from reading until it runs out of buffer space, | ||
3224 | whereupon it would exit with a fatal error (closes: #365541). | ||
3225 | - pam_end() was not being called if authentication failed | ||
3226 | (closes: #405041). | ||
3227 | - Manual page datestamps updated (closes: #433181). | ||
3228 | * Install the OpenSSH FAQ in /usr/share/doc/openssh-client. | ||
3229 | - Includes documentation on copying files with colons using scp | ||
3230 | (closes: #303453). | ||
3231 | * Create /var/run/sshd on start even if /etc/ssh/sshd_not_to_be_run exists | ||
3232 | (closes: #453285). | ||
3233 | * Fix "overriden" typo in ssh(1) (thanks, A. Costa; closes: #390699). | ||
3234 | * Refactor debian/rules configure and make invocations to make development | ||
3235 | easier. | ||
3236 | * Remove the hideously old /etc/ssh/primes on upgrade (closes: #123013). | ||
3237 | * Update moduli(5) to revision 1.11 from OpenBSD CVS. | ||
3238 | * Document the non-default options we set as standard in ssh_config(5) and | ||
3239 | sshd_config(5) (closes: #327886, #345628). | ||
3240 | * Recode LICENCE to UTF-8 when concatenating it to debian/copyright. | ||
3241 | * Override desktop-file-but-no-dh_desktop-call lintian warning; the | ||
3242 | .desktop file is intentionally not installed (see 1:3.8.1p1-10). | ||
3243 | * Update copyright dates for Kerberos patch in debian/copyright.head. | ||
3244 | * Policy version 3.7.3: no changes required. | ||
3245 | |||
3246 | -- Colin Watson <cjwatson@debian.org> Mon, 24 Dec 2007 16:43:02 +0000 | ||
3247 | |||
3248 | openssh (1:4.6p1-7) unstable; urgency=low | ||
3249 | |||
3250 | * Don't build PIE executables on m68k (closes: #451192). | ||
3251 | * Use autotools-dev's recommended configure --build and --host options. | ||
3252 | * Adjust README.Debian to suggest mailing debian-ssh@lists.debian.org | ||
3253 | rather than Matthew. | ||
3254 | * Check whether deluser exists in postrm (closes: #454085). | ||
3255 | |||
3256 | -- Colin Watson <cjwatson@debian.org> Mon, 03 Dec 2007 11:11:02 +0000 | ||
3257 | |||
3258 | openssh (1:4.6p1-6) unstable; urgency=low | ||
3259 | |||
3260 | * Remove blank line between head comment and first template in | ||
3261 | debian/openssh-server.templates.master; apparently it confuses some | ||
3262 | versions of debconf. | ||
3263 | * Install authorized_keys(5) as a symlink to sshd(8) (thanks, Tomas | ||
3264 | Pospisek; closes: #441817). | ||
3265 | * Discard error output from dpkg-query in preinsts, in case the ssh | ||
3266 | metapackage is not installed. | ||
3267 | * Fix sshd/inittab advice in README.Debian to account for rc.d movement | ||
3268 | (closes: #450632). | ||
3269 | * Suppress error from debian/rules if lsb-release is not installed. | ||
3270 | * Don't ignore errors from 'make -C contrib clean'. | ||
3271 | * Adjust categories in ssh-askpass-gnome.desktop to comply with the | ||
3272 | Desktop Menu Specification. | ||
3273 | * debconf template translations: | ||
3274 | - Add Slovak (thanks, Ivan Masár; closes: #441690). | ||
3275 | - Update Brazilian Portuguese (thanks, Eder L. Marques; | ||
3276 | closes: #447145). | ||
3277 | |||
3278 | -- Colin Watson <cjwatson@debian.org> Mon, 12 Nov 2007 11:47:28 +0000 | ||
3279 | |||
3280 | openssh (1:4.6p1-5) unstable; urgency=low | ||
3281 | |||
3282 | * Identify ssh as a metapackage rather than a transitional package. It's | ||
3283 | still useful as a quick way to install both the client and the server. | ||
3284 | * ssh-copy-id now checks the exit status of ssh-add -L (thanks, Adeodato | ||
3285 | Simó; closes: #221675). | ||
3286 | * ssh-copy-id no longer prints the output of expr (thanks, Peter | ||
3287 | Eisentraut; closes: #291534). | ||
3288 | * ssh-copy-id defaults to ~/.ssh/id_rsa.pub rather than | ||
3289 | ~/.ssh/identity.pub, in line with ssh-keygen (thanks, Greg Norris; | ||
3290 | closes: #234627). | ||
3291 | * Build-depend on libselinux1-dev on lpia. | ||
3292 | * openssh-client Suggests: keychain. | ||
3293 | * debconf template translations: | ||
3294 | - Update Catalan (thanks, Jordà Polo; closes: #431970). | ||
3295 | |||
3296 | -- Colin Watson <cjwatson@debian.org> Mon, 30 Jul 2007 09:34:38 +0100 | ||
3297 | |||
3298 | openssh (1:4.6p1-4) unstable; urgency=low | ||
3299 | |||
3300 | * Don't build PIE executables on hppa, as they crash. | ||
3301 | |||
3302 | -- Colin Watson <cjwatson@debian.org> Thu, 05 Jul 2007 11:06:54 +0100 | ||
3303 | |||
3304 | openssh (1:4.6p1-3) unstable; urgency=low | ||
3305 | |||
3306 | * Only build PIE executables on Linux and NetBSD (closes: #430455). | ||
3307 | * Fix broken switch fallthrough when SELinux is running in permissive mode | ||
3308 | (closes: #430838). | ||
3309 | * Document that HashKnownHosts may break tab-completion (closes: #430154). | ||
3310 | |||
3311 | -- Colin Watson <cjwatson@debian.org> Fri, 29 Jun 2007 07:15:38 +0100 | ||
3312 | |||
3313 | openssh (1:4.6p1-2) unstable; urgency=low | ||
3314 | |||
3315 | * Fix ordering of SYSLOG_LEVEL_QUIET and SYSLOG_LEVEL_FATAL. | ||
3316 | * Clarify that 'ssh -q -q' still prints errors caused by bad arguments | ||
3317 | (i.e. before the logging system is initialised). | ||
3318 | * Suppress "Connection to <host> closed" and "Connection to master closed" | ||
3319 | messages at loglevel SILENT (thanks, Jaap Eldering; closes: #409788). | ||
3320 | * Suppress "Pseudo-terminal will not be allocated because stdin is not a | ||
3321 | terminal" message at loglevels QUIET and SILENT (closes: #366814). | ||
3322 | * Document the SILENT loglevel in sftp-server(8), ssh_config(5), and | ||
3323 | sshd_config(5). | ||
3324 | * Add try-restart action to init script. | ||
3325 | * Add /etc/network/if-up.d/openssh-server to restart sshd when new | ||
3326 | interfaces appear (LP: #103436). | ||
3327 | * Backport from upstream: | ||
3328 | - Move C/R -> kbdint special case to after the defaults have been | ||
3329 | loaded, which makes ChallengeResponse default to yes again. This was | ||
3330 | broken by the Match changes and not fixed properly subsequently | ||
3331 | (closes: #428968). | ||
3332 | - Silence spurious error messages from hang-on-exit fix | ||
3333 | (http://bugzilla.mindrot.org/show_bug.cgi?id=1306, closes: #429531). | ||
3334 | |||
3335 | -- Colin Watson <cjwatson@debian.org> Wed, 20 Jun 2007 11:52:44 +0100 | ||
3336 | |||
3337 | openssh (1:4.6p1-1) unstable; urgency=low | ||
3338 | |||
3339 | * New upstream release (closes: #395507, #397961, #420035). Important | ||
3340 | changes not previously backported to 4.3p2: | ||
3341 | - 4.4/4.4p1 (http://www.openssh.com/txt/release-4.4): | ||
3342 | + On portable OpenSSH, fix a GSSAPI authentication abort that could be | ||
3343 | used to determine the validity of usernames on some platforms. | ||
3344 | + Implemented conditional configuration in sshd_config(5) using the | ||
3345 | "Match" directive. This allows some configuration options to be | ||
3346 | selectively overridden if specific criteria (based on user, group, | ||
3347 | hostname and/or address) are met. So far a useful subset of | ||
3348 | post-authentication options are supported and more are expected to | ||
3349 | be added in future releases. | ||
3350 | + Add support for Diffie-Hellman group exchange key agreement with a | ||
3351 | final hash of SHA256. | ||
3352 | + Added a "ForceCommand" directive to sshd_config(5). Similar to the | ||
3353 | command="..." option accepted in ~/.ssh/authorized_keys, this forces | ||
3354 | the execution of the specified command regardless of what the user | ||
3355 | requested. This is very useful in conjunction with the new "Match" | ||
3356 | option. | ||
3357 | + Add a "PermitOpen" directive to sshd_config(5). This mirrors the | ||
3358 | permitopen="..." authorized_keys option, allowing fine-grained | ||
3359 | control over the port-forwardings that a user is allowed to | ||
3360 | establish. | ||
3361 | + Add optional logging of transactions to sftp-server(8). | ||
3362 | + ssh(1) will now record port numbers for hosts stored in | ||
3363 | ~/.ssh/known_hosts when a non-standard port has been requested | ||
3364 | (closes: #50612). | ||
3365 | + Add an "ExitOnForwardFailure" option to cause ssh(1) to exit (with a | ||
3366 | non-zero exit code) when requested port forwardings could not be | ||
3367 | established. | ||
3368 | + Extend sshd_config(5) "SubSystem" declarations to allow the | ||
3369 | specification of command-line arguments. | ||
3370 | + Replacement of all integer overflow susceptible invocations of | ||
3371 | malloc(3) and realloc(3) with overflow-checking equivalents. | ||
3372 | + Many manpage fixes and improvements. | ||
3373 | + Add optional support for OpenSSL hardware accelerators (engines), | ||
3374 | enabled using the --with-ssl-engine configure option. | ||
3375 | + Tokens in configuration files may be double-quoted in order to | ||
3376 | contain spaces (closes: #319639). | ||
3377 | + Move a debug() call out of a SIGCHLD handler, fixing a hang when the | ||
3378 | session exits very quickly (closes: #307890). | ||
3379 | + Fix some incorrect buffer allocation calculations (closes: #410599). | ||
3380 | + ssh-add doesn't ask for a passphrase if key file permissions are too | ||
3381 | liberal (closes: #103677). | ||
3382 | + Likewise, ssh doesn't ask either (closes: #99675). | ||
3383 | - 4.6/4.6p1 (http://www.openssh.com/txt/release-4.6): | ||
3384 | + sshd now allows the enabling and disabling of authentication methods | ||
3385 | on a per user, group, host and network basis via the Match directive | ||
3386 | in sshd_config. | ||
3387 | + Fixed an inconsistent check for a terminal when displaying scp | ||
3388 | progress meter (closes: #257524). | ||
3389 | + Fix "hang on exit" when background processes are running at the time | ||
3390 | of exit on a ttyful/login session (closes: #88337). | ||
3391 | * Update to current GSSAPI patch from | ||
3392 | http://www.sxw.org.uk/computing/patches/openssh-4.6p1-gsskex-20070312.patch; | ||
3393 | install ChangeLog.gssapi. | ||
3394 | * Build the .deb --with-ssl-engine (closes: #408027, LP: #119295). | ||
3395 | * Use LSB functions in init scripts, and add an LSB-style header (partly | ||
3396 | from Ubuntu and partly thanks to Christian Perrier; closes: #389038). | ||
3397 | * Move init script start links to S16, move rc1 stop link to K84, and | ||
3398 | remove rc0 and rc6 stop links altogether (the last part from Ubuntu; | ||
3399 | closes: #122188). | ||
3400 | * Emit a slightly more informative message from the init script if | ||
3401 | /dev/null has somehow become not a character device (closes: #369964). | ||
3402 | * Belatedly build-depend on zlib1g-dev (>= 1:1.2.3-1) (closes: #333447). | ||
3403 | * Merge from Ubuntu: | ||
3404 | - Build position-independent executables (only for debs, not for udebs) | ||
3405 | to take advantage of address space layout randomisation. | ||
3406 | - If building on Ubuntu, add /sbin, /usr/sbin, and /usr/local/sbin to | ||
3407 | the default path. | ||
3408 | * Use ${binary:Version} rather than ${Source-Version} in openssh-server -> | ||
3409 | openssh-client dependency. | ||
3410 | |||
3411 | -- Colin Watson <cjwatson@debian.org> Wed, 13 Jun 2007 00:28:26 +0100 | ||
3412 | |||
3413 | openssh (1:4.3p2-11) unstable; urgency=low | ||
3414 | |||
3415 | * It's been four and a half years now since I took over as "temporary" | ||
3416 | maintainer, so the Maintainer field is getting a bit inaccurate. Set | ||
3417 | Maintainer to debian-ssh@lists.debian.org and leave Matthew and myself | ||
3418 | as Uploaders. | ||
3419 | * Use dpkg-query to fetch conffile md5sums rather than parsing | ||
3420 | /var/lib/dpkg/status directly. | ||
3421 | * openssh-client Suggests: libpam-ssh (closes: #427840). | ||
3422 | * Use 'start-stop-daemon --oknodo' so that openssh-server's init script | ||
3423 | exits successfully if sshd is already running (closes: #426858). | ||
3424 | |||
3425 | * Apply results of debconf templates and package descriptions review by | ||
3426 | debian-l10n-english (closes: #420107, #420742). | ||
3427 | * debconf template translations: | ||
3428 | - Update Dutch (thanks, Machteld de Kok; closes: #419260). | ||
3429 | - Update Norwegian Bokmål (thanks, Bjørn Steensrud; closes: #420630). | ||
3430 | - Update Galician (thanks, Jacobo Tarrio; closes: #420635). | ||
3431 | - Update Spanish (thanks, Javier Fernández-Sanguino Peña; | ||
3432 | closes: #420651). | ||
3433 | - Update Swedish (thanks, Daniel Nylander; closes: #420663). | ||
3434 | - Add Bulgarian (thanks, Damyan Ivanov; closes: #420703). | ||
3435 | - Add Tamil (thanks, Tirumurti Vasudevan; closes: #420739). | ||
3436 | - Update German (thanks, Helge Kreutzmann; closes: #420743). | ||
3437 | - Update Japanese (thanks, Kenshi Muto; closes: #420946). | ||
3438 | - Add Basque (thanks, Piarres Beobide; closes: #421238). | ||
3439 | - Update Italian (thanks, Luca Monducci; closes: #421348). | ||
3440 | - Update Czech (thanks, Miroslav Kure; closes: #421484). | ||
3441 | - Update Romanian (thanks, Igor Stirbu; closes: #421760). | ||
3442 | - Update Russian (thanks, Yuriy Talakan' and Sergey Alyoshin; | ||
3443 | closes: #420862). | ||
3444 | - Update Dutch (thanks, Bart Cornelis; closes: #422767). | ||
3445 | - Update Portuguese (thanks, Ricardo Silva; closes: #423112). | ||
3446 | - Update French (thanks, Christian Perrier). | ||
3447 | - Add Korean (thanks, Sunjae Park; closes: #424008). | ||
3448 | - Update Vietnamese (thanks, Clytie Siddall; closes: #426991). | ||
3449 | |||
3450 | -- Colin Watson <cjwatson@debian.org> Sun, 10 Jun 2007 08:59:42 +0100 | ||
3451 | |||
3452 | openssh (1:4.3p2-10) unstable; urgency=low | ||
3453 | |||
3454 | * Multiply openssh-client-udeb's Installer-Menu-Item by 100. | ||
3455 | * Increase MAX_SESSIONS to 64. | ||
3456 | |||
3457 | -- Colin Watson <cjwatson@debian.org> Tue, 10 Apr 2007 19:17:20 +0100 | ||
3458 | |||
3459 | openssh (1:4.3p2-9) unstable; urgency=high | ||
3460 | |||
3461 | [ Russ Allbery ] | ||
3462 | * Fix GSSAPIKeyExchange configuration file handling logic in ssh-krb5 | ||
3463 | (closes: #404863). | ||
3464 | * Fix uncommenting of GSSAPI options by ssh-krb5 (closes: #407766). | ||
3465 | |||
3466 | [ Colin Watson ] | ||
3467 | * debconf template translations: | ||
3468 | - Add Norwegian Bokmål (thanks, Bjørn Steensrud; closes: #412330). | ||
3469 | |||
3470 | -- Colin Watson <cjwatson@debian.org> Mon, 5 Mar 2007 16:13:50 +0000 | ||
3471 | |||
3472 | openssh (1:4.3p2-8) unstable; urgency=medium | ||
3473 | |||
3474 | [ Vincent Untz ] | ||
3475 | * Give the ssh-askpass-gnome window a default icon; remove unnecessary | ||
3476 | icon extension from .desktop file (closes: | ||
3477 | https://launchpad.net/bugs/27152). | ||
3478 | |||
3479 | [ Colin Watson ] | ||
3480 | * Drop versioning on ssh/ssh-krb5 Replaces, as otherwise it isn't | ||
3481 | sufficient to replace conffiles (closes: #402804). | ||
3482 | * Make GSSAPICleanupCreds a compatibility alias for | ||
3483 | GSSAPICleanupCredentials. Mark GSSUseSessionCCache and | ||
3484 | GSSAPIUseSessionCredCache as known-but-unsupported options, and migrate | ||
3485 | away from them on upgrade. | ||
3486 | * It turns out that the people who told me that removing a conffile in the | ||
3487 | preinst was sufficient to have dpkg replace it without prompting when | ||
3488 | moving a conffile between packages were very much mistaken. As far as I | ||
3489 | can tell, the only way to do this reliably is to write out the desired | ||
3490 | new text of the conffile in the preinst. This is gross, and requires | ||
3491 | shipping the text of all conffiles in the preinst too, but there's | ||
3492 | nothing for it. Fortunately this nonsense is only required for smooth | ||
3493 | upgrades from sarge. | ||
3494 | * debconf template translations: | ||
3495 | - Add Romanian (thanks, Stan Ioan-Eugen; closes: #403528). | ||
3496 | |||
3497 | -- Colin Watson <cjwatson@debian.org> Sat, 23 Dec 2006 18:38:33 +0000 | ||
3498 | |||
3499 | openssh (1:4.3p2-7) unstable; urgency=medium | ||
3500 | |||
3501 | [ Colin Watson ] | ||
3502 | * Ignore errors from usermod when changing sshd's shell, since it will | ||
3503 | fail if the sshd user is not local (closes: #398436). | ||
3504 | * Remove version control tags from /etc/ssh/moduli and /etc/ssh/ssh_config | ||
3505 | to avoid unnecessary conffile resolution steps for administrators | ||
3506 | (thanks, Jari Aalto; closes: #335259). | ||
3507 | * Fix quoting error in configure.ac and regenerate configure (thanks, Ben | ||
3508 | Pfaff; closes: #391248). | ||
3509 | * When installing openssh-client or openssh-server from scratch, remove | ||
3510 | any unchanged conffiles from the pre-split ssh package to work around a | ||
3511 | bug in sarge's dpkg (thanks, Justin Pryzby and others; closes: #335276). | ||
3512 | |||
3513 | [ Russ Allbery ] | ||
3514 | * Create transitional ssh-krb5 package which enables GSSAPI configuration | ||
3515 | in sshd_config (closes: #390986). | ||
3516 | * Default client to attempting GSSAPI authentication. | ||
3517 | * Remove obsolete GSSAPINoMICAuthentication from sshd_config if it's | ||
3518 | found. | ||
3519 | * Add ssh -K option, the converse of -k, to enable GSSAPI credential | ||
3520 | delegation (closes: #401483). | ||
3521 | |||
3522 | -- Colin Watson <cjwatson@debian.org> Wed, 6 Dec 2006 23:00:49 +0000 | ||
3523 | |||
3524 | openssh (1:4.3p2-6) unstable; urgency=low | ||
3525 | |||
3526 | * Acknowledge NMU (thanks, Manoj; closes: #394795). | ||
3527 | * Backport from 4.5p1: | ||
3528 | - Fix a bug in the sshd privilege separation monitor that weakened its | ||
3529 | verification of successful authentication. This bug is not known to be | ||
3530 | exploitable in the absence of additional vulnerabilities. | ||
3531 | * openssh-server Suggests: molly-guard (closes: #395473). | ||
3532 | * debconf template translations: | ||
3533 | - Update German (thanks, Helge Kreutzmann; closes: #395947). | ||
3534 | |||
3535 | -- Colin Watson <cjwatson@debian.org> Wed, 15 Nov 2006 00:07:32 +0000 | ||
3536 | |||
3537 | openssh (1:4.3p2-5.1) unstable; urgency=low | ||
3538 | |||
3539 | * NMU to update SELinux patch, bringing it in line with current selinux | ||
3540 | releases. The patch for this NMU is simply the Bug#394795 patch, | ||
3541 | and no other changes. (closes: #394795) | ||
3542 | |||
3543 | -- Manoj Srivastava <srivasta@debian.org> Mon, 23 Oct 2006 14:11:24 -0500 | ||
3544 | |||
3545 | openssh (1:4.3p2-5) unstable; urgency=low | ||
3546 | |||
3547 | * Remove ssh/insecure_telnetd check altogether (closes: #391081). | ||
3548 | * debconf template translations: | ||
3549 | - Update Danish (thanks, Claus Hindsgaul; closes: #390612). | ||
3550 | |||
3551 | -- Colin Watson <cjwatson@debian.org> Thu, 5 Oct 2006 09:04:19 +0100 | ||
3552 | |||
3553 | openssh (1:4.3p2-4) unstable; urgency=high | ||
3554 | |||
3555 | * Backport from 4.4p1 (since I don't have an updated version of the GSSAPI | ||
3556 | patch yet): | ||
3557 | - CVE-2006-4924: Fix a pre-authentication denial of service found by | ||
3558 | Tavis Ormandy, that would cause sshd(8) to spin until the login grace | ||
3559 | time expired (closes: #389995). | ||
3560 | - CVE-2006-5051: Fix an unsafe signal hander reported by Mark Dowd. The | ||
3561 | signal handler was vulnerable to a race condition that could be | ||
3562 | exploited to perform a pre-authentication denial of service. On | ||
3563 | portable OpenSSH, this vulnerability could theoretically lead to | ||
3564 | pre-authentication remote code execution if GSSAPI authentication is | ||
3565 | enabled, but the likelihood of successful exploitation appears remote. | ||
3566 | |||
3567 | * Read /etc/default/locale as well as /etc/environment (thanks, Raphaël | ||
3568 | Hertzog; closes: #369395). | ||
3569 | * Remove no-longer-used ssh/insecure_rshd debconf template. | ||
3570 | * Make ssh/insecure_telnetd Type: error (closes: #388946). | ||
3571 | |||
3572 | * debconf template translations: | ||
3573 | - Update Portuguese (thanks, Rui Branco; closes: #381942). | ||
3574 | - Update Spanish (thanks, Javier Fernández-Sanguino Peña; | ||
3575 | closes: #382966). | ||
3576 | |||
3577 | -- Colin Watson <cjwatson@debian.org> Fri, 29 Sep 2006 16:28:24 +0100 | ||
3578 | |||
3579 | openssh (1:4.3p2-3) unstable; urgency=low | ||
3580 | |||
3581 | * Document KeepAlive->TCPKeepAlive renaming in sshd_config(5) (closes: | ||
3582 | https://launchpad.net/bugs/50702). | ||
3583 | * Change sshd user's shell to /usr/sbin/nologin (closes: #366541). | ||
3584 | Introduces dependency on passwd for usermod. | ||
3585 | * debconf template translations: | ||
3586 | - Update French (thanks, Denis Barbier; closes: #368503). | ||
3587 | - Update Dutch (thanks, Bart Cornelis; closes: #375100). | ||
3588 | - Update Japanese (thanks, Kenshi Muto; closes: #379950). | ||
3589 | |||
3590 | -- Colin Watson <cjwatson@debian.org> Thu, 27 Jul 2006 00:12:36 +0100 | ||
3591 | |||
3592 | openssh (1:4.3p2-2) unstable; urgency=low | ||
3593 | |||
3594 | * Include commented-out pam_access example in /etc/pam.d/ssh. | ||
3595 | * On '/etc/init.d/ssh restart', create /var/run/sshd before checking the | ||
3596 | server configuration, as otherwise 'sshd -t' will complain about the | ||
3597 | lack of /var/run/sshd (closes: https://launchpad.net/bugs/45234). | ||
3598 | * debconf template translations: | ||
3599 | - Update Russian (thanks, Yuriy Talakan'; closes: #367143). | ||
3600 | - Update Czech (thanks, Miroslav Kure; closes: #367161). | ||
3601 | - Update Italian (thanks, Luca Monducci; closes: #367186). | ||
3602 | - Update Galician (thanks, Jacobo Tarrio; closes: #367318). | ||
3603 | - Update Swedish (thanks, Daniel Nylander; closes: #367971). | ||
3604 | |||
3605 | -- Colin Watson <cjwatson@debian.org> Fri, 19 May 2006 09:14:27 +0100 | ||
3606 | |||
3607 | openssh (1:4.3p2-1) unstable; urgency=low | ||
3608 | |||
3609 | * New upstream release (closes: #361032). | ||
3610 | - CVE-2006-0225: scp (as does rcp, on which it is based) invoked a | ||
3611 | subshell to perform local to local, and remote to remote copy | ||
3612 | operations. This subshell exposed filenames to shell expansion twice; | ||
3613 | allowing a local attacker to create filenames containing shell | ||
3614 | metacharacters that, if matched by a wildcard, could lead to execution | ||
3615 | of attacker-specified commands with the privilege of the user running | ||
3616 | scp (closes: #349645). | ||
3617 | - Add support for tunneling arbitrary network packets over a connection | ||
3618 | between an OpenSSH client and server via tun(4) virtual network | ||
3619 | interfaces. This allows the use of OpenSSH (4.3+) to create a true VPN | ||
3620 | between the client and server providing real network connectivity at | ||
3621 | layer 2 or 3. This feature is experimental. | ||
3622 | - Reduce default key length for new DSA keys generated by ssh-keygen | ||
3623 | back to 1024 bits. DSA is not specified for longer lengths and does | ||
3624 | not fully benefit from simply making keys longer. As per FIPS 186-2 | ||
3625 | Change Notice 1, ssh-keygen will refuse to generate a new DSA key | ||
3626 | smaller or larger than 1024 bits. | ||
3627 | - Fixed X forwarding failing to start when the X11 client is executed in | ||
3628 | background at the time of session exit. | ||
3629 | - Change ssh-keygen to generate a protocol 2 RSA key when invoked | ||
3630 | without arguments (closes: #114894). | ||
3631 | - Fix timing variance for valid vs. invalid accounts when attempting | ||
3632 | Kerberos authentication. | ||
3633 | - Ensure that ssh always returns code 255 on internal error | ||
3634 | (closes: #259865). | ||
3635 | - Cleanup wtmp files on SIGTERM when not using privsep. | ||
3636 | - Set SO_REUSEADDR on X11 listeners to avoid problems caused by | ||
3637 | lingering sockets from previous session (X11 applications can | ||
3638 | sometimes not connect to 127.0.0.1:60xx) (closes: | ||
3639 | https://launchpad.net/bugs/25528). | ||
3640 | - Ensure that fds 0, 1 and 2 are always attached in all programs, by | ||
3641 | duping /dev/null to them if necessary. | ||
3642 | - Xauth list invocation had bogus "." argument. | ||
3643 | - Remove internal assumptions on key exchange hash algorithm and output | ||
3644 | length, preparing OpenSSH for KEX methods with alternate hashes. | ||
3645 | - Ignore junk sent by a server before it sends the "SSH-" banner. | ||
3646 | - Many manual page improvements. | ||
3647 | - Lots of cleanups, including fixes to memory leaks on error paths and | ||
3648 | possible crashes. | ||
3649 | * Update to current GSSAPI patch from | ||
3650 | http://www.sxw.org.uk/computing/patches/openssh-4.3p2-gsskex-20060223.patch | ||
3651 | (closes: #352042). | ||
3652 | * debian/rules: Resynchronise CFLAGS with that generated by configure. | ||
3653 | * Restore pam_nologin to /etc/pam.d/ssh; sshd no longer checks this itself | ||
3654 | when PAM is enabled, but relies on PAM to do it. | ||
3655 | * Rename KeepAlive to TCPKeepAlive in default sshd_config | ||
3656 | (closes: #349896). | ||
3657 | * Rephrase ssh/new_config and ssh/encrypted_host_key_but_no_keygen debconf | ||
3658 | templates to make boolean short descriptions end with a question mark | ||
3659 | and to avoid use of the first person. | ||
3660 | * Ship README.tun. | ||
3661 | * Policy version 3.7.2: no changes required. | ||
3662 | * debconf template translations: | ||
3663 | - Update Italian (thanks, Luca Monducci; closes: #360348). | ||
3664 | - Add Galician (thanks, Jacobo Tarrio; closes: #361220). | ||
3665 | |||
3666 | -- Colin Watson <cjwatson@debian.org> Fri, 12 May 2006 12:48:24 +0100 | ||
3667 | |||
3668 | openssh (1:4.2p1-8) unstable; urgency=low | ||
3669 | |||
3670 | [ Frans Pop ] | ||
3671 | * Use udeb support introduced in debhelper 4.2.0 (available in sarge) | ||
3672 | rather than constructing udebs by steam. | ||
3673 | * Require debhelper 5.0.22, which generates correct shared library | ||
3674 | dependencies for udebs (closes: #360068). This build-dependency can be | ||
3675 | ignored if building on sarge. | ||
3676 | |||
3677 | [ Colin Watson ] | ||
3678 | * Switch to debhelper compatibility level 4, since we now require | ||
3679 | debhelper 4 even on sarge anyway for udeb support. | ||
3680 | |||
3681 | -- Colin Watson <cjwatson@debian.org> Fri, 31 Mar 2006 09:44:55 +0100 | ||
3682 | |||
3683 | openssh (1:4.2p1-7) unstable; urgency=low | ||
3684 | |||
3685 | * I accidentally applied the default $PATH change in 1:4.2p1-6 to the udeb | ||
3686 | rather than the deb. Fixed. | ||
3687 | |||
3688 | -- Colin Watson <cjwatson@debian.org> Wed, 1 Mar 2006 16:19:00 +0000 | ||
3689 | |||
3690 | openssh (1:4.2p1-6) unstable; urgency=low | ||
3691 | |||
3692 | * Sync default values of $PATH from shadow 1:4.0.12-6, adding /usr/bin/X11 | ||
3693 | to the normal and superuser paths and /usr/games to the normal path. | ||
3694 | * When the client receives a signal, don't fatal() with "Killed by signal | ||
3695 | %d." (which produces unhelpful noise on stderr and causes confusion for | ||
3696 | users of some applications that wrap ssh); instead, generate a debug | ||
3697 | message and exit with the traditional status (closes: #313371). | ||
3698 | * debconf template translations: | ||
3699 | - Add Swedish (thanks, Daniel Nylander; closes: #333133). | ||
3700 | - Update Spanish (thanks, Javier Fernández-Sanguino Peña; | ||
3701 | closes: #341371). | ||
3702 | - Correct erroneously-changed Last-Translator headers in Greek and | ||
3703 | Spanish translations. | ||
3704 | |||
3705 | -- Colin Watson <cjwatson@debian.org> Mon, 20 Feb 2006 16:50:55 +0000 | ||
3706 | |||
3707 | openssh (1:4.2p1-5) unstable; urgency=low | ||
3708 | |||
3709 | * Add a CVE name to the 1:4.0p1-1 changelog entry. | ||
3710 | * Build-depend on libselinux1-dev on armeb. | ||
3711 | * Only send GSSAPI proposal if GSSAPIAuthentication is enabled. | ||
3712 | * Build-depend on libssl-dev (>= 0.9.8-1) to cope with surprise OpenSSL | ||
3713 | transition, since otherwise who knows what the buildds will do. If | ||
3714 | you're building openssh yourself, you can safely ignore this and use an | ||
3715 | older libssl-dev. | ||
3716 | |||
3717 | -- Colin Watson <cjwatson@debian.org> Fri, 7 Oct 2005 12:23:42 +0100 | ||
3718 | |||
3719 | openssh (1:4.2p1-4) unstable; urgency=low | ||
3720 | |||
3721 | * Initialise token to GSS_C_EMPTY_BUFFER in ssh_gssapi_check_mechanism | ||
3722 | (closes: #328606). | ||
3723 | |||
3724 | -- Colin Watson <cjwatson@debian.org> Fri, 16 Sep 2005 12:50:16 +0100 | ||
3725 | |||
3726 | openssh (1:4.2p1-3) unstable; urgency=low | ||
3727 | |||
3728 | * Add prototype for ssh_gssapi_server_mechanisms (closes: #328372). | ||
3729 | * Interoperate with ssh-krb5 << 3.8.1p1-1 servers, which used a slightly | ||
3730 | different version of the gssapi authentication method (thanks, Aaron M. | ||
3731 | Ucko; closes: #328388). | ||
3732 | * Explicitly tell po2debconf to use the 'popular' output encoding, so that | ||
3733 | the woody-compatibility hack works even with po-debconf 0.9.0. | ||
3734 | |||
3735 | -- Colin Watson <cjwatson@debian.org> Thu, 15 Sep 2005 09:28:21 +0100 | ||
3736 | |||
3737 | openssh (1:4.2p1-2) unstable; urgency=low | ||
3738 | |||
3739 | * Annotate 1:4.2p1-1 changelog with CVE references. | ||
3740 | * Add remaining pieces of Kerberos support (closes: #152657, #275472): | ||
3741 | - Add GSSAPI key exchange support from | ||
3742 | http://www.sxw.org.uk/computing/patches/openssh.html (thanks, Stephen | ||
3743 | Frost). | ||
3744 | - Build-depend on libkrb5-dev and configure --with-kerberos5=/usr. | ||
3745 | - openssh-client and openssh-server replace ssh-krb5. | ||
3746 | - Update commented-out Kerberos/GSSAPI options in default sshd_config. | ||
3747 | - Fix HAVE_GSSAPI_KRB5_H/HAVE_GSSAPI_GSSAPI_KRB5_H typos in | ||
3748 | gss-serv-krb5.c. | ||
3749 | |||
3750 | -- Colin Watson <cjwatson@debian.org> Wed, 14 Sep 2005 18:28:49 +0100 | ||
3751 | |||
3752 | openssh (1:4.2p1-1) unstable; urgency=low | ||
3753 | |||
3754 | * New upstream release. | ||
3755 | - SECURITY (CAN-2005-2797): Fix a bug introduced in OpenSSH 4.0 that | ||
3756 | caused GatewayPorts to be incorrectly activated for dynamic ("-D") | ||
3757 | port forwardings when no listen address was explicitly specified | ||
3758 | (closes: #326065). | ||
3759 | - SECURITY (CAN-2005-2798): Fix improper delegation of GSSAPI | ||
3760 | credentials. This code is only built in openssh-krb5, not openssh, but | ||
3761 | I mention the CVE reference here anyway for completeness. | ||
3762 | - Add a new compression method ("Compression delayed") that delays zlib | ||
3763 | compression until after authentication, eliminating the risk of zlib | ||
3764 | vulnerabilities being exploited by unauthenticated users. Note that | ||
3765 | users of OpenSSH versions earlier than 3.5 will need to disable | ||
3766 | compression on the client or set "Compression yes" (losing this | ||
3767 | security benefit) on the server. | ||
3768 | - Increase the default size of new RSA/DSA keys generated by ssh-keygen | ||
3769 | from 1024 to 2048 bits (closes: #181162). | ||
3770 | - Many bugfixes and improvements to connection multiplexing. | ||
3771 | - Don't pretend to accept $HOME (closes: #208648). | ||
3772 | * debian/rules: Resynchronise CFLAGS with that generated by configure. | ||
3773 | * openssh-client and openssh-server conflict with pre-split ssh to avoid | ||
3774 | problems when ssh is left un-upgraded (closes: #324695). | ||
3775 | * Set X11Forwarding to yes in the default sshd_config (new installs only). | ||
3776 | At least when X11UseLocalhost is turned on, which is the default, the | ||
3777 | security risks of using X11 forwarding are risks to the client, not to | ||
3778 | the server (closes: #320104). | ||
3779 | |||
3780 | -- Colin Watson <cjwatson@debian.org> Wed, 14 Sep 2005 15:16:14 +0100 | ||
3781 | |||
3782 | openssh (1:4.1p1-7) unstable; urgency=low | ||
3783 | |||
3784 | * Do the IDEA host key check on a temporary file to avoid altering | ||
3785 | /etc/ssh/ssh_host_key itself (closes: #312312). | ||
3786 | * Work around the ssh-askpass alternative somehow ending up in manual mode | ||
3787 | pointing to the obsolete /usr/lib/ssh/gnome-ssh-askpass. | ||
3788 | * Add GNU/kFreeBSD support (thanks, Aurelien Jarno; closes: #318113). | ||
3789 | * Fix XSIish uses of 'test' in openssh-server.preinst. | ||
3790 | * Policy version 3.6.2: no changes required. | ||
3791 | |||
3792 | -- Colin Watson <cjwatson@debian.org> Fri, 2 Sep 2005 16:18:11 +0100 | ||
3793 | |||
3794 | openssh (1:4.1p1-6) unstable; urgency=low | ||
3795 | |||
3796 | * Fix one-character typo that meant the binaries in openssh-client and | ||
3797 | openssh-server got recompiled with the wrong options during | ||
3798 | 'debian/rules install' (closes: #317088, #317238, #317241). | ||
3799 | |||
3800 | -- Colin Watson <cjwatson@debian.org> Thu, 7 Jul 2005 10:56:16 +0100 | ||
3801 | |||
3802 | openssh (1:4.1p1-5) unstable; urgency=low | ||
3803 | |||
3804 | * Build-depend on libselinux1-dev on ppc64 too (closes: #314625). | ||
3805 | * Drop priority of ssh to extra to match the override file. | ||
3806 | * Make /usr/share/doc/openssh-server and /usr/share/doc/ssh symlinks to | ||
3807 | /usr/share/doc/openssh-client (closes: #314745). | ||
3808 | * Ship README.dns (closes: #284874). | ||
3809 | * Disable btmp logging, since Debian's /var/log/btmp has inappropriate | ||
3810 | permissions (closes: #314956). | ||
3811 | * Allow ~/.ssh/config to be group-writable, provided that the group in | ||
3812 | question contains only the file's owner (closes: #314347). | ||
3813 | * debconf template translations: | ||
3814 | - Update Brazilian Portuguese (thanks, André Luís Lopes; | ||
3815 | closes: #315477). | ||
3816 | - Add Vietnamese (thanks, Clytie Siddall; closes: #316636). | ||
3817 | |||
3818 | -- Colin Watson <cjwatson@debian.org> Sun, 3 Jul 2005 17:08:08 +0100 | ||
3819 | |||
3820 | openssh (1:4.1p1-4) unstable; urgency=low | ||
3821 | |||
3822 | * openssh-client and openssh-server conflict with ssh-krb5, as ssh-krb5 | ||
3823 | only conflicts with ssh (closes: #312475). | ||
3824 | * SELinux support (thanks, Manoj Srivastava; closes: #308555): | ||
3825 | - Added SELinux capability, and turned it on be default. Added | ||
3826 | restorecon calls in preinst and postinst (should not matter if the | ||
3827 | machine is not SELinux aware). By and large, the changes made should | ||
3828 | have no effect unless the rules file calls --with-selinux; and even | ||
3829 | then there should be no performance hit for machines not actively | ||
3830 | running SELinux. | ||
3831 | - Modified the preinst and postinst to call restorecon to set the | ||
3832 | security context for the generated public key files. | ||
3833 | - Added a comment to /etc/pam.d/ssh to indicate that an SELinux system | ||
3834 | may want to also include pam_selinux.so. | ||
3835 | * Re-enable ssh-askpass-gnome on the Hurd, now that its build-dependencies | ||
3836 | are available. | ||
3837 | * Restore /usr/lib/sftp-server temporarily, as a symlink to | ||
3838 | /usr/lib/openssh/sftp-server (closes: #312891). | ||
3839 | * Switch to debhelper compatibility level 3, since 2 is deprecated. | ||
3840 | * debconf template translations: | ||
3841 | - Update German (thanks, Jens Seidel; closes: #313949). | ||
3842 | |||
3843 | -- Colin Watson <cjwatson@debian.org> Fri, 17 Jun 2005 14:20:20 +0100 | ||
3844 | |||
3845 | openssh (1:4.1p1-3) unstable; urgency=low | ||
3846 | |||
3847 | * Upload to unstable. | ||
3848 | |||
3849 | -- Colin Watson <cjwatson@debian.org> Mon, 6 Jun 2005 22:28:33 +0100 | ||
3850 | |||
3851 | openssh (1:4.1p1-2) experimental; urgency=low | ||
3852 | |||
3853 | * Drop debconf support for allowing SSH protocol 1, which is discouraged | ||
3854 | and has not been the default since openssh 1:3.0.1p1-1. Users who need | ||
3855 | this should edit sshd_config instead (closes: #147212). | ||
3856 | * Since ssh-keysign isn't used by default (you need to set | ||
3857 | EnableSSHKeysign to "yes" in /etc/ssh/ssh_config), having a debconf | ||
3858 | question to ask whether it should be setuid is overkill, and the | ||
3859 | question text had got out of date anyway. Remove this question, ship | ||
3860 | ssh-keysign setuid in openssh-client.deb, and set a statoverride if the | ||
3861 | debconf question was previously set to false. | ||
3862 | * Add lintian overrides for the above (setuid-binary, | ||
3863 | no-debconf-templates). | ||
3864 | * Fix picky lintian errors about slogin symlinks. | ||
3865 | * Fix DEB_HOST_ARCH_OS/DEB_HOST_GNU_SYSTEM compatibility handling. | ||
3866 | * Apply Linux 2.2 workaround (see #239999) only on Linux. | ||
3867 | |||
3868 | -- Colin Watson <cjwatson@debian.org> Thu, 2 Jun 2005 00:55:58 +0100 | ||
3869 | |||
3870 | openssh (1:4.1p1-1) experimental; urgency=low | ||
3871 | |||
3872 | * New upstream release. | ||
3873 | - Normalise socket addresses returned by get_remote_hostname(), fixing | ||
3874 | 4-in-6 mapping issues with AllowUsers et al (closes: #192234). | ||
3875 | * Take upstream's hint and disable the unsupported USE_POSIX_THREADS | ||
3876 | (closes: #295757, #308868, and possibly others; may open other bugs). | ||
3877 | Use PAM password authentication to avoid #278394. In future I may | ||
3878 | provide two sets of binaries built with and without this option, since | ||
3879 | it seems I can't win. | ||
3880 | * Disable ChallengeResponseAuthentication in new installations, returning | ||
3881 | to PasswordAuthentication by default, since it now supports PAM and | ||
3882 | apparently works better with a non-threaded sshd (closes: #247521). | ||
3883 | * openssh-server Suggests: rssh (closes: #233012). | ||
3884 | * Change libexecdir to /usr/lib/openssh, and fix up various alternatives | ||
3885 | and configuration files to match (closes: #87900, #151321). | ||
3886 | * Fix up very old sshd_config files that refer to /usr/libexec/sftp-server | ||
3887 | (closes: #141979). | ||
3888 | |||
3889 | -- Colin Watson <cjwatson@debian.org> Tue, 31 May 2005 01:33:33 +0100 | ||
3890 | |||
3891 | openssh (1:4.0p1-1) experimental; urgency=low | ||
3892 | |||
3893 | * New upstream release. | ||
3894 | - Port-forwarding specifications now take optional bind addresses, and | ||
3895 | the server allows client-specified bind addresses for remote port | ||
3896 | forwardings when configured with "GatewayPorts clientspecified" | ||
3897 | (closes: #87253, #192206). | ||
3898 | - ssh and ssh-keyscan now support hashing of known_hosts files for | ||
3899 | improved privacy (CAN-2005-2666). ssh-keygen has new options for | ||
3900 | managing known_hosts files, which understand hashing. | ||
3901 | - sftp supports command history and editing support using libedit | ||
3902 | (closes: #287013). | ||
3903 | - Have scp and sftp wait for the spawned ssh to exit before they exit | ||
3904 | themselves, allowing ssh to restore terminal modes (closes: #257130). | ||
3905 | - Improved the handling of bad data in authorized_keys files, | ||
3906 | eliminating fatal errors on corrupt or very large keys; e.g. linefeeds | ||
3907 | in keys only produce errors in auth.log now (closes: #220726). | ||
3908 | - Add "command mode" to ssh connection multiplexing (closes: #303452). | ||
3909 | - Mention $HOME/.hushlogin in sshd(8) FILES section (closes: #163933). | ||
3910 | * Make gnome-ssh-askpass stay above other windows (thanks, Liyang HU; | ||
3911 | closes: #296487). | ||
3912 | * Remove obsolete and unnecessary ssh/forward_warning debconf note. | ||
3913 | * Hurd build fixes (although sshd still doesn't work): | ||
3914 | - Restore X forwarding fix from #102991, lost somewhere along the way. | ||
3915 | - Link with -lcrypt. | ||
3916 | - Link with -lpthread rather than -pthread. | ||
3917 | - Don't build ssh-askpass-gnome on the Hurd, until GNOME is available to | ||
3918 | satisfy build-dependencies. | ||
3919 | * Drop workaround for #242462 on amd64; it's been fixed properly upstream. | ||
3920 | * Enable HashKnownHosts by default. This only affects new entries; use | ||
3921 | 'ssh-keygen -H' to convert an entire known_hosts file to hashed format. | ||
3922 | * Note in ssh_config(5) that the SetupTimeOut option is Debian-specific | ||
3923 | (closes: #307069). | ||
3924 | * debconf template translations: | ||
3925 | - Update Czech (thanks, Miroslav Kure; closes: #298744). | ||
3926 | - Update Finnish (thanks, Matti Pöllä; closes: #303787). | ||
3927 | - Synchronise Spanish with sarge branch (thanks, Javier | ||
3928 | Fernández-Sanguino Peña; closes: #298536). | ||
3929 | - Add Ukrainian (thanks, Eugeniy Meshcheryakov; closes: #301852). | ||
3930 | |||
3931 | -- Colin Watson <cjwatson@debian.org> Thu, 26 May 2005 11:23:18 +0100 | ||
3932 | |||
3933 | openssh (1:3.9p1-3) experimental; urgency=low | ||
3934 | |||
3935 | * Explain how to run sshd from inittab in README.Debian (closes: #147360). | ||
3936 | * Add debian/watch file. | ||
3937 | |||
3938 | -- Colin Watson <cjwatson@debian.org> Fri, 18 Feb 2005 00:20:16 +0000 | ||
3939 | |||
3940 | openssh (1:3.9p1-2) experimental; urgency=low | ||
3941 | |||
3942 | * Remove pam_nologin from /etc/pam.d/ssh, as sshd's built-in support | ||
3943 | appears to be sufficient and more useful (closes: #162996). | ||
3944 | * Depend on debconf | debconf-2.0. | ||
3945 | * Drop LoginGraceTime back to the upstream default of two minutes on new | ||
3946 | installs (closes: #289573). | ||
3947 | * debconf template translations from Ubuntu bug #1232: | ||
3948 | - Update Greek (thanks, Logiotatidis George). | ||
3949 | - Update Spanish (thanks, Santiago Erquicia). | ||
3950 | |||
3951 | -- Colin Watson <cjwatson@debian.org> Sat, 15 Jan 2005 12:37:54 +0000 | ||
3952 | |||
3953 | openssh (1:3.9p1-1) experimental; urgency=low | ||
3954 | |||
3955 | * New upstream release. | ||
3956 | - PAM password authentication implemented again (closes: #238699, | ||
3957 | #242119). | ||
3958 | - Implemented the ability to pass selected environment variables between | ||
3959 | the client and the server. | ||
3960 | - Fix ssh-keyscan breakage when remote server doesn't speak SSH protocol | ||
3961 | (closes: #228828). | ||
3962 | - Fix res_query detection (closes: #242462). | ||
3963 | - 'ssh -c' documentation improved (closes: #265627). | ||
3964 | * Pass LANG and LC_* environment variables from the client by default, and | ||
3965 | accept them to the server by default in new installs, although not on | ||
3966 | upgrade (closes: #264024). | ||
3967 | * Build ssh in binary-indep, not binary-arch (thanks, LaMont Jones). | ||
3968 | * Expand on openssh-client package description (closes: #273831). | ||
3969 | |||
3970 | -- Colin Watson <cjwatson@debian.org> Tue, 4 Jan 2005 14:18:31 +0000 | ||
3971 | |||
3972 | openssh (1:3.8.1p1-14) experimental; urgency=low | ||
3973 | |||
3974 | * We use DH_COMPAT=2, so build-depend on debhelper (>= 2). | ||
3975 | * Fix timing information leak allowing discovery of invalid usernames in | ||
3976 | PAM keyboard-interactive authentication (backported from a patch by | ||
3977 | Darren Tucker; closes: #281595). | ||
3978 | * Make sure that there's a delay in PAM keyboard-interactive | ||
3979 | authentication when PermitRootLogin is not set to yes and the correct | ||
3980 | root password is entered (closes: #248747). | ||
3981 | |||
3982 | -- Colin Watson <cjwatson@debian.org> Sun, 28 Nov 2004 18:09:37 +0000 | ||
3983 | |||
3984 | openssh (1:3.8.1p1-13) experimental; urgency=low | ||
3985 | |||
3986 | * Enable threading for PAM, on Sam Hartman's advice (closes: #278394). | ||
3987 | * debconf template translations: | ||
3988 | - Update Dutch (thanks, cobaco; closes: #278715). | ||
3989 | * Correct README.Debian's ForwardX11Trusted description (closes: #280190). | ||
3990 | |||
3991 | -- Colin Watson <cjwatson@debian.org> Fri, 12 Nov 2004 12:03:13 +0000 | ||
3992 | |||
3993 | openssh (1:3.8.1p1-12) experimental; urgency=low | ||
3994 | |||
3995 | * Preserve /etc/ssh/sshd_config ownership/permissions (closes: #276754). | ||
3996 | * Shorten the version string from the form "OpenSSH_3.8.1p1 Debian | ||
3997 | 1:3.8.1p1-8.sarge.1" to "OpenSSH_3.8.1p1 Debian-8.sarge.1", as some SSH | ||
3998 | implementations apparently have problems with the long version string. | ||
3999 | This is of course a bug in those implementations, but since the extent | ||
4000 | of the problem is unknown it's best to play safe (closes: #275731). | ||
4001 | * debconf template translations: | ||
4002 | - Add Finnish (thanks, Matti Pöllä; closes: #265339). | ||
4003 | - Update Danish (thanks, Morten Brix Pedersen; closes: #275895). | ||
4004 | - Update French (thanks, Denis Barbier; closes: #276703). | ||
4005 | - Update Japanese (thanks, Kenshi Muto; closes: #277438). | ||
4006 | |||
4007 | -- Colin Watson <cjwatson@debian.org> Sun, 24 Oct 2004 19:21:17 +0100 | ||
4008 | |||
4009 | openssh (1:3.8.1p1-11) experimental; urgency=high | ||
4010 | |||
4011 | * Move sshd_config(5) to openssh-server, where it belongs. | ||
4012 | * If PasswordAuthentication is disabled, then offer to disable | ||
4013 | ChallengeResponseAuthentication too. The current PAM code will attempt | ||
4014 | password-style authentication if ChallengeResponseAuthentication is | ||
4015 | enabled (closes: #250369). | ||
4016 | * This will ask a question of anyone who installed fresh with 1:3.8p1-2 or | ||
4017 | later and then upgraded. Sorry about that ... for this reason, the | ||
4018 | default answer is to leave ChallengeResponseAuthentication enabled. | ||
4019 | |||
4020 | -- Colin Watson <cjwatson@debian.org> Wed, 6 Oct 2004 14:28:20 +0100 | ||
4021 | |||
4022 | openssh (1:3.8.1p1-10) experimental; urgency=low | ||
4023 | |||
4024 | * Don't install the ssh-askpass-gnome .desktop file by default; I've had | ||
4025 | too many GNOME people tell me it's the wrong thing to be doing. I've | ||
4026 | left it in /usr/share/doc/ssh-askpass-gnome/examples/ for now. | ||
4027 | |||
4028 | -- Colin Watson <cjwatson@debian.org> Wed, 25 Aug 2004 18:18:14 +0100 | ||
4029 | |||
4030 | openssh (1:3.8.1p1-9) experimental; urgency=low | ||
4031 | |||
4032 | * Split the ssh binary package into openssh-client and openssh-server | ||
4033 | (closes: #39741). openssh-server depends on openssh-client for some | ||
4034 | common functionality; it didn't seem worth creating yet another package | ||
4035 | for this. openssh-client is priority standard, openssh-server optional. | ||
4036 | * New transitional ssh package, priority optional, depending on | ||
4037 | openssh-client and openssh-server. May be removed once nothing depends | ||
4038 | on it. | ||
4039 | * When upgrading from ssh to openssh-{client,server}, it's very difficult | ||
4040 | for the maintainer scripts to find out what version we're upgrading from | ||
4041 | without dodgy dpkg hackery. I've therefore taken the opportunity to move | ||
4042 | a couple of debconf notes into NEWS files, namely ssh/ssh2_keys_merged | ||
4043 | and ssh/user_environment_tell. | ||
4044 | * Add a heuristic to try to make sure the sshd_config upgrade to >= 3.7 | ||
4045 | happens even though we don't know what version we're upgrading from. | ||
4046 | * Remove /etc/ssh/sshd_not_to_be_run on purge of openssh-server. For now | ||
4047 | (until sarge+2) it's still honoured to avoid breaking existing | ||
4048 | configurations, but the right approach is now to remove the | ||
4049 | openssh-server package if you don't want to run the server. Add a NEWS | ||
4050 | item to that effect. | ||
4051 | |||
4052 | -- Colin Watson <cjwatson@debian.org> Mon, 2 Aug 2004 20:48:54 +0100 | ||
4053 | |||
4054 | openssh (1:3.8.1p1-8.sarge.4) unstable; urgency=high | ||
4055 | |||
4056 | * Fix timing information leak allowing discovery of invalid usernames in | ||
4057 | PAM keyboard-interactive authentication (backported from a patch by | ||
4058 | Darren Tucker; closes: #281595). | ||
4059 | * Make sure that there's a delay in PAM keyboard-interactive | ||
4060 | authentication when PermitRootLogin is not set to yes and the correct | ||
4061 | root password is entered (closes: #248747). | ||
4062 | |||
4063 | -- Colin Watson <cjwatson@debian.org> Sun, 28 Nov 2004 12:37:16 +0000 | ||
4064 | |||
4065 | openssh (1:3.8.1p1-8.sarge.3) unstable; urgency=low | ||
4066 | |||
4067 | * Enable threading for PAM, on Sam Hartman's advice (closes: #278394). | ||
4068 | * debconf template translations: | ||
4069 | - Update Dutch (thanks, cobaco; closes: #278715). | ||
4070 | * Correct README.Debian's ForwardX11Trusted description (closes: #280190). | ||
4071 | |||
4072 | -- Colin Watson <cjwatson@debian.org> Fri, 12 Nov 2004 10:31:12 +0000 | ||
4073 | |||
4074 | openssh (1:3.8.1p1-8.sarge.2) unstable; urgency=low | ||
4075 | |||
4076 | * Preserve /etc/ssh/sshd_config ownership/permissions (closes: #276754). | ||
4077 | * Shorten the version string from the form "OpenSSH_3.8.1p1 Debian | ||
4078 | 1:3.8.1p1-8.sarge.1" to "OpenSSH_3.8.1p1 Debian-8.sarge.1", as some SSH | ||
4079 | implementations apparently have problems with the long version string. | ||
4080 | This is of course a bug in those implementations, but since the extent | ||
4081 | of the problem is unknown it's best to play safe (closes: #275731). | ||
4082 | * debconf template translations: | ||
4083 | - Add Finnish (thanks, Matti Pöllä; closes: #265339). | ||
4084 | - Update Danish (thanks, Morten Brix Pedersen; closes: #275895). | ||
4085 | - Update French (thanks, Denis Barbier; closes: #276703). | ||
4086 | - Update Japanese (thanks, Kenshi Muto; closes: #277438). | ||
4087 | |||
4088 | -- Colin Watson <cjwatson@debian.org> Sun, 24 Oct 2004 17:57:14 +0100 | ||
4089 | |||
4090 | openssh (1:3.8.1p1-8.sarge.1) unstable; urgency=high | ||
4091 | |||
4092 | * If PasswordAuthentication is disabled, then offer to disable | ||
4093 | ChallengeResponseAuthentication too. The current PAM code will attempt | ||
4094 | password-style authentication if ChallengeResponseAuthentication is | ||
4095 | enabled (closes: #250369). | ||
4096 | * This will ask a question of anyone who installed fresh with 1:3.8p1-2 or | ||
4097 | later and then upgraded. Sorry about that ... for this reason, the | ||
4098 | default answer is to leave ChallengeResponseAuthentication enabled. | ||
4099 | |||
4100 | -- Colin Watson <cjwatson@debian.org> Wed, 6 Oct 2004 14:21:55 +0100 | ||
4101 | |||
4102 | openssh (1:3.8.1p1-8) unstable; urgency=high | ||
4103 | |||
4104 | * Matthew Vernon: | ||
4105 | - Add a GPL exception to the licensing terms of the Debian patch | ||
4106 | (closes: #211644). | ||
4107 | |||
4108 | -- Colin Watson <cjwatson@debian.org> Thu, 29 Jul 2004 13:28:47 +0100 | ||
4109 | |||
4110 | openssh (1:3.8.1p1-7) unstable; urgency=low | ||
4111 | |||
4112 | * Re-enable shadow password support in openssh-server-udeb, at Bastian | ||
4113 | Blank's request (closes: #260800). | ||
4114 | |||
4115 | -- Colin Watson <cjwatson@debian.org> Thu, 22 Jul 2004 10:56:06 +0100 | ||
4116 | |||
4117 | openssh (1:3.8.1p1-6) unstable; urgency=low | ||
4118 | |||
4119 | * Implement hack in | ||
4120 | http://lists.debian.org/debian-boot/2004/07/msg01207.html to get | ||
4121 | openssh-client-udeb to show up as a retrievable debian-installer | ||
4122 | component. | ||
4123 | * Generate host keys in postinst only if the relevant HostKey directives | ||
4124 | are found in sshd_config (closes: #87946). | ||
4125 | |||
4126 | -- Colin Watson <cjwatson@debian.org> Wed, 21 Jul 2004 15:14:46 +0100 | ||
4127 | |||
4128 | openssh (1:3.8.1p1-5) unstable; urgency=medium | ||
4129 | |||
4130 | * Update German debconf template translation (thanks, Helge Kreutzmann; | ||
4131 | closes: #252226). | ||
4132 | * Remove Suggests: dnsutils, as it was only needed for | ||
4133 | make-ssh-known-hosts (#93265), which has been replaced by ssh-keyscan. | ||
4134 | * Disable shadow password support in openssh-server-udeb. | ||
4135 | * Fix non-portable shell constructs in maintainer scripts, Makefile, and | ||
4136 | ssh-copy-id (thanks, David Weinehall; closes: #258517). | ||
4137 | * Apply patch from Darren Tucker to make the PAM authentication SIGCHLD | ||
4138 | handler kill the PAM thread if its waitpid() call returns 0, as well as | ||
4139 | the previous check for -1 (closes: #252676). | ||
4140 | * Add scp and sftp to openssh-client-udeb. It might not be very 'u' any | ||
4141 | more; oh well. | ||
4142 | |||
4143 | -- Colin Watson <cjwatson@debian.org> Sat, 10 Jul 2004 13:57:27 +0100 | ||
4144 | |||
4145 | openssh (1:3.8.1p1-4) unstable; urgency=medium | ||
4146 | |||
4147 | * Kill off PAM thread if privsep slave dies (closes: #248125). | ||
4148 | |||
4149 | -- Colin Watson <cjwatson@debian.org> Fri, 28 May 2004 17:58:45 -0300 | ||
4150 | |||
4151 | openssh (1:3.8.1p1-3) unstable; urgency=low | ||
4152 | |||
4153 | * Add ssh-keygen to openssh-server-udeb. | ||
4154 | |||
4155 | -- Colin Watson <cjwatson@debian.org> Thu, 20 May 2004 16:31:52 +0100 | ||
4156 | |||
4157 | openssh (1:3.8.1p1-2) unstable; urgency=low | ||
4158 | |||
4159 | * Add Catalan debconf template translation (thanks, Aleix Badia i Bosch; | ||
4160 | closes: #248748). | ||
4161 | * openssh-client-udeb and openssh-server-udeb depend on libnss-files-udeb | ||
4162 | (not yet uploaded). | ||
4163 | * Restore ssh-askpass-gnome binary, lost by mistake. | ||
4164 | * Don't link against libnsl in udeb builds. | ||
4165 | |||
4166 | -- Colin Watson <cjwatson@debian.org> Thu, 20 May 2004 11:15:58 +0100 | ||
4167 | |||
4168 | openssh (1:3.8.1p1-1) unstable; urgency=low | ||
4169 | |||
4170 | * New upstream release. | ||
4171 | - Use a longer buffer for tty names in utmp (closes: #247538). | ||
4172 | * Make sure there's a newline at the end of sshd_config before adding | ||
4173 | 'UsePAM yes' (closes: #244829). | ||
4174 | * Generate a new .orig.tar.gz without RFC.nroff, and remove | ||
4175 | /usr/share/doc/ssh/RFC.gz (closes: #211640). It isn't DFSG-free and only | ||
4176 | documents the obsolete SSH1 protocol, not to mention that it was never a | ||
4177 | real RFC but only an Internet-Draft. It's available from | ||
4178 | http://www.free.lp.se/bamse/draft-ylonen-ssh-protocol-00.txt if you want | ||
4179 | it for some reason. | ||
4180 | * Add openssh-client-udeb and openssh-server-udeb binary packages for use | ||
4181 | in debian-installer. They still need libnss_files to be supplied in udeb | ||
4182 | form by glibc. | ||
4183 | * Work around lack of res_query weak alias in libresolv on amd64 (see | ||
4184 | #242462, awaiting real fix upstream). | ||
4185 | * Fix grammar in sshd(8) (closes: #238753). | ||
4186 | * Add .desktop file and icon for ssh-askpass-gnome (closes: #232333). | ||
4187 | * Update Polish debconf template translation (thanks, Emil Nowak; | ||
4188 | closes: #242808). | ||
4189 | * Add Turkish debconf template translation (thanks, Recai Oktaş; | ||
4190 | closes: #246068). | ||
4191 | |||
4192 | -- Colin Watson <cjwatson@debian.org> Tue, 11 May 2004 23:38:10 +0100 | ||
4193 | |||
4194 | openssh (1:3.8p1-3) unstable; urgency=low | ||
4195 | |||
4196 | * Remove deprecated ReverseMappingCheck option from newly generated | ||
4197 | sshd_config files (closes: #239987). | ||
4198 | * Build everything apart from contrib in a subdirectory, to allow for | ||
4199 | multiple builds. | ||
4200 | * Some older kernels are missing setresuid() and setresgid(), so don't try | ||
4201 | to use them. setreuid() and setregid() will do well enough for our | ||
4202 | purposes (closes: #239999). | ||
4203 | |||
4204 | -- Colin Watson <cjwatson@debian.org> Mon, 5 Apr 2004 21:23:43 +0100 | ||
4205 | |||
4206 | openssh (1:3.8p1-2) unstable; urgency=medium | ||
4207 | |||
4208 | * Disable PasswordAuthentication for new installations (closes: #236810). | ||
4209 | * Turn off the new ForwardX11Trusted by default, returning to the | ||
4210 | semantics of 3.7 and earlier, since it seems immature and causes far too | ||
4211 | many problems with existing setups. See README.Debian for details | ||
4212 | (closes: #237021). | ||
4213 | |||
4214 | -- Colin Watson <cjwatson@debian.org> Wed, 10 Mar 2004 10:33:07 +0000 | ||
4215 | |||
4216 | openssh (1:3.8p1-1) unstable; urgency=low | ||
4217 | |||
4218 | * New upstream release (closes: #232281): | ||
4219 | - New PAM implementation based on that in FreeBSD. This runs PAM session | ||
4220 | modules before dropping privileges (closes: #132681, #150968). | ||
4221 | - Since PAM session modules are run as root, we can turn pam_limits back | ||
4222 | on by default, and it no longer spits out "Operation not permitted" to | ||
4223 | syslog (closes: #171673). | ||
4224 | - Password expiry works again (closes: #153235). | ||
4225 | - 'ssh -q' suppresses login banner (closes: #134589). | ||
4226 | - sshd doesn't lie to PAM about invalid usernames (closes: #157078). | ||
4227 | - ssh-add prints key comment on each prompt (closes: #181869). | ||
4228 | - Punctuation formatting fixed in man pages (closes: #191131). | ||
4229 | - EnableSSHKeysign documented in ssh_config(5) (closes: #224457). | ||
4230 | * Add 'UsePAM yes' to /etc/ssh/sshd_config on upgrade from versions older | ||
4231 | than this, to maintain the standard Debian sshd configuration. | ||
4232 | * Comment out PAMAuthenticationViaKbdInt and RhostsAuthentication in | ||
4233 | sshd_config on upgrade. Neither option is supported any more. | ||
4234 | * Privilege separation and PAM are now properly supported together, so | ||
4235 | remove both debconf questions related to them and simply set it | ||
4236 | unconditionally in newly generated sshd_config files (closes: #228838). | ||
4237 | * ServerAliveInterval implemented upstream, so ProtocolKeepAlives is now a | ||
4238 | compatibility alias. The semantics differ slightly, though; see | ||
4239 | ssh_config(5) for details. | ||
4240 | * Implement SSH1 support for ServerAliveInterval using SSH_MSG_IGNORE. As | ||
4241 | documented in ssh_config(5), it's not as good as the SSH2 version. | ||
4242 | * Remove -fno-builtin-log, -DHAVE_MMAP_ANON_SHARED, and | ||
4243 | -D__FILE_OFFSET_BITS=64 compiler options, which are no longer necessary. | ||
4244 | * Update config.guess and config.sub from autotools-dev 20040105.1. | ||
4245 | * Darren Tucker: | ||
4246 | - Reset signal status when starting pam auth thread, prevent hanging | ||
4247 | during PAM keyboard-interactive authentications. | ||
4248 | - Fix a non-security-critical segfault in PAM authentication. | ||
4249 | * Add debconf template translations: | ||
4250 | - Greek (thanks, Konstantinos Margaritis; closes: #232843). | ||
4251 | - Italian (thanks, Renato Gini; closes: #234777). | ||
4252 | |||
4253 | -- Colin Watson <cjwatson@debian.org> Sat, 6 Mar 2004 18:43:44 +0000 | ||
4254 | |||
4255 | openssh (1:3.6.1p2-12) unstable; urgency=low | ||
4256 | |||
4257 | * Update Spanish debconf template translation (thanks, Javier | ||
4258 | Fernández-Sanguino Peña; closes: #228242). | ||
4259 | * Add debconf template translations: | ||
4260 | - Czech (thanks, Miroslav Kure; closes: #230110). | ||
4261 | - Simplified Chinese (thanks, Hiei Xu; closes: #230726). | ||
4262 | |||
4263 | -- Colin Watson <cjwatson@debian.org> Wed, 11 Feb 2004 09:37:57 +0000 | ||
4264 | |||
4265 | openssh (1:3.6.1p2-11) unstable; urgency=low | ||
4266 | |||
4267 | * Comment out pam_limits in default configuration, for now at least | ||
4268 | (closes: #198254). | ||
4269 | * Use invoke-rc.d (if it exists) to run the init script. | ||
4270 | * Backport format string bug fix in sshconnect.c (closes: #225238). | ||
4271 | * ssh-copy-id exits if ssh fails (closes: #215252). | ||
4272 | |||
4273 | -- Colin Watson <cjwatson@debian.org> Sun, 4 Jan 2004 18:59:21 +0000 | ||
4274 | |||
4275 | openssh (1:3.6.1p2-10) unstable; urgency=low | ||
4276 | |||
4277 | * Use --retry in init script when restarting rather than sleeping, to make | ||
4278 | sure the old process is dead (thanks, Herbert Xu; closes: #212117). | ||
4279 | Depend on dpkg (>= 1.9.0) for start-stop-daemon's --retry option. | ||
4280 | * Update debconf template translations: | ||
4281 | - Brazilian Portuguese (thanks, Andre Luis Lopes; closes: #219844). | ||
4282 | - Danish (thanks, Morten Brix Pedersen; closes: #217964). | ||
4283 | - Japanese (thanks, Kenshi Muto; closes: #212497). | ||
4284 | - Russian (thanks, Ilgiz Kalmetev). | ||
4285 | - Spanish (thanks, Carlos Valdivia Yagüe; closes: #211832). | ||
4286 | * Add Dutch debconf template translation (thanks, cobaco; | ||
4287 | closes: #215372). | ||
4288 | * Update config.guess and config.sub from autotools-dev 20031007.1 | ||
4289 | (closes: #217696). | ||
4290 | * Implement New World Order for PAM configuration, including | ||
4291 | /etc/pam.d/common-* from /etc/pam.d/ssh (closes: #212959). | ||
4292 | - To backport this release to woody, you need to set DEB_BUILD_SSH_WOODY | ||
4293 | in your environment. See README.Debian. | ||
4294 | * Add more commentary to /etc/pam.d/ssh. | ||
4295 | |||
4296 | -- Colin Watson <cjwatson@debian.org> Sun, 16 Nov 2003 01:14:16 +0000 | ||
4297 | |||
4298 | openssh (1:3.6.1p2-9) unstable; urgency=high | ||
4299 | |||
4300 | * Merge even more buffer allocation fixes from upstream (CAN-2003-0682; | ||
4301 | closes: #211434). | ||
4302 | |||
4303 | -- Colin Watson <cjwatson@debian.org> Fri, 19 Sep 2003 10:25:25 +0100 | ||
4304 | |||
4305 | openssh (1:3.6.1p2-8) unstable; urgency=high | ||
4306 | |||
4307 | * Merge more buffer allocation fixes from new upstream version 3.7.1p1 | ||
4308 | (closes: #211324). | ||
4309 | |||
4310 | -- Colin Watson <cjwatson@debian.org> Wed, 17 Sep 2003 03:07:19 +0100 | ||
4311 | |||
4312 | openssh (1:3.6.1p2-7) unstable; urgency=high | ||
4313 | |||
4314 | * Update debconf template translations: | ||
4315 | - French (thanks, Christian Perrier; closes: #208801). | ||
4316 | - Japanese (thanks, Kenshi Muto; closes: #210380). | ||
4317 | * Some small improvements to the English templates courtesy of Christian | ||
4318 | Perrier. I've manually unfuzzied a few translations where it was | ||
4319 | obvious, on Christian's advice, but the others will have to be updated. | ||
4320 | * Document how to generate an RSA1 host key (closes: #141703). | ||
4321 | * Incorporate NMU fix for early buffer expansion vulnerability, | ||
4322 | CAN-2003-0693 (closes: #211205). Thanks to Michael Stone. | ||
4323 | |||
4324 | -- Colin Watson <cjwatson@debian.org> Tue, 16 Sep 2003 14:32:28 +0100 | ||
4325 | |||
4326 | openssh (1:3.6.1p2-6.0) unstable; urgency=high | ||
4327 | |||
4328 | * SECURITY: fix for CAN-2003-0693, buffer allocation error | ||
4329 | |||
4330 | -- Michael Stone <mstone@debian.org> Tue, 16 Sep 2003 08:27:07 -0400 | ||
4331 | |||
4332 | openssh (1:3.6.1p2-6) unstable; urgency=medium | ||
4333 | |||
4334 | * Use a more CVS-friendly means of setting SSH_VERSION. | ||
4335 | * Update Brazilian Portuguese debconf template translation (thanks, Andre | ||
4336 | Luis Lopes; closes: #208036). | ||
4337 | * Don't run 'sshd -t' in init script if the server isn't to be run | ||
4338 | (closes: #197576). | ||
4339 | * Fix login delay, spurious auth.log entry, and PermitRootLogin | ||
4340 | information leakage due to PAM issues with upstream's recent security | ||
4341 | update (thanks, Darren Tucker; closes: #99168, #192207, #193546). | ||
4342 | * Policy version 3.6.1: recode this changelog to UTF-8. | ||
4343 | |||
4344 | -- Colin Watson <cjwatson@debian.org> Wed, 3 Sep 2003 19:14:02 +0100 | ||
4345 | |||
4346 | openssh (1:3.6.1p2-5) unstable; urgency=low | ||
4347 | |||
4348 | * Disable cmsg_type check for file descriptor passing when running on | ||
4349 | Linux 2.0 (closes: #150976). Remove comments about non-functional | ||
4350 | privilege separation on 2.0 from ssh/privsep_ask and ssh/privsep_tell | ||
4351 | debconf questions and from README.Debian, since it should all now work. | ||
4352 | * Fix "defails" typo in generated sshd_config (closes: #206484). | ||
4353 | * Backport upstream patch to strip trailing whitespace (including | ||
4354 | newlines) from configuration directives (closes: #192079). | ||
4355 | |||
4356 | -- Colin Watson <cjwatson@debian.org> Wed, 27 Aug 2003 02:19:57 +0100 | ||
4357 | |||
4358 | openssh (1:3.6.1p2-4) unstable; urgency=low | ||
4359 | |||
4360 | * getent can get just one key; no need to use grep (thanks, James Troup). | ||
4361 | * Move /usr/local/bin to the front of the default path, following | ||
4362 | /etc/login.defs (closes: #201150). | ||
4363 | * Remove specifics of problematic countries from package description | ||
4364 | (closes: #197040). | ||
4365 | * Update Spanish debconf template translation (thanks, Carlos Valdivia | ||
4366 | Yagüe; closes: #198456). | ||
4367 | * Backport upstream patch to pass monitor signals through to child | ||
4368 | (closes: #164797). | ||
4369 | |||
4370 | -- Colin Watson <cjwatson@debian.org> Sun, 27 Jul 2003 17:31:15 +0100 | ||
4371 | |||
4372 | openssh (1:3.6.1p2-3) unstable; urgency=low | ||
4373 | |||
4374 | * Update French debconf template translation (thanks, Christian Perrier; | ||
4375 | closes: #194323). | ||
4376 | * Version the adduser dependency for --no-create-home (closes: #195756). | ||
4377 | * Add a version of moduli(5), namely revision 1.7 of | ||
4378 | http://www.openbsd.org/cgi-bin/cvsweb/src/share/man/man5/moduli.5 with | ||
4379 | '/etc/moduli' changed to '/etc/ssh/moduli' throughout (closes: #196061). | ||
4380 | |||
4381 | -- Colin Watson <cjwatson@debian.org> Mon, 9 Jun 2003 02:51:35 +0100 | ||
4382 | |||
4383 | openssh (1:3.6.1p2-2) unstable; urgency=low | ||
4384 | |||
4385 | * Force /etc/default/ssh to be non-executable, since dpkg apparently | ||
4386 | doesn't deal with permissions changes on conffiles (closes: #192966). | ||
4387 | * Use debconf 0.5's seen flag rather than the deprecated isdefault. | ||
4388 | * Add GPL location to copyright file. | ||
4389 | * Remove debian/postinst.old. | ||
4390 | * Switch to po-debconf, with some careful manual use of po2debconf to | ||
4391 | ensure that the source package continues to build smoothly on woody | ||
4392 | (closes: #183986). | ||
4393 | * Update debconf template translations: | ||
4394 | - Brazilian Portugese (thanks, Andre Luis Lopes; see #183986). | ||
4395 | - Japanese (thanks, Tomohiro KUBOTA; closes: #192429). | ||
4396 | * Compile with -fno-builtin-log for now, otherwise gcc-3.3 complains | ||
4397 | "log.h:59: warning: conflicting types for built-in function `log'". The | ||
4398 | OpenSSH log() function has been renamed in upstream CVS. | ||
4399 | |||
4400 | -- Colin Watson <cjwatson@debian.org> Mon, 19 May 2003 01:52:38 +0100 | ||
4401 | |||
4402 | openssh (1:3.6.1p2-1) unstable; urgency=medium | ||
4403 | |||
4404 | * New upstream release, including fix for PAM user-discovery security hole | ||
4405 | (closes: #191681). | ||
4406 | * Fix ChallengeResponseAuthentication default in generated sshd_config | ||
4407 | (closes: #106037). | ||
4408 | * Put newlines after full stops in man page documentation for | ||
4409 | ProtocolKeepAlives and SetupTimeOut. | ||
4410 | * Policy version 3.5.9: support DEB_BUILD_OPTIONS=noopt, build | ||
4411 | gnome-ssh-askpass with -g and -Wall flags. | ||
4412 | * Really ask ssh/new_config debconf question before trying to fetch its | ||
4413 | value (closes: #188721). | ||
4414 | * On purge, remove only the files we know about in /etc/ssh rather than | ||
4415 | the whole thing, and remove the directory if that leaves it empty | ||
4416 | (closes: #176679). | ||
4417 | * ssh has depended on debconf for some time now with no complaints, so: | ||
4418 | - Simplify the postinst by relying on debconf being present. (The absent | ||
4419 | case was buggy anyway.) | ||
4420 | - Get rid of "if you have not installed debconf" text in README.Debian, | ||
4421 | and generally update the "/usr/bin/ssh not SUID" entry. | ||
4422 | * More README.Debian work: | ||
4423 | - Reorganize into "UPGRADE ISSUES" and "OTHER ISSUES", in an effort to | ||
4424 | make it easier for people to find the former. The upgrade issues | ||
4425 | should probably be sorted by version somehow. | ||
4426 | - Document X11UseLocalhost under "X11 Forwarding" (closes: #150913). | ||
4427 | * Fix setting of IP flags for interactive sessions (upstream bug #541). | ||
4428 | |||
4429 | -- Colin Watson <cjwatson@debian.org> Mon, 5 May 2003 17:47:40 +0100 | ||
4430 | |||
4431 | openssh (1:3.6.1p1-1) unstable; urgency=low | ||
4432 | |||
4433 | * New upstream release (thanks, Laurence J. Lane). | ||
4434 | * debian/control: ssh-askpass-gnome is now Section: gnome, following the | ||
4435 | override file. | ||
4436 | |||
4437 | -- Colin Watson <cjwatson@debian.org> Wed, 2 Apr 2003 00:51:02 +0100 | ||
4438 | |||
4439 | openssh (1:3.6p1-1) unstable; urgency=low | ||
4440 | |||
4441 | * New upstream release. | ||
4442 | - Workaround applied upstream for a bug in the interaction of glibc's | ||
4443 | getaddrinfo() with the Linux 2.2 kernel (closes: #155814). | ||
4444 | - As such, it should now be safe to remove --with-ipv4-default, so | ||
4445 | starting sshd with -6 is no longer necessary (closes: #79861 and lots | ||
4446 | of other merged bugs). | ||
4447 | - ssh-copy-id prints usage when run without arguments (closes: #71376). | ||
4448 | - scp exits 1 if ssh fails (closes: #138400). | ||
4449 | - sshd writes to utmp's ut_addr_v6 field in IPv6 mode (closes: #167867). | ||
4450 | - 'ssh-add -c' causes ssh-agent to ask the user each time a key is used | ||
4451 | (closes: #109795). | ||
4452 | * Install /etc/default/ssh non-executable (closes: #185537). | ||
4453 | |||
4454 | -- Colin Watson <cjwatson@debian.org> Mon, 31 Mar 2003 23:00:59 +0100 | ||
4455 | |||
4456 | openssh (1:3.5p1-5) unstable; urgency=low | ||
4457 | |||
4458 | * Add /etc/default/ssh (closes: #161049). | ||
4459 | * Run the init script under 'set -e' (closes: #175010). | ||
4460 | * Change the default superuser path to include /sbin, /usr/sbin, and | ||
4461 | /usr/local/sbin (closes: #128235, #151267). Using login.defs would be | ||
4462 | nice, but that belongs to another package. Without a defined API to | ||
4463 | retrieve its settings, parsing it is off-limits. | ||
4464 | * Build ssh-askpass-gnome with GNOME 2. The source package should still | ||
4465 | support building on stable with GNOME 1, using the alternate | ||
4466 | libgnome-dev build-dependency (thanks, Colin Walters; closes: #167582). | ||
4467 | |||
4468 | -- Colin Watson <cjwatson@debian.org> Sun, 9 Mar 2003 20:12:10 +0000 | ||
4469 | |||
4470 | openssh (1:3.5p1-4) unstable; urgency=low | ||
4471 | |||
4472 | * Point rlogin and rcp alternatives at slogin and scp respectively rather | ||
4473 | than ssh (closes: #121103, #151666). Fix alternative removal to match; | ||
4474 | previously it was completely wrong anyway. | ||
4475 | * Find out whether /etc/ssh/sshd_not_to_be_run exists and set the debconf | ||
4476 | question's default using that information, rather than using debconf as | ||
4477 | a registry. Other solutions may be better in the long run, but this is | ||
4478 | at least correct (thanks, Matthew Woodcraft; closes: #84725). | ||
4479 | * Stop using pam_lastlog, as it doesn't currently work well as a session | ||
4480 | module when privilege separation is enabled; it can usually read | ||
4481 | /var/log/lastlog but can't write to it. Instead, just use sshd's | ||
4482 | built-in support, already enabled by default (closes: #151297, #169938). | ||
4483 | * Use 'ssh-keygen -q' rather than redirecting output to /dev/null. | ||
4484 | * Add a "this may take some time" warning when creating host keys on | ||
4485 | installation (part of #110094). | ||
4486 | * When restarting via the init script, check for sshd_not_to_be_run after | ||
4487 | stopping sshd (idea from Tomas Pospisek; closes: #149850). | ||
4488 | * Append /usr/sbin:/sbin to the init script's $PATH, just in case of | ||
4489 | strangeness (closes: #115138). | ||
4490 | * Fix a dpkg-statoverride call to redirect stdout to /dev/null, not | ||
4491 | stderr. | ||
4492 | * Correct copyright file typo: "orignal" -> "original" (closes: #176490). | ||
4493 | * Rebuild with libssl0.9.7 (closes: #176983). | ||
4494 | * We're up to policy version 3.5.6. DEB_BUILD_OPTIONS stuff still needs to | ||
4495 | be looked at. | ||
4496 | |||
4497 | -- Colin Watson <cjwatson@debian.org> Sat, 18 Jan 2003 01:37:23 +0000 | ||
4498 | |||
4499 | openssh (1:3.5p1-3) unstable; urgency=low | ||
4500 | |||
4501 | * Happy new year! | ||
4502 | * Use getent rather than id to find out whether the sshd user exists | ||
4503 | (closes: #150974). | ||
4504 | * Remove some duplication from the postinst's ssh-keysign setuid code. | ||
4505 | * Replace db_text with db_input throughout debian/config. (db_text has | ||
4506 | been a compatibility wrapper since debconf 0.1.5.) | ||
4507 | * Warn about PermitUserEnvironment on upgrade (closes: #167895). | ||
4508 | * Use 'make install-nokeys', and disable unused debhelper commands, | ||
4509 | thereby forward-porting the last pieces of Zack Weinberg's patch | ||
4510 | (closes: #68341). | ||
4511 | * Move the man page for gnome-ssh-askpass from the ssh package to | ||
4512 | ssh-askpass-gnome (closes: #174449). | ||
4513 | * Build with -DLOGIN_NO_ENDOPT, since Debian's /bin/login doesn't accept | ||
4514 | '--' to terminate the list of options (closes: #171554). | ||
4515 | * Add Jonathan Amery's ssh-argv0 script (closes: #111341). | ||
4516 | * Update Danish debconf template (thanks, Morten Brix Pedersen; | ||
4517 | closes: #174757). | ||
4518 | * Document setgid ssh-agent's effect on certain environment variables in | ||
4519 | README.Debian (closes: #167974). | ||
4520 | * Document interoperability problems between scp and ssh.com's server in | ||
4521 | README.Debian, and suggest some workarounds (closes: #174662). | ||
4522 | |||
4523 | -- Colin Watson <cjwatson@debian.org> Wed, 1 Jan 2003 14:18:30 +0000 | ||
4524 | |||
4525 | openssh (1:3.5p1-2) unstable; urgency=low | ||
4526 | |||
4527 | * Mention in the ssh package description that it provides both ssh and | ||
4528 | sshd (closes: #99680). | ||
4529 | * Create a system group for ssh-agent, not a user group (closes: #167669). | ||
4530 | |||
4531 | -- Colin Watson <cjwatson@debian.org> Mon, 4 Nov 2002 13:43:53 +0000 | ||
4532 | |||
4533 | openssh (1:3.5p1-1) unstable; urgency=low | ||
4534 | |||
4535 | * New upstream release. | ||
4536 | - Fixes typo in ssh-add usage (closes: #152239). | ||
4537 | - Fixes 'PermitRootLogin forced-commands-only' (closes: #166184). | ||
4538 | - ~/.ssh/environment and environment= options in ~/.ssh/authorized_keys | ||
4539 | are deprecated for security reasons and will eventually go away. For | ||
4540 | now they can be re-enabled by setting 'PermitUserEnvironment yes' in | ||
4541 | sshd_config. | ||
4542 | - ssh-agent is installed setgid to prevent ptrace() attacks. The group | ||
4543 | actually doesn't matter, as it drops privileges immediately, but to | ||
4544 | avoid confusion the postinst creates a new 'ssh' group for it. | ||
4545 | * Obsolete patches: | ||
4546 | - Solar Designer's privsep+compression patch for Linux 2.2 (see | ||
4547 | 1:3.3p1-0.0woody1). | ||
4548 | - Hostbased auth ssh-keysign backport (see 1:3.4p1-4). | ||
4549 | |||
4550 | * Remove duplicated phrase in ssh_config(5) (closes: #152404). | ||
4551 | * Source the debconf confmodule at the top of the postrm rather than at | ||
4552 | the bottom, to avoid making future non-idempotency problems worse (see | ||
4553 | #151035). | ||
4554 | * Debconf templates: | ||
4555 | - Add Polish (thanks, Grzegorz Kusnierz). | ||
4556 | - Update French (thanks, Denis Barbier; closes: #132509). | ||
4557 | - Update Spanish (thanks, Carlos Valdivia Yagüe; closes: #164716). | ||
4558 | * Write a man page for gnome-ssh-askpass, and link it to ssh-askpass.1 if | ||
4559 | this is the selected ssh-askpass alternative (closes: #67775). | ||
4560 | |||
4561 | -- Colin Watson <cjwatson@debian.org> Sat, 26 Oct 2002 19:41:51 +0100 | ||
4562 | |||
4563 | openssh (1:3.4p1-4) unstable; urgency=low | ||
4564 | |||
4565 | * Allow ssh-krb5 in ssh-askpass-gnome's dependencies (closes: #129532). | ||
4566 | * Restore Russia to list of countries where encryption is problematic (see | ||
4567 | #148951 and http://www.average.org/freecrypto/). | ||
4568 | * Drop ssh-askpass-gnome's priority to optional, per the override file. | ||
4569 | * Drop the PAM special case for hurd-i386 (closes: #99157). | ||
4570 | * s/dile/idle/ in ssh_config(5) (closes: #118331). | ||
4571 | * Note in README.Debian that you need xauth from xbase-clients on the | ||
4572 | server for X11 forwarding (closes: #140269). | ||
4573 | * Use correct path to upstream README in copyright file (closes: #146037). | ||
4574 | * Document the units for ProtocolKeepAlives (closes: #159479). | ||
4575 | * Backport upstream patch to fix hostbased auth (closes: #117114). | ||
4576 | * Add -g to CFLAGS. | ||
4577 | |||
4578 | -- Colin Watson <cjwatson@debian.org> Sun, 13 Oct 2002 18:58:53 +0100 | ||
4579 | |||
4580 | openssh (1:3.4p1-3) unstable; urgency=low | ||
4581 | |||
4582 | * Add myself to Uploaders: and begin acting as temporary maintainer, at | ||
4583 | Matthew's request. (Normal service will resume in some months' time.) | ||
4584 | * Add sharutils to Build-Depends (closes: #138465). | ||
4585 | * Stop creating the /usr/doc/ssh symlink. | ||
4586 | |||
4587 | * Fix some debconf template typos (closes: #160358). | ||
4588 | * Split debconf templates into one file per language. | ||
4589 | * Add debconf template translations: | ||
4590 | - Brazilian Portuguese (thanks, Andre Luis Lopes; closes: #106173). | ||
4591 | - Danish (thanks, Claus Hindsgaul; closes: #126607). | ||
4592 | - Japanese (thanks, Tomohiro KUBOTA; closes: #137427). | ||
4593 | - Russian (thanks, Ilgiz Kalmetev; closes: #136610). | ||
4594 | - Spanish (thanks, Carlos Valdivia Yagüe; closes: #129041). | ||
4595 | * Update debconf template translations: | ||
4596 | - French (thanks, Igor Genibel; closes: #151361). | ||
4597 | - German (thanks, Axel Noetzold; closes: #147069). | ||
4598 | * Some of these translations are fuzzy. Please send updates. | ||
4599 | |||
4600 | -- Colin Watson <cjwatson@debian.org> Sun, 13 Oct 2002 14:09:57 +0100 | ||
4601 | |||
4602 | openssh (1:3.4p1-2) unstable; urgency=high | ||
4603 | |||
4604 | * Get a security-fixed version into unstable | ||
4605 | * Also tidy README.Debian up a little | ||
4606 | |||
4607 | -- Matthew Vernon <matthew@debian.org> Fri, 28 Jun 2002 17:20:59 +0100 | ||
4608 | |||
4609 | openssh (1:3.4p1-1) testing; urgency=high | ||
4610 | |||
4611 | * Extend my tendrils back into this package (Closes: #150915, #151098) | ||
4612 | * thanks to the security team for their work | ||
4613 | * no thanks to ISS/Theo de Raadt for their handling of these bugs | ||
4614 | * save old sshd_configs to sshd_config.dpkg-old when auto-generating a | ||
4615 | new one | ||
4616 | * tell/ask the user about PriviledgeSeparation | ||
4617 | * /etc/init.d/ssh run will now create the chroot empty dir if necessary | ||
4618 | * Remove our previous statoverride on /usr/bin/ssh (only for people | ||
4619 | upgrading from a version where we'd put one in ourselves!) | ||
4620 | * Stop slandering Russia, since someone asked so nicely (Closes: #148951) | ||
4621 | * Reduce the sleep time in /etc/init.d/ssh during a restart | ||
4622 | |||
4623 | -- Matthew Vernon <matthew@debian.org> Fri, 28 Jun 2002 15:52:10 +0100 | ||
4624 | |||
4625 | openssh (1:3.4p1-0.0woody1) testing-security; urgency=high | ||
4626 | |||
4627 | * NMU by the security team. | ||
4628 | * New upstream version | ||
4629 | |||
4630 | -- Michael Stone <mstone@debian.org> Wed, 26 Jun 2002 15:40:38 -0400 | ||
4631 | |||
4632 | openssh (1:3.3p1-0.0woody4) testing-security; urgency=high | ||
4633 | |||
4634 | * NMU by the security team. | ||
4635 | * fix error when /etc/ssh/sshd_config exists on new install | ||
4636 | * check that user doesn't exist before running adduser | ||
4637 | * use openssl internal random unconditionally | ||
4638 | |||
4639 | -- Michael Stone <mstone@debian.org> Tue, 25 Jun 2002 19:44:39 -0400 | ||
4640 | |||
4641 | openssh (1:3.3p1-0.0woody3) testing-security; urgency=high | ||
4642 | |||
4643 | * NMU by the security team. | ||
4644 | * use correct home directory when sshd user is created | ||
4645 | |||
4646 | -- Michael Stone <mstone@debian.org> Tue, 25 Jun 2002 08:59:50 -0400 | ||
4647 | |||
4648 | openssh (1:3.3p1-0.0woody2) testing-security; urgency=high | ||
4649 | |||
4650 | * NMU by the security team. | ||
4651 | * Fix rsa1 key creation (Closes: #150949) | ||
4652 | * don't fail if sshd user removal fails | ||
4653 | * depends: on adduser (Closes: #150907) | ||
4654 | |||
4655 | -- Michael Stone <mstone@debian.org> Tue, 25 Jun 2002 08:59:50 -0400 | ||
4656 | |||
4657 | openssh (1:3.3p1-0.0woody1) testing-security; urgency=high | ||
4658 | |||
4659 | * NMU by the security team. | ||
4660 | * New upstream version. | ||
4661 | - Enable privilege separation by default. | ||
4662 | * Include patch from Solar Designer for privilege separation and | ||
4663 | compression on 2.2.x kernels. | ||
4664 | * Remove --disable-suid-ssh from configure. | ||
4665 | * Support setuid ssh-keysign binary instead of setuid ssh client. | ||
4666 | * Check sshd configuration before restarting. | ||
4667 | |||
4668 | -- Daniel Jacobowitz <dan@debian.org> Mon, 24 Jun 2002 13:43:44 -0400 | ||
4669 | |||
4670 | openssh (1:3.0.2p1-9) unstable; urgency=high | ||
4671 | |||
4672 | * Thanks to those who NMUd | ||
4673 | * The only change in this version is to debian/control - I've removed | ||
4674 | the bit that says you can't export it from the US - it would look | ||
4675 | pretty daft to say this about a package in main! Also, it's now OK | ||
4676 | to use crypto in France, so I've edited that comment slightly | ||
4677 | * Correct a path in README.Debian too (Closes: #138634) | ||
4678 | |||
4679 | -- Matthew Vernon <matthew@debian.org> Sun, 4 Apr 2002 09:52:59 +0100 | ||
4680 | |||
4681 | openssh (1:3.0.2p1-8.3) unstable; urgency=medium | ||
4682 | |||
4683 | * NMU | ||
4684 | * Really set urgency to medium this time (oops) | ||
4685 | * Fix priority to standard per override while I'm at it | ||
4686 | |||
4687 | -- Aaron M. Ucko <ucko@debian.org> Sun, 24 Mar 2002 09:00:08 -0500 | ||
4688 | |||
4689 | openssh (1:3.0.2p1-8.2) unstable; urgency=low | ||
4690 | |||
4691 | * NMU with maintainer's permission | ||
4692 | * Prepare for upcoming ssh-nonfree transitional packages per | ||
4693 | <http://lists.debian.org/debian-ssh/2002/debian-ssh-200203/msg00008.html> | ||
4694 | * Urgency medium because it would really be good to get this into woody | ||
4695 | before it releases | ||
4696 | * Fix sections to match override file | ||
4697 | * Reissued due to clash with non-US -> main move | ||
4698 | |||
4699 | -- Aaron M. Ucko <ucko@debian.org> Sat, 23 Mar 2002 21:21:52 -0500 | ||
4700 | |||
4701 | openssh (1:3.0.2p1-8.1) unstable; urgency=low | ||
4702 | |||
4703 | * NMU | ||
4704 | * Move from non-US to mani | ||
4705 | |||
4706 | -- LaMont Jones <lamont@debian.org> Thu, 21 Mar 2002 09:33:50 -0700 | ||
4707 | |||
4708 | openssh (1:3.0.2p1-8) unstable; urgency=critical | ||
4709 | |||
4710 | * Security fix - patch from upstream (Closes: #137209, #137210) | ||
4711 | * Undo the changes in the unreleased -7, since they appear to break | ||
4712 | things here. Accordingly, the code change is minimal, and I'm | ||
4713 | happy to get it into testing ASAP | ||
4714 | |||
4715 | -- Matthew Vernon <matthew@debian.org> Thu, 7 Mar 2002 14:25:23 +0000 | ||
4716 | |||
4717 | openssh (1:3.0.2p1-7) unstable; urgency=high | ||
4718 | |||
4719 | * Build to support IPv6 and IPv4 by default again | ||
4720 | |||
4721 | -- Matthew Vernon <matthew@debian.org> Sat, 2 Mar 2002 00:25:05 +0000 | ||
4722 | |||
4723 | openssh (1:3.0.2p1-6) unstable; urgency=high | ||
4724 | |||
4725 | * Correct error in the clean target (Closes: #130868) | ||
4726 | |||
4727 | -- Matthew Vernon <matthew@debian.org> Sat, 26 Jan 2002 00:32:00 +0000 | ||
4728 | |||
4729 | openssh (1:3.0.2p1-5) unstable; urgency=medium | ||
4730 | |||
4731 | * Include the Debian version in our identification, to make it easier to | ||
4732 | audit networks for patched versions in future | ||
4733 | |||
4734 | -- Matthew Vernon <matthew@debian.org> Mon, 21 Jan 2002 17:16:10 +0000 | ||
4735 | |||
4736 | openssh (1:3.0.2p1-4) unstable; urgency=medium | ||
4737 | |||
4738 | * If we're asked to not run sshd, stop any running sshd's first | ||
4739 | (Closes: #129327) | ||
4740 | |||
4741 | -- Matthew Vernon <matthew@debian.org> Wed, 16 Jan 2002 21:24:16 +0000 | ||
4742 | |||
4743 | openssh (1:3.0.2p1-3) unstable; urgency=high | ||
4744 | |||
4745 | * Fix /etc/pam.d/ssh to not set $MAIL (Closes: #128913) | ||
4746 | * Remove extra debconf suggestion (Closes: #128094) | ||
4747 | * Mmm. speedy bug-fixing :-) | ||
4748 | |||
4749 | -- Matthew Vernon <matthew@debian.org> Sat, 12 Jan 2002 17:23:58 +0000 | ||
4750 | |||
4751 | openssh (1:3.0.2p1-2) unstable; urgency=high | ||
4752 | |||
4753 | * Fix postinst to not automatically overwrite sshd_config (!) | ||
4754 | (Closes: #127842, #127867) | ||
4755 | * Add section in README.Debian about the PermitRootLogin setting | ||
4756 | |||
4757 | -- Matthew Vernon <matthew@debian.org> Sat, 5 Jan 2003 05:26:30 +0000 | ||
4758 | |||
4759 | openssh (1:3.0.2p1-1) unstable; urgency=high | ||
4760 | |||
4761 | * Incorporate fix from Colin's NMU | ||
4762 | * New upstream version (fixes the bug Wichert fixed) (Closes: #124035) | ||
4763 | * Capitalise IETF (Closes: #125379) | ||
4764 | * Refer to the correct sftp-server location (Closes: #126854, #126224) | ||
4765 | * Do what we're asked re SetUID ssh (Closes: #124065, #124154, #123247) | ||
4766 | * Ask people upgrading from potato if they want a new conffile | ||
4767 | (Closes: #125642) | ||
4768 | * Fix a typo in postinst (Closes: #122192, #122410, #123440) | ||
4769 | * Frob the default config a little (Closes: #122284, #125827, #125696, | ||
4770 | #123854) | ||
4771 | * Make /etc/init.d/ssh be more clear about ssh not running (Closes: | ||
4772 | #123552) | ||
4773 | * Fix typo in templates file (Closes: #123411) | ||
4774 | |||
4775 | -- Matthew Vernon <matthew@debian.org> Fri, 4 Jan 2002 16:01:52 +0000 | ||
4776 | |||
4777 | openssh (1:3.0.1p1-1.2) unstable; urgency=high | ||
4778 | |||
4779 | * Non-maintainer upload | ||
4780 | * Prevent local users from passing environment variables to the login | ||
4781 | process when UseLogin is enabled | ||
4782 | |||
4783 | -- Wichert Akkerman <wakkerma@debian.org> Mon, 3 Dec 2001 19:34:45 +0100 | ||
4784 | |||
4785 | openssh (1:3.0.1p1-1.1) unstable; urgency=low | ||
4786 | |||
4787 | * Non-maintainer upload, at Matthew's request. | ||
4788 | * Remove sa_restorer assignment to fix compilation on alpha, hppa, and | ||
4789 | ia64 (closes: #122086). | ||
4790 | |||
4791 | -- Colin Watson <cjwatson@debian.org> Sun, 2 Dec 2001 18:54:16 +0000 | ||
4792 | |||
4793 | openssh (1:3.0.1p1-1) unstable; urgency=high | ||
4794 | |||
4795 | * New upstream version (Closes: #113646, #113513, #114707, #118564) | ||
4796 | * Building with a libc that works (!) (Closes: #115228) | ||
4797 | * Patches forward-ported are -1/-2 options for scp, the improvement to | ||
4798 | 'waiting for forwarded connections to terminate...' | ||
4799 | * Fix /etc/init.d/ssh to stop sshd properly (Closes: #115228) | ||
4800 | * /etc/ssh/sshd_config is no longer a conffile but generated in the postinst | ||
4801 | * Remove suidregister leftover from postrm | ||
4802 | * Mention key we are making in the postinst | ||
4803 | * Default to not enable SSH protocol 1 support, since protocol 2 is | ||
4804 | much safer anyway. | ||
4805 | * New version of the vpn-fixes patch, from Ian Jackson | ||
4806 | * New handling of -q, and added new -qq option; thanks to Jon Amery | ||
4807 | * Experimental smartcard support not enabled, since I have no way of | ||
4808 | testing it. | ||
4809 | |||
4810 | -- Matthew Vernon <matthew@debian.org> Thu, 28 Nov 2001 17:43:01 +0000 | ||
4811 | |||
4812 | openssh (1:2.9p2-6) unstable; urgency=low | ||
4813 | |||
4814 | * check for correct file in /etc/init.d/ssh (Closes: #110876) | ||
4815 | * correct location of version 2 keys in ssh.1 (Closes: #110439) | ||
4816 | * call update-alternatives --quiet (Closes: #103314) | ||
4817 | * hack ssh-copy-id to chmod go-w (Closes: #95551) | ||
4818 | * TEMPORARY fix to provide largefile support using a -D in the cflags | ||
4819 | line. long-term, upstream will patch the autoconf stuff | ||
4820 | (Closes: #106809, #111849) | ||
4821 | * remove /etc/rc references in ssh-keygen.1 (Closes: #68350) | ||
4822 | * scp.1 patch from Adam McKenna to document -r properly (Closes: #76054) | ||
4823 | * Check for files containing a newline character (Closes: #111692) | ||
4824 | |||
4825 | -- Matthew Vernon <matthew@debian.org> Thu, 13 Sep 2001 16:47:36 +0100 | ||
4826 | |||
4827 | openssh (1:2.9p2-5) unstable; urgency=high | ||
4828 | |||
4829 | * Thanks to all the bug-fixers who helped! | ||
4830 | * remove sa_restorer assignment (Closes: #102837) | ||
4831 | * patch from Peter Benie to DTRT wrt X forwarding if the server refuses | ||
4832 | us access (Closes: #48297) | ||
4833 | * patch from upstream CVS to fix port forwarding (Closes: #107132) | ||
4834 | * patch from Jonathan Amery to document ssh-keygen behaviour | ||
4835 | (Closes:#106643, #107512) | ||
4836 | * patch to postinst from Jonathan Amery (Closes: #106411) | ||
4837 | * patch to manpage from Jonathan Amery (Closes: #107364) | ||
4838 | * patch from Matthew Vernon to make -q emit fatal errors as that is the | ||
4839 | documented behaviour (Closes: #64347) | ||
4840 | * patch from Ian Jackson to cause us to destroy a file when we scp it | ||
4841 | onto itself, rather than dumping bits of our memory into it, which was | ||
4842 | a security hole (see #51955) | ||
4843 | * patch from Jonathan Amery to document lack of Kerberos support | ||
4844 | (Closes: #103726) | ||
4845 | * patch from Matthew Vernon to make the 'waiting for connections to | ||
4846 | terminate' message more helpful (Closes: #50308) | ||
4847 | |||
4848 | -- Matthew Vernon <matthew@debian.org> Thu, 23 Aug 2001 02:14:09 +0100 | ||
4849 | |||
4850 | openssh (1:2.9p2-4) unstable; urgency=high | ||
4851 | |||
4852 | * Today's build of ssh is strawberry flavoured | ||
4853 | * Patch from mhp to reduce length of time sshd is stopped for (Closes: #106176) | ||
4854 | * Tidy up debconf template (Closes: #106152) | ||
4855 | * If called non-setuid, then setgid()'s failure should not be fatal (see | ||
4856 | #105854) | ||
4857 | |||
4858 | -- Matthew Vernon <matthew@debian.org> Sun, 22 Jul 2001 14:19:43 +0100 | ||
4859 | |||
4860 | openssh (1:2.9p2-3) unstable; urgency=low | ||
4861 | |||
4862 | * Patch from yours truly to add -1 and -2 options to scp (Closes: #106061) | ||
4863 | * Improve the IdentityFile section in the man page (Closes: #106038) | ||
4864 | |||
4865 | -- Matthew Vernon <matthew@debian.org> Sat, 21 Jul 2001 14:47:27 +0100 | ||
4866 | |||
4867 | openssh (1:2.9p2-2) unstable; urgency=low | ||
4868 | |||
4869 | * Document the protocol version 2 and IPV6 changes (Closes: #105845, #105868) | ||
4870 | * Make PrintLastLog 'no' by default (Closes: #105893) | ||
4871 | |||
4872 | -- Matthew Vernon <matthew@debian.org> Thu, 19 Jul 2001 18:36:41 +0100 | ||
4873 | |||
4874 | openssh (1:2.9p2-1) unstable; urgency=low | ||
4875 | |||
4876 | * new (several..) upstream version (Closes: #96726, #81856, #96335) | ||
4877 | * Hopefully, this will close some other bugs too | ||
4878 | |||
4879 | -- Matthew Vernon <matthew@debian.org> Tue, 17 Jul 2001 19:41:58 +0100 | ||
4880 | |||
4881 | openssh (1:2.5.2p2-3) unstable; urgency=low | ||
4882 | |||
4883 | * Taking Over this package | ||
4884 | * Patches from Robert Bihlmeyer for the Hurd (Closes: #102991) | ||
4885 | * Put PermitRootLogin back to yes (Closes: #67334, #67371, #78274) | ||
4886 | * Don't fiddle with conf-files any more (Closes: #69501) | ||
4887 | |||
4888 | -- Matthew Vernon <matthew@debian.org> Tue, 03 Jul 2001 02:58:13 +0100 | ||
4889 | |||
4890 | openssh (1:2.5.2p2-2.2) unstable; urgency=low | ||
4891 | |||
4892 | * NMU | ||
4893 | * Include Hurd compatibility patches from Robert Bihlmeyer (Closes: #76033) | ||
4894 | * Patch from Richard Kettlewell for protocolkeepalives (Closes: #99273) | ||
4895 | * Patch from Matthew Vernon for BannerTimeOut, batchmode, and | ||
4896 | documentation for protocolkeepalives. Makes ssh more generally useful | ||
4897 | for scripting uses (Closes: #82877, #99275) | ||
4898 | * Set a umask, so ourpidfile isn't world-writable (closes: #100012, | ||
4899 | #98286, #97391) | ||
4900 | |||
4901 | -- Matthew Vernon <matthew@debian.org> Thu, 28 Jun 2001 23:15:42 +0100 | ||
4902 | |||
4903 | openssh (1:2.5.2p2-2.1) unstable; urgency=low | ||
4904 | |||
4905 | * NMU | ||
4906 | * Remove duplicate Build-Depends for libssl096-dev and change it to | ||
4907 | depend on libssl-dev instaed. Also adding in virtual | real package | ||
4908 | style build-deps. (Closes: #93793, #75228) | ||
4909 | * Removing add-log entry (Closes: #79266) | ||
4910 | * This was a pam bug from a while back (Closes: #86908, #88457, #86843) | ||
4911 | * pam build-dep already exists (Closes: #93683) | ||
4912 | * libgnome-dev build-dep already exists (Closes: #93694) | ||
4913 | * No longer in non-free (Closes: #85401) | ||
4914 | * Adding in fr debconf translations (Closes: #83783) | ||
4915 | * Already suggests xbase-clients (Closes: #79741) | ||
4916 | * No need to suggest libpam-pwdb anymore (Closes: #81658) | ||
4917 | * Providing rsh-client (Closes: #79437) | ||
4918 | * hurd patch was already applied (Closes: #76033) | ||
4919 | * default set to no (Closes: #73682) | ||
4920 | * Adding in a suggests for dnsutils (Closes: #93265) | ||
4921 | * postinst bugs fixed (Closes: #88057, #88066, #88196, #88405, #88612) | ||
4922 | (Closes: #88774, #88196, #89556, #90123, #90228, #90833, #87814, #85465) | ||
4923 | * Adding in debconf dependency | ||
4924 | |||
4925 | -- Ivan E. Moore II <rkrusty@debian.org> Mon, 16 Apr 2001 14:11:04 +0100 | ||
4926 | |||
4927 | openssh (1:2.5.2p2-2) unstable; urgency=high | ||
4928 | |||
4929 | * disable the OpenSSL version check in entropy.c | ||
4930 | (closes: #93581, #93588, #93590, #93614, #93619, #93635, #93648) | ||
4931 | |||
4932 | -- Philip Hands <phil@uk.alcove.com> Wed, 11 Apr 2001 20:30:04 +0100 | ||
4933 | |||
4934 | openssh (1:2.5.2p2-1) unstable; urgency=low | ||
4935 | |||
4936 | * New upstream release | ||
4937 | * removed make-ssh-known-hosts, since ssh-keyscan does that job (closes: #86069, #87748) | ||
4938 | * fix double space indent in german templates (closes: #89493) | ||
4939 | * make postinst check for ssh_host_rsa_key | ||
4940 | * get rid of the last of the misguided debian/rules NMU debris :-/ | ||
4941 | |||
4942 | -- Philip Hands <phil@hands.com> Sat, 24 Mar 2001 20:59:33 +0000 | ||
4943 | |||
4944 | openssh (1:2.5.1p2-2) unstable; urgency=low | ||
4945 | |||
4946 | * rebuild with new debhelper (closes: #89558, #89536, #90225) | ||
4947 | * fix broken dpkg-statoverride test in postinst | ||
4948 | (closes: #89612, #90474, #90460, #89605) | ||
4949 | * NMU bug fixed but not closed in last upload (closes: #88206) | ||
4950 | |||
4951 | -- Philip Hands <phil@hands.com> Fri, 23 Mar 2001 16:11:33 +0000 | ||
4952 | |||
4953 | openssh (1:2.5.1p2-1) unstable; urgency=high | ||
4954 | |||
4955 | * New upstream release | ||
4956 | * fix typo in postinst (closes: #88110) | ||
4957 | * revert to setting PAM service name in debian/rules, backing out last | ||
4958 | NMU, which also (closes: #88101) | ||
4959 | * restore the pam lastlog/motd lines, lost during the NMUs, and sshd_config | ||
4960 | * restore printlastlog option patch | ||
4961 | * revert to using debhelper, which had been partially disabled in NMUs | ||
4962 | |||
4963 | -- Philip Hands <phil@hands.com> Tue, 13 Mar 2001 01:41:34 +0000 | ||
4964 | |||
4965 | openssh (1:2.5.1p1-1.8) unstable; urgency=high | ||
4966 | |||
4967 | * And now the old pam-bug s/sshd/ssh in ssh.c is also fixed | ||
4968 | |||
4969 | -- Christian Kurz <shorty@debian.org> Thu, 1 Mar 2001 19:48:01 +0100 | ||
4970 | |||
4971 | openssh (1:2.5.1p1-1.7) unstable; urgency=high | ||
4972 | |||
4973 | * And now we mark the correct binary as setuid, when a user requested | ||
4974 | to install it setuid. | ||
4975 | |||
4976 | -- Christian Kurz <shorty@debian.org> Thu, 1 Mar 2001 07:19:56 +0100 | ||
4977 | |||
4978 | openssh (1:2.5.1p1-1.6) unstable; urgency=high | ||
4979 | |||
4980 | * Fixes postinst to handle overrides that are already there. Damn, I | ||
4981 | should have noticed the bug earlier. | ||
4982 | |||
4983 | -- Christian Kurz <shorty@debian.org> Wed, 28 Feb 2001 22:35:00 +0100 | ||
4984 | |||
4985 | openssh (1:2.5.1p1-1.5) unstable; urgency=high | ||
4986 | |||
4987 | * Rebuild ssh with pam-support. | ||
4988 | |||
4989 | -- Christian Kurz <shorty@debian.org> Mon, 26 Feb 2001 21:55:51 +0100 | ||
4990 | |||
4991 | openssh (1:2.5.1p1-1.4) unstable; urgency=low | ||
4992 | |||
4993 | * Added Build-Depends on libssl096-dev. | ||
4994 | * Fixed sshd_config file to disallow root logins again. | ||
4995 | |||
4996 | -- Christian Kurz <shorty@debian.org> Sun, 25 Feb 2001 20:03:55 +0100 | ||
4997 | |||
4998 | openssh (1:2.5.1p1-1.3) unstable; urgency=low | ||
4999 | |||
5000 | * Fixed missing manpages for sftp.1 and ssh-keyscan.1 | ||
5001 | * Made package policy 3.5.2 compliant. | ||
5002 | |||
5003 | -- Christian Kurz <shorty@debian.org> Sun, 25 Feb 2001 15:46:26 +0100 | ||
5004 | |||
5005 | openssh (1:2.5.1p1-1.2) unstable; urgency=low | ||
5006 | |||
5007 | * Added Conflict with sftp, since we now provide our own sftp-client. | ||
5008 | * Added a fix for our broken dpkg-statoverride call in the | ||
5009 | 2.3.0p1-13. | ||
5010 | * Fixed some config pathes in the comments of sshd_config. | ||
5011 | * Removed ssh-key-exchange-vulnerability-patch since it's not needed | ||
5012 | anymore because upstream included the fix. | ||
5013 | |||
5014 | -- Christian Kurz <shorty@debian.org> Sun, 25 Feb 2001 13:46:58 +0100 | ||
5015 | |||
5016 | openssh (1:2.5.1p1-1.1) unstable; urgency=high | ||
5017 | |||
5018 | * Another NMU to get the new upstream version 2.5.1p1 into | ||
5019 | unstable. (Closes: #87123) | ||
5020 | * Corrected postinst to mark ssh as setuid. (Closes: #86391, #85766) | ||
5021 | * Key Exchange patch is already included by upstream. (Closes: #86015) | ||
5022 | * Upgrading should be possible now. (Closes: #85525, #85523) | ||
5023 | * Added --disable-suid-ssh as compile option, so ssh won't get installed | ||
5024 | suid per default. | ||
5025 | * Fixed postinst to run dpkg-statoverride only, when dpkg-statoverride | ||
5026 | is available and the mode of the binary should be 4755. And also added | ||
5027 | suggestion for a newer dpkg. | ||
5028 | (Closes: #85734, #85741, #86876) | ||
5029 | * sftp and ssh-keyscan will also be included from now on. (Closes: #79994) | ||
5030 | * scp now understands spaces in filenames (Closes: #53783, #58958, | ||
5031 | #66723) | ||
5032 | * ssh-keygen now supports showing DSA fingerprints. (Closes: #68623) | ||
5033 | * ssh doesn' t show motd anymore when switch -t is used. (Closes #69035) | ||
5034 | * ssh supports the usage of other dsa keys via the ssh command line | ||
5035 | options. (Closes: #81250) | ||
5036 | * Documentation in sshd_config fixed. (Closes: #81088) | ||
5037 | * primes file included by upstream and included now. (Closes: #82101) | ||
5038 | * scp now allows dots in the username. (Closes: #82477) | ||
5039 | * Spelling error in ssh-copy-id.1 corrected by upstream. (Closes: #78124) | ||
5040 | |||
5041 | -- Christian Kurz <shorty@debian.org> Sun, 25 Feb 2001 10:06:08 +0100 | ||
5042 | |||
5043 | openssh (1:2.3.0p1-1.13) unstable; urgency=low | ||
5044 | |||
5045 | * Config should now also be fixed with this hopefully last NMU. | ||
5046 | |||
5047 | -- Christian Kurz <shorty@debian.org> Sat, 10 Feb 2001 22:56:36 +0100 | ||
5048 | |||
5049 | openssh (1:2.3.0p1-1.12) unstable; urgency=high | ||
5050 | |||
5051 | * Added suggest for xbase-clients to control-file. (Closes #85227) | ||
5052 | * Applied patch from Markus Friedl to fix a vulnerability in | ||
5053 | the rsa keyexchange. | ||
5054 | * Fixed position of horizontal line. (Closes: #83613) | ||
5055 | * Fixed hopefully the grep problem in the config-file. (Closes: #78802) | ||
5056 | * Converted package from suidregister to dpkg-statoverride. | ||
5057 | |||
5058 | -- Christian Kurz <shorty@debian.org> Fri, 9 Feb 2001 19:43:55 +0100 | ||
5059 | |||
5060 | openssh (1:2.3.0p1-1.11) unstable; urgency=medium | ||
5061 | |||
5062 | * Fixed some typos in the german translation of the debconf | ||
5063 | template. | ||
5064 | |||
5065 | -- Christian Kurz <shorty@debian.org> Wed, 24 Jan 2001 18:22:38 +0100 | ||
5066 | |||
5067 | openssh (1:2.3.0p1-1.10) unstable; urgency=medium | ||
5068 | |||
5069 | * Fixed double printing of motd. (Closes: #82618) | ||
5070 | |||
5071 | -- Christian Kurz <shorty@debian.org> Tue, 23 Jan 2001 21:03:43 +0100 | ||
5072 | |||
5073 | openssh (1:2.3.0p1-1.9) unstable; urgency=high | ||
5074 | |||
5075 | * And the next NMU which includes the patch from Andrew Bartlett | ||
5076 | and Markus Friedl to fix the root privileges handling of openssh. | ||
5077 | (Closes: #82657) | ||
5078 | |||
5079 | -- Christian Kurz <shorty@debian.org> Wed, 17 Jan 2001 22:20:54 +0100 | ||
5080 | |||
5081 | openssh (1:2.3.0p1-1.8) unstable; urgency=high | ||
5082 | |||
5083 | * Applied fix from Ryan Murray to allow building on other architectures | ||
5084 | since the hurd patch was wrong. (Closes: #82471) | ||
5085 | |||
5086 | -- Christian Kurz <shorty@debian.org> Tue, 16 Jan 2001 22:45:51 +0100 | ||
5087 | |||
5088 | openssh (1:2.3.0p1-1.7) unstable; urgency=medium | ||
5089 | |||
5090 | * Fixed another typo on sshd_config | ||
5091 | |||
5092 | -- Christian Kurz <shorty@debian.org> Sun, 14 Jan 2001 19:01:31 +0100 | ||
5093 | |||
5094 | openssh (1:2.3.0p1-1.6) unstable; urgency=high | ||
5095 | |||
5096 | * Added Build-Dependency on groff (Closes: #81886) | ||
5097 | * Added Build-Depencency on debhelper (Closes: #82072) | ||
5098 | * Fixed entry for known_hosts in sshd_config (Closes: #82096) | ||
5099 | |||
5100 | -- Christian Kurz <shorty@debian.org> Thu, 11 Jan 2001 23:08:16 +0100 | ||
5101 | |||
5102 | openssh (1:2.3.0p1-1.5) unstable; urgency=high | ||
5103 | |||
5104 | * Fixed now also the problem with sshd used as default ipv4 and | ||
5105 | didn't use IPv6. This should be now fixed. | ||
5106 | |||
5107 | -- Christian Kurz <shorty@debian.org> Thu, 11 Jan 2001 21:25:55 +0100 | ||
5108 | |||
5109 | openssh (1:2.3.0p1-1.4) unstable; urgency=high | ||
5110 | |||
5111 | * Fixed buggy entry in postinst. | ||
5112 | |||
5113 | -- Christian Kurz <shorty@debian.org> Wed, 10 Jan 2001 23:12:16 +0100 | ||
5114 | |||
5115 | openssh (1:2.3.0p1-1.3) unstable; urgency=high | ||
5116 | |||
5117 | * After finishing the rewrite of the rules-file I had to notice that | ||
5118 | the manpage installation was broken. This should now work again. | ||
5119 | |||
5120 | -- Christian Kurz <shorty@debian.org> Wed, 10 Jan 2001 22:11:59 +0100 | ||
5121 | |||
5122 | openssh (1:2.3.0p1-1.2) unstable; urgency=high | ||
5123 | |||
5124 | * Fixed the screwed up build-dependency. | ||
5125 | * Removed --with-ipv4-default to support ipv6. | ||
5126 | * Changed makefile to use /etc/pam.d/ssh instead of /etc/pam.d/sshd. | ||
5127 | * Fixed location to sftp-server in config. | ||
5128 | * Since debian still relies on /etc/pam.d/ssh instead of moving to | ||
5129 | /etc/pam.d/sshd, I had to hack ssh.h to get ssh to use this name. | ||
5130 | * Fixed path to host key in sshd_config. | ||
5131 | |||
5132 | -- Christian Kurz <shorty@debian.org> Wed, 10 Jan 2001 08:23:47 +0100 | ||
5133 | |||
5134 | openssh (1:2.3.0p1-1.1) unstable; urgency=medium | ||
5135 | |||
5136 | * NMU with permission of Phil Hands. | ||
5137 | * New upstream release | ||
5138 | * Update Build-Depends to point to new libssl096. | ||
5139 | * This upstream release doesn't leak any information depending | ||
5140 | on the setting of PermitRootLogin (Closes: #59933) | ||
5141 | * New upstream release contains fix against forcing a client to | ||
5142 | do X/agent forwarding (Closes: #76788) | ||
5143 | * Changed template to contain correct path to the documentation | ||
5144 | (Closes: #67245) | ||
5145 | * Added --with-4in6 switch as compile option into debian/rules. | ||
5146 | * Added --with-ipv4-default as compile option into debian/rules. | ||
5147 | (Closes: #75037) | ||
5148 | * Changed default path to also contain /usr/local/bin and | ||
5149 | /usr/X11R6/bin (Closes: #62472,#54567,#62810) | ||
5150 | * Changed path to sftp-server in sshd_config to match the | ||
5151 | our package (Closes: #68347) | ||
5152 | * Replaced OpenBSDh with OpenBSD in the init-script. | ||
5153 | * Changed location to original source in copyright.head | ||
5154 | * Changed behaviour of init-script when invoked with the option | ||
5155 | restart (Closes: #68706,#72560) | ||
5156 | * Added a note about -L option of scp to README.Debian | ||
5157 | * ssh won't print now the motd if invoked with -t option | ||
5158 | (Closes: #59933) | ||
5159 | * RFC.nroff.gz get's now converted into RFC.gz. (Closes: #63867) | ||
5160 | * Added a note about tcp-wrapper support to README.Debian | ||
5161 | (Closes: #72807,#22190) | ||
5162 | * Removed two unneeded options from building process. | ||
5163 | * Added sshd.pam into debian dir and install it. | ||
5164 | * Commented out unnecessary call to dh_installinfo. | ||
5165 | * Added a line to sshd.pam so that limits will be paid attention | ||
5166 | to (Closes: #66904) | ||
5167 | * Restart Option has a Timeout of 10 seconds (Closes: 51264) | ||
5168 | * scp won't override files anymore (Closes: 51955) | ||
5169 | * Removed pam_lastlog module, so that the lastlog is now printed | ||
5170 | only once (Closes: #71742, #68335, #69592, #71495, #77781) | ||
5171 | * If password is expired, openssh now forces the user to change it. | ||
5172 | (Closes: #51747) | ||
5173 | * scp should now have no more problems with shell-init-files that | ||
5174 | produces ouput (Closes: #56280,#59873) | ||
5175 | * ssh now prints the motd correctly (Closes: #66926) | ||
5176 | * ssh upgrade should disable ssh daemon only if users has choosen | ||
5177 | to do so (Closes: #67478) | ||
5178 | * ssh can now be installed suid (Closes: #70879) | ||
5179 | * Modified debian/rules to support hurd. | ||
5180 | |||
5181 | -- Christian Kurz <shorty@debian.org> Wed, 27 Dec 2000 20:06:57 +0100 | ||
5182 | |||
5183 | openssh (1:2.2.0p1-1.1) unstable; urgency=medium | ||
5184 | |||
5185 | * Non-Maintainer Upload | ||
5186 | * Check for new returns in the new libc | ||
5187 | (closes: #72803, #74393, #72797, #71307, #71702) | ||
5188 | * Link against libssl095a (closes: #66304) | ||
5189 | * Correct check for PermitRootLogin (closes: #69448) | ||
5190 | |||
5191 | -- Ryan Murray <rmurray@debian.org> Wed, 18 Oct 2000 00:48:18 -0700 | ||
5192 | |||
5193 | openssh (1:2.2.0p1-1) unstable; urgency=low | ||
5194 | |||
5195 | * New upstream release | ||
5196 | |||
5197 | -- Philip Hands <phil@hands.com> Mon, 11 Sep 2000 14:49:43 +0100 | ||
5198 | |||
5199 | openssh (1:2.1.1p4-3) unstable; urgency=low | ||
5200 | |||
5201 | * add rsh alternatives | ||
5202 | * add -S option to scp (using Tommi Virtanen's patch) (closes: #63097) | ||
5203 | * do the IPV4_DEFAULT thing properly this time | ||
5204 | |||
5205 | -- Philip Hands <phil@hands.com> Fri, 11 Aug 2000 18:14:37 +0100 | ||
5206 | |||
5207 | openssh (1:2.1.1p4-2) unstable; urgency=low | ||
5208 | |||
5209 | * reinstate manpage .out patch from 1:1.2.3 | ||
5210 | * fix typo in postinst | ||
5211 | * only compile ssh with IPV4_DEFAULT | ||
5212 | * apply James Troup's patch to add a -o option to scp and updated manpage | ||
5213 | |||
5214 | -- Philip Hands <phil@hands.com> Sun, 30 Jul 2000 00:12:49 +0100 | ||
5215 | |||
5216 | openssh (1:2.1.1p4-1) unstable; urgency=low | ||
5217 | |||
5218 | * New upstream release | ||
5219 | |||
5220 | -- Philip Hands <phil@hands.com> Sat, 29 Jul 2000 14:46:16 +0100 | ||
5221 | |||
5222 | openssh (1:1.2.3-10) unstable; urgency=low | ||
5223 | |||
5224 | * add version to libpam-modules dependency, because old versions of | ||
5225 | pam_motd make it impossible to log in. | ||
5226 | |||
5227 | -- Philip Hands <phil@hands.com> Sat, 29 Jul 2000 13:28:22 +0100 | ||
5228 | |||
5229 | openssh (1:1.2.3-9) frozen unstable; urgency=low | ||
5230 | |||
5231 | * force location of /usr/bin/X11/xauth | ||
5232 | (closes: #64424, #66437, #66859) *RC* | ||
5233 | * typos in config (closes: #66779, #66780) | ||
5234 | * sshd_not_to_be_run could be assumed to be true, in error, if the config | ||
5235 | script died in an unusual way --- I've reversed this (closes: #66335) | ||
5236 | * Apply Zack Weinberg <zack@wolery.cumb.org>'s patch to ssh-askpass-ptk | ||
5237 | (closes: #65981) | ||
5238 | * change default for PermitRootLogin to "no" (closes: #66406) | ||
5239 | |||
5240 | -- Philip Hands <phil@hands.com> Tue, 11 Jul 2000 20:51:18 +0100 | ||
5241 | |||
5242 | openssh (1:1.2.3-8) frozen unstable; urgency=low | ||
5243 | |||
5244 | * get rid of Provides: rsh-server (this will mean that rstartd | ||
5245 | will need to change it's depends to deal with #63948, which I'm | ||
5246 | reopening) (closes: #66257) | ||
5247 | Given that this is also a trivial change, and is a reversal of a | ||
5248 | change that was mistakenly made after the freeze, I think this should | ||
5249 | also go into frozen. | ||
5250 | |||
5251 | -- Philip Hands <phil@hands.com> Wed, 28 Jun 2000 03:26:30 +0100 | ||
5252 | |||
5253 | openssh (1:1.2.3-7) frozen unstable; urgency=low | ||
5254 | |||
5255 | * check if debconf is installed before calling db_stop in postinst. | ||
5256 | This is required to allow ssh to be installed when debconf is not | ||
5257 | wanted, which probably makes it an RC upload (hopefully the last of | ||
5258 | too many). | ||
5259 | |||
5260 | -- Philip Hands <phil@hands.com> Wed, 28 Jun 2000 03:19:47 +0100 | ||
5261 | |||
5262 | openssh (1:1.2.3-6) frozen unstable; urgency=low | ||
5263 | |||
5264 | * fixed depressing little bug involving a line wrap looking like | ||
5265 | a blank line in the templates file *RC* | ||
5266 | (closes: #66090, #66078, #66083, #66182) | ||
5267 | |||
5268 | -- Philip Hands <phil@hands.com> Mon, 26 Jun 2000 00:45:05 +0100 | ||
5269 | |||
5270 | openssh (1:1.2.3-5) frozen unstable; urgency=low | ||
5271 | |||
5272 | * add code to prevent UseLogin exploit, although I think our PAM | ||
5273 | conditional code breaks UseLogin in a way that protects us from this | ||
5274 | exploit anyway. ;-) (closes: #65495) *RC* | ||
5275 | * Apply Zack Weinberg <zack@wolery.cumb.org>'s patch to fix keyboard | ||
5276 | grab vulnerability in ssh-askpass-gnome (closes: #64795) *RC* | ||
5277 | * stop redirection of sshd's file descriptors (introduced in 1:1.2.3-3) | ||
5278 | and use db_stop in the postinst to solve that problem instead | ||
5279 | (closes: #65104) | ||
5280 | * add Provides: rsh-server to ssh (closes: #63948) | ||
5281 | * provide config option not to run sshd | ||
5282 | |||
5283 | -- Philip Hands <phil@hands.com> Mon, 12 Jun 2000 23:05:11 +0100 | ||
5284 | |||
5285 | openssh (1:1.2.3-4) frozen unstable; urgency=low | ||
5286 | |||
5287 | * fixes #63436 which is *RC* | ||
5288 | * add 10 second pause in init.d restart (closes: #63844) | ||
5289 | * get rid of noenv in PAM mail line (closes: #63856) | ||
5290 | * fix host key path in make-ssh-known-hosts (closes: #63713) | ||
5291 | * change wording of SUID template (closes: #62788, #63436) | ||
5292 | |||
5293 | -- Philip Hands <phil@hands.com> Sat, 27 May 2000 11:18:06 +0100 | ||
5294 | |||
5295 | openssh (1:1.2.3-3) frozen unstable; urgency=low | ||
5296 | |||
5297 | * redirect sshd's file descriptors to /dev/null in init to | ||
5298 | prevent debconf from locking up during installation | ||
5299 | ** grave bug just submited by me ** | ||
5300 | |||
5301 | -- Philip Hands <phil@hands.com> Thu, 20 Apr 2000 17:10:59 +0100 | ||
5302 | |||
5303 | openssh (1:1.2.3-2) frozen unstable; urgency=low | ||
5304 | |||
5305 | * allow user to select SUID status of /usr/bin/ssh (closes: 62462) ** RC ** | ||
5306 | * suggest debconf | ||
5307 | * conflict with debconf{,-tiny} (<<0.2.17) so I can clean up the preinst | ||
5308 | |||
5309 | -- Philip Hands <phil@hands.com> Wed, 19 Apr 2000 17:49:15 +0100 | ||
5310 | |||
5311 | openssh (1:1.2.3-1) frozen unstable; urgency=low | ||
5312 | |||
5313 | * New upstream release | ||
5314 | * patch sshd to create extra xauth key required for localhost | ||
5315 | (closes: #49944) *** RC *** | ||
5316 | * FallbacktoRsh now defaults to ``no'' to match impression | ||
5317 | given in sshd_config | ||
5318 | * stop setting suid bit on ssh (closes: #58711, #58558) | ||
5319 | This breaks Rhosts authentication (which nobody uses) and allows | ||
5320 | the LD_PRELOAD trick to get socks working, so seems like a net benefit. | ||
5321 | |||
5322 | -- Philip Hands <phil@hands.com> Thu, 13 Apr 2000 20:01:54 +0100 | ||
5323 | |||
5324 | openssh (1:1.2.2-1.4) frozen unstable; urgency=low | ||
5325 | |||
5326 | * Recompile for frozen, contains fix for RC bug. | ||
5327 | |||
5328 | -- Tommi Virtanen <tv@debian.org> Tue, 29 Feb 2000 22:14:58 +0200 | ||
5329 | |||
5330 | openssh (1:1.2.2-1.3) unstable; urgency=low | ||
5331 | |||
5332 | * Integrated man page addition for PrintLastLog. | ||
5333 | This bug was filed on "openssh", and I ended up | ||
5334 | creating my own patch for this (closes: #59054) | ||
5335 | * Improved error message when ssh_exchange_identification | ||
5336 | gets EOF (closes: #58904) | ||
5337 | * Fixed typo (your -> you're) in debian/preinst. | ||
5338 | * Added else-clauses to config to make this upgradepath possible: | ||
5339 | oldssh -> openssh preinst fails due to upgrade_to_openssh=false | ||
5340 | -> ssh-nonfree -> openssh. Without these, debconf remembered | ||
5341 | the old answer, config didn't force asking it, and preinst always | ||
5342 | aborted (closes: #56596, #57782) | ||
5343 | * Moved setting upgrade_to_openssh isdefault flag to the place | ||
5344 | where preinst would abort. This means no double question to most | ||
5345 | users, people who currently suffer from "can't upgrade" may need | ||
5346 | to run apt-get install ssh twice. Did not do the same for | ||
5347 | use_old_init_script, as the situation is a bit different, and | ||
5348 | less common (closes: #54010, #56224) | ||
5349 | * Check for existance of ssh-keygen before attempting to use it in | ||
5350 | preinst, added warning for non-existant ssh-keygen in config. This | ||
5351 | happens when the old ssh is removed (say, due to ssh-nonfree getting | ||
5352 | installed). | ||
5353 | |||
5354 | -- Tommi Virtanen <tv@debian.org> Sun, 27 Feb 2000 21:36:43 +0200 | ||
5355 | |||
5356 | openssh (1:1.2.2-1.2) frozen unstable; urgency=low | ||
5357 | |||
5358 | * Non-maintainer upload. | ||
5359 | * Added configuration option PrintLastLog, default off due to PAM | ||
5360 | (closes: #54007, #55042) | ||
5361 | * ssh-askpass-{gnome,ptk} now provide ssh-askpass, making ssh's | ||
5362 | Suggests: line more accurate. Also closing related bugs fixed | ||
5363 | earlier, when default ssh-askpass moved to /usr/bin. | ||
5364 | (closes: #52403, #54741, #50607, #52298, #50967, #51661) | ||
5365 | * Patched to call vhangup, with autoconf detection and all | ||
5366 | (closes: #55379) | ||
5367 | * Added --with-ipv4-default workaround to a glibc bug causing | ||
5368 | slow DNS lookups, as per UPGRADING. Use -6 to really use | ||
5369 | IPv6 addresses. (closes: #57891, #58744, #58713, #57970) | ||
5370 | * Added noenv to PAM pam_mail line. Thanks to Ben Collins. | ||
5371 | (closes: #58429) | ||
5372 | * Added the UPGRADING file to the package. | ||
5373 | * Added frozen to the changelog line and recompiled before | ||
5374 | package was installed into the archive. | ||
5375 | |||
5376 | -- Tommi Virtanen <tv@debian.org> Fri, 25 Feb 2000 22:08:57 +0200 | ||
5377 | |||
5378 | openssh (1:1.2.2-1.1) frozen unstable; urgency=low | ||
5379 | |||
5380 | * Non-maintainer upload. | ||
5381 | * Integrated scp pipe buffer patch from Ben Collins | ||
5382 | <benc@debian.org>, should now work even if reading | ||
5383 | a pipe gives less than fstat st_blksize bytes. | ||
5384 | Should now work on Alpha and Sparc Linux (closes: #53697, #52071) | ||
5385 | * Made ssh depend on libssl09 (>= 0.9.4-3) (closes: #51393) | ||
5386 | * Integrated patch from Ben Collins <benc@debian.org> | ||
5387 | to do full shadow account locking and expiration | ||
5388 | checking (closes: #58165, #51747) | ||
5389 | |||
5390 | -- Tommi Virtanen <tv@debian.org> Tue, 22 Feb 2000 20:46:12 +0200 | ||
5391 | |||
5392 | openssh (1:1.2.2-1) frozen unstable; urgency=medium | ||
5393 | |||
5394 | * New upstream release (closes: #56870, #56346) | ||
5395 | * built against new libesd (closes: #56805) | ||
5396 | * add Colin Watson <cjw44@cam.ac.uk> =NULL patch | ||
5397 | (closes: #49902, #54894) | ||
5398 | * use socketpairs as suggested by Andrew Tridgell to eliminate rsync | ||
5399 | (and other) lockups | ||
5400 | * patch SSHD_PAM_SERVICE back into auth-pam.c, again :-/ | ||
5401 | (closes: #49902, #55872, #56959) | ||
5402 | * uncoment the * line in ssh_config (closes: #56444) | ||
5403 | |||
5404 | * #54894 & #49902 are release critical, so this should go in frozen | ||
5405 | |||
5406 | -- Philip Hands <phil@hands.com> Wed, 9 Feb 2000 04:52:04 +0000 | ||
5407 | |||
5408 | openssh (1:1.2.1pre24-1) unstable; urgency=low | ||
5409 | |||
5410 | * New upstream release | ||
5411 | |||
5412 | -- Philip Hands <phil@hands.com> Fri, 31 Dec 1999 02:47:24 +0000 | ||
5413 | |||
5414 | openssh (1:1.2.1pre23-1) unstable; urgency=low | ||
5415 | |||
5416 | * New upstream release | ||
5417 | * excape ? in /etc/init.d/ssh (closes: #53269) | ||
5418 | |||
5419 | -- Philip Hands <phil@hands.com> Wed, 29 Dec 1999 16:50:46 +0000 | ||
5420 | |||
5421 | openssh (1:1.2pre17-1) unstable; urgency=low | ||
5422 | |||
5423 | * New upstream release | ||
5424 | |||
5425 | -- Philip Hands <phil@hands.com> Thu, 9 Dec 1999 16:50:40 +0000 | ||
5426 | |||
5427 | openssh (1:1.2pre16-1) unstable; urgency=low | ||
5428 | |||
5429 | * New upstream release | ||
5430 | * upstream release (1.2pre14) (closes: #50299) | ||
5431 | * make ssh depend on libwrap0 (>= 7.6-1.1) (closes: #50973, #50776) | ||
5432 | * dispose of grep -q broken pipe message in config script (closes: #50855) | ||
5433 | * add make-ssh-known-hosts (closes: #50660) | ||
5434 | * add -i option to ssh-copy-id (closes: #50657) | ||
5435 | * add check for *LK* in password, indicating a locked account | ||
5436 | |||
5437 | -- Philip Hands <phil@hands.com> Wed, 8 Dec 1999 22:59:38 +0000 | ||
5438 | |||
5439 | openssh (1:1.2pre13-1) unstable; urgency=low | ||
5440 | |||
5441 | * New upstream release | ||
5442 | * make sshd.c use SSHD_PAM_SERVICE and define it as "ssh" in debian/rules | ||
5443 | * remove duplicate line in /etc/pam.d/ssh (closes: #50310) | ||
5444 | * mention ssh -A option in ssh.1 & ssh_config | ||
5445 | * enable forwarding to localhost in default ssh_config (closes: #50373) | ||
5446 | * tweak preinst to deal with debconf being `unpacked' | ||
5447 | * use --with-tcp-wrappers (closes: #49545) | ||
5448 | |||
5449 | -- Philip Hands <phil@hands.com> Sat, 20 Nov 1999 14:20:04 +0000 | ||
5450 | |||
5451 | openssh (1:1.2pre11-2) unstable; urgency=low | ||
5452 | |||
5453 | * oops, just realised that I forgot to strip out the unpleasant | ||
5454 | fiddling mentioned below (which turned not to be a fix anyway) | ||
5455 | |||
5456 | -- Philip Hands <phil@hands.com> Mon, 15 Nov 1999 01:35:23 +0000 | ||
5457 | |||
5458 | openssh (1:1.2pre11-1) unstable; urgency=low | ||
5459 | |||
5460 | * New upstream release (closes: #49722) | ||
5461 | * add 2>/dev/null to dispose of spurious message casused by grep -q | ||
5462 | (closes: #49876, #49604) | ||
5463 | * fix typo in debian/control (closes: #49841) | ||
5464 | * Do some unpleasant fiddling with upgraded keys in the preinst, which | ||
5465 | should make the keylength problem go away. (closes: #49676) | ||
5466 | * make pam_start in sshd use ``ssh'' as the service name (closes: #49956) | ||
5467 | * If /etc/ssh/NOSERVER exist, stop sshd from starting (closes: #47107) | ||
5468 | * apply Ben Collins <bcollins@debian.org>'s shadow patch | ||
5469 | * disable lastlogin and motd printing if using pam (closes: #49957) | ||
5470 | * add ssh-copy-id script and manpage | ||
5471 | |||
5472 | -- Philip Hands <phil@hands.com> Fri, 12 Nov 1999 01:03:38 +0000 | ||
5473 | |||
5474 | openssh (1:1.2pre9-1) unstable; urgency=low | ||
5475 | |||
5476 | * New upstream release | ||
5477 | * apply Chip Salzenberg <chip@valinux.com>'s SO_REUSEADDR patch | ||
5478 | to channels.c, to make forwarded ports instantly reusable | ||
5479 | * replace Pre-Depend: debconf with some check code in preinst | ||
5480 | * make the ssh-add ssh-askpass failure message more helpful | ||
5481 | * fix the ssh-agent getopts bug (closes: #49426) | ||
5482 | * fixed typo on Suggests: line (closes: #49704, #49571) | ||
5483 | * tidy up ssh package description (closes: #49642) | ||
5484 | * make ssh suid (closes: #49635) | ||
5485 | * in preinst upgrade code, ensure ssh_host_keys is mode 600 (closes: #49606) | ||
5486 | * disable agent forwarding by default, for the similar reasons as | ||
5487 | X forwarding (closes: #49586) | ||
5488 | |||
5489 | -- Philip Hands <phil@hands.com> Tue, 9 Nov 1999 09:57:47 +0000 | ||
5490 | |||
5491 | openssh (1:1.2pre7-4) unstable; urgency=low | ||
5492 | |||
5493 | * predepend on debconf (>= 0.2.17) should now allow preinst questions | ||
5494 | |||
5495 | -- Philip Hands <phil@hands.com> Sat, 6 Nov 1999 10:31:06 +0000 | ||
5496 | |||
5497 | openssh (1:1.2pre7-3) unstable; urgency=low | ||
5498 | |||
5499 | * add ssh-askpass package using Tommi Virtanen's perl-tk script | ||
5500 | * add ssh-preconfig package cludge | ||
5501 | * add usage hints to ssh-agent.1 | ||
5502 | |||
5503 | -- Philip Hands <phil@hands.com> Fri, 5 Nov 1999 00:38:33 +0000 | ||
5504 | |||
5505 | openssh (1:1.2pre7-2) unstable; urgency=low | ||
5506 | |||
5507 | * use pam patch from Ben Collins <bcollins@debian.org> | ||
5508 | * add slogin symlink to Makefile.in | ||
5509 | * change /usr/bin/login to LOGIN_PROGRAM define of /bin/login | ||
5510 | * sort out debconf usage | ||
5511 | * patch from Tommi Virtanen <tv@debian.org>'s makes ssh-add use ssh-askpass | ||
5512 | |||
5513 | -- Philip Hands <phil@hands.com> Thu, 4 Nov 1999 11:08:54 +0000 | ||
5514 | |||
5515 | openssh (1:1.2pre7-1) unstable; urgency=low | ||
5516 | |||
5517 | * New upstream release | ||
5518 | |||
5519 | -- Philip Hands <phil@hands.com> Tue, 2 Nov 1999 21:02:37 +0000 | ||
5520 | |||
5521 | openssh (1:1.2.0.pre6db1-2) unstable; urgency=low | ||
5522 | |||
5523 | * change the binary package name to ssh (the non-free branch of ssh has | ||
5524 | been renamed to ssh-nonfree) | ||
5525 | * make pam file comply with Debian standards | ||
5526 | * use an epoch to make sure openssh supercedes ssh-nonfree | ||
5527 | |||
5528 | -- Philip Hands <phil@hands.com> Sat, 30 Oct 1999 16:26:05 +0100 | ||
5529 | |||
5530 | openssh (1.2pre6db1-1) unstable; urgency=low | ||
5531 | |||
5532 | * New upstream source | ||
5533 | * sshd accepts logins now! | ||
5534 | |||
5535 | -- Dan Brosemer <odin@linuxfreak.com> Fri, 29 Oct 1999 11:13:38 -0500 | ||
5536 | |||
5537 | openssh (1.2.0.19991028-1) unstable; urgency=low | ||
5538 | |||
5539 | * New upstream source | ||
5540 | * Added test for -lnsl to configure script | ||
5541 | |||
5542 | -- Dan Brosemer <odin@linuxfreak.com> Thu, 28 Oct 1999 18:52:09 -0500 | ||
5543 | |||
5544 | openssh (1.2.0.19991027-3) unstable; urgency=low | ||
5545 | |||
5546 | * Initial release | ||
5547 | |||
5548 | -- Dan Brosemer <odin@linuxfreak.com> Wed, 27 Oct 1999 19:39:46 -0500 | ||
diff --git a/debian/clean b/debian/clean new file mode 100644 index 000000000..fcd68b77e --- /dev/null +++ b/debian/clean | |||
@@ -0,0 +1,2 @@ | |||
1 | config.log | ||
2 | debian/openssh-server.sshd.pam | ||
diff --git a/debian/compat b/debian/compat new file mode 100644 index 000000000..ec635144f --- /dev/null +++ b/debian/compat | |||
@@ -0,0 +1 @@ | |||
9 | |||
diff --git a/debian/control b/debian/control new file mode 100644 index 000000000..0e4388429 --- /dev/null +++ b/debian/control | |||
@@ -0,0 +1,231 @@ | |||
1 | Source: openssh | ||
2 | Section: net | ||
3 | Priority: standard | ||
4 | Maintainer: Debian OpenSSH Maintainers <debian-ssh@lists.debian.org> | ||
5 | Build-Depends: autotools-dev, | ||
6 | debhelper (>= 9.20160709~), | ||
7 | dh-autoreconf, | ||
8 | dh-exec, | ||
9 | dpkg-dev (>= 1.16.1~), | ||
10 | libaudit-dev [linux-any], | ||
11 | libedit-dev, | ||
12 | libgtk-3-dev <!pkg.openssh.nognome>, | ||
13 | libkrb5-dev | heimdal-dev, | ||
14 | libpam0g-dev | libpam-dev, | ||
15 | libselinux1-dev [linux-any], | ||
16 | libssl-dev (>= 1.1.0g), | ||
17 | libsystemd-dev [linux-any], | ||
18 | libwrap0-dev | libwrap-dev, | ||
19 | pkg-config, | ||
20 | zlib1g-dev (>= 1:1.2.3), | ||
21 | Standards-Version: 4.1.0 | ||
22 | Uploaders: Colin Watson <cjwatson@debian.org>, | ||
23 | Matthew Vernon <matthew@debian.org>, | ||
24 | Homepage: http://www.openssh.com/ | ||
25 | Vcs-Git: https://salsa.debian.org/ssh-team/openssh.git | ||
26 | Vcs-Browser: https://salsa.debian.org/ssh-team/openssh | ||
27 | |||
28 | Package: openssh-client | ||
29 | Architecture: any | ||
30 | Depends: adduser (>= 3.10), | ||
31 | dpkg (>= 1.7.0), | ||
32 | passwd, | ||
33 | ${misc:Depends}, | ||
34 | ${shlibs:Depends}, | ||
35 | Recommends: xauth, | ||
36 | Conflicts: sftp, | ||
37 | Replaces: ssh, | ||
38 | ssh-krb5, | ||
39 | Suggests: keychain, | ||
40 | libpam-ssh, | ||
41 | monkeysphere, | ||
42 | ssh-askpass, | ||
43 | Provides: rsh-client, | ||
44 | ssh-client, | ||
45 | Multi-Arch: foreign | ||
46 | Description: secure shell (SSH) client, for secure access to remote machines | ||
47 | This is the portable version of OpenSSH, a free implementation of | ||
48 | the Secure Shell protocol as specified by the IETF secsh working | ||
49 | group. | ||
50 | . | ||
51 | Ssh (Secure Shell) is a program for logging into a remote machine | ||
52 | and for executing commands on a remote machine. | ||
53 | It provides secure encrypted communications between two untrusted | ||
54 | hosts over an insecure network. X11 connections and arbitrary TCP/IP | ||
55 | ports can also be forwarded over the secure channel. | ||
56 | It can be used to provide applications with a secure communication | ||
57 | channel. | ||
58 | . | ||
59 | This package provides the ssh, scp and sftp clients, the ssh-agent | ||
60 | and ssh-add programs to make public key authentication more convenient, | ||
61 | and the ssh-keygen, ssh-keyscan, ssh-copy-id and ssh-argv0 utilities. | ||
62 | . | ||
63 | In some countries it may be illegal to use any encryption at all | ||
64 | without a special permit. | ||
65 | . | ||
66 | ssh replaces the insecure rsh, rcp and rlogin programs, which are | ||
67 | obsolete for most purposes. | ||
68 | |||
69 | Package: openssh-server | ||
70 | Priority: optional | ||
71 | Architecture: any | ||
72 | Pre-Depends: ${misc:Pre-Depends}, | ||
73 | Depends: adduser (>= 3.9), | ||
74 | dpkg (>= 1.9.0), | ||
75 | libpam-modules (>= 0.72-9), | ||
76 | libpam-runtime (>= 0.76-14), | ||
77 | lsb-base (>= 4.1+Debian3), | ||
78 | openssh-client (= ${binary:Version}), | ||
79 | openssh-sftp-server, | ||
80 | procps, | ||
81 | ucf (>= 0.28), | ||
82 | ${misc:Depends}, | ||
83 | ${shlibs:Depends}, | ||
84 | Recommends: default-logind | logind | libpam-systemd, | ||
85 | ncurses-term, | ||
86 | xauth, | ||
87 | ${openssh-server:Recommends}, | ||
88 | Conflicts: sftp, | ||
89 | ssh-socks, | ||
90 | ssh2, | ||
91 | Replaces: openssh-client (<< 1:7.9p1-8), | ||
92 | ssh, | ||
93 | ssh-krb5, | ||
94 | Suggests: molly-guard, | ||
95 | monkeysphere, | ||
96 | rssh, | ||
97 | ssh-askpass, | ||
98 | ufw, | ||
99 | Provides: ssh-server, | ||
100 | Multi-Arch: foreign | ||
101 | Description: secure shell (SSH) server, for secure access from remote machines | ||
102 | This is the portable version of OpenSSH, a free implementation of | ||
103 | the Secure Shell protocol as specified by the IETF secsh working | ||
104 | group. | ||
105 | . | ||
106 | Ssh (Secure Shell) is a program for logging into a remote machine | ||
107 | and for executing commands on a remote machine. | ||
108 | It provides secure encrypted communications between two untrusted | ||
109 | hosts over an insecure network. X11 connections and arbitrary TCP/IP | ||
110 | ports can also be forwarded over the secure channel. | ||
111 | It can be used to provide applications with a secure communication | ||
112 | channel. | ||
113 | . | ||
114 | This package provides the sshd server. | ||
115 | . | ||
116 | In some countries it may be illegal to use any encryption at all | ||
117 | without a special permit. | ||
118 | . | ||
119 | sshd replaces the insecure rshd program, which is obsolete for most | ||
120 | purposes. | ||
121 | |||
122 | Package: openssh-sftp-server | ||
123 | Priority: optional | ||
124 | Architecture: any | ||
125 | Depends: ${misc:Depends}, | ||
126 | ${shlibs:Depends}, | ||
127 | Recommends: openssh-server | ssh-server, | ||
128 | Breaks: openssh-server (<< 1:6.5p1-5), | ||
129 | Replaces: openssh-server (<< 1:6.5p1-5), | ||
130 | Enhances: openssh-server, | ||
131 | ssh-server, | ||
132 | Description: secure shell (SSH) sftp server module, for SFTP access from remote machines | ||
133 | This is the portable version of OpenSSH, a free implementation of | ||
134 | the Secure Shell protocol as specified by the IETF secsh working | ||
135 | group. | ||
136 | . | ||
137 | Ssh (Secure Shell) is a program for logging into a remote machine | ||
138 | and for executing commands on a remote machine. | ||
139 | It provides secure encrypted communications between two untrusted | ||
140 | hosts over an insecure network. X11 connections and arbitrary TCP/IP | ||
141 | ports can also be forwarded over the secure channel. | ||
142 | It can be used to provide applications with a secure communication | ||
143 | channel. | ||
144 | . | ||
145 | This package provides the SFTP server module for the SSH server. It | ||
146 | is needed if you want to access your SSH server with SFTP. The SFTP | ||
147 | server module also works with other SSH daemons like dropbear. | ||
148 | . | ||
149 | OpenSSH's sftp and sftp-server implement revision 3 of the SSH filexfer | ||
150 | protocol described in: | ||
151 | . | ||
152 | http://www.openssh.com/txt/draft-ietf-secsh-filexfer-02.txt | ||
153 | . | ||
154 | Newer versions of the draft will not be supported, though some features | ||
155 | are individually implemented as extensions. | ||
156 | |||
157 | Package: openssh-tests | ||
158 | Priority: optional | ||
159 | Architecture: any | ||
160 | Depends: openssh-client (= ${binary:Version}), | ||
161 | openssh-server (= ${binary:Version}), | ||
162 | openssh-sftp-server (= ${binary:Version}), | ||
163 | openssl, | ||
164 | putty-tools (>= 0.67-2), | ||
165 | python-twisted-conch (>= 1:15.5.0-1), | ||
166 | ${misc:Depends}, | ||
167 | ${shlibs:Depends}, | ||
168 | Description: OpenSSH regression tests | ||
169 | This package provides OpenSSH's regression test suite. It is mainly | ||
170 | intended for use with the autopkgtest system, though can also be run | ||
171 | directly using /usr/lib/openssh/regress/run-tests. | ||
172 | |||
173 | Package: ssh | ||
174 | Priority: optional | ||
175 | Architecture: all | ||
176 | Pre-Depends: dpkg (>= 1.17.5), | ||
177 | Depends: openssh-client (>= ${binary:Version}), | ||
178 | openssh-server (>= ${binary:Version}), | ||
179 | ${misc:Depends}, | ||
180 | Description: secure shell client and server (metapackage) | ||
181 | This metapackage is a convenient way to install both the OpenSSH client | ||
182 | and the OpenSSH server. It provides nothing in and of itself, so you | ||
183 | may remove it if nothing depends on it. | ||
184 | |||
185 | Package: ssh-askpass-gnome | ||
186 | Build-Profiles: <!pkg.openssh.nognome> | ||
187 | Section: gnome | ||
188 | Priority: optional | ||
189 | Architecture: any | ||
190 | Depends: openssh-client | ssh (>= 1:1.2pre7-4), | ||
191 | ${misc:Depends}, | ||
192 | ${shlibs:Depends}, | ||
193 | Replaces: ssh (<< 1:3.5p1-3), | ||
194 | Provides: ssh-askpass, | ||
195 | Description: interactive X program to prompt users for a passphrase for ssh-add | ||
196 | This has been split out of the main openssh-client package so that | ||
197 | openssh-client does not need to depend on GTK+. | ||
198 | . | ||
199 | You probably want the ssh-askpass package instead, but this is | ||
200 | provided to add to your choice and/or confusion. | ||
201 | |||
202 | Package: openssh-client-udeb | ||
203 | Build-Profiles: <!noudeb> | ||
204 | Package-Type: udeb | ||
205 | Section: debian-installer | ||
206 | Priority: optional | ||
207 | Architecture: any | ||
208 | Depends: ${shlibs:Depends}, | ||
209 | XB-Installer-Menu-Item: 99999 | ||
210 | Description: secure shell client for the Debian installer | ||
211 | This is the portable version of OpenSSH, a free implementation of | ||
212 | the Secure Shell protocol as specified by the IETF secsh working | ||
213 | group. | ||
214 | . | ||
215 | This package provides the ssh client for use in debian-installer. | ||
216 | |||
217 | Package: openssh-server-udeb | ||
218 | Build-Profiles: <!noudeb> | ||
219 | Package-Type: udeb | ||
220 | Section: debian-installer | ||
221 | Priority: optional | ||
222 | Architecture: any | ||
223 | Depends: ${shlibs:Depends}, | ||
224 | Description: secure shell server for the Debian installer | ||
225 | This is the portable version of OpenSSH, a free implementation of | ||
226 | the Secure Shell protocol as specified by the IETF secsh working | ||
227 | group. | ||
228 | . | ||
229 | This package provides the sshd server for use in debian-installer. | ||
230 | Since it is expected to be used in specialized situations (e.g. S/390 | ||
231 | installs with no console), it does not provide any configuration. | ||
diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 000000000..ef1bc8e69 --- /dev/null +++ b/debian/copyright | |||
@@ -0,0 +1,247 @@ | |||
1 | Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ | ||
2 | Upstream-Name: OpenSSH | ||
3 | Upstream-Contact: openssh-unix-dev@mindrot.org | ||
4 | Source: http://www.openssh.com/portable.html | ||
5 | Comment: | ||
6 | The overall licence of the OpenSSH upstream code amounts to BSD-3-clause or | ||
7 | various less restrictive licences, with the additional restrictions that | ||
8 | derived versions must be clearly marked as such and that if derived works | ||
9 | are incompatible with the RFC-specified protocol then they must be called | ||
10 | by a name other than "ssh" or "Secure Shell". | ||
11 | |||
12 | Files: * | ||
13 | Copyright: | ||
14 | 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland | ||
15 | Markus Friedl | ||
16 | Theo de Raadt | ||
17 | Niels Provos | ||
18 | Dug Song | ||
19 | Aaron Campbell | ||
20 | Damien Miller | ||
21 | Kevin Steves | ||
22 | Daniel Kouril | ||
23 | Wesley Griffin | ||
24 | Per Allansson | ||
25 | Nils Nordman | ||
26 | Simon Wilkinson | ||
27 | Ben Lindstrom | ||
28 | Tim Rice | ||
29 | Andre Lucas | ||
30 | Chris Adams | ||
31 | Corinna Vinschen | ||
32 | Cray Inc. | ||
33 | Denis Parker | ||
34 | Gert Doering | ||
35 | Jakob Schlyter | ||
36 | Jason Downs | ||
37 | Juha Yrjölä | ||
38 | Michael Stone | ||
39 | Networks Associates Technology, Inc. | ||
40 | Solar Designer | ||
41 | Todd C. Miller | ||
42 | Wayne Schroeder | ||
43 | William Jones | ||
44 | Darren Tucker | ||
45 | Sun Microsystems | ||
46 | The SCO Group | ||
47 | Daniel Walsh | ||
48 | Red Hat, Inc | ||
49 | Simon Vallet / Genoscope | ||
50 | Internet Software Consortium | ||
51 | Reyk Floeter | ||
52 | Chad Mynhier | ||
53 | License: OpenSSH | ||
54 | Tatu Ylonen's original licence is as follows (excluding some terms about | ||
55 | third-party code which are no longer relevant; see the LICENCE file for | ||
56 | details): | ||
57 | . | ||
58 | As far as I am concerned, the code I have written for this software | ||
59 | can be used freely for any purpose. Any derived versions of this | ||
60 | software must be clearly marked as such, and if the derived work is | ||
61 | incompatible with the protocol description in the RFC file, it must be | ||
62 | called by a name other than "ssh" or "Secure Shell". | ||
63 | . | ||
64 | Note that any information and cryptographic algorithms used in this | ||
65 | software are publicly available on the Internet and at any major | ||
66 | bookstore, scientific library, and patent office worldwide. More | ||
67 | information can be found e.g. at "http://www.cs.hut.fi/crypto". | ||
68 | . | ||
69 | The legal status of this program is some combination of all these | ||
70 | permissions and restrictions. Use only at your own responsibility. | ||
71 | You will be responsible for any legal consequences yourself; I am not | ||
72 | making any claims whether possessing or using this is legal or not in | ||
73 | your country, and I am not taking any responsibility on your behalf. | ||
74 | . | ||
75 | Most remaining components of the software are provided under a standard | ||
76 | 2-term BSD licence: | ||
77 | . | ||
78 | Redistribution and use in source and binary forms, with or without | ||
79 | modification, are permitted provided that the following conditions | ||
80 | are met: | ||
81 | 1. Redistributions of source code must retain the above copyright | ||
82 | notice, this list of conditions and the following disclaimer. | ||
83 | 2. Redistributions in binary form must reproduce the above copyright | ||
84 | notice, this list of conditions and the following disclaimer in the | ||
85 | documentation and/or other materials provided with the distribution. | ||
86 | . | ||
87 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | ||
88 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | ||
89 | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | ||
90 | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
91 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
92 | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
93 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
94 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
95 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
96 | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
97 | . | ||
98 | Some code is licensed under an ISC-style license, to the following | ||
99 | copyright holders: | ||
100 | . | ||
101 | Permission to use, copy, modify, and distribute this software for any | ||
102 | purpose with or without fee is hereby granted, provided that the above | ||
103 | copyright notice and this permission notice appear in all copies. | ||
104 | . | ||
105 | THE SOFTWARE IS PROVIDED "AS IS" AND TODD C. MILLER DISCLAIMS ALL | ||
106 | WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES | ||
107 | OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL TODD C. MILLER BE LIABLE | ||
108 | FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
109 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION | ||
110 | OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | ||
111 | CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
112 | |||
113 | Files: ssh-keyscan.* | ||
114 | Copyright: 1995, 1996 David Mazieres <dm@lcs.mit.edu> | ||
115 | License: Mazieres-BSD-style | ||
116 | Modification and redistribution in source and binary forms is | ||
117 | permitted provided that due credit is given to the author and the | ||
118 | OpenBSD project by leaving this copyright notice intact. | ||
119 | |||
120 | Files: rijndael.* | ||
121 | License: public-domain | ||
122 | This code is from a reference implementation of the Rijndael cipher which | ||
123 | has been dedicated to the public domain. | ||
124 | . | ||
125 | @version 3.0 (December 2000) | ||
126 | . | ||
127 | Optimised ANSI C code for the Rijndael cipher (now AES) | ||
128 | . | ||
129 | @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be> | ||
130 | @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be> | ||
131 | @author Paulo Barreto <paulo.barreto@terra.com.br> | ||
132 | . | ||
133 | This code is hereby placed in the public domain. | ||
134 | . | ||
135 | THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS | ||
136 | OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
137 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
138 | ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE | ||
139 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
140 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
141 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR | ||
142 | BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | ||
143 | WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | ||
144 | OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, | ||
145 | EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
146 | |||
147 | Files: loginrec.c openbsd-compat/* scp.c | ||
148 | Copyright: | ||
149 | 1983, 1995-1997 Eric P. Allman | ||
150 | 1999 Aaron Campbell | ||
151 | 1993 by Digital Equipment Corporation | ||
152 | 2000 Andre Lucas | ||
153 | 1999-2010 Damien Miller | ||
154 | 1997-2010 Todd C. Miller | ||
155 | 1995, 1996, 1998, 1999, 2008 Theo de Raadt | ||
156 | 2003 Constantin S. Svintsoff <kostik@iclub.nsu.ru> | ||
157 | 1980, 1983, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995 The Regents of the University of California | ||
158 | License: BSD-3-clause | ||
159 | Redistribution and use in source and binary forms, with or without | ||
160 | modification, are permitted provided that the following conditions | ||
161 | are met: | ||
162 | 1. Redistributions of source code must retain the above copyright | ||
163 | notice, this list of conditions and the following disclaimer. | ||
164 | 2. Redistributions in binary form must reproduce the above copyright | ||
165 | notice, this list of conditions and the following disclaimer in the | ||
166 | documentation and/or other materials provided with the distribution. | ||
167 | 3. Neither the name of the University nor the names of its contributors | ||
168 | may be used to endorse or promote products derived from this software | ||
169 | without specific prior written permission. | ||
170 | . | ||
171 | THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND | ||
172 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
173 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
174 | ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE | ||
175 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
176 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||
177 | OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||
178 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
179 | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
180 | OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||
181 | SUCH DAMAGE. | ||
182 | |||
183 | Files: md5crypt.* | ||
184 | Copyright: Poul-Henning Kamp | ||
185 | License: Beer-ware | ||
186 | "THE BEER-WARE LICENSE" (Revision 42): | ||
187 | <phk@login.dknet.dk> wrote this file. As long as you retain this | ||
188 | notice you can do whatever you want with this stuff. If we meet | ||
189 | some day, and you think this stuff is worth it, you can buy me a | ||
190 | beer in return. Poul-Henning Kamp | ||
191 | |||
192 | Files: openbsd-compat/bsd-snprintf.c | ||
193 | Copyright: 1995 Patrick Powell | ||
194 | License: Powell-BSD-style | ||
195 | This code is based on code written by Patrick Powell | ||
196 | (papowell@astart.com) It may be used for any purpose as long as this | ||
197 | notice remains intact on all source code distributions | ||
198 | |||
199 | Files: openbsd-compat/sigact.* | ||
200 | Copyright: 1998, 2000 Free Software Foundation, Inc. | ||
201 | License: Expat-with-advertising-restriction | ||
202 | Permission is hereby granted, free of charge, to any person obtaining a | ||
203 | copy of this software and associated documentation files (the | ||
204 | "Software"), to deal in the Software without restriction, including | ||
205 | without limitation the rights to use, copy, modify, merge, publish, | ||
206 | distribute, distribute with modifications, sublicense, and/or sell | ||
207 | copies of the Software, and to permit persons to whom the Software is | ||
208 | furnished to do so, subject to the following conditions: | ||
209 | . | ||
210 | The above copyright notice and this permission notice shall be included | ||
211 | in all copies or substantial portions of the Software. | ||
212 | . | ||
213 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | ||
214 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
215 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. | ||
216 | IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, | ||
217 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR | ||
218 | OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR | ||
219 | THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
220 | . | ||
221 | Except as contained in this notice, the name(s) of the above copyright | ||
222 | holders shall not be used in advertising or otherwise to promote the | ||
223 | sale, use or other dealings in this Software without prior written | ||
224 | authorization. | ||
225 | |||
226 | Files: debian/* | ||
227 | Copyright: Matthew Vernon, Colin Watson | ||
228 | License: BSD-2-clause | ||
229 | Redistribution and use in source and binary forms, with or without | ||
230 | modification, are permitted provided that the following conditions | ||
231 | are met: | ||
232 | 1. Redistributions of source code must retain the above copyright | ||
233 | notice, this list of conditions and the following disclaimer. | ||
234 | 2. Redistributions in binary form must reproduce the above copyright | ||
235 | notice, this list of conditions and the following disclaimer in the | ||
236 | documentation and/or other materials provided with the distribution. | ||
237 | . | ||
238 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | ||
239 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | ||
240 | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | ||
241 | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
242 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
243 | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
244 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
245 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
246 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
247 | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
diff --git a/debian/faq.html b/debian/faq.html new file mode 100644 index 000000000..7f0252891 --- /dev/null +++ b/debian/faq.html | |||
@@ -0,0 +1,1187 @@ | |||
1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> | ||
2 | <html> | ||
3 | <head> | ||
4 | <title>OpenSSH FAQ</title> | ||
5 | <link rev= "made" href= "mailto:www@openbsd.org"> | ||
6 | <meta name= "resource-type" content= "document"> | ||
7 | <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> | ||
8 | <meta name= "description" content= "the OpenSSH FAQ page"> | ||
9 | <meta name= "keywords" content= "OpenSSH,SSH,Secure Shell,faq"> | ||
10 | <meta name= "distribution" content= "global"> | ||
11 | <meta name= "copyright" content= "This document copyright 1999-2010 OpenBSD."> | ||
12 | </head> | ||
13 | |||
14 | <body bgcolor= "#ffffff" text= "#000000" link= "#23238E"> | ||
15 | <a href="http://www.openssh.com/index.html"><img alt="[OpenSSH]" height="30" width="141" src="images/smalltitle.gif" border="0"></a> | ||
16 | <p> | ||
17 | |||
18 | <h1>OpenSSH FAQ (Frequently asked questions)</h1> | ||
19 | |||
20 | <hr> | ||
21 | |||
22 | <blockquote> | ||
23 | <h3><a href= "#1.0">1.0 - What Is OpenSSH and Where Can I Get It?</a></h3> | ||
24 | <ul> | ||
25 | <li><a href= "#1.1">1.1 - What is OpenSSH and where can I download it?</a> | ||
26 | <li><a href= "#1.2">1.2 - Why should it be used?</a> | ||
27 | <li><a href= "#1.3">1.3 - What Operating Systems are supported?</a> | ||
28 | <li><a href= "#1.4">1.4 - What about copyright, usage and patents?</a> | ||
29 | <li><a href= "#1.5">1.5 - Where should I ask for help?</a> | ||
30 | <li><a href= "#1.6">1.6 - I have found a bug. Where do I report it?</a> | ||
31 | </ul> | ||
32 | |||
33 | <h3><a href= "#2.0">2.0 - General Questions</a></h3> | ||
34 | <ul> | ||
35 | <li><a href= "#2.1">2.1 - Why does ssh/scp make connections from low-numbered ports. My firewall blocks these.</a> | ||
36 | <li><a href= "#2.2">2.2 - Why is the ssh client setuid root?</a> | ||
37 | <li><a href= "#2.3">2.3 - Why does SSH 2.3 have problems interoperating with OpenSSH 2.1.1?</a> | ||
38 | <li><a href= "#2.4">2.4 - Why does OpenSSH print: Dispatch protocol error: type 20</a> | ||
39 | <li><a href= "#2.5">2.5 - Old versions of commercial SSH encrypt host keys with IDEA.</a> | ||
40 | <li><a href= "#2.6">2.6 - What are these warning messages about key lengths?</a> | ||
41 | <li><a href= "#2.7">2.7 - X11 and/or agent forwarding does not work.</a> | ||
42 | <li><a href= "#2.8">2.8 - After upgrading OpenSSH I lost SSH2 support.</a> | ||
43 | <li><a href= "#2.9">2.9 - sftp/scp fails at connection, but ssh is OK.</a> | ||
44 | <li><a href= "#2.10">2.10 - Will you add [foo] to scp?</a> | ||
45 | <li><a href= "#2.11">2.11 - How do I use port forwarding?</a> | ||
46 | <li><a href= "#2.12">2.12 - My ssh connection freezes or drops out after N minutes of inactivity.</a> | ||
47 | <li><a href= "#2.13">2.13 - How do I use scp to copy a file with a colon in it?</a> | ||
48 | <li><a href= "#2.14">2.14 - Why does OpenSSH report its version to clients?</a> | ||
49 | </ul> | ||
50 | |||
51 | <h3><a href= "#3.0">3.0 - Portable OpenSSH Questions</a></h3> | ||
52 | <ul> | ||
53 | <li><a href= "#3.1">3.1 - Spurious PAM authentication messages in logfiles.</a> | ||
54 | <li><a href= "#3.2">3.2 - Empty passwords not allowed with PAM authentication.</a> | ||
55 | <li><a href= "#3.3">3.3 - ssh(1) takes a long time to connect or log in</a> | ||
56 | <li><a href= "#3.4">3.4 - "Can't locate module net-pf-10" messages in log under Linux.</a> | ||
57 | <li><a href= "#3.5">3.5 - Password authentication doesn't work (eg on Slackware 7.0 or Red Hat Linux 6.x)</a> | ||
58 | <li><a href= "#3.6">3.6 - Configure or sshd(8) complain about lack of RSA support</a> | ||
59 | <li><a href= "#3.7">3.7 - "scp: command not found" errors</a> | ||
60 | <li><a href= "#3.8">3.8 - Unable to read passphrase</a> | ||
61 | <li><a href= "#3.9">3.9 - 'configure' missing or make fails</a> | ||
62 | <li><a href= "#3.10">3.10 - Hangs when exiting ssh</a> | ||
63 | <li><a href= "#3.11">3.11 - Why does ssh hang on exit?</a> | ||
64 | <li><a href= "#3.12">3.12 - I upgraded to OpenSSH 3.1 and X11 forwarding stopped working.</a> | ||
65 | <li><a href= "#3.13">3.13 - I upgraded to OpenSSH 3.8 and some X11 programs stopped working.</a> | ||
66 | <li><a href= "#3.14">3.14 - I copied my public key to authorized_keys but public-key authentication still doesn't work.</a> | ||
67 | <li><a href= "#3.15">3.15 - OpenSSH versions and PAM behaviour.</a> | ||
68 | <li><a href= "#3.16">3.16 - Why doesn't "w" or "who" on AIX 5.x show users logged in via ssh?</a> | ||
69 | </ul> | ||
70 | |||
71 | </blockquote> | ||
72 | |||
73 | <hr> | ||
74 | |||
75 | <h2><u><a name= "1.0">1.0 - What Is OpenSSH and Where Can I Get It?</a></u></h2> | ||
76 | |||
77 | <h2><a name= "1.1">1.1 - What is OpenSSH and where can I download it?</a></h2> | ||
78 | |||
79 | OpenSSH provides end-to-end encrypted replacement of applications such as | ||
80 | telnet, rlogin, and ftp. | ||
81 | Unlike these legacy applications, OpenSSH never passes anything | ||
82 | (including username and password) over the wire in unencrypted form, and | ||
83 | provides host authentication, to verify that you really are talking to | ||
84 | the system that you think you are and that no one else can take over | ||
85 | that session. | ||
86 | |||
87 | <p> | ||
88 | The OpenSSH suite includes the | ||
89 | <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=ssh&sektion=1">ssh(1)</a> | ||
90 | program which replaces rlogin and telnet, and | ||
91 | <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=scp&sektion=1">scp(1)</a> | ||
92 | which replaces | ||
93 | <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=rcp&sektion=1">rcp(1)</a> and | ||
94 | <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=ftp&sektion=1">ftp(1)</a>. | ||
95 | OpenSSH has also added | ||
96 | <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=sftp&sektion=1">sftp(1)</a> and | ||
97 | <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=sftp-server&sektion=8">sftp-server(8)</a> | ||
98 | which implement an easier solution for file-transfer. This is based upon the | ||
99 | <a href="http://www.openssh.com/txt/draft-ietf-secsh-filexfer-02.txt">secsh-filexfer</a> IETF draft. | ||
100 | |||
101 | |||
102 | <p><strong>OpenSSH consists of a number of programs.</strong> | ||
103 | |||
104 | <ul> | ||
105 | <li><a href="http://www.openbsd.org/cgi-bin/man.cgi?query=sshd&sektion=8">sshd(8)</a> - Server program run on the server machine. This listens for connections from client machines, and whenever it receives a connection, it performs authentication and starts serving the client. | ||
106 | Its behaviour is controlled by the config file <i><a | ||
107 | href="http://www.openbsd.org/cgi-bin/man.cgi?query=sshd_config&sektion=5"> | ||
108 | sshd_config(5)</a></i>. | ||
109 | <li><a href="http://www.openbsd.org/cgi-bin/man.cgi?query=ssh&sektion=1">ssh(1)</a> - This is the client program used to log into another machine or to execute commands on the other machine. <i>slogin</i> is another name for this program. | ||
110 | Its behaviour is controlled by the global config file <i><a | ||
111 | href="http://www.openbsd.org/cgi-bin/man.cgi?query=ssh_config&sektion=5"> | ||
112 | ssh_config(5)</a></i> and individual users' <i>$HOME/.ssh/config</i> files. | ||
113 | <li><a href="http://www.openbsd.org/cgi-bin/man.cgi?query=scp&sektion=1">scp(1)</a> - Securely copies files from one machine to another. | ||
114 | <li><a href="http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-keygen&sektion=1">ssh-keygen(1)</a> - Used to create Pubkey Authentication (RSA or DSA) keys (host keys and user authentication keys). | ||
115 | <li><a href="http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-agent&sektion=1">ssh-agent(1)</a> - Authentication agent. This can be used to hold RSA keys for authentication. | ||
116 | <li><a href="http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-add&sektion=1">ssh-add(1)</a> - Used to register new keys with the agent. | ||
117 | <li><a href="http://www.openbsd.org/cgi-bin/man.cgi?query=sftp-server&sektion=8">sftp-server(8)</a> - SFTP server subsystem. | ||
118 | <li><a href="http://www.openbsd.org/cgi-bin/man.cgi?query=sftp&sektion=1">sftp(1)</a> - Secure file transfer program. | ||
119 | <li><a href="http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-keyscan&sektion=1">ssh-keyscan(1)</a> - gather ssh public keys. | ||
120 | <li><a href="http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-keysign&sektion=8">ssh-keysign(8)</a> - ssh helper program for hostbased authentication. | ||
121 | </ul> | ||
122 | |||
123 | <h3>Downloading</h3> | ||
124 | |||
125 | <p> | ||
126 | The most recent version of OpenSSH is included with the current | ||
127 | distribution of <a href="http://www.openbsd.org/">OpenBSD</a>, and | ||
128 | installed as part of a basic install. | ||
129 | |||
130 | <p> | ||
131 | Today, most other operating systems include some version of OpenSSH | ||
132 | (often re-badged or privately labeled), so most users can immediately | ||
133 | use it. | ||
134 | However, sometimes the included versions are quite old, and missing | ||
135 | features of the current release of OpenSSH, and you may wish to install | ||
136 | the current version, or install it on one of the few OSs that lacked it, | ||
137 | and where the OS publisher does not make a modern version available. | ||
138 | You may also wish to use OpenSSH on your embedded application. | ||
139 | |||
140 | <p> | ||
141 | Non-OpenBSD users will want to download, compile and install the | ||
142 | multi-platform <a href="http://www.openssh.com/portable.html">Portable</a> distribution from a | ||
143 | <a href="http://www.openssh.com/portable.html#mirrors">mirror</a> near you. | ||
144 | |||
145 | |||
146 | <h2><a name= "1.2">1.2 - Why should it be used?</a></h2> | ||
147 | |||
148 | <p> | ||
149 | OpenSSH is a suite of tools to help secure your network | ||
150 | connections. Here is a list of features: | ||
151 | |||
152 | |||
153 | <ul> | ||
154 | <li>Strong authentication. Closes several security holes (e.g., IP, routing, and DNS spoofing). | ||
155 | <li>Improved privacy. All communications are automatically and transparently encrypted. | ||
156 | <li>Secure X11 sessions. The program automatically sets DISPLAY on the server machine, and forwards any X11 connections over the secure channel. | ||
157 | <li>Arbitrary TCP/IP ports can be redirected through the encrypted channel in both directions (e.g., for e-cash transactions). | ||
158 | <li>No retraining needed for normal users. | ||
159 | <li>Never trusts the network. Minimal trust on the remote side of the connection. Minimal trust on domain name servers. Pure RSA authentication never trusts anything but the private key. | ||
160 | <li>Client RSA-authenticates the server machine in the beginning of every connection to prevent trojan horses (by routing or DNS spoofing) and man-in-the-middle attacks, and the server RSA-authenticates the client machine before accepting <i>.rhosts</i> or <i>/etc/hosts.equiv</i> authentication (to prevent DNS, routing, or IP-spoofing). | ||
161 | <li>Host authentication key distribution can be centrally by the administration, automatically when the first connection is made to a machine. | ||
162 | <li>Any user can create any number of user authentication RSA keys for his/her own use. | ||
163 | <li>The server program has its own server RSA key which is automatically regenerated every hour. | ||
164 | <li>An authentication agent, running in the user's laptop or local workstation, can be used to hold the user's RSA authentication keys. | ||
165 | <li>The software can be installed and used (with restricted functionality) even without root privileges. | ||
166 | <li>The client is customizable in system-wide and per-user configuration files. | ||
167 | <li>Optional compression of all data with gzip (including forwarded X11 and TCP/IP port data), which may result in significant speedups on slow connections. | ||
168 | <li>Complete replacement for rlogin, rsh, and rcp. | ||
169 | </ul> | ||
170 | |||
171 | <p> | ||
172 | Currently, almost all communications in computer networks are done | ||
173 | without encryption. As a consequence, anyone who has access to any | ||
174 | machine connected to the network can listen in on any communication. | ||
175 | This is being done by hackers, curious administrators, employers, | ||
176 | criminals, industrial spies, and governments. Some networks leak off | ||
177 | enough electromagnetic radiation that data may be captured even from a | ||
178 | distance. | ||
179 | |||
180 | |||
181 | <p> | ||
182 | When you log in, your password goes in the network in plain | ||
183 | text. Thus, any listener can then use your account to do any evil he | ||
184 | likes. Many incidents have been encountered worldwide where crackers | ||
185 | have started programs on workstations without the owner's knowledge | ||
186 | just to listen to the network and collect passwords. Programs for | ||
187 | doing this are available on the Internet, or can be built by a | ||
188 | competent programmer in a few hours. | ||
189 | |||
190 | |||
191 | <p> | ||
192 | Businesses have trade secrets, patent applications in preparation, | ||
193 | pricing information, subcontractor information, client data, personnel | ||
194 | data, financial information, etc. Currently, anyone with access to | ||
195 | the network (any machine on the network) can listen to anything that | ||
196 | goes in the network, without any regard to normal access restrictions. | ||
197 | |||
198 | |||
199 | <p> | ||
200 | Many companies are not aware that information can so easily be | ||
201 | recovered from the network. They trust that their data is safe | ||
202 | since nobody is supposed to know that there is sensitive information | ||
203 | in the network, or because so much other data is transferred in the | ||
204 | network. This is not a safe policy. | ||
205 | |||
206 | |||
207 | <h2><a name= "1.3">1.3 - What operating systems are supported?</a></h2> | ||
208 | |||
209 | <p> | ||
210 | Even though OpenSSH is developed on | ||
211 | <a href="http://www.openbsd.org/">OpenBSD</a> a wide variety of | ||
212 | ports to other operating systems exist. The portable version of OpenSSH | ||
213 | is headed by <a href="mailto:djm@openbsd.org">Damien Miller</a>. | ||
214 | For a quick overview of the portable version of OpenSSH see | ||
215 | <a href="http://www.openssh.com/portable.html">OpenSSH Portable Release</a>. | ||
216 | Currently, the supported operating systems are: | ||
217 | |||
218 | |||
219 | <ul> | ||
220 | <li>OpenBSD | ||
221 | <li>NetBSD | ||
222 | <li>FreeBSD | ||
223 | <li>AIX | ||
224 | <li>HP-UX | ||
225 | <li>IRIX | ||
226 | <li>Linux | ||
227 | <li>NeXT | ||
228 | <li>SCO | ||
229 | <li>SNI/Reliant Unix | ||
230 | <li>Solaris | ||
231 | <li>Digital Unix/Tru64/OSF | ||
232 | <li>Mac OS X | ||
233 | <li>Cygwin | ||
234 | </ul> | ||
235 | |||
236 | <p> | ||
237 | A list of vendors that include OpenSSH in their distributions | ||
238 | is located in the <a href="http://www.openssh.com/users.html">OpenSSH Users page</a>. | ||
239 | |||
240 | <h2><a name= "1.4">1.4 - What about copyrights, usage and patents?</a></h2> | ||
241 | <p> | ||
242 | The OpenSSH developers have tried very hard to keep OpenSSH free of any | ||
243 | patent or copyright problems. To do this, some options had to be | ||
244 | stripped from OpenSSH. Namely support for patented algorithms. | ||
245 | |||
246 | <p> | ||
247 | OpenSSH does not support any patented transport algorithms. In SSH1 mode, | ||
248 | only 3DES and Blowfish are available options. In SSH2 mode, only 3DES, | ||
249 | Blowfish, CAST128, Arcfour and AES can be selected. | ||
250 | The patented IDEA algorithm is not supported. | ||
251 | |||
252 | <p> | ||
253 | OpenSSH provides support for both SSH1 and SSH2 protocols. | ||
254 | |||
255 | <p> | ||
256 | Since the RSA patent has expired, there are no restrictions on the use | ||
257 | of RSA algorithm using software, including OpenBSD. | ||
258 | |||
259 | <h2><a name= "1.5">1.5 - Where should I ask for help?</a></h2> | ||
260 | <p> | ||
261 | There are many places to turn to for help. In addition to the main | ||
262 | <a href="http://www.openssh.com/index.html">OpenSSH website</a>, | ||
263 | there are many mailing lists to try. Before trying any mailing lists, | ||
264 | please search through all mailing list archives to see if your question | ||
265 | has already been answered. The OpenSSH Mailing List has been archived and | ||
266 | put in searchable form and can be found at | ||
267 | <a href="http://marc.info/?l=openssh-unix-dev&r=1&w=2">marc.info</a>. | ||
268 | |||
269 | <p> | ||
270 | For more information on subscribing to OpenSSH related mailing lists, | ||
271 | please see <a href="http://www.openssh.com/list.html">OpenSSH Mailing lists</a>. | ||
272 | |||
273 | <h2><a name= "1.6">1.6 - I have found a bug. Where do I report it?</a></h2> | ||
274 | <p> | ||
275 | Information about submitting bug reports can be found at the OpenSSH | ||
276 | <a href="http://www.openssh.com/report.html">Reporting bugs</a> page. | ||
277 | <p> | ||
278 | If you wish to report a security bug, please contact the private developers | ||
279 | list <<a href="mailto:openssh@openssh.com">openssh@openssh.com</a>>. | ||
280 | |||
281 | <h2><u><a name= "2.0">2.0 - General Questions</a></u></h2> | ||
282 | |||
283 | <h2><a name= "2.1">2.1 - Why does ssh/scp make connections from low-numbered ports.</a></h2> | ||
284 | <p> | ||
285 | The OpenSSH client uses low numbered ports for rhosts and rhosts-rsa | ||
286 | authentication because the server needs to trust the username provided by | ||
287 | the client. To get around this, you can add the below example to your | ||
288 | <i>ssh_config</i> or <i>~/.ssh/config</i> file. | ||
289 | |||
290 | |||
291 | <blockquote> | ||
292 | <table border=0 width="800"> | ||
293 | <tr> | ||
294 | <td nowrap bgcolor="#EEEEEE"> | ||
295 | <b>UsePrivilegedPort no</b> | ||
296 | </td> | ||
297 | </tr> | ||
298 | </table> | ||
299 | </blockquote> | ||
300 | |||
301 | <p> | ||
302 | Or you can specify this option on the command line, using the <b>-o</b> | ||
303 | option to | ||
304 | <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=ssh&sektion=1">ssh(1)</a> command. | ||
305 | |||
306 | <blockquote> | ||
307 | <table border=0 width="800"> | ||
308 | <tr> | ||
309 | <td nowrap bgcolor="#EEEEEE"> | ||
310 | $ <b>ssh -o "UsePrivilegedPort no" host.com</b> | ||
311 | </td> | ||
312 | </tr> | ||
313 | </table> | ||
314 | </blockquote> | ||
315 | |||
316 | <h2><a name= "2.2">2.2 - Why is the ssh client setuid root?</a></h2> | ||
317 | |||
318 | <p> | ||
319 | In conjunction with the previous question, (<a href="#2.1">2.1</a>) | ||
320 | OpenSSH needs root authority to be able to bind to low-numbered ports to | ||
321 | facilitate <i>rhosts authentication</i>. | ||
322 | A privileged port is also required for rhosts-rsa authentication to older | ||
323 | SSH releases. | ||
324 | |||
325 | <p> | ||
326 | Additionally, for both <i>rhosts-rsa authentication</i> (in protocol | ||
327 | version 1) and <i>hostbased authentication</i> (in protocol version 2) | ||
328 | the ssh client needs to access the <i>private host key</i> in order to | ||
329 | authenticate the client machine to the server. | ||
330 | OpenSSH versions prior to 3.3 required the <code>ssh</code> binary to be | ||
331 | setuid root to enable this, and you may safely remove it if you don't | ||
332 | want to use these authentication methods. | ||
333 | |||
334 | <p> | ||
335 | Starting in OpenSSH 3.3, <code>ssh</code> is not setuid by default. <a | ||
336 | href="http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-keysign">ssh-keysign</a>, | ||
337 | is used for access to the private hosts keys, and ssh does not use privileged | ||
338 | source ports by default. If you wish to use a privileged source port, you must | ||
339 | manually set the setuid bit on <code>ssh</code>. | ||
340 | |||
341 | <h2><a name= "2.3">2.3 - Why does SSH 2.3 have problems interoperating with OpenSSH 2.1.1?</a></h2> | ||
342 | |||
343 | <p> | ||
344 | SSH 2.3 and earlier versions contain a flaw in their HMAC implementation. | ||
345 | Their code was not supplying the full data block output from the digest, | ||
346 | and instead always provided 128 bits. For longer digests, this caused | ||
347 | SSH 2.3 to not interoperate with OpenSSH. | ||
348 | |||
349 | <p> | ||
350 | OpenSSH 2.2.0 detects that SSH 2.3 has this flaw. Recent versions of SSH | ||
351 | will have this bug fixed. Or you can add the following to | ||
352 | SSH 2.3 <i>sshd2_config</i>. | ||
353 | |||
354 | |||
355 | <blockquote> | ||
356 | <table border=0 width="800"> | ||
357 | <tr> | ||
358 | <td nowrap bgcolor="#EEEEEE"> | ||
359 | <b>Mac hmac-md5</b> | ||
360 | </td> | ||
361 | </tr> | ||
362 | </table> | ||
363 | </blockquote> | ||
364 | |||
365 | <h2><a name= "2.4">2.4 - Why does OpenSSH print: Dispatch protocol error: type 20</a></h2> | ||
366 | |||
367 | <p> | ||
368 | Problems in interoperation have been seen because older versions of | ||
369 | OpenSSH did not support session rekeying. However the commercial SSH 2.3 | ||
370 | tries to negotiate this feature, and you might experience connection | ||
371 | freezes or see the error message "<b>Dispatch protocol error: | ||
372 | type 20 </b>". | ||
373 | To solve this problem, either upgrade to a recent OpenSSH release or | ||
374 | disable rekeying by adding the following to your commercial SSH 2.3's | ||
375 | <i>ssh2_config</i> or <i>sshd2_config</i>. | ||
376 | |||
377 | |||
378 | <blockquote> | ||
379 | <table border=0 width="800"> | ||
380 | <tr> | ||
381 | <td nowrap bgcolor="#EEEEEE"> | ||
382 | <b>RekeyIntervalSeconds 0</b> | ||
383 | </td> | ||
384 | </tr> | ||
385 | </table> | ||
386 | </blockquote> | ||
387 | |||
388 | <h2><a name= "2.5">2.5 - Old versions of commercial SSH encrypt host keys with IDEA.</a></h2> | ||
389 | |||
390 | <p> | ||
391 | The old versions of SSH used a patented algorithm to encrypt their | ||
392 | <i>/etc/ssh/ssh_host_key</i>. This problem will manifest as | ||
393 | <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=sshd&sektion=8">sshd(8)</a> | ||
394 | not being able to read its host key. To solve this, use the command below | ||
395 | to convert your ssh_host_key to use 3DES. | ||
396 | <b>NOTE:</b> Use the | ||
397 | <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-keygen&sektion=1">ssh-keygen(1)</a> | ||
398 | program from the Commercial SSH product, *NOT* OpenSSH for the example | ||
399 | below. | ||
400 | |||
401 | |||
402 | <blockquote> | ||
403 | <table border=0 width="800"> | ||
404 | <tr> | ||
405 | <td nowrap bgcolor="#EEEEEE"> | ||
406 | # <b>ssh-keygen -u -f /etc/ssh/ssh_host_key</b> | ||
407 | </td> | ||
408 | </tr> | ||
409 | </table> | ||
410 | </blockquote> | ||
411 | |||
412 | <h2><a name= "2.6">2.6 - What are these warning messages about key lengths</a></h2> | ||
413 | |||
414 | <p> | ||
415 | Commercial SSH's | ||
416 | <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=ssh-keygen&sektion=1">ssh-keygen(1)</a> | ||
417 | program contained a bug which caused it to occasionally generate Pubkey | ||
418 | Authentication (RSA or DSA) keys which had their Most Significant Bit | ||
419 | (MSB) unset. Such keys were advertised as being full-length, but are | ||
420 | actually, half the time, smaller than advertised. | ||
421 | |||
422 | <p> | ||
423 | OpenSSH will print warning messages when it encounters such keys. To rid | ||
424 | yourself of these message, edit your <i>known_hosts</i> files and replace the | ||
425 | incorrect key length (usually "1024") with the correct key length | ||
426 | (usually "1023"). | ||
427 | |||
428 | <h2><a name= "2.7">2.7 - X11 and/or agent forwarding does not work.</a></h2> | ||
429 | |||
430 | <p> | ||
431 | Check your <i>ssh_config</i> and <i>sshd_config</i>. The default | ||
432 | configuration files disable authentication agent and X11 forwarding. To | ||
433 | enable it, put the line below in <i>sshd_config</i>: | ||
434 | |||
435 | <blockquote> | ||
436 | <table border=0 width="800"> | ||
437 | <tr> | ||
438 | <td nowrap bgcolor="#EEEEEE"> | ||
439 | <b>X11Forwarding yes</b> | ||
440 | </td> | ||
441 | </tr> | ||
442 | </table> | ||
443 | </blockquote> | ||
444 | |||
445 | <p> | ||
446 | and put the following lines in <i>ssh_config</i>: | ||
447 | |||
448 | <blockquote> | ||
449 | <table border=0 width="800"> | ||
450 | <tr> | ||
451 | <td nowrap bgcolor="#EEEEEE"> | ||
452 | <b>ForwardAgent yes</b><br> | ||
453 | <b>ForwardX11 yes</b> | ||
454 | </td> | ||
455 | </tr> | ||
456 | </table> | ||
457 | </blockquote> | ||
458 | |||
459 | <p> | ||
460 | X11 forwarding requires a working <a | ||
461 | href="http://www.openbsd.org/cgi-bin/man.cgi?query=xauth&sektion=1" | ||
462 | >xauth(1)</a> binary. On OpenBSD this is in the <i>xbase</i> file | ||
463 | set but will probably be different on other platforms. For OpenSSH | ||
464 | Portable, xauth must be either found at configure time or specified | ||
465 | via <b>XAuthLocation</b> in sshd_config(5) and ssh_config(5). | ||
466 | |||
467 | <p> | ||
468 | Note on agent interoperability: There are two different and | ||
469 | incompatible agent forwarding mechanisms within the SSH2 protocol. | ||
470 | OpenSSH has always used an extension of the original SSH1 agent | ||
471 | requests, however some commercial products use a different, non-free | ||
472 | agent forwarding protocol. This means that agent forwarding cannot | ||
473 | be used between OpenSSH and those products. | ||
474 | |||
475 | <p> | ||
476 | <b>NOTE:</b> For users of Linux Mandrake 7.2, Mandrake modifies the | ||
477 | <i>XAUTHORITY</i> environment variable in <i>/etc/skel/.bashrc</i>, | ||
478 | and thus any bash user's home directory. This variable is set by OpenSSH | ||
479 | and for either of the above options to work, you need to comment out | ||
480 | the line: | ||
481 | |||
482 | |||
483 | <blockquote> | ||
484 | <table border=0 width="800"> | ||
485 | <tr> | ||
486 | <td nowrap bgcolor="#EEEEEE"> | ||
487 | <b># export XAUTHORITY=$HOME/.Xauthority</b> | ||
488 | </td> | ||
489 | </tr> | ||
490 | </table> | ||
491 | </blockquote> | ||
492 | |||
493 | <h2><a name= "2.8">2.8 - After upgrading OpenSSH I lost SSH2 support.</a></h2> | ||
494 | |||
495 | <p> | ||
496 | Between versions changes can be made to <i>sshd_config</i> or | ||
497 | <i>ssh_config</i>. You should always check on these changes when upgrading | ||
498 | versions of OpenSSH. After OpenSSH Version 2.3.0 you need to add the | ||
499 | following to your <i>sshd_config</i>: | ||
500 | |||
501 | |||
502 | <blockquote> | ||
503 | <table border=0 width="800"> | ||
504 | <tr> | ||
505 | <td nowrap bgcolor="#EEEEEE"> | ||
506 | <b>HostKey /etc/ssh_host_dsa_key</b><br> | ||
507 | <b>HostKey /etc/ssh_host_rsa_key</b> | ||
508 | </td> | ||
509 | </tr> | ||
510 | </table> | ||
511 | </blockquote> | ||
512 | |||
513 | <h2><a name= "2.9">2.9 - sftp/scp fails at connection, but ssh is OK.</a></h2> | ||
514 | |||
515 | <p> | ||
516 | sftp and/or scp may fail at connection time if you have shell | ||
517 | initialization (.profile, .bashrc, .cshrc, etc) which produces output | ||
518 | for non-interactive sessions. This output confuses the sftp/scp client. | ||
519 | You can verify if your shell is doing this by executing: | ||
520 | |||
521 | <blockquote> | ||
522 | <table border=0 width="800"> | ||
523 | <tr> | ||
524 | <td nowrap bgcolor="#EEEEEE"> | ||
525 | <b>ssh yourhost /usr/bin/true</b> | ||
526 | </td> | ||
527 | </tr> | ||
528 | </table> | ||
529 | </blockquote> | ||
530 | |||
531 | <p> | ||
532 | If the above command produces any output, then you need to modify your | ||
533 | shell initialization. | ||
534 | |||
535 | <h2><a name= "2.10">2.10 - Will you add [foo] to scp?</a></h2> | ||
536 | |||
537 | <p> | ||
538 | Short Answer: no. | ||
539 | |||
540 | <p> | ||
541 | Long Answer: scp is not standardized. The closest thing it has to a | ||
542 | specification is "what rcp does". Since the same command is used on both ends | ||
543 | of the connection, adding features or options risks breaking interoperability with other | ||
544 | implementations. | ||
545 | |||
546 | <p> | ||
547 | New features are more likely in sftp, since the protocol is standardized | ||
548 | (well, a <a href="http://www.ietf.org/html.charters/OLD/secsh-charter.html"> | ||
549 | draft standard</a>), extensible, and the client and server are decoupled. | ||
550 | |||
551 | <h2><a name= "2.11">2.11 - How do I use port forwarding?</a></h2> | ||
552 | |||
553 | <p> | ||
554 | If the remote server is running sshd(8), it may be possible to | ||
555 | ``tunnel'' certain services via ssh. This may be desirable, for | ||
556 | example, to encrypt POP or SMTP connections, even though the software | ||
557 | does not directly support encrypted communications. Tunnelling uses | ||
558 | port forwarding to create a connection between the client and server. | ||
559 | The client software must be able to specify a non-standard port to | ||
560 | connect to for this to work. | ||
561 | |||
562 | <p> | ||
563 | The idea is that the user connects to the remote host using ssh, | ||
564 | and specifies which port on the client's machine should be used to | ||
565 | forward connections to the remote server. After that it is possible | ||
566 | to start the service which is to be encrypted (e.g. fetchmail, irc) | ||
567 | on the client machine, specifying the same local port passed to | ||
568 | ssh, and the connection will be tunnelled through ssh. By default, | ||
569 | the system running the forward will only accept connections from | ||
570 | itself. | ||
571 | |||
572 | <p> | ||
573 | The options most relevant to tunnelling are the -L and -R options, | ||
574 | which allow the user to forward connections, the -D option, which | ||
575 | permits dynamic port forwarding, the -g option, which permits other | ||
576 | hosts to use port forwards, and the -f option, which instructs ssh | ||
577 | to put itself in the background after authentication. See the <a | ||
578 | href="http://www.openbsd.org/cgi-bin/man.cgi?query=ssh&sektion=1" | ||
579 | >ssh(1)</a> man page for further details. | ||
580 | |||
581 | <p> | ||
582 | This is an example of tunnelling an IRC session from client machine | ||
583 | ``127.0.0.1'' (localhost) to remote server ``server.example.com'': | ||
584 | |||
585 | <blockquote> | ||
586 | <table border=0 width="800"> | ||
587 | <tr> | ||
588 | <td nowrap bgcolor="#EEEEEE"> | ||
589 | <b>ssh -f -L 1234:server.example.com:6667 server.example.com sleep 10<br> | ||
590 | irc -c '#users' -p 1234 pinky 127.0.0.1</b> | ||
591 | </td> | ||
592 | </tr> | ||
593 | </table> | ||
594 | </blockquote> | ||
595 | |||
596 | <p> | ||
597 | This tunnels a connection to IRC server server.example.com, joining | ||
598 | channel ``#users'', using the nickname ``pinky''. The local port used | ||
599 | in this example is 1234. It does not matter which port is used, as | ||
600 | long as it's greater than 1023 (remember, only root can open sockets on | ||
601 | privileged ports) and doesn't conflict with any ports already in use. | ||
602 | The connection is forwarded to port 6667 on the remote server, since | ||
603 | that's the standard port for IRC services. | ||
604 | |||
605 | <p> | ||
606 | The remote command ``sleep 10'' was specified to allow an amount | ||
607 | of time (10 seconds, in the example) to start the service which is to | ||
608 | be tunnelled. If no connections are made within the time specified, | ||
609 | ssh will exit. If more time is required, the sleep(1) value can be | ||
610 | increased appropriately or, alternatively, the example above could | ||
611 | be added as a function to the user's shell. See ksh(1) and csh(1) | ||
612 | for more details about user-defined functions. | ||
613 | |||
614 | <p> | ||
615 | ssh also has an -N option, convenient for use with port forwarding: | ||
616 | if -N is specified, it is not necessary to specify a remote command | ||
617 | (``sleep 10'' in the example above). However, use of this option | ||
618 | causes ssh to wait around for ever (as opposed to exiting after a | ||
619 | remote command has completed), and the user must take care to manually | ||
620 | kill(1) the process afterwards. | ||
621 | |||
622 | <h2><a name= "2.12">2.12 - My ssh connection freezes or drops out after N minutes of inactivity.</a></h2> | ||
623 | |||
624 | <p> | ||
625 | This is usually the result of a packet filter or NAT device | ||
626 | timing out your TCP connection due to inactivity. You can enable | ||
627 | <b>ClientAliveInterval</b> in the server's <i><a | ||
628 | href="http://www.openbsd.org/cgi-bin/man.cgi?query=sshd_config&sektion=5"> | ||
629 | sshd_config</a></i>, or enable <b>ServerAliveInterval</b> in the | ||
630 | client's <i><a | ||
631 | href="http://www.openbsd.org/cgi-bin/man.cgi?query=ssh_config&sektion=5"> | ||
632 | ssh_config</a></i> (the latter is available in OpenSSH 3.8 and newer). | ||
633 | |||
634 | <p> | ||
635 | Enabling either option and setting the interval for less than the time | ||
636 | it takes to time out your session will ensure that the connection is | ||
637 | kept "fresh" in the device's connection table. | ||
638 | |||
639 | <h2><a name= "2.13">2.13 - How do I use scp to copy a file with a colon in it?</a></h2> | ||
640 | |||
641 | <b><a | ||
642 | href="http://www.openbsd.org/cgi-bin/man.cgi?query=scp&sektion=1"> | ||
643 | scp</a></b> will interpret the component before the colon to be a remote | ||
644 | server name and attempt to connect to it. To prevent this, refer to | ||
645 | the file by a relative or absolute path, eg: | ||
646 | |||
647 | <blockquote> | ||
648 | <table border=0 width="800"> | ||
649 | <tr> | ||
650 | <td nowrap bgcolor="#EEEEEE"> | ||
651 | $ scp ./source:file sshserver: | ||
652 | </td> | ||
653 | </tr> | ||
654 | </table> | ||
655 | </blockquote> | ||
656 | |||
657 | <h2><a name= "2.14">2.14 - Why does OpenSSH report its version to clients?</a></h2> | ||
658 | |||
659 | <p> | ||
660 | OpenSSH, like most SSH implementations, reports its name and version to clients | ||
661 | when they connect, e.g. | ||
662 | </p> | ||
663 | |||
664 | <blockquote> | ||
665 | SSH-2.0-OpenSSH_3.9 | ||
666 | </blockquote> | ||
667 | |||
668 | <p> | ||
669 | This information is used by clients and servers to enable protocol | ||
670 | compatibility tweaks to work around changed, buggy or missing features in | ||
671 | the implementation they are talking to. This protocol feature checking is | ||
672 | still required at present because versions with incompatibilities are still | ||
673 | in wide use. | ||
674 | </p> | ||
675 | |||
676 | <h2><u><a name= "3.0">3.0 - Portable OpenSSH Questions</a></u></h2> | ||
677 | |||
678 | <h2><a name= "3.1">3.1 - Spurious PAM authentication messages in logfiles.</a></h2> | ||
679 | |||
680 | <p> | ||
681 | The portable version of OpenSSH will generate spurious authentication | ||
682 | failures at every login, similar to: | ||
683 | |||
684 | |||
685 | <blockquote> | ||
686 | <table border=0 width="800"> | ||
687 | <tr> | ||
688 | <td nowrap bgcolor="#EEEEEE"> | ||
689 | "<b>authentication failure; (uid=0) -> root for sshd service</b>" | ||
690 | </td> | ||
691 | </tr> | ||
692 | </table> | ||
693 | </blockquote> | ||
694 | |||
695 | <p> | ||
696 | These are generated because OpenSSH first tries to determine whether a | ||
697 | user needs authentication to login (e.g. empty password). Unfortunately | ||
698 | PAM likes to log all authentication events, this one included. | ||
699 | |||
700 | <p> | ||
701 | If it annoys you too much, set "<b>PermitEmptyPasswords no</b>" | ||
702 | in <i>sshd_config</i>. This will quiet the error message at the expense | ||
703 | of disabling logins to accounts with no password set. | ||
704 | This is the default if you use the supplied <i>sshd_config</i> file. | ||
705 | |||
706 | <h2><a name= "3.2">3.2 - Empty passwords not allowed with PAM authentication.</a></h2> | ||
707 | |||
708 | <p> | ||
709 | To enable empty passwords with a version of OpenSSH built with PAM you | ||
710 | must add the flag nullok to the end of the password checking module | ||
711 | in the <i>/etc/pam.d/sshd</i> file. For example: | ||
712 | |||
713 | <blockquote> | ||
714 | <table border=0 width="800"> | ||
715 | <tr> | ||
716 | <td nowrap bgcolor="#EEEEEE"> | ||
717 | auth required/lib/security/pam_unix.so shadow nodelay nullok | ||
718 | </td> | ||
719 | </tr> | ||
720 | </table> | ||
721 | </blockquote> | ||
722 | |||
723 | <p> | ||
724 | This must be done in addition to setting "<b>PermitEmptyPasswords | ||
725 | yes</b>" in the <i>sshd_config</i> file. | ||
726 | |||
727 | <p> | ||
728 | There is one caveat when using empty passwords with PAM authentication: | ||
729 | PAM will allow any password when authenticating an account with an empty | ||
730 | password. This breaks the check that | ||
731 | <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=sshd&sektion=8">sshd(8)</a> | ||
732 | uses to determine whether an account has no password set and grant | ||
733 | users access to the account regardless of the policy specified by | ||
734 | <b>PermitEmptyPasswords</b>. For this reason, it is recommended that you | ||
735 | do not add the <b>nullok</b> directive to your PAM configuration file | ||
736 | unless you specifically wish to allow empty passwords. | ||
737 | |||
738 | |||
739 | <h2><a name= "3.3">3.3 - ssh(1) takes a long time to connect or log | ||
740 | in</a></h2> | ||
741 | |||
742 | <p> | ||
743 | Large delays (more than 10 seconds) are typically caused by a problem with | ||
744 | name resolution: | ||
745 | <ul> | ||
746 | <li>Some versions of glibc (notably glibc 2.1 shipped with Red Hat 6.1) | ||
747 | can take a long time to resolve "IPv6 or IPv4" addresses from domain | ||
748 | names. This can be worked around with by specifying <b>AddressFamily | ||
749 | inet</b> option in <i>ssh_config</i>.</li> | ||
750 | |||
751 | <li>There may be a DNS lookup problem, either at the client or server. | ||
752 | You can use the <code>nslookup</code> command to check this on both client | ||
753 | and server by looking up the other end's name and IP address. In | ||
754 | addition, on the server look up the name returned by the client's | ||
755 | IP-name lookup. You can disable most of the server-side lookups by | ||
756 | setting <b>UseDNS no</b> in <i>sshd_config</i>.</li> | ||
757 | </ul> | ||
758 | |||
759 | <p> | ||
760 | Delays less than 10 seconds can have other causes. | ||
761 | |||
762 | <ul> | ||
763 | |||
764 | <li>OpenSSH releases prior to 3.8 had an <i>moduli</i> file with | ||
765 | moduli that were just smaller than what sshd would look for, and | ||
766 | as a result, sshd would end up using moduli significantly larger | ||
767 | than requested, which resulted in a speed penalty. Replacing the | ||
768 | <i>moduli</i> file will resolve this (note that in most cases this | ||
769 | file will not be replaced during an upgrade and must be replaced | ||
770 | manually).</li> | ||
771 | |||
772 | <li>OpenSSH releases prior to 3.8 had a flaw in <code>ssh</code> that | ||
773 | would cause it to request moduli larger than intended (which when | ||
774 | combined with the above resulted in significant slowdowns). | ||
775 | Upgrading the client to 3.8 or higher will resolve this issue.</li> | ||
776 | |||
777 | <li>If either the client or server lack a kernel-based random number | ||
778 | device (eg Solaris < 9, AIX < 5.2, HP-UX < 11.11) and no | ||
779 | substitute is available (eg <a href= | ||
780 | "ftp://ftp.ayamura.org/pub/prngd/">prngd</a>) it's possible that | ||
781 | one of the programs called by <code>ssh-rand-helper</code> to | ||
782 | generate entropy is hanging. This can be investigated by running | ||
783 | it in debug mode: | ||
784 | |||
785 | <blockquote> | ||
786 | <table border=0 width="800"> | ||
787 | <tr> | ||
788 | <td nowrap bgcolor="#EEEEEE"> | ||
789 | /usr/local/libexec/ssh-rand-helper -vvv | ||
790 | </td> | ||
791 | </tr> | ||
792 | </table> | ||
793 | </blockquote> | ||
794 | |||
795 | Any significant delays should be investigated and rectified, or the | ||
796 | corresponding commands should be removed from <i>ssh_prng_cmds</i>. | ||
797 | </li> | ||
798 | |||
799 | </ul> | ||
800 | |||
801 | <h3>How slow is "slow"?</h3> | ||
802 | Under normal conditions, the speed of SSH logins is dependant on | ||
803 | CPU speed of client and server. For comparison the following are | ||
804 | typical connect times for <code>time ssh localhost true</code> | ||
805 | with a 1024-bit RSA key on otherwise unloaded hosts. OpenSSH and | ||
806 | OpenSSL were compiled with gcc 3.3.x. | ||
807 | |||
808 | <p> | ||
809 | <table> | ||
810 | <tr><th>CPU</th><th>Time (SSHv1)<a href="#3.3fn1">[1]</a></th> | ||
811 | <th>Time (SSHv2)</th></tr> | ||
812 | <tr><td>170MHz SPARC/sun4m</td><td>0.74 sec</td><td>1.25 sec</td></tr> | ||
813 | <tr><td>236MHz HPPA/8200<a href="#3.3fn2">[2]</a></td><td>0.44 sec</td> | ||
814 | <td>0.79 sec</td></tr> | ||
815 | <tr><td>375MHz PowerPC/604e</td><td>0.38 sec</td><td>0.51 sec</td></tr> | ||
816 | <tr><td>933MHz VIA Ezra</td><td>0.34 sec</td><td>0.44 sec</td></tr> | ||
817 | <tr><td>2.1GHz Athlon XP 2600+</td><td>0.14 sec</td><td>0.22 sec</td></tr> | ||
818 | </table> | ||
819 | |||
820 | <br> | ||
821 | |||
822 | <a name="3.3fn1">[1]</a> The SSHv1 protocol is faster but is | ||
823 | cryptographically weaker than SSHv2.<br> | ||
824 | |||
825 | <a name="3.3fn2">[2]</a> At the time of writing, gcc generates | ||
826 | relatively slow code on HPPA for RSA and Diffie-Hellman operations | ||
827 | (see <a href= "http://gcc.gnu.org/bugzilla/show_bug.cgi?id=7625">gcc | ||
828 | bug #7625</a> and <a | ||
829 | href="http://marc.info/?l=openssh-unix-dev&m=102646106016694"> | ||
830 | discussion on openssh-unix-dev</a>). | ||
831 | |||
832 | <h2><a name= "3.4">3.4 - "Can't locate module net-pf-10" messages in log under Linux.</a></h2> | ||
833 | |||
834 | <p> | ||
835 | The Linux kernel is looking (via modprobe) for protocol family 10 (IPv6). | ||
836 | Either load the appropriate kernel module, enter the correct alias in | ||
837 | <i>/etc/modules.conf</i> or disable IPv6 in <i>/etc/modules.conf</i>. | ||
838 | |||
839 | |||
840 | <p> | ||
841 | For some silly reason <i>/etc/modules.conf</i> may also be named | ||
842 | <i>/etc/conf.modules</i>. | ||
843 | |||
844 | |||
845 | <h2><a name= "3.5">3.5 - Password authentication doesn't work (eg on Slackware 7.0 or Red Hat 6.x)</a></h2> | ||
846 | |||
847 | <p> | ||
848 | If the password is correct password the login is still denied, the | ||
849 | usual cause is that the system is configured to use MD5-type passwords | ||
850 | but the | ||
851 | <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=crypt&sektion=3" | ||
852 | >crypt(3)</a> function used by sshd doesn't understand them. | ||
853 | |||
854 | <p> | ||
855 | Affected accounts will have password strings in <i>/etc/passwd</i> | ||
856 | or <i>/etc/shadow</i> that start with <b>$1$</b>. | ||
857 | If password authentication fails for new accounts or accounts with | ||
858 | recently changed passwords, but works for old accounts, this is the | ||
859 | likely culprit. | ||
860 | |||
861 | <p> | ||
862 | The underlying cause is that some versions of OpenSSL have a crypt(3) | ||
863 | function that does not understand MD5 passwords, and the link order of | ||
864 | sshd means that OpenSSL's crypt(3) is used instead of the system's. | ||
865 | OpensSSH's configure attempts to correct for this but is not always | ||
866 | successful. | ||
867 | |||
868 | <p> | ||
869 | There are several possible solutions: | ||
870 | |||
871 | <ul> | ||
872 | <li> | ||
873 | <p> | ||
874 | Enable sshd's built-in support for MD5 passwords at build time. | ||
875 | |||
876 | <blockquote> | ||
877 | <table border=0 width="800"> | ||
878 | <tr> | ||
879 | <td nowrap bgcolor="#EEEEEE"> | ||
880 | ./configure --with-md5-passwords [options] | ||
881 | </td> | ||
882 | </tr> | ||
883 | </table> | ||
884 | </blockquote> | ||
885 | |||
886 | This is safe even if you have both types of encryption as sshd will | ||
887 | select the correct algorithm for each account automatically. | ||
888 | |||
889 | <li> | ||
890 | <p> | ||
891 | If your system has a separate libcrypt library (eg Slackware 7) then you | ||
892 | can manually add -lcrypt to the LIBS list so it's used instead of | ||
893 | OpenSSL's: | ||
894 | |||
895 | <blockquote> | ||
896 | <table border=0 width="800"> | ||
897 | <tr> | ||
898 | <td nowrap bgcolor="#EEEEEE"> | ||
899 | LIBS=-lcrypt ./configure [options] | ||
900 | </td> | ||
901 | </tr> | ||
902 | </table> | ||
903 | </blockquote> | ||
904 | |||
905 | <li> | ||
906 | <p> | ||
907 | If your platforms supports PAM, you may configure sshd to use it | ||
908 | (see <a href= "#3.15" >section 3.15</a>). This will mean that sshd will | ||
909 | not verify passwords itself but will defer to the configured PAM modules. | ||
910 | </ul> | ||
911 | |||
912 | <h2><a name= "3.6">3.6 - Configure or sshd(8) complain about lack of RSA or DSA support</a></h2> | ||
913 | |||
914 | <p> | ||
915 | Ensure that your OpenSSL libraries have been built to include RSA or DSA | ||
916 | support either internally or through RSAref. | ||
917 | |||
918 | |||
919 | <h2><a name= "3.7">3.7 - "scp: command not found" errors</a></h2> | ||
920 | |||
921 | <p> | ||
922 | <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=scp&sektion=1">scp(1)</a> | ||
923 | must be in the default PATH on both the client and the server. You may | ||
924 | need to use the <b>--with-default-path</b> option to specify a custom | ||
925 | path to search on the server. This option replaces the default path, | ||
926 | so you need to specify all the current directories on your path as well | ||
927 | as where you have installed scp. For example: | ||
928 | |||
929 | <blockquote> | ||
930 | <table border=0 width="800"> | ||
931 | <tr> | ||
932 | <td nowrap bgcolor="#EEEEEE"> | ||
933 | $ <b>./configure --with-default-path=/bin:/usr/bin:/usr/local/bin:/path/to/scp</b> | ||
934 | </td> | ||
935 | </tr> | ||
936 | </table> | ||
937 | </blockquote> | ||
938 | |||
939 | <p> | ||
940 | Note that configuration by the server's admin will take precedence over the | ||
941 | setting of <b>--with-default-path</b>. This includes resetting PATH in | ||
942 | <i>/etc/profile</i>, PATH in <i>/etc/environment</i> on AIX, or (for 3.7p1 and | ||
943 | above) setting PATH or SUPATH in <i>/etc/default/login</i> on Solaris or | ||
944 | Reliant Unix. | ||
945 | |||
946 | <h2><a name= "3.8">3.8 - Unable to read passphrase</a></h2> | ||
947 | |||
948 | <p> | ||
949 | Some operating systems set <i>/dev/tty</i> with incorrect modes, causing | ||
950 | the reading of passwords to fail with the following error: | ||
951 | |||
952 | <blockquote> | ||
953 | <table border=0 width="800"> | ||
954 | <tr> | ||
955 | <td nowrap bgcolor="#EEEEEE"> | ||
956 | You have no controlling tty. Cannot read passphrase. | ||
957 | </td> | ||
958 | </tr> | ||
959 | </table> | ||
960 | </blockquote> | ||
961 | |||
962 | <p> | ||
963 | The solution to this is to reset the permissions on <i>/dev/tty</i> | ||
964 | to mode 0666 and report the error as a bug to your OS vendor. | ||
965 | |||
966 | |||
967 | <h2><a name= "3.9">3.9 - 'configure' missing or make fails</a></h2> | ||
968 | |||
969 | <p> | ||
970 | If there is no 'configure' file in the tar.gz file that you downloaded | ||
971 | or make fails with "missing separator" errors, you have probably | ||
972 | downloaded the OpenBSD distribution of OpenSSH and are attempting to | ||
973 | compile it on another platform. Please refer to the information on the | ||
974 | <a href="http://www.openssh.com/portable.html">portable version</a>. | ||
975 | |||
976 | |||
977 | <h2><a name= "3.10">3.10 - Hangs when exiting ssh</a></h2> | ||
978 | |||
979 | <p> | ||
980 | OpenSSH may hang when exiting. This can occur when there is an active | ||
981 | background process. This is known to occur on Linux and HP-UX. | ||
982 | The problem can be verified by doing the following: | ||
983 | |||
984 | <blockquote> | ||
985 | <table border=0 width="800"> | ||
986 | <tr> | ||
987 | <td nowrap bgcolor="#EEEEEE"> | ||
988 | $ <b>sleep 20 & exit</b> | ||
989 | </td> | ||
990 | </tr> | ||
991 | </table> | ||
992 | </blockquote> | ||
993 | |||
994 | Try to use this instead: | ||
995 | <blockquote> | ||
996 | <table border=0 width="800"> | ||
997 | <tr> | ||
998 | <td nowrap bgcolor="#EEEEEE"> | ||
999 | $ <b>sleep 20 < /dev/null > /dev/null 2>&1 &</b> | ||
1000 | </td> | ||
1001 | </tr> | ||
1002 | </table> | ||
1003 | </blockquote> | ||
1004 | |||
1005 | <p> | ||
1006 | A work around for bash users is to place <b>"shopt -s huponexit"</b> | ||
1007 | in either /etc/bashrc or ~/.bashrc. Otherwise, consult your shell's | ||
1008 | man page for an option to enable it to send a HUP signal to active | ||
1009 | jobs when exiting. See <a | ||
1010 | href="http://bugzilla.mindrot.org/show_bug.cgi?id=52">bug #52</a> | ||
1011 | for other workarounds. | ||
1012 | |||
1013 | <h2><a name= "3.11">3.11 - Why does ssh hang on exit?</a></h2> | ||
1014 | |||
1015 | <p> | ||
1016 | When executing | ||
1017 | <blockquote> | ||
1018 | <table border=0 width="800"> | ||
1019 | <tr> | ||
1020 | <td nowrap bgcolor="#EEEEEE"> | ||
1021 | $ <b>ssh host command</b> | ||
1022 | </td> | ||
1023 | </tr> | ||
1024 | </table> | ||
1025 | </blockquote> | ||
1026 | ssh <b>needs</b> to hang, because it needs to wait: | ||
1027 | <ul> | ||
1028 | <li> | ||
1029 | until it can be sure that <code>command</code> does not need | ||
1030 | more input. | ||
1031 | <li> | ||
1032 | until it can be sure that <code>command</code> does not produce | ||
1033 | more output. | ||
1034 | <li> | ||
1035 | until <code>command</code> exits because sshd needs to tell | ||
1036 | the exit status from <code>command</code> to ssh. | ||
1037 | </ul> | ||
1038 | <p> | ||
1039 | |||
1040 | <h2><a name= "3.12">3.12 - I upgraded to OpenSSH 3.1 and X11 | ||
1041 | forwarding stopped working.</a></h2> | ||
1042 | |||
1043 | Starting with OpenSSH 3.1, the sshd x11 forwarding server listens on | ||
1044 | localhost by default; see the sshd <b>X11UseLocalhost</b> option to | ||
1045 | revert to prior behaviour if your older X11 clients do not function | ||
1046 | with this configuration.<p> | ||
1047 | |||
1048 | In general, X11 clients using X11 R6 should work with the default | ||
1049 | setting. Some vendors, including HP, ship X11 clients with R6 | ||
1050 | and R5 libs, so some clients will work, and others will not work. | ||
1051 | This is true for HP-UX 11.X.<p> | ||
1052 | |||
1053 | <h2><a name= "3.13">3.13 - I upgraded to OpenSSH 3.8 and some | ||
1054 | X11 programs stopped working.</a></h2> | ||
1055 | |||
1056 | <p> | ||
1057 | As documented in the <a href="http://www.openssh.com/txt/release-3.8">3.8 release notes</a>, | ||
1058 | <code>ssh</code> will now use untrusted X11 cookies by | ||
1059 | default. The previous behaviour can be restored by setting | ||
1060 | <b>ForwardX11Trusted yes</b> in <i>ssh_config</i>. | ||
1061 | |||
1062 | <p> | ||
1063 | Possible symptoms include:<br> | ||
1064 | <code>BadWindow (invalid Window parameter)<br> | ||
1065 | BadAccess (attempt to access private resource denied)<br> | ||
1066 | X Error of failed request: BadAtom (invalid Atom parameter)<br> | ||
1067 | Major opcode of failed request: 20 (X_GetProperty)<br></code> | ||
1068 | |||
1069 | <h2><a name= "3.14">3.14 - I copied my public key to authorized_keys | ||
1070 | but public-key authentication still doesn't work.</a></h2> | ||
1071 | |||
1072 | <p> | ||
1073 | Typically this is caused by the file permissions on $HOME, $HOME/.ssh or | ||
1074 | $HOME/.ssh/authorized_keys being more permissive than sshd allows by default. | ||
1075 | |||
1076 | <p> | ||
1077 | In this case, it can be solved by executing the following on the server. | ||
1078 | <blockquote> | ||
1079 | <table border=0 width="800"> | ||
1080 | <tr> | ||
1081 | <td nowrap bgcolor="#EEEEEE"> | ||
1082 | $ <b>chmod go-w $HOME $HOME/.ssh</b><br> | ||
1083 | $ <b>chmod 600 $HOME/.ssh/authorized_keys</b><br> | ||
1084 | $ <b>chown `whoami` $HOME/.ssh/authorized_keys</b><br> | ||
1085 | </td> | ||
1086 | </tr> | ||
1087 | </table> | ||
1088 | </blockquote> | ||
1089 | |||
1090 | <p> | ||
1091 | If this is not possible for some reason, an alternative is to set | ||
1092 | <b>StrictModes no</b> in <i>sshd_config</i>, however this is not | ||
1093 | recommended. | ||
1094 | |||
1095 | <h2><a name= "3.15">3.15 - OpenSSH versions and PAM behaviour.</a></h2> | ||
1096 | |||
1097 | Portable OpenSSH has a configure-time option to enable sshd's use of the | ||
1098 | <a href="http://www.opengroup.org/onlinepubs/008329799/">PAM</a> | ||
1099 | (Pluggable Authentication Modules) interface. | ||
1100 | |||
1101 | <blockquote> | ||
1102 | <table border=0 width="800"> | ||
1103 | <tr> | ||
1104 | <td nowrap bgcolor="#EEEEEE"> | ||
1105 | ./configure --with-pam [options] | ||
1106 | </td> | ||
1107 | </tr> | ||
1108 | </table> | ||
1109 | </blockquote> | ||
1110 | |||
1111 | To use PAM at all, this option must be provided at build time. | ||
1112 | The run-time behaviour when PAM is built in varies with the version of | ||
1113 | Portable OpenSSH, and on later versions it must also be enabled by setting | ||
1114 | <b>UsePAM</b> to <b>yes</b> in <i>sshd_config</i>. | ||
1115 | |||
1116 | <p> | ||
1117 | The behaviour of the relevant authentications options when PAM support is built | ||
1118 | in is summarised by the following table. | ||
1119 | |||
1120 | <p> | ||
1121 | <table border="1"> | ||
1122 | <tr> <th>Version</th> <th>UsePAM</th> <th>PasswordAuthentication</th> <th>ChallengeResponseAuthentication</th> </tr> | ||
1123 | <tr> | ||
1124 | <td><=3.6.1p2</td> | ||
1125 | <td>Not applicable</td> | ||
1126 | <td>Uses PAM</td> | ||
1127 | <td>Uses PAM if <b>PAMAuthenticationViaKbdInt</b> is enabled</td> | ||
1128 | </tr> | ||
1129 | <tr> | ||
1130 | <td>3.7p1 - 3.7.1p1</td> | ||
1131 | <td>Defaults to <b>yes</b></td> | ||
1132 | <td>Does not use PAM</td> | ||
1133 | <td>Uses PAM if <b>UsePAM</b> is enabled</td> | ||
1134 | </tr> | ||
1135 | <tr> | ||
1136 | <td>3.7.1p2 - 3.8.1p1</td> | ||
1137 | <td>Defaults to <b>no</b></td> | ||
1138 | <td>Does not use PAM <a href="#3.15fn1">[1]</a></td> | ||
1139 | <td>Uses PAM if <b>UsePAM</b> is enabled</td> | ||
1140 | </tr> | ||
1141 | <tr> | ||
1142 | <td>3.9p1</td> | ||
1143 | <td>Defaults to <b>no</b></td> | ||
1144 | <td>Uses PAM if <b>UsePAM</b> is enabled</td> | ||
1145 | <td>Uses PAM if <b>UsePAM</b> is enabled</td> | ||
1146 | </tr> | ||
1147 | </table> | ||
1148 | <p> | ||
1149 | |||
1150 | <a name= "3.15fn1">[1]</a> Some vendors, notably Redhat/Fedora, have | ||
1151 | backported the PasswordAuthentication from 3.9p1 to their 3.8x based | ||
1152 | packages. If you're using a vendor-supplied package then consult their | ||
1153 | documentation. | ||
1154 | |||
1155 | <p> | ||
1156 | OpenSSH Portable's PAM interface still has problems with a few modules, | ||
1157 | however we hope that this number will reduce in the future. As at the | ||
1158 | 3.9p1 release, the known problems are: | ||
1159 | |||
1160 | <ul> | ||
1161 | <li>Modules relying on module-private data (eg pam_dhkeys, pam_krb5, AFS) | ||
1162 | may fail to correctly establish credentials (bug <a | ||
1163 | href="http://bugzilla.mindrot.org/show_bug.cgi?id=688">#688</a>) when | ||
1164 | authenticating via <b>ChallengeResponseAuthentication</b>. | ||
1165 | <b>PasswordAuthentication</b> with 3.9p1 and above should work. | ||
1166 | </ul> | ||
1167 | |||
1168 | You can also check <a | ||
1169 | href="http://bugzilla.mindrot.org/buglist.cgi?product=Portable+OpenSSH&bug_status=RESOLVED&bug_status=NEW&bug_status=ACCEPTED&component=PAM+support" | ||
1170 | >bugzilla for current PAM issues</a>. | ||
1171 | |||
1172 | <h2><a name= "3.16">3.16 - Why doesn't "w" or "who" on AIX 5.x show users | ||
1173 | logged in via ssh?</a></h2> | ||
1174 | |||
1175 | Between AIX 4.3.3 and AIX 5.x, the format of the wtmp struct changed. This | ||
1176 | means that sshd binaries built on AIX 4.x will not correctly write wtmp | ||
1177 | entries when run on AIX 5.x. This can be fixed by simply recompiling | ||
1178 | sshd on an AIX 5.x system and using that. | ||
1179 | |||
1180 | <hr> | ||
1181 | <a href="http://www.openssh.com/index.html"><img height=24 width=24 src="back.gif" border=0 alt=OpenSSH></a> | ||
1182 | <a href="mailto:www@openbsd.org">www@openbsd.org</a> | ||
1183 | <br> | ||
1184 | <small>$OpenBSD: faq.html,v 1.113 2012/04/21 12:12:22 dtucker Exp $</small> | ||
1185 | |||
1186 | </body> | ||
1187 | </html> | ||
diff --git a/debian/gnome-ssh-askpass.1 b/debian/gnome-ssh-askpass.1 new file mode 100644 index 000000000..b74c410a8 --- /dev/null +++ b/debian/gnome-ssh-askpass.1 | |||
@@ -0,0 +1,51 @@ | |||
1 | .TH GNOME-SSH-ASKPASS 1 | ||
2 | .SH NAME | ||
3 | gnome\-ssh\-askpass \- prompts a user for a passphrase using GNOME | ||
4 | .SH SYNOPSIS | ||
5 | .B gnome\-ssh\-askpass | ||
6 | .SH DESCRIPTION | ||
7 | .B gnome\-ssh\-askpass | ||
8 | is a GNOME-based passphrase dialog for use with OpenSSH. | ||
9 | It is intended to be called by the | ||
10 | .BR ssh\-add (1) | ||
11 | program and not invoked directly. | ||
12 | It allows | ||
13 | .BR ssh\-add (1) | ||
14 | to obtain a passphrase from a user, even if not connected to a terminal | ||
15 | (assuming that an X display is available). | ||
16 | This happens automatically in the case where | ||
17 | .B ssh\-add | ||
18 | is invoked from one's | ||
19 | .B ~/.xsession | ||
20 | or as one of the GNOME startup programs, for example. | ||
21 | .PP | ||
22 | In order to be called automatically by | ||
23 | .BR ssh\-add , | ||
24 | .B gnome\-ssh\-askpass | ||
25 | should be installed as | ||
26 | .IR /usr/bin/ssh\-askpass . | ||
27 | .SH "ENVIRONMENT VARIABLES" | ||
28 | The following environment variables are recognized: | ||
29 | .TP | ||
30 | .I GNOME_SSH_ASKPASS_GRAB_SERVER | ||
31 | Causes | ||
32 | .B gnome\-ssh\-askpass | ||
33 | to grab the X server before asking for a passphrase. | ||
34 | .TP | ||
35 | .I GNOME_SSH_ASKPASS_GRAB_POINTER | ||
36 | Causes | ||
37 | .B gnome\-ssh\-askpass | ||
38 | to grab the mouse pointer using | ||
39 | .IR gdk_pointer_grab () | ||
40 | before asking for a passphrase. | ||
41 | .PP | ||
42 | Regardless of whether either of these environment variables is set, | ||
43 | .B gnome\-ssh\-askpass | ||
44 | will grab the keyboard using | ||
45 | .IR gdk_keyboard_grab (). | ||
46 | .SH AUTHOR | ||
47 | This manual page was written by Colin Watson <cjwatson@debian.org> | ||
48 | for the Debian system (but may be used by others). | ||
49 | It was based on that for | ||
50 | .B x11\-ssh\-askpass | ||
51 | by Philip Hands. | ||
diff --git a/debian/keygen-test/Makefile b/debian/keygen-test/Makefile new file mode 100644 index 000000000..666ed8227 --- /dev/null +++ b/debian/keygen-test/Makefile | |||
@@ -0,0 +1,12 @@ | |||
1 | test: getpid.so | ||
2 | chmod +x keygen-test | ||
3 | ./keygen-test | ||
4 | |||
5 | getpid.o: getpid.c | ||
6 | gcc -fPIC -c $< -o $@ | ||
7 | |||
8 | getpid.so: getpid.o | ||
9 | gcc -shared -o $@ $< | ||
10 | |||
11 | clean: | ||
12 | rm -f getpid.o getpid.so key1 key1.pub key2 key2.pub | ||
diff --git a/debian/keygen-test/getpid.c b/debian/keygen-test/getpid.c new file mode 100644 index 000000000..c9e35b87e --- /dev/null +++ b/debian/keygen-test/getpid.c | |||
@@ -0,0 +1,39 @@ | |||
1 | /* | ||
2 | * Compile: | ||
3 | |||
4 | gcc -fPIC -c getpid.c -o getpid.o | ||
5 | gcc -shared -o getpid.so getpid.o | ||
6 | |||
7 | * Use: | ||
8 | |||
9 | FORCE_PID=1234 LD_PRELOAD=./getpid.so bash | ||
10 | |||
11 | # | ||
12 | # Copyright (C) 2001-2008 Kees Cook | ||
13 | # kees@outflux.net, http://outflux.net/ | ||
14 | # | ||
15 | # This program is free software; you can redistribute it and/or | ||
16 | # modify it under the terms of the GNU General Public License | ||
17 | # as published by the Free Software Foundation; either version 2 | ||
18 | # of the License, or (at your option) any later version. | ||
19 | # | ||
20 | # This program is distributed in the hope that it will be useful, | ||
21 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
22 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
23 | # GNU General Public License for more details. | ||
24 | # | ||
25 | # You should have received a copy of the GNU General Public License | ||
26 | # along with this program; if not, write to the Free Software | ||
27 | # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
28 | # http://www.gnu.org/copyleft/gpl.html | ||
29 | |||
30 | */ | ||
31 | |||
32 | #include <sys/types.h> | ||
33 | #include <unistd.h> | ||
34 | #include <stdlib.h> | ||
35 | |||
36 | pid_t getpid(void) | ||
37 | { | ||
38 | return atoi(getenv("FORCE_PID")); | ||
39 | } | ||
diff --git a/debian/keygen-test/keygen-test b/debian/keygen-test/keygen-test new file mode 100755 index 000000000..2abe815ef --- /dev/null +++ b/debian/keygen-test/keygen-test | |||
@@ -0,0 +1,12 @@ | |||
1 | #! /bin/sh | ||
2 | |||
3 | rm -f key1 key1.pub key2 key2.pub | ||
4 | LD_PRELOAD="$(pwd)/getpid.so" FORCE_PID=1234 \ | ||
5 | ../build-deb/ssh-keygen -N '' -f key1 >/dev/null | ||
6 | LD_PRELOAD="$(pwd)/getpid.so" FORCE_PID=1234 \ | ||
7 | ../build-deb/ssh-keygen -N '' -f key2 >/dev/null | ||
8 | if cmp -s key1 key2; then | ||
9 | echo "Generated two identical keys!" >&2 | ||
10 | exit 1 | ||
11 | fi | ||
12 | exit 0 | ||
diff --git a/debian/openssh-client-udeb.install b/debian/openssh-client-udeb.install new file mode 100644 index 000000000..b3891f02d --- /dev/null +++ b/debian/openssh-client-udeb.install | |||
@@ -0,0 +1,3 @@ | |||
1 | scp usr/bin | ||
2 | sftp usr/bin | ||
3 | ssh usr/bin | ||
diff --git a/debian/openssh-client.apport b/debian/openssh-client.apport new file mode 100644 index 000000000..3dbc8e5e6 --- /dev/null +++ b/debian/openssh-client.apport | |||
@@ -0,0 +1,32 @@ | |||
1 | #!/usr/bin/python | ||
2 | |||
3 | '''apport hook for openssh-client | ||
4 | |||
5 | (c) 2010 Canonical Ltd. | ||
6 | Author: Chuck Short <chuck.short@canonical.com> | ||
7 | |||
8 | This program is free software; you can redistribute it and/or modify it | ||
9 | under the terms of the GNU General Public License as published by the | ||
10 | Free Software Foundation; either version 2 of the License, or (at your | ||
11 | option) any later version. See http://www.gnu.org/copyleft/gpl.html for | ||
12 | the full text of the license. | ||
13 | ''' | ||
14 | |||
15 | from apport.hookutils import * | ||
16 | |||
17 | def add_info(report, ui): | ||
18 | response = ui.yesno("The contents of your /etc/ssh/ssh_config file " | ||
19 | "may help developers diagnose your bug more " | ||
20 | "quickly. However, it may contain sensitive " | ||
21 | "information. Do you want to include it in your " | ||
22 | "bug report?") | ||
23 | |||
24 | if response == None: # user cancelled | ||
25 | raise StopIteration | ||
26 | |||
27 | elif response == True: | ||
28 | attach_conffiles(report, 'openssh-client') | ||
29 | |||
30 | attach_related_packages(report, | ||
31 | ['ssh-askpass', 'libpam-ssh', 'keychain', 'ssh-askpass-gnome']) | ||
32 | report['SSHClientVersion'] = command_output(['/usr/bin/ssh', '-V']) | ||
diff --git a/debian/openssh-client.docs b/debian/openssh-client.docs new file mode 100644 index 000000000..11aa99402 --- /dev/null +++ b/debian/openssh-client.docs | |||
@@ -0,0 +1,5 @@ | |||
1 | OVERVIEW | ||
2 | README | ||
3 | README.dns | ||
4 | README.tun | ||
5 | debian/faq.html | ||
diff --git a/debian/openssh-client.install b/debian/openssh-client.install new file mode 100755 index 000000000..24376514f --- /dev/null +++ b/debian/openssh-client.install | |||
@@ -0,0 +1,34 @@ | |||
1 | #! /usr/bin/dh-exec | ||
2 | |||
3 | etc/ssh/ssh_config | ||
4 | usr/bin/scp | ||
5 | usr/bin/sftp | ||
6 | usr/bin/ssh | ||
7 | usr/bin/ssh-add | ||
8 | usr/bin/ssh-agent | ||
9 | usr/bin/ssh-keygen | ||
10 | usr/bin/ssh-keyscan | ||
11 | usr/lib/openssh/ssh-keysign | ||
12 | usr/lib/openssh/ssh-pkcs11-helper | ||
13 | usr/share/man/man1/scp.1 | ||
14 | usr/share/man/man1/sftp.1 | ||
15 | usr/share/man/man1/ssh-add.1 | ||
16 | usr/share/man/man1/ssh-agent.1 | ||
17 | usr/share/man/man1/ssh-keygen.1 | ||
18 | usr/share/man/man1/ssh-keyscan.1 | ||
19 | usr/share/man/man1/ssh.1 | ||
20 | usr/share/man/man5/ssh_config.5 | ||
21 | usr/share/man/man8/ssh-keysign.8 | ||
22 | usr/share/man/man8/ssh-pkcs11-helper.8 | ||
23 | |||
24 | contrib/ssh-copy-id usr/bin | ||
25 | debian/ssh-argv0 usr/bin | ||
26 | |||
27 | debian/agent-launch usr/lib/openssh | ||
28 | |||
29 | # dh_apport would be neater, but at the time of writing it isn't in unstable | ||
30 | # yet. | ||
31 | debian/openssh-client.apport => usr/share/apport/package-hooks/openssh-client.py | ||
32 | |||
33 | # systemd user unit (only used under sessions) | ||
34 | debian/systemd/ssh-agent.service usr/lib/systemd/user | ||
diff --git a/debian/openssh-client.links b/debian/openssh-client.links new file mode 100644 index 000000000..1d94c74e8 --- /dev/null +++ b/debian/openssh-client.links | |||
@@ -0,0 +1,4 @@ | |||
1 | usr/bin/ssh usr/bin/slogin | ||
2 | usr/share/man/man1/ssh.1 usr/share/man/man1/slogin.1 | ||
3 | # enable systemd user unit for graphical sessions that use systemd | ||
4 | usr/lib/systemd/user/ssh-agent.service usr/lib/systemd/user/graphical-session-pre.target.wants/ssh-agent.service | ||
diff --git a/debian/openssh-client.lintian-overrides b/debian/openssh-client.lintian-overrides new file mode 100644 index 000000000..486567744 --- /dev/null +++ b/debian/openssh-client.lintian-overrides | |||
@@ -0,0 +1 @@ | |||
openssh-client: setuid-binary usr/lib/openssh/ssh-keysign 4755 root/root | |||
diff --git a/debian/openssh-client.maintscript b/debian/openssh-client.maintscript new file mode 100644 index 000000000..e39db9ac5 --- /dev/null +++ b/debian/openssh-client.maintscript | |||
@@ -0,0 +1 @@ | |||
rm_conffile /etc/ssh/moduli 1:7.9p1-8~ | |||
diff --git a/debian/openssh-client.manpages b/debian/openssh-client.manpages new file mode 100644 index 000000000..690bd8a22 --- /dev/null +++ b/debian/openssh-client.manpages | |||
@@ -0,0 +1,2 @@ | |||
1 | contrib/ssh-copy-id.1 | ||
2 | debian/ssh-argv0.1 | ||
diff --git a/debian/openssh-client.postinst b/debian/openssh-client.postinst new file mode 100644 index 000000000..ec0ad2b2b --- /dev/null +++ b/debian/openssh-client.postinst | |||
@@ -0,0 +1,45 @@ | |||
1 | #!/bin/sh | ||
2 | set -e | ||
3 | |||
4 | action="$1" | ||
5 | oldversion="$2" | ||
6 | |||
7 | umask 022 | ||
8 | |||
9 | |||
10 | create_alternatives() { | ||
11 | # Create alternatives for the various r* tools. | ||
12 | # Make sure we don't change existing alternatives that a user might have | ||
13 | # changed, but clean up after some old alternatives that mistakenly pointed | ||
14 | # rlogin and rcp to ssh. | ||
15 | update-alternatives --quiet --remove rlogin /usr/bin/ssh | ||
16 | update-alternatives --quiet --remove rcp /usr/bin/ssh | ||
17 | for cmd in rsh rlogin rcp; do | ||
18 | scmd="s${cmd#r}" | ||
19 | if ! update-alternatives --display "$cmd" 2>/dev/null | \ | ||
20 | grep -q "$scmd"; then | ||
21 | update-alternatives --quiet --install "/usr/bin/$cmd" "$cmd" "/usr/bin/$scmd" 20 \ | ||
22 | --slave "/usr/share/man/man1/$cmd.1.gz" "$cmd.1.gz" "/usr/share/man/man1/$scmd.1.gz" | ||
23 | fi | ||
24 | done | ||
25 | } | ||
26 | |||
27 | set_ssh_agent_permissions() { | ||
28 | if ! getent group ssh >/dev/null; then | ||
29 | addgroup --system --quiet ssh | ||
30 | fi | ||
31 | if ! dpkg-statoverride --list /usr/bin/ssh-agent >/dev/null; then | ||
32 | chgrp ssh /usr/bin/ssh-agent | ||
33 | chmod 2755 /usr/bin/ssh-agent | ||
34 | fi | ||
35 | } | ||
36 | |||
37 | |||
38 | if [ "$action" = configure ]; then | ||
39 | create_alternatives | ||
40 | set_ssh_agent_permissions | ||
41 | fi | ||
42 | |||
43 | #DEBHELPER# | ||
44 | |||
45 | exit 0 | ||
diff --git a/debian/openssh-client.postrm b/debian/openssh-client.postrm new file mode 100644 index 000000000..12fb3671d --- /dev/null +++ b/debian/openssh-client.postrm | |||
@@ -0,0 +1,22 @@ | |||
1 | #!/bin/sh | ||
2 | set -e | ||
3 | |||
4 | #DEBHELPER# | ||
5 | |||
6 | case $1 in | ||
7 | purge) | ||
8 | # Remove all non-conffiles that ssh might create, so that we | ||
9 | # can smoothly remove /etc/ssh if and only if the user | ||
10 | # hasn't dropped some other files in there. Conffiles have | ||
11 | # already been removed at this point. | ||
12 | rm -f /etc/ssh/moduli /etc/ssh/primes | ||
13 | rm -f /etc/ssh/ssh_known_hosts /etc/ssh/ssh_known_hosts2 | ||
14 | [ ! -d /etc/ssh ] || rmdir --ignore-fail-on-non-empty /etc/ssh | ||
15 | |||
16 | if which delgroup >/dev/null 2>&1; then | ||
17 | delgroup --quiet ssh > /dev/null || true | ||
18 | fi | ||
19 | ;; | ||
20 | esac | ||
21 | |||
22 | exit 0 | ||
diff --git a/debian/openssh-client.prerm b/debian/openssh-client.prerm new file mode 100644 index 000000000..2d631cb9c --- /dev/null +++ b/debian/openssh-client.prerm | |||
@@ -0,0 +1,39 @@ | |||
1 | #! /bin/sh | ||
2 | # prerm script for ssh | ||
3 | # | ||
4 | # see: dh_installdeb(1) | ||
5 | |||
6 | set -e | ||
7 | |||
8 | # summary of how this script can be called: | ||
9 | # * <prerm> `remove' | ||
10 | # * <old-prerm> `upgrade' <new-version> | ||
11 | # * <new-prerm> `failed-upgrade' <old-version> | ||
12 | # * <conflictor's-prerm> `remove' `in-favour' <package> <new-version> | ||
13 | # * <deconfigured's-prerm> `deconfigure' `in-favour' | ||
14 | # <package-being-installed> <version> `removing' | ||
15 | # <conflicting-package> <version> | ||
16 | # for details, see /usr/share/doc/packaging-manual/ | ||
17 | |||
18 | case "$1" in | ||
19 | remove|deconfigure) | ||
20 | update-alternatives --quiet --remove rsh /usr/bin/ssh | ||
21 | update-alternatives --quiet --remove rlogin /usr/bin/slogin | ||
22 | update-alternatives --quiet --remove rcp /usr/bin/scp | ||
23 | ;; | ||
24 | upgrade) | ||
25 | ;; | ||
26 | failed-upgrade) | ||
27 | ;; | ||
28 | *) | ||
29 | echo "prerm called with unknown argument \`$1'" >&2 | ||
30 | exit 0 | ||
31 | ;; | ||
32 | esac | ||
33 | |||
34 | # dh_installdeb will replace this with shell code automatically | ||
35 | # generated by other debhelper scripts. | ||
36 | |||
37 | #DEBHELPER# | ||
38 | |||
39 | exit 0 | ||
diff --git a/debian/openssh-server-udeb.dirs b/debian/openssh-server-udeb.dirs new file mode 100644 index 000000000..e730fc43d --- /dev/null +++ b/debian/openssh-server-udeb.dirs | |||
@@ -0,0 +1 @@ | |||
run/sshd | |||
diff --git a/debian/openssh-server-udeb.install b/debian/openssh-server-udeb.install new file mode 100644 index 000000000..05ccbf7af --- /dev/null +++ b/debian/openssh-server-udeb.install | |||
@@ -0,0 +1,2 @@ | |||
1 | sshd usr/sbin | ||
2 | ssh-keygen usr/bin | ||
diff --git a/debian/openssh-server.apport b/debian/openssh-server.apport new file mode 100644 index 000000000..3644bd855 --- /dev/null +++ b/debian/openssh-server.apport | |||
@@ -0,0 +1,28 @@ | |||
1 | #!/usr/bin/python | ||
2 | |||
3 | '''apport hook for openssh-server | ||
4 | |||
5 | (c) 2010 Canonical Ltd. | ||
6 | Author: Chuck Short <chuck.short@canonical.com> | ||
7 | |||
8 | This program is free software; you can redistribute it and/or modify it | ||
9 | under the terms of the GNU General Public License as published by the | ||
10 | Free Software Foundation; either version 2 of the License, or (at your | ||
11 | option) any later version. See http://www.gnu.org/copyleft/gpl.html for | ||
12 | the full text of the license. | ||
13 | ''' | ||
14 | |||
15 | from apport.hookutils import * | ||
16 | |||
17 | def add_info(report, ui): | ||
18 | response = ui.yesno("The contents of your /etc/ssh/sshd_config file " | ||
19 | "may help developers diagnose your bug more " | ||
20 | "quickly. However, it may contain sensitive " | ||
21 | "information. Do you want to include it in your " | ||
22 | "bug report?") | ||
23 | |||
24 | if response == None: # user cancelled | ||
25 | raise StopIteration | ||
26 | |||
27 | elif response == True: | ||
28 | report['SSHDConfig'] = root_command_output(['/usr/sbin/sshd', '-T']) | ||
diff --git a/debian/openssh-server.config b/debian/openssh-server.config new file mode 100644 index 000000000..4a66a35e9 --- /dev/null +++ b/debian/openssh-server.config | |||
@@ -0,0 +1,46 @@ | |||
1 | #! /bin/sh | ||
2 | set -e | ||
3 | |||
4 | . /usr/share/debconf/confmodule | ||
5 | db_version 2.0 | ||
6 | |||
7 | get_config_option() { | ||
8 | option="$1" | ||
9 | |||
10 | [ -f /etc/ssh/sshd_config ] || return | ||
11 | |||
12 | # TODO: actually only one '=' allowed after option | ||
13 | perl -lne ' | ||
14 | s/[[:space:]]+/ /g; s/[[:space:]]+$//; | ||
15 | print if s/^[[:space:]]*'"$option"'[[:space:]=]+//i' \ | ||
16 | /etc/ssh/sshd_config 2>/dev/null | ||
17 | } | ||
18 | |||
19 | permit_root_login="$(get_config_option PermitRootLogin)" || true | ||
20 | password_authentication="$(get_config_option PasswordAuthentication)" || true | ||
21 | if [ -f /etc/ssh/sshd_config ]; then | ||
22 | # Make sure the debconf database is in sync with the current state | ||
23 | # of the system. | ||
24 | if [ "$permit_root_login" = yes ]; then | ||
25 | db_set openssh-server/permit-root-login false | ||
26 | else | ||
27 | db_set openssh-server/permit-root-login true | ||
28 | fi | ||
29 | if [ "$password_authentication" = no ]; then | ||
30 | db_set openssh-server/password-authentication false | ||
31 | else | ||
32 | db_set openssh-server/password-authentication true | ||
33 | fi | ||
34 | fi | ||
35 | |||
36 | if dpkg --compare-versions "$2" lt-nl 1:6.6p1-1 && \ | ||
37 | [ "$permit_root_login" = yes ]; then | ||
38 | if [ "$(getent shadow root | cut -d: -f2)" = "!" ]; then | ||
39 | db_set openssh-server/permit-root-login true | ||
40 | else | ||
41 | db_input high openssh-server/permit-root-login || true | ||
42 | db_go | ||
43 | fi | ||
44 | fi | ||
45 | |||
46 | exit 0 | ||
diff --git a/debian/openssh-server.examples b/debian/openssh-server.examples new file mode 100644 index 000000000..9f15e1fa7 --- /dev/null +++ b/debian/openssh-server.examples | |||
@@ -0,0 +1 @@ | |||
debian/systemd/ssh-session-cleanup.service | |||
diff --git a/debian/openssh-server.install b/debian/openssh-server.install new file mode 100755 index 000000000..29e7abc8e --- /dev/null +++ b/debian/openssh-server.install | |||
@@ -0,0 +1,21 @@ | |||
1 | #! /usr/bin/dh-exec | ||
2 | |||
3 | etc/ssh/moduli | ||
4 | usr/sbin/sshd | ||
5 | usr/share/man/man5/authorized_keys.5 | ||
6 | usr/share/man/man5/moduli.5 | ||
7 | usr/share/man/man5/sshd_config.5 | ||
8 | usr/share/man/man8/sshd.8 | ||
9 | |||
10 | sshd_config => usr/share/openssh/sshd_config | ||
11 | debian/openssh-server.ucf-md5sum => usr/share/openssh/sshd_config.md5sum | ||
12 | |||
13 | debian/openssh-server.ufw.profile => etc/ufw/applications.d/openssh-server | ||
14 | debian/systemd/ssh.socket lib/systemd/system | ||
15 | debian/systemd/rescue-ssh.target lib/systemd/system | ||
16 | debian/systemd/ssh@.service lib/systemd/system | ||
17 | debian/systemd/ssh-session-cleanup usr/lib/openssh | ||
18 | |||
19 | # dh_apport would be neater, but at the time of writing it isn't in unstable | ||
20 | # yet. | ||
21 | debian/openssh-server.apport => usr/share/apport/package-hooks/openssh-server.py | ||
diff --git a/debian/openssh-server.links b/debian/openssh-server.links new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/debian/openssh-server.links | |||
diff --git a/debian/openssh-server.maintscript b/debian/openssh-server.maintscript new file mode 100644 index 000000000..c721fdb48 --- /dev/null +++ b/debian/openssh-server.maintscript | |||
@@ -0,0 +1,3 @@ | |||
1 | mv_conffile /etc/pam.d/ssh /etc/pam.d/sshd 1:4.7p1-4~ | ||
2 | rm_conffile /etc/init/ssh.conf 1:7.5p1-6~ | ||
3 | rm_conffile /etc/network/if-up.d/openssh-server 1:7.9p1-1~ | ||
diff --git a/debian/openssh-server.postinst b/debian/openssh-server.postinst new file mode 100644 index 000000000..552b0744e --- /dev/null +++ b/debian/openssh-server.postinst | |||
@@ -0,0 +1,167 @@ | |||
1 | #!/bin/sh | ||
2 | set -e | ||
3 | |||
4 | . /usr/share/debconf/confmodule | ||
5 | db_version 2.0 | ||
6 | |||
7 | action="$1" | ||
8 | oldversion="$2" | ||
9 | |||
10 | umask 022 | ||
11 | |||
12 | |||
13 | get_config_option() { | ||
14 | option="$1" | ||
15 | |||
16 | [ -f /etc/ssh/sshd_config ] || return | ||
17 | |||
18 | # TODO: actually only one '=' allowed after option | ||
19 | perl -lne ' | ||
20 | s/[[:space:]]+/ /g; s/[[:space:]]+$//; | ||
21 | print if s/^[[:space:]]*'"$option"'[[:space:]=]+//i' \ | ||
22 | /etc/ssh/sshd_config | ||
23 | } | ||
24 | |||
25 | |||
26 | host_keys_required() { | ||
27 | hostkeys="$(get_config_option HostKey)" | ||
28 | if [ "$hostkeys" ]; then | ||
29 | echo "$hostkeys" | ||
30 | else | ||
31 | # No HostKey directives at all, so the server picks some | ||
32 | # defaults. | ||
33 | echo /etc/ssh/ssh_host_rsa_key | ||
34 | echo /etc/ssh/ssh_host_ecdsa_key | ||
35 | echo /etc/ssh/ssh_host_ed25519_key | ||
36 | fi | ||
37 | } | ||
38 | |||
39 | |||
40 | create_key() { | ||
41 | msg="$1" | ||
42 | shift | ||
43 | hostkeys="$1" | ||
44 | shift | ||
45 | file="$1" | ||
46 | shift | ||
47 | |||
48 | if echo "$hostkeys" | grep -x "$file" >/dev/null && \ | ||
49 | [ ! -f "$file" ] ; then | ||
50 | echo -n $msg | ||
51 | ssh-keygen -q -f "$file" -N '' "$@" | ||
52 | echo | ||
53 | if which restorecon >/dev/null 2>&1; then | ||
54 | restorecon "$file" "$file.pub" | ||
55 | fi | ||
56 | ssh-keygen -l -f "$file.pub" | ||
57 | fi | ||
58 | } | ||
59 | |||
60 | |||
61 | create_keys() { | ||
62 | hostkeys="$(host_keys_required)" | ||
63 | |||
64 | create_key "Creating SSH2 RSA key; this may take some time ..." \ | ||
65 | "$hostkeys" /etc/ssh/ssh_host_rsa_key -t rsa | ||
66 | create_key "Creating SSH2 DSA key; this may take some time ..." \ | ||
67 | "$hostkeys" /etc/ssh/ssh_host_dsa_key -t dsa | ||
68 | create_key "Creating SSH2 ECDSA key; this may take some time ..." \ | ||
69 | "$hostkeys" /etc/ssh/ssh_host_ecdsa_key -t ecdsa | ||
70 | create_key "Creating SSH2 ED25519 key; this may take some time ..." \ | ||
71 | "$hostkeys" /etc/ssh/ssh_host_ed25519_key -t ed25519 | ||
72 | } | ||
73 | |||
74 | |||
75 | new_config= | ||
76 | |||
77 | cleanup() { | ||
78 | if [ "$new_config" ]; then | ||
79 | rm -f "$new_config" | ||
80 | fi | ||
81 | } | ||
82 | |||
83 | |||
84 | create_sshdconfig() { | ||
85 | # XXX cjwatson 2016-12-24: This debconf template is very confusingly | ||
86 | # named; its description is "Disable SSH password authentication for | ||
87 | # root?", so true -> prohibit-password (the upstream default), | ||
88 | # false -> yes. | ||
89 | db_get openssh-server/permit-root-login | ||
90 | permit_root_login="$RET" | ||
91 | db_get openssh-server/password-authentication | ||
92 | password_authentication="$RET" | ||
93 | |||
94 | trap cleanup EXIT | ||
95 | new_config="$(tempfile)" | ||
96 | cp -a /usr/share/openssh/sshd_config "$new_config" | ||
97 | if [ "$permit_root_login" != true ]; then | ||
98 | sed -i 's/^#*PermitRootLogin .*/PermitRootLogin yes/' \ | ||
99 | "$new_config" | ||
100 | fi | ||
101 | if [ "$password_authentication" != true ]; then | ||
102 | sed -i 's/^#PasswordAuthentication .*/PasswordAuthentication no/' \ | ||
103 | "$new_config" | ||
104 | fi | ||
105 | mkdir -p /etc/ssh | ||
106 | ucf --three-way --debconf-ok \ | ||
107 | --sum-file /usr/share/openssh/sshd_config.md5sum \ | ||
108 | "$new_config" /etc/ssh/sshd_config | ||
109 | ucfr openssh-server /etc/ssh/sshd_config | ||
110 | } | ||
111 | |||
112 | fix_statoverride() { | ||
113 | # Remove an erronous override for sshd (we should have overridden ssh) | ||
114 | if dpkg-statoverride --list /usr/sbin/sshd >/dev/null; then | ||
115 | dpkg-statoverride --remove /usr/sbin/sshd | ||
116 | fi | ||
117 | } | ||
118 | |||
119 | setup_sshd_user() { | ||
120 | if ! getent passwd sshd >/dev/null; then | ||
121 | adduser --quiet --system --no-create-home --home /run/sshd --shell /usr/sbin/nologin sshd | ||
122 | fi | ||
123 | } | ||
124 | |||
125 | if [ "$action" = configure ]; then | ||
126 | create_sshdconfig | ||
127 | create_keys | ||
128 | fix_statoverride | ||
129 | setup_sshd_user | ||
130 | # Renamed to /etc/ssh/moduli in 2.9.9 (!) | ||
131 | if dpkg --compare-versions "$2" lt-nl 1:4.7p1-1; then | ||
132 | rm -f /etc/ssh/primes | ||
133 | fi | ||
134 | if dpkg --compare-versions "$2" lt-nl 1:5.5p1-6; then | ||
135 | rm -f /run/sshd/.placeholder | ||
136 | fi | ||
137 | if dpkg --compare-versions "$2" lt-nl 1:6.5p1-2 && \ | ||
138 | deb-systemd-helper debian-installed ssh.socket && \ | ||
139 | deb-systemd-helper --quiet was-enabled ssh.service && \ | ||
140 | deb-systemd-helper --quiet was-enabled ssh.socket; then | ||
141 | # 1:6.5p1-1 mistakenly left both ssh.service and ssh.socket | ||
142 | # enabled. | ||
143 | deb-systemd-helper disable ssh.socket >/dev/null || true | ||
144 | fi | ||
145 | if dpkg --compare-versions "$2" lt-nl 1:6.5p1-3 && \ | ||
146 | [ -d /run/systemd/system ]; then | ||
147 | # We must stop the sysvinit-controlled sshd before we can | ||
148 | # restart it under systemd. | ||
149 | start-stop-daemon --stop --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd || true | ||
150 | fi | ||
151 | if dpkg --compare-versions "$2" lt-nl 1:7.9p1-5 && \ | ||
152 | [ -f /etc/ssh/moduli.dpkg-bak ]; then | ||
153 | # Handle /etc/ssh/moduli being moved from openssh-client to | ||
154 | # openssh-server. If there were no user modifications, then we | ||
155 | # don't need to do anything special here; but if there were, | ||
156 | # then the dpkg-maintscript-helper calls from openssh-client's | ||
157 | # maintainer scripts will have saved the old file as .dpkg-bak, | ||
158 | # which we now move back into place. | ||
159 | mv /etc/ssh/moduli.dpkg-bak /etc/ssh/moduli | ||
160 | fi | ||
161 | fi | ||
162 | |||
163 | #DEBHELPER# | ||
164 | |||
165 | db_stop | ||
166 | |||
167 | exit 0 | ||
diff --git a/debian/openssh-server.postrm b/debian/openssh-server.postrm new file mode 100644 index 000000000..4a716f563 --- /dev/null +++ b/debian/openssh-server.postrm | |||
@@ -0,0 +1,35 @@ | |||
1 | #!/bin/sh | ||
2 | set -e | ||
3 | |||
4 | #DEBHELPER# | ||
5 | |||
6 | case $1 in | ||
7 | purge) | ||
8 | # Remove all non-conffiles that ssh might create, so that we | ||
9 | # can smoothly remove /etc/ssh if and only if the user | ||
10 | # hasn't dropped some other files in there. Conffiles have | ||
11 | # already been removed at this point. | ||
12 | rm -f /etc/ssh/ssh_host_key /etc/ssh/ssh_host_key.pub | ||
13 | rm -f /etc/ssh/ssh_host_rsa_key /etc/ssh/ssh_host_rsa_key.pub | ||
14 | rm -f /etc/ssh/ssh_host_dsa_key /etc/ssh/ssh_host_dsa_key.pub | ||
15 | rm -f /etc/ssh/ssh_host_ecdsa_key /etc/ssh/ssh_host_ecdsa_key.pub | ||
16 | rm -f /etc/ssh/ssh_host_ed25519_key /etc/ssh/ssh_host_ed25519_key.pub | ||
17 | for ext in .ucf-new .ucf-old .ucf-dist ""; do | ||
18 | rm -f "/etc/ssh/sshd_config$ext" | ||
19 | done | ||
20 | if which ucf >/dev/null 2>&1; then | ||
21 | ucf --purge /etc/ssh/sshd_config | ||
22 | fi | ||
23 | if which ucfr >/dev/null 2>&1; then | ||
24 | ucfr --purge openssh-server /etc/ssh/sshd_config | ||
25 | fi | ||
26 | rm -f /etc/ssh/sshd_not_to_be_run | ||
27 | [ ! -d /etc/ssh ] || rmdir --ignore-fail-on-non-empty /etc/ssh | ||
28 | |||
29 | if which deluser >/dev/null 2>&1; then | ||
30 | deluser --quiet sshd > /dev/null || true | ||
31 | fi | ||
32 | ;; | ||
33 | esac | ||
34 | |||
35 | exit 0 | ||
diff --git a/debian/openssh-server.preinst b/debian/openssh-server.preinst new file mode 100644 index 000000000..f5b75124e --- /dev/null +++ b/debian/openssh-server.preinst | |||
@@ -0,0 +1,18 @@ | |||
1 | #!/bin/sh | ||
2 | set -e | ||
3 | |||
4 | action=$1 | ||
5 | version=$2 | ||
6 | |||
7 | if [ "$action" = upgrade ] || [ "$action" = install ] | ||
8 | then | ||
9 | if dpkg --compare-versions "$version" lt 1:5.5p1-6 && \ | ||
10 | [ -d /run/sshd ]; then | ||
11 | # make sure /run/sshd is not removed on upgrades | ||
12 | touch /run/sshd/.placeholder | ||
13 | fi | ||
14 | fi | ||
15 | |||
16 | #DEBHELPER# | ||
17 | |||
18 | exit 0 | ||
diff --git a/debian/openssh-server.ssh.default b/debian/openssh-server.ssh.default new file mode 100644 index 000000000..304042224 --- /dev/null +++ b/debian/openssh-server.ssh.default | |||
@@ -0,0 +1,5 @@ | |||
1 | # Default settings for openssh-server. This file is sourced by /bin/sh from | ||
2 | # /etc/init.d/ssh. | ||
3 | |||
4 | # Options to pass to sshd | ||
5 | SSHD_OPTS= | ||
diff --git a/debian/openssh-server.ssh.init b/debian/openssh-server.ssh.init new file mode 100755 index 000000000..620af70e0 --- /dev/null +++ b/debian/openssh-server.ssh.init | |||
@@ -0,0 +1,162 @@ | |||
1 | #! /bin/sh | ||
2 | |||
3 | ### BEGIN INIT INFO | ||
4 | # Provides: sshd | ||
5 | # Required-Start: $remote_fs $syslog | ||
6 | # Required-Stop: $remote_fs $syslog | ||
7 | # Default-Start: 2 3 4 5 | ||
8 | # Default-Stop: | ||
9 | # Short-Description: OpenBSD Secure Shell server | ||
10 | ### END INIT INFO | ||
11 | |||
12 | set -e | ||
13 | |||
14 | # /etc/init.d/ssh: start and stop the OpenBSD "secure shell(tm)" daemon | ||
15 | |||
16 | test -x /usr/sbin/sshd || exit 0 | ||
17 | ( /usr/sbin/sshd -\? 2>&1 | grep -q OpenSSH ) 2>/dev/null || exit 0 | ||
18 | |||
19 | umask 022 | ||
20 | |||
21 | if test -f /etc/default/ssh; then | ||
22 | . /etc/default/ssh | ||
23 | fi | ||
24 | |||
25 | . /lib/lsb/init-functions | ||
26 | |||
27 | if [ -n "$2" ]; then | ||
28 | SSHD_OPTS="$SSHD_OPTS $2" | ||
29 | fi | ||
30 | |||
31 | # Are we running from init? | ||
32 | run_by_init() { | ||
33 | ([ "$previous" ] && [ "$runlevel" ]) || [ "$runlevel" = S ] | ||
34 | } | ||
35 | |||
36 | check_for_no_start() { | ||
37 | # forget it if we're trying to start, and /etc/ssh/sshd_not_to_be_run exists | ||
38 | if [ -e /etc/ssh/sshd_not_to_be_run ]; then | ||
39 | if [ "$1" = log_end_msg ]; then | ||
40 | log_end_msg 0 || true | ||
41 | fi | ||
42 | if ! run_by_init; then | ||
43 | log_action_msg "OpenBSD Secure Shell server not in use (/etc/ssh/sshd_not_to_be_run)" || true | ||
44 | fi | ||
45 | exit 0 | ||
46 | fi | ||
47 | } | ||
48 | |||
49 | check_dev_null() { | ||
50 | if [ ! -c /dev/null ]; then | ||
51 | if [ "$1" = log_end_msg ]; then | ||
52 | log_end_msg 1 || true | ||
53 | fi | ||
54 | if ! run_by_init; then | ||
55 | log_action_msg "/dev/null is not a character device!" || true | ||
56 | fi | ||
57 | exit 1 | ||
58 | fi | ||
59 | } | ||
60 | |||
61 | check_privsep_dir() { | ||
62 | # Create the PrivSep empty dir if necessary | ||
63 | if [ ! -d /run/sshd ]; then | ||
64 | mkdir /run/sshd | ||
65 | chmod 0755 /run/sshd | ||
66 | fi | ||
67 | } | ||
68 | |||
69 | check_config() { | ||
70 | if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then | ||
71 | /usr/sbin/sshd $SSHD_OPTS -t || exit 1 | ||
72 | fi | ||
73 | } | ||
74 | |||
75 | export PATH="${PATH:+$PATH:}/usr/sbin:/sbin" | ||
76 | |||
77 | case "$1" in | ||
78 | start) | ||
79 | check_privsep_dir | ||
80 | check_for_no_start | ||
81 | check_dev_null | ||
82 | log_daemon_msg "Starting OpenBSD Secure Shell server" "sshd" || true | ||
83 | if start-stop-daemon --start --quiet --oknodo --chuid 0:0 --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then | ||
84 | log_end_msg 0 || true | ||
85 | else | ||
86 | log_end_msg 1 || true | ||
87 | fi | ||
88 | ;; | ||
89 | stop) | ||
90 | log_daemon_msg "Stopping OpenBSD Secure Shell server" "sshd" || true | ||
91 | if start-stop-daemon --stop --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd; then | ||
92 | log_end_msg 0 || true | ||
93 | else | ||
94 | log_end_msg 1 || true | ||
95 | fi | ||
96 | ;; | ||
97 | |||
98 | reload|force-reload) | ||
99 | check_for_no_start | ||
100 | check_config | ||
101 | log_daemon_msg "Reloading OpenBSD Secure Shell server's configuration" "sshd" || true | ||
102 | if start-stop-daemon --stop --signal 1 --quiet --oknodo --pidfile /run/sshd.pid --exec /usr/sbin/sshd; then | ||
103 | log_end_msg 0 || true | ||
104 | else | ||
105 | log_end_msg 1 || true | ||
106 | fi | ||
107 | ;; | ||
108 | |||
109 | restart) | ||
110 | check_privsep_dir | ||
111 | check_config | ||
112 | log_daemon_msg "Restarting OpenBSD Secure Shell server" "sshd" || true | ||
113 | start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile /run/sshd.pid --exec /usr/sbin/sshd | ||
114 | check_for_no_start log_end_msg | ||
115 | check_dev_null log_end_msg | ||
116 | if start-stop-daemon --start --quiet --oknodo --chuid 0:0 --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then | ||
117 | log_end_msg 0 || true | ||
118 | else | ||
119 | log_end_msg 1 || true | ||
120 | fi | ||
121 | ;; | ||
122 | |||
123 | try-restart) | ||
124 | check_privsep_dir | ||
125 | check_config | ||
126 | log_daemon_msg "Restarting OpenBSD Secure Shell server" "sshd" || true | ||
127 | RET=0 | ||
128 | start-stop-daemon --stop --quiet --retry 30 --pidfile /run/sshd.pid --exec /usr/sbin/sshd || RET="$?" | ||
129 | case $RET in | ||
130 | 0) | ||
131 | # old daemon stopped | ||
132 | check_for_no_start log_end_msg | ||
133 | check_dev_null log_end_msg | ||
134 | if start-stop-daemon --start --quiet --oknodo --chuid 0:0 --pidfile /run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS; then | ||
135 | log_end_msg 0 || true | ||
136 | else | ||
137 | log_end_msg 1 || true | ||
138 | fi | ||
139 | ;; | ||
140 | 1) | ||
141 | # daemon not running | ||
142 | log_progress_msg "(not running)" || true | ||
143 | log_end_msg 0 || true | ||
144 | ;; | ||
145 | *) | ||
146 | # failed to stop | ||
147 | log_progress_msg "(failed to stop)" || true | ||
148 | log_end_msg 1 || true | ||
149 | ;; | ||
150 | esac | ||
151 | ;; | ||
152 | |||
153 | status) | ||
154 | status_of_proc -p /run/sshd.pid /usr/sbin/sshd sshd && exit 0 || exit $? | ||
155 | ;; | ||
156 | |||
157 | *) | ||
158 | log_action_msg "Usage: /etc/init.d/ssh {start|stop|reload|force-reload|restart|try-restart|status}" || true | ||
159 | exit 1 | ||
160 | esac | ||
161 | |||
162 | exit 0 | ||
diff --git a/debian/openssh-server.ssh.service b/debian/openssh-server.ssh.service new file mode 120000 index 000000000..609457230 --- /dev/null +++ b/debian/openssh-server.ssh.service | |||
@@ -0,0 +1 @@ | |||
systemd/ssh.service \ No newline at end of file | |||
diff --git a/debian/openssh-server.sshd.pam.in b/debian/openssh-server.sshd.pam.in new file mode 100644 index 000000000..2cad67da6 --- /dev/null +++ b/debian/openssh-server.sshd.pam.in | |||
@@ -0,0 +1,55 @@ | |||
1 | # PAM configuration for the Secure Shell service | ||
2 | |||
3 | # Standard Un*x authentication. | ||
4 | @include common-auth | ||
5 | |||
6 | # Disallow non-root logins when /etc/nologin exists. | ||
7 | account required pam_nologin.so | ||
8 | |||
9 | # Uncomment and edit /etc/security/access.conf if you need to set complex | ||
10 | # access limits that are hard to express in sshd_config. | ||
11 | # account required pam_access.so | ||
12 | |||
13 | # Standard Un*x authorization. | ||
14 | @include common-account | ||
15 | |||
16 | # SELinux needs to be the first session rule. This ensures that any | ||
17 | # lingering context has been cleared. Without this it is possible that a | ||
18 | # module could execute code in the wrong domain. | ||
19 | session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so close | ||
20 | |||
21 | # Set the loginuid process attribute. | ||
22 | session required pam_loginuid.so | ||
23 | |||
24 | @IF_KEYINIT@# Create a new session keyring. | ||
25 | @IF_KEYINIT@session optional pam_keyinit.so force revoke | ||
26 | |||
27 | # Standard Un*x session setup and teardown. | ||
28 | @include common-session | ||
29 | |||
30 | # Print the message of the day upon successful login. | ||
31 | # This includes a dynamically generated part from /run/motd.dynamic | ||
32 | # and a static (admin-editable) part from /etc/motd. | ||
33 | session optional pam_motd.so motd=/run/motd.dynamic | ||
34 | session optional pam_motd.so noupdate | ||
35 | |||
36 | # Print the status of the user's mailbox upon successful login. | ||
37 | session optional pam_mail.so standard noenv # [1] | ||
38 | |||
39 | # Set up user limits from /etc/security/limits.conf. | ||
40 | session required pam_limits.so | ||
41 | |||
42 | # Read environment variables from /etc/environment and | ||
43 | # /etc/security/pam_env.conf. | ||
44 | session required pam_env.so # [1] | ||
45 | # In Debian 4.0 (etch), locale-related environment variables were moved to | ||
46 | # /etc/default/locale, so read that as well. | ||
47 | session required pam_env.so user_readenv=1 envfile=/etc/default/locale | ||
48 | |||
49 | # SELinux needs to intervene at login time to ensure that the process starts | ||
50 | # in the proper default security context. Only sessions which are intended | ||
51 | # to run in the user's context should be run after this. | ||
52 | session [success=ok ignore=ignore module_unknown=ignore default=bad] pam_selinux.so open | ||
53 | |||
54 | # Standard Un*x password updating. | ||
55 | @include common-password | ||
diff --git a/debian/openssh-server.templates b/debian/openssh-server.templates new file mode 100644 index 000000000..e071fe3b8 --- /dev/null +++ b/debian/openssh-server.templates | |||
@@ -0,0 +1,23 @@ | |||
1 | Template: openssh-server/permit-root-login | ||
2 | Type: boolean | ||
3 | Default: true | ||
4 | _Description: Disable SSH password authentication for root? | ||
5 | Previous versions of openssh-server permitted logging in as root over SSH | ||
6 | using password authentication. The default for new installations is now | ||
7 | "PermitRootLogin prohibit-password", which disables password authentication | ||
8 | for root without breaking systems that have explicitly configured SSH | ||
9 | public key authentication for root. | ||
10 | . | ||
11 | This change makes systems more secure against brute-force password | ||
12 | dictionary attacks on the root user (a very common target for such | ||
13 | attacks). However, it may break systems that are set up with the | ||
14 | expectation of being able to SSH as root using password authentication. You | ||
15 | should only make this change if you do not need to do that. | ||
16 | |||
17 | Template: openssh-server/password-authentication | ||
18 | Type: boolean | ||
19 | Default: true | ||
20 | Description: Allow password authentication? | ||
21 | By default, the SSH server will allow authenticating using a password. | ||
22 | You may want to change this if all users on this system authenticate using | ||
23 | a stronger authentication method, such as public keys. | ||
diff --git a/debian/openssh-server.ucf-md5sum b/debian/openssh-server.ucf-md5sum new file mode 100644 index 000000000..c9c89d429 --- /dev/null +++ b/debian/openssh-server.ucf-md5sum | |||
@@ -0,0 +1,48 @@ | |||
1 | # Historical md5sums of the default /etc/ssh/sshd_config up to and including | ||
2 | # 1:7.3p1-5. | ||
3 | 0d06fc337cee10609d4833dc88df740f | ||
4 | 10dc68360f6658910a98a051273de22c | ||
5 | 11f9e107b4d13bbcabe7f8e8da734371 | ||
6 | 16c827adcff44efaca05ec5eea6383d7 | ||
7 | 2eeff28468576c3f2e538314e177687b | ||
8 | 386c8b9079625b78f6d624ae506958ae | ||
9 | 38fc7b31b3e3078848f0eec457d3e050 | ||
10 | 395c5e13801f9b4f17c2cb54aa634fbd | ||
11 | 423d5796cee663af2d0f24c4d520b578 | ||
12 | 42be2cb5b64bc91443b2e46969d2d539 | ||
13 | 42cd8b7c5ea9e440d3efa50b9a1bb444 | ||
14 | 4f56ca8d0b5dfdaeb732becd3292ce5d | ||
15 | 54998a682a97af8449e9de0316eacf1d | ||
16 | 5c0bdc1735accbdc062381149937ec4a | ||
17 | 6357b54acf8e089c57544e06d1bbec53 | ||
18 | 6a621d8bc448987e5a8a613c40307a4c | ||
19 | 702a79962e60aa17c6d3df742e8ec670 | ||
20 | 7a69eff91ec92b4e065b8dd8846366b2 | ||
21 | 7c60e22f183b6219c684f15ce24153fd | ||
22 | 8304e780c43d4a606f695c8965f48299 | ||
23 | 8b9e70ee87f4b822714e2ed7af5b70dc | ||
24 | 8caefdd9e251b7cc1baa37874149a870 | ||
25 | 90baeb1c778464d2da610f8268939719 | ||
26 | 962a382e51f43f80109131838ca326ba | ||
27 | 96eaf22faba705a37905282f6ad69d64 | ||
28 | 9cb6cd83be1c21f73476be629b163c01 | ||
29 | a07a9865cd33b85a1426cd67954c6fa0 | ||
30 | ae1e844b43986e2a964cf84f46b50c5b | ||
31 | b516afa5a1e298f4cd00952b36dd623f | ||
32 | b69fc974ee9b5a111bd473ef54cdd232 | ||
33 | ba9c3f808c811d6f944ad10a508c4767 | ||
34 | bccf9af9c7027afd0895d8ff8e02761a | ||
35 | bd3a2b95f8b4b180eed707794ad81e4d | ||
36 | c34586b56496f81a10615c002685fc74 | ||
37 | c47555a21189a6b703d2c5d37d2c50ed | ||
38 | cac079e87c0ae0d77eafc9b285e36348 | ||
39 | d224f92823483333432974f63cb6dc66 | ||
40 | d50ef9ef2aa51cb9f808f6a776260c0a | ||
41 | e0029e1e9871d4d2b673ee6d70a38614 | ||
42 | e086e7eb521ccc5776371b2e198f0702 | ||
43 | e101f74dc7381527e9aefa1f78b01a7f | ||
44 | e24f749808133a27d94fda84a89bb27b | ||
45 | ec16c3dd0203f13885d74ce529719fda | ||
46 | efcff5380823d4e3f5039620c2e08459 | ||
47 | f58056370a64dbd2017d7486421c281d | ||
48 | fe396d52df77f1fbf710591d4dbf3311 | ||
diff --git a/debian/openssh-server.ufw.profile b/debian/openssh-server.ufw.profile new file mode 100644 index 000000000..9bbe906bc --- /dev/null +++ b/debian/openssh-server.ufw.profile | |||
@@ -0,0 +1,4 @@ | |||
1 | [OpenSSH] | ||
2 | title=Secure shell server, an rshd replacement | ||
3 | description=OpenSSH is a free implementation of the Secure Shell protocol. | ||
4 | ports=22/tcp | ||
diff --git a/debian/openssh-sftp-server.install b/debian/openssh-sftp-server.install new file mode 100644 index 000000000..25b12dc09 --- /dev/null +++ b/debian/openssh-sftp-server.install | |||
@@ -0,0 +1,2 @@ | |||
1 | usr/lib/openssh/sftp-server | ||
2 | usr/share/man/man8/sftp-server.8 | ||
diff --git a/debian/openssh-sftp-server.links b/debian/openssh-sftp-server.links new file mode 100644 index 000000000..2d98b1dcb --- /dev/null +++ b/debian/openssh-sftp-server.links | |||
@@ -0,0 +1 @@ | |||
usr/lib/openssh/sftp-server usr/lib/sftp-server | |||
diff --git a/debian/openssh-tests.install b/debian/openssh-tests.install new file mode 100644 index 000000000..941704595 --- /dev/null +++ b/debian/openssh-tests.install | |||
@@ -0,0 +1,11 @@ | |||
1 | regress /usr/lib/openssh | ||
2 | debian/build-deb/regress/check-perm /usr/lib/openssh/regress | ||
3 | debian/build-deb/regress/misc /usr/lib/openssh/regress | ||
4 | debian/build-deb/regress/mkdtemp /usr/lib/openssh/regress | ||
5 | debian/build-deb/regress/modpipe /usr/lib/openssh/regress | ||
6 | debian/build-deb/regress/netcat /usr/lib/openssh/regress | ||
7 | debian/build-deb/regress/setuid-allowed /usr/lib/openssh/regress | ||
8 | debian/build-deb/regress/unittests /usr/lib/openssh/regress | ||
9 | |||
10 | debian/build-deb/config.h /usr/lib/openssh/regress | ||
11 | debian/run-tests /usr/lib/openssh/regress | ||
diff --git a/debian/patches/authorized-keys-man-symlink.patch b/debian/patches/authorized-keys-man-symlink.patch new file mode 100644 index 000000000..3e5fac6e1 --- /dev/null +++ b/debian/patches/authorized-keys-man-symlink.patch | |||
@@ -0,0 +1,26 @@ | |||
1 | From f9a76ef65bfb6c17d613ab3db2bf39db5087adfc Mon Sep 17 00:00:00 2001 | ||
2 | From: Tomas Pospisek <tpo_deb@sourcepole.ch> | ||
3 | Date: Sun, 9 Feb 2014 16:10:07 +0000 | ||
4 | Subject: Install authorized_keys(5) as a symlink to sshd(8) | ||
5 | |||
6 | Bug: https://bugzilla.mindrot.org/show_bug.cgi?id=1720 | ||
7 | Bug-Debian: http://bugs.debian.org/441817 | ||
8 | Last-Update: 2013-09-14 | ||
9 | |||
10 | Patch-Name: authorized-keys-man-symlink.patch | ||
11 | --- | ||
12 | Makefile.in | 1 + | ||
13 | 1 file changed, 1 insertion(+) | ||
14 | |||
15 | diff --git a/Makefile.in b/Makefile.in | ||
16 | index c31821acc..0960a6a03 100644 | ||
17 | --- a/Makefile.in | ||
18 | +++ b/Makefile.in | ||
19 | @@ -357,6 +357,7 @@ install-files: | ||
20 | $(INSTALL) -m 644 sshd_config.5.out $(DESTDIR)$(mandir)/$(mansubdir)5/sshd_config.5 | ||
21 | $(INSTALL) -m 644 ssh_config.5.out $(DESTDIR)$(mandir)/$(mansubdir)5/ssh_config.5 | ||
22 | $(INSTALL) -m 644 sshd.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/sshd.8 | ||
23 | + ln -s ../$(mansubdir)8/sshd.8 $(DESTDIR)$(mandir)/$(mansubdir)5/authorized_keys.5 | ||
24 | $(INSTALL) -m 644 sftp.1.out $(DESTDIR)$(mandir)/$(mansubdir)1/sftp.1 | ||
25 | $(INSTALL) -m 644 sftp-server.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/sftp-server.8 | ||
26 | $(INSTALL) -m 644 ssh-keysign.8.out $(DESTDIR)$(mandir)/$(mansubdir)8/ssh-keysign.8 | ||
diff --git a/debian/patches/conch-old-privkey-format.patch b/debian/patches/conch-old-privkey-format.patch new file mode 100644 index 000000000..6de8d391b --- /dev/null +++ b/debian/patches/conch-old-privkey-format.patch | |||
@@ -0,0 +1,68 @@ | |||
1 | From 715b72009450c3448de10729817687c53554efb2 Mon Sep 17 00:00:00 2001 | ||
2 | From: Colin Watson <cjwatson@debian.org> | ||
3 | Date: Thu, 30 Aug 2018 00:58:56 +0100 | ||
4 | Subject: Work around conch interoperability failure | ||
5 | |||
6 | Twisted Conch fails to read private keys in the new format | ||
7 | (https://twistedmatrix.com/trac/ticket/9515). Work around this until it | ||
8 | can be fixed in Twisted. | ||
9 | |||
10 | Forwarded: not-needed | ||
11 | Last-Update: 2019-06-14 | ||
12 | |||
13 | Patch-Name: conch-old-privkey-format.patch | ||
14 | --- | ||
15 | regress/Makefile | 2 +- | ||
16 | regress/conch-ciphers.sh | 2 +- | ||
17 | regress/test-exec.sh | 12 ++++++++++++ | ||
18 | 3 files changed, 14 insertions(+), 2 deletions(-) | ||
19 | |||
20 | diff --git a/regress/Makefile b/regress/Makefile | ||
21 | index 781400fd0..491a3a46a 100644 | ||
22 | --- a/regress/Makefile | ||
23 | +++ b/regress/Makefile | ||
24 | @@ -114,7 +114,7 @@ CLEANFILES= *.core actual agent-key.* authorized_keys_${USERNAME} \ | ||
25 | rsa_ssh2_crnl.prv scp-ssh-wrapper.exe \ | ||
26 | scp-ssh-wrapper.scp setuid-allowed sftp-server.log \ | ||
27 | sftp-server.sh sftp.log ssh-log-wrapper.sh \ | ||
28 | - ssh-rsa_oldfmt \ | ||
29 | + ssh-rsa_oldfmt ssh-rsa_oldfmt.pub \ | ||
30 | ssh.log ssh_config ssh_config.* ssh_proxy ssh_proxy_bak \ | ||
31 | ssh_proxy_envpass sshd.log sshd_config sshd_config_minimal \ | ||
32 | sshd_config.orig sshd_proxy sshd_proxy.* sshd_proxy_bak \ | ||
33 | diff --git a/regress/conch-ciphers.sh b/regress/conch-ciphers.sh | ||
34 | index 51e3b705f..fa24552b0 100644 | ||
35 | --- a/regress/conch-ciphers.sh | ||
36 | +++ b/regress/conch-ciphers.sh | ||
37 | @@ -16,7 +16,7 @@ for c in aes256-ctr aes256-cbc aes192-ctr aes192-cbc aes128-ctr aes128-cbc \ | ||
38 | rm -f ${COPY} | ||
39 | # XXX the 2nd "cat" seems to be needed because of buggy FD handling | ||
40 | # in conch | ||
41 | - ${CONCH} --identity $OBJ/ssh-rsa --port $PORT --user $USER -e none \ | ||
42 | + ${CONCH} --identity $OBJ/ssh-rsa_oldfmt --port $PORT --user $USER -e none \ | ||
43 | --known-hosts $OBJ/known_hosts --notty --noagent --nox11 -n \ | ||
44 | 127.0.0.1 "cat ${DATA}" 2>/dev/null | cat > ${COPY} | ||
45 | if [ $? -ne 0 ]; then | ||
46 | diff --git a/regress/test-exec.sh b/regress/test-exec.sh | ||
47 | index efde6a173..83c7d02e6 100644 | ||
48 | --- a/regress/test-exec.sh | ||
49 | +++ b/regress/test-exec.sh | ||
50 | @@ -500,6 +500,18 @@ REGRESS_INTEROP_CONCH=no | ||
51 | if test -x "$CONCH" ; then | ||
52 | REGRESS_INTEROP_CONCH=yes | ||
53 | fi | ||
54 | +case "$SCRIPT" in | ||
55 | +*conch*) ;; | ||
56 | +*) REGRESS_INTEROP_CONCH=no | ||
57 | +esac | ||
58 | + | ||
59 | +if test "$REGRESS_INTEROP_CONCH" = "yes" ; then | ||
60 | + # Convert rsa key to old format to work around | ||
61 | + # https://twistedmatrix.com/trac/ticket/9515 | ||
62 | + cp $OBJ/ssh-rsa $OBJ/ssh-rsa_oldfmt | ||
63 | + cp $OBJ/ssh-rsa.pub $OBJ/ssh-rsa_oldfmt.pub | ||
64 | + ${SSHKEYGEN} -p -N '' -m PEM -f $OBJ/ssh-rsa_oldfmt >/dev/null | ||
65 | +fi | ||
66 | |||
67 | # If PuTTY is present and we are running a PuTTY test, prepare keys and | ||
68 | # configuration | ||
diff --git a/debian/patches/debian-banner.patch b/debian/patches/debian-banner.patch new file mode 100644 index 000000000..61e58e553 --- /dev/null +++ b/debian/patches/debian-banner.patch | |||
@@ -0,0 +1,163 @@ | |||
1 | From 085c44daefaee16df97e1b2a0967b2140cc86de0 Mon Sep 17 00:00:00 2001 | ||
2 | From: Kees Cook <kees@debian.org> | ||
3 | Date: Sun, 9 Feb 2014 16:10:06 +0000 | ||
4 | Subject: Add DebianBanner server configuration option | ||
5 | |||
6 | Setting this to "no" causes sshd to omit the Debian revision from its | ||
7 | initial protocol handshake, for those scared by package-versioning.patch. | ||
8 | |||
9 | Bug-Debian: http://bugs.debian.org/562048 | ||
10 | Forwarded: not-needed | ||
11 | Last-Update: 2019-06-05 | ||
12 | |||
13 | Patch-Name: debian-banner.patch | ||
14 | --- | ||
15 | kex.c | 5 +++-- | ||
16 | kex.h | 2 +- | ||
17 | servconf.c | 9 +++++++++ | ||
18 | servconf.h | 2 ++ | ||
19 | sshconnect.c | 2 +- | ||
20 | sshd.c | 3 ++- | ||
21 | sshd_config.5 | 5 +++++ | ||
22 | 7 files changed, 23 insertions(+), 5 deletions(-) | ||
23 | |||
24 | diff --git a/kex.c b/kex.c | ||
25 | index be354206d..bbb7a2340 100644 | ||
26 | --- a/kex.c | ||
27 | +++ b/kex.c | ||
28 | @@ -1168,7 +1168,7 @@ send_error(struct ssh *ssh, char *msg) | ||
29 | */ | ||
30 | int | ||
31 | kex_exchange_identification(struct ssh *ssh, int timeout_ms, | ||
32 | - const char *version_addendum) | ||
33 | + int debian_banner, const char *version_addendum) | ||
34 | { | ||
35 | int remote_major, remote_minor, mismatch; | ||
36 | size_t len, i, n; | ||
37 | @@ -1186,7 +1186,8 @@ kex_exchange_identification(struct ssh *ssh, int timeout_ms, | ||
38 | if (version_addendum != NULL && *version_addendum == '\0') | ||
39 | version_addendum = NULL; | ||
40 | if ((r = sshbuf_putf(our_version, "SSH-%d.%d-%.100s%s%s\r\n", | ||
41 | - PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2, SSH_RELEASE, | ||
42 | + PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2, | ||
43 | + debian_banner ? SSH_RELEASE : SSH_RELEASE_MINIMUM, | ||
44 | version_addendum == NULL ? "" : " ", | ||
45 | version_addendum == NULL ? "" : version_addendum)) != 0) { | ||
46 | error("%s: sshbuf_putf: %s", __func__, ssh_err(r)); | ||
47 | diff --git a/kex.h b/kex.h | ||
48 | index 2d5f1d4ed..39f67bbc1 100644 | ||
49 | --- a/kex.h | ||
50 | +++ b/kex.h | ||
51 | @@ -195,7 +195,7 @@ char *kex_names_cat(const char *, const char *); | ||
52 | int kex_assemble_names(char **, const char *, const char *); | ||
53 | int kex_gss_names_valid(const char *); | ||
54 | |||
55 | -int kex_exchange_identification(struct ssh *, int, const char *); | ||
56 | +int kex_exchange_identification(struct ssh *, int, int, const char *); | ||
57 | |||
58 | struct kex *kex_new(void); | ||
59 | int kex_ready(struct ssh *, char *[PROPOSAL_MAX]); | ||
60 | diff --git a/servconf.c b/servconf.c | ||
61 | index c01e0690e..8d2bced52 100644 | ||
62 | --- a/servconf.c | ||
63 | +++ b/servconf.c | ||
64 | @@ -184,6 +184,7 @@ initialize_server_options(ServerOptions *options) | ||
65 | options->fingerprint_hash = -1; | ||
66 | options->disable_forwarding = -1; | ||
67 | options->expose_userauth_info = -1; | ||
68 | + options->debian_banner = -1; | ||
69 | } | ||
70 | |||
71 | /* Returns 1 if a string option is unset or set to "none" or 0 otherwise. */ | ||
72 | @@ -437,6 +438,8 @@ fill_default_server_options(ServerOptions *options) | ||
73 | options->disable_forwarding = 0; | ||
74 | if (options->expose_userauth_info == -1) | ||
75 | options->expose_userauth_info = 0; | ||
76 | + if (options->debian_banner == -1) | ||
77 | + options->debian_banner = 1; | ||
78 | |||
79 | assemble_algorithms(options); | ||
80 | |||
81 | @@ -523,6 +526,7 @@ typedef enum { | ||
82 | sStreamLocalBindMask, sStreamLocalBindUnlink, | ||
83 | sAllowStreamLocalForwarding, sFingerprintHash, sDisableForwarding, | ||
84 | sExposeAuthInfo, sRDomain, | ||
85 | + sDebianBanner, | ||
86 | sDeprecated, sIgnore, sUnsupported | ||
87 | } ServerOpCodes; | ||
88 | |||
89 | @@ -682,6 +686,7 @@ static struct { | ||
90 | { "exposeauthinfo", sExposeAuthInfo, SSHCFG_ALL }, | ||
91 | { "rdomain", sRDomain, SSHCFG_ALL }, | ||
92 | { "casignaturealgorithms", sCASignatureAlgorithms, SSHCFG_ALL }, | ||
93 | + { "debianbanner", sDebianBanner, SSHCFG_GLOBAL }, | ||
94 | { NULL, sBadOption, 0 } | ||
95 | }; | ||
96 | |||
97 | @@ -2211,6 +2216,10 @@ process_server_config_line(ServerOptions *options, char *line, | ||
98 | *charptr = xstrdup(arg); | ||
99 | break; | ||
100 | |||
101 | + case sDebianBanner: | ||
102 | + intptr = &options->debian_banner; | ||
103 | + goto parse_flag; | ||
104 | + | ||
105 | case sDeprecated: | ||
106 | case sIgnore: | ||
107 | case sUnsupported: | ||
108 | diff --git a/servconf.h b/servconf.h | ||
109 | index a476d5220..986093ffa 100644 | ||
110 | --- a/servconf.h | ||
111 | +++ b/servconf.h | ||
112 | @@ -214,6 +214,8 @@ typedef struct { | ||
113 | int fingerprint_hash; | ||
114 | int expose_userauth_info; | ||
115 | u_int64_t timing_secret; | ||
116 | + | ||
117 | + int debian_banner; | ||
118 | } ServerOptions; | ||
119 | |||
120 | /* Information about the incoming connection as used by Match */ | ||
121 | diff --git a/sshconnect.c b/sshconnect.c | ||
122 | index 0b6f6af4b..1183ffe0e 100644 | ||
123 | --- a/sshconnect.c | ||
124 | +++ b/sshconnect.c | ||
125 | @@ -1287,7 +1287,7 @@ ssh_login(struct ssh *ssh, Sensitive *sensitive, const char *orighost, | ||
126 | lowercase(host); | ||
127 | |||
128 | /* Exchange protocol version identification strings with the server. */ | ||
129 | - if (kex_exchange_identification(ssh, timeout_ms, NULL) != 0) | ||
130 | + if (kex_exchange_identification(ssh, timeout_ms, 1, NULL) != 0) | ||
131 | cleanup_exit(255); /* error already logged */ | ||
132 | |||
133 | /* Put the connection into non-blocking mode. */ | ||
134 | diff --git a/sshd.c b/sshd.c | ||
135 | index e3e96426e..1e7ece588 100644 | ||
136 | --- a/sshd.c | ||
137 | +++ b/sshd.c | ||
138 | @@ -2160,7 +2160,8 @@ main(int ac, char **av) | ||
139 | if (!debug_flag) | ||
140 | alarm(options.login_grace_time); | ||
141 | |||
142 | - if (kex_exchange_identification(ssh, -1, options.version_addendum) != 0) | ||
143 | + if (kex_exchange_identification(ssh, -1, options.debian_banner, | ||
144 | + options.version_addendum) != 0) | ||
145 | cleanup_exit(255); /* error already logged */ | ||
146 | |||
147 | ssh_packet_set_nonblocking(ssh); | ||
148 | diff --git a/sshd_config.5 b/sshd_config.5 | ||
149 | index 2ef671d1b..addea54a0 100644 | ||
150 | --- a/sshd_config.5 | ||
151 | +++ b/sshd_config.5 | ||
152 | @@ -543,6 +543,11 @@ or | ||
153 | .Cm no . | ||
154 | The default is | ||
155 | .Cm yes . | ||
156 | +.It Cm DebianBanner | ||
157 | +Specifies whether the distribution-specified extra version suffix is | ||
158 | +included during initial protocol handshake. | ||
159 | +The default is | ||
160 | +.Cm yes . | ||
161 | .It Cm DenyGroups | ||
162 | This keyword can be followed by a list of group name patterns, separated | ||
163 | by spaces. | ||
diff --git a/debian/patches/debian-config.patch b/debian/patches/debian-config.patch new file mode 100644 index 000000000..0d47f6706 --- /dev/null +++ b/debian/patches/debian-config.patch | |||
@@ -0,0 +1,238 @@ | |||
1 | From ebd590550bb09fe129b103994d53143788683d05 Mon Sep 17 00:00:00 2001 | ||
2 | From: Colin Watson <cjwatson@debian.org> | ||
3 | Date: Sun, 9 Feb 2014 16:10:18 +0000 | ||
4 | Subject: Various Debian-specific configuration changes | ||
5 | |||
6 | ssh: Enable ForwardX11Trusted, returning to earlier semantics which cause | ||
7 | fewer problems with existing setups (http://bugs.debian.org/237021). | ||
8 | |||
9 | ssh: Set 'SendEnv LANG LC_*' by default (http://bugs.debian.org/264024). | ||
10 | |||
11 | ssh: Enable HashKnownHosts by default to try to limit the spread of ssh | ||
12 | worms. | ||
13 | |||
14 | ssh: Enable GSSAPIAuthentication by default. | ||
15 | |||
16 | sshd: Enable PAM, disable ChallengeResponseAuthentication, and disable | ||
17 | PrintMotd. | ||
18 | |||
19 | sshd: Enable X11Forwarding. | ||
20 | |||
21 | sshd: Set 'AcceptEnv LANG LC_*' by default. | ||
22 | |||
23 | sshd: Change sftp subsystem path to /usr/lib/openssh/sftp-server. | ||
24 | |||
25 | Document all of this. | ||
26 | |||
27 | Author: Russ Allbery <rra@debian.org> | ||
28 | Forwarded: not-needed | ||
29 | Last-Update: 2017-10-04 | ||
30 | |||
31 | Patch-Name: debian-config.patch | ||
32 | --- | ||
33 | readconf.c | 2 +- | ||
34 | ssh.1 | 21 +++++++++++++++++++++ | ||
35 | ssh_config | 6 +++++- | ||
36 | ssh_config.5 | 19 ++++++++++++++++++- | ||
37 | sshd_config | 16 ++++++++++------ | ||
38 | sshd_config.5 | 22 ++++++++++++++++++++++ | ||
39 | 6 files changed, 77 insertions(+), 9 deletions(-) | ||
40 | |||
41 | diff --git a/readconf.c b/readconf.c | ||
42 | index cd60007f8..f35bde6e6 100644 | ||
43 | --- a/readconf.c | ||
44 | +++ b/readconf.c | ||
45 | @@ -2028,7 +2028,7 @@ fill_default_options(Options * options) | ||
46 | if (options->forward_x11 == -1) | ||
47 | options->forward_x11 = 0; | ||
48 | if (options->forward_x11_trusted == -1) | ||
49 | - options->forward_x11_trusted = 0; | ||
50 | + options->forward_x11_trusted = 1; | ||
51 | if (options->forward_x11_timeout == -1) | ||
52 | options->forward_x11_timeout = 1200; | ||
53 | /* | ||
54 | diff --git a/ssh.1 b/ssh.1 | ||
55 | index 8d2b08a29..4e298cb56 100644 | ||
56 | --- a/ssh.1 | ||
57 | +++ b/ssh.1 | ||
58 | @@ -795,6 +795,16 @@ directive in | ||
59 | .Xr ssh_config 5 | ||
60 | for more information. | ||
61 | .Pp | ||
62 | +(Debian-specific: X11 forwarding is not subjected to X11 SECURITY extension | ||
63 | +restrictions by default, because too many programs currently crash in this | ||
64 | +mode. | ||
65 | +Set the | ||
66 | +.Cm ForwardX11Trusted | ||
67 | +option to | ||
68 | +.Dq no | ||
69 | +to restore the upstream behaviour. | ||
70 | +This may change in future depending on client-side improvements.) | ||
71 | +.Pp | ||
72 | .It Fl x | ||
73 | Disables X11 forwarding. | ||
74 | .Pp | ||
75 | @@ -803,6 +813,17 @@ Enables trusted X11 forwarding. | ||
76 | Trusted X11 forwardings are not subjected to the X11 SECURITY extension | ||
77 | controls. | ||
78 | .Pp | ||
79 | +(Debian-specific: This option does nothing in the default configuration: it | ||
80 | +is equivalent to | ||
81 | +.Dq Cm ForwardX11Trusted No yes , | ||
82 | +which is the default as described above. | ||
83 | +Set the | ||
84 | +.Cm ForwardX11Trusted | ||
85 | +option to | ||
86 | +.Dq no | ||
87 | +to restore the upstream behaviour. | ||
88 | +This may change in future depending on client-side improvements.) | ||
89 | +.Pp | ||
90 | .It Fl y | ||
91 | Send log information using the | ||
92 | .Xr syslog 3 | ||
93 | diff --git a/ssh_config b/ssh_config | ||
94 | index 1ff999b68..6dd6ecf87 100644 | ||
95 | --- a/ssh_config | ||
96 | +++ b/ssh_config | ||
97 | @@ -17,9 +17,10 @@ | ||
98 | # list of available options, their meanings and defaults, please see the | ||
99 | # ssh_config(5) man page. | ||
100 | |||
101 | -# Host * | ||
102 | +Host * | ||
103 | # ForwardAgent no | ||
104 | # ForwardX11 no | ||
105 | +# ForwardX11Trusted yes | ||
106 | # PasswordAuthentication yes | ||
107 | # HostbasedAuthentication no | ||
108 | # GSSAPIAuthentication no | ||
109 | @@ -45,3 +46,6 @@ | ||
110 | # VisualHostKey no | ||
111 | # ProxyCommand ssh -q -W %h:%p gateway.example.com | ||
112 | # RekeyLimit 1G 1h | ||
113 | + SendEnv LANG LC_* | ||
114 | + HashKnownHosts yes | ||
115 | + GSSAPIAuthentication yes | ||
116 | diff --git a/ssh_config.5 b/ssh_config.5 | ||
117 | index 39535c4f8..a27631ae9 100644 | ||
118 | --- a/ssh_config.5 | ||
119 | +++ b/ssh_config.5 | ||
120 | @@ -71,6 +71,22 @@ Since the first obtained value for each parameter is used, more | ||
121 | host-specific declarations should be given near the beginning of the | ||
122 | file, and general defaults at the end. | ||
123 | .Pp | ||
124 | +Note that the Debian | ||
125 | +.Ic openssh-client | ||
126 | +package sets several options as standard in | ||
127 | +.Pa /etc/ssh/ssh_config | ||
128 | +which are not the default in | ||
129 | +.Xr ssh 1 : | ||
130 | +.Pp | ||
131 | +.Bl -bullet -offset indent -compact | ||
132 | +.It | ||
133 | +.Cm SendEnv No LANG LC_* | ||
134 | +.It | ||
135 | +.Cm HashKnownHosts No yes | ||
136 | +.It | ||
137 | +.Cm GSSAPIAuthentication No yes | ||
138 | +.El | ||
139 | +.Pp | ||
140 | The file contains keyword-argument pairs, one per line. | ||
141 | Lines starting with | ||
142 | .Ql # | ||
143 | @@ -717,11 +733,12 @@ elapsed. | ||
144 | .It Cm ForwardX11Trusted | ||
145 | If this option is set to | ||
146 | .Cm yes , | ||
147 | +(the Debian-specific default), | ||
148 | remote X11 clients will have full access to the original X11 display. | ||
149 | .Pp | ||
150 | If this option is set to | ||
151 | .Cm no | ||
152 | -(the default), | ||
153 | +(the upstream default), | ||
154 | remote X11 clients will be considered untrusted and prevented | ||
155 | from stealing or tampering with data belonging to trusted X11 | ||
156 | clients. | ||
157 | diff --git a/sshd_config b/sshd_config | ||
158 | index 2c48105f8..ed8272f6d 100644 | ||
159 | --- a/sshd_config | ||
160 | +++ b/sshd_config | ||
161 | @@ -57,8 +57,9 @@ AuthorizedKeysFile .ssh/authorized_keys | ||
162 | #PasswordAuthentication yes | ||
163 | #PermitEmptyPasswords no | ||
164 | |||
165 | -# Change to no to disable s/key passwords | ||
166 | -#ChallengeResponseAuthentication yes | ||
167 | +# Change to yes to enable challenge-response passwords (beware issues with | ||
168 | +# some PAM modules and threads) | ||
169 | +ChallengeResponseAuthentication no | ||
170 | |||
171 | # Kerberos options | ||
172 | #KerberosAuthentication no | ||
173 | @@ -81,16 +82,16 @@ AuthorizedKeysFile .ssh/authorized_keys | ||
174 | # If you just want the PAM account and session checks to run without | ||
175 | # PAM authentication, then enable this but set PasswordAuthentication | ||
176 | # and ChallengeResponseAuthentication to 'no'. | ||
177 | -#UsePAM no | ||
178 | +UsePAM yes | ||
179 | |||
180 | #AllowAgentForwarding yes | ||
181 | #AllowTcpForwarding yes | ||
182 | #GatewayPorts no | ||
183 | -#X11Forwarding no | ||
184 | +X11Forwarding yes | ||
185 | #X11DisplayOffset 10 | ||
186 | #X11UseLocalhost yes | ||
187 | #PermitTTY yes | ||
188 | -#PrintMotd yes | ||
189 | +PrintMotd no | ||
190 | #PrintLastLog yes | ||
191 | #TCPKeepAlive yes | ||
192 | #PermitUserEnvironment no | ||
193 | @@ -107,8 +108,11 @@ AuthorizedKeysFile .ssh/authorized_keys | ||
194 | # no default banner path | ||
195 | #Banner none | ||
196 | |||
197 | +# Allow client to pass locale environment variables | ||
198 | +AcceptEnv LANG LC_* | ||
199 | + | ||
200 | # override default of no subsystems | ||
201 | -Subsystem sftp /usr/libexec/sftp-server | ||
202 | +Subsystem sftp /usr/lib/openssh/sftp-server | ||
203 | |||
204 | # Example of overriding settings on a per-user basis | ||
205 | #Match User anoncvs | ||
206 | diff --git a/sshd_config.5 b/sshd_config.5 | ||
207 | index f995e4ab0..c0c4ebd66 100644 | ||
208 | --- a/sshd_config.5 | ||
209 | +++ b/sshd_config.5 | ||
210 | @@ -56,6 +56,28 @@ Arguments may optionally be enclosed in double quotes | ||
211 | .Pq \&" | ||
212 | in order to represent arguments containing spaces. | ||
213 | .Pp | ||
214 | +Note that the Debian | ||
215 | +.Ic openssh-server | ||
216 | +package sets several options as standard in | ||
217 | +.Pa /etc/ssh/sshd_config | ||
218 | +which are not the default in | ||
219 | +.Xr sshd 8 : | ||
220 | +.Pp | ||
221 | +.Bl -bullet -offset indent -compact | ||
222 | +.It | ||
223 | +.Cm ChallengeResponseAuthentication No no | ||
224 | +.It | ||
225 | +.Cm X11Forwarding No yes | ||
226 | +.It | ||
227 | +.Cm PrintMotd No no | ||
228 | +.It | ||
229 | +.Cm AcceptEnv No LANG LC_* | ||
230 | +.It | ||
231 | +.Cm Subsystem No sftp /usr/lib/openssh/sftp-server | ||
232 | +.It | ||
233 | +.Cm UsePAM No yes | ||
234 | +.El | ||
235 | +.Pp | ||
236 | The possible | ||
237 | keywords and their meanings are as follows (note that | ||
238 | keywords are case-insensitive and arguments are case-sensitive): | ||
diff --git a/debian/patches/dnssec-sshfp.patch b/debian/patches/dnssec-sshfp.patch new file mode 100644 index 000000000..6879e11ba --- /dev/null +++ b/debian/patches/dnssec-sshfp.patch | |||
@@ -0,0 +1,94 @@ | |||
1 | From 13a16baaf467fae5d507cdb17e3bc753639bca4f Mon Sep 17 00:00:00 2001 | ||
2 | From: Colin Watson <cjwatson@debian.org> | ||
3 | Date: Sun, 9 Feb 2014 16:10:01 +0000 | ||
4 | Subject: Force use of DNSSEC even if "options edns0" isn't in resolv.conf | ||
5 | |||
6 | This allows SSHFP DNS records to be verified if glibc 2.11 is installed. | ||
7 | |||
8 | Origin: vendor, https://cvs.fedoraproject.org/viewvc/F-12/openssh/openssh-5.2p1-edns.patch?revision=1.1&view=markup | ||
9 | Bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=572049 | ||
10 | Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=572049 | ||
11 | Last-Update: 2010-04-06 | ||
12 | |||
13 | Patch-Name: dnssec-sshfp.patch | ||
14 | --- | ||
15 | dns.c | 14 +++++++++++++- | ||
16 | openbsd-compat/getrrsetbyname.c | 10 +++++----- | ||
17 | openbsd-compat/getrrsetbyname.h | 3 +++ | ||
18 | 3 files changed, 21 insertions(+), 6 deletions(-) | ||
19 | |||
20 | diff --git a/dns.c b/dns.c | ||
21 | index ff1a2c41c..82ec97199 100644 | ||
22 | --- a/dns.c | ||
23 | +++ b/dns.c | ||
24 | @@ -211,6 +211,7 @@ verify_host_key_dns(const char *hostname, struct sockaddr *address, | ||
25 | { | ||
26 | u_int counter; | ||
27 | int result; | ||
28 | + unsigned int rrset_flags = 0; | ||
29 | struct rrsetinfo *fingerprints = NULL; | ||
30 | |||
31 | u_int8_t hostkey_algorithm; | ||
32 | @@ -234,8 +235,19 @@ verify_host_key_dns(const char *hostname, struct sockaddr *address, | ||
33 | return -1; | ||
34 | } | ||
35 | |||
36 | + /* | ||
37 | + * Original getrrsetbyname function, found on OpenBSD for example, | ||
38 | + * doesn't accept any flag and prerequisite for obtaining AD bit in | ||
39 | + * DNS response is set by "options edns0" in resolv.conf. | ||
40 | + * | ||
41 | + * Our version is more clever and use RRSET_FORCE_EDNS0 flag. | ||
42 | + */ | ||
43 | +#ifndef HAVE_GETRRSETBYNAME | ||
44 | + rrset_flags |= RRSET_FORCE_EDNS0; | ||
45 | +#endif | ||
46 | result = getrrsetbyname(hostname, DNS_RDATACLASS_IN, | ||
47 | - DNS_RDATATYPE_SSHFP, 0, &fingerprints); | ||
48 | + DNS_RDATATYPE_SSHFP, rrset_flags, &fingerprints); | ||
49 | + | ||
50 | if (result) { | ||
51 | verbose("DNS lookup error: %s", dns_result_totext(result)); | ||
52 | return -1; | ||
53 | diff --git a/openbsd-compat/getrrsetbyname.c b/openbsd-compat/getrrsetbyname.c | ||
54 | index dc6fe0533..e061a290a 100644 | ||
55 | --- a/openbsd-compat/getrrsetbyname.c | ||
56 | +++ b/openbsd-compat/getrrsetbyname.c | ||
57 | @@ -209,8 +209,8 @@ getrrsetbyname(const char *hostname, unsigned int rdclass, | ||
58 | goto fail; | ||
59 | } | ||
60 | |||
61 | - /* don't allow flags yet, unimplemented */ | ||
62 | - if (flags) { | ||
63 | + /* Allow RRSET_FORCE_EDNS0 flag only. */ | ||
64 | + if ((flags & !RRSET_FORCE_EDNS0) != 0) { | ||
65 | result = ERRSET_INVAL; | ||
66 | goto fail; | ||
67 | } | ||
68 | @@ -226,9 +226,9 @@ getrrsetbyname(const char *hostname, unsigned int rdclass, | ||
69 | #endif /* DEBUG */ | ||
70 | |||
71 | #ifdef RES_USE_DNSSEC | ||
72 | - /* turn on DNSSEC if EDNS0 is configured */ | ||
73 | - if (_resp->options & RES_USE_EDNS0) | ||
74 | - _resp->options |= RES_USE_DNSSEC; | ||
75 | + /* turn on DNSSEC if required */ | ||
76 | + if (flags & RRSET_FORCE_EDNS0) | ||
77 | + _resp->options |= (RES_USE_EDNS0|RES_USE_DNSSEC); | ||
78 | #endif /* RES_USE_DNSEC */ | ||
79 | |||
80 | /* make query */ | ||
81 | diff --git a/openbsd-compat/getrrsetbyname.h b/openbsd-compat/getrrsetbyname.h | ||
82 | index 1283f5506..dbbc85a2a 100644 | ||
83 | --- a/openbsd-compat/getrrsetbyname.h | ||
84 | +++ b/openbsd-compat/getrrsetbyname.h | ||
85 | @@ -72,6 +72,9 @@ | ||
86 | #ifndef RRSET_VALIDATED | ||
87 | # define RRSET_VALIDATED 1 | ||
88 | #endif | ||
89 | +#ifndef RRSET_FORCE_EDNS0 | ||
90 | +# define RRSET_FORCE_EDNS0 0x0001 | ||
91 | +#endif | ||
92 | |||
93 | /* | ||
94 | * Return codes for getrrsetbyname() | ||
diff --git a/debian/patches/doc-hash-tab-completion.patch b/debian/patches/doc-hash-tab-completion.patch new file mode 100644 index 000000000..60ded7c30 --- /dev/null +++ b/debian/patches/doc-hash-tab-completion.patch | |||
@@ -0,0 +1,28 @@ | |||
1 | From 099b0bdc57b9a21842c457d83ff9488fa814c9c4 Mon Sep 17 00:00:00 2001 | ||
2 | From: Colin Watson <cjwatson@debian.org> | ||
3 | Date: Sun, 9 Feb 2014 16:10:11 +0000 | ||
4 | Subject: Document that HashKnownHosts may break tab-completion | ||
5 | |||
6 | Bug: https://bugzilla.mindrot.org/show_bug.cgi?id=1727 | ||
7 | Bug-Debian: http://bugs.debian.org/430154 | ||
8 | Last-Update: 2013-09-14 | ||
9 | |||
10 | Patch-Name: doc-hash-tab-completion.patch | ||
11 | --- | ||
12 | ssh_config.5 | 3 +++ | ||
13 | 1 file changed, 3 insertions(+) | ||
14 | |||
15 | diff --git a/ssh_config.5 b/ssh_config.5 | ||
16 | index bd1e9311d..39535c4f8 100644 | ||
17 | --- a/ssh_config.5 | ||
18 | +++ b/ssh_config.5 | ||
19 | @@ -836,6 +836,9 @@ Note that existing names and addresses in known hosts files | ||
20 | will not be converted automatically, | ||
21 | but may be manually hashed using | ||
22 | .Xr ssh-keygen 1 . | ||
23 | +Use of this option may break facilities such as tab-completion that rely | ||
24 | +on being able to read unhashed host names from | ||
25 | +.Pa ~/.ssh/known_hosts . | ||
26 | .It Cm HostbasedAuthentication | ||
27 | Specifies whether to try rhosts based authentication with public key | ||
28 | authentication. | ||
diff --git a/debian/patches/fix-interop-tests.patch b/debian/patches/fix-interop-tests.patch new file mode 100644 index 000000000..04748b17b --- /dev/null +++ b/debian/patches/fix-interop-tests.patch | |||
@@ -0,0 +1,71 @@ | |||
1 | From 440ef75890c282e75534689cd4e0d3938279b8e0 Mon Sep 17 00:00:00 2001 | ||
2 | From: Colin Watson <cjwatson@debian.org> | ||
3 | Date: Fri, 14 Jun 2019 11:57:15 +0100 | ||
4 | Subject: Fix interop tests for recent regress changes | ||
5 | |||
6 | A recent regress change (2a9b3a2ce411d16cda9c79ab713c55f65b0ec257 in | ||
7 | portable) broke the PuTTY and Twisted Conch interop tests, because the | ||
8 | key they want to use is now called ssh-rsa rather than rsa. Fix them. | ||
9 | |||
10 | Forwarded: https://bugzilla.mindrot.org/show_bug.cgi?id=3020 | ||
11 | Last-Update: 2019-06-14 | ||
12 | |||
13 | Patch-Name: fix-interop-tests.patch | ||
14 | --- | ||
15 | regress/Makefile | 5 +++-- | ||
16 | regress/conch-ciphers.sh | 2 +- | ||
17 | regress/test-exec.sh | 10 +++++----- | ||
18 | 3 files changed, 9 insertions(+), 8 deletions(-) | ||
19 | |||
20 | diff --git a/regress/Makefile b/regress/Makefile | ||
21 | index 925edf71a..781400fd0 100644 | ||
22 | --- a/regress/Makefile | ||
23 | +++ b/regress/Makefile | ||
24 | @@ -113,8 +113,9 @@ CLEANFILES= *.core actual agent-key.* authorized_keys_${USERNAME} \ | ||
25 | rsa1 rsa1-agent rsa1-agent.pub rsa1.pub rsa_ssh2_cr.prv \ | ||
26 | rsa_ssh2_crnl.prv scp-ssh-wrapper.exe \ | ||
27 | scp-ssh-wrapper.scp setuid-allowed sftp-server.log \ | ||
28 | - sftp-server.sh sftp.log ssh-log-wrapper.sh ssh.log \ | ||
29 | - ssh_config ssh_config.* ssh_proxy ssh_proxy_bak \ | ||
30 | + sftp-server.sh sftp.log ssh-log-wrapper.sh \ | ||
31 | + ssh-rsa_oldfmt \ | ||
32 | + ssh.log ssh_config ssh_config.* ssh_proxy ssh_proxy_bak \ | ||
33 | ssh_proxy_envpass sshd.log sshd_config sshd_config_minimal \ | ||
34 | sshd_config.orig sshd_proxy sshd_proxy.* sshd_proxy_bak \ | ||
35 | sshd_proxy_orig t10.out t10.out.pub t12.out t12.out.pub \ | ||
36 | diff --git a/regress/conch-ciphers.sh b/regress/conch-ciphers.sh | ||
37 | index 199d863a0..51e3b705f 100644 | ||
38 | --- a/regress/conch-ciphers.sh | ||
39 | +++ b/regress/conch-ciphers.sh | ||
40 | @@ -16,7 +16,7 @@ for c in aes256-ctr aes256-cbc aes192-ctr aes192-cbc aes128-ctr aes128-cbc \ | ||
41 | rm -f ${COPY} | ||
42 | # XXX the 2nd "cat" seems to be needed because of buggy FD handling | ||
43 | # in conch | ||
44 | - ${CONCH} --identity $OBJ/rsa --port $PORT --user $USER -e none \ | ||
45 | + ${CONCH} --identity $OBJ/ssh-rsa --port $PORT --user $USER -e none \ | ||
46 | --known-hosts $OBJ/known_hosts --notty --noagent --nox11 -n \ | ||
47 | 127.0.0.1 "cat ${DATA}" 2>/dev/null | cat > ${COPY} | ||
48 | if [ $? -ne 0 ]; then | ||
49 | diff --git a/regress/test-exec.sh b/regress/test-exec.sh | ||
50 | index b8e2009de..efde6a173 100644 | ||
51 | --- a/regress/test-exec.sh | ||
52 | +++ b/regress/test-exec.sh | ||
53 | @@ -527,13 +527,13 @@ if test "$REGRESS_INTEROP_PUTTY" = "yes" ; then | ||
54 | >> $OBJ/authorized_keys_$USER | ||
55 | |||
56 | # Convert rsa2 host key to PuTTY format | ||
57 | - cp $OBJ/rsa $OBJ/rsa_oldfmt | ||
58 | - ${SSHKEYGEN} -p -N '' -m PEM -f $OBJ/rsa_oldfmt >/dev/null | ||
59 | - ${SRC}/ssh2putty.sh 127.0.0.1 $PORT $OBJ/rsa_oldfmt > \ | ||
60 | + cp $OBJ/ssh-rsa $OBJ/ssh-rsa_oldfmt | ||
61 | + ${SSHKEYGEN} -p -N '' -m PEM -f $OBJ/ssh-rsa_oldfmt >/dev/null | ||
62 | + ${SRC}/ssh2putty.sh 127.0.0.1 $PORT $OBJ/ssh-rsa_oldfmt > \ | ||
63 | ${OBJ}/.putty/sshhostkeys | ||
64 | - ${SRC}/ssh2putty.sh 127.0.0.1 22 $OBJ/rsa_oldfmt >> \ | ||
65 | + ${SRC}/ssh2putty.sh 127.0.0.1 22 $OBJ/ssh-rsa_oldfmt >> \ | ||
66 | ${OBJ}/.putty/sshhostkeys | ||
67 | - rm -f $OBJ/rsa_oldfmt | ||
68 | + rm -f $OBJ/ssh-rsa_oldfmt | ||
69 | |||
70 | # Setup proxied session | ||
71 | mkdir -p ${OBJ}/.putty/sessions | ||
diff --git a/debian/patches/fix-utimensat-test.patch b/debian/patches/fix-utimensat-test.patch new file mode 100644 index 000000000..2f994aafd --- /dev/null +++ b/debian/patches/fix-utimensat-test.patch | |||
@@ -0,0 +1,58 @@ | |||
1 | From 0c3b0631695be33f711eda233bfee3dab77d405c Mon Sep 17 00:00:00 2001 | ||
2 | From: Darren Tucker <dtucker@dtucker.net> | ||
3 | Date: Fri, 7 Jun 2019 23:47:37 +1000 | ||
4 | Subject: Update utimensat test. | ||
5 | |||
6 | POSIX specifies that when given a symlink, AT_SYMLINK_NOFOLLOW should | ||
7 | update the symlink and not the destination. The compat code doesn't | ||
8 | have a way to do this, so where possible it fails instead of following a | ||
9 | symlink when explicitly asked not to. Instead of checking for an explicit | ||
10 | failure, check that it does not update the destination, which both the | ||
11 | real and compat implementations should honour. | ||
12 | |||
13 | Inspired by github pull req #125 from chutzpah at gentoo.org. | ||
14 | |||
15 | Origin: upstream, https://anongit.mindrot.org/openssh.git/commit/?id=182898192d4b720e4faeafd5b39c2cfb3b92aa21 | ||
16 | Last-Update: 2019-06-09 | ||
17 | |||
18 | Patch-Name: fix-utimensat-test.patch | ||
19 | --- | ||
20 | openbsd-compat/regress/utimensattest.c | 20 +++++++++++++++++--- | ||
21 | 1 file changed, 17 insertions(+), 3 deletions(-) | ||
22 | |||
23 | diff --git a/openbsd-compat/regress/utimensattest.c b/openbsd-compat/regress/utimensattest.c | ||
24 | index a7bc7634b..b29cef2f1 100644 | ||
25 | --- a/openbsd-compat/regress/utimensattest.c | ||
26 | +++ b/openbsd-compat/regress/utimensattest.c | ||
27 | @@ -83,14 +83,28 @@ main(void) | ||
28 | fail("mtim.tv_nsec", 45678000, sb.st_mtim.tv_nsec); | ||
29 | #endif | ||
30 | |||
31 | + /* | ||
32 | + * POSIX specifies that when given a symlink, AT_SYMLINK_NOFOLLOW | ||
33 | + * should update the symlink and not the destination. The compat | ||
34 | + * code doesn't have a way to do this, so where possible it fails | ||
35 | + * with ENOSYS instead of following a symlink when explicitly asked | ||
36 | + * not to. Here we just test that it does not update the destination. | ||
37 | + */ | ||
38 | if (rename(TMPFILE, TMPFILE2) == -1) | ||
39 | fail("rename", 0, 0); | ||
40 | if (symlink(TMPFILE2, TMPFILE) == -1) | ||
41 | fail("symlink", 0, 0); | ||
42 | + ts[0].tv_sec = 11223344; | ||
43 | + ts[1].tv_sec = 55667788; | ||
44 | + (void)utimensat(AT_FDCWD, TMPFILE, ts, AT_SYMLINK_NOFOLLOW); | ||
45 | + if (stat(TMPFILE2, &sb) == -1) | ||
46 | + fail("stat", 0, 0 ); | ||
47 | + if (sb.st_atime == 11223344) | ||
48 | + fail("utimensat symlink st_atime", 0, 0 ); | ||
49 | + if (sb.st_mtime == 55667788) | ||
50 | + fail("utimensat symlink st_mtime", 0, 0 ); | ||
51 | |||
52 | - if (utimensat(AT_FDCWD, TMPFILE, ts, AT_SYMLINK_NOFOLLOW) != -1) | ||
53 | - fail("utimensat followed symlink", 0, 0); | ||
54 | - | ||
55 | + /* Clean up */ | ||
56 | if (!(unlink(TMPFILE) == 0 && unlink(TMPFILE2) == 0)) | ||
57 | fail("unlink", 0, 0); | ||
58 | exit(0); | ||
diff --git a/debian/patches/gnome-ssh-askpass2-icon.patch b/debian/patches/gnome-ssh-askpass2-icon.patch new file mode 100644 index 000000000..35f3327df --- /dev/null +++ b/debian/patches/gnome-ssh-askpass2-icon.patch | |||
@@ -0,0 +1,26 @@ | |||
1 | From 601332e5cc1198d6dabddc8168249a81c5dc822a Mon Sep 17 00:00:00 2001 | ||
2 | From: Vincent Untz <vuntz@ubuntu.com> | ||
3 | Date: Sun, 9 Feb 2014 16:10:16 +0000 | ||
4 | Subject: Give the ssh-askpass-gnome window a default icon | ||
5 | |||
6 | Bug-Ubuntu: https://bugs.launchpad.net/bugs/27152 | ||
7 | Last-Update: 2010-02-28 | ||
8 | |||
9 | Patch-Name: gnome-ssh-askpass2-icon.patch | ||
10 | --- | ||
11 | contrib/gnome-ssh-askpass2.c | 2 ++ | ||
12 | 1 file changed, 2 insertions(+) | ||
13 | |||
14 | diff --git a/contrib/gnome-ssh-askpass2.c b/contrib/gnome-ssh-askpass2.c | ||
15 | index 535a69274..e37a13382 100644 | ||
16 | --- a/contrib/gnome-ssh-askpass2.c | ||
17 | +++ b/contrib/gnome-ssh-askpass2.c | ||
18 | @@ -211,6 +211,8 @@ main(int argc, char **argv) | ||
19 | |||
20 | gtk_init(&argc, &argv); | ||
21 | |||
22 | + gtk_window_set_default_icon_from_file ("/usr/share/pixmaps/ssh-askpass-gnome.png", NULL); | ||
23 | + | ||
24 | if (argc > 1) { | ||
25 | message = g_strjoinv(" ", argv + 1); | ||
26 | } else { | ||
diff --git a/debian/patches/gssapi.patch b/debian/patches/gssapi.patch new file mode 100644 index 000000000..45d131d27 --- /dev/null +++ b/debian/patches/gssapi.patch | |||
@@ -0,0 +1,4088 @@ | |||
1 | From 7ce79be85036c4b36937f1b1ba85f6094068412c Mon Sep 17 00:00:00 2001 | ||
2 | From: Simon Wilkinson <simon@sxw.org.uk> | ||
3 | Date: Sun, 9 Feb 2014 16:09:48 +0000 | ||
4 | Subject: GSSAPI key exchange support | ||
5 | |||
6 | This patch has been rejected upstream: "None of the OpenSSH developers are | ||
7 | in favour of adding this, and this situation has not changed for several | ||
8 | years. This is not a slight on Simon's patch, which is of fine quality, but | ||
9 | just that a) we don't trust GSSAPI implementations that much and b) we don't | ||
10 | like adding new KEX since they are pre-auth attack surface. This one is | ||
11 | particularly scary, since it requires hooks out to typically root-owned | ||
12 | system resources." | ||
13 | |||
14 | However, quite a lot of people rely on this in Debian, and it's better to | ||
15 | have it merged into the main openssh package rather than having separate | ||
16 | -krb5 packages (as we used to have). It seems to have a generally good | ||
17 | security history. | ||
18 | |||
19 | Origin: other, https://github.com/openssh-gsskex/openssh-gsskex/commits/debian/master | ||
20 | Bug: https://bugzilla.mindrot.org/show_bug.cgi?id=1242 | ||
21 | Last-Updated: 2019-06-05 | ||
22 | |||
23 | Patch-Name: gssapi.patch | ||
24 | --- | ||
25 | Makefile.in | 3 +- | ||
26 | auth-krb5.c | 17 +- | ||
27 | auth.c | 96 +------- | ||
28 | auth2-gss.c | 56 ++++- | ||
29 | auth2.c | 2 + | ||
30 | canohost.c | 93 ++++++++ | ||
31 | canohost.h | 3 + | ||
32 | clientloop.c | 15 +- | ||
33 | configure.ac | 24 ++ | ||
34 | gss-genr.c | 300 +++++++++++++++++++++++- | ||
35 | gss-serv-krb5.c | 85 ++++++- | ||
36 | gss-serv.c | 186 +++++++++++++-- | ||
37 | hmac.c | 1 + | ||
38 | kex.c | 66 +++++- | ||
39 | kex.h | 29 +++ | ||
40 | kexdh.c | 10 + | ||
41 | kexgen.c | 2 +- | ||
42 | kexgssc.c | 606 ++++++++++++++++++++++++++++++++++++++++++++++++ | ||
43 | kexgsss.c | 474 +++++++++++++++++++++++++++++++++++++ | ||
44 | mac.c | 1 + | ||
45 | monitor.c | 139 ++++++++++- | ||
46 | monitor.h | 2 + | ||
47 | monitor_wrap.c | 57 ++++- | ||
48 | monitor_wrap.h | 4 +- | ||
49 | readconf.c | 70 ++++++ | ||
50 | readconf.h | 6 + | ||
51 | servconf.c | 47 ++++ | ||
52 | servconf.h | 3 + | ||
53 | session.c | 10 +- | ||
54 | ssh-gss.h | 50 +++- | ||
55 | ssh.1 | 8 + | ||
56 | ssh.c | 4 +- | ||
57 | ssh_config | 2 + | ||
58 | ssh_config.5 | 57 +++++ | ||
59 | sshconnect2.c | 140 ++++++++++- | ||
60 | sshd.c | 120 +++++++++- | ||
61 | sshd_config | 2 + | ||
62 | sshd_config.5 | 30 +++ | ||
63 | sshkey.c | 3 +- | ||
64 | sshkey.h | 1 + | ||
65 | 40 files changed, 2664 insertions(+), 160 deletions(-) | ||
66 | create mode 100644 kexgssc.c | ||
67 | create mode 100644 kexgsss.c | ||
68 | |||
69 | diff --git a/Makefile.in b/Makefile.in | ||
70 | index 6f001bb36..c31821acc 100644 | ||
71 | --- a/Makefile.in | ||
72 | +++ b/Makefile.in | ||
73 | @@ -100,6 +100,7 @@ LIBSSH_OBJS=${LIBOPENSSH_OBJS} \ | ||
74 | kex.o kexdh.o kexgex.o kexecdh.o kexc25519.o \ | ||
75 | kexgexc.o kexgexs.o \ | ||
76 | sntrup4591761.o kexsntrup4591761x25519.o kexgen.o \ | ||
77 | + kexgssc.o \ | ||
78 | platform-pledge.o platform-tracing.o platform-misc.o | ||
79 | |||
80 | |||
81 | @@ -114,7 +115,7 @@ SSHDOBJS=sshd.o auth-rhosts.o auth-passwd.o \ | ||
82 | auth-bsdauth.o auth2-hostbased.o auth2-kbdint.o \ | ||
83 | auth2-none.o auth2-passwd.o auth2-pubkey.o \ | ||
84 | monitor.o monitor_wrap.o auth-krb5.o \ | ||
85 | - auth2-gss.o gss-serv.o gss-serv-krb5.o \ | ||
86 | + auth2-gss.o gss-serv.o gss-serv-krb5.o kexgsss.o \ | ||
87 | loginrec.o auth-pam.o auth-shadow.o auth-sia.o md5crypt.o \ | ||
88 | sftp-server.o sftp-common.o \ | ||
89 | sandbox-null.o sandbox-rlimit.o sandbox-systrace.o sandbox-darwin.o \ | ||
90 | diff --git a/auth-krb5.c b/auth-krb5.c | ||
91 | index 3096f1c8e..204752e1b 100644 | ||
92 | --- a/auth-krb5.c | ||
93 | +++ b/auth-krb5.c | ||
94 | @@ -182,8 +182,13 @@ auth_krb5_password(Authctxt *authctxt, const char *password) | ||
95 | |||
96 | len = strlen(authctxt->krb5_ticket_file) + 6; | ||
97 | authctxt->krb5_ccname = xmalloc(len); | ||
98 | +#ifdef USE_CCAPI | ||
99 | + snprintf(authctxt->krb5_ccname, len, "API:%s", | ||
100 | + authctxt->krb5_ticket_file); | ||
101 | +#else | ||
102 | snprintf(authctxt->krb5_ccname, len, "FILE:%s", | ||
103 | authctxt->krb5_ticket_file); | ||
104 | +#endif | ||
105 | |||
106 | #ifdef USE_PAM | ||
107 | if (options.use_pam) | ||
108 | @@ -240,15 +245,22 @@ krb5_cleanup_proc(Authctxt *authctxt) | ||
109 | #ifndef HEIMDAL | ||
110 | krb5_error_code | ||
111 | ssh_krb5_cc_gen(krb5_context ctx, krb5_ccache *ccache) { | ||
112 | - int tmpfd, ret, oerrno; | ||
113 | + int ret, oerrno; | ||
114 | char ccname[40]; | ||
115 | mode_t old_umask; | ||
116 | +#ifdef USE_CCAPI | ||
117 | + char cctemplate[] = "API:krb5cc_%d"; | ||
118 | +#else | ||
119 | + char cctemplate[] = "FILE:/tmp/krb5cc_%d_XXXXXXXXXX"; | ||
120 | + int tmpfd; | ||
121 | +#endif | ||
122 | |||
123 | ret = snprintf(ccname, sizeof(ccname), | ||
124 | - "FILE:/tmp/krb5cc_%d_XXXXXXXXXX", geteuid()); | ||
125 | + cctemplate, geteuid()); | ||
126 | if (ret < 0 || (size_t)ret >= sizeof(ccname)) | ||
127 | return ENOMEM; | ||
128 | |||
129 | +#ifndef USE_CCAPI | ||
130 | old_umask = umask(0177); | ||
131 | tmpfd = mkstemp(ccname + strlen("FILE:")); | ||
132 | oerrno = errno; | ||
133 | @@ -265,6 +277,7 @@ ssh_krb5_cc_gen(krb5_context ctx, krb5_ccache *ccache) { | ||
134 | return oerrno; | ||
135 | } | ||
136 | close(tmpfd); | ||
137 | +#endif | ||
138 | |||
139 | return (krb5_cc_resolve(ctx, ccname, ccache)); | ||
140 | } | ||
141 | diff --git a/auth.c b/auth.c | ||
142 | index 8696f258e..f7a23afba 100644 | ||
143 | --- a/auth.c | ||
144 | +++ b/auth.c | ||
145 | @@ -399,7 +399,8 @@ auth_root_allowed(struct ssh *ssh, const char *method) | ||
146 | case PERMIT_NO_PASSWD: | ||
147 | if (strcmp(method, "publickey") == 0 || | ||
148 | strcmp(method, "hostbased") == 0 || | ||
149 | - strcmp(method, "gssapi-with-mic") == 0) | ||
150 | + strcmp(method, "gssapi-with-mic") == 0 || | ||
151 | + strcmp(method, "gssapi-keyex") == 0) | ||
152 | return 1; | ||
153 | break; | ||
154 | case PERMIT_FORCED_ONLY: | ||
155 | @@ -723,99 +724,6 @@ fakepw(void) | ||
156 | return (&fake); | ||
157 | } | ||
158 | |||
159 | -/* | ||
160 | - * Returns the remote DNS hostname as a string. The returned string must not | ||
161 | - * be freed. NB. this will usually trigger a DNS query the first time it is | ||
162 | - * called. | ||
163 | - * This function does additional checks on the hostname to mitigate some | ||
164 | - * attacks on legacy rhosts-style authentication. | ||
165 | - * XXX is RhostsRSAAuthentication vulnerable to these? | ||
166 | - * XXX Can we remove these checks? (or if not, remove RhostsRSAAuthentication?) | ||
167 | - */ | ||
168 | - | ||
169 | -static char * | ||
170 | -remote_hostname(struct ssh *ssh) | ||
171 | -{ | ||
172 | - struct sockaddr_storage from; | ||
173 | - socklen_t fromlen; | ||
174 | - struct addrinfo hints, *ai, *aitop; | ||
175 | - char name[NI_MAXHOST], ntop2[NI_MAXHOST]; | ||
176 | - const char *ntop = ssh_remote_ipaddr(ssh); | ||
177 | - | ||
178 | - /* Get IP address of client. */ | ||
179 | - fromlen = sizeof(from); | ||
180 | - memset(&from, 0, sizeof(from)); | ||
181 | - if (getpeername(ssh_packet_get_connection_in(ssh), | ||
182 | - (struct sockaddr *)&from, &fromlen) < 0) { | ||
183 | - debug("getpeername failed: %.100s", strerror(errno)); | ||
184 | - return strdup(ntop); | ||
185 | - } | ||
186 | - | ||
187 | - ipv64_normalise_mapped(&from, &fromlen); | ||
188 | - if (from.ss_family == AF_INET6) | ||
189 | - fromlen = sizeof(struct sockaddr_in6); | ||
190 | - | ||
191 | - debug3("Trying to reverse map address %.100s.", ntop); | ||
192 | - /* Map the IP address to a host name. */ | ||
193 | - if (getnameinfo((struct sockaddr *)&from, fromlen, name, sizeof(name), | ||
194 | - NULL, 0, NI_NAMEREQD) != 0) { | ||
195 | - /* Host name not found. Use ip address. */ | ||
196 | - return strdup(ntop); | ||
197 | - } | ||
198 | - | ||
199 | - /* | ||
200 | - * if reverse lookup result looks like a numeric hostname, | ||
201 | - * someone is trying to trick us by PTR record like following: | ||
202 | - * 1.1.1.10.in-addr.arpa. IN PTR 2.3.4.5 | ||
203 | - */ | ||
204 | - memset(&hints, 0, sizeof(hints)); | ||
205 | - hints.ai_socktype = SOCK_DGRAM; /*dummy*/ | ||
206 | - hints.ai_flags = AI_NUMERICHOST; | ||
207 | - if (getaddrinfo(name, NULL, &hints, &ai) == 0) { | ||
208 | - logit("Nasty PTR record \"%s\" is set up for %s, ignoring", | ||
209 | - name, ntop); | ||
210 | - freeaddrinfo(ai); | ||
211 | - return strdup(ntop); | ||
212 | - } | ||
213 | - | ||
214 | - /* Names are stored in lowercase. */ | ||
215 | - lowercase(name); | ||
216 | - | ||
217 | - /* | ||
218 | - * Map it back to an IP address and check that the given | ||
219 | - * address actually is an address of this host. This is | ||
220 | - * necessary because anyone with access to a name server can | ||
221 | - * define arbitrary names for an IP address. Mapping from | ||
222 | - * name to IP address can be trusted better (but can still be | ||
223 | - * fooled if the intruder has access to the name server of | ||
224 | - * the domain). | ||
225 | - */ | ||
226 | - memset(&hints, 0, sizeof(hints)); | ||
227 | - hints.ai_family = from.ss_family; | ||
228 | - hints.ai_socktype = SOCK_STREAM; | ||
229 | - if (getaddrinfo(name, NULL, &hints, &aitop) != 0) { | ||
230 | - logit("reverse mapping checking getaddrinfo for %.700s " | ||
231 | - "[%s] failed.", name, ntop); | ||
232 | - return strdup(ntop); | ||
233 | - } | ||
234 | - /* Look for the address from the list of addresses. */ | ||
235 | - for (ai = aitop; ai; ai = ai->ai_next) { | ||
236 | - if (getnameinfo(ai->ai_addr, ai->ai_addrlen, ntop2, | ||
237 | - sizeof(ntop2), NULL, 0, NI_NUMERICHOST) == 0 && | ||
238 | - (strcmp(ntop, ntop2) == 0)) | ||
239 | - break; | ||
240 | - } | ||
241 | - freeaddrinfo(aitop); | ||
242 | - /* If we reached the end of the list, the address was not there. */ | ||
243 | - if (ai == NULL) { | ||
244 | - /* Address not found for the host name. */ | ||
245 | - logit("Address %.100s maps to %.600s, but this does not " | ||
246 | - "map back to the address.", ntop, name); | ||
247 | - return strdup(ntop); | ||
248 | - } | ||
249 | - return strdup(name); | ||
250 | -} | ||
251 | - | ||
252 | /* | ||
253 | * Return the canonical name of the host in the other side of the current | ||
254 | * connection. The host name is cached, so it is efficient to call this | ||
255 | diff --git a/auth2-gss.c b/auth2-gss.c | ||
256 | index 9351e0428..d6446c0cf 100644 | ||
257 | --- a/auth2-gss.c | ||
258 | +++ b/auth2-gss.c | ||
259 | @@ -1,7 +1,7 @@ | ||
260 | /* $OpenBSD: auth2-gss.c,v 1.29 2018/07/31 03:10:27 djm Exp $ */ | ||
261 | |||
262 | /* | ||
263 | - * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. | ||
264 | + * Copyright (c) 2001-2007 Simon Wilkinson. All rights reserved. | ||
265 | * | ||
266 | * Redistribution and use in source and binary forms, with or without | ||
267 | * modification, are permitted provided that the following conditions | ||
268 | @@ -54,6 +54,48 @@ static int input_gssapi_mic(int type, u_int32_t plen, struct ssh *ssh); | ||
269 | static int input_gssapi_exchange_complete(int type, u_int32_t plen, struct ssh *ssh); | ||
270 | static int input_gssapi_errtok(int, u_int32_t, struct ssh *); | ||
271 | |||
272 | +/* | ||
273 | + * The 'gssapi_keyex' userauth mechanism. | ||
274 | + */ | ||
275 | +static int | ||
276 | +userauth_gsskeyex(struct ssh *ssh) | ||
277 | +{ | ||
278 | + Authctxt *authctxt = ssh->authctxt; | ||
279 | + int r, authenticated = 0; | ||
280 | + struct sshbuf *b = NULL; | ||
281 | + gss_buffer_desc mic, gssbuf; | ||
282 | + u_char *p; | ||
283 | + size_t len; | ||
284 | + | ||
285 | + if ((r = sshpkt_get_string(ssh, &p, &len)) != 0 || | ||
286 | + (r = sshpkt_get_end(ssh)) != 0) | ||
287 | + fatal("%s: %s", __func__, ssh_err(r)); | ||
288 | + | ||
289 | + if ((b = sshbuf_new()) == NULL) | ||
290 | + fatal("%s: sshbuf_new failed", __func__); | ||
291 | + | ||
292 | + mic.value = p; | ||
293 | + mic.length = len; | ||
294 | + | ||
295 | + ssh_gssapi_buildmic(b, authctxt->user, authctxt->service, | ||
296 | + "gssapi-keyex"); | ||
297 | + | ||
298 | + if ((gssbuf.value = sshbuf_mutable_ptr(b)) == NULL) | ||
299 | + fatal("%s: sshbuf_mutable_ptr failed", __func__); | ||
300 | + gssbuf.length = sshbuf_len(b); | ||
301 | + | ||
302 | + /* gss_kex_context is NULL with privsep, so we can't check it here */ | ||
303 | + if (!GSS_ERROR(PRIVSEP(ssh_gssapi_checkmic(gss_kex_context, | ||
304 | + &gssbuf, &mic)))) | ||
305 | + authenticated = PRIVSEP(ssh_gssapi_userok(authctxt->user, | ||
306 | + authctxt->pw, 1)); | ||
307 | + | ||
308 | + sshbuf_free(b); | ||
309 | + free(mic.value); | ||
310 | + | ||
311 | + return (authenticated); | ||
312 | +} | ||
313 | + | ||
314 | /* | ||
315 | * We only support those mechanisms that we know about (ie ones that we know | ||
316 | * how to check local user kuserok and the like) | ||
317 | @@ -260,7 +302,8 @@ input_gssapi_exchange_complete(int type, u_int32_t plen, struct ssh *ssh) | ||
318 | if ((r = sshpkt_get_end(ssh)) != 0) | ||
319 | fatal("%s: %s", __func__, ssh_err(r)); | ||
320 | |||
321 | - authenticated = PRIVSEP(ssh_gssapi_userok(authctxt->user)); | ||
322 | + authenticated = PRIVSEP(ssh_gssapi_userok(authctxt->user, | ||
323 | + authctxt->pw, 1)); | ||
324 | |||
325 | if ((!use_privsep || mm_is_monitor()) && | ||
326 | (displayname = ssh_gssapi_displayname()) != NULL) | ||
327 | @@ -306,7 +349,8 @@ input_gssapi_mic(int type, u_int32_t plen, struct ssh *ssh) | ||
328 | gssbuf.length = sshbuf_len(b); | ||
329 | |||
330 | if (!GSS_ERROR(PRIVSEP(ssh_gssapi_checkmic(gssctxt, &gssbuf, &mic)))) | ||
331 | - authenticated = PRIVSEP(ssh_gssapi_userok(authctxt->user)); | ||
332 | + authenticated = PRIVSEP(ssh_gssapi_userok(authctxt->user, | ||
333 | + authctxt->pw, 0)); | ||
334 | else | ||
335 | logit("GSSAPI MIC check failed"); | ||
336 | |||
337 | @@ -326,6 +370,12 @@ input_gssapi_mic(int type, u_int32_t plen, struct ssh *ssh) | ||
338 | return 0; | ||
339 | } | ||
340 | |||
341 | +Authmethod method_gsskeyex = { | ||
342 | + "gssapi-keyex", | ||
343 | + userauth_gsskeyex, | ||
344 | + &options.gss_authentication | ||
345 | +}; | ||
346 | + | ||
347 | Authmethod method_gssapi = { | ||
348 | "gssapi-with-mic", | ||
349 | userauth_gssapi, | ||
350 | diff --git a/auth2.c b/auth2.c | ||
351 | index 16ae1a363..7417eafa4 100644 | ||
352 | --- a/auth2.c | ||
353 | +++ b/auth2.c | ||
354 | @@ -75,6 +75,7 @@ extern Authmethod method_passwd; | ||
355 | extern Authmethod method_kbdint; | ||
356 | extern Authmethod method_hostbased; | ||
357 | #ifdef GSSAPI | ||
358 | +extern Authmethod method_gsskeyex; | ||
359 | extern Authmethod method_gssapi; | ||
360 | #endif | ||
361 | |||
362 | @@ -82,6 +83,7 @@ Authmethod *authmethods[] = { | ||
363 | &method_none, | ||
364 | &method_pubkey, | ||
365 | #ifdef GSSAPI | ||
366 | + &method_gsskeyex, | ||
367 | &method_gssapi, | ||
368 | #endif | ||
369 | &method_passwd, | ||
370 | diff --git a/canohost.c b/canohost.c | ||
371 | index f71a08568..404731d24 100644 | ||
372 | --- a/canohost.c | ||
373 | +++ b/canohost.c | ||
374 | @@ -35,6 +35,99 @@ | ||
375 | #include "canohost.h" | ||
376 | #include "misc.h" | ||
377 | |||
378 | +/* | ||
379 | + * Returns the remote DNS hostname as a string. The returned string must not | ||
380 | + * be freed. NB. this will usually trigger a DNS query the first time it is | ||
381 | + * called. | ||
382 | + * This function does additional checks on the hostname to mitigate some | ||
383 | + * attacks on legacy rhosts-style authentication. | ||
384 | + * XXX is RhostsRSAAuthentication vulnerable to these? | ||
385 | + * XXX Can we remove these checks? (or if not, remove RhostsRSAAuthentication?) | ||
386 | + */ | ||
387 | + | ||
388 | +char * | ||
389 | +remote_hostname(struct ssh *ssh) | ||
390 | +{ | ||
391 | + struct sockaddr_storage from; | ||
392 | + socklen_t fromlen; | ||
393 | + struct addrinfo hints, *ai, *aitop; | ||
394 | + char name[NI_MAXHOST], ntop2[NI_MAXHOST]; | ||
395 | + const char *ntop = ssh_remote_ipaddr(ssh); | ||
396 | + | ||
397 | + /* Get IP address of client. */ | ||
398 | + fromlen = sizeof(from); | ||
399 | + memset(&from, 0, sizeof(from)); | ||
400 | + if (getpeername(ssh_packet_get_connection_in(ssh), | ||
401 | + (struct sockaddr *)&from, &fromlen) < 0) { | ||
402 | + debug("getpeername failed: %.100s", strerror(errno)); | ||
403 | + return strdup(ntop); | ||
404 | + } | ||
405 | + | ||
406 | + ipv64_normalise_mapped(&from, &fromlen); | ||
407 | + if (from.ss_family == AF_INET6) | ||
408 | + fromlen = sizeof(struct sockaddr_in6); | ||
409 | + | ||
410 | + debug3("Trying to reverse map address %.100s.", ntop); | ||
411 | + /* Map the IP address to a host name. */ | ||
412 | + if (getnameinfo((struct sockaddr *)&from, fromlen, name, sizeof(name), | ||
413 | + NULL, 0, NI_NAMEREQD) != 0) { | ||
414 | + /* Host name not found. Use ip address. */ | ||
415 | + return strdup(ntop); | ||
416 | + } | ||
417 | + | ||
418 | + /* | ||
419 | + * if reverse lookup result looks like a numeric hostname, | ||
420 | + * someone is trying to trick us by PTR record like following: | ||
421 | + * 1.1.1.10.in-addr.arpa. IN PTR 2.3.4.5 | ||
422 | + */ | ||
423 | + memset(&hints, 0, sizeof(hints)); | ||
424 | + hints.ai_socktype = SOCK_DGRAM; /*dummy*/ | ||
425 | + hints.ai_flags = AI_NUMERICHOST; | ||
426 | + if (getaddrinfo(name, NULL, &hints, &ai) == 0) { | ||
427 | + logit("Nasty PTR record \"%s\" is set up for %s, ignoring", | ||
428 | + name, ntop); | ||
429 | + freeaddrinfo(ai); | ||
430 | + return strdup(ntop); | ||
431 | + } | ||
432 | + | ||
433 | + /* Names are stored in lowercase. */ | ||
434 | + lowercase(name); | ||
435 | + | ||
436 | + /* | ||
437 | + * Map it back to an IP address and check that the given | ||
438 | + * address actually is an address of this host. This is | ||
439 | + * necessary because anyone with access to a name server can | ||
440 | + * define arbitrary names for an IP address. Mapping from | ||
441 | + * name to IP address can be trusted better (but can still be | ||
442 | + * fooled if the intruder has access to the name server of | ||
443 | + * the domain). | ||
444 | + */ | ||
445 | + memset(&hints, 0, sizeof(hints)); | ||
446 | + hints.ai_family = from.ss_family; | ||
447 | + hints.ai_socktype = SOCK_STREAM; | ||
448 | + if (getaddrinfo(name, NULL, &hints, &aitop) != 0) { | ||
449 | + logit("reverse mapping checking getaddrinfo for %.700s " | ||
450 | + "[%s] failed.", name, ntop); | ||
451 | + return strdup(ntop); | ||
452 | + } | ||
453 | + /* Look for the address from the list of addresses. */ | ||
454 | + for (ai = aitop; ai; ai = ai->ai_next) { | ||
455 | + if (getnameinfo(ai->ai_addr, ai->ai_addrlen, ntop2, | ||
456 | + sizeof(ntop2), NULL, 0, NI_NUMERICHOST) == 0 && | ||
457 | + (strcmp(ntop, ntop2) == 0)) | ||
458 | + break; | ||
459 | + } | ||
460 | + freeaddrinfo(aitop); | ||
461 | + /* If we reached the end of the list, the address was not there. */ | ||
462 | + if (ai == NULL) { | ||
463 | + /* Address not found for the host name. */ | ||
464 | + logit("Address %.100s maps to %.600s, but this does not " | ||
465 | + "map back to the address.", ntop, name); | ||
466 | + return strdup(ntop); | ||
467 | + } | ||
468 | + return strdup(name); | ||
469 | +} | ||
470 | + | ||
471 | void | ||
472 | ipv64_normalise_mapped(struct sockaddr_storage *addr, socklen_t *len) | ||
473 | { | ||
474 | diff --git a/canohost.h b/canohost.h | ||
475 | index 26d62855a..0cadc9f18 100644 | ||
476 | --- a/canohost.h | ||
477 | +++ b/canohost.h | ||
478 | @@ -15,6 +15,9 @@ | ||
479 | #ifndef _CANOHOST_H | ||
480 | #define _CANOHOST_H | ||
481 | |||
482 | +struct ssh; | ||
483 | + | ||
484 | +char *remote_hostname(struct ssh *); | ||
485 | char *get_peer_ipaddr(int); | ||
486 | int get_peer_port(int); | ||
487 | char *get_local_ipaddr(int); | ||
488 | diff --git a/clientloop.c b/clientloop.c | ||
489 | index 086c0dfe8..9b90c64f3 100644 | ||
490 | --- a/clientloop.c | ||
491 | +++ b/clientloop.c | ||
492 | @@ -112,6 +112,10 @@ | ||
493 | #include "ssherr.h" | ||
494 | #include "hostfile.h" | ||
495 | |||
496 | +#ifdef GSSAPI | ||
497 | +#include "ssh-gss.h" | ||
498 | +#endif | ||
499 | + | ||
500 | /* import options */ | ||
501 | extern Options options; | ||
502 | |||
503 | @@ -1374,9 +1378,18 @@ client_loop(struct ssh *ssh, int have_pty, int escape_char_arg, | ||
504 | break; | ||
505 | |||
506 | /* Do channel operations unless rekeying in progress. */ | ||
507 | - if (!ssh_packet_is_rekeying(ssh)) | ||
508 | + if (!ssh_packet_is_rekeying(ssh)) { | ||
509 | channel_after_select(ssh, readset, writeset); | ||
510 | |||
511 | +#ifdef GSSAPI | ||
512 | + if (options.gss_renewal_rekey && | ||
513 | + ssh_gssapi_credentials_updated(NULL)) { | ||
514 | + debug("credentials updated - forcing rekey"); | ||
515 | + need_rekeying = 1; | ||
516 | + } | ||
517 | +#endif | ||
518 | + } | ||
519 | + | ||
520 | /* Buffer input from the connection. */ | ||
521 | client_process_net_input(ssh, readset); | ||
522 | |||
523 | diff --git a/configure.ac b/configure.ac | ||
524 | index 30be6c182..2869f7042 100644 | ||
525 | --- a/configure.ac | ||
526 | +++ b/configure.ac | ||
527 | @@ -665,6 +665,30 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) | ||
528 | [Use tunnel device compatibility to OpenBSD]) | ||
529 | AC_DEFINE([SSH_TUN_PREPEND_AF], [1], | ||
530 | [Prepend the address family to IP tunnel traffic]) | ||
531 | + AC_MSG_CHECKING([if we have the Security Authorization Session API]) | ||
532 | + AC_TRY_COMPILE([#include <Security/AuthSession.h>], | ||
533 | + [SessionCreate(0, 0);], | ||
534 | + [ac_cv_use_security_session_api="yes" | ||
535 | + AC_DEFINE([USE_SECURITY_SESSION_API], [1], | ||
536 | + [platform has the Security Authorization Session API]) | ||
537 | + LIBS="$LIBS -framework Security" | ||
538 | + AC_MSG_RESULT([yes])], | ||
539 | + [ac_cv_use_security_session_api="no" | ||
540 | + AC_MSG_RESULT([no])]) | ||
541 | + AC_MSG_CHECKING([if we have an in-memory credentials cache]) | ||
542 | + AC_TRY_COMPILE( | ||
543 | + [#include <Kerberos/Kerberos.h>], | ||
544 | + [cc_context_t c; | ||
545 | + (void) cc_initialize (&c, 0, NULL, NULL);], | ||
546 | + [AC_DEFINE([USE_CCAPI], [1], | ||
547 | + [platform uses an in-memory credentials cache]) | ||
548 | + LIBS="$LIBS -framework Security" | ||
549 | + AC_MSG_RESULT([yes]) | ||
550 | + if test "x$ac_cv_use_security_session_api" = "xno"; then | ||
551 | + AC_MSG_ERROR([*** Need a security framework to use the credentials cache API ***]) | ||
552 | + fi], | ||
553 | + [AC_MSG_RESULT([no])] | ||
554 | + ) | ||
555 | m4_pattern_allow([AU_IPv]) | ||
556 | AC_CHECK_DECL([AU_IPv4], [], | ||
557 | AC_DEFINE([AU_IPv4], [0], [System only supports IPv4 audit records]) | ||
558 | diff --git a/gss-genr.c b/gss-genr.c | ||
559 | index d56257b4a..763a63ffa 100644 | ||
560 | --- a/gss-genr.c | ||
561 | +++ b/gss-genr.c | ||
562 | @@ -1,7 +1,7 @@ | ||
563 | /* $OpenBSD: gss-genr.c,v 1.26 2018/07/10 09:13:30 djm Exp $ */ | ||
564 | |||
565 | /* | ||
566 | - * Copyright (c) 2001-2007 Simon Wilkinson. All rights reserved. | ||
567 | + * Copyright (c) 2001-2009 Simon Wilkinson. All rights reserved. | ||
568 | * | ||
569 | * Redistribution and use in source and binary forms, with or without | ||
570 | * modification, are permitted provided that the following conditions | ||
571 | @@ -41,12 +41,36 @@ | ||
572 | #include "sshbuf.h" | ||
573 | #include "log.h" | ||
574 | #include "ssh2.h" | ||
575 | +#include "cipher.h" | ||
576 | +#include "sshkey.h" | ||
577 | +#include "kex.h" | ||
578 | +#include "digest.h" | ||
579 | +#include "packet.h" | ||
580 | |||
581 | #include "ssh-gss.h" | ||
582 | |||
583 | extern u_char *session_id2; | ||
584 | extern u_int session_id2_len; | ||
585 | |||
586 | +typedef struct { | ||
587 | + char *encoded; | ||
588 | + gss_OID oid; | ||
589 | +} ssh_gss_kex_mapping; | ||
590 | + | ||
591 | +/* | ||
592 | + * XXX - It would be nice to find a more elegant way of handling the | ||
593 | + * XXX passing of the key exchange context to the userauth routines | ||
594 | + */ | ||
595 | + | ||
596 | +Gssctxt *gss_kex_context = NULL; | ||
597 | + | ||
598 | +static ssh_gss_kex_mapping *gss_enc2oid = NULL; | ||
599 | + | ||
600 | +int | ||
601 | +ssh_gssapi_oid_table_ok(void) { | ||
602 | + return (gss_enc2oid != NULL); | ||
603 | +} | ||
604 | + | ||
605 | /* sshbuf_get for gss_buffer_desc */ | ||
606 | int | ||
607 | ssh_gssapi_get_buffer_desc(struct sshbuf *b, gss_buffer_desc *g) | ||
608 | @@ -62,6 +86,162 @@ ssh_gssapi_get_buffer_desc(struct sshbuf *b, gss_buffer_desc *g) | ||
609 | return 0; | ||
610 | } | ||
611 | |||
612 | +/* sshpkt_get of gss_buffer_desc */ | ||
613 | +int | ||
614 | +ssh_gssapi_sshpkt_get_buffer_desc(struct ssh *ssh, gss_buffer_desc *g) | ||
615 | +{ | ||
616 | + int r; | ||
617 | + u_char *p; | ||
618 | + size_t len; | ||
619 | + | ||
620 | + if ((r = sshpkt_get_string(ssh, &p, &len)) != 0) | ||
621 | + return r; | ||
622 | + g->value = p; | ||
623 | + g->length = len; | ||
624 | + return 0; | ||
625 | +} | ||
626 | + | ||
627 | +/* | ||
628 | + * Return a list of the gss-group1-sha1 mechanisms supported by this program | ||
629 | + * | ||
630 | + * We test mechanisms to ensure that we can use them, to avoid starting | ||
631 | + * a key exchange with a bad mechanism | ||
632 | + */ | ||
633 | + | ||
634 | +char * | ||
635 | +ssh_gssapi_client_mechanisms(const char *host, const char *client, | ||
636 | + const char *kex) { | ||
637 | + gss_OID_set gss_supported = NULL; | ||
638 | + OM_uint32 min_status; | ||
639 | + | ||
640 | + if (GSS_ERROR(gss_indicate_mechs(&min_status, &gss_supported))) | ||
641 | + return NULL; | ||
642 | + | ||
643 | + return ssh_gssapi_kex_mechs(gss_supported, ssh_gssapi_check_mechanism, | ||
644 | + host, client, kex); | ||
645 | +} | ||
646 | + | ||
647 | +char * | ||
648 | +ssh_gssapi_kex_mechs(gss_OID_set gss_supported, ssh_gssapi_check_fn *check, | ||
649 | + const char *host, const char *client, const char *kex) { | ||
650 | + struct sshbuf *buf = NULL; | ||
651 | + size_t i; | ||
652 | + int r = SSH_ERR_ALLOC_FAIL; | ||
653 | + int oidpos, enclen; | ||
654 | + char *mechs, *encoded; | ||
655 | + u_char digest[SSH_DIGEST_MAX_LENGTH]; | ||
656 | + char deroid[2]; | ||
657 | + struct ssh_digest_ctx *md = NULL; | ||
658 | + char *s, *cp, *p; | ||
659 | + | ||
660 | + if (gss_enc2oid != NULL) { | ||
661 | + for (i = 0; gss_enc2oid[i].encoded != NULL; i++) | ||
662 | + free(gss_enc2oid[i].encoded); | ||
663 | + free(gss_enc2oid); | ||
664 | + } | ||
665 | + | ||
666 | + gss_enc2oid = xmalloc(sizeof(ssh_gss_kex_mapping) * | ||
667 | + (gss_supported->count + 1)); | ||
668 | + | ||
669 | + if ((buf = sshbuf_new()) == NULL) | ||
670 | + fatal("%s: sshbuf_new failed", __func__); | ||
671 | + | ||
672 | + oidpos = 0; | ||
673 | + s = cp = xstrdup(kex); | ||
674 | + for (i = 0; i < gss_supported->count; i++) { | ||
675 | + if (gss_supported->elements[i].length < 128 && | ||
676 | + (*check)(NULL, &(gss_supported->elements[i]), host, client)) { | ||
677 | + | ||
678 | + deroid[0] = SSH_GSS_OIDTYPE; | ||
679 | + deroid[1] = gss_supported->elements[i].length; | ||
680 | + | ||
681 | + if ((md = ssh_digest_start(SSH_DIGEST_MD5)) == NULL || | ||
682 | + (r = ssh_digest_update(md, deroid, 2)) != 0 || | ||
683 | + (r = ssh_digest_update(md, | ||
684 | + gss_supported->elements[i].elements, | ||
685 | + gss_supported->elements[i].length)) != 0 || | ||
686 | + (r = ssh_digest_final(md, digest, sizeof(digest))) != 0) | ||
687 | + fatal("%s: digest failed: %s", __func__, | ||
688 | + ssh_err(r)); | ||
689 | + ssh_digest_free(md); | ||
690 | + md = NULL; | ||
691 | + | ||
692 | + encoded = xmalloc(ssh_digest_bytes(SSH_DIGEST_MD5) | ||
693 | + * 2); | ||
694 | + enclen = __b64_ntop(digest, | ||
695 | + ssh_digest_bytes(SSH_DIGEST_MD5), encoded, | ||
696 | + ssh_digest_bytes(SSH_DIGEST_MD5) * 2); | ||
697 | + | ||
698 | + cp = strncpy(s, kex, strlen(kex)); | ||
699 | + for ((p = strsep(&cp, ",")); p && *p != '\0'; | ||
700 | + (p = strsep(&cp, ","))) { | ||
701 | + if (sshbuf_len(buf) != 0 && | ||
702 | + (r = sshbuf_put_u8(buf, ',')) != 0) | ||
703 | + fatal("%s: sshbuf_put_u8 error: %s", | ||
704 | + __func__, ssh_err(r)); | ||
705 | + if ((r = sshbuf_put(buf, p, strlen(p))) != 0 || | ||
706 | + (r = sshbuf_put(buf, encoded, enclen)) != 0) | ||
707 | + fatal("%s: sshbuf_put error: %s", | ||
708 | + __func__, ssh_err(r)); | ||
709 | + } | ||
710 | + | ||
711 | + gss_enc2oid[oidpos].oid = &(gss_supported->elements[i]); | ||
712 | + gss_enc2oid[oidpos].encoded = encoded; | ||
713 | + oidpos++; | ||
714 | + } | ||
715 | + } | ||
716 | + free(s); | ||
717 | + gss_enc2oid[oidpos].oid = NULL; | ||
718 | + gss_enc2oid[oidpos].encoded = NULL; | ||
719 | + | ||
720 | + if ((mechs = sshbuf_dup_string(buf)) == NULL) | ||
721 | + fatal("%s: sshbuf_dup_string failed", __func__); | ||
722 | + | ||
723 | + sshbuf_free(buf); | ||
724 | + | ||
725 | + if (strlen(mechs) == 0) { | ||
726 | + free(mechs); | ||
727 | + mechs = NULL; | ||
728 | + } | ||
729 | + | ||
730 | + return (mechs); | ||
731 | +} | ||
732 | + | ||
733 | +gss_OID | ||
734 | +ssh_gssapi_id_kex(Gssctxt *ctx, char *name, int kex_type) { | ||
735 | + int i = 0; | ||
736 | + | ||
737 | +#define SKIP_KEX_NAME(type) \ | ||
738 | + case type: \ | ||
739 | + if (strlen(name) < sizeof(type##_ID)) \ | ||
740 | + return GSS_C_NO_OID; \ | ||
741 | + name += sizeof(type##_ID) - 1; \ | ||
742 | + break; | ||
743 | + | ||
744 | + switch (kex_type) { | ||
745 | + SKIP_KEX_NAME(KEX_GSS_GRP1_SHA1) | ||
746 | + SKIP_KEX_NAME(KEX_GSS_GRP14_SHA1) | ||
747 | + SKIP_KEX_NAME(KEX_GSS_GRP14_SHA256) | ||
748 | + SKIP_KEX_NAME(KEX_GSS_GRP16_SHA512) | ||
749 | + SKIP_KEX_NAME(KEX_GSS_GEX_SHA1) | ||
750 | + SKIP_KEX_NAME(KEX_GSS_NISTP256_SHA256) | ||
751 | + SKIP_KEX_NAME(KEX_GSS_C25519_SHA256) | ||
752 | + default: | ||
753 | + return GSS_C_NO_OID; | ||
754 | + } | ||
755 | + | ||
756 | +#undef SKIP_KEX_NAME | ||
757 | + | ||
758 | + while (gss_enc2oid[i].encoded != NULL && | ||
759 | + strcmp(name, gss_enc2oid[i].encoded) != 0) | ||
760 | + i++; | ||
761 | + | ||
762 | + if (gss_enc2oid[i].oid != NULL && ctx != NULL) | ||
763 | + ssh_gssapi_set_oid(ctx, gss_enc2oid[i].oid); | ||
764 | + | ||
765 | + return gss_enc2oid[i].oid; | ||
766 | +} | ||
767 | + | ||
768 | /* Check that the OID in a data stream matches that in the context */ | ||
769 | int | ||
770 | ssh_gssapi_check_oid(Gssctxt *ctx, void *data, size_t len) | ||
771 | @@ -218,7 +398,7 @@ ssh_gssapi_init_ctx(Gssctxt *ctx, int deleg_creds, gss_buffer_desc *recv_tok, | ||
772 | } | ||
773 | |||
774 | ctx->major = gss_init_sec_context(&ctx->minor, | ||
775 | - GSS_C_NO_CREDENTIAL, &ctx->context, ctx->name, ctx->oid, | ||
776 | + ctx->client_creds, &ctx->context, ctx->name, ctx->oid, | ||
777 | GSS_C_MUTUAL_FLAG | GSS_C_INTEG_FLAG | deleg_flag, | ||
778 | 0, NULL, recv_tok, NULL, send_tok, flags, NULL); | ||
779 | |||
780 | @@ -247,9 +427,43 @@ ssh_gssapi_import_name(Gssctxt *ctx, const char *host) | ||
781 | return (ctx->major); | ||
782 | } | ||
783 | |||
784 | +OM_uint32 | ||
785 | +ssh_gssapi_client_identity(Gssctxt *ctx, const char *name) | ||
786 | +{ | ||
787 | + gss_buffer_desc gssbuf; | ||
788 | + gss_name_t gssname; | ||
789 | + OM_uint32 status; | ||
790 | + gss_OID_set oidset; | ||
791 | + | ||
792 | + gssbuf.value = (void *) name; | ||
793 | + gssbuf.length = strlen(gssbuf.value); | ||
794 | + | ||
795 | + gss_create_empty_oid_set(&status, &oidset); | ||
796 | + gss_add_oid_set_member(&status, ctx->oid, &oidset); | ||
797 | + | ||
798 | + ctx->major = gss_import_name(&ctx->minor, &gssbuf, | ||
799 | + GSS_C_NT_USER_NAME, &gssname); | ||
800 | + | ||
801 | + if (!ctx->major) | ||
802 | + ctx->major = gss_acquire_cred(&ctx->minor, | ||
803 | + gssname, 0, oidset, GSS_C_INITIATE, | ||
804 | + &ctx->client_creds, NULL, NULL); | ||
805 | + | ||
806 | + gss_release_name(&status, &gssname); | ||
807 | + gss_release_oid_set(&status, &oidset); | ||
808 | + | ||
809 | + if (ctx->major) | ||
810 | + ssh_gssapi_error(ctx); | ||
811 | + | ||
812 | + return(ctx->major); | ||
813 | +} | ||
814 | + | ||
815 | OM_uint32 | ||
816 | ssh_gssapi_sign(Gssctxt *ctx, gss_buffer_t buffer, gss_buffer_t hash) | ||
817 | { | ||
818 | + if (ctx == NULL) | ||
819 | + return -1; | ||
820 | + | ||
821 | if ((ctx->major = gss_get_mic(&ctx->minor, ctx->context, | ||
822 | GSS_C_QOP_DEFAULT, buffer, hash))) | ||
823 | ssh_gssapi_error(ctx); | ||
824 | @@ -257,6 +471,19 @@ ssh_gssapi_sign(Gssctxt *ctx, gss_buffer_t buffer, gss_buffer_t hash) | ||
825 | return (ctx->major); | ||
826 | } | ||
827 | |||
828 | +/* Priviledged when used by server */ | ||
829 | +OM_uint32 | ||
830 | +ssh_gssapi_checkmic(Gssctxt *ctx, gss_buffer_t gssbuf, gss_buffer_t gssmic) | ||
831 | +{ | ||
832 | + if (ctx == NULL) | ||
833 | + return -1; | ||
834 | + | ||
835 | + ctx->major = gss_verify_mic(&ctx->minor, ctx->context, | ||
836 | + gssbuf, gssmic, NULL); | ||
837 | + | ||
838 | + return (ctx->major); | ||
839 | +} | ||
840 | + | ||
841 | void | ||
842 | ssh_gssapi_buildmic(struct sshbuf *b, const char *user, const char *service, | ||
843 | const char *context) | ||
844 | @@ -273,11 +500,16 @@ ssh_gssapi_buildmic(struct sshbuf *b, const char *user, const char *service, | ||
845 | } | ||
846 | |||
847 | int | ||
848 | -ssh_gssapi_check_mechanism(Gssctxt **ctx, gss_OID oid, const char *host) | ||
849 | +ssh_gssapi_check_mechanism(Gssctxt **ctx, gss_OID oid, const char *host, | ||
850 | + const char *client) | ||
851 | { | ||
852 | gss_buffer_desc token = GSS_C_EMPTY_BUFFER; | ||
853 | OM_uint32 major, minor; | ||
854 | gss_OID_desc spnego_oid = {6, (void *)"\x2B\x06\x01\x05\x05\x02"}; | ||
855 | + Gssctxt *intctx = NULL; | ||
856 | + | ||
857 | + if (ctx == NULL) | ||
858 | + ctx = &intctx; | ||
859 | |||
860 | /* RFC 4462 says we MUST NOT do SPNEGO */ | ||
861 | if (oid->length == spnego_oid.length && | ||
862 | @@ -287,6 +519,10 @@ ssh_gssapi_check_mechanism(Gssctxt **ctx, gss_OID oid, const char *host) | ||
863 | ssh_gssapi_build_ctx(ctx); | ||
864 | ssh_gssapi_set_oid(*ctx, oid); | ||
865 | major = ssh_gssapi_import_name(*ctx, host); | ||
866 | + | ||
867 | + if (!GSS_ERROR(major) && client) | ||
868 | + major = ssh_gssapi_client_identity(*ctx, client); | ||
869 | + | ||
870 | if (!GSS_ERROR(major)) { | ||
871 | major = ssh_gssapi_init_ctx(*ctx, 0, GSS_C_NO_BUFFER, &token, | ||
872 | NULL); | ||
873 | @@ -296,10 +532,66 @@ ssh_gssapi_check_mechanism(Gssctxt **ctx, gss_OID oid, const char *host) | ||
874 | GSS_C_NO_BUFFER); | ||
875 | } | ||
876 | |||
877 | - if (GSS_ERROR(major)) | ||
878 | + if (GSS_ERROR(major) || intctx != NULL) | ||
879 | ssh_gssapi_delete_ctx(ctx); | ||
880 | |||
881 | return (!GSS_ERROR(major)); | ||
882 | } | ||
883 | |||
884 | +int | ||
885 | +ssh_gssapi_credentials_updated(Gssctxt *ctxt) { | ||
886 | + static gss_name_t saved_name = GSS_C_NO_NAME; | ||
887 | + static OM_uint32 saved_lifetime = 0; | ||
888 | + static gss_OID saved_mech = GSS_C_NO_OID; | ||
889 | + static gss_name_t name; | ||
890 | + static OM_uint32 last_call = 0; | ||
891 | + OM_uint32 lifetime, now, major, minor; | ||
892 | + int equal; | ||
893 | + | ||
894 | + now = time(NULL); | ||
895 | + | ||
896 | + if (ctxt) { | ||
897 | + debug("Rekey has happened - updating saved versions"); | ||
898 | + | ||
899 | + if (saved_name != GSS_C_NO_NAME) | ||
900 | + gss_release_name(&minor, &saved_name); | ||
901 | + | ||
902 | + major = gss_inquire_cred(&minor, GSS_C_NO_CREDENTIAL, | ||
903 | + &saved_name, &saved_lifetime, NULL, NULL); | ||
904 | + | ||
905 | + if (!GSS_ERROR(major)) { | ||
906 | + saved_mech = ctxt->oid; | ||
907 | + saved_lifetime+= now; | ||
908 | + } else { | ||
909 | + /* Handle the error */ | ||
910 | + } | ||
911 | + return 0; | ||
912 | + } | ||
913 | + | ||
914 | + if (now - last_call < 10) | ||
915 | + return 0; | ||
916 | + | ||
917 | + last_call = now; | ||
918 | + | ||
919 | + if (saved_mech == GSS_C_NO_OID) | ||
920 | + return 0; | ||
921 | + | ||
922 | + major = gss_inquire_cred(&minor, GSS_C_NO_CREDENTIAL, | ||
923 | + &name, &lifetime, NULL, NULL); | ||
924 | + if (major == GSS_S_CREDENTIALS_EXPIRED) | ||
925 | + return 0; | ||
926 | + else if (GSS_ERROR(major)) | ||
927 | + return 0; | ||
928 | + | ||
929 | + major = gss_compare_name(&minor, saved_name, name, &equal); | ||
930 | + gss_release_name(&minor, &name); | ||
931 | + if (GSS_ERROR(major)) | ||
932 | + return 0; | ||
933 | + | ||
934 | + if (equal && (saved_lifetime < lifetime + now - 10)) | ||
935 | + return 1; | ||
936 | + | ||
937 | + return 0; | ||
938 | +} | ||
939 | + | ||
940 | #endif /* GSSAPI */ | ||
941 | diff --git a/gss-serv-krb5.c b/gss-serv-krb5.c | ||
942 | index a151bc1e4..ef9beb67c 100644 | ||
943 | --- a/gss-serv-krb5.c | ||
944 | +++ b/gss-serv-krb5.c | ||
945 | @@ -1,7 +1,7 @@ | ||
946 | /* $OpenBSD: gss-serv-krb5.c,v 1.9 2018/07/09 21:37:55 markus Exp $ */ | ||
947 | |||
948 | /* | ||
949 | - * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. | ||
950 | + * Copyright (c) 2001-2007 Simon Wilkinson. All rights reserved. | ||
951 | * | ||
952 | * Redistribution and use in source and binary forms, with or without | ||
953 | * modification, are permitted provided that the following conditions | ||
954 | @@ -120,8 +120,8 @@ ssh_gssapi_krb5_storecreds(ssh_gssapi_client *client) | ||
955 | krb5_error_code problem; | ||
956 | krb5_principal princ; | ||
957 | OM_uint32 maj_status, min_status; | ||
958 | - int len; | ||
959 | const char *errmsg; | ||
960 | + const char *new_ccname; | ||
961 | |||
962 | if (client->creds == NULL) { | ||
963 | debug("No credentials stored"); | ||
964 | @@ -180,11 +180,16 @@ ssh_gssapi_krb5_storecreds(ssh_gssapi_client *client) | ||
965 | return; | ||
966 | } | ||
967 | |||
968 | - client->store.filename = xstrdup(krb5_cc_get_name(krb_context, ccache)); | ||
969 | + new_ccname = krb5_cc_get_name(krb_context, ccache); | ||
970 | + | ||
971 | client->store.envvar = "KRB5CCNAME"; | ||
972 | - len = strlen(client->store.filename) + 6; | ||
973 | - client->store.envval = xmalloc(len); | ||
974 | - snprintf(client->store.envval, len, "FILE:%s", client->store.filename); | ||
975 | +#ifdef USE_CCAPI | ||
976 | + xasprintf(&client->store.envval, "API:%s", new_ccname); | ||
977 | + client->store.filename = NULL; | ||
978 | +#else | ||
979 | + xasprintf(&client->store.envval, "FILE:%s", new_ccname); | ||
980 | + client->store.filename = xstrdup(new_ccname); | ||
981 | +#endif | ||
982 | |||
983 | #ifdef USE_PAM | ||
984 | if (options.use_pam) | ||
985 | @@ -196,6 +201,71 @@ ssh_gssapi_krb5_storecreds(ssh_gssapi_client *client) | ||
986 | return; | ||
987 | } | ||
988 | |||
989 | +int | ||
990 | +ssh_gssapi_krb5_updatecreds(ssh_gssapi_ccache *store, | ||
991 | + ssh_gssapi_client *client) | ||
992 | +{ | ||
993 | + krb5_ccache ccache = NULL; | ||
994 | + krb5_principal principal = NULL; | ||
995 | + char *name = NULL; | ||
996 | + krb5_error_code problem; | ||
997 | + OM_uint32 maj_status, min_status; | ||
998 | + | ||
999 | + if ((problem = krb5_cc_resolve(krb_context, store->envval, &ccache))) { | ||
1000 | + logit("krb5_cc_resolve(): %.100s", | ||
1001 | + krb5_get_err_text(krb_context, problem)); | ||
1002 | + return 0; | ||
1003 | + } | ||
1004 | + | ||
1005 | + /* Find out who the principal in this cache is */ | ||
1006 | + if ((problem = krb5_cc_get_principal(krb_context, ccache, | ||
1007 | + &principal))) { | ||
1008 | + logit("krb5_cc_get_principal(): %.100s", | ||
1009 | + krb5_get_err_text(krb_context, problem)); | ||
1010 | + krb5_cc_close(krb_context, ccache); | ||
1011 | + return 0; | ||
1012 | + } | ||
1013 | + | ||
1014 | + if ((problem = krb5_unparse_name(krb_context, principal, &name))) { | ||
1015 | + logit("krb5_unparse_name(): %.100s", | ||
1016 | + krb5_get_err_text(krb_context, problem)); | ||
1017 | + krb5_free_principal(krb_context, principal); | ||
1018 | + krb5_cc_close(krb_context, ccache); | ||
1019 | + return 0; | ||
1020 | + } | ||
1021 | + | ||
1022 | + | ||
1023 | + if (strcmp(name,client->exportedname.value)!=0) { | ||
1024 | + debug("Name in local credentials cache differs. Not storing"); | ||
1025 | + krb5_free_principal(krb_context, principal); | ||
1026 | + krb5_cc_close(krb_context, ccache); | ||
1027 | + krb5_free_unparsed_name(krb_context, name); | ||
1028 | + return 0; | ||
1029 | + } | ||
1030 | + krb5_free_unparsed_name(krb_context, name); | ||
1031 | + | ||
1032 | + /* Name matches, so lets get on with it! */ | ||
1033 | + | ||
1034 | + if ((problem = krb5_cc_initialize(krb_context, ccache, principal))) { | ||
1035 | + logit("krb5_cc_initialize(): %.100s", | ||
1036 | + krb5_get_err_text(krb_context, problem)); | ||
1037 | + krb5_free_principal(krb_context, principal); | ||
1038 | + krb5_cc_close(krb_context, ccache); | ||
1039 | + return 0; | ||
1040 | + } | ||
1041 | + | ||
1042 | + krb5_free_principal(krb_context, principal); | ||
1043 | + | ||
1044 | + if ((maj_status = gss_krb5_copy_ccache(&min_status, client->creds, | ||
1045 | + ccache))) { | ||
1046 | + logit("gss_krb5_copy_ccache() failed. Sorry!"); | ||
1047 | + krb5_cc_close(krb_context, ccache); | ||
1048 | + return 0; | ||
1049 | + } | ||
1050 | + | ||
1051 | + return 1; | ||
1052 | +} | ||
1053 | + | ||
1054 | ssh_gssapi_mech gssapi_kerberos_mech = { | ||
1055 | "toWM5Slw5Ew8Mqkay+al2g==", | ||
1056 | "Kerberos", | ||
1057 | @@ -203,7 +273,8 @@ ssh_gssapi_mech gssapi_kerberos_mech = { | ||
1058 | NULL, | ||
1059 | &ssh_gssapi_krb5_userok, | ||
1060 | NULL, | ||
1061 | - &ssh_gssapi_krb5_storecreds | ||
1062 | + &ssh_gssapi_krb5_storecreds, | ||
1063 | + &ssh_gssapi_krb5_updatecreds | ||
1064 | }; | ||
1065 | |||
1066 | #endif /* KRB5 */ | ||
1067 | diff --git a/gss-serv.c b/gss-serv.c | ||
1068 | index ab3a15f0f..1d47870e7 100644 | ||
1069 | --- a/gss-serv.c | ||
1070 | +++ b/gss-serv.c | ||
1071 | @@ -1,7 +1,7 @@ | ||
1072 | /* $OpenBSD: gss-serv.c,v 1.31 2018/07/09 21:37:55 markus Exp $ */ | ||
1073 | |||
1074 | /* | ||
1075 | - * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. | ||
1076 | + * Copyright (c) 2001-2009 Simon Wilkinson. All rights reserved. | ||
1077 | * | ||
1078 | * Redistribution and use in source and binary forms, with or without | ||
1079 | * modification, are permitted provided that the following conditions | ||
1080 | @@ -44,17 +44,19 @@ | ||
1081 | #include "session.h" | ||
1082 | #include "misc.h" | ||
1083 | #include "servconf.h" | ||
1084 | +#include "uidswap.h" | ||
1085 | |||
1086 | #include "ssh-gss.h" | ||
1087 | +#include "monitor_wrap.h" | ||
1088 | |||
1089 | extern ServerOptions options; | ||
1090 | |||
1091 | static ssh_gssapi_client gssapi_client = | ||
1092 | - { GSS_C_EMPTY_BUFFER, GSS_C_EMPTY_BUFFER, | ||
1093 | - GSS_C_NO_CREDENTIAL, NULL, {NULL, NULL, NULL, NULL}}; | ||
1094 | + { GSS_C_EMPTY_BUFFER, GSS_C_EMPTY_BUFFER, GSS_C_NO_CREDENTIAL, | ||
1095 | + GSS_C_NO_NAME, NULL, {NULL, NULL, NULL, NULL, NULL}, 0, 0}; | ||
1096 | |||
1097 | ssh_gssapi_mech gssapi_null_mech = | ||
1098 | - { NULL, NULL, {0, NULL}, NULL, NULL, NULL, NULL}; | ||
1099 | + { NULL, NULL, {0, NULL}, NULL, NULL, NULL, NULL, NULL}; | ||
1100 | |||
1101 | #ifdef KRB5 | ||
1102 | extern ssh_gssapi_mech gssapi_kerberos_mech; | ||
1103 | @@ -140,6 +142,29 @@ ssh_gssapi_server_ctx(Gssctxt **ctx, gss_OID oid) | ||
1104 | return (ssh_gssapi_acquire_cred(*ctx)); | ||
1105 | } | ||
1106 | |||
1107 | +/* Unprivileged */ | ||
1108 | +char * | ||
1109 | +ssh_gssapi_server_mechanisms(void) { | ||
1110 | + if (supported_oids == NULL) | ||
1111 | + ssh_gssapi_prepare_supported_oids(); | ||
1112 | + return (ssh_gssapi_kex_mechs(supported_oids, | ||
1113 | + &ssh_gssapi_server_check_mech, NULL, NULL, | ||
1114 | + options.gss_kex_algorithms)); | ||
1115 | +} | ||
1116 | + | ||
1117 | +/* Unprivileged */ | ||
1118 | +int | ||
1119 | +ssh_gssapi_server_check_mech(Gssctxt **dum, gss_OID oid, const char *data, | ||
1120 | + const char *dummy) { | ||
1121 | + Gssctxt *ctx = NULL; | ||
1122 | + int res; | ||
1123 | + | ||
1124 | + res = !GSS_ERROR(PRIVSEP(ssh_gssapi_server_ctx(&ctx, oid))); | ||
1125 | + ssh_gssapi_delete_ctx(&ctx); | ||
1126 | + | ||
1127 | + return (res); | ||
1128 | +} | ||
1129 | + | ||
1130 | /* Unprivileged */ | ||
1131 | void | ||
1132 | ssh_gssapi_supported_oids(gss_OID_set *oidset) | ||
1133 | @@ -150,7 +175,9 @@ ssh_gssapi_supported_oids(gss_OID_set *oidset) | ||
1134 | gss_OID_set supported; | ||
1135 | |||
1136 | gss_create_empty_oid_set(&min_status, oidset); | ||
1137 | - gss_indicate_mechs(&min_status, &supported); | ||
1138 | + | ||
1139 | + if (GSS_ERROR(gss_indicate_mechs(&min_status, &supported))) | ||
1140 | + return; | ||
1141 | |||
1142 | while (supported_mechs[i]->name != NULL) { | ||
1143 | if (GSS_ERROR(gss_test_oid_set_member(&min_status, | ||
1144 | @@ -276,8 +303,48 @@ OM_uint32 | ||
1145 | ssh_gssapi_getclient(Gssctxt *ctx, ssh_gssapi_client *client) | ||
1146 | { | ||
1147 | int i = 0; | ||
1148 | + int equal = 0; | ||
1149 | + gss_name_t new_name = GSS_C_NO_NAME; | ||
1150 | + gss_buffer_desc ename = GSS_C_EMPTY_BUFFER; | ||
1151 | + | ||
1152 | + if (options.gss_store_rekey && client->used && ctx->client_creds) { | ||
1153 | + if (client->mech->oid.length != ctx->oid->length || | ||
1154 | + (memcmp(client->mech->oid.elements, | ||
1155 | + ctx->oid->elements, ctx->oid->length) !=0)) { | ||
1156 | + debug("Rekeyed credentials have different mechanism"); | ||
1157 | + return GSS_S_COMPLETE; | ||
1158 | + } | ||
1159 | + | ||
1160 | + if ((ctx->major = gss_inquire_cred_by_mech(&ctx->minor, | ||
1161 | + ctx->client_creds, ctx->oid, &new_name, | ||
1162 | + NULL, NULL, NULL))) { | ||
1163 | + ssh_gssapi_error(ctx); | ||
1164 | + return (ctx->major); | ||
1165 | + } | ||
1166 | + | ||
1167 | + ctx->major = gss_compare_name(&ctx->minor, client->name, | ||
1168 | + new_name, &equal); | ||
1169 | + | ||
1170 | + if (GSS_ERROR(ctx->major)) { | ||
1171 | + ssh_gssapi_error(ctx); | ||
1172 | + return (ctx->major); | ||
1173 | + } | ||
1174 | + | ||
1175 | + if (!equal) { | ||
1176 | + debug("Rekeyed credentials have different name"); | ||
1177 | + return GSS_S_COMPLETE; | ||
1178 | + } | ||
1179 | |||
1180 | - gss_buffer_desc ename; | ||
1181 | + debug("Marking rekeyed credentials for export"); | ||
1182 | + | ||
1183 | + gss_release_name(&ctx->minor, &client->name); | ||
1184 | + gss_release_cred(&ctx->minor, &client->creds); | ||
1185 | + client->name = new_name; | ||
1186 | + client->creds = ctx->client_creds; | ||
1187 | + ctx->client_creds = GSS_C_NO_CREDENTIAL; | ||
1188 | + client->updated = 1; | ||
1189 | + return GSS_S_COMPLETE; | ||
1190 | + } | ||
1191 | |||
1192 | client->mech = NULL; | ||
1193 | |||
1194 | @@ -292,6 +359,13 @@ ssh_gssapi_getclient(Gssctxt *ctx, ssh_gssapi_client *client) | ||
1195 | if (client->mech == NULL) | ||
1196 | return GSS_S_FAILURE; | ||
1197 | |||
1198 | + if (ctx->client_creds && | ||
1199 | + (ctx->major = gss_inquire_cred_by_mech(&ctx->minor, | ||
1200 | + ctx->client_creds, ctx->oid, &client->name, NULL, NULL, NULL))) { | ||
1201 | + ssh_gssapi_error(ctx); | ||
1202 | + return (ctx->major); | ||
1203 | + } | ||
1204 | + | ||
1205 | if ((ctx->major = gss_display_name(&ctx->minor, ctx->client, | ||
1206 | &client->displayname, NULL))) { | ||
1207 | ssh_gssapi_error(ctx); | ||
1208 | @@ -309,6 +383,8 @@ ssh_gssapi_getclient(Gssctxt *ctx, ssh_gssapi_client *client) | ||
1209 | return (ctx->major); | ||
1210 | } | ||
1211 | |||
1212 | + gss_release_buffer(&ctx->minor, &ename); | ||
1213 | + | ||
1214 | /* We can't copy this structure, so we just move the pointer to it */ | ||
1215 | client->creds = ctx->client_creds; | ||
1216 | ctx->client_creds = GSS_C_NO_CREDENTIAL; | ||
1217 | @@ -356,19 +432,23 @@ ssh_gssapi_do_child(char ***envp, u_int *envsizep) | ||
1218 | |||
1219 | /* Privileged */ | ||
1220 | int | ||
1221 | -ssh_gssapi_userok(char *user) | ||
1222 | +ssh_gssapi_userok(char *user, struct passwd *pw, int kex) | ||
1223 | { | ||
1224 | OM_uint32 lmin; | ||
1225 | |||
1226 | + (void) kex; /* used in privilege separation */ | ||
1227 | + | ||
1228 | if (gssapi_client.exportedname.length == 0 || | ||
1229 | gssapi_client.exportedname.value == NULL) { | ||
1230 | debug("No suitable client data"); | ||
1231 | return 0; | ||
1232 | } | ||
1233 | if (gssapi_client.mech && gssapi_client.mech->userok) | ||
1234 | - if ((*gssapi_client.mech->userok)(&gssapi_client, user)) | ||
1235 | + if ((*gssapi_client.mech->userok)(&gssapi_client, user)) { | ||
1236 | + gssapi_client.used = 1; | ||
1237 | + gssapi_client.store.owner = pw; | ||
1238 | return 1; | ||
1239 | - else { | ||
1240 | + } else { | ||
1241 | /* Destroy delegated credentials if userok fails */ | ||
1242 | gss_release_buffer(&lmin, &gssapi_client.displayname); | ||
1243 | gss_release_buffer(&lmin, &gssapi_client.exportedname); | ||
1244 | @@ -382,14 +462,90 @@ ssh_gssapi_userok(char *user) | ||
1245 | return (0); | ||
1246 | } | ||
1247 | |||
1248 | -/* Privileged */ | ||
1249 | -OM_uint32 | ||
1250 | -ssh_gssapi_checkmic(Gssctxt *ctx, gss_buffer_t gssbuf, gss_buffer_t gssmic) | ||
1251 | +/* These bits are only used for rekeying. The unpriviledged child is running | ||
1252 | + * as the user, the monitor is root. | ||
1253 | + * | ||
1254 | + * In the child, we want to : | ||
1255 | + * *) Ask the monitor to store our credentials into the store we specify | ||
1256 | + * *) If it succeeds, maybe do a PAM update | ||
1257 | + */ | ||
1258 | + | ||
1259 | +/* Stuff for PAM */ | ||
1260 | + | ||
1261 | +#ifdef USE_PAM | ||
1262 | +static int ssh_gssapi_simple_conv(int n, const struct pam_message **msg, | ||
1263 | + struct pam_response **resp, void *data) | ||
1264 | { | ||
1265 | - ctx->major = gss_verify_mic(&ctx->minor, ctx->context, | ||
1266 | - gssbuf, gssmic, NULL); | ||
1267 | + return (PAM_CONV_ERR); | ||
1268 | +} | ||
1269 | +#endif | ||
1270 | |||
1271 | - return (ctx->major); | ||
1272 | +void | ||
1273 | +ssh_gssapi_rekey_creds(void) { | ||
1274 | + int ok; | ||
1275 | +#ifdef USE_PAM | ||
1276 | + int ret; | ||
1277 | + pam_handle_t *pamh = NULL; | ||
1278 | + struct pam_conv pamconv = {ssh_gssapi_simple_conv, NULL}; | ||
1279 | + char *envstr; | ||
1280 | +#endif | ||
1281 | + | ||
1282 | + if (gssapi_client.store.filename == NULL && | ||
1283 | + gssapi_client.store.envval == NULL && | ||
1284 | + gssapi_client.store.envvar == NULL) | ||
1285 | + return; | ||
1286 | + | ||
1287 | + ok = PRIVSEP(ssh_gssapi_update_creds(&gssapi_client.store)); | ||
1288 | + | ||
1289 | + if (!ok) | ||
1290 | + return; | ||
1291 | + | ||
1292 | + debug("Rekeyed credentials stored successfully"); | ||
1293 | + | ||
1294 | + /* Actually managing to play with the ssh pam stack from here will | ||
1295 | + * be next to impossible. In any case, we may want different options | ||
1296 | + * for rekeying. So, use our own :) | ||
1297 | + */ | ||
1298 | +#ifdef USE_PAM | ||
1299 | + if (!use_privsep) { | ||
1300 | + debug("Not even going to try and do PAM with privsep disabled"); | ||
1301 | + return; | ||
1302 | + } | ||
1303 | + | ||
1304 | + ret = pam_start("sshd-rekey", gssapi_client.store.owner->pw_name, | ||
1305 | + &pamconv, &pamh); | ||
1306 | + if (ret) | ||
1307 | + return; | ||
1308 | + | ||
1309 | + xasprintf(&envstr, "%s=%s", gssapi_client.store.envvar, | ||
1310 | + gssapi_client.store.envval); | ||
1311 | + | ||
1312 | + ret = pam_putenv(pamh, envstr); | ||
1313 | + if (!ret) | ||
1314 | + pam_setcred(pamh, PAM_REINITIALIZE_CRED); | ||
1315 | + pam_end(pamh, PAM_SUCCESS); | ||
1316 | +#endif | ||
1317 | +} | ||
1318 | + | ||
1319 | +int | ||
1320 | +ssh_gssapi_update_creds(ssh_gssapi_ccache *store) { | ||
1321 | + int ok = 0; | ||
1322 | + | ||
1323 | + /* Check we've got credentials to store */ | ||
1324 | + if (!gssapi_client.updated) | ||
1325 | + return 0; | ||
1326 | + | ||
1327 | + gssapi_client.updated = 0; | ||
1328 | + | ||
1329 | + temporarily_use_uid(gssapi_client.store.owner); | ||
1330 | + if (gssapi_client.mech && gssapi_client.mech->updatecreds) | ||
1331 | + ok = (*gssapi_client.mech->updatecreds)(store, &gssapi_client); | ||
1332 | + else | ||
1333 | + debug("No update function for this mechanism"); | ||
1334 | + | ||
1335 | + restore_uid(); | ||
1336 | + | ||
1337 | + return ok; | ||
1338 | } | ||
1339 | |||
1340 | /* Privileged */ | ||
1341 | diff --git a/hmac.c b/hmac.c | ||
1342 | index 1c879640c..a29f32c5c 100644 | ||
1343 | --- a/hmac.c | ||
1344 | +++ b/hmac.c | ||
1345 | @@ -19,6 +19,7 @@ | ||
1346 | |||
1347 | #include <sys/types.h> | ||
1348 | #include <string.h> | ||
1349 | +#include <stdlib.h> | ||
1350 | |||
1351 | #include "sshbuf.h" | ||
1352 | #include "digest.h" | ||
1353 | diff --git a/kex.c b/kex.c | ||
1354 | index 34808b5c3..a2a4794e8 100644 | ||
1355 | --- a/kex.c | ||
1356 | +++ b/kex.c | ||
1357 | @@ -55,11 +55,16 @@ | ||
1358 | #include "misc.h" | ||
1359 | #include "dispatch.h" | ||
1360 | #include "monitor.h" | ||
1361 | +#include "xmalloc.h" | ||
1362 | |||
1363 | #include "ssherr.h" | ||
1364 | #include "sshbuf.h" | ||
1365 | #include "digest.h" | ||
1366 | |||
1367 | +#ifdef GSSAPI | ||
1368 | +#include "ssh-gss.h" | ||
1369 | +#endif | ||
1370 | + | ||
1371 | /* prototype */ | ||
1372 | static int kex_choose_conf(struct ssh *); | ||
1373 | static int kex_input_newkeys(int, u_int32_t, struct ssh *); | ||
1374 | @@ -113,15 +118,28 @@ static const struct kexalg kexalgs[] = { | ||
1375 | #endif /* HAVE_EVP_SHA256 || !WITH_OPENSSL */ | ||
1376 | { NULL, -1, -1, -1}, | ||
1377 | }; | ||
1378 | +static const struct kexalg gss_kexalgs[] = { | ||
1379 | +#ifdef GSSAPI | ||
1380 | + { KEX_GSS_GEX_SHA1_ID, KEX_GSS_GEX_SHA1, 0, SSH_DIGEST_SHA1 }, | ||
1381 | + { KEX_GSS_GRP1_SHA1_ID, KEX_GSS_GRP1_SHA1, 0, SSH_DIGEST_SHA1 }, | ||
1382 | + { KEX_GSS_GRP14_SHA1_ID, KEX_GSS_GRP14_SHA1, 0, SSH_DIGEST_SHA1 }, | ||
1383 | + { KEX_GSS_GRP14_SHA256_ID, KEX_GSS_GRP14_SHA256, 0, SSH_DIGEST_SHA256 }, | ||
1384 | + { KEX_GSS_GRP16_SHA512_ID, KEX_GSS_GRP16_SHA512, 0, SSH_DIGEST_SHA512 }, | ||
1385 | + { KEX_GSS_NISTP256_SHA256_ID, KEX_GSS_NISTP256_SHA256, | ||
1386 | + NID_X9_62_prime256v1, SSH_DIGEST_SHA256 }, | ||
1387 | + { KEX_GSS_C25519_SHA256_ID, KEX_GSS_C25519_SHA256, 0, SSH_DIGEST_SHA256 }, | ||
1388 | +#endif | ||
1389 | + { NULL, -1, -1, -1 }, | ||
1390 | +}; | ||
1391 | |||
1392 | -char * | ||
1393 | -kex_alg_list(char sep) | ||
1394 | +static char * | ||
1395 | +kex_alg_list_internal(char sep, const struct kexalg *algs) | ||
1396 | { | ||
1397 | char *ret = NULL, *tmp; | ||
1398 | size_t nlen, rlen = 0; | ||
1399 | const struct kexalg *k; | ||
1400 | |||
1401 | - for (k = kexalgs; k->name != NULL; k++) { | ||
1402 | + for (k = algs; k->name != NULL; k++) { | ||
1403 | if (ret != NULL) | ||
1404 | ret[rlen++] = sep; | ||
1405 | nlen = strlen(k->name); | ||
1406 | @@ -136,6 +154,18 @@ kex_alg_list(char sep) | ||
1407 | return ret; | ||
1408 | } | ||
1409 | |||
1410 | +char * | ||
1411 | +kex_alg_list(char sep) | ||
1412 | +{ | ||
1413 | + return kex_alg_list_internal(sep, kexalgs); | ||
1414 | +} | ||
1415 | + | ||
1416 | +char * | ||
1417 | +kex_gss_alg_list(char sep) | ||
1418 | +{ | ||
1419 | + return kex_alg_list_internal(sep, gss_kexalgs); | ||
1420 | +} | ||
1421 | + | ||
1422 | static const struct kexalg * | ||
1423 | kex_alg_by_name(const char *name) | ||
1424 | { | ||
1425 | @@ -145,6 +175,10 @@ kex_alg_by_name(const char *name) | ||
1426 | if (strcmp(k->name, name) == 0) | ||
1427 | return k; | ||
1428 | } | ||
1429 | + for (k = gss_kexalgs; k->name != NULL; k++) { | ||
1430 | + if (strncmp(k->name, name, strlen(k->name)) == 0) | ||
1431 | + return k; | ||
1432 | + } | ||
1433 | return NULL; | ||
1434 | } | ||
1435 | |||
1436 | @@ -301,6 +335,29 @@ kex_assemble_names(char **listp, const char *def, const char *all) | ||
1437 | return r; | ||
1438 | } | ||
1439 | |||
1440 | +/* Validate GSS KEX method name list */ | ||
1441 | +int | ||
1442 | +kex_gss_names_valid(const char *names) | ||
1443 | +{ | ||
1444 | + char *s, *cp, *p; | ||
1445 | + | ||
1446 | + if (names == NULL || *names == '\0') | ||
1447 | + return 0; | ||
1448 | + s = cp = xstrdup(names); | ||
1449 | + for ((p = strsep(&cp, ",")); p && *p != '\0'; | ||
1450 | + (p = strsep(&cp, ","))) { | ||
1451 | + if (strncmp(p, "gss-", 4) != 0 | ||
1452 | + || kex_alg_by_name(p) == NULL) { | ||
1453 | + error("Unsupported KEX algorithm \"%.100s\"", p); | ||
1454 | + free(s); | ||
1455 | + return 0; | ||
1456 | + } | ||
1457 | + } | ||
1458 | + debug3("gss kex names ok: [%s]", names); | ||
1459 | + free(s); | ||
1460 | + return 1; | ||
1461 | +} | ||
1462 | + | ||
1463 | /* put algorithm proposal into buffer */ | ||
1464 | int | ||
1465 | kex_prop2buf(struct sshbuf *b, char *proposal[PROPOSAL_MAX]) | ||
1466 | @@ -657,6 +714,9 @@ kex_free(struct kex *kex) | ||
1467 | sshbuf_free(kex->server_version); | ||
1468 | sshbuf_free(kex->client_pub); | ||
1469 | free(kex->session_id); | ||
1470 | +#ifdef GSSAPI | ||
1471 | + free(kex->gss_host); | ||
1472 | +#endif /* GSSAPI */ | ||
1473 | free(kex->failed_choice); | ||
1474 | free(kex->hostkey_alg); | ||
1475 | free(kex->name); | ||
1476 | diff --git a/kex.h b/kex.h | ||
1477 | index 6d446d1cc..2d5f1d4ed 100644 | ||
1478 | --- a/kex.h | ||
1479 | +++ b/kex.h | ||
1480 | @@ -103,6 +103,15 @@ enum kex_exchange { | ||
1481 | KEX_ECDH_SHA2, | ||
1482 | KEX_C25519_SHA256, | ||
1483 | KEX_KEM_SNTRUP4591761X25519_SHA512, | ||
1484 | +#ifdef GSSAPI | ||
1485 | + KEX_GSS_GRP1_SHA1, | ||
1486 | + KEX_GSS_GRP14_SHA1, | ||
1487 | + KEX_GSS_GRP14_SHA256, | ||
1488 | + KEX_GSS_GRP16_SHA512, | ||
1489 | + KEX_GSS_GEX_SHA1, | ||
1490 | + KEX_GSS_NISTP256_SHA256, | ||
1491 | + KEX_GSS_C25519_SHA256, | ||
1492 | +#endif | ||
1493 | KEX_MAX | ||
1494 | }; | ||
1495 | |||
1496 | @@ -154,6 +163,12 @@ struct kex { | ||
1497 | u_int flags; | ||
1498 | int hash_alg; | ||
1499 | int ec_nid; | ||
1500 | +#ifdef GSSAPI | ||
1501 | + int gss_deleg_creds; | ||
1502 | + int gss_trust_dns; | ||
1503 | + char *gss_host; | ||
1504 | + char *gss_client; | ||
1505 | +#endif | ||
1506 | char *failed_choice; | ||
1507 | int (*verify_host_key)(struct sshkey *, struct ssh *); | ||
1508 | struct sshkey *(*load_host_public_key)(int, int, struct ssh *); | ||
1509 | @@ -175,8 +190,10 @@ struct kex { | ||
1510 | |||
1511 | int kex_names_valid(const char *); | ||
1512 | char *kex_alg_list(char); | ||
1513 | +char *kex_gss_alg_list(char); | ||
1514 | char *kex_names_cat(const char *, const char *); | ||
1515 | int kex_assemble_names(char **, const char *, const char *); | ||
1516 | +int kex_gss_names_valid(const char *); | ||
1517 | |||
1518 | int kex_exchange_identification(struct ssh *, int, const char *); | ||
1519 | |||
1520 | @@ -203,6 +220,12 @@ int kexgex_client(struct ssh *); | ||
1521 | int kexgex_server(struct ssh *); | ||
1522 | int kex_gen_client(struct ssh *); | ||
1523 | int kex_gen_server(struct ssh *); | ||
1524 | +#if defined(GSSAPI) && defined(WITH_OPENSSL) | ||
1525 | +int kexgssgex_client(struct ssh *); | ||
1526 | +int kexgssgex_server(struct ssh *); | ||
1527 | +int kexgss_client(struct ssh *); | ||
1528 | +int kexgss_server(struct ssh *); | ||
1529 | +#endif | ||
1530 | |||
1531 | int kex_dh_keypair(struct kex *); | ||
1532 | int kex_dh_enc(struct kex *, const struct sshbuf *, struct sshbuf **, | ||
1533 | @@ -235,6 +258,12 @@ int kexgex_hash(int, const struct sshbuf *, const struct sshbuf *, | ||
1534 | const BIGNUM *, const u_char *, size_t, | ||
1535 | u_char *, size_t *); | ||
1536 | |||
1537 | +int kex_gen_hash(int hash_alg, const struct sshbuf *client_version, | ||
1538 | + const struct sshbuf *server_version, const struct sshbuf *client_kexinit, | ||
1539 | + const struct sshbuf *server_kexinit, const struct sshbuf *server_host_key_blob, | ||
1540 | + const struct sshbuf *client_pub, const struct sshbuf *server_pub, | ||
1541 | + const struct sshbuf *shared_secret, u_char *hash, size_t *hashlen); | ||
1542 | + | ||
1543 | void kexc25519_keygen(u_char key[CURVE25519_SIZE], u_char pub[CURVE25519_SIZE]) | ||
1544 | __attribute__((__bounded__(__minbytes__, 1, CURVE25519_SIZE))) | ||
1545 | __attribute__((__bounded__(__minbytes__, 2, CURVE25519_SIZE))); | ||
1546 | diff --git a/kexdh.c b/kexdh.c | ||
1547 | index 67133e339..edaa46762 100644 | ||
1548 | --- a/kexdh.c | ||
1549 | +++ b/kexdh.c | ||
1550 | @@ -48,13 +48,23 @@ kex_dh_keygen(struct kex *kex) | ||
1551 | { | ||
1552 | switch (kex->kex_type) { | ||
1553 | case KEX_DH_GRP1_SHA1: | ||
1554 | +#ifdef GSSAPI | ||
1555 | + case KEX_GSS_GRP1_SHA1: | ||
1556 | +#endif | ||
1557 | kex->dh = dh_new_group1(); | ||
1558 | break; | ||
1559 | case KEX_DH_GRP14_SHA1: | ||
1560 | case KEX_DH_GRP14_SHA256: | ||
1561 | +#ifdef GSSAPI | ||
1562 | + case KEX_GSS_GRP14_SHA1: | ||
1563 | + case KEX_GSS_GRP14_SHA256: | ||
1564 | +#endif | ||
1565 | kex->dh = dh_new_group14(); | ||
1566 | break; | ||
1567 | case KEX_DH_GRP16_SHA512: | ||
1568 | +#ifdef GSSAPI | ||
1569 | + case KEX_GSS_GRP16_SHA512: | ||
1570 | +#endif | ||
1571 | kex->dh = dh_new_group16(); | ||
1572 | break; | ||
1573 | case KEX_DH_GRP18_SHA512: | ||
1574 | diff --git a/kexgen.c b/kexgen.c | ||
1575 | index 2abbb9ef6..569dc83f3 100644 | ||
1576 | --- a/kexgen.c | ||
1577 | +++ b/kexgen.c | ||
1578 | @@ -43,7 +43,7 @@ | ||
1579 | static int input_kex_gen_init(int, u_int32_t, struct ssh *); | ||
1580 | static int input_kex_gen_reply(int type, u_int32_t seq, struct ssh *ssh); | ||
1581 | |||
1582 | -static int | ||
1583 | +int | ||
1584 | kex_gen_hash( | ||
1585 | int hash_alg, | ||
1586 | const struct sshbuf *client_version, | ||
1587 | diff --git a/kexgssc.c b/kexgssc.c | ||
1588 | new file mode 100644 | ||
1589 | index 000000000..f6e1405eb | ||
1590 | --- /dev/null | ||
1591 | +++ b/kexgssc.c | ||
1592 | @@ -0,0 +1,606 @@ | ||
1593 | +/* | ||
1594 | + * Copyright (c) 2001-2009 Simon Wilkinson. All rights reserved. | ||
1595 | + * | ||
1596 | + * Redistribution and use in source and binary forms, with or without | ||
1597 | + * modification, are permitted provided that the following conditions | ||
1598 | + * are met: | ||
1599 | + * 1. Redistributions of source code must retain the above copyright | ||
1600 | + * notice, this list of conditions and the following disclaimer. | ||
1601 | + * 2. Redistributions in binary form must reproduce the above copyright | ||
1602 | + * notice, this list of conditions and the following disclaimer in the | ||
1603 | + * documentation and/or other materials provided with the distribution. | ||
1604 | + * | ||
1605 | + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS'' AND ANY EXPRESS OR | ||
1606 | + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | ||
1607 | + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | ||
1608 | + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
1609 | + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
1610 | + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
1611 | + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
1612 | + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
1613 | + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
1614 | + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
1615 | + */ | ||
1616 | + | ||
1617 | +#include "includes.h" | ||
1618 | + | ||
1619 | +#if defined(GSSAPI) && defined(WITH_OPENSSL) | ||
1620 | + | ||
1621 | +#include "includes.h" | ||
1622 | + | ||
1623 | +#include <openssl/crypto.h> | ||
1624 | +#include <openssl/bn.h> | ||
1625 | + | ||
1626 | +#include <string.h> | ||
1627 | + | ||
1628 | +#include "xmalloc.h" | ||
1629 | +#include "sshbuf.h" | ||
1630 | +#include "ssh2.h" | ||
1631 | +#include "sshkey.h" | ||
1632 | +#include "cipher.h" | ||
1633 | +#include "kex.h" | ||
1634 | +#include "log.h" | ||
1635 | +#include "packet.h" | ||
1636 | +#include "dh.h" | ||
1637 | +#include "digest.h" | ||
1638 | +#include "ssherr.h" | ||
1639 | + | ||
1640 | +#include "ssh-gss.h" | ||
1641 | + | ||
1642 | +int | ||
1643 | +kexgss_client(struct ssh *ssh) | ||
1644 | +{ | ||
1645 | + struct kex *kex = ssh->kex; | ||
1646 | + gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER, | ||
1647 | + recv_tok = GSS_C_EMPTY_BUFFER, | ||
1648 | + gssbuf, msg_tok = GSS_C_EMPTY_BUFFER, *token_ptr; | ||
1649 | + Gssctxt *ctxt; | ||
1650 | + OM_uint32 maj_status, min_status, ret_flags; | ||
1651 | + struct sshbuf *server_blob = NULL; | ||
1652 | + struct sshbuf *shared_secret = NULL; | ||
1653 | + struct sshbuf *server_host_key_blob = NULL; | ||
1654 | + struct sshbuf *empty = NULL; | ||
1655 | + u_char *msg; | ||
1656 | + int type = 0; | ||
1657 | + int first = 1; | ||
1658 | + u_char hash[SSH_DIGEST_MAX_LENGTH]; | ||
1659 | + size_t hashlen; | ||
1660 | + u_char c; | ||
1661 | + int r; | ||
1662 | + | ||
1663 | + /* Initialise our GSSAPI world */ | ||
1664 | + ssh_gssapi_build_ctx(&ctxt); | ||
1665 | + if (ssh_gssapi_id_kex(ctxt, kex->name, kex->kex_type) | ||
1666 | + == GSS_C_NO_OID) | ||
1667 | + fatal("Couldn't identify host exchange"); | ||
1668 | + | ||
1669 | + if (ssh_gssapi_import_name(ctxt, kex->gss_host)) | ||
1670 | + fatal("Couldn't import hostname"); | ||
1671 | + | ||
1672 | + if (kex->gss_client && | ||
1673 | + ssh_gssapi_client_identity(ctxt, kex->gss_client)) | ||
1674 | + fatal("Couldn't acquire client credentials"); | ||
1675 | + | ||
1676 | + /* Step 1 */ | ||
1677 | + switch (kex->kex_type) { | ||
1678 | + case KEX_GSS_GRP1_SHA1: | ||
1679 | + case KEX_GSS_GRP14_SHA1: | ||
1680 | + case KEX_GSS_GRP14_SHA256: | ||
1681 | + case KEX_GSS_GRP16_SHA512: | ||
1682 | + r = kex_dh_keypair(kex); | ||
1683 | + break; | ||
1684 | + case KEX_GSS_NISTP256_SHA256: | ||
1685 | + r = kex_ecdh_keypair(kex); | ||
1686 | + break; | ||
1687 | + case KEX_GSS_C25519_SHA256: | ||
1688 | + r = kex_c25519_keypair(kex); | ||
1689 | + break; | ||
1690 | + default: | ||
1691 | + fatal("%s: Unexpected KEX type %d", __func__, kex->kex_type); | ||
1692 | + } | ||
1693 | + if (r != 0) | ||
1694 | + return r; | ||
1695 | + | ||
1696 | + token_ptr = GSS_C_NO_BUFFER; | ||
1697 | + | ||
1698 | + do { | ||
1699 | + debug("Calling gss_init_sec_context"); | ||
1700 | + | ||
1701 | + maj_status = ssh_gssapi_init_ctx(ctxt, | ||
1702 | + kex->gss_deleg_creds, token_ptr, &send_tok, | ||
1703 | + &ret_flags); | ||
1704 | + | ||
1705 | + if (GSS_ERROR(maj_status)) { | ||
1706 | + /* XXX Useles code: Missing send? */ | ||
1707 | + if (send_tok.length != 0) { | ||
1708 | + if ((r = sshpkt_start(ssh, | ||
1709 | + SSH2_MSG_KEXGSS_CONTINUE)) != 0 || | ||
1710 | + (r = sshpkt_put_string(ssh, send_tok.value, | ||
1711 | + send_tok.length)) != 0) | ||
1712 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
1713 | + } | ||
1714 | + fatal("gss_init_context failed"); | ||
1715 | + } | ||
1716 | + | ||
1717 | + /* If we've got an old receive buffer get rid of it */ | ||
1718 | + if (token_ptr != GSS_C_NO_BUFFER) | ||
1719 | + gss_release_buffer(&min_status, &recv_tok); | ||
1720 | + | ||
1721 | + if (maj_status == GSS_S_COMPLETE) { | ||
1722 | + /* If mutual state flag is not true, kex fails */ | ||
1723 | + if (!(ret_flags & GSS_C_MUTUAL_FLAG)) | ||
1724 | + fatal("Mutual authentication failed"); | ||
1725 | + | ||
1726 | + /* If integ avail flag is not true kex fails */ | ||
1727 | + if (!(ret_flags & GSS_C_INTEG_FLAG)) | ||
1728 | + fatal("Integrity check failed"); | ||
1729 | + } | ||
1730 | + | ||
1731 | + /* | ||
1732 | + * If we have data to send, then the last message that we | ||
1733 | + * received cannot have been a 'complete'. | ||
1734 | + */ | ||
1735 | + if (send_tok.length != 0) { | ||
1736 | + if (first) { | ||
1737 | + if ((r = sshpkt_start(ssh, SSH2_MSG_KEXGSS_INIT)) != 0 || | ||
1738 | + (r = sshpkt_put_string(ssh, send_tok.value, | ||
1739 | + send_tok.length)) != 0 || | ||
1740 | + (r = sshpkt_put_stringb(ssh, kex->client_pub)) != 0) | ||
1741 | + fatal("failed to construct packet: %s", ssh_err(r)); | ||
1742 | + first = 0; | ||
1743 | + } else { | ||
1744 | + if ((r = sshpkt_start(ssh, SSH2_MSG_KEXGSS_CONTINUE)) != 0 || | ||
1745 | + (r = sshpkt_put_string(ssh, send_tok.value, | ||
1746 | + send_tok.length)) != 0) | ||
1747 | + fatal("failed to construct packet: %s", ssh_err(r)); | ||
1748 | + } | ||
1749 | + if ((r = sshpkt_send(ssh)) != 0) | ||
1750 | + fatal("failed to send packet: %s", ssh_err(r)); | ||
1751 | + gss_release_buffer(&min_status, &send_tok); | ||
1752 | + | ||
1753 | + /* If we've sent them data, they should reply */ | ||
1754 | + do { | ||
1755 | + type = ssh_packet_read(ssh); | ||
1756 | + if (type == SSH2_MSG_KEXGSS_HOSTKEY) { | ||
1757 | + debug("Received KEXGSS_HOSTKEY"); | ||
1758 | + if (server_host_key_blob) | ||
1759 | + fatal("Server host key received more than once"); | ||
1760 | + if ((r = sshpkt_getb_froms(ssh, &server_host_key_blob)) != 0) | ||
1761 | + fatal("Failed to read server host key: %s", ssh_err(r)); | ||
1762 | + } | ||
1763 | + } while (type == SSH2_MSG_KEXGSS_HOSTKEY); | ||
1764 | + | ||
1765 | + switch (type) { | ||
1766 | + case SSH2_MSG_KEXGSS_CONTINUE: | ||
1767 | + debug("Received GSSAPI_CONTINUE"); | ||
1768 | + if (maj_status == GSS_S_COMPLETE) | ||
1769 | + fatal("GSSAPI Continue received from server when complete"); | ||
1770 | + if ((r = ssh_gssapi_sshpkt_get_buffer_desc(ssh, | ||
1771 | + &recv_tok)) != 0 || | ||
1772 | + (r = sshpkt_get_end(ssh)) != 0) | ||
1773 | + fatal("Failed to read token: %s", ssh_err(r)); | ||
1774 | + break; | ||
1775 | + case SSH2_MSG_KEXGSS_COMPLETE: | ||
1776 | + debug("Received GSSAPI_COMPLETE"); | ||
1777 | + if (msg_tok.value != NULL) | ||
1778 | + fatal("Received GSSAPI_COMPLETE twice?"); | ||
1779 | + if ((r = sshpkt_getb_froms(ssh, &server_blob)) != 0 || | ||
1780 | + (r = ssh_gssapi_sshpkt_get_buffer_desc(ssh, | ||
1781 | + &msg_tok)) != 0) | ||
1782 | + fatal("Failed to read message: %s", ssh_err(r)); | ||
1783 | + | ||
1784 | + /* Is there a token included? */ | ||
1785 | + if ((r = sshpkt_get_u8(ssh, &c)) != 0) | ||
1786 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
1787 | + if (c) { | ||
1788 | + if ((r = ssh_gssapi_sshpkt_get_buffer_desc( | ||
1789 | + ssh, &recv_tok)) != 0) | ||
1790 | + fatal("Failed to read token: %s", ssh_err(r)); | ||
1791 | + /* If we're already complete - protocol error */ | ||
1792 | + if (maj_status == GSS_S_COMPLETE) | ||
1793 | + sshpkt_disconnect(ssh, "Protocol error: received token when complete"); | ||
1794 | + } else { | ||
1795 | + /* No token included */ | ||
1796 | + if (maj_status != GSS_S_COMPLETE) | ||
1797 | + sshpkt_disconnect(ssh, "Protocol error: did not receive final token"); | ||
1798 | + } | ||
1799 | + if ((r = sshpkt_get_end(ssh)) != 0) { | ||
1800 | + fatal("Expecting end of packet."); | ||
1801 | + } | ||
1802 | + break; | ||
1803 | + case SSH2_MSG_KEXGSS_ERROR: | ||
1804 | + debug("Received Error"); | ||
1805 | + if ((r = sshpkt_get_u32(ssh, &maj_status)) != 0 || | ||
1806 | + (r = sshpkt_get_u32(ssh, &min_status)) != 0 || | ||
1807 | + (r = sshpkt_get_string(ssh, &msg, NULL)) != 0 || | ||
1808 | + (r = sshpkt_get_string(ssh, NULL, NULL)) != 0 || /* lang tag */ | ||
1809 | + (r = sshpkt_get_end(ssh)) != 0) | ||
1810 | + fatal("sshpkt_get failed: %s", ssh_err(r)); | ||
1811 | + fatal("GSSAPI Error: \n%.400s", msg); | ||
1812 | + default: | ||
1813 | + sshpkt_disconnect(ssh, "Protocol error: didn't expect packet type %d", | ||
1814 | + type); | ||
1815 | + } | ||
1816 | + token_ptr = &recv_tok; | ||
1817 | + } else { | ||
1818 | + /* No data, and not complete */ | ||
1819 | + if (maj_status != GSS_S_COMPLETE) | ||
1820 | + fatal("Not complete, and no token output"); | ||
1821 | + } | ||
1822 | + } while (maj_status & GSS_S_CONTINUE_NEEDED); | ||
1823 | + | ||
1824 | + /* | ||
1825 | + * We _must_ have received a COMPLETE message in reply from the | ||
1826 | + * server, which will have set server_blob and msg_tok | ||
1827 | + */ | ||
1828 | + | ||
1829 | + if (type != SSH2_MSG_KEXGSS_COMPLETE) | ||
1830 | + fatal("Didn't receive a SSH2_MSG_KEXGSS_COMPLETE when I expected it"); | ||
1831 | + | ||
1832 | + /* compute shared secret */ | ||
1833 | + switch (kex->kex_type) { | ||
1834 | + case KEX_GSS_GRP1_SHA1: | ||
1835 | + case KEX_GSS_GRP14_SHA1: | ||
1836 | + case KEX_GSS_GRP14_SHA256: | ||
1837 | + case KEX_GSS_GRP16_SHA512: | ||
1838 | + r = kex_dh_dec(kex, server_blob, &shared_secret); | ||
1839 | + break; | ||
1840 | + case KEX_GSS_C25519_SHA256: | ||
1841 | + if (sshbuf_ptr(server_blob)[sshbuf_len(server_blob)] & 0x80) | ||
1842 | + fatal("The received key has MSB of last octet set!"); | ||
1843 | + r = kex_c25519_dec(kex, server_blob, &shared_secret); | ||
1844 | + break; | ||
1845 | + case KEX_GSS_NISTP256_SHA256: | ||
1846 | + if (sshbuf_len(server_blob) != 65) | ||
1847 | + fatal("The received NIST-P256 key did not match" | ||
1848 | + "expected length (expected 65, got %zu)", sshbuf_len(server_blob)); | ||
1849 | + | ||
1850 | + if (sshbuf_ptr(server_blob)[0] != POINT_CONVERSION_UNCOMPRESSED) | ||
1851 | + fatal("The received NIST-P256 key does not have first octet 0x04"); | ||
1852 | + | ||
1853 | + r = kex_ecdh_dec(kex, server_blob, &shared_secret); | ||
1854 | + break; | ||
1855 | + default: | ||
1856 | + r = SSH_ERR_INVALID_ARGUMENT; | ||
1857 | + break; | ||
1858 | + } | ||
1859 | + if (r != 0) | ||
1860 | + goto out; | ||
1861 | + | ||
1862 | + if ((empty = sshbuf_new()) == NULL) { | ||
1863 | + r = SSH_ERR_ALLOC_FAIL; | ||
1864 | + goto out; | ||
1865 | + } | ||
1866 | + | ||
1867 | + hashlen = sizeof(hash); | ||
1868 | + if ((r = kex_gen_hash( | ||
1869 | + kex->hash_alg, | ||
1870 | + kex->client_version, | ||
1871 | + kex->server_version, | ||
1872 | + kex->my, | ||
1873 | + kex->peer, | ||
1874 | + (server_host_key_blob ? server_host_key_blob : empty), | ||
1875 | + kex->client_pub, | ||
1876 | + server_blob, | ||
1877 | + shared_secret, | ||
1878 | + hash, &hashlen)) != 0) | ||
1879 | + fatal("%s: Unexpected KEX type %d", __func__, kex->kex_type); | ||
1880 | + | ||
1881 | + gssbuf.value = hash; | ||
1882 | + gssbuf.length = hashlen; | ||
1883 | + | ||
1884 | + /* Verify that the hash matches the MIC we just got. */ | ||
1885 | + if (GSS_ERROR(ssh_gssapi_checkmic(ctxt, &gssbuf, &msg_tok))) | ||
1886 | + sshpkt_disconnect(ssh, "Hash's MIC didn't verify"); | ||
1887 | + | ||
1888 | + gss_release_buffer(&min_status, &msg_tok); | ||
1889 | + | ||
1890 | + if (kex->gss_deleg_creds) | ||
1891 | + ssh_gssapi_credentials_updated(ctxt); | ||
1892 | + | ||
1893 | + if (gss_kex_context == NULL) | ||
1894 | + gss_kex_context = ctxt; | ||
1895 | + else | ||
1896 | + ssh_gssapi_delete_ctx(&ctxt); | ||
1897 | + | ||
1898 | + if ((r = kex_derive_keys(ssh, hash, hashlen, shared_secret)) == 0) | ||
1899 | + r = kex_send_newkeys(ssh); | ||
1900 | + | ||
1901 | +out: | ||
1902 | + explicit_bzero(hash, sizeof(hash)); | ||
1903 | + explicit_bzero(kex->c25519_client_key, sizeof(kex->c25519_client_key)); | ||
1904 | + sshbuf_free(empty); | ||
1905 | + sshbuf_free(server_host_key_blob); | ||
1906 | + sshbuf_free(server_blob); | ||
1907 | + sshbuf_free(shared_secret); | ||
1908 | + sshbuf_free(kex->client_pub); | ||
1909 | + kex->client_pub = NULL; | ||
1910 | + return r; | ||
1911 | +} | ||
1912 | + | ||
1913 | +int | ||
1914 | +kexgssgex_client(struct ssh *ssh) | ||
1915 | +{ | ||
1916 | + struct kex *kex = ssh->kex; | ||
1917 | + gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER, | ||
1918 | + recv_tok = GSS_C_EMPTY_BUFFER, gssbuf, | ||
1919 | + msg_tok = GSS_C_EMPTY_BUFFER, *token_ptr; | ||
1920 | + Gssctxt *ctxt; | ||
1921 | + OM_uint32 maj_status, min_status, ret_flags; | ||
1922 | + struct sshbuf *shared_secret = NULL; | ||
1923 | + BIGNUM *p = NULL; | ||
1924 | + BIGNUM *g = NULL; | ||
1925 | + struct sshbuf *buf = NULL; | ||
1926 | + struct sshbuf *server_host_key_blob = NULL; | ||
1927 | + struct sshbuf *server_blob = NULL; | ||
1928 | + BIGNUM *dh_server_pub = NULL; | ||
1929 | + u_char *msg; | ||
1930 | + int type = 0; | ||
1931 | + int first = 1; | ||
1932 | + u_char hash[SSH_DIGEST_MAX_LENGTH]; | ||
1933 | + size_t hashlen; | ||
1934 | + const BIGNUM *pub_key, *dh_p, *dh_g; | ||
1935 | + int nbits = 0, min = DH_GRP_MIN, max = DH_GRP_MAX; | ||
1936 | + struct sshbuf *empty = NULL; | ||
1937 | + u_char c; | ||
1938 | + int r; | ||
1939 | + | ||
1940 | + /* Initialise our GSSAPI world */ | ||
1941 | + ssh_gssapi_build_ctx(&ctxt); | ||
1942 | + if (ssh_gssapi_id_kex(ctxt, kex->name, kex->kex_type) | ||
1943 | + == GSS_C_NO_OID) | ||
1944 | + fatal("Couldn't identify host exchange"); | ||
1945 | + | ||
1946 | + if (ssh_gssapi_import_name(ctxt, kex->gss_host)) | ||
1947 | + fatal("Couldn't import hostname"); | ||
1948 | + | ||
1949 | + if (kex->gss_client && | ||
1950 | + ssh_gssapi_client_identity(ctxt, kex->gss_client)) | ||
1951 | + fatal("Couldn't acquire client credentials"); | ||
1952 | + | ||
1953 | + debug("Doing group exchange"); | ||
1954 | + nbits = dh_estimate(kex->dh_need * 8); | ||
1955 | + | ||
1956 | + kex->min = DH_GRP_MIN; | ||
1957 | + kex->max = DH_GRP_MAX; | ||
1958 | + kex->nbits = nbits; | ||
1959 | + if ((r = sshpkt_start(ssh, SSH2_MSG_KEXGSS_GROUPREQ)) != 0 || | ||
1960 | + (r = sshpkt_put_u32(ssh, min)) != 0 || | ||
1961 | + (r = sshpkt_put_u32(ssh, nbits)) != 0 || | ||
1962 | + (r = sshpkt_put_u32(ssh, max)) != 0 || | ||
1963 | + (r = sshpkt_send(ssh)) != 0) | ||
1964 | + fatal("Failed to construct a packet: %s", ssh_err(r)); | ||
1965 | + | ||
1966 | + if ((r = ssh_packet_read_expect(ssh, SSH2_MSG_KEXGSS_GROUP)) != 0) | ||
1967 | + fatal("Error: %s", ssh_err(r)); | ||
1968 | + | ||
1969 | + if ((r = sshpkt_get_bignum2(ssh, &p)) != 0 || | ||
1970 | + (r = sshpkt_get_bignum2(ssh, &g)) != 0 || | ||
1971 | + (r = sshpkt_get_end(ssh)) != 0) | ||
1972 | + fatal("shpkt_get_bignum2 failed: %s", ssh_err(r)); | ||
1973 | + | ||
1974 | + if (BN_num_bits(p) < min || BN_num_bits(p) > max) | ||
1975 | + fatal("GSSGRP_GEX group out of range: %d !< %d !< %d", | ||
1976 | + min, BN_num_bits(p), max); | ||
1977 | + | ||
1978 | + if ((kex->dh = dh_new_group(g, p)) == NULL) | ||
1979 | + fatal("dn_new_group() failed"); | ||
1980 | + p = g = NULL; /* belong to kex->dh now */ | ||
1981 | + | ||
1982 | + if ((r = dh_gen_key(kex->dh, kex->we_need * 8)) != 0) | ||
1983 | + goto out; | ||
1984 | + DH_get0_key(kex->dh, &pub_key, NULL); | ||
1985 | + | ||
1986 | + token_ptr = GSS_C_NO_BUFFER; | ||
1987 | + | ||
1988 | + do { | ||
1989 | + /* Step 2 - call GSS_Init_sec_context() */ | ||
1990 | + debug("Calling gss_init_sec_context"); | ||
1991 | + | ||
1992 | + maj_status = ssh_gssapi_init_ctx(ctxt, | ||
1993 | + kex->gss_deleg_creds, token_ptr, &send_tok, | ||
1994 | + &ret_flags); | ||
1995 | + | ||
1996 | + if (GSS_ERROR(maj_status)) { | ||
1997 | + /* XXX Useles code: Missing send? */ | ||
1998 | + if (send_tok.length != 0) { | ||
1999 | + if ((r = sshpkt_start(ssh, | ||
2000 | + SSH2_MSG_KEXGSS_CONTINUE)) != 0 || | ||
2001 | + (r = sshpkt_put_string(ssh, send_tok.value, | ||
2002 | + send_tok.length)) != 0) | ||
2003 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2004 | + } | ||
2005 | + fatal("gss_init_context failed"); | ||
2006 | + } | ||
2007 | + | ||
2008 | + /* If we've got an old receive buffer get rid of it */ | ||
2009 | + if (token_ptr != GSS_C_NO_BUFFER) | ||
2010 | + gss_release_buffer(&min_status, &recv_tok); | ||
2011 | + | ||
2012 | + if (maj_status == GSS_S_COMPLETE) { | ||
2013 | + /* If mutual state flag is not true, kex fails */ | ||
2014 | + if (!(ret_flags & GSS_C_MUTUAL_FLAG)) | ||
2015 | + fatal("Mutual authentication failed"); | ||
2016 | + | ||
2017 | + /* If integ avail flag is not true kex fails */ | ||
2018 | + if (!(ret_flags & GSS_C_INTEG_FLAG)) | ||
2019 | + fatal("Integrity check failed"); | ||
2020 | + } | ||
2021 | + | ||
2022 | + /* | ||
2023 | + * If we have data to send, then the last message that we | ||
2024 | + * received cannot have been a 'complete'. | ||
2025 | + */ | ||
2026 | + if (send_tok.length != 0) { | ||
2027 | + if (first) { | ||
2028 | + if ((r = sshpkt_start(ssh, SSH2_MSG_KEXGSS_INIT)) != 0 || | ||
2029 | + (r = sshpkt_put_string(ssh, send_tok.value, | ||
2030 | + send_tok.length)) != 0 || | ||
2031 | + (r = sshpkt_put_bignum2(ssh, pub_key)) != 0) | ||
2032 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2033 | + first = 0; | ||
2034 | + } else { | ||
2035 | + if ((r = sshpkt_start(ssh, SSH2_MSG_KEXGSS_CONTINUE)) != 0 || | ||
2036 | + (r = sshpkt_put_string(ssh,send_tok.value, | ||
2037 | + send_tok.length)) != 0) | ||
2038 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2039 | + } | ||
2040 | + if ((r = sshpkt_send(ssh)) != 0) | ||
2041 | + fatal("sshpkt_send failed: %s", ssh_err(r)); | ||
2042 | + gss_release_buffer(&min_status, &send_tok); | ||
2043 | + | ||
2044 | + /* If we've sent them data, they should reply */ | ||
2045 | + do { | ||
2046 | + type = ssh_packet_read(ssh); | ||
2047 | + if (type == SSH2_MSG_KEXGSS_HOSTKEY) { | ||
2048 | + debug("Received KEXGSS_HOSTKEY"); | ||
2049 | + if (server_host_key_blob) | ||
2050 | + fatal("Server host key received more than once"); | ||
2051 | + if ((r = sshpkt_getb_froms(ssh, &server_host_key_blob)) != 0) | ||
2052 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2053 | + } | ||
2054 | + } while (type == SSH2_MSG_KEXGSS_HOSTKEY); | ||
2055 | + | ||
2056 | + switch (type) { | ||
2057 | + case SSH2_MSG_KEXGSS_CONTINUE: | ||
2058 | + debug("Received GSSAPI_CONTINUE"); | ||
2059 | + if (maj_status == GSS_S_COMPLETE) | ||
2060 | + fatal("GSSAPI Continue received from server when complete"); | ||
2061 | + if ((r = ssh_gssapi_sshpkt_get_buffer_desc(ssh, | ||
2062 | + &recv_tok)) != 0 || | ||
2063 | + (r = sshpkt_get_end(ssh)) != 0) | ||
2064 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2065 | + break; | ||
2066 | + case SSH2_MSG_KEXGSS_COMPLETE: | ||
2067 | + debug("Received GSSAPI_COMPLETE"); | ||
2068 | + if (msg_tok.value != NULL) | ||
2069 | + fatal("Received GSSAPI_COMPLETE twice?"); | ||
2070 | + if ((r = sshpkt_getb_froms(ssh, &server_blob)) != 0 || | ||
2071 | + (r = ssh_gssapi_sshpkt_get_buffer_desc(ssh, | ||
2072 | + &msg_tok)) != 0) | ||
2073 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2074 | + | ||
2075 | + /* Is there a token included? */ | ||
2076 | + if ((r = sshpkt_get_u8(ssh, &c)) != 0) | ||
2077 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2078 | + if (c) { | ||
2079 | + if ((r = ssh_gssapi_sshpkt_get_buffer_desc( | ||
2080 | + ssh, &recv_tok)) != 0 || | ||
2081 | + (r = sshpkt_get_end(ssh)) != 0) | ||
2082 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2083 | + /* If we're already complete - protocol error */ | ||
2084 | + if (maj_status == GSS_S_COMPLETE) | ||
2085 | + sshpkt_disconnect(ssh, "Protocol error: received token when complete"); | ||
2086 | + } else { | ||
2087 | + /* No token included */ | ||
2088 | + if (maj_status != GSS_S_COMPLETE) | ||
2089 | + sshpkt_disconnect(ssh, "Protocol error: did not receive final token"); | ||
2090 | + } | ||
2091 | + break; | ||
2092 | + case SSH2_MSG_KEXGSS_ERROR: | ||
2093 | + debug("Received Error"); | ||
2094 | + if ((r = sshpkt_get_u32(ssh, &maj_status)) != 0 || | ||
2095 | + (r = sshpkt_get_u32(ssh, &min_status)) != 0 || | ||
2096 | + (r = sshpkt_get_string(ssh, &msg, NULL)) != 0 || | ||
2097 | + (r = sshpkt_get_string(ssh, NULL, NULL)) != 0 || /* lang tag */ | ||
2098 | + (r = sshpkt_get_end(ssh)) != 0) | ||
2099 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2100 | + fatal("GSSAPI Error: \n%.400s", msg); | ||
2101 | + default: | ||
2102 | + sshpkt_disconnect(ssh, "Protocol error: didn't expect packet type %d", | ||
2103 | + type); | ||
2104 | + } | ||
2105 | + token_ptr = &recv_tok; | ||
2106 | + } else { | ||
2107 | + /* No data, and not complete */ | ||
2108 | + if (maj_status != GSS_S_COMPLETE) | ||
2109 | + fatal("Not complete, and no token output"); | ||
2110 | + } | ||
2111 | + } while (maj_status & GSS_S_CONTINUE_NEEDED); | ||
2112 | + | ||
2113 | + /* | ||
2114 | + * We _must_ have received a COMPLETE message in reply from the | ||
2115 | + * server, which will have set dh_server_pub and msg_tok | ||
2116 | + */ | ||
2117 | + | ||
2118 | + if (type != SSH2_MSG_KEXGSS_COMPLETE) | ||
2119 | + fatal("Didn't receive a SSH2_MSG_KEXGSS_COMPLETE when I expected it"); | ||
2120 | + | ||
2121 | + /* 7. C verifies that the key Q_S is valid */ | ||
2122 | + /* 8. C computes shared secret */ | ||
2123 | + if ((buf = sshbuf_new()) == NULL || | ||
2124 | + (r = sshbuf_put_stringb(buf, server_blob)) != 0 || | ||
2125 | + (r = sshbuf_get_bignum2(buf, &dh_server_pub)) != 0) | ||
2126 | + goto out; | ||
2127 | + sshbuf_free(buf); | ||
2128 | + buf = NULL; | ||
2129 | + | ||
2130 | + if ((shared_secret = sshbuf_new()) == NULL) { | ||
2131 | + r = SSH_ERR_ALLOC_FAIL; | ||
2132 | + goto out; | ||
2133 | + } | ||
2134 | + | ||
2135 | + if ((r = kex_dh_compute_key(kex, dh_server_pub, shared_secret)) != 0) | ||
2136 | + goto out; | ||
2137 | + if ((empty = sshbuf_new()) == NULL) { | ||
2138 | + r = SSH_ERR_ALLOC_FAIL; | ||
2139 | + goto out; | ||
2140 | + } | ||
2141 | + | ||
2142 | + DH_get0_pqg(kex->dh, &dh_p, NULL, &dh_g); | ||
2143 | + hashlen = sizeof(hash); | ||
2144 | + if ((r = kexgex_hash( | ||
2145 | + kex->hash_alg, | ||
2146 | + kex->client_version, | ||
2147 | + kex->server_version, | ||
2148 | + kex->my, | ||
2149 | + kex->peer, | ||
2150 | + (server_host_key_blob ? server_host_key_blob : empty), | ||
2151 | + kex->min, kex->nbits, kex->max, | ||
2152 | + dh_p, dh_g, | ||
2153 | + pub_key, | ||
2154 | + dh_server_pub, | ||
2155 | + sshbuf_ptr(shared_secret), sshbuf_len(shared_secret), | ||
2156 | + hash, &hashlen)) != 0) | ||
2157 | + fatal("Failed to calculate hash: %s", ssh_err(r)); | ||
2158 | + | ||
2159 | + gssbuf.value = hash; | ||
2160 | + gssbuf.length = hashlen; | ||
2161 | + | ||
2162 | + /* Verify that the hash matches the MIC we just got. */ | ||
2163 | + if (GSS_ERROR(ssh_gssapi_checkmic(ctxt, &gssbuf, &msg_tok))) | ||
2164 | + sshpkt_disconnect(ssh, "Hash's MIC didn't verify"); | ||
2165 | + | ||
2166 | + gss_release_buffer(&min_status, &msg_tok); | ||
2167 | + | ||
2168 | + /* save session id */ | ||
2169 | + if (kex->session_id == NULL) { | ||
2170 | + kex->session_id_len = hashlen; | ||
2171 | + kex->session_id = xmalloc(kex->session_id_len); | ||
2172 | + memcpy(kex->session_id, hash, kex->session_id_len); | ||
2173 | + } | ||
2174 | + | ||
2175 | + if (kex->gss_deleg_creds) | ||
2176 | + ssh_gssapi_credentials_updated(ctxt); | ||
2177 | + | ||
2178 | + if (gss_kex_context == NULL) | ||
2179 | + gss_kex_context = ctxt; | ||
2180 | + else | ||
2181 | + ssh_gssapi_delete_ctx(&ctxt); | ||
2182 | + | ||
2183 | + /* Finally derive the keys and send them */ | ||
2184 | + if ((r = kex_derive_keys(ssh, hash, hashlen, shared_secret)) == 0) | ||
2185 | + r = kex_send_newkeys(ssh); | ||
2186 | +out: | ||
2187 | + sshbuf_free(buf); | ||
2188 | + sshbuf_free(server_blob); | ||
2189 | + sshbuf_free(empty); | ||
2190 | + explicit_bzero(hash, sizeof(hash)); | ||
2191 | + DH_free(kex->dh); | ||
2192 | + kex->dh = NULL; | ||
2193 | + BN_clear_free(dh_server_pub); | ||
2194 | + sshbuf_free(shared_secret); | ||
2195 | + sshbuf_free(server_host_key_blob); | ||
2196 | + return r; | ||
2197 | +} | ||
2198 | +#endif /* defined(GSSAPI) && defined(WITH_OPENSSL) */ | ||
2199 | diff --git a/kexgsss.c b/kexgsss.c | ||
2200 | new file mode 100644 | ||
2201 | index 000000000..60bc02deb | ||
2202 | --- /dev/null | ||
2203 | +++ b/kexgsss.c | ||
2204 | @@ -0,0 +1,474 @@ | ||
2205 | +/* | ||
2206 | + * Copyright (c) 2001-2009 Simon Wilkinson. All rights reserved. | ||
2207 | + * | ||
2208 | + * Redistribution and use in source and binary forms, with or without | ||
2209 | + * modification, are permitted provided that the following conditions | ||
2210 | + * are met: | ||
2211 | + * 1. Redistributions of source code must retain the above copyright | ||
2212 | + * notice, this list of conditions and the following disclaimer. | ||
2213 | + * 2. Redistributions in binary form must reproduce the above copyright | ||
2214 | + * notice, this list of conditions and the following disclaimer in the | ||
2215 | + * documentation and/or other materials provided with the distribution. | ||
2216 | + * | ||
2217 | + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS'' AND ANY EXPRESS OR | ||
2218 | + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | ||
2219 | + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | ||
2220 | + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
2221 | + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
2222 | + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
2223 | + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
2224 | + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
2225 | + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
2226 | + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
2227 | + */ | ||
2228 | + | ||
2229 | +#include "includes.h" | ||
2230 | + | ||
2231 | +#if defined(GSSAPI) && defined(WITH_OPENSSL) | ||
2232 | + | ||
2233 | +#include <string.h> | ||
2234 | + | ||
2235 | +#include <openssl/crypto.h> | ||
2236 | +#include <openssl/bn.h> | ||
2237 | + | ||
2238 | +#include "xmalloc.h" | ||
2239 | +#include "sshbuf.h" | ||
2240 | +#include "ssh2.h" | ||
2241 | +#include "sshkey.h" | ||
2242 | +#include "cipher.h" | ||
2243 | +#include "kex.h" | ||
2244 | +#include "log.h" | ||
2245 | +#include "packet.h" | ||
2246 | +#include "dh.h" | ||
2247 | +#include "ssh-gss.h" | ||
2248 | +#include "monitor_wrap.h" | ||
2249 | +#include "misc.h" /* servconf.h needs misc.h for struct ForwardOptions */ | ||
2250 | +#include "servconf.h" | ||
2251 | +#include "ssh-gss.h" | ||
2252 | +#include "digest.h" | ||
2253 | +#include "ssherr.h" | ||
2254 | + | ||
2255 | +extern ServerOptions options; | ||
2256 | + | ||
2257 | +int | ||
2258 | +kexgss_server(struct ssh *ssh) | ||
2259 | +{ | ||
2260 | + struct kex *kex = ssh->kex; | ||
2261 | + OM_uint32 maj_status, min_status; | ||
2262 | + | ||
2263 | + /* | ||
2264 | + * Some GSSAPI implementations use the input value of ret_flags (an | ||
2265 | + * output variable) as a means of triggering mechanism specific | ||
2266 | + * features. Initializing it to zero avoids inadvertently | ||
2267 | + * activating this non-standard behaviour. | ||
2268 | + */ | ||
2269 | + | ||
2270 | + OM_uint32 ret_flags = 0; | ||
2271 | + gss_buffer_desc gssbuf, recv_tok, msg_tok; | ||
2272 | + gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER; | ||
2273 | + Gssctxt *ctxt = NULL; | ||
2274 | + struct sshbuf *shared_secret = NULL; | ||
2275 | + struct sshbuf *client_pubkey = NULL; | ||
2276 | + struct sshbuf *server_pubkey = NULL; | ||
2277 | + struct sshbuf *empty = sshbuf_new(); | ||
2278 | + int type = 0; | ||
2279 | + gss_OID oid; | ||
2280 | + char *mechs; | ||
2281 | + u_char hash[SSH_DIGEST_MAX_LENGTH]; | ||
2282 | + size_t hashlen; | ||
2283 | + int r; | ||
2284 | + | ||
2285 | + /* Initialise GSSAPI */ | ||
2286 | + | ||
2287 | + /* If we're rekeying, privsep means that some of the private structures | ||
2288 | + * in the GSSAPI code are no longer available. This kludges them back | ||
2289 | + * into life | ||
2290 | + */ | ||
2291 | + if (!ssh_gssapi_oid_table_ok()) { | ||
2292 | + mechs = ssh_gssapi_server_mechanisms(); | ||
2293 | + free(mechs); | ||
2294 | + } | ||
2295 | + | ||
2296 | + debug2("%s: Identifying %s", __func__, kex->name); | ||
2297 | + oid = ssh_gssapi_id_kex(NULL, kex->name, kex->kex_type); | ||
2298 | + if (oid == GSS_C_NO_OID) | ||
2299 | + fatal("Unknown gssapi mechanism"); | ||
2300 | + | ||
2301 | + debug2("%s: Acquiring credentials", __func__); | ||
2302 | + | ||
2303 | + if (GSS_ERROR(PRIVSEP(ssh_gssapi_server_ctx(&ctxt, oid)))) | ||
2304 | + fatal("Unable to acquire credentials for the server"); | ||
2305 | + | ||
2306 | + do { | ||
2307 | + debug("Wait SSH2_MSG_KEXGSS_INIT"); | ||
2308 | + type = ssh_packet_read(ssh); | ||
2309 | + switch(type) { | ||
2310 | + case SSH2_MSG_KEXGSS_INIT: | ||
2311 | + if (client_pubkey != NULL) | ||
2312 | + fatal("Received KEXGSS_INIT after initialising"); | ||
2313 | + if ((r = ssh_gssapi_sshpkt_get_buffer_desc(ssh, | ||
2314 | + &recv_tok)) != 0 || | ||
2315 | + (r = sshpkt_getb_froms(ssh, &client_pubkey)) != 0 || | ||
2316 | + (r = sshpkt_get_end(ssh)) != 0) | ||
2317 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2318 | + | ||
2319 | + switch (kex->kex_type) { | ||
2320 | + case KEX_GSS_GRP1_SHA1: | ||
2321 | + case KEX_GSS_GRP14_SHA1: | ||
2322 | + case KEX_GSS_GRP14_SHA256: | ||
2323 | + case KEX_GSS_GRP16_SHA512: | ||
2324 | + r = kex_dh_enc(kex, client_pubkey, &server_pubkey, | ||
2325 | + &shared_secret); | ||
2326 | + break; | ||
2327 | + case KEX_GSS_NISTP256_SHA256: | ||
2328 | + r = kex_ecdh_enc(kex, client_pubkey, &server_pubkey, | ||
2329 | + &shared_secret); | ||
2330 | + break; | ||
2331 | + case KEX_GSS_C25519_SHA256: | ||
2332 | + r = kex_c25519_enc(kex, client_pubkey, &server_pubkey, | ||
2333 | + &shared_secret); | ||
2334 | + break; | ||
2335 | + default: | ||
2336 | + fatal("%s: Unexpected KEX type %d", __func__, kex->kex_type); | ||
2337 | + } | ||
2338 | + if (r != 0) | ||
2339 | + goto out; | ||
2340 | + | ||
2341 | + /* Send SSH_MSG_KEXGSS_HOSTKEY here, if we want */ | ||
2342 | + break; | ||
2343 | + case SSH2_MSG_KEXGSS_CONTINUE: | ||
2344 | + if ((r = ssh_gssapi_sshpkt_get_buffer_desc(ssh, | ||
2345 | + &recv_tok)) != 0 || | ||
2346 | + (r = sshpkt_get_end(ssh)) != 0) | ||
2347 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2348 | + break; | ||
2349 | + default: | ||
2350 | + sshpkt_disconnect(ssh, | ||
2351 | + "Protocol error: didn't expect packet type %d", | ||
2352 | + type); | ||
2353 | + } | ||
2354 | + | ||
2355 | + maj_status = PRIVSEP(ssh_gssapi_accept_ctx(ctxt, &recv_tok, | ||
2356 | + &send_tok, &ret_flags)); | ||
2357 | + | ||
2358 | + gss_release_buffer(&min_status, &recv_tok); | ||
2359 | + | ||
2360 | + if (maj_status != GSS_S_COMPLETE && send_tok.length == 0) | ||
2361 | + fatal("Zero length token output when incomplete"); | ||
2362 | + | ||
2363 | + if (client_pubkey == NULL) | ||
2364 | + fatal("No client public key"); | ||
2365 | + | ||
2366 | + if (maj_status & GSS_S_CONTINUE_NEEDED) { | ||
2367 | + debug("Sending GSSAPI_CONTINUE"); | ||
2368 | + if ((r = sshpkt_start(ssh, SSH2_MSG_KEXGSS_CONTINUE)) != 0 || | ||
2369 | + (r = sshpkt_put_string(ssh, send_tok.value, send_tok.length)) != 0 || | ||
2370 | + (r = sshpkt_send(ssh)) != 0) | ||
2371 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2372 | + gss_release_buffer(&min_status, &send_tok); | ||
2373 | + } | ||
2374 | + } while (maj_status & GSS_S_CONTINUE_NEEDED); | ||
2375 | + | ||
2376 | + if (GSS_ERROR(maj_status)) { | ||
2377 | + if (send_tok.length > 0) { | ||
2378 | + if ((r = sshpkt_start(ssh, SSH2_MSG_KEXGSS_CONTINUE)) != 0 || | ||
2379 | + (r = sshpkt_put_string(ssh, send_tok.value, send_tok.length)) != 0 || | ||
2380 | + (r = sshpkt_send(ssh)) != 0) | ||
2381 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2382 | + } | ||
2383 | + fatal("accept_ctx died"); | ||
2384 | + } | ||
2385 | + | ||
2386 | + if (!(ret_flags & GSS_C_MUTUAL_FLAG)) | ||
2387 | + fatal("Mutual Authentication flag wasn't set"); | ||
2388 | + | ||
2389 | + if (!(ret_flags & GSS_C_INTEG_FLAG)) | ||
2390 | + fatal("Integrity flag wasn't set"); | ||
2391 | + | ||
2392 | + hashlen = sizeof(hash); | ||
2393 | + if ((r = kex_gen_hash( | ||
2394 | + kex->hash_alg, | ||
2395 | + kex->client_version, | ||
2396 | + kex->server_version, | ||
2397 | + kex->peer, | ||
2398 | + kex->my, | ||
2399 | + empty, | ||
2400 | + client_pubkey, | ||
2401 | + server_pubkey, | ||
2402 | + shared_secret, | ||
2403 | + hash, &hashlen)) != 0) | ||
2404 | + goto out; | ||
2405 | + | ||
2406 | + gssbuf.value = hash; | ||
2407 | + gssbuf.length = hashlen; | ||
2408 | + | ||
2409 | + if (GSS_ERROR(PRIVSEP(ssh_gssapi_sign(ctxt, &gssbuf, &msg_tok)))) | ||
2410 | + fatal("Couldn't get MIC"); | ||
2411 | + | ||
2412 | + if ((r = sshpkt_start(ssh, SSH2_MSG_KEXGSS_COMPLETE)) != 0 || | ||
2413 | + (r = sshpkt_put_stringb(ssh, server_pubkey)) != 0 || | ||
2414 | + (r = sshpkt_put_string(ssh, msg_tok.value, msg_tok.length)) != 0) | ||
2415 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2416 | + | ||
2417 | + if (send_tok.length != 0) { | ||
2418 | + if ((r = sshpkt_put_u8(ssh, 1)) != 0 || /* true */ | ||
2419 | + (r = sshpkt_put_string(ssh, send_tok.value, send_tok.length)) != 0) | ||
2420 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2421 | + } else { | ||
2422 | + if ((r = sshpkt_put_u8(ssh, 0)) != 0) /* false */ | ||
2423 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2424 | + } | ||
2425 | + if ((r = sshpkt_send(ssh)) != 0) | ||
2426 | + fatal("sshpkt_send failed: %s", ssh_err(r)); | ||
2427 | + | ||
2428 | + gss_release_buffer(&min_status, &send_tok); | ||
2429 | + gss_release_buffer(&min_status, &msg_tok); | ||
2430 | + | ||
2431 | + if (gss_kex_context == NULL) | ||
2432 | + gss_kex_context = ctxt; | ||
2433 | + else | ||
2434 | + ssh_gssapi_delete_ctx(&ctxt); | ||
2435 | + | ||
2436 | + if ((r = kex_derive_keys(ssh, hash, hashlen, shared_secret)) == 0) | ||
2437 | + r = kex_send_newkeys(ssh); | ||
2438 | + | ||
2439 | + /* If this was a rekey, then save out any delegated credentials we | ||
2440 | + * just exchanged. */ | ||
2441 | + if (options.gss_store_rekey) | ||
2442 | + ssh_gssapi_rekey_creds(); | ||
2443 | +out: | ||
2444 | + sshbuf_free(empty); | ||
2445 | + explicit_bzero(hash, sizeof(hash)); | ||
2446 | + sshbuf_free(shared_secret); | ||
2447 | + sshbuf_free(client_pubkey); | ||
2448 | + sshbuf_free(server_pubkey); | ||
2449 | + return r; | ||
2450 | +} | ||
2451 | + | ||
2452 | +int | ||
2453 | +kexgssgex_server(struct ssh *ssh) | ||
2454 | +{ | ||
2455 | + struct kex *kex = ssh->kex; | ||
2456 | + OM_uint32 maj_status, min_status; | ||
2457 | + | ||
2458 | + /* | ||
2459 | + * Some GSSAPI implementations use the input value of ret_flags (an | ||
2460 | + * output variable) as a means of triggering mechanism specific | ||
2461 | + * features. Initializing it to zero avoids inadvertently | ||
2462 | + * activating this non-standard behaviour. | ||
2463 | + */ | ||
2464 | + | ||
2465 | + OM_uint32 ret_flags = 0; | ||
2466 | + gss_buffer_desc gssbuf, recv_tok, msg_tok; | ||
2467 | + gss_buffer_desc send_tok = GSS_C_EMPTY_BUFFER; | ||
2468 | + Gssctxt *ctxt = NULL; | ||
2469 | + struct sshbuf *shared_secret = NULL; | ||
2470 | + int type = 0; | ||
2471 | + gss_OID oid; | ||
2472 | + char *mechs; | ||
2473 | + u_char hash[SSH_DIGEST_MAX_LENGTH]; | ||
2474 | + size_t hashlen; | ||
2475 | + BIGNUM *dh_client_pub = NULL; | ||
2476 | + const BIGNUM *pub_key, *dh_p, *dh_g; | ||
2477 | + int min = -1, max = -1, nbits = -1; | ||
2478 | + int cmin = -1, cmax = -1; /* client proposal */ | ||
2479 | + struct sshbuf *empty = sshbuf_new(); | ||
2480 | + int r; | ||
2481 | + | ||
2482 | + /* Initialise GSSAPI */ | ||
2483 | + | ||
2484 | + /* If we're rekeying, privsep means that some of the private structures | ||
2485 | + * in the GSSAPI code are no longer available. This kludges them back | ||
2486 | + * into life | ||
2487 | + */ | ||
2488 | + if (!ssh_gssapi_oid_table_ok()) | ||
2489 | + if ((mechs = ssh_gssapi_server_mechanisms())) | ||
2490 | + free(mechs); | ||
2491 | + | ||
2492 | + debug2("%s: Identifying %s", __func__, kex->name); | ||
2493 | + oid = ssh_gssapi_id_kex(NULL, kex->name, kex->kex_type); | ||
2494 | + if (oid == GSS_C_NO_OID) | ||
2495 | + fatal("Unknown gssapi mechanism"); | ||
2496 | + | ||
2497 | + debug2("%s: Acquiring credentials", __func__); | ||
2498 | + | ||
2499 | + if (GSS_ERROR(PRIVSEP(ssh_gssapi_server_ctx(&ctxt, oid)))) | ||
2500 | + fatal("Unable to acquire credentials for the server"); | ||
2501 | + | ||
2502 | + /* 5. S generates an ephemeral key pair (do the allocations early) */ | ||
2503 | + debug("Doing group exchange"); | ||
2504 | + ssh_packet_read_expect(ssh, SSH2_MSG_KEXGSS_GROUPREQ); | ||
2505 | + /* store client proposal to provide valid signature */ | ||
2506 | + if ((r = sshpkt_get_u32(ssh, &cmin)) != 0 || | ||
2507 | + (r = sshpkt_get_u32(ssh, &nbits)) != 0 || | ||
2508 | + (r = sshpkt_get_u32(ssh, &cmax)) != 0 || | ||
2509 | + (r = sshpkt_get_end(ssh)) != 0) | ||
2510 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2511 | + kex->nbits = nbits; | ||
2512 | + kex->min = cmin; | ||
2513 | + kex->max = cmax; | ||
2514 | + min = MAX(DH_GRP_MIN, cmin); | ||
2515 | + max = MIN(DH_GRP_MAX, cmax); | ||
2516 | + nbits = MAXIMUM(DH_GRP_MIN, nbits); | ||
2517 | + nbits = MINIMUM(DH_GRP_MAX, nbits); | ||
2518 | + if (max < min || nbits < min || max < nbits) | ||
2519 | + fatal("GSS_GEX, bad parameters: %d !< %d !< %d", | ||
2520 | + min, nbits, max); | ||
2521 | + kex->dh = PRIVSEP(choose_dh(min, nbits, max)); | ||
2522 | + if (kex->dh == NULL) { | ||
2523 | + sshpkt_disconnect(ssh, "Protocol error: no matching group found"); | ||
2524 | + fatal("Protocol error: no matching group found"); | ||
2525 | + } | ||
2526 | + | ||
2527 | + DH_get0_pqg(kex->dh, &dh_p, NULL, &dh_g); | ||
2528 | + if ((r = sshpkt_start(ssh, SSH2_MSG_KEXGSS_GROUP)) != 0 || | ||
2529 | + (r = sshpkt_put_bignum2(ssh, dh_p)) != 0 || | ||
2530 | + (r = sshpkt_put_bignum2(ssh, dh_g)) != 0 || | ||
2531 | + (r = sshpkt_send(ssh)) != 0) | ||
2532 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2533 | + | ||
2534 | + if ((r = ssh_packet_write_wait(ssh)) != 0) | ||
2535 | + fatal("ssh_packet_write_wait: %s", ssh_err(r)); | ||
2536 | + | ||
2537 | + /* Compute our exchange value in parallel with the client */ | ||
2538 | + if ((r = dh_gen_key(kex->dh, kex->we_need * 8)) != 0) | ||
2539 | + goto out; | ||
2540 | + | ||
2541 | + do { | ||
2542 | + debug("Wait SSH2_MSG_GSSAPI_INIT"); | ||
2543 | + type = ssh_packet_read(ssh); | ||
2544 | + switch(type) { | ||
2545 | + case SSH2_MSG_KEXGSS_INIT: | ||
2546 | + if (dh_client_pub != NULL) | ||
2547 | + fatal("Received KEXGSS_INIT after initialising"); | ||
2548 | + if ((r = ssh_gssapi_sshpkt_get_buffer_desc(ssh, | ||
2549 | + &recv_tok)) != 0 || | ||
2550 | + (r = sshpkt_get_bignum2(ssh, &dh_client_pub)) != 0 || | ||
2551 | + (r = sshpkt_get_end(ssh)) != 0) | ||
2552 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2553 | + | ||
2554 | + /* Send SSH_MSG_KEXGSS_HOSTKEY here, if we want */ | ||
2555 | + break; | ||
2556 | + case SSH2_MSG_KEXGSS_CONTINUE: | ||
2557 | + if ((r = ssh_gssapi_sshpkt_get_buffer_desc(ssh, | ||
2558 | + &recv_tok)) != 0 || | ||
2559 | + (r = sshpkt_get_end(ssh)) != 0) | ||
2560 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2561 | + break; | ||
2562 | + default: | ||
2563 | + sshpkt_disconnect(ssh, | ||
2564 | + "Protocol error: didn't expect packet type %d", | ||
2565 | + type); | ||
2566 | + } | ||
2567 | + | ||
2568 | + maj_status = PRIVSEP(ssh_gssapi_accept_ctx(ctxt, &recv_tok, | ||
2569 | + &send_tok, &ret_flags)); | ||
2570 | + | ||
2571 | + gss_release_buffer(&min_status, &recv_tok); | ||
2572 | + | ||
2573 | + if (maj_status != GSS_S_COMPLETE && send_tok.length == 0) | ||
2574 | + fatal("Zero length token output when incomplete"); | ||
2575 | + | ||
2576 | + if (dh_client_pub == NULL) | ||
2577 | + fatal("No client public key"); | ||
2578 | + | ||
2579 | + if (maj_status & GSS_S_CONTINUE_NEEDED) { | ||
2580 | + debug("Sending GSSAPI_CONTINUE"); | ||
2581 | + if ((r = sshpkt_start(ssh, SSH2_MSG_KEXGSS_CONTINUE)) != 0 || | ||
2582 | + (r = sshpkt_put_string(ssh, send_tok.value, send_tok.length)) != 0 || | ||
2583 | + (r = sshpkt_send(ssh)) != 0) | ||
2584 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2585 | + gss_release_buffer(&min_status, &send_tok); | ||
2586 | + } | ||
2587 | + } while (maj_status & GSS_S_CONTINUE_NEEDED); | ||
2588 | + | ||
2589 | + if (GSS_ERROR(maj_status)) { | ||
2590 | + if (send_tok.length > 0) { | ||
2591 | + if ((r = sshpkt_start(ssh, SSH2_MSG_KEXGSS_CONTINUE)) != 0 || | ||
2592 | + (r = sshpkt_put_string(ssh, send_tok.value, send_tok.length)) != 0 || | ||
2593 | + (r = sshpkt_send(ssh)) != 0) | ||
2594 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2595 | + } | ||
2596 | + fatal("accept_ctx died"); | ||
2597 | + } | ||
2598 | + | ||
2599 | + if (!(ret_flags & GSS_C_MUTUAL_FLAG)) | ||
2600 | + fatal("Mutual Authentication flag wasn't set"); | ||
2601 | + | ||
2602 | + if (!(ret_flags & GSS_C_INTEG_FLAG)) | ||
2603 | + fatal("Integrity flag wasn't set"); | ||
2604 | + | ||
2605 | + /* calculate shared secret */ | ||
2606 | + if ((shared_secret = sshbuf_new()) == NULL) { | ||
2607 | + r = SSH_ERR_ALLOC_FAIL; | ||
2608 | + goto out; | ||
2609 | + } | ||
2610 | + if ((r = kex_dh_compute_key(kex, dh_client_pub, shared_secret)) != 0) | ||
2611 | + goto out; | ||
2612 | + | ||
2613 | + DH_get0_key(kex->dh, &pub_key, NULL); | ||
2614 | + DH_get0_pqg(kex->dh, &dh_p, NULL, &dh_g); | ||
2615 | + hashlen = sizeof(hash); | ||
2616 | + if ((r = kexgex_hash( | ||
2617 | + kex->hash_alg, | ||
2618 | + kex->client_version, | ||
2619 | + kex->server_version, | ||
2620 | + kex->peer, | ||
2621 | + kex->my, | ||
2622 | + empty, | ||
2623 | + cmin, nbits, cmax, | ||
2624 | + dh_p, dh_g, | ||
2625 | + dh_client_pub, | ||
2626 | + pub_key, | ||
2627 | + sshbuf_ptr(shared_secret), sshbuf_len(shared_secret), | ||
2628 | + hash, &hashlen)) != 0) | ||
2629 | + fatal("kexgex_hash failed: %s", ssh_err(r)); | ||
2630 | + | ||
2631 | + gssbuf.value = hash; | ||
2632 | + gssbuf.length = hashlen; | ||
2633 | + | ||
2634 | + if (GSS_ERROR(PRIVSEP(ssh_gssapi_sign(ctxt, &gssbuf, &msg_tok)))) | ||
2635 | + fatal("Couldn't get MIC"); | ||
2636 | + | ||
2637 | + if ((r = sshpkt_start(ssh, SSH2_MSG_KEXGSS_COMPLETE)) != 0 || | ||
2638 | + (r = sshpkt_put_bignum2(ssh, pub_key)) != 0 || | ||
2639 | + (r = sshpkt_put_string(ssh, msg_tok.value, msg_tok.length)) != 0) | ||
2640 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2641 | + | ||
2642 | + if (send_tok.length != 0) { | ||
2643 | + if ((r = sshpkt_put_u8(ssh, 1)) != 0 || /* true */ | ||
2644 | + (r = sshpkt_put_string(ssh, send_tok.value, send_tok.length)) != 0) | ||
2645 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2646 | + } else { | ||
2647 | + if ((r = sshpkt_put_u8(ssh, 0)) != 0) /* false */ | ||
2648 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2649 | + } | ||
2650 | + if ((r = sshpkt_send(ssh)) != 0) | ||
2651 | + fatal("sshpkt failed: %s", ssh_err(r)); | ||
2652 | + | ||
2653 | + gss_release_buffer(&min_status, &send_tok); | ||
2654 | + gss_release_buffer(&min_status, &msg_tok); | ||
2655 | + | ||
2656 | + if (gss_kex_context == NULL) | ||
2657 | + gss_kex_context = ctxt; | ||
2658 | + else | ||
2659 | + ssh_gssapi_delete_ctx(&ctxt); | ||
2660 | + | ||
2661 | + /* Finally derive the keys and send them */ | ||
2662 | + if ((r = kex_derive_keys(ssh, hash, hashlen, shared_secret)) == 0) | ||
2663 | + r = kex_send_newkeys(ssh); | ||
2664 | + | ||
2665 | + /* If this was a rekey, then save out any delegated credentials we | ||
2666 | + * just exchanged. */ | ||
2667 | + if (options.gss_store_rekey) | ||
2668 | + ssh_gssapi_rekey_creds(); | ||
2669 | +out: | ||
2670 | + sshbuf_free(empty); | ||
2671 | + explicit_bzero(hash, sizeof(hash)); | ||
2672 | + DH_free(kex->dh); | ||
2673 | + kex->dh = NULL; | ||
2674 | + BN_clear_free(dh_client_pub); | ||
2675 | + sshbuf_free(shared_secret); | ||
2676 | + return r; | ||
2677 | +} | ||
2678 | +#endif /* defined(GSSAPI) && defined(WITH_OPENSSL) */ | ||
2679 | diff --git a/mac.c b/mac.c | ||
2680 | index 51dc11d76..3d11eba62 100644 | ||
2681 | --- a/mac.c | ||
2682 | +++ b/mac.c | ||
2683 | @@ -29,6 +29,7 @@ | ||
2684 | |||
2685 | #include <string.h> | ||
2686 | #include <stdio.h> | ||
2687 | +#include <stdlib.h> | ||
2688 | |||
2689 | #include "digest.h" | ||
2690 | #include "hmac.h" | ||
2691 | diff --git a/monitor.c b/monitor.c | ||
2692 | index 60e529444..0766d6ef5 100644 | ||
2693 | --- a/monitor.c | ||
2694 | +++ b/monitor.c | ||
2695 | @@ -147,6 +147,8 @@ int mm_answer_gss_setup_ctx(struct ssh *, int, struct sshbuf *); | ||
2696 | int mm_answer_gss_accept_ctx(struct ssh *, int, struct sshbuf *); | ||
2697 | int mm_answer_gss_userok(struct ssh *, int, struct sshbuf *); | ||
2698 | int mm_answer_gss_checkmic(struct ssh *, int, struct sshbuf *); | ||
2699 | +int mm_answer_gss_sign(struct ssh *, int, struct sshbuf *); | ||
2700 | +int mm_answer_gss_updatecreds(struct ssh *, int, struct sshbuf *); | ||
2701 | #endif | ||
2702 | |||
2703 | #ifdef SSH_AUDIT_EVENTS | ||
2704 | @@ -219,11 +221,18 @@ struct mon_table mon_dispatch_proto20[] = { | ||
2705 | {MONITOR_REQ_GSSSTEP, 0, mm_answer_gss_accept_ctx}, | ||
2706 | {MONITOR_REQ_GSSUSEROK, MON_ONCE|MON_AUTHDECIDE, mm_answer_gss_userok}, | ||
2707 | {MONITOR_REQ_GSSCHECKMIC, MON_ONCE, mm_answer_gss_checkmic}, | ||
2708 | + {MONITOR_REQ_GSSSIGN, MON_ONCE, mm_answer_gss_sign}, | ||
2709 | #endif | ||
2710 | {0, 0, NULL} | ||
2711 | }; | ||
2712 | |||
2713 | struct mon_table mon_dispatch_postauth20[] = { | ||
2714 | +#ifdef GSSAPI | ||
2715 | + {MONITOR_REQ_GSSSETUP, 0, mm_answer_gss_setup_ctx}, | ||
2716 | + {MONITOR_REQ_GSSSTEP, 0, mm_answer_gss_accept_ctx}, | ||
2717 | + {MONITOR_REQ_GSSSIGN, 0, mm_answer_gss_sign}, | ||
2718 | + {MONITOR_REQ_GSSUPCREDS, 0, mm_answer_gss_updatecreds}, | ||
2719 | +#endif | ||
2720 | #ifdef WITH_OPENSSL | ||
2721 | {MONITOR_REQ_MODULI, 0, mm_answer_moduli}, | ||
2722 | #endif | ||
2723 | @@ -292,6 +301,10 @@ monitor_child_preauth(struct ssh *ssh, struct monitor *pmonitor) | ||
2724 | /* Permit requests for moduli and signatures */ | ||
2725 | monitor_permit(mon_dispatch, MONITOR_REQ_MODULI, 1); | ||
2726 | monitor_permit(mon_dispatch, MONITOR_REQ_SIGN, 1); | ||
2727 | +#ifdef GSSAPI | ||
2728 | + /* and for the GSSAPI key exchange */ | ||
2729 | + monitor_permit(mon_dispatch, MONITOR_REQ_GSSSETUP, 1); | ||
2730 | +#endif | ||
2731 | |||
2732 | /* The first few requests do not require asynchronous access */ | ||
2733 | while (!authenticated) { | ||
2734 | @@ -405,6 +418,10 @@ monitor_child_postauth(struct ssh *ssh, struct monitor *pmonitor) | ||
2735 | monitor_permit(mon_dispatch, MONITOR_REQ_MODULI, 1); | ||
2736 | monitor_permit(mon_dispatch, MONITOR_REQ_SIGN, 1); | ||
2737 | monitor_permit(mon_dispatch, MONITOR_REQ_TERM, 1); | ||
2738 | +#ifdef GSSAPI | ||
2739 | + /* and for the GSSAPI key exchange */ | ||
2740 | + monitor_permit(mon_dispatch, MONITOR_REQ_GSSSETUP, 1); | ||
2741 | +#endif | ||
2742 | |||
2743 | if (auth_opts->permit_pty_flag) { | ||
2744 | monitor_permit(mon_dispatch, MONITOR_REQ_PTY, 1); | ||
2745 | @@ -1687,6 +1704,17 @@ monitor_apply_keystate(struct ssh *ssh, struct monitor *pmonitor) | ||
2746 | # ifdef OPENSSL_HAS_ECC | ||
2747 | kex->kex[KEX_ECDH_SHA2] = kex_gen_server; | ||
2748 | # endif | ||
2749 | +# ifdef GSSAPI | ||
2750 | + if (options.gss_keyex) { | ||
2751 | + kex->kex[KEX_GSS_GRP1_SHA1] = kexgss_server; | ||
2752 | + kex->kex[KEX_GSS_GRP14_SHA1] = kexgss_server; | ||
2753 | + kex->kex[KEX_GSS_GRP14_SHA256] = kexgss_server; | ||
2754 | + kex->kex[KEX_GSS_GRP16_SHA512] = kexgss_server; | ||
2755 | + kex->kex[KEX_GSS_GEX_SHA1] = kexgssgex_server; | ||
2756 | + kex->kex[KEX_GSS_NISTP256_SHA256] = kexgss_server; | ||
2757 | + kex->kex[KEX_GSS_C25519_SHA256] = kexgss_server; | ||
2758 | + } | ||
2759 | +# endif | ||
2760 | #endif /* WITH_OPENSSL */ | ||
2761 | kex->kex[KEX_C25519_SHA256] = kex_gen_server; | ||
2762 | kex->kex[KEX_KEM_SNTRUP4591761X25519_SHA512] = kex_gen_server; | ||
2763 | @@ -1780,8 +1808,8 @@ mm_answer_gss_setup_ctx(struct ssh *ssh, int sock, struct sshbuf *m) | ||
2764 | u_char *p; | ||
2765 | int r; | ||
2766 | |||
2767 | - if (!options.gss_authentication) | ||
2768 | - fatal("%s: GSSAPI authentication not enabled", __func__); | ||
2769 | + if (!options.gss_authentication && !options.gss_keyex) | ||
2770 | + fatal("%s: GSSAPI not enabled", __func__); | ||
2771 | |||
2772 | if ((r = sshbuf_get_string(m, &p, &len)) != 0) | ||
2773 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
2774 | @@ -1813,8 +1841,8 @@ mm_answer_gss_accept_ctx(struct ssh *ssh, int sock, struct sshbuf *m) | ||
2775 | OM_uint32 flags = 0; /* GSI needs this */ | ||
2776 | int r; | ||
2777 | |||
2778 | - if (!options.gss_authentication) | ||
2779 | - fatal("%s: GSSAPI authentication not enabled", __func__); | ||
2780 | + if (!options.gss_authentication && !options.gss_keyex) | ||
2781 | + fatal("%s: GSSAPI not enabled", __func__); | ||
2782 | |||
2783 | if ((r = ssh_gssapi_get_buffer_desc(m, &in)) != 0) | ||
2784 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
2785 | @@ -1834,6 +1862,7 @@ mm_answer_gss_accept_ctx(struct ssh *ssh, int sock, struct sshbuf *m) | ||
2786 | monitor_permit(mon_dispatch, MONITOR_REQ_GSSSTEP, 0); | ||
2787 | monitor_permit(mon_dispatch, MONITOR_REQ_GSSUSEROK, 1); | ||
2788 | monitor_permit(mon_dispatch, MONITOR_REQ_GSSCHECKMIC, 1); | ||
2789 | + monitor_permit(mon_dispatch, MONITOR_REQ_GSSSIGN, 1); | ||
2790 | } | ||
2791 | return (0); | ||
2792 | } | ||
2793 | @@ -1845,8 +1874,8 @@ mm_answer_gss_checkmic(struct ssh *ssh, int sock, struct sshbuf *m) | ||
2794 | OM_uint32 ret; | ||
2795 | int r; | ||
2796 | |||
2797 | - if (!options.gss_authentication) | ||
2798 | - fatal("%s: GSSAPI authentication not enabled", __func__); | ||
2799 | + if (!options.gss_authentication && !options.gss_keyex) | ||
2800 | + fatal("%s: GSSAPI not enabled", __func__); | ||
2801 | |||
2802 | if ((r = ssh_gssapi_get_buffer_desc(m, &gssbuf)) != 0 || | ||
2803 | (r = ssh_gssapi_get_buffer_desc(m, &mic)) != 0) | ||
2804 | @@ -1872,13 +1901,17 @@ mm_answer_gss_checkmic(struct ssh *ssh, int sock, struct sshbuf *m) | ||
2805 | int | ||
2806 | mm_answer_gss_userok(struct ssh *ssh, int sock, struct sshbuf *m) | ||
2807 | { | ||
2808 | - int r, authenticated; | ||
2809 | + int r, authenticated, kex; | ||
2810 | const char *displayname; | ||
2811 | |||
2812 | - if (!options.gss_authentication) | ||
2813 | - fatal("%s: GSSAPI authentication not enabled", __func__); | ||
2814 | + if (!options.gss_authentication && !options.gss_keyex) | ||
2815 | + fatal("%s: GSSAPI not enabled", __func__); | ||
2816 | |||
2817 | - authenticated = authctxt->valid && ssh_gssapi_userok(authctxt->user); | ||
2818 | + if ((r = sshbuf_get_u32(m, &kex)) != 0) | ||
2819 | + fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
2820 | + | ||
2821 | + authenticated = authctxt->valid && | ||
2822 | + ssh_gssapi_userok(authctxt->user, authctxt->pw, kex); | ||
2823 | |||
2824 | sshbuf_reset(m); | ||
2825 | if ((r = sshbuf_put_u32(m, authenticated)) != 0) | ||
2826 | @@ -1887,7 +1920,11 @@ mm_answer_gss_userok(struct ssh *ssh, int sock, struct sshbuf *m) | ||
2827 | debug3("%s: sending result %d", __func__, authenticated); | ||
2828 | mm_request_send(sock, MONITOR_ANS_GSSUSEROK, m); | ||
2829 | |||
2830 | - auth_method = "gssapi-with-mic"; | ||
2831 | + if (kex) { | ||
2832 | + auth_method = "gssapi-keyex"; | ||
2833 | + } else { | ||
2834 | + auth_method = "gssapi-with-mic"; | ||
2835 | + } | ||
2836 | |||
2837 | if ((displayname = ssh_gssapi_displayname()) != NULL) | ||
2838 | auth2_record_info(authctxt, "%s", displayname); | ||
2839 | @@ -1895,5 +1932,85 @@ mm_answer_gss_userok(struct ssh *ssh, int sock, struct sshbuf *m) | ||
2840 | /* Monitor loop will terminate if authenticated */ | ||
2841 | return (authenticated); | ||
2842 | } | ||
2843 | + | ||
2844 | +int | ||
2845 | +mm_answer_gss_sign(struct ssh *ssh, int socket, struct sshbuf *m) | ||
2846 | +{ | ||
2847 | + gss_buffer_desc data; | ||
2848 | + gss_buffer_desc hash = GSS_C_EMPTY_BUFFER; | ||
2849 | + OM_uint32 major, minor; | ||
2850 | + size_t len; | ||
2851 | + u_char *p = NULL; | ||
2852 | + int r; | ||
2853 | + | ||
2854 | + if (!options.gss_authentication && !options.gss_keyex) | ||
2855 | + fatal("%s: GSSAPI not enabled", __func__); | ||
2856 | + | ||
2857 | + if ((r = sshbuf_get_string(m, &p, &len)) != 0) | ||
2858 | + fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
2859 | + data.value = p; | ||
2860 | + data.length = len; | ||
2861 | + /* Lengths of SHA-1, SHA-256 and SHA-512 hashes that are used */ | ||
2862 | + if (data.length != 20 && data.length != 32 && data.length != 64) | ||
2863 | + fatal("%s: data length incorrect: %d", __func__, | ||
2864 | + (int) data.length); | ||
2865 | + | ||
2866 | + /* Save the session ID on the first time around */ | ||
2867 | + if (session_id2_len == 0) { | ||
2868 | + session_id2_len = data.length; | ||
2869 | + session_id2 = xmalloc(session_id2_len); | ||
2870 | + memcpy(session_id2, data.value, session_id2_len); | ||
2871 | + } | ||
2872 | + major = ssh_gssapi_sign(gsscontext, &data, &hash); | ||
2873 | + | ||
2874 | + free(data.value); | ||
2875 | + | ||
2876 | + sshbuf_reset(m); | ||
2877 | + | ||
2878 | + if ((r = sshbuf_put_u32(m, major)) != 0 || | ||
2879 | + (r = sshbuf_put_string(m, hash.value, hash.length)) != 0) | ||
2880 | + fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
2881 | + | ||
2882 | + mm_request_send(socket, MONITOR_ANS_GSSSIGN, m); | ||
2883 | + | ||
2884 | + gss_release_buffer(&minor, &hash); | ||
2885 | + | ||
2886 | + /* Turn on getpwnam permissions */ | ||
2887 | + monitor_permit(mon_dispatch, MONITOR_REQ_PWNAM, 1); | ||
2888 | + | ||
2889 | + /* And credential updating, for when rekeying */ | ||
2890 | + monitor_permit(mon_dispatch, MONITOR_REQ_GSSUPCREDS, 1); | ||
2891 | + | ||
2892 | + return (0); | ||
2893 | +} | ||
2894 | + | ||
2895 | +int | ||
2896 | +mm_answer_gss_updatecreds(struct ssh *ssh, int socket, struct sshbuf *m) { | ||
2897 | + ssh_gssapi_ccache store; | ||
2898 | + int r, ok; | ||
2899 | + | ||
2900 | + if (!options.gss_authentication && !options.gss_keyex) | ||
2901 | + fatal("%s: GSSAPI not enabled", __func__); | ||
2902 | + | ||
2903 | + if ((r = sshbuf_get_string(m, (u_char **)&store.filename, NULL)) != 0 || | ||
2904 | + (r = sshbuf_get_string(m, (u_char **)&store.envvar, NULL)) != 0 || | ||
2905 | + (r = sshbuf_get_string(m, (u_char **)&store.envval, NULL)) != 0) | ||
2906 | + fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
2907 | + | ||
2908 | + ok = ssh_gssapi_update_creds(&store); | ||
2909 | + | ||
2910 | + free(store.filename); | ||
2911 | + free(store.envvar); | ||
2912 | + free(store.envval); | ||
2913 | + | ||
2914 | + sshbuf_reset(m); | ||
2915 | + if ((r = sshbuf_put_u32(m, ok)) != 0) | ||
2916 | + fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
2917 | + | ||
2918 | + mm_request_send(socket, MONITOR_ANS_GSSUPCREDS, m); | ||
2919 | + | ||
2920 | + return(0); | ||
2921 | +} | ||
2922 | + | ||
2923 | #endif /* GSSAPI */ | ||
2924 | |||
2925 | diff --git a/monitor.h b/monitor.h | ||
2926 | index 683e5e071..2b1a2d590 100644 | ||
2927 | --- a/monitor.h | ||
2928 | +++ b/monitor.h | ||
2929 | @@ -63,6 +63,8 @@ enum monitor_reqtype { | ||
2930 | MONITOR_REQ_PAM_FREE_CTX = 110, MONITOR_ANS_PAM_FREE_CTX = 111, | ||
2931 | MONITOR_REQ_AUDIT_EVENT = 112, MONITOR_REQ_AUDIT_COMMAND = 113, | ||
2932 | |||
2933 | + MONITOR_REQ_GSSSIGN = 150, MONITOR_ANS_GSSSIGN = 151, | ||
2934 | + MONITOR_REQ_GSSUPCREDS = 152, MONITOR_ANS_GSSUPCREDS = 153, | ||
2935 | }; | ||
2936 | |||
2937 | struct ssh; | ||
2938 | diff --git a/monitor_wrap.c b/monitor_wrap.c | ||
2939 | index 186e8f022..8e4c1c1f8 100644 | ||
2940 | --- a/monitor_wrap.c | ||
2941 | +++ b/monitor_wrap.c | ||
2942 | @@ -978,13 +978,15 @@ mm_ssh_gssapi_checkmic(Gssctxt *ctx, gss_buffer_t gssbuf, gss_buffer_t gssmic) | ||
2943 | } | ||
2944 | |||
2945 | int | ||
2946 | -mm_ssh_gssapi_userok(char *user) | ||
2947 | +mm_ssh_gssapi_userok(char *user, struct passwd *pw, int kex) | ||
2948 | { | ||
2949 | struct sshbuf *m; | ||
2950 | int r, authenticated = 0; | ||
2951 | |||
2952 | if ((m = sshbuf_new()) == NULL) | ||
2953 | fatal("%s: sshbuf_new failed", __func__); | ||
2954 | + if ((r = sshbuf_put_u32(m, kex)) != 0) | ||
2955 | + fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
2956 | |||
2957 | mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSUSEROK, m); | ||
2958 | mm_request_receive_expect(pmonitor->m_recvfd, | ||
2959 | @@ -997,4 +999,57 @@ mm_ssh_gssapi_userok(char *user) | ||
2960 | debug3("%s: user %sauthenticated",__func__, authenticated ? "" : "not "); | ||
2961 | return (authenticated); | ||
2962 | } | ||
2963 | + | ||
2964 | +OM_uint32 | ||
2965 | +mm_ssh_gssapi_sign(Gssctxt *ctx, gss_buffer_desc *data, gss_buffer_desc *hash) | ||
2966 | +{ | ||
2967 | + struct sshbuf *m; | ||
2968 | + OM_uint32 major; | ||
2969 | + int r; | ||
2970 | + | ||
2971 | + if ((m = sshbuf_new()) == NULL) | ||
2972 | + fatal("%s: sshbuf_new failed", __func__); | ||
2973 | + if ((r = sshbuf_put_string(m, data->value, data->length)) != 0) | ||
2974 | + fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
2975 | + | ||
2976 | + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSSIGN, m); | ||
2977 | + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSSIGN, m); | ||
2978 | + | ||
2979 | + if ((r = sshbuf_get_u32(m, &major)) != 0 || | ||
2980 | + (r = ssh_gssapi_get_buffer_desc(m, hash)) != 0) | ||
2981 | + fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
2982 | + | ||
2983 | + sshbuf_free(m); | ||
2984 | + | ||
2985 | + return (major); | ||
2986 | +} | ||
2987 | + | ||
2988 | +int | ||
2989 | +mm_ssh_gssapi_update_creds(ssh_gssapi_ccache *store) | ||
2990 | +{ | ||
2991 | + struct sshbuf *m; | ||
2992 | + int r, ok; | ||
2993 | + | ||
2994 | + if ((m = sshbuf_new()) == NULL) | ||
2995 | + fatal("%s: sshbuf_new failed", __func__); | ||
2996 | + | ||
2997 | + if ((r = sshbuf_put_cstring(m, | ||
2998 | + store->filename ? store->filename : "")) != 0 || | ||
2999 | + (r = sshbuf_put_cstring(m, | ||
3000 | + store->envvar ? store->envvar : "")) != 0 || | ||
3001 | + (r = sshbuf_put_cstring(m, | ||
3002 | + store->envval ? store->envval : "")) != 0) | ||
3003 | + fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
3004 | + | ||
3005 | + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSUPCREDS, m); | ||
3006 | + mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSUPCREDS, m); | ||
3007 | + | ||
3008 | + if ((r = sshbuf_get_u32(m, &ok)) != 0) | ||
3009 | + fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
3010 | + | ||
3011 | + sshbuf_free(m); | ||
3012 | + | ||
3013 | + return (ok); | ||
3014 | +} | ||
3015 | + | ||
3016 | #endif /* GSSAPI */ | ||
3017 | diff --git a/monitor_wrap.h b/monitor_wrap.h | ||
3018 | index fdebb3aa4..69164a8c0 100644 | ||
3019 | --- a/monitor_wrap.h | ||
3020 | +++ b/monitor_wrap.h | ||
3021 | @@ -61,8 +61,10 @@ int mm_sshkey_verify(const struct sshkey *, const u_char *, size_t, | ||
3022 | OM_uint32 mm_ssh_gssapi_server_ctx(Gssctxt **, gss_OID); | ||
3023 | OM_uint32 mm_ssh_gssapi_accept_ctx(Gssctxt *, | ||
3024 | gss_buffer_desc *, gss_buffer_desc *, OM_uint32 *); | ||
3025 | -int mm_ssh_gssapi_userok(char *user); | ||
3026 | +int mm_ssh_gssapi_userok(char *user, struct passwd *, int kex); | ||
3027 | OM_uint32 mm_ssh_gssapi_checkmic(Gssctxt *, gss_buffer_t, gss_buffer_t); | ||
3028 | +OM_uint32 mm_ssh_gssapi_sign(Gssctxt *, gss_buffer_t, gss_buffer_t); | ||
3029 | +int mm_ssh_gssapi_update_creds(ssh_gssapi_ccache *); | ||
3030 | #endif | ||
3031 | |||
3032 | #ifdef USE_PAM | ||
3033 | diff --git a/readconf.c b/readconf.c | ||
3034 | index ec497e79f..4d699e5f1 100644 | ||
3035 | --- a/readconf.c | ||
3036 | +++ b/readconf.c | ||
3037 | @@ -67,6 +67,7 @@ | ||
3038 | #include "uidswap.h" | ||
3039 | #include "myproposal.h" | ||
3040 | #include "digest.h" | ||
3041 | +#include "ssh-gss.h" | ||
3042 | |||
3043 | /* Format of the configuration file: | ||
3044 | |||
3045 | @@ -162,6 +163,8 @@ typedef enum { | ||
3046 | oClearAllForwardings, oNoHostAuthenticationForLocalhost, | ||
3047 | oEnableSSHKeysign, oRekeyLimit, oVerifyHostKeyDNS, oConnectTimeout, | ||
3048 | oAddressFamily, oGssAuthentication, oGssDelegateCreds, | ||
3049 | + oGssTrustDns, oGssKeyEx, oGssClientIdentity, oGssRenewalRekey, | ||
3050 | + oGssServerIdentity, oGssKexAlgorithms, | ||
3051 | oServerAliveInterval, oServerAliveCountMax, oIdentitiesOnly, | ||
3052 | oSendEnv, oSetEnv, oControlPath, oControlMaster, oControlPersist, | ||
3053 | oHashKnownHosts, | ||
3054 | @@ -202,10 +205,22 @@ static struct { | ||
3055 | /* Sometimes-unsupported options */ | ||
3056 | #if defined(GSSAPI) | ||
3057 | { "gssapiauthentication", oGssAuthentication }, | ||
3058 | + { "gssapikeyexchange", oGssKeyEx }, | ||
3059 | { "gssapidelegatecredentials", oGssDelegateCreds }, | ||
3060 | + { "gssapitrustdns", oGssTrustDns }, | ||
3061 | + { "gssapiclientidentity", oGssClientIdentity }, | ||
3062 | + { "gssapiserveridentity", oGssServerIdentity }, | ||
3063 | + { "gssapirenewalforcesrekey", oGssRenewalRekey }, | ||
3064 | + { "gssapikexalgorithms", oGssKexAlgorithms }, | ||
3065 | # else | ||
3066 | { "gssapiauthentication", oUnsupported }, | ||
3067 | + { "gssapikeyexchange", oUnsupported }, | ||
3068 | { "gssapidelegatecredentials", oUnsupported }, | ||
3069 | + { "gssapitrustdns", oUnsupported }, | ||
3070 | + { "gssapiclientidentity", oUnsupported }, | ||
3071 | + { "gssapiserveridentity", oUnsupported }, | ||
3072 | + { "gssapirenewalforcesrekey", oUnsupported }, | ||
3073 | + { "gssapikexalgorithms", oUnsupported }, | ||
3074 | #endif | ||
3075 | #ifdef ENABLE_PKCS11 | ||
3076 | { "pkcs11provider", oPKCS11Provider }, | ||
3077 | @@ -983,10 +998,42 @@ parse_time: | ||
3078 | intptr = &options->gss_authentication; | ||
3079 | goto parse_flag; | ||
3080 | |||
3081 | + case oGssKeyEx: | ||
3082 | + intptr = &options->gss_keyex; | ||
3083 | + goto parse_flag; | ||
3084 | + | ||
3085 | case oGssDelegateCreds: | ||
3086 | intptr = &options->gss_deleg_creds; | ||
3087 | goto parse_flag; | ||
3088 | |||
3089 | + case oGssTrustDns: | ||
3090 | + intptr = &options->gss_trust_dns; | ||
3091 | + goto parse_flag; | ||
3092 | + | ||
3093 | + case oGssClientIdentity: | ||
3094 | + charptr = &options->gss_client_identity; | ||
3095 | + goto parse_string; | ||
3096 | + | ||
3097 | + case oGssServerIdentity: | ||
3098 | + charptr = &options->gss_server_identity; | ||
3099 | + goto parse_string; | ||
3100 | + | ||
3101 | + case oGssRenewalRekey: | ||
3102 | + intptr = &options->gss_renewal_rekey; | ||
3103 | + goto parse_flag; | ||
3104 | + | ||
3105 | + case oGssKexAlgorithms: | ||
3106 | + arg = strdelim(&s); | ||
3107 | + if (!arg || *arg == '\0') | ||
3108 | + fatal("%.200s line %d: Missing argument.", | ||
3109 | + filename, linenum); | ||
3110 | + if (!kex_gss_names_valid(arg)) | ||
3111 | + fatal("%.200s line %d: Bad GSSAPI KexAlgorithms '%s'.", | ||
3112 | + filename, linenum, arg ? arg : "<NONE>"); | ||
3113 | + if (*activep && options->gss_kex_algorithms == NULL) | ||
3114 | + options->gss_kex_algorithms = xstrdup(arg); | ||
3115 | + break; | ||
3116 | + | ||
3117 | case oBatchMode: | ||
3118 | intptr = &options->batch_mode; | ||
3119 | goto parse_flag; | ||
3120 | @@ -1854,7 +1901,13 @@ initialize_options(Options * options) | ||
3121 | options->pubkey_authentication = -1; | ||
3122 | options->challenge_response_authentication = -1; | ||
3123 | options->gss_authentication = -1; | ||
3124 | + options->gss_keyex = -1; | ||
3125 | options->gss_deleg_creds = -1; | ||
3126 | + options->gss_trust_dns = -1; | ||
3127 | + options->gss_renewal_rekey = -1; | ||
3128 | + options->gss_client_identity = NULL; | ||
3129 | + options->gss_server_identity = NULL; | ||
3130 | + options->gss_kex_algorithms = NULL; | ||
3131 | options->password_authentication = -1; | ||
3132 | options->kbd_interactive_authentication = -1; | ||
3133 | options->kbd_interactive_devices = NULL; | ||
3134 | @@ -2000,8 +2053,18 @@ fill_default_options(Options * options) | ||
3135 | options->challenge_response_authentication = 1; | ||
3136 | if (options->gss_authentication == -1) | ||
3137 | options->gss_authentication = 0; | ||
3138 | + if (options->gss_keyex == -1) | ||
3139 | + options->gss_keyex = 0; | ||
3140 | if (options->gss_deleg_creds == -1) | ||
3141 | options->gss_deleg_creds = 0; | ||
3142 | + if (options->gss_trust_dns == -1) | ||
3143 | + options->gss_trust_dns = 0; | ||
3144 | + if (options->gss_renewal_rekey == -1) | ||
3145 | + options->gss_renewal_rekey = 0; | ||
3146 | +#ifdef GSSAPI | ||
3147 | + if (options->gss_kex_algorithms == NULL) | ||
3148 | + options->gss_kex_algorithms = strdup(GSS_KEX_DEFAULT_KEX); | ||
3149 | +#endif | ||
3150 | if (options->password_authentication == -1) | ||
3151 | options->password_authentication = 1; | ||
3152 | if (options->kbd_interactive_authentication == -1) | ||
3153 | @@ -2616,7 +2679,14 @@ dump_client_config(Options *o, const char *host) | ||
3154 | dump_cfg_fmtint(oGatewayPorts, o->fwd_opts.gateway_ports); | ||
3155 | #ifdef GSSAPI | ||
3156 | dump_cfg_fmtint(oGssAuthentication, o->gss_authentication); | ||
3157 | + dump_cfg_fmtint(oGssKeyEx, o->gss_keyex); | ||
3158 | dump_cfg_fmtint(oGssDelegateCreds, o->gss_deleg_creds); | ||
3159 | + dump_cfg_fmtint(oGssTrustDns, o->gss_trust_dns); | ||
3160 | + dump_cfg_fmtint(oGssRenewalRekey, o->gss_renewal_rekey); | ||
3161 | + dump_cfg_string(oGssClientIdentity, o->gss_client_identity); | ||
3162 | + dump_cfg_string(oGssServerIdentity, o->gss_server_identity); | ||
3163 | + dump_cfg_string(oGssKexAlgorithms, o->gss_kex_algorithms ? | ||
3164 | + o->gss_kex_algorithms : GSS_KEX_DEFAULT_KEX); | ||
3165 | #endif /* GSSAPI */ | ||
3166 | dump_cfg_fmtint(oHashKnownHosts, o->hash_known_hosts); | ||
3167 | dump_cfg_fmtint(oHostbasedAuthentication, o->hostbased_authentication); | ||
3168 | diff --git a/readconf.h b/readconf.h | ||
3169 | index 8e36bf32a..0bff6d80a 100644 | ||
3170 | --- a/readconf.h | ||
3171 | +++ b/readconf.h | ||
3172 | @@ -40,7 +40,13 @@ typedef struct { | ||
3173 | int challenge_response_authentication; | ||
3174 | /* Try S/Key or TIS, authentication. */ | ||
3175 | int gss_authentication; /* Try GSS authentication */ | ||
3176 | + int gss_keyex; /* Try GSS key exchange */ | ||
3177 | int gss_deleg_creds; /* Delegate GSS credentials */ | ||
3178 | + int gss_trust_dns; /* Trust DNS for GSS canonicalization */ | ||
3179 | + int gss_renewal_rekey; /* Credential renewal forces rekey */ | ||
3180 | + char *gss_client_identity; /* Principal to initiate GSSAPI with */ | ||
3181 | + char *gss_server_identity; /* GSSAPI target principal */ | ||
3182 | + char *gss_kex_algorithms; /* GSSAPI kex methods to be offered by client. */ | ||
3183 | int password_authentication; /* Try password | ||
3184 | * authentication. */ | ||
3185 | int kbd_interactive_authentication; /* Try keyboard-interactive auth. */ | ||
3186 | diff --git a/servconf.c b/servconf.c | ||
3187 | index ffac5d2c7..ffdad31e7 100644 | ||
3188 | --- a/servconf.c | ||
3189 | +++ b/servconf.c | ||
3190 | @@ -64,6 +64,7 @@ | ||
3191 | #include "auth.h" | ||
3192 | #include "myproposal.h" | ||
3193 | #include "digest.h" | ||
3194 | +#include "ssh-gss.h" | ||
3195 | |||
3196 | static void add_listen_addr(ServerOptions *, const char *, | ||
3197 | const char *, int); | ||
3198 | @@ -124,8 +125,11 @@ initialize_server_options(ServerOptions *options) | ||
3199 | options->kerberos_ticket_cleanup = -1; | ||
3200 | options->kerberos_get_afs_token = -1; | ||
3201 | options->gss_authentication=-1; | ||
3202 | + options->gss_keyex = -1; | ||
3203 | options->gss_cleanup_creds = -1; | ||
3204 | options->gss_strict_acceptor = -1; | ||
3205 | + options->gss_store_rekey = -1; | ||
3206 | + options->gss_kex_algorithms = NULL; | ||
3207 | options->password_authentication = -1; | ||
3208 | options->kbd_interactive_authentication = -1; | ||
3209 | options->challenge_response_authentication = -1; | ||
3210 | @@ -351,10 +355,18 @@ fill_default_server_options(ServerOptions *options) | ||
3211 | options->kerberos_get_afs_token = 0; | ||
3212 | if (options->gss_authentication == -1) | ||
3213 | options->gss_authentication = 0; | ||
3214 | + if (options->gss_keyex == -1) | ||
3215 | + options->gss_keyex = 0; | ||
3216 | if (options->gss_cleanup_creds == -1) | ||
3217 | options->gss_cleanup_creds = 1; | ||
3218 | if (options->gss_strict_acceptor == -1) | ||
3219 | options->gss_strict_acceptor = 1; | ||
3220 | + if (options->gss_store_rekey == -1) | ||
3221 | + options->gss_store_rekey = 0; | ||
3222 | +#ifdef GSSAPI | ||
3223 | + if (options->gss_kex_algorithms == NULL) | ||
3224 | + options->gss_kex_algorithms = strdup(GSS_KEX_DEFAULT_KEX); | ||
3225 | +#endif | ||
3226 | if (options->password_authentication == -1) | ||
3227 | options->password_authentication = 1; | ||
3228 | if (options->kbd_interactive_authentication == -1) | ||
3229 | @@ -498,6 +510,7 @@ typedef enum { | ||
3230 | sHostKeyAlgorithms, | ||
3231 | sClientAliveInterval, sClientAliveCountMax, sAuthorizedKeysFile, | ||
3232 | sGssAuthentication, sGssCleanupCreds, sGssStrictAcceptor, | ||
3233 | + sGssKeyEx, sGssKexAlgorithms, sGssStoreRekey, | ||
3234 | sAcceptEnv, sSetEnv, sPermitTunnel, | ||
3235 | sMatch, sPermitOpen, sPermitListen, sForceCommand, sChrootDirectory, | ||
3236 | sUsePrivilegeSeparation, sAllowAgentForwarding, | ||
3237 | @@ -572,12 +585,22 @@ static struct { | ||
3238 | #ifdef GSSAPI | ||
3239 | { "gssapiauthentication", sGssAuthentication, SSHCFG_ALL }, | ||
3240 | { "gssapicleanupcredentials", sGssCleanupCreds, SSHCFG_GLOBAL }, | ||
3241 | + { "gssapicleanupcreds", sGssCleanupCreds, SSHCFG_GLOBAL }, | ||
3242 | { "gssapistrictacceptorcheck", sGssStrictAcceptor, SSHCFG_GLOBAL }, | ||
3243 | + { "gssapikeyexchange", sGssKeyEx, SSHCFG_GLOBAL }, | ||
3244 | + { "gssapistorecredentialsonrekey", sGssStoreRekey, SSHCFG_GLOBAL }, | ||
3245 | + { "gssapikexalgorithms", sGssKexAlgorithms, SSHCFG_GLOBAL }, | ||
3246 | #else | ||
3247 | { "gssapiauthentication", sUnsupported, SSHCFG_ALL }, | ||
3248 | { "gssapicleanupcredentials", sUnsupported, SSHCFG_GLOBAL }, | ||
3249 | + { "gssapicleanupcreds", sUnsupported, SSHCFG_GLOBAL }, | ||
3250 | { "gssapistrictacceptorcheck", sUnsupported, SSHCFG_GLOBAL }, | ||
3251 | + { "gssapikeyexchange", sUnsupported, SSHCFG_GLOBAL }, | ||
3252 | + { "gssapistorecredentialsonrekey", sUnsupported, SSHCFG_GLOBAL }, | ||
3253 | + { "gssapikexalgorithms", sUnsupported, SSHCFG_GLOBAL }, | ||
3254 | #endif | ||
3255 | + { "gssusesessionccache", sUnsupported, SSHCFG_GLOBAL }, | ||
3256 | + { "gssapiusesessioncredcache", sUnsupported, SSHCFG_GLOBAL }, | ||
3257 | { "passwordauthentication", sPasswordAuthentication, SSHCFG_ALL }, | ||
3258 | { "kbdinteractiveauthentication", sKbdInteractiveAuthentication, SSHCFG_ALL }, | ||
3259 | { "challengeresponseauthentication", sChallengeResponseAuthentication, SSHCFG_GLOBAL }, | ||
3260 | @@ -1485,6 +1508,10 @@ process_server_config_line(ServerOptions *options, char *line, | ||
3261 | intptr = &options->gss_authentication; | ||
3262 | goto parse_flag; | ||
3263 | |||
3264 | + case sGssKeyEx: | ||
3265 | + intptr = &options->gss_keyex; | ||
3266 | + goto parse_flag; | ||
3267 | + | ||
3268 | case sGssCleanupCreds: | ||
3269 | intptr = &options->gss_cleanup_creds; | ||
3270 | goto parse_flag; | ||
3271 | @@ -1493,6 +1520,22 @@ process_server_config_line(ServerOptions *options, char *line, | ||
3272 | intptr = &options->gss_strict_acceptor; | ||
3273 | goto parse_flag; | ||
3274 | |||
3275 | + case sGssStoreRekey: | ||
3276 | + intptr = &options->gss_store_rekey; | ||
3277 | + goto parse_flag; | ||
3278 | + | ||
3279 | + case sGssKexAlgorithms: | ||
3280 | + arg = strdelim(&cp); | ||
3281 | + if (!arg || *arg == '\0') | ||
3282 | + fatal("%.200s line %d: Missing argument.", | ||
3283 | + filename, linenum); | ||
3284 | + if (!kex_gss_names_valid(arg)) | ||
3285 | + fatal("%.200s line %d: Bad GSSAPI KexAlgorithms '%s'.", | ||
3286 | + filename, linenum, arg ? arg : "<NONE>"); | ||
3287 | + if (*activep && options->gss_kex_algorithms == NULL) | ||
3288 | + options->gss_kex_algorithms = xstrdup(arg); | ||
3289 | + break; | ||
3290 | + | ||
3291 | case sPasswordAuthentication: | ||
3292 | intptr = &options->password_authentication; | ||
3293 | goto parse_flag; | ||
3294 | @@ -2579,6 +2622,10 @@ dump_config(ServerOptions *o) | ||
3295 | #ifdef GSSAPI | ||
3296 | dump_cfg_fmtint(sGssAuthentication, o->gss_authentication); | ||
3297 | dump_cfg_fmtint(sGssCleanupCreds, o->gss_cleanup_creds); | ||
3298 | + dump_cfg_fmtint(sGssKeyEx, o->gss_keyex); | ||
3299 | + dump_cfg_fmtint(sGssStrictAcceptor, o->gss_strict_acceptor); | ||
3300 | + dump_cfg_fmtint(sGssStoreRekey, o->gss_store_rekey); | ||
3301 | + dump_cfg_string(sGssKexAlgorithms, o->gss_kex_algorithms); | ||
3302 | #endif | ||
3303 | dump_cfg_fmtint(sPasswordAuthentication, o->password_authentication); | ||
3304 | dump_cfg_fmtint(sKbdInteractiveAuthentication, | ||
3305 | diff --git a/servconf.h b/servconf.h | ||
3306 | index 54e0a8d8d..a476d5220 100644 | ||
3307 | --- a/servconf.h | ||
3308 | +++ b/servconf.h | ||
3309 | @@ -126,8 +126,11 @@ typedef struct { | ||
3310 | int kerberos_get_afs_token; /* If true, try to get AFS token if | ||
3311 | * authenticated with Kerberos. */ | ||
3312 | int gss_authentication; /* If true, permit GSSAPI authentication */ | ||
3313 | + int gss_keyex; /* If true, permit GSSAPI key exchange */ | ||
3314 | int gss_cleanup_creds; /* If true, destroy cred cache on logout */ | ||
3315 | int gss_strict_acceptor; /* If true, restrict the GSSAPI acceptor name */ | ||
3316 | + int gss_store_rekey; | ||
3317 | + char *gss_kex_algorithms; /* GSSAPI kex methods to be offered by client. */ | ||
3318 | int password_authentication; /* If true, permit password | ||
3319 | * authentication. */ | ||
3320 | int kbd_interactive_authentication; /* If true, permit */ | ||
3321 | diff --git a/session.c b/session.c | ||
3322 | index ac06b08e9..ac3d9d19d 100644 | ||
3323 | --- a/session.c | ||
3324 | +++ b/session.c | ||
3325 | @@ -2674,13 +2674,19 @@ do_cleanup(struct ssh *ssh, Authctxt *authctxt) | ||
3326 | |||
3327 | #ifdef KRB5 | ||
3328 | if (options.kerberos_ticket_cleanup && | ||
3329 | - authctxt->krb5_ctx) | ||
3330 | + authctxt->krb5_ctx) { | ||
3331 | + temporarily_use_uid(authctxt->pw); | ||
3332 | krb5_cleanup_proc(authctxt); | ||
3333 | + restore_uid(); | ||
3334 | + } | ||
3335 | #endif | ||
3336 | |||
3337 | #ifdef GSSAPI | ||
3338 | - if (options.gss_cleanup_creds) | ||
3339 | + if (options.gss_cleanup_creds) { | ||
3340 | + temporarily_use_uid(authctxt->pw); | ||
3341 | ssh_gssapi_cleanup_creds(); | ||
3342 | + restore_uid(); | ||
3343 | + } | ||
3344 | #endif | ||
3345 | |||
3346 | /* remove agent socket */ | ||
3347 | diff --git a/ssh-gss.h b/ssh-gss.h | ||
3348 | index 36180d07a..70dd36658 100644 | ||
3349 | --- a/ssh-gss.h | ||
3350 | +++ b/ssh-gss.h | ||
3351 | @@ -1,6 +1,6 @@ | ||
3352 | /* $OpenBSD: ssh-gss.h,v 1.14 2018/07/10 09:13:30 djm Exp $ */ | ||
3353 | /* | ||
3354 | - * Copyright (c) 2001-2003 Simon Wilkinson. All rights reserved. | ||
3355 | + * Copyright (c) 2001-2009 Simon Wilkinson. All rights reserved. | ||
3356 | * | ||
3357 | * Redistribution and use in source and binary forms, with or without | ||
3358 | * modification, are permitted provided that the following conditions | ||
3359 | @@ -61,10 +61,30 @@ | ||
3360 | |||
3361 | #define SSH_GSS_OIDTYPE 0x06 | ||
3362 | |||
3363 | +#define SSH2_MSG_KEXGSS_INIT 30 | ||
3364 | +#define SSH2_MSG_KEXGSS_CONTINUE 31 | ||
3365 | +#define SSH2_MSG_KEXGSS_COMPLETE 32 | ||
3366 | +#define SSH2_MSG_KEXGSS_HOSTKEY 33 | ||
3367 | +#define SSH2_MSG_KEXGSS_ERROR 34 | ||
3368 | +#define SSH2_MSG_KEXGSS_GROUPREQ 40 | ||
3369 | +#define SSH2_MSG_KEXGSS_GROUP 41 | ||
3370 | +#define KEX_GSS_GRP1_SHA1_ID "gss-group1-sha1-" | ||
3371 | +#define KEX_GSS_GRP14_SHA1_ID "gss-group14-sha1-" | ||
3372 | +#define KEX_GSS_GRP14_SHA256_ID "gss-group14-sha256-" | ||
3373 | +#define KEX_GSS_GRP16_SHA512_ID "gss-group16-sha512-" | ||
3374 | +#define KEX_GSS_GEX_SHA1_ID "gss-gex-sha1-" | ||
3375 | +#define KEX_GSS_NISTP256_SHA256_ID "gss-nistp256-sha256-" | ||
3376 | +#define KEX_GSS_C25519_SHA256_ID "gss-curve25519-sha256-" | ||
3377 | + | ||
3378 | +#define GSS_KEX_DEFAULT_KEX \ | ||
3379 | + KEX_GSS_GEX_SHA1_ID "," \ | ||
3380 | + KEX_GSS_GRP14_SHA1_ID | ||
3381 | + | ||
3382 | typedef struct { | ||
3383 | char *filename; | ||
3384 | char *envvar; | ||
3385 | char *envval; | ||
3386 | + struct passwd *owner; | ||
3387 | void *data; | ||
3388 | } ssh_gssapi_ccache; | ||
3389 | |||
3390 | @@ -72,8 +92,11 @@ typedef struct { | ||
3391 | gss_buffer_desc displayname; | ||
3392 | gss_buffer_desc exportedname; | ||
3393 | gss_cred_id_t creds; | ||
3394 | + gss_name_t name; | ||
3395 | struct ssh_gssapi_mech_struct *mech; | ||
3396 | ssh_gssapi_ccache store; | ||
3397 | + int used; | ||
3398 | + int updated; | ||
3399 | } ssh_gssapi_client; | ||
3400 | |||
3401 | typedef struct ssh_gssapi_mech_struct { | ||
3402 | @@ -84,6 +107,7 @@ typedef struct ssh_gssapi_mech_struct { | ||
3403 | int (*userok) (ssh_gssapi_client *, char *); | ||
3404 | int (*localname) (ssh_gssapi_client *, char **); | ||
3405 | void (*storecreds) (ssh_gssapi_client *); | ||
3406 | + int (*updatecreds) (ssh_gssapi_ccache *, ssh_gssapi_client *); | ||
3407 | } ssh_gssapi_mech; | ||
3408 | |||
3409 | typedef struct { | ||
3410 | @@ -94,10 +118,11 @@ typedef struct { | ||
3411 | gss_OID oid; /* client */ | ||
3412 | gss_cred_id_t creds; /* server */ | ||
3413 | gss_name_t client; /* server */ | ||
3414 | - gss_cred_id_t client_creds; /* server */ | ||
3415 | + gss_cred_id_t client_creds; /* both */ | ||
3416 | } Gssctxt; | ||
3417 | |||
3418 | extern ssh_gssapi_mech *supported_mechs[]; | ||
3419 | +extern Gssctxt *gss_kex_context; | ||
3420 | |||
3421 | int ssh_gssapi_check_oid(Gssctxt *, void *, size_t); | ||
3422 | void ssh_gssapi_set_oid_data(Gssctxt *, void *, size_t); | ||
3423 | @@ -109,6 +134,7 @@ OM_uint32 ssh_gssapi_test_oid_supported(OM_uint32 *, gss_OID, int *); | ||
3424 | |||
3425 | struct sshbuf; | ||
3426 | int ssh_gssapi_get_buffer_desc(struct sshbuf *, gss_buffer_desc *); | ||
3427 | +int ssh_gssapi_sshpkt_get_buffer_desc(struct ssh *, gss_buffer_desc *); | ||
3428 | |||
3429 | OM_uint32 ssh_gssapi_import_name(Gssctxt *, const char *); | ||
3430 | OM_uint32 ssh_gssapi_init_ctx(Gssctxt *, int, | ||
3431 | @@ -123,17 +149,33 @@ void ssh_gssapi_delete_ctx(Gssctxt **); | ||
3432 | OM_uint32 ssh_gssapi_sign(Gssctxt *, gss_buffer_t, gss_buffer_t); | ||
3433 | void ssh_gssapi_buildmic(struct sshbuf *, const char *, | ||
3434 | const char *, const char *); | ||
3435 | -int ssh_gssapi_check_mechanism(Gssctxt **, gss_OID, const char *); | ||
3436 | +int ssh_gssapi_check_mechanism(Gssctxt **, gss_OID, const char *, const char *); | ||
3437 | +OM_uint32 ssh_gssapi_client_identity(Gssctxt *, const char *); | ||
3438 | +int ssh_gssapi_credentials_updated(Gssctxt *); | ||
3439 | |||
3440 | /* In the server */ | ||
3441 | +typedef int ssh_gssapi_check_fn(Gssctxt **, gss_OID, const char *, | ||
3442 | + const char *); | ||
3443 | +char *ssh_gssapi_client_mechanisms(const char *, const char *, const char *); | ||
3444 | +char *ssh_gssapi_kex_mechs(gss_OID_set, ssh_gssapi_check_fn *, const char *, | ||
3445 | + const char *, const char *); | ||
3446 | +gss_OID ssh_gssapi_id_kex(Gssctxt *, char *, int); | ||
3447 | +int ssh_gssapi_server_check_mech(Gssctxt **,gss_OID, const char *, | ||
3448 | + const char *); | ||
3449 | OM_uint32 ssh_gssapi_server_ctx(Gssctxt **, gss_OID); | ||
3450 | -int ssh_gssapi_userok(char *name); | ||
3451 | +int ssh_gssapi_userok(char *name, struct passwd *, int kex); | ||
3452 | OM_uint32 ssh_gssapi_checkmic(Gssctxt *, gss_buffer_t, gss_buffer_t); | ||
3453 | void ssh_gssapi_do_child(char ***, u_int *); | ||
3454 | void ssh_gssapi_cleanup_creds(void); | ||
3455 | void ssh_gssapi_storecreds(void); | ||
3456 | const char *ssh_gssapi_displayname(void); | ||
3457 | |||
3458 | +char *ssh_gssapi_server_mechanisms(void); | ||
3459 | +int ssh_gssapi_oid_table_ok(void); | ||
3460 | + | ||
3461 | +int ssh_gssapi_update_creds(ssh_gssapi_ccache *store); | ||
3462 | +void ssh_gssapi_rekey_creds(void); | ||
3463 | + | ||
3464 | #endif /* GSSAPI */ | ||
3465 | |||
3466 | #endif /* _SSH_GSS_H */ | ||
3467 | diff --git a/ssh.1 b/ssh.1 | ||
3468 | index 9480eba8d..a1c7d2305 100644 | ||
3469 | --- a/ssh.1 | ||
3470 | +++ b/ssh.1 | ||
3471 | @@ -497,7 +497,13 @@ For full details of the options listed below, and their possible values, see | ||
3472 | .It GatewayPorts | ||
3473 | .It GlobalKnownHostsFile | ||
3474 | .It GSSAPIAuthentication | ||
3475 | +.It GSSAPIKeyExchange | ||
3476 | +.It GSSAPIClientIdentity | ||
3477 | .It GSSAPIDelegateCredentials | ||
3478 | +.It GSSAPIKexAlgorithms | ||
3479 | +.It GSSAPIRenewalForcesRekey | ||
3480 | +.It GSSAPIServerIdentity | ||
3481 | +.It GSSAPITrustDns | ||
3482 | .It HashKnownHosts | ||
3483 | .It Host | ||
3484 | .It HostbasedAuthentication | ||
3485 | @@ -573,6 +579,8 @@ flag), | ||
3486 | (supported message integrity codes), | ||
3487 | .Ar kex | ||
3488 | (key exchange algorithms), | ||
3489 | +.Ar kex-gss | ||
3490 | +(GSSAPI key exchange algorithms), | ||
3491 | .Ar key | ||
3492 | (key types), | ||
3493 | .Ar key-cert | ||
3494 | diff --git a/ssh.c b/ssh.c | ||
3495 | index 91e7c3511..42be7d88f 100644 | ||
3496 | --- a/ssh.c | ||
3497 | +++ b/ssh.c | ||
3498 | @@ -736,6 +736,8 @@ main(int ac, char **av) | ||
3499 | cp = mac_alg_list('\n'); | ||
3500 | else if (strcmp(optarg, "kex") == 0) | ||
3501 | cp = kex_alg_list('\n'); | ||
3502 | + else if (strcmp(optarg, "kex-gss") == 0) | ||
3503 | + cp = kex_gss_alg_list('\n'); | ||
3504 | else if (strcmp(optarg, "key") == 0) | ||
3505 | cp = sshkey_alg_list(0, 0, 0, '\n'); | ||
3506 | else if (strcmp(optarg, "key-cert") == 0) | ||
3507 | @@ -748,7 +750,7 @@ main(int ac, char **av) | ||
3508 | cp = xstrdup("2"); | ||
3509 | else if (strcmp(optarg, "help") == 0) { | ||
3510 | cp = xstrdup( | ||
3511 | - "cipher\ncipher-auth\nkex\nkey\n" | ||
3512 | + "cipher\ncipher-auth\nkex\nkex-gss\nkey\n" | ||
3513 | "key-cert\nkey-plain\nmac\n" | ||
3514 | "protocol-version\nsig"); | ||
3515 | } | ||
3516 | diff --git a/ssh_config b/ssh_config | ||
3517 | index 5e8ef548b..1ff999b68 100644 | ||
3518 | --- a/ssh_config | ||
3519 | +++ b/ssh_config | ||
3520 | @@ -24,6 +24,8 @@ | ||
3521 | # HostbasedAuthentication no | ||
3522 | # GSSAPIAuthentication no | ||
3523 | # GSSAPIDelegateCredentials no | ||
3524 | +# GSSAPIKeyExchange no | ||
3525 | +# GSSAPITrustDNS no | ||
3526 | # BatchMode no | ||
3527 | # CheckHostIP yes | ||
3528 | # AddressFamily any | ||
3529 | diff --git a/ssh_config.5 b/ssh_config.5 | ||
3530 | index 412629637..c3c8b274a 100644 | ||
3531 | --- a/ssh_config.5 | ||
3532 | +++ b/ssh_config.5 | ||
3533 | @@ -754,10 +754,67 @@ The default is | ||
3534 | Specifies whether user authentication based on GSSAPI is allowed. | ||
3535 | The default is | ||
3536 | .Cm no . | ||
3537 | +.It Cm GSSAPIClientIdentity | ||
3538 | +If set, specifies the GSSAPI client identity that ssh should use when | ||
3539 | +connecting to the server. The default is unset, which means that the default | ||
3540 | +identity will be used. | ||
3541 | .It Cm GSSAPIDelegateCredentials | ||
3542 | Forward (delegate) credentials to the server. | ||
3543 | The default is | ||
3544 | .Cm no . | ||
3545 | +.It Cm GSSAPIKeyExchange | ||
3546 | +Specifies whether key exchange based on GSSAPI may be used. When using | ||
3547 | +GSSAPI key exchange the server need not have a host key. | ||
3548 | +The default is | ||
3549 | +.Dq no . | ||
3550 | +.It Cm GSSAPIRenewalForcesRekey | ||
3551 | +If set to | ||
3552 | +.Dq yes | ||
3553 | +then renewal of the client's GSSAPI credentials will force the rekeying of the | ||
3554 | +ssh connection. With a compatible server, this will delegate the renewed | ||
3555 | +credentials to a session on the server. | ||
3556 | +.Pp | ||
3557 | +Checks are made to ensure that credentials are only propagated when the new | ||
3558 | +credentials match the old ones on the originating client and where the | ||
3559 | +receiving server still has the old set in its cache. | ||
3560 | +.Pp | ||
3561 | +The default is | ||
3562 | +.Dq no . | ||
3563 | +.Pp | ||
3564 | +For this to work | ||
3565 | +.Cm GSSAPIKeyExchange | ||
3566 | +needs to be enabled in the server and also used by the client. | ||
3567 | +.It Cm GSSAPIServerIdentity | ||
3568 | +If set, specifies the GSSAPI server identity that ssh should expect when | ||
3569 | +connecting to the server. The default is unset, which means that the | ||
3570 | +expected GSSAPI server identity will be determined from the target | ||
3571 | +hostname. | ||
3572 | +.It Cm GSSAPITrustDns | ||
3573 | +Set to | ||
3574 | +.Dq yes | ||
3575 | +to indicate that the DNS is trusted to securely canonicalize | ||
3576 | +the name of the host being connected to. If | ||
3577 | +.Dq no , | ||
3578 | +the hostname entered on the | ||
3579 | +command line will be passed untouched to the GSSAPI library. | ||
3580 | +The default is | ||
3581 | +.Dq no . | ||
3582 | +.It Cm GSSAPIKexAlgorithms | ||
3583 | +The list of key exchange algorithms that are offered for GSSAPI | ||
3584 | +key exchange. Possible values are | ||
3585 | +.Bd -literal -offset 3n | ||
3586 | +gss-gex-sha1-, | ||
3587 | +gss-group1-sha1-, | ||
3588 | +gss-group14-sha1-, | ||
3589 | +gss-group14-sha256-, | ||
3590 | +gss-group16-sha512-, | ||
3591 | +gss-nistp256-sha256-, | ||
3592 | +gss-curve25519-sha256- | ||
3593 | +.Ed | ||
3594 | +.Pp | ||
3595 | +The default is | ||
3596 | +.Dq gss-gex-sha1-,gss-group14-sha1- . | ||
3597 | +This option only applies to protocol version 2 connections using GSSAPI. | ||
3598 | .It Cm HashKnownHosts | ||
3599 | Indicates that | ||
3600 | .Xr ssh 1 | ||
3601 | diff --git a/sshconnect2.c b/sshconnect2.c | ||
3602 | index dffee90b1..4020371ae 100644 | ||
3603 | --- a/sshconnect2.c | ||
3604 | +++ b/sshconnect2.c | ||
3605 | @@ -78,8 +78,6 @@ | ||
3606 | #endif | ||
3607 | |||
3608 | /* import */ | ||
3609 | -extern char *client_version_string; | ||
3610 | -extern char *server_version_string; | ||
3611 | extern Options options; | ||
3612 | |||
3613 | /* | ||
3614 | @@ -161,6 +159,11 @@ ssh_kex2(struct ssh *ssh, char *host, struct sockaddr *hostaddr, u_short port) | ||
3615 | char *s, *all_key; | ||
3616 | int r; | ||
3617 | |||
3618 | +#if defined(GSSAPI) && defined(WITH_OPENSSL) | ||
3619 | + char *orig = NULL, *gss = NULL; | ||
3620 | + char *gss_host = NULL; | ||
3621 | +#endif | ||
3622 | + | ||
3623 | xxx_host = host; | ||
3624 | xxx_hostaddr = hostaddr; | ||
3625 | |||
3626 | @@ -193,6 +196,35 @@ ssh_kex2(struct ssh *ssh, char *host, struct sockaddr *hostaddr, u_short port) | ||
3627 | order_hostkeyalgs(host, hostaddr, port)); | ||
3628 | } | ||
3629 | |||
3630 | +#if defined(GSSAPI) && defined(WITH_OPENSSL) | ||
3631 | + if (options.gss_keyex) { | ||
3632 | + /* Add the GSSAPI mechanisms currently supported on this | ||
3633 | + * client to the key exchange algorithm proposal */ | ||
3634 | + orig = myproposal[PROPOSAL_KEX_ALGS]; | ||
3635 | + | ||
3636 | + if (options.gss_server_identity) | ||
3637 | + gss_host = xstrdup(options.gss_server_identity); | ||
3638 | + else if (options.gss_trust_dns) | ||
3639 | + gss_host = remote_hostname(ssh); | ||
3640 | + else | ||
3641 | + gss_host = xstrdup(host); | ||
3642 | + | ||
3643 | + gss = ssh_gssapi_client_mechanisms(gss_host, | ||
3644 | + options.gss_client_identity, options.gss_kex_algorithms); | ||
3645 | + if (gss) { | ||
3646 | + debug("Offering GSSAPI proposal: %s", gss); | ||
3647 | + xasprintf(&myproposal[PROPOSAL_KEX_ALGS], | ||
3648 | + "%s,%s", gss, orig); | ||
3649 | + | ||
3650 | + /* If we've got GSSAPI algorithms, then we also support the | ||
3651 | + * 'null' hostkey, as a last resort */ | ||
3652 | + orig = myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS]; | ||
3653 | + xasprintf(&myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS], | ||
3654 | + "%s,null", orig); | ||
3655 | + } | ||
3656 | + } | ||
3657 | +#endif | ||
3658 | + | ||
3659 | if (options.rekey_limit || options.rekey_interval) | ||
3660 | ssh_packet_set_rekey_limits(ssh, options.rekey_limit, | ||
3661 | options.rekey_interval); | ||
3662 | @@ -211,16 +243,46 @@ ssh_kex2(struct ssh *ssh, char *host, struct sockaddr *hostaddr, u_short port) | ||
3663 | # ifdef OPENSSL_HAS_ECC | ||
3664 | ssh->kex->kex[KEX_ECDH_SHA2] = kex_gen_client; | ||
3665 | # endif | ||
3666 | +# ifdef GSSAPI | ||
3667 | + if (options.gss_keyex) { | ||
3668 | + ssh->kex->kex[KEX_GSS_GRP1_SHA1] = kexgss_client; | ||
3669 | + ssh->kex->kex[KEX_GSS_GRP14_SHA1] = kexgss_client; | ||
3670 | + ssh->kex->kex[KEX_GSS_GRP14_SHA256] = kexgss_client; | ||
3671 | + ssh->kex->kex[KEX_GSS_GRP16_SHA512] = kexgss_client; | ||
3672 | + ssh->kex->kex[KEX_GSS_GEX_SHA1] = kexgssgex_client; | ||
3673 | + ssh->kex->kex[KEX_GSS_NISTP256_SHA256] = kexgss_client; | ||
3674 | + ssh->kex->kex[KEX_GSS_C25519_SHA256] = kexgss_client; | ||
3675 | + } | ||
3676 | +# endif | ||
3677 | #endif | ||
3678 | ssh->kex->kex[KEX_C25519_SHA256] = kex_gen_client; | ||
3679 | ssh->kex->kex[KEX_KEM_SNTRUP4591761X25519_SHA512] = kex_gen_client; | ||
3680 | ssh->kex->verify_host_key=&verify_host_key_callback; | ||
3681 | |||
3682 | +#if defined(GSSAPI) && defined(WITH_OPENSSL) | ||
3683 | + if (options.gss_keyex) { | ||
3684 | + ssh->kex->gss_deleg_creds = options.gss_deleg_creds; | ||
3685 | + ssh->kex->gss_trust_dns = options.gss_trust_dns; | ||
3686 | + ssh->kex->gss_client = options.gss_client_identity; | ||
3687 | + ssh->kex->gss_host = gss_host; | ||
3688 | + } | ||
3689 | +#endif | ||
3690 | + | ||
3691 | ssh_dispatch_run_fatal(ssh, DISPATCH_BLOCK, &ssh->kex->done); | ||
3692 | |||
3693 | /* remove ext-info from the KEX proposals for rekeying */ | ||
3694 | myproposal[PROPOSAL_KEX_ALGS] = | ||
3695 | compat_kex_proposal(options.kex_algorithms); | ||
3696 | +#if defined(GSSAPI) && defined(WITH_OPENSSL) | ||
3697 | + /* repair myproposal after it was crumpled by the */ | ||
3698 | + /* ext-info removal above */ | ||
3699 | + if (gss) { | ||
3700 | + orig = myproposal[PROPOSAL_KEX_ALGS]; | ||
3701 | + xasprintf(&myproposal[PROPOSAL_KEX_ALGS], | ||
3702 | + "%s,%s", gss, orig); | ||
3703 | + free(gss); | ||
3704 | + } | ||
3705 | +#endif | ||
3706 | if ((r = kex_prop2buf(ssh->kex->my, myproposal)) != 0) | ||
3707 | fatal("kex_prop2buf: %s", ssh_err(r)); | ||
3708 | |||
3709 | @@ -317,6 +379,7 @@ static int input_gssapi_response(int type, u_int32_t, struct ssh *); | ||
3710 | static int input_gssapi_token(int type, u_int32_t, struct ssh *); | ||
3711 | static int input_gssapi_error(int, u_int32_t, struct ssh *); | ||
3712 | static int input_gssapi_errtok(int, u_int32_t, struct ssh *); | ||
3713 | +static int userauth_gsskeyex(struct ssh *); | ||
3714 | #endif | ||
3715 | |||
3716 | void userauth(struct ssh *, char *); | ||
3717 | @@ -333,6 +396,11 @@ static char *authmethods_get(void); | ||
3718 | |||
3719 | Authmethod authmethods[] = { | ||
3720 | #ifdef GSSAPI | ||
3721 | + {"gssapi-keyex", | ||
3722 | + userauth_gsskeyex, | ||
3723 | + NULL, | ||
3724 | + &options.gss_keyex, | ||
3725 | + NULL}, | ||
3726 | {"gssapi-with-mic", | ||
3727 | userauth_gssapi, | ||
3728 | userauth_gssapi_cleanup, | ||
3729 | @@ -698,12 +766,25 @@ userauth_gssapi(struct ssh *ssh) | ||
3730 | OM_uint32 min; | ||
3731 | int r, ok = 0; | ||
3732 | gss_OID mech = NULL; | ||
3733 | + char *gss_host; | ||
3734 | + | ||
3735 | + if (options.gss_server_identity) | ||
3736 | + gss_host = xstrdup(options.gss_server_identity); | ||
3737 | + else if (options.gss_trust_dns) | ||
3738 | + gss_host = remote_hostname(ssh); | ||
3739 | + else | ||
3740 | + gss_host = xstrdup(authctxt->host); | ||
3741 | |||
3742 | /* Try one GSSAPI method at a time, rather than sending them all at | ||
3743 | * once. */ | ||
3744 | |||
3745 | if (authctxt->gss_supported_mechs == NULL) | ||
3746 | - gss_indicate_mechs(&min, &authctxt->gss_supported_mechs); | ||
3747 | + if (GSS_ERROR(gss_indicate_mechs(&min, | ||
3748 | + &authctxt->gss_supported_mechs))) { | ||
3749 | + authctxt->gss_supported_mechs = NULL; | ||
3750 | + free(gss_host); | ||
3751 | + return 0; | ||
3752 | + } | ||
3753 | |||
3754 | /* Check to see whether the mechanism is usable before we offer it */ | ||
3755 | while (authctxt->mech_tried < authctxt->gss_supported_mechs->count && | ||
3756 | @@ -712,13 +793,15 @@ userauth_gssapi(struct ssh *ssh) | ||
3757 | elements[authctxt->mech_tried]; | ||
3758 | /* My DER encoding requires length<128 */ | ||
3759 | if (mech->length < 128 && ssh_gssapi_check_mechanism(&gssctxt, | ||
3760 | - mech, authctxt->host)) { | ||
3761 | + mech, gss_host, options.gss_client_identity)) { | ||
3762 | ok = 1; /* Mechanism works */ | ||
3763 | } else { | ||
3764 | authctxt->mech_tried++; | ||
3765 | } | ||
3766 | } | ||
3767 | |||
3768 | + free(gss_host); | ||
3769 | + | ||
3770 | if (!ok || mech == NULL) | ||
3771 | return 0; | ||
3772 | |||
3773 | @@ -958,6 +1041,55 @@ input_gssapi_error(int type, u_int32_t plen, struct ssh *ssh) | ||
3774 | free(lang); | ||
3775 | return r; | ||
3776 | } | ||
3777 | + | ||
3778 | +int | ||
3779 | +userauth_gsskeyex(struct ssh *ssh) | ||
3780 | +{ | ||
3781 | + struct sshbuf *b = NULL; | ||
3782 | + Authctxt *authctxt = ssh->authctxt; | ||
3783 | + gss_buffer_desc gssbuf; | ||
3784 | + gss_buffer_desc mic = GSS_C_EMPTY_BUFFER; | ||
3785 | + OM_uint32 ms; | ||
3786 | + int r; | ||
3787 | + | ||
3788 | + static int attempt = 0; | ||
3789 | + if (attempt++ >= 1) | ||
3790 | + return (0); | ||
3791 | + | ||
3792 | + if (gss_kex_context == NULL) { | ||
3793 | + debug("No valid Key exchange context"); | ||
3794 | + return (0); | ||
3795 | + } | ||
3796 | + | ||
3797 | + if ((b = sshbuf_new()) == NULL) | ||
3798 | + fatal("%s: sshbuf_new failed", __func__); | ||
3799 | + | ||
3800 | + ssh_gssapi_buildmic(b, authctxt->server_user, authctxt->service, | ||
3801 | + "gssapi-keyex"); | ||
3802 | + | ||
3803 | + if ((gssbuf.value = sshbuf_mutable_ptr(b)) == NULL) | ||
3804 | + fatal("%s: sshbuf_mutable_ptr failed", __func__); | ||
3805 | + gssbuf.length = sshbuf_len(b); | ||
3806 | + | ||
3807 | + if (GSS_ERROR(ssh_gssapi_sign(gss_kex_context, &gssbuf, &mic))) { | ||
3808 | + sshbuf_free(b); | ||
3809 | + return (0); | ||
3810 | + } | ||
3811 | + | ||
3812 | + if ((r = sshpkt_start(ssh, SSH2_MSG_USERAUTH_REQUEST)) != 0 || | ||
3813 | + (r = sshpkt_put_cstring(ssh, authctxt->server_user)) != 0 || | ||
3814 | + (r = sshpkt_put_cstring(ssh, authctxt->service)) != 0 || | ||
3815 | + (r = sshpkt_put_cstring(ssh, authctxt->method->name)) != 0 || | ||
3816 | + (r = sshpkt_put_string(ssh, mic.value, mic.length)) != 0 || | ||
3817 | + (r = sshpkt_send(ssh)) != 0) | ||
3818 | + fatal("%s: %s", __func__, ssh_err(r)); | ||
3819 | + | ||
3820 | + sshbuf_free(b); | ||
3821 | + gss_release_buffer(&ms, &mic); | ||
3822 | + | ||
3823 | + return (1); | ||
3824 | +} | ||
3825 | + | ||
3826 | #endif /* GSSAPI */ | ||
3827 | |||
3828 | static int | ||
3829 | diff --git a/sshd.c b/sshd.c | ||
3830 | index cbd3bce91..98680721b 100644 | ||
3831 | --- a/sshd.c | ||
3832 | +++ b/sshd.c | ||
3833 | @@ -123,6 +123,10 @@ | ||
3834 | #include "version.h" | ||
3835 | #include "ssherr.h" | ||
3836 | |||
3837 | +#ifdef USE_SECURITY_SESSION_API | ||
3838 | +#include <Security/AuthSession.h> | ||
3839 | +#endif | ||
3840 | + | ||
3841 | /* Re-exec fds */ | ||
3842 | #define REEXEC_DEVCRYPTO_RESERVED_FD (STDERR_FILENO + 1) | ||
3843 | #define REEXEC_STARTUP_PIPE_FD (STDERR_FILENO + 2) | ||
3844 | @@ -796,8 +800,8 @@ notify_hostkeys(struct ssh *ssh) | ||
3845 | } | ||
3846 | debug3("%s: sent %u hostkeys", __func__, nkeys); | ||
3847 | if (nkeys == 0) | ||
3848 | - fatal("%s: no hostkeys", __func__); | ||
3849 | - if ((r = sshpkt_send(ssh)) != 0) | ||
3850 | + debug3("%s: no hostkeys", __func__); | ||
3851 | + else if ((r = sshpkt_send(ssh)) != 0) | ||
3852 | sshpkt_fatal(ssh, r, "%s: send", __func__); | ||
3853 | sshbuf_free(buf); | ||
3854 | } | ||
3855 | @@ -1769,7 +1773,8 @@ main(int ac, char **av) | ||
3856 | free(fp); | ||
3857 | } | ||
3858 | accumulate_host_timing_secret(cfg, NULL); | ||
3859 | - if (!sensitive_data.have_ssh2_key) { | ||
3860 | + /* The GSSAPI key exchange can run without a host key */ | ||
3861 | + if (!sensitive_data.have_ssh2_key && !options.gss_keyex) { | ||
3862 | logit("sshd: no hostkeys available -- exiting."); | ||
3863 | exit(1); | ||
3864 | } | ||
3865 | @@ -2064,6 +2069,60 @@ main(int ac, char **av) | ||
3866 | rdomain == NULL ? "" : "\""); | ||
3867 | free(laddr); | ||
3868 | |||
3869 | +#ifdef USE_SECURITY_SESSION_API | ||
3870 | + /* | ||
3871 | + * Create a new security session for use by the new user login if | ||
3872 | + * the current session is the root session or we are not launched | ||
3873 | + * by inetd (eg: debugging mode or server mode). We do not | ||
3874 | + * necessarily need to create a session if we are launched from | ||
3875 | + * inetd because Panther xinetd will create a session for us. | ||
3876 | + * | ||
3877 | + * The only case where this logic will fail is if there is an | ||
3878 | + * inetd running in a non-root session which is not creating | ||
3879 | + * new sessions for us. Then all the users will end up in the | ||
3880 | + * same session (bad). | ||
3881 | + * | ||
3882 | + * When the client exits, the session will be destroyed for us | ||
3883 | + * automatically. | ||
3884 | + * | ||
3885 | + * We must create the session before any credentials are stored | ||
3886 | + * (including AFS pags, which happens a few lines below). | ||
3887 | + */ | ||
3888 | + { | ||
3889 | + OSStatus err = 0; | ||
3890 | + SecuritySessionId sid = 0; | ||
3891 | + SessionAttributeBits sattrs = 0; | ||
3892 | + | ||
3893 | + err = SessionGetInfo(callerSecuritySession, &sid, &sattrs); | ||
3894 | + if (err) | ||
3895 | + error("SessionGetInfo() failed with error %.8X", | ||
3896 | + (unsigned) err); | ||
3897 | + else | ||
3898 | + debug("Current Session ID is %.8X / Session Attributes are %.8X", | ||
3899 | + (unsigned) sid, (unsigned) sattrs); | ||
3900 | + | ||
3901 | + if (inetd_flag && !(sattrs & sessionIsRoot)) | ||
3902 | + debug("Running in inetd mode in a non-root session... " | ||
3903 | + "assuming inetd created the session for us."); | ||
3904 | + else { | ||
3905 | + debug("Creating new security session..."); | ||
3906 | + err = SessionCreate(0, sessionHasTTY | sessionIsRemote); | ||
3907 | + if (err) | ||
3908 | + error("SessionCreate() failed with error %.8X", | ||
3909 | + (unsigned) err); | ||
3910 | + | ||
3911 | + err = SessionGetInfo(callerSecuritySession, &sid, | ||
3912 | + &sattrs); | ||
3913 | + if (err) | ||
3914 | + error("SessionGetInfo() failed with error %.8X", | ||
3915 | + (unsigned) err); | ||
3916 | + else | ||
3917 | + debug("New Session ID is %.8X / Session Attributes are %.8X", | ||
3918 | + (unsigned) sid, (unsigned) sattrs); | ||
3919 | + } | ||
3920 | + } | ||
3921 | +#endif | ||
3922 | + | ||
3923 | /* | ||
3924 | * We don't want to listen forever unless the other side | ||
3925 | * successfully authenticates itself. So we set up an alarm which is | ||
3926 | @@ -2260,6 +2319,48 @@ do_ssh2_kex(struct ssh *ssh) | ||
3927 | myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = compat_pkalg_proposal( | ||
3928 | list_hostkey_types()); | ||
3929 | |||
3930 | +#if defined(GSSAPI) && defined(WITH_OPENSSL) | ||
3931 | + { | ||
3932 | + char *orig; | ||
3933 | + char *gss = NULL; | ||
3934 | + char *newstr = NULL; | ||
3935 | + orig = myproposal[PROPOSAL_KEX_ALGS]; | ||
3936 | + | ||
3937 | + /* | ||
3938 | + * If we don't have a host key, then there's no point advertising | ||
3939 | + * the other key exchange algorithms | ||
3940 | + */ | ||
3941 | + | ||
3942 | + if (strlen(myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS]) == 0) | ||
3943 | + orig = NULL; | ||
3944 | + | ||
3945 | + if (options.gss_keyex) | ||
3946 | + gss = ssh_gssapi_server_mechanisms(); | ||
3947 | + else | ||
3948 | + gss = NULL; | ||
3949 | + | ||
3950 | + if (gss && orig) | ||
3951 | + xasprintf(&newstr, "%s,%s", gss, orig); | ||
3952 | + else if (gss) | ||
3953 | + newstr = gss; | ||
3954 | + else if (orig) | ||
3955 | + newstr = orig; | ||
3956 | + | ||
3957 | + /* | ||
3958 | + * If we've got GSSAPI mechanisms, then we've got the 'null' host | ||
3959 | + * key alg, but we can't tell people about it unless its the only | ||
3960 | + * host key algorithm we support | ||
3961 | + */ | ||
3962 | + if (gss && (strlen(myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS])) == 0) | ||
3963 | + myproposal[PROPOSAL_SERVER_HOST_KEY_ALGS] = "null"; | ||
3964 | + | ||
3965 | + if (newstr) | ||
3966 | + myproposal[PROPOSAL_KEX_ALGS] = newstr; | ||
3967 | + else | ||
3968 | + fatal("No supported key exchange algorithms"); | ||
3969 | + } | ||
3970 | +#endif | ||
3971 | + | ||
3972 | /* start key exchange */ | ||
3973 | if ((r = kex_setup(ssh, myproposal)) != 0) | ||
3974 | fatal("kex_setup: %s", ssh_err(r)); | ||
3975 | @@ -2275,7 +2376,18 @@ do_ssh2_kex(struct ssh *ssh) | ||
3976 | # ifdef OPENSSL_HAS_ECC | ||
3977 | kex->kex[KEX_ECDH_SHA2] = kex_gen_server; | ||
3978 | # endif | ||
3979 | -#endif | ||
3980 | +# ifdef GSSAPI | ||
3981 | + if (options.gss_keyex) { | ||
3982 | + kex->kex[KEX_GSS_GRP1_SHA1] = kexgss_server; | ||
3983 | + kex->kex[KEX_GSS_GRP14_SHA1] = kexgss_server; | ||
3984 | + kex->kex[KEX_GSS_GRP14_SHA256] = kexgss_server; | ||
3985 | + kex->kex[KEX_GSS_GRP16_SHA512] = kexgss_server; | ||
3986 | + kex->kex[KEX_GSS_GEX_SHA1] = kexgssgex_server; | ||
3987 | + kex->kex[KEX_GSS_NISTP256_SHA256] = kexgss_server; | ||
3988 | + kex->kex[KEX_GSS_C25519_SHA256] = kexgss_server; | ||
3989 | + } | ||
3990 | +# endif | ||
3991 | +#endif /* WITH_OPENSSL */ | ||
3992 | kex->kex[KEX_C25519_SHA256] = kex_gen_server; | ||
3993 | kex->kex[KEX_KEM_SNTRUP4591761X25519_SHA512] = kex_gen_server; | ||
3994 | kex->load_host_public_key=&get_hostkey_public_by_type; | ||
3995 | diff --git a/sshd_config b/sshd_config | ||
3996 | index 19b7c91a1..2c48105f8 100644 | ||
3997 | --- a/sshd_config | ||
3998 | +++ b/sshd_config | ||
3999 | @@ -69,6 +69,8 @@ AuthorizedKeysFile .ssh/authorized_keys | ||
4000 | # GSSAPI options | ||
4001 | #GSSAPIAuthentication no | ||
4002 | #GSSAPICleanupCredentials yes | ||
4003 | +#GSSAPIStrictAcceptorCheck yes | ||
4004 | +#GSSAPIKeyExchange no | ||
4005 | |||
4006 | # Set this to 'yes' to enable PAM authentication, account processing, | ||
4007 | # and session processing. If this is enabled, PAM authentication will | ||
4008 | diff --git a/sshd_config.5 b/sshd_config.5 | ||
4009 | index b224f2929..2baa6622b 100644 | ||
4010 | --- a/sshd_config.5 | ||
4011 | +++ b/sshd_config.5 | ||
4012 | @@ -653,6 +653,11 @@ Specifies whether to automatically destroy the user's credentials cache | ||
4013 | on logout. | ||
4014 | The default is | ||
4015 | .Cm yes . | ||
4016 | +.It Cm GSSAPIKeyExchange | ||
4017 | +Specifies whether key exchange based on GSSAPI is allowed. GSSAPI key exchange | ||
4018 | +doesn't rely on ssh keys to verify host identity. | ||
4019 | +The default is | ||
4020 | +.Cm no . | ||
4021 | .It Cm GSSAPIStrictAcceptorCheck | ||
4022 | Determines whether to be strict about the identity of the GSSAPI acceptor | ||
4023 | a client authenticates against. | ||
4024 | @@ -667,6 +672,31 @@ machine's default store. | ||
4025 | This facility is provided to assist with operation on multi homed machines. | ||
4026 | The default is | ||
4027 | .Cm yes . | ||
4028 | +.It Cm GSSAPIStoreCredentialsOnRekey | ||
4029 | +Controls whether the user's GSSAPI credentials should be updated following a | ||
4030 | +successful connection rekeying. This option can be used to accepted renewed | ||
4031 | +or updated credentials from a compatible client. The default is | ||
4032 | +.Dq no . | ||
4033 | +.Pp | ||
4034 | +For this to work | ||
4035 | +.Cm GSSAPIKeyExchange | ||
4036 | +needs to be enabled in the server and also used by the client. | ||
4037 | +.It Cm GSSAPIKexAlgorithms | ||
4038 | +The list of key exchange algorithms that are accepted by GSSAPI | ||
4039 | +key exchange. Possible values are | ||
4040 | +.Bd -literal -offset 3n | ||
4041 | +gss-gex-sha1-, | ||
4042 | +gss-group1-sha1-, | ||
4043 | +gss-group14-sha1-, | ||
4044 | +gss-group14-sha256-, | ||
4045 | +gss-group16-sha512-, | ||
4046 | +gss-nistp256-sha256-, | ||
4047 | +gss-curve25519-sha256- | ||
4048 | +.Ed | ||
4049 | +.Pp | ||
4050 | +The default is | ||
4051 | +.Dq gss-gex-sha1-,gss-group14-sha1- . | ||
4052 | +This option only applies to protocol version 2 connections using GSSAPI. | ||
4053 | .It Cm HostbasedAcceptedKeyTypes | ||
4054 | Specifies the key types that will be accepted for hostbased authentication | ||
4055 | as a list of comma-separated patterns. | ||
4056 | diff --git a/sshkey.c b/sshkey.c | ||
4057 | index ad1957762..789cd61ef 100644 | ||
4058 | --- a/sshkey.c | ||
4059 | +++ b/sshkey.c | ||
4060 | @@ -135,6 +135,7 @@ static const struct keytype keytypes[] = { | ||
4061 | # endif /* OPENSSL_HAS_NISTP521 */ | ||
4062 | # endif /* OPENSSL_HAS_ECC */ | ||
4063 | #endif /* WITH_OPENSSL */ | ||
4064 | + { "null", "null", NULL, KEY_NULL, 0, 0, 0 }, | ||
4065 | { NULL, NULL, NULL, -1, -1, 0, 0 } | ||
4066 | }; | ||
4067 | |||
4068 | @@ -223,7 +224,7 @@ sshkey_alg_list(int certs_only, int plain_only, int include_sigonly, char sep) | ||
4069 | const struct keytype *kt; | ||
4070 | |||
4071 | for (kt = keytypes; kt->type != -1; kt++) { | ||
4072 | - if (kt->name == NULL) | ||
4073 | + if (kt->name == NULL || kt->type == KEY_NULL) | ||
4074 | continue; | ||
4075 | if (!include_sigonly && kt->sigonly) | ||
4076 | continue; | ||
4077 | diff --git a/sshkey.h b/sshkey.h | ||
4078 | index a91e60436..c11106c93 100644 | ||
4079 | --- a/sshkey.h | ||
4080 | +++ b/sshkey.h | ||
4081 | @@ -65,6 +65,7 @@ enum sshkey_types { | ||
4082 | KEY_ED25519_CERT, | ||
4083 | KEY_XMSS, | ||
4084 | KEY_XMSS_CERT, | ||
4085 | + KEY_NULL, | ||
4086 | KEY_UNSPEC | ||
4087 | }; | ||
4088 | |||
diff --git a/debian/patches/keepalive-extensions.patch b/debian/patches/keepalive-extensions.patch new file mode 100644 index 000000000..fbfe6a1fb --- /dev/null +++ b/debian/patches/keepalive-extensions.patch | |||
@@ -0,0 +1,134 @@ | |||
1 | From 4d8dd12bab7bbc954815d7953a0c86ce1687bd34 Mon Sep 17 00:00:00 2001 | ||
2 | From: Richard Kettlewell <rjk@greenend.org.uk> | ||
3 | Date: Sun, 9 Feb 2014 16:09:52 +0000 | ||
4 | Subject: Various keepalive extensions | ||
5 | |||
6 | Add compatibility aliases for ProtocolKeepAlives and SetupTimeOut, supported | ||
7 | in previous versions of Debian's OpenSSH package but since superseded by | ||
8 | ServerAliveInterval. (We're probably stuck with this bit for | ||
9 | compatibility.) | ||
10 | |||
11 | In batch mode, default ServerAliveInterval to five minutes. | ||
12 | |||
13 | Adjust documentation to match and to give some more advice on use of | ||
14 | keepalives. | ||
15 | |||
16 | Author: Ian Jackson <ian@chiark.greenend.org.uk> | ||
17 | Author: Matthew Vernon <matthew@debian.org> | ||
18 | Author: Colin Watson <cjwatson@debian.org> | ||
19 | Last-Update: 2018-10-19 | ||
20 | |||
21 | Patch-Name: keepalive-extensions.patch | ||
22 | --- | ||
23 | readconf.c | 14 ++++++++++++-- | ||
24 | ssh_config.5 | 21 +++++++++++++++++++-- | ||
25 | sshd_config.5 | 3 +++ | ||
26 | 3 files changed, 34 insertions(+), 4 deletions(-) | ||
27 | |||
28 | diff --git a/readconf.c b/readconf.c | ||
29 | index 29f3bd98d..3d0b6ff90 100644 | ||
30 | --- a/readconf.c | ||
31 | +++ b/readconf.c | ||
32 | @@ -177,6 +177,7 @@ typedef enum { | ||
33 | oStreamLocalBindMask, oStreamLocalBindUnlink, oRevokedHostKeys, | ||
34 | oFingerprintHash, oUpdateHostkeys, oHostbasedKeyTypes, | ||
35 | oPubkeyAcceptedKeyTypes, oCASignatureAlgorithms, oProxyJump, | ||
36 | + oProtocolKeepAlives, oSetupTimeOut, | ||
37 | oIgnore, oIgnoredUnknownOption, oDeprecated, oUnsupported | ||
38 | } OpCodes; | ||
39 | |||
40 | @@ -326,6 +327,8 @@ static struct { | ||
41 | { "pubkeyacceptedkeytypes", oPubkeyAcceptedKeyTypes }, | ||
42 | { "ignoreunknown", oIgnoreUnknown }, | ||
43 | { "proxyjump", oProxyJump }, | ||
44 | + { "protocolkeepalives", oProtocolKeepAlives }, | ||
45 | + { "setuptimeout", oSetupTimeOut }, | ||
46 | |||
47 | { NULL, oBadOption } | ||
48 | }; | ||
49 | @@ -1440,6 +1443,8 @@ parse_keytypes: | ||
50 | goto parse_flag; | ||
51 | |||
52 | case oServerAliveInterval: | ||
53 | + case oProtocolKeepAlives: /* Debian-specific compatibility alias */ | ||
54 | + case oSetupTimeOut: /* Debian-specific compatibility alias */ | ||
55 | intptr = &options->server_alive_interval; | ||
56 | goto parse_time; | ||
57 | |||
58 | @@ -2133,8 +2138,13 @@ fill_default_options(Options * options) | ||
59 | options->rekey_interval = 0; | ||
60 | if (options->verify_host_key_dns == -1) | ||
61 | options->verify_host_key_dns = 0; | ||
62 | - if (options->server_alive_interval == -1) | ||
63 | - options->server_alive_interval = 0; | ||
64 | + if (options->server_alive_interval == -1) { | ||
65 | + /* in batch mode, default is 5mins */ | ||
66 | + if (options->batch_mode == 1) | ||
67 | + options->server_alive_interval = 300; | ||
68 | + else | ||
69 | + options->server_alive_interval = 0; | ||
70 | + } | ||
71 | if (options->server_alive_count_max == -1) | ||
72 | options->server_alive_count_max = 3; | ||
73 | if (options->control_master == -1) | ||
74 | diff --git a/ssh_config.5 b/ssh_config.5 | ||
75 | index c3c8b274a..250c92d04 100644 | ||
76 | --- a/ssh_config.5 | ||
77 | +++ b/ssh_config.5 | ||
78 | @@ -265,8 +265,12 @@ Valid arguments are | ||
79 | If set to | ||
80 | .Cm yes , | ||
81 | passphrase/password querying will be disabled. | ||
82 | +In addition, the | ||
83 | +.Cm ServerAliveInterval | ||
84 | +option will be set to 300 seconds by default (Debian-specific). | ||
85 | This option is useful in scripts and other batch jobs where no user | ||
86 | -is present to supply the password. | ||
87 | +is present to supply the password, | ||
88 | +and where it is desirable to detect a broken network swiftly. | ||
89 | The argument must be | ||
90 | .Cm yes | ||
91 | or | ||
92 | @@ -1535,7 +1539,14 @@ from the server, | ||
93 | will send a message through the encrypted | ||
94 | channel to request a response from the server. | ||
95 | The default | ||
96 | -is 0, indicating that these messages will not be sent to the server. | ||
97 | +is 0, indicating that these messages will not be sent to the server, | ||
98 | +or 300 if the | ||
99 | +.Cm BatchMode | ||
100 | +option is set (Debian-specific). | ||
101 | +.Cm ProtocolKeepAlives | ||
102 | +and | ||
103 | +.Cm SetupTimeOut | ||
104 | +are Debian-specific compatibility aliases for this option. | ||
105 | .It Cm SetEnv | ||
106 | Directly specify one or more environment variables and their contents to | ||
107 | be sent to the server. | ||
108 | @@ -1615,6 +1626,12 @@ Specifies whether the system should send TCP keepalive messages to the | ||
109 | other side. | ||
110 | If they are sent, death of the connection or crash of one | ||
111 | of the machines will be properly noticed. | ||
112 | +This option only uses TCP keepalives (as opposed to using ssh level | ||
113 | +keepalives), so takes a long time to notice when the connection dies. | ||
114 | +As such, you probably want | ||
115 | +the | ||
116 | +.Cm ServerAliveInterval | ||
117 | +option as well. | ||
118 | However, this means that | ||
119 | connections will die if the route is down temporarily, and some people | ||
120 | find it annoying. | ||
121 | diff --git a/sshd_config.5 b/sshd_config.5 | ||
122 | index 2baa6622b..2ef671d1b 100644 | ||
123 | --- a/sshd_config.5 | ||
124 | +++ b/sshd_config.5 | ||
125 | @@ -1597,6 +1597,9 @@ This avoids infinitely hanging sessions. | ||
126 | .Pp | ||
127 | To disable TCP keepalive messages, the value should be set to | ||
128 | .Cm no . | ||
129 | +.Pp | ||
130 | +This option was formerly called | ||
131 | +.Cm KeepAlive . | ||
132 | .It Cm TrustedUserCAKeys | ||
133 | Specifies a file containing public keys of certificate authorities that are | ||
134 | trusted to sign user certificates for authentication, or | ||
diff --git a/debian/patches/mention-ssh-keygen-on-keychange.patch b/debian/patches/mention-ssh-keygen-on-keychange.patch new file mode 100644 index 000000000..21e8d7947 --- /dev/null +++ b/debian/patches/mention-ssh-keygen-on-keychange.patch | |||
@@ -0,0 +1,44 @@ | |||
1 | From 15b7cc25dea4efdef7fdd129d0e3d1a091afd67b Mon Sep 17 00:00:00 2001 | ||
2 | From: Scott Moser <smoser@ubuntu.com> | ||
3 | Date: Sun, 9 Feb 2014 16:10:03 +0000 | ||
4 | Subject: Mention ssh-keygen in ssh fingerprint changed warning | ||
5 | |||
6 | Author: Chris Lamb <lamby@debian.org> | ||
7 | Bug: https://bugzilla.mindrot.org/show_bug.cgi?id=1843 | ||
8 | Bug-Ubuntu: https://bugs.launchpad.net/bugs/686607 | ||
9 | Last-Update: 2017-08-22 | ||
10 | |||
11 | Patch-Name: mention-ssh-keygen-on-keychange.patch | ||
12 | --- | ||
13 | sshconnect.c | 9 ++++++++- | ||
14 | 1 file changed, 8 insertions(+), 1 deletion(-) | ||
15 | |||
16 | diff --git a/sshconnect.c b/sshconnect.c | ||
17 | index 103d84e38..0b6f6af4b 100644 | ||
18 | --- a/sshconnect.c | ||
19 | +++ b/sshconnect.c | ||
20 | @@ -986,9 +986,13 @@ check_host_key(char *hostname, struct sockaddr *hostaddr, u_short port, | ||
21 | error("%s. This could either mean that", key_msg); | ||
22 | error("DNS SPOOFING is happening or the IP address for the host"); | ||
23 | error("and its host key have changed at the same time."); | ||
24 | - if (ip_status != HOST_NEW) | ||
25 | + if (ip_status != HOST_NEW) { | ||
26 | error("Offending key for IP in %s:%lu", | ||
27 | ip_found->file, ip_found->line); | ||
28 | + error(" remove with:"); | ||
29 | + error(" ssh-keygen -f \"%s\" -R \"%s\"", | ||
30 | + ip_found->file, ip); | ||
31 | + } | ||
32 | } | ||
33 | /* The host key has changed. */ | ||
34 | warn_changed_key(host_key); | ||
35 | @@ -997,6 +1001,9 @@ check_host_key(char *hostname, struct sockaddr *hostaddr, u_short port, | ||
36 | error("Offending %s key in %s:%lu", | ||
37 | sshkey_type(host_found->key), | ||
38 | host_found->file, host_found->line); | ||
39 | + error(" remove with:"); | ||
40 | + error(" ssh-keygen -f \"%s\" -R \"%s\"", | ||
41 | + host_found->file, host); | ||
42 | |||
43 | /* | ||
44 | * If strict host key checking is in use, the user will have | ||
diff --git a/debian/patches/no-openssl-version-status.patch b/debian/patches/no-openssl-version-status.patch new file mode 100644 index 000000000..dcc672726 --- /dev/null +++ b/debian/patches/no-openssl-version-status.patch | |||
@@ -0,0 +1,62 @@ | |||
1 | From 1f61e987ccec2a2af15044196c1a6730959ead98 Mon Sep 17 00:00:00 2001 | ||
2 | From: Kurt Roeckx <kurt@roeckx.be> | ||
3 | Date: Sun, 9 Feb 2014 16:10:14 +0000 | ||
4 | Subject: Don't check the status field of the OpenSSL version | ||
5 | |||
6 | There is no reason to check the version of OpenSSL (in Debian). If it's | ||
7 | not compatible the soname will change. OpenSSH seems to want to do a | ||
8 | check for the soname based on the version number, but wants to keep the | ||
9 | status of the release the same. Remove that check on the status since | ||
10 | it doesn't tell you anything about how compatible that version is. | ||
11 | |||
12 | Author: Colin Watson <cjwatson@debian.org> | ||
13 | Bug-Debian: https://bugs.debian.org/93581 | ||
14 | Bug-Debian: https://bugs.debian.org/664383 | ||
15 | Bug-Debian: https://bugs.debian.org/732940 | ||
16 | Forwarded: not-needed | ||
17 | Last-Update: 2014-10-07 | ||
18 | |||
19 | Patch-Name: no-openssl-version-status.patch | ||
20 | --- | ||
21 | openbsd-compat/openssl-compat.c | 6 +++--- | ||
22 | openbsd-compat/regress/opensslvertest.c | 1 + | ||
23 | 2 files changed, 4 insertions(+), 3 deletions(-) | ||
24 | |||
25 | diff --git a/openbsd-compat/openssl-compat.c b/openbsd-compat/openssl-compat.c | ||
26 | index a37ca61bf..c1749210d 100644 | ||
27 | --- a/openbsd-compat/openssl-compat.c | ||
28 | +++ b/openbsd-compat/openssl-compat.c | ||
29 | @@ -34,7 +34,7 @@ | ||
30 | /* | ||
31 | * OpenSSL version numbers: MNNFFPPS: major minor fix patch status | ||
32 | * We match major, minor, fix and status (not patch) for <1.0.0. | ||
33 | - * After that, we acceptable compatible fix versions (so we | ||
34 | + * After that, we accept compatible fix and status versions (so we | ||
35 | * allow 1.0.1 to work with 1.0.0). Going backwards is only allowed | ||
36 | * within a patch series. | ||
37 | */ | ||
38 | @@ -55,10 +55,10 @@ ssh_compatible_openssl(long headerver, long libver) | ||
39 | } | ||
40 | |||
41 | /* | ||
42 | - * For versions >= 1.0.0, major,minor,status must match and library | ||
43 | + * For versions >= 1.0.0, major,minor must match and library | ||
44 | * fix version must be equal to or newer than the header. | ||
45 | */ | ||
46 | - mask = 0xfff0000fL; /* major,minor,status */ | ||
47 | + mask = 0xfff00000L; /* major,minor */ | ||
48 | hfix = (headerver & 0x000ff000) >> 12; | ||
49 | lfix = (libver & 0x000ff000) >> 12; | ||
50 | if ( (headerver & mask) == (libver & mask) && lfix >= hfix) | ||
51 | diff --git a/openbsd-compat/regress/opensslvertest.c b/openbsd-compat/regress/opensslvertest.c | ||
52 | index 5d019b598..58474873d 100644 | ||
53 | --- a/openbsd-compat/regress/opensslvertest.c | ||
54 | +++ b/openbsd-compat/regress/opensslvertest.c | ||
55 | @@ -35,6 +35,7 @@ struct version_test { | ||
56 | |||
57 | /* built with 1.0.1b release headers */ | ||
58 | { 0x1000101fL, 0x1000101fL, 1},/* exact match */ | ||
59 | + { 0x1000101fL, 0x10001010L, 1}, /* different status: ok */ | ||
60 | { 0x1000101fL, 0x1000102fL, 1}, /* newer library patch version: ok */ | ||
61 | { 0x1000101fL, 0x1000100fL, 1}, /* older library patch version: ok */ | ||
62 | { 0x1000101fL, 0x1000201fL, 1}, /* newer library fix version: ok */ | ||
diff --git a/debian/patches/openbsd-docs.patch b/debian/patches/openbsd-docs.patch new file mode 100644 index 000000000..e46967c72 --- /dev/null +++ b/debian/patches/openbsd-docs.patch | |||
@@ -0,0 +1,148 @@ | |||
1 | From 47beec5c944ea9add7d267110fc9dcf15e7b8932 Mon Sep 17 00:00:00 2001 | ||
2 | From: Colin Watson <cjwatson@debian.org> | ||
3 | Date: Sun, 9 Feb 2014 16:10:09 +0000 | ||
4 | Subject: Adjust various OpenBSD-specific references in manual pages | ||
5 | |||
6 | No single bug reference for this patch, but history includes: | ||
7 | http://bugs.debian.org/154434 (login.conf(5)) | ||
8 | http://bugs.debian.org/513417 (/etc/rc) | ||
9 | http://bugs.debian.org/530692 (ssl(8)) | ||
10 | https://bugs.launchpad.net/bugs/456660 (ssl(8)) | ||
11 | |||
12 | Forwarded: not-needed | ||
13 | Last-Update: 2017-10-04 | ||
14 | |||
15 | Patch-Name: openbsd-docs.patch | ||
16 | --- | ||
17 | moduli.5 | 4 ++-- | ||
18 | ssh-keygen.1 | 12 ++++-------- | ||
19 | ssh.1 | 4 ++++ | ||
20 | sshd.8 | 5 ++--- | ||
21 | sshd_config.5 | 3 +-- | ||
22 | 5 files changed, 13 insertions(+), 15 deletions(-) | ||
23 | |||
24 | diff --git a/moduli.5 b/moduli.5 | ||
25 | index ef0de0850..149846c8c 100644 | ||
26 | --- a/moduli.5 | ||
27 | +++ b/moduli.5 | ||
28 | @@ -21,7 +21,7 @@ | ||
29 | .Nd Diffie-Hellman moduli | ||
30 | .Sh DESCRIPTION | ||
31 | The | ||
32 | -.Pa /etc/moduli | ||
33 | +.Pa /etc/ssh/moduli | ||
34 | file contains prime numbers and generators for use by | ||
35 | .Xr sshd 8 | ||
36 | in the Diffie-Hellman Group Exchange key exchange method. | ||
37 | @@ -110,7 +110,7 @@ first estimates the size of the modulus required to produce enough | ||
38 | Diffie-Hellman output to sufficiently key the selected symmetric cipher. | ||
39 | .Xr sshd 8 | ||
40 | then randomly selects a modulus from | ||
41 | -.Fa /etc/moduli | ||
42 | +.Fa /etc/ssh/moduli | ||
43 | that best meets the size requirement. | ||
44 | .Sh SEE ALSO | ||
45 | .Xr ssh-keygen 1 , | ||
46 | diff --git a/ssh-keygen.1 b/ssh-keygen.1 | ||
47 | index 124456577..9b877b860 100644 | ||
48 | --- a/ssh-keygen.1 | ||
49 | +++ b/ssh-keygen.1 | ||
50 | @@ -178,9 +178,7 @@ key in | ||
51 | .Pa ~/.ssh/id_ed25519 | ||
52 | or | ||
53 | .Pa ~/.ssh/id_rsa . | ||
54 | -Additionally, the system administrator may use this to generate host keys, | ||
55 | -as seen in | ||
56 | -.Pa /etc/rc . | ||
57 | +Additionally, the system administrator may use this to generate host keys. | ||
58 | .Pp | ||
59 | Normally this program generates the key and asks for a file in which | ||
60 | to store the private key. | ||
61 | @@ -243,9 +241,7 @@ If | ||
62 | .Fl f | ||
63 | has also been specified, its argument is used as a prefix to the | ||
64 | default path for the resulting host key files. | ||
65 | -This is used by | ||
66 | -.Pa /etc/rc | ||
67 | -to generate new host keys. | ||
68 | +This is used by system administration scripts to generate new host keys. | ||
69 | .It Fl a Ar rounds | ||
70 | When saving a private key this option specifies the number of KDF | ||
71 | (key derivation function) rounds used. | ||
72 | @@ -703,7 +699,7 @@ option. | ||
73 | Valid generator values are 2, 3, and 5. | ||
74 | .Pp | ||
75 | Screened DH groups may be installed in | ||
76 | -.Pa /etc/moduli . | ||
77 | +.Pa /etc/ssh/moduli . | ||
78 | It is important that this file contains moduli of a range of bit lengths and | ||
79 | that both ends of a connection share common moduli. | ||
80 | .Sh CERTIFICATES | ||
81 | @@ -903,7 +899,7 @@ on all machines | ||
82 | where the user wishes to log in using public key authentication. | ||
83 | There is no need to keep the contents of this file secret. | ||
84 | .Pp | ||
85 | -.It Pa /etc/moduli | ||
86 | +.It Pa /etc/ssh/moduli | ||
87 | Contains Diffie-Hellman groups used for DH-GEX. | ||
88 | The file format is described in | ||
89 | .Xr moduli 5 . | ||
90 | diff --git a/ssh.1 b/ssh.1 | ||
91 | index 64ead5f57..e4aeae7b4 100644 | ||
92 | --- a/ssh.1 | ||
93 | +++ b/ssh.1 | ||
94 | @@ -873,6 +873,10 @@ implements public key authentication protocol automatically, | ||
95 | using one of the DSA, ECDSA, Ed25519 or RSA algorithms. | ||
96 | The HISTORY section of | ||
97 | .Xr ssl 8 | ||
98 | +(on non-OpenBSD systems, see | ||
99 | +.nh | ||
100 | +http://www.openbsd.org/cgi\-bin/man.cgi?query=ssl&sektion=8#HISTORY) | ||
101 | +.hy | ||
102 | contains a brief discussion of the DSA and RSA algorithms. | ||
103 | .Pp | ||
104 | The file | ||
105 | diff --git a/sshd.8 b/sshd.8 | ||
106 | index 57a7fd66b..4abc01d66 100644 | ||
107 | --- a/sshd.8 | ||
108 | +++ b/sshd.8 | ||
109 | @@ -65,7 +65,7 @@ over an insecure network. | ||
110 | .Nm | ||
111 | listens for connections from clients. | ||
112 | It is normally started at boot from | ||
113 | -.Pa /etc/rc . | ||
114 | +.Pa /etc/init.d/ssh . | ||
115 | It forks a new | ||
116 | daemon for each incoming connection. | ||
117 | The forked daemons handle | ||
118 | @@ -884,7 +884,7 @@ This file is for host-based authentication (see | ||
119 | .Xr ssh 1 ) . | ||
120 | It should only be writable by root. | ||
121 | .Pp | ||
122 | -.It Pa /etc/moduli | ||
123 | +.It Pa /etc/ssh/moduli | ||
124 | Contains Diffie-Hellman groups used for the "Diffie-Hellman Group Exchange" | ||
125 | key exchange method. | ||
126 | The file format is described in | ||
127 | @@ -982,7 +982,6 @@ The content of this file is not sensitive; it can be world-readable. | ||
128 | .Xr ssh-keyscan 1 , | ||
129 | .Xr chroot 2 , | ||
130 | .Xr hosts_access 5 , | ||
131 | -.Xr login.conf 5 , | ||
132 | .Xr moduli 5 , | ||
133 | .Xr sshd_config 5 , | ||
134 | .Xr inetd 8 , | ||
135 | diff --git a/sshd_config.5 b/sshd_config.5 | ||
136 | index addea54a0..f995e4ab0 100644 | ||
137 | --- a/sshd_config.5 | ||
138 | +++ b/sshd_config.5 | ||
139 | @@ -395,8 +395,7 @@ Certificates signed using other algorithms will not be accepted for | ||
140 | public key or host-based authentication. | ||
141 | .It Cm ChallengeResponseAuthentication | ||
142 | Specifies whether challenge-response authentication is allowed (e.g. via | ||
143 | -PAM or through authentication styles supported in | ||
144 | -.Xr login.conf 5 ) | ||
145 | +PAM). | ||
146 | The default is | ||
147 | .Cm yes . | ||
148 | .It Cm ChrootDirectory | ||
diff --git a/debian/patches/package-versioning.patch b/debian/patches/package-versioning.patch new file mode 100644 index 000000000..0d2be82dc --- /dev/null +++ b/debian/patches/package-versioning.patch | |||
@@ -0,0 +1,47 @@ | |||
1 | From 85e700a732e9a308eeee67f5a284e19fd6befbb8 Mon Sep 17 00:00:00 2001 | ||
2 | From: Matthew Vernon <matthew@debian.org> | ||
3 | Date: Sun, 9 Feb 2014 16:10:05 +0000 | ||
4 | Subject: Include the Debian version in our identification | ||
5 | |||
6 | This makes it easier to audit networks for versions patched against security | ||
7 | vulnerabilities. It has little detrimental effect, as attackers will | ||
8 | generally just try attacks rather than bothering to scan for | ||
9 | vulnerable-looking version strings. (However, see debian-banner.patch.) | ||
10 | |||
11 | Forwarded: not-needed | ||
12 | Last-Update: 2019-06-05 | ||
13 | |||
14 | Patch-Name: package-versioning.patch | ||
15 | --- | ||
16 | kex.c | 2 +- | ||
17 | version.h | 7 ++++++- | ||
18 | 2 files changed, 7 insertions(+), 2 deletions(-) | ||
19 | |||
20 | diff --git a/kex.c b/kex.c | ||
21 | index a2a4794e8..be354206d 100644 | ||
22 | --- a/kex.c | ||
23 | +++ b/kex.c | ||
24 | @@ -1186,7 +1186,7 @@ kex_exchange_identification(struct ssh *ssh, int timeout_ms, | ||
25 | if (version_addendum != NULL && *version_addendum == '\0') | ||
26 | version_addendum = NULL; | ||
27 | if ((r = sshbuf_putf(our_version, "SSH-%d.%d-%.100s%s%s\r\n", | ||
28 | - PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2, SSH_VERSION, | ||
29 | + PROTOCOL_MAJOR_2, PROTOCOL_MINOR_2, SSH_RELEASE, | ||
30 | version_addendum == NULL ? "" : " ", | ||
31 | version_addendum == NULL ? "" : version_addendum)) != 0) { | ||
32 | error("%s: sshbuf_putf: %s", __func__, ssh_err(r)); | ||
33 | diff --git a/version.h b/version.h | ||
34 | index 806ead9a6..599c859e6 100644 | ||
35 | --- a/version.h | ||
36 | +++ b/version.h | ||
37 | @@ -3,4 +3,9 @@ | ||
38 | #define SSH_VERSION "OpenSSH_8.0" | ||
39 | |||
40 | #define SSH_PORTABLE "p1" | ||
41 | -#define SSH_RELEASE SSH_VERSION SSH_PORTABLE | ||
42 | +#define SSH_RELEASE_MINIMUM SSH_VERSION SSH_PORTABLE | ||
43 | +#ifdef SSH_EXTRAVERSION | ||
44 | +#define SSH_RELEASE SSH_RELEASE_MINIMUM " " SSH_EXTRAVERSION | ||
45 | +#else | ||
46 | +#define SSH_RELEASE SSH_RELEASE_MINIMUM | ||
47 | +#endif | ||
diff --git a/debian/patches/restore-authorized_keys2.patch b/debian/patches/restore-authorized_keys2.patch new file mode 100644 index 000000000..574923e1c --- /dev/null +++ b/debian/patches/restore-authorized_keys2.patch | |||
@@ -0,0 +1,35 @@ | |||
1 | From 1af6147744892b18e2239c085abe87f5408cbaae Mon Sep 17 00:00:00 2001 | ||
2 | From: Colin Watson <cjwatson@debian.org> | ||
3 | Date: Sun, 5 Mar 2017 02:02:11 +0000 | ||
4 | Subject: Restore reading authorized_keys2 by default | ||
5 | |||
6 | Upstream seems to intend to gradually phase this out, so don't assume | ||
7 | that this will remain the default forever. However, we were late in | ||
8 | adopting the upstream sshd_config changes, so it makes sense to extend | ||
9 | the grace period. | ||
10 | |||
11 | Bug-Debian: https://bugs.debian.org/852320 | ||
12 | Forwarded: not-needed | ||
13 | Last-Update: 2017-03-05 | ||
14 | |||
15 | Patch-Name: restore-authorized_keys2.patch | ||
16 | --- | ||
17 | sshd_config | 5 ++--- | ||
18 | 1 file changed, 2 insertions(+), 3 deletions(-) | ||
19 | |||
20 | diff --git a/sshd_config b/sshd_config | ||
21 | index ed8272f6d..ee9629102 100644 | ||
22 | --- a/sshd_config | ||
23 | +++ b/sshd_config | ||
24 | @@ -36,9 +36,8 @@ | ||
25 | |||
26 | #PubkeyAuthentication yes | ||
27 | |||
28 | -# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2 | ||
29 | -# but this is overridden so installations will only check .ssh/authorized_keys | ||
30 | -AuthorizedKeysFile .ssh/authorized_keys | ||
31 | +# Expect .ssh/authorized_keys2 to be disregarded by default in future. | ||
32 | +#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 | ||
33 | |||
34 | #AuthorizedPrincipalsFile none | ||
35 | |||
diff --git a/debian/patches/restore-tcp-wrappers.patch b/debian/patches/restore-tcp-wrappers.patch new file mode 100644 index 000000000..0472ea7d0 --- /dev/null +++ b/debian/patches/restore-tcp-wrappers.patch | |||
@@ -0,0 +1,172 @@ | |||
1 | From 0f9f44654708e4fde2f52c52f717d061b5e458fa Mon Sep 17 00:00:00 2001 | ||
2 | From: Colin Watson <cjwatson@debian.org> | ||
3 | Date: Tue, 7 Oct 2014 13:22:41 +0100 | ||
4 | Subject: Restore TCP wrappers support | ||
5 | |||
6 | Support for TCP wrappers was dropped in OpenSSH 6.7. See this message | ||
7 | and thread: | ||
8 | |||
9 | https://lists.mindrot.org/pipermail/openssh-unix-dev/2014-April/032497.html | ||
10 | |||
11 | It is true that this reduces preauth attack surface in sshd. On the | ||
12 | other hand, this support seems to be quite widely used, and abruptly | ||
13 | dropping it (from the perspective of users who don't read | ||
14 | openssh-unix-dev) could easily cause more serious problems in practice. | ||
15 | |||
16 | It's not entirely clear what the right long-term answer for Debian is, | ||
17 | but it at least probably doesn't involve dropping this feature shortly | ||
18 | before a freeze. | ||
19 | |||
20 | Forwarded: not-needed | ||
21 | Last-Update: 2019-06-05 | ||
22 | |||
23 | Patch-Name: restore-tcp-wrappers.patch | ||
24 | --- | ||
25 | configure.ac | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++ | ||
26 | sshd.8 | 7 +++++++ | ||
27 | sshd.c | 25 +++++++++++++++++++++++ | ||
28 | 3 files changed, 89 insertions(+) | ||
29 | |||
30 | diff --git a/configure.ac b/configure.ac | ||
31 | index 2869f7042..ce16e7758 100644 | ||
32 | --- a/configure.ac | ||
33 | +++ b/configure.ac | ||
34 | @@ -1518,6 +1518,62 @@ else | ||
35 | AC_MSG_RESULT([no]) | ||
36 | fi | ||
37 | |||
38 | +# Check whether user wants TCP wrappers support | ||
39 | +TCPW_MSG="no" | ||
40 | +AC_ARG_WITH([tcp-wrappers], | ||
41 | + [ --with-tcp-wrappers[[=PATH]] Enable tcpwrappers support (optionally in PATH)], | ||
42 | + [ | ||
43 | + if test "x$withval" != "xno" ; then | ||
44 | + saved_LIBS="$LIBS" | ||
45 | + saved_LDFLAGS="$LDFLAGS" | ||
46 | + saved_CPPFLAGS="$CPPFLAGS" | ||
47 | + if test -n "${withval}" && \ | ||
48 | + test "x${withval}" != "xyes"; then | ||
49 | + if test -d "${withval}/lib"; then | ||
50 | + if test -n "${need_dash_r}"; then | ||
51 | + LDFLAGS="-L${withval}/lib -R${withval}/lib ${LDFLAGS}" | ||
52 | + else | ||
53 | + LDFLAGS="-L${withval}/lib ${LDFLAGS}" | ||
54 | + fi | ||
55 | + else | ||
56 | + if test -n "${need_dash_r}"; then | ||
57 | + LDFLAGS="-L${withval} -R${withval} ${LDFLAGS}" | ||
58 | + else | ||
59 | + LDFLAGS="-L${withval} ${LDFLAGS}" | ||
60 | + fi | ||
61 | + fi | ||
62 | + if test -d "${withval}/include"; then | ||
63 | + CPPFLAGS="-I${withval}/include ${CPPFLAGS}" | ||
64 | + else | ||
65 | + CPPFLAGS="-I${withval} ${CPPFLAGS}" | ||
66 | + fi | ||
67 | + fi | ||
68 | + LIBS="-lwrap $LIBS" | ||
69 | + AC_MSG_CHECKING([for libwrap]) | ||
70 | + AC_LINK_IFELSE([AC_LANG_PROGRAM([[ | ||
71 | +#include <sys/types.h> | ||
72 | +#include <sys/socket.h> | ||
73 | +#include <netinet/in.h> | ||
74 | +#include <tcpd.h> | ||
75 | +int deny_severity = 0, allow_severity = 0; | ||
76 | + ]], [[ | ||
77 | + hosts_access(0); | ||
78 | + ]])], [ | ||
79 | + AC_MSG_RESULT([yes]) | ||
80 | + AC_DEFINE([LIBWRAP], [1], | ||
81 | + [Define if you want | ||
82 | + TCP Wrappers support]) | ||
83 | + SSHDLIBS="$SSHDLIBS -lwrap" | ||
84 | + TCPW_MSG="yes" | ||
85 | + ], [ | ||
86 | + AC_MSG_ERROR([*** libwrap missing]) | ||
87 | + | ||
88 | + ]) | ||
89 | + LIBS="$saved_LIBS" | ||
90 | + fi | ||
91 | + ] | ||
92 | +) | ||
93 | + | ||
94 | # Check whether user wants to use ldns | ||
95 | LDNS_MSG="no" | ||
96 | AC_ARG_WITH(ldns, | ||
97 | @@ -5269,6 +5325,7 @@ echo " PAM support: $PAM_MSG" | ||
98 | echo " OSF SIA support: $SIA_MSG" | ||
99 | echo " KerberosV support: $KRB5_MSG" | ||
100 | echo " SELinux support: $SELINUX_MSG" | ||
101 | +echo " TCP Wrappers support: $TCPW_MSG" | ||
102 | echo " MD5 password support: $MD5_MSG" | ||
103 | echo " libedit support: $LIBEDIT_MSG" | ||
104 | echo " libldns support: $LDNS_MSG" | ||
105 | diff --git a/sshd.8 b/sshd.8 | ||
106 | index fb133c14b..57a7fd66b 100644 | ||
107 | --- a/sshd.8 | ||
108 | +++ b/sshd.8 | ||
109 | @@ -873,6 +873,12 @@ the user's home directory becomes accessible. | ||
110 | This file should be writable only by the user, and need not be | ||
111 | readable by anyone else. | ||
112 | .Pp | ||
113 | +.It Pa /etc/hosts.allow | ||
114 | +.It Pa /etc/hosts.deny | ||
115 | +Access controls that should be enforced by tcp-wrappers are defined here. | ||
116 | +Further details are described in | ||
117 | +.Xr hosts_access 5 . | ||
118 | +.Pp | ||
119 | .It Pa /etc/hosts.equiv | ||
120 | This file is for host-based authentication (see | ||
121 | .Xr ssh 1 ) . | ||
122 | @@ -975,6 +981,7 @@ The content of this file is not sensitive; it can be world-readable. | ||
123 | .Xr ssh-keygen 1 , | ||
124 | .Xr ssh-keyscan 1 , | ||
125 | .Xr chroot 2 , | ||
126 | +.Xr hosts_access 5 , | ||
127 | .Xr login.conf 5 , | ||
128 | .Xr moduli 5 , | ||
129 | .Xr sshd_config 5 , | ||
130 | diff --git a/sshd.c b/sshd.c | ||
131 | index 98680721b..46870d3b5 100644 | ||
132 | --- a/sshd.c | ||
133 | +++ b/sshd.c | ||
134 | @@ -127,6 +127,13 @@ | ||
135 | #include <Security/AuthSession.h> | ||
136 | #endif | ||
137 | |||
138 | +#ifdef LIBWRAP | ||
139 | +#include <tcpd.h> | ||
140 | +#include <syslog.h> | ||
141 | +int allow_severity; | ||
142 | +int deny_severity; | ||
143 | +#endif /* LIBWRAP */ | ||
144 | + | ||
145 | /* Re-exec fds */ | ||
146 | #define REEXEC_DEVCRYPTO_RESERVED_FD (STDERR_FILENO + 1) | ||
147 | #define REEXEC_STARTUP_PIPE_FD (STDERR_FILENO + 2) | ||
148 | @@ -2057,6 +2064,24 @@ main(int ac, char **av) | ||
149 | #ifdef SSH_AUDIT_EVENTS | ||
150 | audit_connection_from(remote_ip, remote_port); | ||
151 | #endif | ||
152 | +#ifdef LIBWRAP | ||
153 | + allow_severity = options.log_facility|LOG_INFO; | ||
154 | + deny_severity = options.log_facility|LOG_WARNING; | ||
155 | + /* Check whether logins are denied from this host. */ | ||
156 | + if (ssh_packet_connection_is_on_socket(ssh)) { | ||
157 | + struct request_info req; | ||
158 | + | ||
159 | + request_init(&req, RQ_DAEMON, __progname, RQ_FILE, sock_in, 0); | ||
160 | + fromhost(&req); | ||
161 | + | ||
162 | + if (!hosts_access(&req)) { | ||
163 | + debug("Connection refused by tcp wrapper"); | ||
164 | + refuse(&req); | ||
165 | + /* NOTREACHED */ | ||
166 | + fatal("libwrap refuse returns"); | ||
167 | + } | ||
168 | + } | ||
169 | +#endif /* LIBWRAP */ | ||
170 | |||
171 | rdomain = ssh_packet_rdomain_in(ssh); | ||
172 | |||
diff --git a/debian/patches/revert-ipqos-defaults.patch b/debian/patches/revert-ipqos-defaults.patch new file mode 100644 index 000000000..623e1fff0 --- /dev/null +++ b/debian/patches/revert-ipqos-defaults.patch | |||
@@ -0,0 +1,93 @@ | |||
1 | From 907bd73e8b0d031a96a0f800c0f6cef03ff1fcc4 Mon Sep 17 00:00:00 2001 | ||
2 | From: Colin Watson <cjwatson@debian.org> | ||
3 | Date: Mon, 8 Apr 2019 10:46:29 +0100 | ||
4 | Subject: Revert "upstream: Update default IPQoS in ssh(1), sshd(8) to DSCP | ||
5 | AF21 for" | ||
6 | |||
7 | This reverts commit 5ee8448ad7c306f05a9f56769f95336a8269f379. | ||
8 | |||
9 | The IPQoS default changes have some unfortunate interactions with | ||
10 | iptables (see https://bugs.debian.org/923880) and VMware, so I'm | ||
11 | temporarily reverting them until those have been fixed. | ||
12 | |||
13 | Bug-Debian: https://bugs.debian.org/923879 | ||
14 | Bug-Debian: https://bugs.debian.org/926229 | ||
15 | Bug-Ubuntu: https://bugs.launchpad.net/1822370 | ||
16 | Last-Update: 2019-04-08 | ||
17 | |||
18 | Patch-Name: revert-ipqos-defaults.patch | ||
19 | --- | ||
20 | readconf.c | 4 ++-- | ||
21 | servconf.c | 4 ++-- | ||
22 | ssh_config.5 | 6 ++---- | ||
23 | sshd_config.5 | 6 ++---- | ||
24 | 4 files changed, 8 insertions(+), 12 deletions(-) | ||
25 | |||
26 | diff --git a/readconf.c b/readconf.c | ||
27 | index f35bde6e6..2ba312441 100644 | ||
28 | --- a/readconf.c | ||
29 | +++ b/readconf.c | ||
30 | @@ -2165,9 +2165,9 @@ fill_default_options(Options * options) | ||
31 | if (options->visual_host_key == -1) | ||
32 | options->visual_host_key = 0; | ||
33 | if (options->ip_qos_interactive == -1) | ||
34 | - options->ip_qos_interactive = IPTOS_DSCP_AF21; | ||
35 | + options->ip_qos_interactive = IPTOS_LOWDELAY; | ||
36 | if (options->ip_qos_bulk == -1) | ||
37 | - options->ip_qos_bulk = IPTOS_DSCP_CS1; | ||
38 | + options->ip_qos_bulk = IPTOS_THROUGHPUT; | ||
39 | if (options->request_tty == -1) | ||
40 | options->request_tty = REQUEST_TTY_AUTO; | ||
41 | if (options->proxy_use_fdpass == -1) | ||
42 | diff --git a/servconf.c b/servconf.c | ||
43 | index 8d2bced52..365e6ff1e 100644 | ||
44 | --- a/servconf.c | ||
45 | +++ b/servconf.c | ||
46 | @@ -423,9 +423,9 @@ fill_default_server_options(ServerOptions *options) | ||
47 | if (options->permit_tun == -1) | ||
48 | options->permit_tun = SSH_TUNMODE_NO; | ||
49 | if (options->ip_qos_interactive == -1) | ||
50 | - options->ip_qos_interactive = IPTOS_DSCP_AF21; | ||
51 | + options->ip_qos_interactive = IPTOS_LOWDELAY; | ||
52 | if (options->ip_qos_bulk == -1) | ||
53 | - options->ip_qos_bulk = IPTOS_DSCP_CS1; | ||
54 | + options->ip_qos_bulk = IPTOS_THROUGHPUT; | ||
55 | if (options->version_addendum == NULL) | ||
56 | options->version_addendum = xstrdup(""); | ||
57 | if (options->fwd_opts.streamlocal_bind_mask == (mode_t)-1) | ||
58 | diff --git a/ssh_config.5 b/ssh_config.5 | ||
59 | index a27631ae9..a9f6d906f 100644 | ||
60 | --- a/ssh_config.5 | ||
61 | +++ b/ssh_config.5 | ||
62 | @@ -1098,11 +1098,9 @@ If one argument is specified, it is used as the packet class unconditionally. | ||
63 | If two values are specified, the first is automatically selected for | ||
64 | interactive sessions and the second for non-interactive sessions. | ||
65 | The default is | ||
66 | -.Cm af21 | ||
67 | -(Low-Latency Data) | ||
68 | +.Cm lowdelay | ||
69 | for interactive sessions and | ||
70 | -.Cm cs1 | ||
71 | -(Lower Effort) | ||
72 | +.Cm throughput | ||
73 | for non-interactive sessions. | ||
74 | .It Cm KbdInteractiveAuthentication | ||
75 | Specifies whether to use keyboard-interactive authentication. | ||
76 | diff --git a/sshd_config.5 b/sshd_config.5 | ||
77 | index c0c4ebd66..e5380f5dc 100644 | ||
78 | --- a/sshd_config.5 | ||
79 | +++ b/sshd_config.5 | ||
80 | @@ -886,11 +886,9 @@ If one argument is specified, it is used as the packet class unconditionally. | ||
81 | If two values are specified, the first is automatically selected for | ||
82 | interactive sessions and the second for non-interactive sessions. | ||
83 | The default is | ||
84 | -.Cm af21 | ||
85 | -(Low-Latency Data) | ||
86 | +.Cm lowdelay | ||
87 | for interactive sessions and | ||
88 | -.Cm cs1 | ||
89 | -(Lower Effort) | ||
90 | +.Cm throughput | ||
91 | for non-interactive sessions. | ||
92 | .It Cm KbdInteractiveAuthentication | ||
93 | Specifies whether to allow keyboard-interactive authentication. | ||
diff --git a/debian/patches/scp-quoting.patch b/debian/patches/scp-quoting.patch new file mode 100644 index 000000000..29cf5603f --- /dev/null +++ b/debian/patches/scp-quoting.patch | |||
@@ -0,0 +1,41 @@ | |||
1 | From 76a51e544a6a6a674ff1dddf4bb6da05d9cce774 Mon Sep 17 00:00:00 2001 | ||
2 | From: =?UTF-8?q?Nicolas=20Valc=C3=A1rcel?= <nvalcarcel@ubuntu.com> | ||
3 | Date: Sun, 9 Feb 2014 16:09:59 +0000 | ||
4 | Subject: Adjust scp quoting in verbose mode | ||
5 | |||
6 | Tweak scp's reporting of filenames in verbose mode to be a bit less | ||
7 | confusing with spaces. | ||
8 | |||
9 | This should be revised to mimic real shell quoting. | ||
10 | |||
11 | Bug-Ubuntu: https://bugs.launchpad.net/bugs/89945 | ||
12 | Last-Update: 2010-02-27 | ||
13 | |||
14 | Patch-Name: scp-quoting.patch | ||
15 | --- | ||
16 | scp.c | 12 ++++++++++-- | ||
17 | 1 file changed, 10 insertions(+), 2 deletions(-) | ||
18 | |||
19 | diff --git a/scp.c b/scp.c | ||
20 | index 80bc0e8b1..a2dc410bd 100644 | ||
21 | --- a/scp.c | ||
22 | +++ b/scp.c | ||
23 | @@ -199,8 +199,16 @@ do_local_cmd(arglist *a) | ||
24 | |||
25 | if (verbose_mode) { | ||
26 | fprintf(stderr, "Executing:"); | ||
27 | - for (i = 0; i < a->num; i++) | ||
28 | - fmprintf(stderr, " %s", a->list[i]); | ||
29 | + for (i = 0; i < a->num; i++) { | ||
30 | + if (i == 0) | ||
31 | + fmprintf(stderr, " %s", a->list[i]); | ||
32 | + else | ||
33 | + /* | ||
34 | + * TODO: misbehaves if a->list[i] contains a | ||
35 | + * single quote | ||
36 | + */ | ||
37 | + fmprintf(stderr, " '%s'", a->list[i]); | ||
38 | + } | ||
39 | fprintf(stderr, "\n"); | ||
40 | } | ||
41 | if ((pid = fork()) == -1) | ||
diff --git a/debian/patches/seccomp-s390-flock-ipc.patch b/debian/patches/seccomp-s390-flock-ipc.patch new file mode 100644 index 000000000..ad00d1220 --- /dev/null +++ b/debian/patches/seccomp-s390-flock-ipc.patch | |||
@@ -0,0 +1,47 @@ | |||
1 | From 9fa2ceb14b6e7e5e902cff416bc9ad3963be9883 Mon Sep 17 00:00:00 2001 | ||
2 | From: Eduardo Barretto <ebarretto@linux.vnet.ibm.com> | ||
3 | Date: Tue, 9 May 2017 10:53:04 -0300 | ||
4 | Subject: Allow flock and ipc syscall for s390 architecture | ||
5 | |||
6 | In order to use the OpenSSL-ibmpkcs11 engine it is needed to allow flock | ||
7 | and ipc calls, because this engine calls OpenCryptoki (a PKCS#11 | ||
8 | implementation) which calls the libraries that will communicate with the | ||
9 | crypto cards. OpenCryptoki makes use of flock and ipc and, as of now, | ||
10 | this is only need on s390 architecture. | ||
11 | |||
12 | Signed-off-by: Eduardo Barretto <ebarretto@linux.vnet.ibm.com> | ||
13 | |||
14 | Origin: other, https://bugzilla.mindrot.org/show_bug.cgi?id=2752 | ||
15 | Bug: https://bugzilla.mindrot.org/show_bug.cgi?id=2752 | ||
16 | Bug-Ubuntu: https://bugs.launchpad.net/bugs/1686618 | ||
17 | Last-Update: 2018-10-19 | ||
18 | |||
19 | Patch-Name: seccomp-s390-flock-ipc.patch | ||
20 | --- | ||
21 | sandbox-seccomp-filter.c | 6 ++++++ | ||
22 | 1 file changed, 6 insertions(+) | ||
23 | |||
24 | diff --git a/sandbox-seccomp-filter.c b/sandbox-seccomp-filter.c | ||
25 | index 5edbc6946..d4bc20828 100644 | ||
26 | --- a/sandbox-seccomp-filter.c | ||
27 | +++ b/sandbox-seccomp-filter.c | ||
28 | @@ -166,6 +166,9 @@ static const struct sock_filter preauth_insns[] = { | ||
29 | #ifdef __NR_exit_group | ||
30 | SC_ALLOW(__NR_exit_group), | ||
31 | #endif | ||
32 | +#if defined(__NR_flock) && defined(__s390__) | ||
33 | + SC_ALLOW(__NR_flock), | ||
34 | +#endif | ||
35 | #ifdef __NR_futex | ||
36 | SC_ALLOW(__NR_futex), | ||
37 | #endif | ||
38 | @@ -193,6 +196,9 @@ static const struct sock_filter preauth_insns[] = { | ||
39 | #ifdef __NR_getuid32 | ||
40 | SC_ALLOW(__NR_getuid32), | ||
41 | #endif | ||
42 | +#if defined(__NR_ipc) && defined(__s390__) | ||
43 | + SC_ALLOW(__NR_ipc), | ||
44 | +#endif | ||
45 | #ifdef __NR_madvise | ||
46 | SC_ALLOW(__NR_madvise), | ||
47 | #endif | ||
diff --git a/debian/patches/seccomp-s390-ioctl-ep11-crypto.patch b/debian/patches/seccomp-s390-ioctl-ep11-crypto.patch new file mode 100644 index 000000000..fcd7285bd --- /dev/null +++ b/debian/patches/seccomp-s390-ioctl-ep11-crypto.patch | |||
@@ -0,0 +1,33 @@ | |||
1 | From 9d4508c5c1d6466c662befcb26aff09f41966102 Mon Sep 17 00:00:00 2001 | ||
2 | From: Eduardo Barretto <ebarretto@linux.vnet.ibm.com> | ||
3 | Date: Tue, 9 May 2017 13:33:30 -0300 | ||
4 | Subject: Enable specific ioctl call for EP11 crypto card (s390) | ||
5 | |||
6 | The EP11 crypto card needs to make an ioctl call, which receives an | ||
7 | specific argument. This crypto card is for s390 only. | ||
8 | |||
9 | Signed-off-by: Eduardo Barretto <ebarretto@linux.vnet.ibm.com> | ||
10 | |||
11 | Origin: other, https://bugzilla.mindrot.org/show_bug.cgi?id=2752 | ||
12 | Bug: https://bugzilla.mindrot.org/show_bug.cgi?id=2752 | ||
13 | Bug-Ubuntu: https://bugs.launchpad.net/bugs/1686618 | ||
14 | Last-Update: 2017-08-28 | ||
15 | |||
16 | Patch-Name: seccomp-s390-ioctl-ep11-crypto.patch | ||
17 | --- | ||
18 | sandbox-seccomp-filter.c | 2 ++ | ||
19 | 1 file changed, 2 insertions(+) | ||
20 | |||
21 | diff --git a/sandbox-seccomp-filter.c b/sandbox-seccomp-filter.c | ||
22 | index d4bc20828..ef4de8c65 100644 | ||
23 | --- a/sandbox-seccomp-filter.c | ||
24 | +++ b/sandbox-seccomp-filter.c | ||
25 | @@ -256,6 +256,8 @@ static const struct sock_filter preauth_insns[] = { | ||
26 | SC_ALLOW_ARG(__NR_ioctl, 1, Z90STAT_STATUS_MASK), | ||
27 | SC_ALLOW_ARG(__NR_ioctl, 1, ICARSAMODEXPO), | ||
28 | SC_ALLOW_ARG(__NR_ioctl, 1, ICARSACRT), | ||
29 | + /* Allow ioctls for EP11 crypto card on s390 */ | ||
30 | + SC_ALLOW_ARG(__NR_ioctl, 1, ZSENDEP11CPRB), | ||
31 | #endif | ||
32 | #if defined(__x86_64__) && defined(__ILP32__) && defined(__X32_SYSCALL_BIT) | ||
33 | /* | ||
diff --git a/debian/patches/selinux-role.patch b/debian/patches/selinux-role.patch new file mode 100644 index 000000000..5ab339ac9 --- /dev/null +++ b/debian/patches/selinux-role.patch | |||
@@ -0,0 +1,472 @@ | |||
1 | From 21e3ff3ab4791d3c94bd775da66cde29797fcb36 Mon Sep 17 00:00:00 2001 | ||
2 | From: Manoj Srivastava <srivasta@debian.org> | ||
3 | Date: Sun, 9 Feb 2014 16:09:49 +0000 | ||
4 | Subject: Handle SELinux authorisation roles | ||
5 | |||
6 | Rejected upstream due to discomfort with magic usernames; a better approach | ||
7 | will need an SSH protocol change. In the meantime, this came from Debian's | ||
8 | SELinux maintainer, so we'll keep it until we have something better. | ||
9 | |||
10 | Bug: https://bugzilla.mindrot.org/show_bug.cgi?id=1641 | ||
11 | Bug-Debian: http://bugs.debian.org/394795 | ||
12 | Last-Update: 2019-06-05 | ||
13 | |||
14 | Patch-Name: selinux-role.patch | ||
15 | --- | ||
16 | auth.h | 1 + | ||
17 | auth2.c | 10 ++++++++-- | ||
18 | monitor.c | 37 +++++++++++++++++++++++++++++++++---- | ||
19 | monitor.h | 2 ++ | ||
20 | monitor_wrap.c | 27 ++++++++++++++++++++++++--- | ||
21 | monitor_wrap.h | 3 ++- | ||
22 | openbsd-compat/port-linux.c | 21 ++++++++++++++------- | ||
23 | openbsd-compat/port-linux.h | 4 ++-- | ||
24 | platform.c | 4 ++-- | ||
25 | platform.h | 2 +- | ||
26 | session.c | 10 +++++----- | ||
27 | session.h | 2 +- | ||
28 | sshd.c | 2 +- | ||
29 | sshpty.c | 4 ++-- | ||
30 | sshpty.h | 2 +- | ||
31 | 15 files changed, 99 insertions(+), 32 deletions(-) | ||
32 | |||
33 | diff --git a/auth.h b/auth.h | ||
34 | index bf393e755..8f13bdf48 100644 | ||
35 | --- a/auth.h | ||
36 | +++ b/auth.h | ||
37 | @@ -65,6 +65,7 @@ struct Authctxt { | ||
38 | char *service; | ||
39 | struct passwd *pw; /* set if 'valid' */ | ||
40 | char *style; | ||
41 | + char *role; | ||
42 | |||
43 | /* Method lists for multiple authentication */ | ||
44 | char **auth_methods; /* modified from server config */ | ||
45 | diff --git a/auth2.c b/auth2.c | ||
46 | index 7417eafa4..d60e7f1f2 100644 | ||
47 | --- a/auth2.c | ||
48 | +++ b/auth2.c | ||
49 | @@ -267,7 +267,7 @@ input_userauth_request(int type, u_int32_t seq, struct ssh *ssh) | ||
50 | { | ||
51 | Authctxt *authctxt = ssh->authctxt; | ||
52 | Authmethod *m = NULL; | ||
53 | - char *user = NULL, *service = NULL, *method = NULL, *style = NULL; | ||
54 | + char *user = NULL, *service = NULL, *method = NULL, *style = NULL, *role = NULL; | ||
55 | int r, authenticated = 0; | ||
56 | double tstart = monotime_double(); | ||
57 | |||
58 | @@ -281,8 +281,13 @@ input_userauth_request(int type, u_int32_t seq, struct ssh *ssh) | ||
59 | debug("userauth-request for user %s service %s method %s", user, service, method); | ||
60 | debug("attempt %d failures %d", authctxt->attempt, authctxt->failures); | ||
61 | |||
62 | + if ((role = strchr(user, '/')) != NULL) | ||
63 | + *role++ = 0; | ||
64 | + | ||
65 | if ((style = strchr(user, ':')) != NULL) | ||
66 | *style++ = 0; | ||
67 | + else if (role && (style = strchr(role, ':')) != NULL) | ||
68 | + *style++ = '\0'; | ||
69 | |||
70 | if (authctxt->attempt++ == 0) { | ||
71 | /* setup auth context */ | ||
72 | @@ -309,8 +314,9 @@ input_userauth_request(int type, u_int32_t seq, struct ssh *ssh) | ||
73 | use_privsep ? " [net]" : ""); | ||
74 | authctxt->service = xstrdup(service); | ||
75 | authctxt->style = style ? xstrdup(style) : NULL; | ||
76 | + authctxt->role = role ? xstrdup(role) : NULL; | ||
77 | if (use_privsep) | ||
78 | - mm_inform_authserv(service, style); | ||
79 | + mm_inform_authserv(service, style, role); | ||
80 | userauth_banner(ssh); | ||
81 | if (auth2_setup_methods_lists(authctxt) != 0) | ||
82 | ssh_packet_disconnect(ssh, | ||
83 | diff --git a/monitor.c b/monitor.c | ||
84 | index 0766d6ef5..5f84e880d 100644 | ||
85 | --- a/monitor.c | ||
86 | +++ b/monitor.c | ||
87 | @@ -117,6 +117,7 @@ int mm_answer_sign(struct ssh *, int, struct sshbuf *); | ||
88 | int mm_answer_pwnamallow(struct ssh *, int, struct sshbuf *); | ||
89 | int mm_answer_auth2_read_banner(struct ssh *, int, struct sshbuf *); | ||
90 | int mm_answer_authserv(struct ssh *, int, struct sshbuf *); | ||
91 | +int mm_answer_authrole(struct ssh *, int, struct sshbuf *); | ||
92 | int mm_answer_authpassword(struct ssh *, int, struct sshbuf *); | ||
93 | int mm_answer_bsdauthquery(struct ssh *, int, struct sshbuf *); | ||
94 | int mm_answer_bsdauthrespond(struct ssh *, int, struct sshbuf *); | ||
95 | @@ -197,6 +198,7 @@ struct mon_table mon_dispatch_proto20[] = { | ||
96 | {MONITOR_REQ_SIGN, MON_ONCE, mm_answer_sign}, | ||
97 | {MONITOR_REQ_PWNAM, MON_ONCE, mm_answer_pwnamallow}, | ||
98 | {MONITOR_REQ_AUTHSERV, MON_ONCE, mm_answer_authserv}, | ||
99 | + {MONITOR_REQ_AUTHROLE, MON_ONCE, mm_answer_authrole}, | ||
100 | {MONITOR_REQ_AUTH2_READ_BANNER, MON_ONCE, mm_answer_auth2_read_banner}, | ||
101 | {MONITOR_REQ_AUTHPASSWORD, MON_AUTH, mm_answer_authpassword}, | ||
102 | #ifdef USE_PAM | ||
103 | @@ -819,6 +821,7 @@ mm_answer_pwnamallow(struct ssh *ssh, int sock, struct sshbuf *m) | ||
104 | |||
105 | /* Allow service/style information on the auth context */ | ||
106 | monitor_permit(mon_dispatch, MONITOR_REQ_AUTHSERV, 1); | ||
107 | + monitor_permit(mon_dispatch, MONITOR_REQ_AUTHROLE, 1); | ||
108 | monitor_permit(mon_dispatch, MONITOR_REQ_AUTH2_READ_BANNER, 1); | ||
109 | |||
110 | #ifdef USE_PAM | ||
111 | @@ -852,16 +855,42 @@ mm_answer_authserv(struct ssh *ssh, int sock, struct sshbuf *m) | ||
112 | monitor_permit_authentications(1); | ||
113 | |||
114 | if ((r = sshbuf_get_cstring(m, &authctxt->service, NULL)) != 0 || | ||
115 | - (r = sshbuf_get_cstring(m, &authctxt->style, NULL)) != 0) | ||
116 | + (r = sshbuf_get_cstring(m, &authctxt->style, NULL)) != 0 || | ||
117 | + (r = sshbuf_get_cstring(m, &authctxt->role, NULL)) != 0) | ||
118 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
119 | - debug3("%s: service=%s, style=%s", | ||
120 | - __func__, authctxt->service, authctxt->style); | ||
121 | + debug3("%s: service=%s, style=%s, role=%s", | ||
122 | + __func__, authctxt->service, authctxt->style, authctxt->role); | ||
123 | |||
124 | if (strlen(authctxt->style) == 0) { | ||
125 | free(authctxt->style); | ||
126 | authctxt->style = NULL; | ||
127 | } | ||
128 | |||
129 | + if (strlen(authctxt->role) == 0) { | ||
130 | + free(authctxt->role); | ||
131 | + authctxt->role = NULL; | ||
132 | + } | ||
133 | + | ||
134 | + return (0); | ||
135 | +} | ||
136 | + | ||
137 | +int | ||
138 | +mm_answer_authrole(struct ssh *ssh, int sock, struct sshbuf *m) | ||
139 | +{ | ||
140 | + int r; | ||
141 | + | ||
142 | + monitor_permit_authentications(1); | ||
143 | + | ||
144 | + if ((r = sshbuf_get_cstring(m, &authctxt->role, NULL)) != 0) | ||
145 | + fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
146 | + debug3("%s: role=%s", | ||
147 | + __func__, authctxt->role); | ||
148 | + | ||
149 | + if (strlen(authctxt->role) == 0) { | ||
150 | + free(authctxt->role); | ||
151 | + authctxt->role = NULL; | ||
152 | + } | ||
153 | + | ||
154 | return (0); | ||
155 | } | ||
156 | |||
157 | @@ -1528,7 +1557,7 @@ mm_answer_pty(struct ssh *ssh, int sock, struct sshbuf *m) | ||
158 | res = pty_allocate(&s->ptyfd, &s->ttyfd, s->tty, sizeof(s->tty)); | ||
159 | if (res == 0) | ||
160 | goto error; | ||
161 | - pty_setowner(authctxt->pw, s->tty); | ||
162 | + pty_setowner(authctxt->pw, s->tty, authctxt->role); | ||
163 | |||
164 | if ((r = sshbuf_put_u32(m, 1)) != 0 || | ||
165 | (r = sshbuf_put_cstring(m, s->tty)) != 0) | ||
166 | diff --git a/monitor.h b/monitor.h | ||
167 | index 2b1a2d590..4d87284aa 100644 | ||
168 | --- a/monitor.h | ||
169 | +++ b/monitor.h | ||
170 | @@ -65,6 +65,8 @@ enum monitor_reqtype { | ||
171 | |||
172 | MONITOR_REQ_GSSSIGN = 150, MONITOR_ANS_GSSSIGN = 151, | ||
173 | MONITOR_REQ_GSSUPCREDS = 152, MONITOR_ANS_GSSUPCREDS = 153, | ||
174 | + | ||
175 | + MONITOR_REQ_AUTHROLE = 154, | ||
176 | }; | ||
177 | |||
178 | struct ssh; | ||
179 | diff --git a/monitor_wrap.c b/monitor_wrap.c | ||
180 | index 8e4c1c1f8..6b3a6251c 100644 | ||
181 | --- a/monitor_wrap.c | ||
182 | +++ b/monitor_wrap.c | ||
183 | @@ -364,10 +364,10 @@ mm_auth2_read_banner(void) | ||
184 | return (banner); | ||
185 | } | ||
186 | |||
187 | -/* Inform the privileged process about service and style */ | ||
188 | +/* Inform the privileged process about service, style, and role */ | ||
189 | |||
190 | void | ||
191 | -mm_inform_authserv(char *service, char *style) | ||
192 | +mm_inform_authserv(char *service, char *style, char *role) | ||
193 | { | ||
194 | struct sshbuf *m; | ||
195 | int r; | ||
196 | @@ -377,7 +377,8 @@ mm_inform_authserv(char *service, char *style) | ||
197 | if ((m = sshbuf_new()) == NULL) | ||
198 | fatal("%s: sshbuf_new failed", __func__); | ||
199 | if ((r = sshbuf_put_cstring(m, service)) != 0 || | ||
200 | - (r = sshbuf_put_cstring(m, style ? style : "")) != 0) | ||
201 | + (r = sshbuf_put_cstring(m, style ? style : "")) != 0 || | ||
202 | + (r = sshbuf_put_cstring(m, role ? role : "")) != 0) | ||
203 | fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
204 | |||
205 | mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTHSERV, m); | ||
206 | @@ -385,6 +386,26 @@ mm_inform_authserv(char *service, char *style) | ||
207 | sshbuf_free(m); | ||
208 | } | ||
209 | |||
210 | +/* Inform the privileged process about role */ | ||
211 | + | ||
212 | +void | ||
213 | +mm_inform_authrole(char *role) | ||
214 | +{ | ||
215 | + struct sshbuf *m; | ||
216 | + int r; | ||
217 | + | ||
218 | + debug3("%s entering", __func__); | ||
219 | + | ||
220 | + if ((m = sshbuf_new()) == NULL) | ||
221 | + fatal("%s: sshbuf_new failed", __func__); | ||
222 | + if ((r = sshbuf_put_cstring(m, role ? role : "")) != 0) | ||
223 | + fatal("%s: buffer error: %s", __func__, ssh_err(r)); | ||
224 | + | ||
225 | + mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_AUTHROLE, m); | ||
226 | + | ||
227 | + sshbuf_free(m); | ||
228 | +} | ||
229 | + | ||
230 | /* Do the password authentication */ | ||
231 | int | ||
232 | mm_auth_password(struct ssh *ssh, char *password) | ||
233 | diff --git a/monitor_wrap.h b/monitor_wrap.h | ||
234 | index 69164a8c0..3d0e32d48 100644 | ||
235 | --- a/monitor_wrap.h | ||
236 | +++ b/monitor_wrap.h | ||
237 | @@ -44,7 +44,8 @@ int mm_is_monitor(void); | ||
238 | DH *mm_choose_dh(int, int, int); | ||
239 | int mm_sshkey_sign(struct ssh *, struct sshkey *, u_char **, size_t *, | ||
240 | const u_char *, size_t, const char *, u_int compat); | ||
241 | -void mm_inform_authserv(char *, char *); | ||
242 | +void mm_inform_authserv(char *, char *, char *); | ||
243 | +void mm_inform_authrole(char *); | ||
244 | struct passwd *mm_getpwnamallow(struct ssh *, const char *); | ||
245 | char *mm_auth2_read_banner(void); | ||
246 | int mm_auth_password(struct ssh *, char *); | ||
247 | diff --git a/openbsd-compat/port-linux.c b/openbsd-compat/port-linux.c | ||
248 | index 622988822..3e6e07670 100644 | ||
249 | --- a/openbsd-compat/port-linux.c | ||
250 | +++ b/openbsd-compat/port-linux.c | ||
251 | @@ -56,7 +56,7 @@ ssh_selinux_enabled(void) | ||
252 | |||
253 | /* Return the default security context for the given username */ | ||
254 | static security_context_t | ||
255 | -ssh_selinux_getctxbyname(char *pwname) | ||
256 | +ssh_selinux_getctxbyname(char *pwname, const char *role) | ||
257 | { | ||
258 | security_context_t sc = NULL; | ||
259 | char *sename = NULL, *lvl = NULL; | ||
260 | @@ -71,9 +71,16 @@ ssh_selinux_getctxbyname(char *pwname) | ||
261 | #endif | ||
262 | |||
263 | #ifdef HAVE_GET_DEFAULT_CONTEXT_WITH_LEVEL | ||
264 | - r = get_default_context_with_level(sename, lvl, NULL, &sc); | ||
265 | + if (role != NULL && role[0]) | ||
266 | + r = get_default_context_with_rolelevel(sename, role, lvl, NULL, | ||
267 | + &sc); | ||
268 | + else | ||
269 | + r = get_default_context_with_level(sename, lvl, NULL, &sc); | ||
270 | #else | ||
271 | - r = get_default_context(sename, NULL, &sc); | ||
272 | + if (role != NULL && role[0]) | ||
273 | + r = get_default_context_with_role(sename, role, NULL, &sc); | ||
274 | + else | ||
275 | + r = get_default_context(sename, NULL, &sc); | ||
276 | #endif | ||
277 | |||
278 | if (r != 0) { | ||
279 | @@ -103,7 +110,7 @@ ssh_selinux_getctxbyname(char *pwname) | ||
280 | |||
281 | /* Set the execution context to the default for the specified user */ | ||
282 | void | ||
283 | -ssh_selinux_setup_exec_context(char *pwname) | ||
284 | +ssh_selinux_setup_exec_context(char *pwname, const char *role) | ||
285 | { | ||
286 | security_context_t user_ctx = NULL; | ||
287 | |||
288 | @@ -112,7 +119,7 @@ ssh_selinux_setup_exec_context(char *pwname) | ||
289 | |||
290 | debug3("%s: setting execution context", __func__); | ||
291 | |||
292 | - user_ctx = ssh_selinux_getctxbyname(pwname); | ||
293 | + user_ctx = ssh_selinux_getctxbyname(pwname, role); | ||
294 | if (setexeccon(user_ctx) != 0) { | ||
295 | switch (security_getenforce()) { | ||
296 | case -1: | ||
297 | @@ -134,7 +141,7 @@ ssh_selinux_setup_exec_context(char *pwname) | ||
298 | |||
299 | /* Set the TTY context for the specified user */ | ||
300 | void | ||
301 | -ssh_selinux_setup_pty(char *pwname, const char *tty) | ||
302 | +ssh_selinux_setup_pty(char *pwname, const char *tty, const char *role) | ||
303 | { | ||
304 | security_context_t new_tty_ctx = NULL; | ||
305 | security_context_t user_ctx = NULL; | ||
306 | @@ -146,7 +153,7 @@ ssh_selinux_setup_pty(char *pwname, const char *tty) | ||
307 | |||
308 | debug3("%s: setting TTY context on %s", __func__, tty); | ||
309 | |||
310 | - user_ctx = ssh_selinux_getctxbyname(pwname); | ||
311 | + user_ctx = ssh_selinux_getctxbyname(pwname, role); | ||
312 | |||
313 | /* XXX: should these calls fatal() upon failure in enforcing mode? */ | ||
314 | |||
315 | diff --git a/openbsd-compat/port-linux.h b/openbsd-compat/port-linux.h | ||
316 | index 3c22a854d..c88129428 100644 | ||
317 | --- a/openbsd-compat/port-linux.h | ||
318 | +++ b/openbsd-compat/port-linux.h | ||
319 | @@ -19,8 +19,8 @@ | ||
320 | |||
321 | #ifdef WITH_SELINUX | ||
322 | int ssh_selinux_enabled(void); | ||
323 | -void ssh_selinux_setup_pty(char *, const char *); | ||
324 | -void ssh_selinux_setup_exec_context(char *); | ||
325 | +void ssh_selinux_setup_pty(char *, const char *, const char *); | ||
326 | +void ssh_selinux_setup_exec_context(char *, const char *); | ||
327 | void ssh_selinux_change_context(const char *); | ||
328 | void ssh_selinux_setfscreatecon(const char *); | ||
329 | #endif | ||
330 | diff --git a/platform.c b/platform.c | ||
331 | index 41acc9370..35654ea51 100644 | ||
332 | --- a/platform.c | ||
333 | +++ b/platform.c | ||
334 | @@ -142,7 +142,7 @@ platform_setusercontext(struct passwd *pw) | ||
335 | * called if sshd is running as root. | ||
336 | */ | ||
337 | void | ||
338 | -platform_setusercontext_post_groups(struct passwd *pw) | ||
339 | +platform_setusercontext_post_groups(struct passwd *pw, const char *role) | ||
340 | { | ||
341 | #if !defined(HAVE_LOGIN_CAP) && defined(USE_PAM) | ||
342 | /* | ||
343 | @@ -183,7 +183,7 @@ platform_setusercontext_post_groups(struct passwd *pw) | ||
344 | } | ||
345 | #endif /* HAVE_SETPCRED */ | ||
346 | #ifdef WITH_SELINUX | ||
347 | - ssh_selinux_setup_exec_context(pw->pw_name); | ||
348 | + ssh_selinux_setup_exec_context(pw->pw_name, role); | ||
349 | #endif | ||
350 | } | ||
351 | |||
352 | diff --git a/platform.h b/platform.h | ||
353 | index ea4f9c584..60d72ffe7 100644 | ||
354 | --- a/platform.h | ||
355 | +++ b/platform.h | ||
356 | @@ -25,7 +25,7 @@ void platform_post_fork_parent(pid_t child_pid); | ||
357 | void platform_post_fork_child(void); | ||
358 | int platform_privileged_uidswap(void); | ||
359 | void platform_setusercontext(struct passwd *); | ||
360 | -void platform_setusercontext_post_groups(struct passwd *); | ||
361 | +void platform_setusercontext_post_groups(struct passwd *, const char *); | ||
362 | char *platform_get_krb5_client(const char *); | ||
363 | char *platform_krb5_get_principal_name(const char *); | ||
364 | int platform_sys_dir_uid(uid_t); | ||
365 | diff --git a/session.c b/session.c | ||
366 | index ac3d9d19d..d87ea4d44 100644 | ||
367 | --- a/session.c | ||
368 | +++ b/session.c | ||
369 | @@ -1356,7 +1356,7 @@ safely_chroot(const char *path, uid_t uid) | ||
370 | |||
371 | /* Set login name, uid, gid, and groups. */ | ||
372 | void | ||
373 | -do_setusercontext(struct passwd *pw) | ||
374 | +do_setusercontext(struct passwd *pw, const char *role) | ||
375 | { | ||
376 | char uidstr[32], *chroot_path, *tmp; | ||
377 | |||
378 | @@ -1384,7 +1384,7 @@ do_setusercontext(struct passwd *pw) | ||
379 | endgrent(); | ||
380 | #endif | ||
381 | |||
382 | - platform_setusercontext_post_groups(pw); | ||
383 | + platform_setusercontext_post_groups(pw, role); | ||
384 | |||
385 | if (!in_chroot && options.chroot_directory != NULL && | ||
386 | strcasecmp(options.chroot_directory, "none") != 0) { | ||
387 | @@ -1525,7 +1525,7 @@ do_child(struct ssh *ssh, Session *s, const char *command) | ||
388 | |||
389 | /* Force a password change */ | ||
390 | if (s->authctxt->force_pwchange) { | ||
391 | - do_setusercontext(pw); | ||
392 | + do_setusercontext(pw, s->authctxt->role); | ||
393 | child_close_fds(ssh); | ||
394 | do_pwchange(s); | ||
395 | exit(1); | ||
396 | @@ -1543,7 +1543,7 @@ do_child(struct ssh *ssh, Session *s, const char *command) | ||
397 | /* When PAM is enabled we rely on it to do the nologin check */ | ||
398 | if (!options.use_pam) | ||
399 | do_nologin(pw); | ||
400 | - do_setusercontext(pw); | ||
401 | + do_setusercontext(pw, s->authctxt->role); | ||
402 | /* | ||
403 | * PAM session modules in do_setusercontext may have | ||
404 | * generated messages, so if this in an interactive | ||
405 | @@ -1942,7 +1942,7 @@ session_pty_req(struct ssh *ssh, Session *s) | ||
406 | sshpkt_fatal(ssh, r, "%s: parse packet", __func__); | ||
407 | |||
408 | if (!use_privsep) | ||
409 | - pty_setowner(s->pw, s->tty); | ||
410 | + pty_setowner(s->pw, s->tty, s->authctxt->role); | ||
411 | |||
412 | /* Set window size from the packet. */ | ||
413 | pty_change_window_size(s->ptyfd, s->row, s->col, s->xpixel, s->ypixel); | ||
414 | diff --git a/session.h b/session.h | ||
415 | index ce59dabd9..675c91146 100644 | ||
416 | --- a/session.h | ||
417 | +++ b/session.h | ||
418 | @@ -77,7 +77,7 @@ void session_pty_cleanup2(Session *); | ||
419 | Session *session_new(void); | ||
420 | Session *session_by_tty(char *); | ||
421 | void session_close(struct ssh *, Session *); | ||
422 | -void do_setusercontext(struct passwd *); | ||
423 | +void do_setusercontext(struct passwd *, const char *); | ||
424 | |||
425 | const char *session_get_remote_name_or_ip(struct ssh *, u_int, int); | ||
426 | |||
427 | diff --git a/sshd.c b/sshd.c | ||
428 | index 46870d3b5..e3e96426e 100644 | ||
429 | --- a/sshd.c | ||
430 | +++ b/sshd.c | ||
431 | @@ -594,7 +594,7 @@ privsep_postauth(struct ssh *ssh, Authctxt *authctxt) | ||
432 | reseed_prngs(); | ||
433 | |||
434 | /* Drop privileges */ | ||
435 | - do_setusercontext(authctxt->pw); | ||
436 | + do_setusercontext(authctxt->pw, authctxt->role); | ||
437 | |||
438 | skip: | ||
439 | /* It is safe now to apply the key state */ | ||
440 | diff --git a/sshpty.c b/sshpty.c | ||
441 | index 4da84d05f..676ade50e 100644 | ||
442 | --- a/sshpty.c | ||
443 | +++ b/sshpty.c | ||
444 | @@ -162,7 +162,7 @@ pty_change_window_size(int ptyfd, u_int row, u_int col, | ||
445 | } | ||
446 | |||
447 | void | ||
448 | -pty_setowner(struct passwd *pw, const char *tty) | ||
449 | +pty_setowner(struct passwd *pw, const char *tty, const char *role) | ||
450 | { | ||
451 | struct group *grp; | ||
452 | gid_t gid; | ||
453 | @@ -184,7 +184,7 @@ pty_setowner(struct passwd *pw, const char *tty) | ||
454 | strerror(errno)); | ||
455 | |||
456 | #ifdef WITH_SELINUX | ||
457 | - ssh_selinux_setup_pty(pw->pw_name, tty); | ||
458 | + ssh_selinux_setup_pty(pw->pw_name, tty, role); | ||
459 | #endif | ||
460 | |||
461 | if (st.st_uid != pw->pw_uid || st.st_gid != gid) { | ||
462 | diff --git a/sshpty.h b/sshpty.h | ||
463 | index 9ec7e9a15..de7e000ae 100644 | ||
464 | --- a/sshpty.h | ||
465 | +++ b/sshpty.h | ||
466 | @@ -24,5 +24,5 @@ int pty_allocate(int *, int *, char *, size_t); | ||
467 | void pty_release(const char *); | ||
468 | void pty_make_controlling_tty(int *, const char *); | ||
469 | void pty_change_window_size(int, u_int, u_int, u_int, u_int); | ||
470 | -void pty_setowner(struct passwd *, const char *); | ||
471 | +void pty_setowner(struct passwd *, const char *, const char *); | ||
472 | void disconnect_controlling_tty(void); | ||
diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 000000000..7ca779801 --- /dev/null +++ b/debian/patches/series | |||
@@ -0,0 +1,29 @@ | |||
1 | gssapi.patch | ||
2 | restore-tcp-wrappers.patch | ||
3 | selinux-role.patch | ||
4 | ssh-vulnkey-compat.patch | ||
5 | keepalive-extensions.patch | ||
6 | syslog-level-silent.patch | ||
7 | user-group-modes.patch | ||
8 | scp-quoting.patch | ||
9 | shell-path.patch | ||
10 | dnssec-sshfp.patch | ||
11 | mention-ssh-keygen-on-keychange.patch | ||
12 | package-versioning.patch | ||
13 | debian-banner.patch | ||
14 | authorized-keys-man-symlink.patch | ||
15 | openbsd-docs.patch | ||
16 | ssh-argv0.patch | ||
17 | doc-hash-tab-completion.patch | ||
18 | ssh-agent-setgid.patch | ||
19 | no-openssl-version-status.patch | ||
20 | gnome-ssh-askpass2-icon.patch | ||
21 | systemd-readiness.patch | ||
22 | debian-config.patch | ||
23 | restore-authorized_keys2.patch | ||
24 | seccomp-s390-flock-ipc.patch | ||
25 | seccomp-s390-ioctl-ep11-crypto.patch | ||
26 | fix-interop-tests.patch | ||
27 | conch-old-privkey-format.patch | ||
28 | revert-ipqos-defaults.patch | ||
29 | fix-utimensat-test.patch | ||
diff --git a/debian/patches/shell-path.patch b/debian/patches/shell-path.patch new file mode 100644 index 000000000..2224eeead --- /dev/null +++ b/debian/patches/shell-path.patch | |||
@@ -0,0 +1,39 @@ | |||
1 | From b019e32a0ee7a79c0a08cb1199229d03b16934a7 Mon Sep 17 00:00:00 2001 | ||
2 | From: Colin Watson <cjwatson@debian.org> | ||
3 | Date: Sun, 9 Feb 2014 16:10:00 +0000 | ||
4 | Subject: Look for $SHELL on the path for ProxyCommand/LocalCommand | ||
5 | |||
6 | There's some debate on the upstream bug about whether POSIX requires this. | ||
7 | I (Colin Watson) agree with Vincent and think it does. | ||
8 | |||
9 | Bug: https://bugzilla.mindrot.org/show_bug.cgi?id=1494 | ||
10 | Bug-Debian: http://bugs.debian.org/492728 | ||
11 | Last-Update: 2013-09-14 | ||
12 | |||
13 | Patch-Name: shell-path.patch | ||
14 | --- | ||
15 | sshconnect.c | 4 ++-- | ||
16 | 1 file changed, 2 insertions(+), 2 deletions(-) | ||
17 | |||
18 | diff --git a/sshconnect.c b/sshconnect.c | ||
19 | index fdcdcd855..103d84e38 100644 | ||
20 | --- a/sshconnect.c | ||
21 | +++ b/sshconnect.c | ||
22 | @@ -257,7 +257,7 @@ ssh_proxy_connect(struct ssh *ssh, const char *host, u_short port, | ||
23 | /* Execute the proxy command. Note that we gave up any | ||
24 | extra privileges above. */ | ||
25 | signal(SIGPIPE, SIG_DFL); | ||
26 | - execv(argv[0], argv); | ||
27 | + execvp(argv[0], argv); | ||
28 | perror(argv[0]); | ||
29 | exit(1); | ||
30 | } | ||
31 | @@ -1382,7 +1382,7 @@ ssh_local_cmd(const char *args) | ||
32 | if (pid == 0) { | ||
33 | signal(SIGPIPE, SIG_DFL); | ||
34 | debug3("Executing %s -c \"%s\"", shell, args); | ||
35 | - execl(shell, shell, "-c", args, (char *)NULL); | ||
36 | + execlp(shell, shell, "-c", args, (char *)NULL); | ||
37 | error("Couldn't execute %s -c \"%s\": %s", | ||
38 | shell, args, strerror(errno)); | ||
39 | _exit(1); | ||
diff --git a/debian/patches/ssh-agent-setgid.patch b/debian/patches/ssh-agent-setgid.patch new file mode 100644 index 000000000..e94e48a03 --- /dev/null +++ b/debian/patches/ssh-agent-setgid.patch | |||
@@ -0,0 +1,40 @@ | |||
1 | From 9e040aefaefa40bcbe5dcdc0f9f03555cf8fe2d0 Mon Sep 17 00:00:00 2001 | ||
2 | From: Colin Watson <cjwatson@debian.org> | ||
3 | Date: Sun, 9 Feb 2014 16:10:13 +0000 | ||
4 | Subject: Document consequences of ssh-agent being setgid in ssh-agent(1) | ||
5 | |||
6 | Bug-Debian: http://bugs.debian.org/711623 | ||
7 | Forwarded: no | ||
8 | Last-Update: 2013-06-08 | ||
9 | |||
10 | Patch-Name: ssh-agent-setgid.patch | ||
11 | --- | ||
12 | ssh-agent.1 | 15 +++++++++++++++ | ||
13 | 1 file changed, 15 insertions(+) | ||
14 | |||
15 | diff --git a/ssh-agent.1 b/ssh-agent.1 | ||
16 | index 83b2b41c8..7230704a3 100644 | ||
17 | --- a/ssh-agent.1 | ||
18 | +++ b/ssh-agent.1 | ||
19 | @@ -206,6 +206,21 @@ environment variable holds the agent's process ID. | ||
20 | .Pp | ||
21 | The agent exits automatically when the command given on the command | ||
22 | line terminates. | ||
23 | +.Pp | ||
24 | +In Debian, | ||
25 | +.Nm | ||
26 | +is installed with the set-group-id bit set, to prevent | ||
27 | +.Xr ptrace 2 | ||
28 | +attacks retrieving private key material. | ||
29 | +This has the side-effect of causing the run-time linker to remove certain | ||
30 | +environment variables which might have security implications for set-id | ||
31 | +programs, including | ||
32 | +.Ev LD_PRELOAD , | ||
33 | +.Ev LD_LIBRARY_PATH , | ||
34 | +and | ||
35 | +.Ev TMPDIR . | ||
36 | +If you need to set any of these environment variables, you will need to do | ||
37 | +so in the program executed by ssh-agent. | ||
38 | .Sh FILES | ||
39 | .Bl -tag -width Ds | ||
40 | .It Pa $TMPDIR/ssh-XXXXXXXXXX/agent.<ppid> | ||
diff --git a/debian/patches/ssh-argv0.patch b/debian/patches/ssh-argv0.patch new file mode 100644 index 000000000..a5aa9259a --- /dev/null +++ b/debian/patches/ssh-argv0.patch | |||
@@ -0,0 +1,31 @@ | |||
1 | From 23b4cc85184891ad61bb98045629400e48d946dd Mon Sep 17 00:00:00 2001 | ||
2 | From: Colin Watson <cjwatson@debian.org> | ||
3 | Date: Sun, 9 Feb 2014 16:10:10 +0000 | ||
4 | Subject: ssh(1): Refer to ssh-argv0(1) | ||
5 | |||
6 | Old versions of OpenSSH (up to 2.5 or thereabouts) allowed creating symlinks | ||
7 | to ssh with the name of the host you want to connect to. Debian ships an | ||
8 | ssh-argv0 script restoring this feature; this patch refers to its manual | ||
9 | page from ssh(1). | ||
10 | |||
11 | Bug-Debian: http://bugs.debian.org/111341 | ||
12 | Forwarded: not-needed | ||
13 | Last-Update: 2013-09-14 | ||
14 | |||
15 | Patch-Name: ssh-argv0.patch | ||
16 | --- | ||
17 | ssh.1 | 1 + | ||
18 | 1 file changed, 1 insertion(+) | ||
19 | |||
20 | diff --git a/ssh.1 b/ssh.1 | ||
21 | index e4aeae7b4..8d2b08a29 100644 | ||
22 | --- a/ssh.1 | ||
23 | +++ b/ssh.1 | ||
24 | @@ -1584,6 +1584,7 @@ if an error occurred. | ||
25 | .Xr sftp 1 , | ||
26 | .Xr ssh-add 1 , | ||
27 | .Xr ssh-agent 1 , | ||
28 | +.Xr ssh-argv0 1 , | ||
29 | .Xr ssh-keygen 1 , | ||
30 | .Xr ssh-keyscan 1 , | ||
31 | .Xr tun 4 , | ||
diff --git a/debian/patches/ssh-vulnkey-compat.patch b/debian/patches/ssh-vulnkey-compat.patch new file mode 100644 index 000000000..8adc301fc --- /dev/null +++ b/debian/patches/ssh-vulnkey-compat.patch | |||
@@ -0,0 +1,42 @@ | |||
1 | From 0138f331a73d692f4543477ce7f64f9ede7d6b08 Mon Sep 17 00:00:00 2001 | ||
2 | From: Colin Watson <cjwatson@ubuntu.com> | ||
3 | Date: Sun, 9 Feb 2014 16:09:50 +0000 | ||
4 | Subject: Accept obsolete ssh-vulnkey configuration options | ||
5 | |||
6 | These options were used as part of Debian's response to CVE-2008-0166. | ||
7 | Nearly six years later, we no longer need to continue carrying the bulk | ||
8 | of that patch, but we do need to avoid failing when the associated | ||
9 | configuration options are still present. | ||
10 | |||
11 | Last-Update: 2014-02-09 | ||
12 | |||
13 | Patch-Name: ssh-vulnkey-compat.patch | ||
14 | --- | ||
15 | readconf.c | 1 + | ||
16 | servconf.c | 1 + | ||
17 | 2 files changed, 2 insertions(+) | ||
18 | |||
19 | diff --git a/readconf.c b/readconf.c | ||
20 | index 4d699e5f1..29f3bd98d 100644 | ||
21 | --- a/readconf.c | ||
22 | +++ b/readconf.c | ||
23 | @@ -192,6 +192,7 @@ static struct { | ||
24 | { "fallbacktorsh", oDeprecated }, | ||
25 | { "globalknownhostsfile2", oDeprecated }, | ||
26 | { "rhostsauthentication", oDeprecated }, | ||
27 | + { "useblacklistedkeys", oDeprecated }, | ||
28 | { "userknownhostsfile2", oDeprecated }, | ||
29 | { "useroaming", oDeprecated }, | ||
30 | { "usersh", oDeprecated }, | ||
31 | diff --git a/servconf.c b/servconf.c | ||
32 | index ffdad31e7..c01e0690e 100644 | ||
33 | --- a/servconf.c | ||
34 | +++ b/servconf.c | ||
35 | @@ -621,6 +621,7 @@ static struct { | ||
36 | { "x11uselocalhost", sX11UseLocalhost, SSHCFG_ALL }, | ||
37 | { "xauthlocation", sXAuthLocation, SSHCFG_GLOBAL }, | ||
38 | { "strictmodes", sStrictModes, SSHCFG_GLOBAL }, | ||
39 | + { "permitblacklistedkeys", sDeprecated, SSHCFG_GLOBAL }, | ||
40 | { "permitemptypasswords", sEmptyPasswd, SSHCFG_ALL }, | ||
41 | { "permituserenvironment", sPermitUserEnvironment, SSHCFG_GLOBAL }, | ||
42 | { "uselogin", sDeprecated, SSHCFG_GLOBAL }, | ||
diff --git a/debian/patches/syslog-level-silent.patch b/debian/patches/syslog-level-silent.patch new file mode 100644 index 000000000..aa7968090 --- /dev/null +++ b/debian/patches/syslog-level-silent.patch | |||
@@ -0,0 +1,47 @@ | |||
1 | From 0646a0cd5ea893cf822113d4f10c501540c18e40 Mon Sep 17 00:00:00 2001 | ||
2 | From: Jonathan David Amery <jdamery@ysolde.ucam.org> | ||
3 | Date: Sun, 9 Feb 2014 16:09:54 +0000 | ||
4 | Subject: "LogLevel SILENT" compatibility | ||
5 | |||
6 | "LogLevel SILENT" (-qq) was introduced in Debian openssh 1:3.0.1p1-1 to | ||
7 | match the behaviour of non-free SSH, in which -q does not suppress fatal | ||
8 | errors. However, this was unintentionally broken in 1:4.6p1-2 and nobody | ||
9 | complained, so we've dropped most of it. The parts that remain are basic | ||
10 | configuration file compatibility, and an adjustment to "Pseudo-terminal will | ||
11 | not be allocated ..." which should be split out into a separate patch. | ||
12 | |||
13 | Author: Matthew Vernon <matthew@debian.org> | ||
14 | Author: Colin Watson <cjwatson@debian.org> | ||
15 | Last-Update: 2013-09-14 | ||
16 | |||
17 | Patch-Name: syslog-level-silent.patch | ||
18 | --- | ||
19 | log.c | 1 + | ||
20 | ssh.c | 2 +- | ||
21 | 2 files changed, 2 insertions(+), 1 deletion(-) | ||
22 | |||
23 | diff --git a/log.c b/log.c | ||
24 | index d9c2d136c..1749af6d1 100644 | ||
25 | --- a/log.c | ||
26 | +++ b/log.c | ||
27 | @@ -93,6 +93,7 @@ static struct { | ||
28 | LogLevel val; | ||
29 | } log_levels[] = | ||
30 | { | ||
31 | + { "SILENT", SYSLOG_LEVEL_QUIET }, /* compatibility */ | ||
32 | { "QUIET", SYSLOG_LEVEL_QUIET }, | ||
33 | { "FATAL", SYSLOG_LEVEL_FATAL }, | ||
34 | { "ERROR", SYSLOG_LEVEL_ERROR }, | ||
35 | diff --git a/ssh.c b/ssh.c | ||
36 | index 42be7d88f..86f143341 100644 | ||
37 | --- a/ssh.c | ||
38 | +++ b/ssh.c | ||
39 | @@ -1265,7 +1265,7 @@ main(int ac, char **av) | ||
40 | /* Do not allocate a tty if stdin is not a tty. */ | ||
41 | if ((!isatty(fileno(stdin)) || stdin_null_flag) && | ||
42 | options.request_tty != REQUEST_TTY_FORCE) { | ||
43 | - if (tty_flag) | ||
44 | + if (tty_flag && options.log_level != SYSLOG_LEVEL_QUIET) | ||
45 | logit("Pseudo-terminal will not be allocated because " | ||
46 | "stdin is not a terminal."); | ||
47 | tty_flag = 0; | ||
diff --git a/debian/patches/systemd-readiness.patch b/debian/patches/systemd-readiness.patch new file mode 100644 index 000000000..51c7e32de --- /dev/null +++ b/debian/patches/systemd-readiness.patch | |||
@@ -0,0 +1,84 @@ | |||
1 | From a88f67584ef5889d95c04b0294e92c11ed4904cd Mon Sep 17 00:00:00 2001 | ||
2 | From: Michael Biebl <biebl@debian.org> | ||
3 | Date: Mon, 21 Dec 2015 16:08:47 +0000 | ||
4 | Subject: Add systemd readiness notification support | ||
5 | |||
6 | Bug-Debian: https://bugs.debian.org/778913 | ||
7 | Forwarded: no | ||
8 | Last-Update: 2017-08-22 | ||
9 | |||
10 | Patch-Name: systemd-readiness.patch | ||
11 | --- | ||
12 | configure.ac | 24 ++++++++++++++++++++++++ | ||
13 | sshd.c | 9 +++++++++ | ||
14 | 2 files changed, 33 insertions(+) | ||
15 | |||
16 | diff --git a/configure.ac b/configure.ac | ||
17 | index ce16e7758..de140f578 100644 | ||
18 | --- a/configure.ac | ||
19 | +++ b/configure.ac | ||
20 | @@ -4526,6 +4526,29 @@ AC_ARG_WITH([kerberos5], | ||
21 | AC_SUBST([GSSLIBS]) | ||
22 | AC_SUBST([K5LIBS]) | ||
23 | |||
24 | +# Check whether user wants systemd support | ||
25 | +SYSTEMD_MSG="no" | ||
26 | +AC_ARG_WITH(systemd, | ||
27 | + [ --with-systemd Enable systemd support], | ||
28 | + [ if test "x$withval" != "xno" ; then | ||
29 | + AC_PATH_TOOL([PKGCONFIG], [pkg-config], [no]) | ||
30 | + if test "$PKGCONFIG" != "no"; then | ||
31 | + AC_MSG_CHECKING([for libsystemd]) | ||
32 | + if $PKGCONFIG --exists libsystemd; then | ||
33 | + SYSTEMD_CFLAGS=`$PKGCONFIG --cflags libsystemd` | ||
34 | + SYSTEMD_LIBS=`$PKGCONFIG --libs libsystemd` | ||
35 | + CPPFLAGS="$CPPFLAGS $SYSTEMD_CFLAGS" | ||
36 | + SSHDLIBS="$SSHDLIBS $SYSTEMD_LIBS" | ||
37 | + AC_MSG_RESULT([yes]) | ||
38 | + AC_DEFINE(HAVE_SYSTEMD, 1, [Define if you want systemd support.]) | ||
39 | + SYSTEMD_MSG="yes" | ||
40 | + else | ||
41 | + AC_MSG_RESULT([no]) | ||
42 | + fi | ||
43 | + fi | ||
44 | + fi ] | ||
45 | +) | ||
46 | + | ||
47 | # Looking for programs, paths and files | ||
48 | |||
49 | PRIVSEP_PATH=/var/empty | ||
50 | @@ -5332,6 +5355,7 @@ echo " libldns support: $LDNS_MSG" | ||
51 | echo " Solaris process contract support: $SPC_MSG" | ||
52 | echo " Solaris project support: $SP_MSG" | ||
53 | echo " Solaris privilege support: $SPP_MSG" | ||
54 | +echo " systemd support: $SYSTEMD_MSG" | ||
55 | echo " IP address in \$DISPLAY hack: $DISPLAY_HACK_MSG" | ||
56 | echo " Translate v4 in v6 hack: $IPV4_IN6_HACK_MSG" | ||
57 | echo " BSD Auth support: $BSD_AUTH_MSG" | ||
58 | diff --git a/sshd.c b/sshd.c | ||
59 | index 1e7ece588..48162b629 100644 | ||
60 | --- a/sshd.c | ||
61 | +++ b/sshd.c | ||
62 | @@ -85,6 +85,10 @@ | ||
63 | #include <prot.h> | ||
64 | #endif | ||
65 | |||
66 | +#ifdef HAVE_SYSTEMD | ||
67 | +#include <systemd/sd-daemon.h> | ||
68 | +#endif | ||
69 | + | ||
70 | #include "xmalloc.h" | ||
71 | #include "ssh.h" | ||
72 | #include "ssh2.h" | ||
73 | @@ -1946,6 +1950,11 @@ main(int ac, char **av) | ||
74 | } | ||
75 | } | ||
76 | |||
77 | +#ifdef HAVE_SYSTEMD | ||
78 | + /* Signal systemd that we are ready to accept connections */ | ||
79 | + sd_notify(0, "READY=1"); | ||
80 | +#endif | ||
81 | + | ||
82 | /* Accept a connection and return in a forked child */ | ||
83 | server_accept_loop(&sock_in, &sock_out, | ||
84 | &newsock, config_s); | ||
diff --git a/debian/patches/user-group-modes.patch b/debian/patches/user-group-modes.patch new file mode 100644 index 000000000..899c60123 --- /dev/null +++ b/debian/patches/user-group-modes.patch | |||
@@ -0,0 +1,210 @@ | |||
1 | From e04a43bd5798ba43d910493d179438845e96f631 Mon Sep 17 00:00:00 2001 | ||
2 | From: Colin Watson <cjwatson@debian.org> | ||
3 | Date: Sun, 9 Feb 2014 16:09:58 +0000 | ||
4 | Subject: Allow harmless group-writability | ||
5 | |||
6 | Allow secure files (~/.ssh/config, ~/.ssh/authorized_keys, etc.) to be | ||
7 | group-writable, provided that the group in question contains only the file's | ||
8 | owner. Rejected upstream for IMO incorrect reasons (e.g. a misunderstanding | ||
9 | about the contents of gr->gr_mem). Given that per-user groups and umask 002 | ||
10 | are the default setup in Debian (for good reasons - this makes operating in | ||
11 | setgid directories with other groups much easier), we need to permit this by | ||
12 | default. | ||
13 | |||
14 | Bug: https://bugzilla.mindrot.org/show_bug.cgi?id=1060 | ||
15 | Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=314347 | ||
16 | Last-Update: 2019-06-05 | ||
17 | |||
18 | Patch-Name: user-group-modes.patch | ||
19 | --- | ||
20 | auth-rhosts.c | 6 ++---- | ||
21 | auth.c | 3 +-- | ||
22 | misc.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++----- | ||
23 | misc.h | 2 ++ | ||
24 | readconf.c | 3 +-- | ||
25 | ssh.1 | 2 ++ | ||
26 | ssh_config.5 | 2 ++ | ||
27 | 7 files changed, 63 insertions(+), 13 deletions(-) | ||
28 | |||
29 | diff --git a/auth-rhosts.c b/auth-rhosts.c | ||
30 | index 57296e1f6..546aa0495 100644 | ||
31 | --- a/auth-rhosts.c | ||
32 | +++ b/auth-rhosts.c | ||
33 | @@ -261,8 +261,7 @@ auth_rhosts2(struct passwd *pw, const char *client_user, const char *hostname, | ||
34 | return 0; | ||
35 | } | ||
36 | if (options.strict_modes && | ||
37 | - ((st.st_uid != 0 && st.st_uid != pw->pw_uid) || | ||
38 | - (st.st_mode & 022) != 0)) { | ||
39 | + !secure_permissions(&st, pw->pw_uid)) { | ||
40 | logit("Rhosts authentication refused for %.100s: " | ||
41 | "bad ownership or modes for home directory.", pw->pw_name); | ||
42 | auth_debug_add("Rhosts authentication refused for %.100s: " | ||
43 | @@ -288,8 +287,7 @@ auth_rhosts2(struct passwd *pw, const char *client_user, const char *hostname, | ||
44 | * allowing access to their account by anyone. | ||
45 | */ | ||
46 | if (options.strict_modes && | ||
47 | - ((st.st_uid != 0 && st.st_uid != pw->pw_uid) || | ||
48 | - (st.st_mode & 022) != 0)) { | ||
49 | + !secure_permissions(&st, pw->pw_uid)) { | ||
50 | logit("Rhosts authentication refused for %.100s: bad modes for %.200s", | ||
51 | pw->pw_name, buf); | ||
52 | auth_debug_add("Bad file modes for %.200s", buf); | ||
53 | diff --git a/auth.c b/auth.c | ||
54 | index f7a23afba..8ffd77662 100644 | ||
55 | --- a/auth.c | ||
56 | +++ b/auth.c | ||
57 | @@ -473,8 +473,7 @@ check_key_in_hostfiles(struct passwd *pw, struct sshkey *key, const char *host, | ||
58 | user_hostfile = tilde_expand_filename(userfile, pw->pw_uid); | ||
59 | if (options.strict_modes && | ||
60 | (stat(user_hostfile, &st) == 0) && | ||
61 | - ((st.st_uid != 0 && st.st_uid != pw->pw_uid) || | ||
62 | - (st.st_mode & 022) != 0)) { | ||
63 | + !secure_permissions(&st, pw->pw_uid)) { | ||
64 | logit("Authentication refused for %.100s: " | ||
65 | "bad owner or modes for %.200s", | ||
66 | pw->pw_name, user_hostfile); | ||
67 | diff --git a/misc.c b/misc.c | ||
68 | index 009e02bc5..634b5060a 100644 | ||
69 | --- a/misc.c | ||
70 | +++ b/misc.c | ||
71 | @@ -59,8 +59,9 @@ | ||
72 | #include <netdb.h> | ||
73 | #ifdef HAVE_PATHS_H | ||
74 | # include <paths.h> | ||
75 | -#include <pwd.h> | ||
76 | #endif | ||
77 | +#include <pwd.h> | ||
78 | +#include <grp.h> | ||
79 | #ifdef SSH_TUN_OPENBSD | ||
80 | #include <net/if.h> | ||
81 | #endif | ||
82 | @@ -1103,6 +1104,55 @@ percent_expand(const char *string, ...) | ||
83 | #undef EXPAND_MAX_KEYS | ||
84 | } | ||
85 | |||
86 | +int | ||
87 | +secure_permissions(struct stat *st, uid_t uid) | ||
88 | +{ | ||
89 | + if (!platform_sys_dir_uid(st->st_uid) && st->st_uid != uid) | ||
90 | + return 0; | ||
91 | + if ((st->st_mode & 002) != 0) | ||
92 | + return 0; | ||
93 | + if ((st->st_mode & 020) != 0) { | ||
94 | + /* If the file is group-writable, the group in question must | ||
95 | + * have exactly one member, namely the file's owner. | ||
96 | + * (Zero-member groups are typically used by setgid | ||
97 | + * binaries, and are unlikely to be suitable.) | ||
98 | + */ | ||
99 | + struct passwd *pw; | ||
100 | + struct group *gr; | ||
101 | + int members = 0; | ||
102 | + | ||
103 | + gr = getgrgid(st->st_gid); | ||
104 | + if (!gr) | ||
105 | + return 0; | ||
106 | + | ||
107 | + /* Check primary group memberships. */ | ||
108 | + while ((pw = getpwent()) != NULL) { | ||
109 | + if (pw->pw_gid == gr->gr_gid) { | ||
110 | + ++members; | ||
111 | + if (pw->pw_uid != uid) | ||
112 | + return 0; | ||
113 | + } | ||
114 | + } | ||
115 | + endpwent(); | ||
116 | + | ||
117 | + pw = getpwuid(st->st_uid); | ||
118 | + if (!pw) | ||
119 | + return 0; | ||
120 | + | ||
121 | + /* Check supplementary group memberships. */ | ||
122 | + if (gr->gr_mem[0]) { | ||
123 | + ++members; | ||
124 | + if (strcmp(pw->pw_name, gr->gr_mem[0]) || | ||
125 | + gr->gr_mem[1]) | ||
126 | + return 0; | ||
127 | + } | ||
128 | + | ||
129 | + if (!members) | ||
130 | + return 0; | ||
131 | + } | ||
132 | + return 1; | ||
133 | +} | ||
134 | + | ||
135 | int | ||
136 | tun_open(int tun, int mode, char **ifname) | ||
137 | { | ||
138 | @@ -1860,8 +1910,7 @@ safe_path(const char *name, struct stat *stp, const char *pw_dir, | ||
139 | snprintf(err, errlen, "%s is not a regular file", buf); | ||
140 | return -1; | ||
141 | } | ||
142 | - if ((!platform_sys_dir_uid(stp->st_uid) && stp->st_uid != uid) || | ||
143 | - (stp->st_mode & 022) != 0) { | ||
144 | + if (!secure_permissions(stp, uid)) { | ||
145 | snprintf(err, errlen, "bad ownership or modes for file %s", | ||
146 | buf); | ||
147 | return -1; | ||
148 | @@ -1876,8 +1925,7 @@ safe_path(const char *name, struct stat *stp, const char *pw_dir, | ||
149 | strlcpy(buf, cp, sizeof(buf)); | ||
150 | |||
151 | if (stat(buf, &st) < 0 || | ||
152 | - (!platform_sys_dir_uid(st.st_uid) && st.st_uid != uid) || | ||
153 | - (st.st_mode & 022) != 0) { | ||
154 | + !secure_permissions(&st, uid)) { | ||
155 | snprintf(err, errlen, | ||
156 | "bad ownership or modes for directory %s", buf); | ||
157 | return -1; | ||
158 | diff --git a/misc.h b/misc.h | ||
159 | index 5b4325aba..a4bdee187 100644 | ||
160 | --- a/misc.h | ||
161 | +++ b/misc.h | ||
162 | @@ -175,6 +175,8 @@ int safe_path_fd(int, const char *, struct passwd *, | ||
163 | char *read_passphrase(const char *, int); | ||
164 | int ask_permission(const char *, ...) __attribute__((format(printf, 1, 2))); | ||
165 | |||
166 | +int secure_permissions(struct stat *st, uid_t uid); | ||
167 | + | ||
168 | #define MINIMUM(a, b) (((a) < (b)) ? (a) : (b)) | ||
169 | #define MAXIMUM(a, b) (((a) > (b)) ? (a) : (b)) | ||
170 | #define ROUNDUP(x, y) ((((x)+((y)-1))/(y))*(y)) | ||
171 | diff --git a/readconf.c b/readconf.c | ||
172 | index 3d0b6ff90..cd60007f8 100644 | ||
173 | --- a/readconf.c | ||
174 | +++ b/readconf.c | ||
175 | @@ -1846,8 +1846,7 @@ read_config_file_depth(const char *filename, struct passwd *pw, | ||
176 | |||
177 | if (fstat(fileno(f), &sb) == -1) | ||
178 | fatal("fstat %s: %s", filename, strerror(errno)); | ||
179 | - if (((sb.st_uid != 0 && sb.st_uid != getuid()) || | ||
180 | - (sb.st_mode & 022) != 0)) | ||
181 | + if (!secure_permissions(&sb, getuid())) | ||
182 | fatal("Bad owner or permissions on %s", filename); | ||
183 | } | ||
184 | |||
185 | diff --git a/ssh.1 b/ssh.1 | ||
186 | index a1c7d2305..64ead5f57 100644 | ||
187 | --- a/ssh.1 | ||
188 | +++ b/ssh.1 | ||
189 | @@ -1484,6 +1484,8 @@ The file format and configuration options are described in | ||
190 | .Xr ssh_config 5 . | ||
191 | Because of the potential for abuse, this file must have strict permissions: | ||
192 | read/write for the user, and not writable by others. | ||
193 | +It may be group-writable provided that the group in question contains only | ||
194 | +the user. | ||
195 | .Pp | ||
196 | .It Pa ~/.ssh/environment | ||
197 | Contains additional definitions for environment variables; see | ||
198 | diff --git a/ssh_config.5 b/ssh_config.5 | ||
199 | index 250c92d04..bd1e9311d 100644 | ||
200 | --- a/ssh_config.5 | ||
201 | +++ b/ssh_config.5 | ||
202 | @@ -1885,6 +1885,8 @@ The format of this file is described above. | ||
203 | This file is used by the SSH client. | ||
204 | Because of the potential for abuse, this file must have strict permissions: | ||
205 | read/write for the user, and not writable by others. | ||
206 | +It may be group-writable provided that the group in question contains only | ||
207 | +the user. | ||
208 | .It Pa /etc/ssh/ssh_config | ||
209 | Systemwide configuration file. | ||
210 | This file provides defaults for those | ||
diff --git a/debian/po/POTFILES.in b/debian/po/POTFILES.in new file mode 100644 index 000000000..c619f3451 --- /dev/null +++ b/debian/po/POTFILES.in | |||
@@ -0,0 +1 @@ | |||
[type: gettext/rfc822deb] openssh-server.templates | |||
diff --git a/debian/po/cs.po b/debian/po/cs.po new file mode 100644 index 000000000..d01e0ffdc --- /dev/null +++ b/debian/po/cs.po | |||
@@ -0,0 +1,55 @@ | |||
1 | # Czech PO debconf template translation of openssh. | ||
2 | # Copyright (C) 2014 Michal Simunek <michal.simunek@gmail.com> | ||
3 | # This file is distributed under the same license as the openssh package. | ||
4 | # Michal Simunek <michal.simunek@gmail.com>, 2014. | ||
5 | # | ||
6 | msgid "" | ||
7 | msgstr "" | ||
8 | "Project-Id-Version: openssh 1:6.6p1-1\n" | ||
9 | "Report-Msgid-Bugs-To: openssh@packages.debian.org\n" | ||
10 | "POT-Creation-Date: 2014-03-20 02:06+0000\n" | ||
11 | "PO-Revision-Date: 2014-06-12 12:25+0200\n" | ||
12 | "Last-Translator: Michal Simunek <michal.simunek@gmail.com>\n" | ||
13 | "Language-Team: Czech <debian-l10n-czech@lists.debian.org>\n" | ||
14 | "Language: cs\n" | ||
15 | "MIME-Version: 1.0\n" | ||
16 | "Content-Type: text/plain; charset=utf-8\n" | ||
17 | "Content-Transfer-Encoding: 8bit\n" | ||
18 | |||
19 | #. Type: boolean | ||
20 | #. Description | ||
21 | #: ../openssh-server.templates:1001 | ||
22 | msgid "Disable SSH password authentication for root?" | ||
23 | msgstr "Zakázat ověřování heslem pro uživatele root?" | ||
24 | |||
25 | #. Type: boolean | ||
26 | #. Description | ||
27 | #: ../openssh-server.templates:1001 | ||
28 | msgid "" | ||
29 | "Previous versions of openssh-server permitted logging in as root over SSH " | ||
30 | "using password authentication. The default for new installations is now " | ||
31 | "\"PermitRootLogin prohibit-password\", which disables password " | ||
32 | "authentication for root without breaking systems that have explicitly " | ||
33 | "configured SSH public key authentication for root." | ||
34 | msgstr "" | ||
35 | "Předchozí verze openssh-server dovolovala přihlašovat se přes SSH jako root " | ||
36 | "pomocí ověřování heslem. Výchozí volba pro nové instalace je nyní " | ||
37 | "\"PermitRootLogin prohibit-password\", která zakazuje ověřování heslem pro " | ||
38 | "uživatele root, aniž by to omezilo systémy, které mají explicitně nastaveno " | ||
39 | "ověřování veřejným SSH klíčem pro uživatele root." | ||
40 | |||
41 | #. Type: boolean | ||
42 | #. Description | ||
43 | #: ../openssh-server.templates:1001 | ||
44 | msgid "" | ||
45 | "This change makes systems more secure against brute-force password " | ||
46 | "dictionary attacks on the root user (a very common target for such attacks). " | ||
47 | "However, it may break systems that are set up with the expectation of being " | ||
48 | "able to SSH as root using password authentication. You should only make this " | ||
49 | "change if you do not need to do that." | ||
50 | msgstr "" | ||
51 | "Tato změna činí systémy zabezpečenějšími proti útokům hrubou silou na heslo " | ||
52 | "uživatele root pomocí slovníku (velmi častý cíl útoků). Nicméně, to může " | ||
53 | "poškodit systémy, které jsou nastaveny s předpokladem, že bude možné se " | ||
54 | "přihlašovat přes SSH jako root pomocí ověřování heslem. Změnu této volby " | ||
55 | "byste měli provést pouze pokud ověřování heslem potřebujete." | ||
diff --git a/debian/po/da.po b/debian/po/da.po new file mode 100644 index 000000000..70d576d7b --- /dev/null +++ b/debian/po/da.po | |||
@@ -0,0 +1,55 @@ | |||
1 | # Danish translation openssh. | ||
2 | # Copyright (C) 2014 openssh og nedenstående oversættere. | ||
3 | # This file is distributed under the same license as the openssh package. | ||
4 | # Joe Hansen <joedalton2@yahoo.dk>, 2014. | ||
5 | # | ||
6 | msgid "" | ||
7 | msgstr "" | ||
8 | "Project-Id-Version: openssh\n" | ||
9 | "Report-Msgid-Bugs-To: openssh@packages.debian.org\n" | ||
10 | "POT-Creation-Date: 2014-03-20 02:06+0000\n" | ||
11 | "PO-Revision-Date: 2014-03-21 23:51+0200\n" | ||
12 | "Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n" | ||
13 | "Language-Team: Danish <debian-l10n-danish@lists.debian.org>\n" | ||
14 | "Language: da\n" | ||
15 | "MIME-Version: 1.0\n" | ||
16 | "Content-Type: text/plain; charset=UTF-8\n" | ||
17 | "Content-Transfer-Encoding: 8bit\n" | ||
18 | |||
19 | #. Type: boolean | ||
20 | #. Description | ||
21 | #: ../openssh-server.templates:1001 | ||
22 | msgid "Disable SSH password authentication for root?" | ||
23 | msgstr "Deaktiver SSH-adgangskodegodkendelse for root?" | ||
24 | |||
25 | #. Type: boolean | ||
26 | #. Description | ||
27 | #: ../openssh-server.templates:1001 | ||
28 | msgid "" | ||
29 | "Previous versions of openssh-server permitted logging in as root over SSH " | ||
30 | "using password authentication. The default for new installations is now " | ||
31 | "\"PermitRootLogin prohibit-password\", which disables password " | ||
32 | "authentication for root without breaking systems that have explicitly " | ||
33 | "configured SSH public key authentication for root." | ||
34 | msgstr "" | ||
35 | "Tidligere versioner af openssh-server tillod indlogning som root over SSH " | ||
36 | "med brug af adgangskodegodkendelse. Standarden for nye installationer er nu " | ||
37 | "»PermitRootLogin prohibit-password«, som deaktiverer adgangskodegodkendelse " | ||
38 | "for root uden at ødelægge systemer, som eksplicit har konfigureret SSH-" | ||
39 | "offentlig nøglegodkendelse for root." | ||
40 | |||
41 | #. Type: boolean | ||
42 | #. Description | ||
43 | #: ../openssh-server.templates:1001 | ||
44 | msgid "" | ||
45 | "This change makes systems more secure against brute-force password " | ||
46 | "dictionary attacks on the root user (a very common target for such attacks). " | ||
47 | "However, it may break systems that are set up with the expectation of being " | ||
48 | "able to SSH as root using password authentication. You should only make this " | ||
49 | "change if you do not need to do that." | ||
50 | msgstr "" | ||
51 | "Denne ændring gør systemer mere sikre mod brute-force angreb vis ordlister " | ||
52 | "med adgangskoder på root-brugeren (et meget ofte mål for sådanne angreb). " | ||
53 | "Det kan dog ødelægge systemer, som er opsat med forventning om at kunne SSH " | ||
54 | "som root via brug af adgangskodegodkendelse. Du skal kun lave denne ændring, " | ||
55 | "hvis du ikke har brug for dette." | ||
diff --git a/debian/po/de.po b/debian/po/de.po new file mode 100644 index 000000000..ecba54b6c --- /dev/null +++ b/debian/po/de.po | |||
@@ -0,0 +1,61 @@ | |||
1 | # openssh. | ||
2 | # Copyright (C) 2014 Colin Watson | ||
3 | # Copyright (C) 2014 Stephan Beck | ||
4 | # This file is distributed under the same license as the openssh package. | ||
5 | # Stephan Beck <sbeck@mailbox.org>, 2014. | ||
6 | # | ||
7 | msgid "" | ||
8 | msgstr "" | ||
9 | "Project-Id-Version: openssh_1:6.6p1-1\n" | ||
10 | "Report-Msgid-Bugs-To: openssh@packages.debian.org\n" | ||
11 | "POT-Creation-Date: 2014-03-20 02:06+0000\n" | ||
12 | "PO-Revision-Date: 2014-03-24 22:21+0100\n" | ||
13 | "Last-Translator: Stephan Beck <sbeck@mailbox.org>\n" | ||
14 | "Language-Team: Debian German translation team <debian-l10n-german@lists." | ||
15 | "debian.org>\n" | ||
16 | "Language: de\n" | ||
17 | "MIME-Version: 1.0\n" | ||
18 | "Content-Type: text/plain; charset=UTF-8\n" | ||
19 | "Content-Transfer-Encoding: 8bit\n" | ||
20 | |||
21 | #. Type: boolean | ||
22 | #. Description | ||
23 | #: ../openssh-server.templates:1001 | ||
24 | msgid "Disable SSH password authentication for root?" | ||
25 | msgstr "SSH Passwort-Authentifizierung für »root« deaktivieren?" | ||
26 | |||
27 | #. Type: boolean | ||
28 | #. Description | ||
29 | #: ../openssh-server.templates:1001 | ||
30 | msgid "" | ||
31 | "Previous versions of openssh-server permitted logging in as root over SSH " | ||
32 | "using password authentication. The default for new installations is now " | ||
33 | "\"PermitRootLogin prohibit-password\", which disables password " | ||
34 | "authentication for root without breaking systems that have explicitly " | ||
35 | "configured SSH public key authentication for root." | ||
36 | msgstr "" | ||
37 | "Vorherige Versionen von openssh-server erlaubten das Anmelden als »root« " | ||
38 | "über SSH unter Verwendung von Passwort-Authentifizierung. Die " | ||
39 | "Standardeinstellung für Neuinstallationen lautet nun »PermitRootLogin " | ||
40 | "prohibit-password«, wodurch die Passwort-Authentifizierung für »root« " | ||
41 | "deaktiviert wird, und Systeme dennoch funktionsfähig bleiben, bei denen " | ||
42 | "ausdrücklich die Authentifizierung als »root« mittels öffentlichem SSH-" | ||
43 | "Schlüssel konfiguriert ist." | ||
44 | |||
45 | #. Type: boolean | ||
46 | #. Description | ||
47 | #: ../openssh-server.templates:1001 | ||
48 | msgid "" | ||
49 | "This change makes systems more secure against brute-force password " | ||
50 | "dictionary attacks on the root user (a very common target for such attacks). " | ||
51 | "However, it may break systems that are set up with the expectation of being " | ||
52 | "able to SSH as root using password authentication. You should only make this " | ||
53 | "change if you do not need to do that." | ||
54 | msgstr "" | ||
55 | "Diese Änderung sichert Systeme besser gegen jene Angriffe auf den Benutzer " | ||
56 | "»root« (ein verbreitetes Ziel solcher Angriffe) ab, die das Passwort durch " | ||
57 | "simples Ausprobieren aller Einträge von Wörterbüchern zu erraten versuchen. " | ||
58 | "Sie kann allerdings dazu führen, dass Systeme nicht mehr funktionieren, die " | ||
59 | "in der Absicht konfiguriert wurden, die Anmeldung als »root« über SSH unter " | ||
60 | "Verwendung von Passwort-Authentifizierung zuzulassen. Sie sollten diese " | ||
61 | "Änderung nur vornehmen, wenn Sie auf Letzteres verzichten können." | ||
diff --git a/debian/po/es.po b/debian/po/es.po new file mode 100644 index 000000000..de8a67ace --- /dev/null +++ b/debian/po/es.po | |||
@@ -0,0 +1,80 @@ | |||
1 | # openssh po-debconf translation to Spanish | ||
2 | # Copyright (C) 2014 Software in the Public Interest | ||
3 | # This file is distributed under the same license as the openssh package. | ||
4 | # | ||
5 | # Changes: | ||
6 | # - Initial translation | ||
7 | # Matías A. Bellone <matiasbellone+debian@gmail.com>, 2014 | ||
8 | # | ||
9 | # Traductores, si no conocen el formato PO, merece la pena leer la | ||
10 | # de gettext, especialmente las secciones dedicadas a este | ||
11 | # formato, por ejemplo ejecutando: | ||
12 | # info -n '(gettext)PO Files' | ||
13 | # info -n '(gettext)Header Entry' | ||
14 | # | ||
15 | # Equipo de traducción al español, por favor, lean antes de traducir | ||
16 | # los siguientes documentos: | ||
17 | # | ||
18 | # - El proyecto de traducción de Debian al español | ||
19 | # http://www.debian.org/intl/spanish/ | ||
20 | # especialmente las notas de traducción en | ||
21 | # http://www.debian.org/intl/spanish/notas | ||
22 | # | ||
23 | # - La guía de traducción de po's de debconf: | ||
24 | # /usr/share/doc/po-debconf/README-trans | ||
25 | # o http://www.debian.org/intl/l10n/po-debconf/README-trans | ||
26 | # | ||
27 | msgid "" | ||
28 | msgstr "" | ||
29 | "Project-Id-Version: openssh\n" | ||
30 | "Report-Msgid-Bugs-To: openssh@packages.debian.org\n" | ||
31 | "POT-Creation-Date: 2014-03-20 02:06+0000\n" | ||
32 | "PO-Revision-Date: 2014-03-23 20:43-0300\n" | ||
33 | "Last-Translator: Matías Bellone <matiasbellone+debian@gmail.com>\n" | ||
34 | "Language-Team: Debian l10n Spanish <debian-l10n-spanish@lists.debian.org>\n" | ||
35 | "Language: es\n" | ||
36 | "MIME-Version: 1.0\n" | ||
37 | "Content-Type: text/plain; charset=UTF-8\n" | ||
38 | "Content-Transfer-Encoding: 8bit\n" | ||
39 | |||
40 | #. Type: boolean | ||
41 | #. Description | ||
42 | #: ../openssh-server.templates:1001 | ||
43 | msgid "Disable SSH password authentication for root?" | ||
44 | msgstr "" | ||
45 | "¿Desea desactivar la autenticación SSH mediante contraseña para el usuario " | ||
46 | "root?" | ||
47 | |||
48 | #. Type: boolean | ||
49 | #. Description | ||
50 | #: ../openssh-server.templates:1001 | ||
51 | msgid "" | ||
52 | "Previous versions of openssh-server permitted logging in as root over SSH " | ||
53 | "using password authentication. The default for new installations is now " | ||
54 | "\"PermitRootLogin prohibit-password\", which disables password " | ||
55 | "authentication for root without breaking systems that have explicitly " | ||
56 | "configured SSH public key authentication for root." | ||
57 | msgstr "" | ||
58 | "Las versiones anteriores de openssh-server permitían iniciar sesión como " | ||
59 | "usuario root utilizando autenticación con contraseña. La configuración " | ||
60 | "predeterminada para las nuevas instalaciones ahora incluye «PermitRootLogin " | ||
61 | "prohibit-password», lo que desactiva la autenticación con contraseña para el " | ||
62 | "usuario root sin romper los sistemas que tienen configurado explícitamente " | ||
63 | "la autenticación SSH utilizando claves públicas para el usuario root." | ||
64 | |||
65 | #. Type: boolean | ||
66 | #. Description | ||
67 | #: ../openssh-server.templates:1001 | ||
68 | msgid "" | ||
69 | "This change makes systems more secure against brute-force password " | ||
70 | "dictionary attacks on the root user (a very common target for such attacks). " | ||
71 | "However, it may break systems that are set up with the expectation of being " | ||
72 | "able to SSH as root using password authentication. You should only make this " | ||
73 | "change if you do not need to do that." | ||
74 | msgstr "" | ||
75 | "Este cambio hace que los sistemas sean más resistentes contra ataques de " | ||
76 | "fuerza bruta basados en diccionarios sobre el usuario root (un objetivo muy " | ||
77 | "común para este tipo de ataques). Sin embargo, podría romper sistemas cuya " | ||
78 | "configuración permite que el usuario root inicie sesión a través de SSH " | ||
79 | "utilizando una contraseña. Sólo debería realizar este cambio si no necesita " | ||
80 | "este comportamiento." | ||
diff --git a/debian/po/fr.po b/debian/po/fr.po new file mode 100644 index 000000000..f7125e9a3 --- /dev/null +++ b/debian/po/fr.po | |||
@@ -0,0 +1,59 @@ | |||
1 | # Translation of openssh debconf template to French | ||
2 | # Copyright (C) 2014 | ||
3 | # This file is distributed under the same license as the openssh package. | ||
4 | # Étienne Gilli <etienne.gilli@gmail.com>, 2014. | ||
5 | # | ||
6 | msgid "" | ||
7 | msgstr "" | ||
8 | "Project-Id-Version: openssh_1:6.5p1-6\n" | ||
9 | "Report-Msgid-Bugs-To: openssh@packages.debian.org\n" | ||
10 | "POT-Creation-Date: 2014-03-20 02:06+0000\n" | ||
11 | "PO-Revision-Date: 2014-03-22 08:26+0100\n" | ||
12 | "Last-Translator: Étienne Gilli <etienne.gilli@gmail.com>\n" | ||
13 | "Language-Team: French <debian-l10n-french@lists.debian.org>\n" | ||
14 | "Language: fr\n" | ||
15 | "MIME-Version: 1.0\n" | ||
16 | "Content-Type: text/plain; charset=UTF-8\n" | ||
17 | "Content-Transfer-Encoding: 8bit\n" | ||
18 | |||
19 | #. Type: boolean | ||
20 | #. Description | ||
21 | #: ../openssh-server.templates:1001 | ||
22 | msgid "Disable SSH password authentication for root?" | ||
23 | msgstr "" | ||
24 | "Désactiver l’authentification SSH par mot de passe pour le superutilisateur ?" | ||
25 | |||
26 | #. Type: boolean | ||
27 | #. Description | ||
28 | #: ../openssh-server.templates:1001 | ||
29 | msgid "" | ||
30 | "Previous versions of openssh-server permitted logging in as root over SSH " | ||
31 | "using password authentication. The default for new installations is now " | ||
32 | "\"PermitRootLogin prohibit-password\", which disables password " | ||
33 | "authentication for root without breaking systems that have explicitly " | ||
34 | "configured SSH public key authentication for root." | ||
35 | msgstr "" | ||
36 | "Les versions précédentes du paquet openssh-server autorisaient la connexion " | ||
37 | "par SSH du superutilisateur (root) en utilisant l’authentification par mot " | ||
38 | "de passe. Par défaut, les nouvelles installations ont maintenant l’option " | ||
39 | "« PermitRootLogin prohibit-password », qui désactive l’authentification par " | ||
40 | "mot de passe pour le compte « root », sans casser les systèmes qui ont " | ||
41 | "configuré explicitement l’authentification SSH par clé publique pour ce " | ||
42 | "compte." | ||
43 | |||
44 | #. Type: boolean | ||
45 | #. Description | ||
46 | #: ../openssh-server.templates:1001 | ||
47 | msgid "" | ||
48 | "This change makes systems more secure against brute-force password " | ||
49 | "dictionary attacks on the root user (a very common target for such attacks). " | ||
50 | "However, it may break systems that are set up with the expectation of being " | ||
51 | "able to SSH as root using password authentication. You should only make this " | ||
52 | "change if you do not need to do that." | ||
53 | msgstr "" | ||
54 | "Cette modification rend les systèmes plus robustes face aux attaques par " | ||
55 | "force brute et par dictionnaire contre le superutilisateur (très souvent " | ||
56 | "pris pour cible par ce type d’attaque). Cependant, cela peut rendre " | ||
57 | "inutilisables les systèmes reposant sur la possibilité de se connecter au " | ||
58 | "compte « root » par SSH avec authentification par mot de passe. Vous ne " | ||
59 | "devriez appliquer cette modification que si ce n’est pas votre cas." | ||
diff --git a/debian/po/it.po b/debian/po/it.po new file mode 100644 index 000000000..dd7106090 --- /dev/null +++ b/debian/po/it.po | |||
@@ -0,0 +1,58 @@ | |||
1 | # Italian translation of openssh debconf messages. | ||
2 | # Copyright (C) 2014, openssh package copyright holder | ||
3 | # This file is distributed under the same license as the openssh package. | ||
4 | # Beatrice Torracca <beatricet@libero.it>, 2014. | ||
5 | msgid "" | ||
6 | msgstr "" | ||
7 | "Project-Id-Version: openssh\n" | ||
8 | "Report-Msgid-Bugs-To: openssh@packages.debian.org\n" | ||
9 | "POT-Creation-Date: 2014-03-20 02:06+0000\n" | ||
10 | "PO-Revision-Date: 2014-03-28 11:12+0200\n" | ||
11 | "Last-Translator: Beatrice Torracca <beatricet@libero.it>\n" | ||
12 | "Language-Team: Italian <debian-l10n-italian@lists.debian.org>\n" | ||
13 | "Language: it\n" | ||
14 | "MIME-Version: 1.0\n" | ||
15 | "Content-Type: text/plain; charset=UTF-8\n" | ||
16 | "Content-Transfer-Encoding: 8bit\n" | ||
17 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" | ||
18 | "X-Generator: Virtaal 0.7.1\n" | ||
19 | |||
20 | #. Type: boolean | ||
21 | #. Description | ||
22 | #: ../openssh-server.templates:1001 | ||
23 | msgid "Disable SSH password authentication for root?" | ||
24 | msgstr "Disabilitare l'autenticazione SSH con password per root?" | ||
25 | |||
26 | #. Type: boolean | ||
27 | #. Description | ||
28 | #: ../openssh-server.templates:1001 | ||
29 | msgid "" | ||
30 | "Previous versions of openssh-server permitted logging in as root over SSH " | ||
31 | "using password authentication. The default for new installations is now " | ||
32 | "\"PermitRootLogin prohibit-password\", which disables password " | ||
33 | "authentication for root without breaking systems that have explicitly " | ||
34 | "configured SSH public key authentication for root." | ||
35 | msgstr "" | ||
36 | "Le versioni precedenti di openssh-server permettevano il login come root via " | ||
37 | "SSH, usando l'autenticazione con password. Il comportamento predefinito " | ||
38 | "delle nuove installazioni è «PermitRootLogin prohibit-password» che " | ||
39 | "disabilita l'autenticazione con password per root, senza rendere non " | ||
40 | "funzionanti sistemi che hanno esplicitamente configurato l'autenticazione " | ||
41 | "SSH con chiave pubblica per root." | ||
42 | |||
43 | #. Type: boolean | ||
44 | #. Description | ||
45 | #: ../openssh-server.templates:1001 | ||
46 | msgid "" | ||
47 | "This change makes systems more secure against brute-force password " | ||
48 | "dictionary attacks on the root user (a very common target for such attacks). " | ||
49 | "However, it may break systems that are set up with the expectation of being " | ||
50 | "able to SSH as root using password authentication. You should only make this " | ||
51 | "change if you do not need to do that." | ||
52 | msgstr "" | ||
53 | "Questo cambiamento rende i sistemi più al sicuro da attacchi di forza bruta " | ||
54 | "a dizionario sulle password per l'utente root (un obiettivo molto comune per " | ||
55 | "tali attacchi). Tuttavia, può rendere non funzionanti sistemi che sono " | ||
56 | "impostati facendo affidamento sulla possibilità di autenticazione SSH come " | ||
57 | "root usando la password. Si dovrebbe fare questo cambiamento solo se non si " | ||
58 | "ha bisogno di tale comportamento." | ||
diff --git a/debian/po/ja.po b/debian/po/ja.po new file mode 100644 index 000000000..db382f19a --- /dev/null +++ b/debian/po/ja.po | |||
@@ -0,0 +1,55 @@ | |||
1 | # SOME DESCRIPTIVE TITLE. | ||
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||
3 | # This file is distributed under the same license as the openssh package. | ||
4 | # victory <victory.deb@gmail.com>, 2014. | ||
5 | # | ||
6 | msgid "" | ||
7 | msgstr "" | ||
8 | "Project-Id-Version: openssh\n" | ||
9 | "Report-Msgid-Bugs-To: openssh@packages.debian.org\n" | ||
10 | "POT-Creation-Date: 2014-03-20 02:06+0000\n" | ||
11 | "PO-Revision-Date: 2014-03-20 11:06+0900\n" | ||
12 | "Last-Translator: victory <victory.deb@gmail.com>\n" | ||
13 | "Language-Team: Japanese <debian-japanese@lists.debian.org>\n" | ||
14 | "Language: ja\n" | ||
15 | "MIME-Version: 1.0\n" | ||
16 | "Content-Type: text/plain; charset=UTF-8\n" | ||
17 | "Content-Transfer-Encoding: 8bit\n" | ||
18 | |||
19 | #. Type: boolean | ||
20 | #. Description | ||
21 | #: ../openssh-server.templates:1001 | ||
22 | msgid "Disable SSH password authentication for root?" | ||
23 | msgstr "root での SSH パスワード認証を無効にしますか?" | ||
24 | |||
25 | #. Type: boolean | ||
26 | #. Description | ||
27 | #: ../openssh-server.templates:1001 | ||
28 | msgid "" | ||
29 | "Previous versions of openssh-server permitted logging in as root over SSH " | ||
30 | "using password authentication. The default for new installations is now " | ||
31 | "\"PermitRootLogin prohibit-password\", which disables password " | ||
32 | "authentication for root without breaking systems that have explicitly " | ||
33 | "configured SSH public key authentication for root." | ||
34 | msgstr "" | ||
35 | "openssh-server の以前のバージョンではパスワード認証を利用した SSH 経由の " | ||
36 | "root のログインを許可していました。新しくインストールした場合のデフォルト値が" | ||
37 | "現在は「PermitRootLogin prohibit-password」になり、root のパスワード認証を無" | ||
38 | "効化しますが SSH の公開鍵認証を root 用に明示的に設定しているシステムでは特に" | ||
39 | "問題はありません。" | ||
40 | |||
41 | #. Type: boolean | ||
42 | #. Description | ||
43 | #: ../openssh-server.templates:1001 | ||
44 | msgid "" | ||
45 | "This change makes systems more secure against brute-force password " | ||
46 | "dictionary attacks on the root user (a very common target for such attacks). " | ||
47 | "However, it may break systems that are set up with the expectation of being " | ||
48 | "able to SSH as root using password authentication. You should only make this " | ||
49 | "change if you do not need to do that." | ||
50 | msgstr "" | ||
51 | "この変更によりシステムは root ユーザ (こういった攻撃ではとても一般的な攻撃対" | ||
52 | "象です) へのブルートフォースによるパスワード辞書攻撃に対してはより安全になり" | ||
53 | "ます。しかしパスワード認証により root で SSH 接続できることを前提として構成し" | ||
54 | "たシステムでは問題が発生する可能性があります。そういった必要のない場合にのみ" | ||
55 | "この変更を行うようにしてください。" | ||
diff --git a/debian/po/nl.po b/debian/po/nl.po new file mode 100644 index 000000000..3afd6171e --- /dev/null +++ b/debian/po/nl.po | |||
@@ -0,0 +1,60 @@ | |||
1 | # Dutch translation of openssh debconf templates. | ||
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||
3 | # This file is distributed under the same license as the openssh package. | ||
4 | # Frans Spiesschaert <Frans.Spiesschaert@yucom.be>, 2014. | ||
5 | # | ||
6 | msgid "" | ||
7 | msgstr "" | ||
8 | "Project-Id-Version: openssh\n" | ||
9 | "Report-Msgid-Bugs-To: openssh@packages.debian.org\n" | ||
10 | "POT-Creation-Date: 2014-03-20 02:06+0000\n" | ||
11 | "PO-Revision-Date: 2014-10-03 23:54+0200\n" | ||
12 | "Last-Translator: Frans Spiesschaert <Frans.Spiesschaert@yucom.be>\n" | ||
13 | "Language-Team: Debian Dutch l10n Team <debian-l10n-dutch@lists.debian.org>\n" | ||
14 | "Language: nl\n" | ||
15 | "MIME-Version: 1.0\n" | ||
16 | "Content-Type: text/plain; charset=UTF-8\n" | ||
17 | "Content-Transfer-Encoding: 8bit\n" | ||
18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" | ||
19 | |||
20 | #. Type: boolean | ||
21 | #. Description | ||
22 | #: ../openssh-server.templates:1001 | ||
23 | msgid "Disable SSH password authentication for root?" | ||
24 | msgstr "" | ||
25 | "Wachtwoordauthenticatie over SSH voor de systeembeheerder uitschakelen?" | ||
26 | |||
27 | #. Type: boolean | ||
28 | #. Description | ||
29 | #: ../openssh-server.templates:1001 | ||
30 | msgid "" | ||
31 | "Previous versions of openssh-server permitted logging in as root over SSH " | ||
32 | "using password authentication. The default for new installations is now " | ||
33 | "\"PermitRootLogin prohibit-password\", which disables password " | ||
34 | "authentication for root without breaking systems that have explicitly " | ||
35 | "configured SSH public key authentication for root." | ||
36 | msgstr "" | ||
37 | "Eerdere versies van de openssh-server lieten de systeembeheerder toe om zich " | ||
38 | "over SSH te authenticeren met een wachtwoord. Voor nieuwe installaties is de " | ||
39 | "standaard nu \"PermitRootLogin prohibit-password\". Deze standaardinstelling " | ||
40 | "maakt het voor de systeembeheerder onmogelijk om zich via een wachtwoord te " | ||
41 | "authenticeren. Deze instelling heeft geen impact op systemen waarbij de SSH-" | ||
42 | "configuratie expliciet vereist dat de systeembeheerder zich authenticeert " | ||
43 | "via een publieke sleutel." | ||
44 | |||
45 | #. Type: boolean | ||
46 | #. Description | ||
47 | #: ../openssh-server.templates:1001 | ||
48 | msgid "" | ||
49 | "This change makes systems more secure against brute-force password " | ||
50 | "dictionary attacks on the root user (a very common target for such attacks). " | ||
51 | "However, it may break systems that are set up with the expectation of being " | ||
52 | "able to SSH as root using password authentication. You should only make this " | ||
53 | "change if you do not need to do that." | ||
54 | msgstr "" | ||
55 | "Deze wijziging maakt systemen veiliger tegenover aanvallen met brute kracht " | ||
56 | "(met een wachtwoordenwoordenboek) op de systeembeheerder, een zeer courant " | ||
57 | "doelwit voor zulke aanvallen. Maar het kan systemen onbruikbaar maken die " | ||
58 | "ingesteld werden vanuit de verwachting dat de systeembeheerder SSH kan " | ||
59 | "gebruiken met authenticatie via wachtwoord. Enkel wanneer u dit laatste niet " | ||
60 | "nodig heeft, zou u deze wijziging kunnen doorvoeren." | ||
diff --git a/debian/po/pt.po b/debian/po/pt.po new file mode 100644 index 000000000..2dab84ccf --- /dev/null +++ b/debian/po/pt.po | |||
@@ -0,0 +1,59 @@ | |||
1 | # Translation of openssh's debconf messages to European Portuguese | ||
2 | # Copyright (C) 2014 YEAR THE openssh'S COPYRIGHT HOLDER | ||
3 | # This file is distributed under the same license as the openssh package. | ||
4 | # | ||
5 | # Américo Monteiro <a_monteiro@gmx.com>, 2014. | ||
6 | msgid "" | ||
7 | msgstr "" | ||
8 | "Project-Id-Version: openssh 1:6.6p1-1\n" | ||
9 | "Report-Msgid-Bugs-To: openssh@packages.debian.org\n" | ||
10 | "POT-Creation-Date: 2014-03-20 02:06+0000\n" | ||
11 | "PO-Revision-Date: 2014-03-21 21:13+0000\n" | ||
12 | "Last-Translator: Américo Monteiro <a_monteiro@gmx.com>\n" | ||
13 | "Language-Team: Portuguese <traduz@debianpt.org>\n" | ||
14 | "Language: pt\n" | ||
15 | "MIME-Version: 1.0\n" | ||
16 | "Content-Type: text/plain; charset=UTF-8\n" | ||
17 | "Content-Transfer-Encoding: 8bit\n" | ||
18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" | ||
19 | "X-Generator: Lokalize 1.4\n" | ||
20 | |||
21 | #. Type: boolean | ||
22 | #. Description | ||
23 | #: ../openssh-server.templates:1001 | ||
24 | msgid "Disable SSH password authentication for root?" | ||
25 | msgstr "Desactivar a autenticação SSH por palavra passe para o root?" | ||
26 | |||
27 | #. Type: boolean | ||
28 | #. Description | ||
29 | #: ../openssh-server.templates:1001 | ||
30 | msgid "" | ||
31 | "Previous versions of openssh-server permitted logging in as root over SSH " | ||
32 | "using password authentication. The default for new installations is now " | ||
33 | "\"PermitRootLogin prohibit-password\", which disables password " | ||
34 | "authentication for root without breaking systems that have explicitly " | ||
35 | "configured SSH public key authentication for root." | ||
36 | msgstr "" | ||
37 | "As versões anteriores do servidor openssh permitiam iniciar sessão como root " | ||
38 | "sobre SSH usando autenticação por palavra-passe. A predefinição para novas " | ||
39 | "instalações é agora \"PermitRootLogin prohibit-password\", a qual desactiva " | ||
40 | "a autenticação por palavra-passe para o root sem danificar os sistemas que " | ||
41 | "têm configurados explicitamente autenticação SSH por chave pública para o " | ||
42 | "root." | ||
43 | |||
44 | #. Type: boolean | ||
45 | #. Description | ||
46 | #: ../openssh-server.templates:1001 | ||
47 | msgid "" | ||
48 | "This change makes systems more secure against brute-force password " | ||
49 | "dictionary attacks on the root user (a very common target for such attacks). " | ||
50 | "However, it may break systems that are set up with the expectation of being " | ||
51 | "able to SSH as root using password authentication. You should only make this " | ||
52 | "change if you do not need to do that." | ||
53 | msgstr "" | ||
54 | "Esta alteração torna os sistemas mais seguros contra ataques em que se " | ||
55 | "forçam dicionários de palavras-passe no utilizador root (um alvo muito comum " | ||
56 | "para tais ataques). No entanto, pode danificar sistemas que estão " | ||
57 | "configurados com a expectativa de serem capazes de SSH como root usando " | ||
58 | "autenticação por palavra-passe. Apenas deverá fazer esta alteração se não " | ||
59 | "precisa de tal método de autenticação." | ||
diff --git a/debian/po/pt_BR.po b/debian/po/pt_BR.po new file mode 100644 index 000000000..99b1182f1 --- /dev/null +++ b/debian/po/pt_BR.po | |||
@@ -0,0 +1,57 @@ | |||
1 | # Debconf translations for openssh. | ||
2 | # Copyright (C) 2014 THE openssh'S COPYRIGHT HOLDER | ||
3 | # This file is distributed under the same license as the openssh package. | ||
4 | # José de Figueiredo <deb.gnulinux@gmail.com>, 2014. | ||
5 | # | ||
6 | # | ||
7 | msgid "" | ||
8 | msgstr "" | ||
9 | "Project-Id-Version: openssh\n" | ||
10 | "Report-Msgid-Bugs-To: openssh@packages.debian.org\n" | ||
11 | "POT-Creation-Date: 2014-03-20 02:06+0000\n" | ||
12 | "PO-Revision-Date: 2014-11-23 23:49-0200\n" | ||
13 | "Last-Translator: José de Figueiredo <deb.gnulinux@gmail.com>\n" | ||
14 | "Language-Team: Brazilian Portuguese <debian-l10n-portuguese@lists.debian." | ||
15 | "org>\n" | ||
16 | "Language: pt_BR\n" | ||
17 | "MIME-Version: 1.0\n" | ||
18 | "Content-Type: text/plain; charset=UTF-8\n" | ||
19 | "Content-Transfer-Encoding: 8bit\n" | ||
20 | |||
21 | #. Type: boolean | ||
22 | #. Description | ||
23 | #: ../openssh-server.templates:1001 | ||
24 | msgid "Disable SSH password authentication for root?" | ||
25 | msgstr "Desabilitar autenticação por senha do SSH para root?" | ||
26 | |||
27 | #. Type: boolean | ||
28 | #. Description | ||
29 | #: ../openssh-server.templates:1001 | ||
30 | msgid "" | ||
31 | "Previous versions of openssh-server permitted logging in as root over SSH " | ||
32 | "using password authentication. The default for new installations is now " | ||
33 | "\"PermitRootLogin prohibit-password\", which disables password " | ||
34 | "authentication for root without breaking systems that have explicitly " | ||
35 | "configured SSH public key authentication for root." | ||
36 | msgstr "" | ||
37 | "Versões anteriores do openssh-server permitiam login como root sobre SSH " | ||
38 | "usando autenticação por senha. O padrão para as novas instalações agora é " | ||
39 | "\"PermitRootLogin prohibit-password\", que desabilita a autenticação por " | ||
40 | "senha para root sem quebrar sistemas que tenham configurado explicitamente o " | ||
41 | "SSH para autenticação por chave pública para root." | ||
42 | |||
43 | #. Type: boolean | ||
44 | #. Description | ||
45 | #: ../openssh-server.templates:1001 | ||
46 | msgid "" | ||
47 | "This change makes systems more secure against brute-force password " | ||
48 | "dictionary attacks on the root user (a very common target for such attacks). " | ||
49 | "However, it may break systems that are set up with the expectation of being " | ||
50 | "able to SSH as root using password authentication. You should only make this " | ||
51 | "change if you do not need to do that." | ||
52 | msgstr "" | ||
53 | "Esta alteração torna sistemas mais seguros contra ataques de força bruta por " | ||
54 | "dicionário de senhas no usuário root (um alvo muito comum destes ataques). " | ||
55 | "Entretanto, ela pode quebrar sistemas que foram configurados com a " | ||
56 | "expectativa de acesso SSH com root usando autenticação por senha. Você deve " | ||
57 | "fazer esta mudança somente se você não precisa fazer isso." | ||
diff --git a/debian/po/ru.po b/debian/po/ru.po new file mode 100644 index 000000000..f2e1dafc4 --- /dev/null +++ b/debian/po/ru.po | |||
@@ -0,0 +1,57 @@ | |||
1 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||
2 | # This file is distributed under the same license as the openssh package. | ||
3 | # | ||
4 | # Yuri Kozlov <yuray@komyakino.ru>, 2014. | ||
5 | msgid "" | ||
6 | msgstr "" | ||
7 | "Project-Id-Version: openssh 1:6.6p1-1\n" | ||
8 | "Report-Msgid-Bugs-To: openssh@packages.debian.org\n" | ||
9 | "POT-Creation-Date: 2014-03-20 02:06+0000\n" | ||
10 | "PO-Revision-Date: 2014-03-22 10:04+0400\n" | ||
11 | "Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n" | ||
12 | "Language-Team: Russian <debian-l10n-russian@lists.debian.org>\n" | ||
13 | "Language: ru\n" | ||
14 | "MIME-Version: 1.0\n" | ||
15 | "Content-Type: text/plain; charset=UTF-8\n" | ||
16 | "Content-Transfer-Encoding: 8bit\n" | ||
17 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" | ||
18 | "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" | ||
19 | "X-Generator: Lokalize 1.4\n" | ||
20 | |||
21 | #. Type: boolean | ||
22 | #. Description | ||
23 | #: ../openssh-server.templates:1001 | ||
24 | msgid "Disable SSH password authentication for root?" | ||
25 | msgstr "Выключить в SSH аутентификацию по паролю для root?" | ||
26 | |||
27 | #. Type: boolean | ||
28 | #. Description | ||
29 | #: ../openssh-server.templates:1001 | ||
30 | msgid "" | ||
31 | "Previous versions of openssh-server permitted logging in as root over SSH " | ||
32 | "using password authentication. The default for new installations is now " | ||
33 | "\"PermitRootLogin prohibit-password\", which disables password " | ||
34 | "authentication for root without breaking systems that have explicitly " | ||
35 | "configured SSH public key authentication for root." | ||
36 | msgstr "" | ||
37 | "В предыдущих версиях openssh-server разрешён вход с правами пользователя " | ||
38 | "root через SSH с помощью аутентификации по паролю. При новых установках по " | ||
39 | "умолчанию теперь используется настройка «PermitRootLogin prohibit-password», " | ||
40 | "которая отключает аутентификацию по паролю для root, что не вредит системам, " | ||
41 | "у которых в SSH для root настроена аутентификация по открытому ключу." | ||
42 | |||
43 | #. Type: boolean | ||
44 | #. Description | ||
45 | #: ../openssh-server.templates:1001 | ||
46 | msgid "" | ||
47 | "This change makes systems more secure against brute-force password " | ||
48 | "dictionary attacks on the root user (a very common target for such attacks). " | ||
49 | "However, it may break systems that are set up with the expectation of being " | ||
50 | "able to SSH as root using password authentication. You should only make this " | ||
51 | "change if you do not need to do that." | ||
52 | msgstr "" | ||
53 | "Это изменение делает системы более стойкими к атакам методом перебора " | ||
54 | "словарных паролей для пользователя root (самая распространённая цель таких " | ||
55 | "атак). Однако, это вредит системам, в которых специально настроен вход для " | ||
56 | "root по SSH с парольной аутентификацией. Если это не ваш случай, то ответьте " | ||
57 | "утвердительно." | ||
diff --git a/debian/po/sv.po b/debian/po/sv.po new file mode 100644 index 000000000..278b0ccbf --- /dev/null +++ b/debian/po/sv.po | |||
@@ -0,0 +1,58 @@ | |||
1 | # Swedish translations for openssh package | ||
2 | # Svenska översättningar för paket openssh. | ||
3 | # Copyright (C) 2014 THE openssh'S COPYRIGHT HOLDER | ||
4 | # This file is distributed under the same license as the openssh package. | ||
5 | # Andreas Rönnquist <gusnan@gusnan.se>, 2014. | ||
6 | # | ||
7 | msgid "" | ||
8 | msgstr "" | ||
9 | "Project-Id-Version: openssh\n" | ||
10 | "Report-Msgid-Bugs-To: openssh@packages.debian.org\n" | ||
11 | "POT-Creation-Date: 2014-03-20 02:06+0000\n" | ||
12 | "PO-Revision-Date: 2014-03-21 21:36+0100\n" | ||
13 | "Last-Translator: Andreas Rönnquist <gusnan@gusnan.se>\n" | ||
14 | "Language-Team: Swedish\n" | ||
15 | "Language: sv\n" | ||
16 | "MIME-Version: 1.0\n" | ||
17 | "Content-Type: text/plain; charset=UTF-8\n" | ||
18 | "Content-Transfer-Encoding: 8bit\n" | ||
19 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" | ||
20 | |||
21 | #. Type: boolean | ||
22 | #. Description | ||
23 | #: ../openssh-server.templates:1001 | ||
24 | msgid "Disable SSH password authentication for root?" | ||
25 | msgstr "Inaktivera SSH-lösenordsautentisering för root?" | ||
26 | |||
27 | #. Type: boolean | ||
28 | #. Description | ||
29 | #: ../openssh-server.templates:1001 | ||
30 | msgid "" | ||
31 | "Previous versions of openssh-server permitted logging in as root over SSH " | ||
32 | "using password authentication. The default for new installations is now " | ||
33 | "\"PermitRootLogin prohibit-password\", which disables password " | ||
34 | "authentication for root without breaking systems that have explicitly " | ||
35 | "configured SSH public key authentication for root." | ||
36 | msgstr "" | ||
37 | "Tidigare versioner av openssh-server tillät inloggning som root över SSH med " | ||
38 | "hjälp av lösenordsautentisering. Standardinställningen för nya " | ||
39 | "installationer är nu \"PermitRootLogin prohibit-password\", vilket " | ||
40 | "inaktiverar lösenordsautentisering för root utan att förstöra system som " | ||
41 | "explicit har konfigurerat nyckelautentisering med hjälp av publika nycklar " | ||
42 | "för root." | ||
43 | |||
44 | #. Type: boolean | ||
45 | #. Description | ||
46 | #: ../openssh-server.templates:1001 | ||
47 | msgid "" | ||
48 | "This change makes systems more secure against brute-force password " | ||
49 | "dictionary attacks on the root user (a very common target for such attacks). " | ||
50 | "However, it may break systems that are set up with the expectation of being " | ||
51 | "able to SSH as root using password authentication. You should only make this " | ||
52 | "change if you do not need to do that." | ||
53 | msgstr "" | ||
54 | "Denna förändring gör system säkrare mot brute-force-angrepp med hjälp av " | ||
55 | "ordlistor med lösenord på root-användaren (ett väldigt vanligt mål för " | ||
56 | "sådana angrepp). Dock så kan detta förstöra system som förväntas kunna " | ||
57 | "använda SSH som root med hjälp av lösenordsautentisering. Du skall endast " | ||
58 | "göra denna förändring om du inte har ett behov av att kunna göra detta." | ||
diff --git a/debian/po/templates.pot b/debian/po/templates.pot new file mode 100644 index 000000000..47c9e3686 --- /dev/null +++ b/debian/po/templates.pot | |||
@@ -0,0 +1,46 @@ | |||
1 | # SOME DESCRIPTIVE TITLE. | ||
2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER | ||
3 | # This file is distributed under the same license as the PACKAGE package. | ||
4 | # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. | ||
5 | # | ||
6 | #, fuzzy | ||
7 | msgid "" | ||
8 | msgstr "" | ||
9 | "Project-Id-Version: openssh\n" | ||
10 | "Report-Msgid-Bugs-To: openssh@packages.debian.org\n" | ||
11 | "POT-Creation-Date: 2014-03-20 02:06+0000\n" | ||
12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" | ||
13 | "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" | ||
14 | "Language-Team: LANGUAGE <LL@li.org>\n" | ||
15 | "Language: \n" | ||
16 | "MIME-Version: 1.0\n" | ||
17 | "Content-Type: text/plain; charset=CHARSET\n" | ||
18 | "Content-Transfer-Encoding: 8bit\n" | ||
19 | |||
20 | #. Type: boolean | ||
21 | #. Description | ||
22 | #: ../openssh-server.templates:1001 | ||
23 | msgid "Disable SSH password authentication for root?" | ||
24 | msgstr "" | ||
25 | |||
26 | #. Type: boolean | ||
27 | #. Description | ||
28 | #: ../openssh-server.templates:1001 | ||
29 | msgid "" | ||
30 | "Previous versions of openssh-server permitted logging in as root over SSH " | ||
31 | "using password authentication. The default for new installations is now " | ||
32 | "\"PermitRootLogin prohibit-password\", which disables password " | ||
33 | "authentication for root without breaking systems that have explicitly " | ||
34 | "configured SSH public key authentication for root." | ||
35 | msgstr "" | ||
36 | |||
37 | #. Type: boolean | ||
38 | #. Description | ||
39 | #: ../openssh-server.templates:1001 | ||
40 | msgid "" | ||
41 | "This change makes systems more secure against brute-force password " | ||
42 | "dictionary attacks on the root user (a very common target for such attacks). " | ||
43 | "However, it may break systems that are set up with the expectation of being " | ||
44 | "able to SSH as root using password authentication. You should only make this " | ||
45 | "change if you do not need to do that." | ||
46 | msgstr "" | ||
diff --git a/debian/po/tr.po b/debian/po/tr.po new file mode 100644 index 000000000..1ada04101 --- /dev/null +++ b/debian/po/tr.po | |||
@@ -0,0 +1,58 @@ | |||
1 | # Turkish translation of openssh package | ||
2 | # Copyright (C) 2014 Mert Dirik | ||
3 | # This file is distributed under the same license as the openssh package. | ||
4 | # Mert Dirik <mertdirik@gmail.com>, 2014. | ||
5 | # | ||
6 | msgid "" | ||
7 | msgstr "" | ||
8 | "Project-Id-Version: openssh-server\n" | ||
9 | "Report-Msgid-Bugs-To: openssh@packages.debian.org\n" | ||
10 | "POT-Creation-Date: 2014-03-20 02:06+0000\n" | ||
11 | "PO-Revision-Date: 2014-08-01 14:44+0200\n" | ||
12 | "Last-Translator: Mert Dirik <mertdirik@gmail.com>\n" | ||
13 | "Language-Team: Debian L10n Turkish <debian-l10n-turkish@lists.debian.org>\n" | ||
14 | "MIME-Version: 1.0\n" | ||
15 | "Content-Type: text/plain; charset=UTF-8\n" | ||
16 | "Content-Transfer-Encoding: 8bit\n" | ||
17 | "X-Generator: Poedit 1.5.4\n" | ||
18 | "Language: tr\n" | ||
19 | |||
20 | #. Type: boolean | ||
21 | #. Description | ||
22 | #: ../openssh-server.templates:1001 | ||
23 | msgid "Disable SSH password authentication for root?" | ||
24 | msgstr "root kullanıcısının parola ile kimlik doğrulaması engellensin mi?" | ||
25 | |||
26 | #. Type: boolean | ||
27 | #. Description | ||
28 | #: ../openssh-server.templates:1001 | ||
29 | msgid "" | ||
30 | "Previous versions of openssh-server permitted logging in as root over SSH " | ||
31 | "using password authentication. The default for new installations is now " | ||
32 | "\"PermitRootLogin prohibit-password\", which disables password " | ||
33 | "authentication for root without breaking systems that have explicitly " | ||
34 | "configured SSH public key authentication for root." | ||
35 | msgstr "" | ||
36 | "openssh-server'ın önceki sürümleri parola ile kimlik doğrulama kullanılarak " | ||
37 | "root kullanıcısının SSH üzerinden oturum açmasına izin veriyordu. Artık yeni " | ||
38 | "kurulumların öntanımlı ayarı \"PermitRootLogin prohibit-password\" " | ||
39 | "şeklindedir. Bu ayar root kullanıcısının parola kullanarak oturum açmasını " | ||
40 | "yasaklar. SSH genel anahtar doğrulama yöntemine ayrıca izin veren mevcut " | ||
41 | "sistemler bu ayardan etkilenmez." | ||
42 | |||
43 | #. Type: boolean | ||
44 | #. Description | ||
45 | #: ../openssh-server.templates:1001 | ||
46 | msgid "" | ||
47 | "This change makes systems more secure against brute-force password " | ||
48 | "dictionary attacks on the root user (a very common target for such attacks). " | ||
49 | "However, it may break systems that are set up with the expectation of being " | ||
50 | "able to SSH as root using password authentication. You should only make this " | ||
51 | "change if you do not need to do that." | ||
52 | msgstr "" | ||
53 | "Bu ayar sistemleri kaba kuvvet sözlükten parola saldırılarına karşı güvenli " | ||
54 | "hale getirir (root kullanıcısı bu tarz saldırıların en büyük " | ||
55 | "hedeflerindendir). Fakat bu ayarın etkinleştirilmesi, root kullanıcısına " | ||
56 | "parola doğrulama yöntemiyle oturum açılabileceği varsayımıyla hareket eden " | ||
57 | "sistemlerde eskiden çalışan düzenin bozulmasına sebep olacaktır. Bu " | ||
58 | "değişikliği yalnızca sorun çıkarmayacağından eminseniz yapın." | ||
diff --git a/debian/rules b/debian/rules new file mode 100755 index 000000000..550306d4f --- /dev/null +++ b/debian/rules | |||
@@ -0,0 +1,230 @@ | |||
1 | #!/usr/bin/make -f | ||
2 | |||
3 | export DEB_BUILD_MAINT_OPTIONS := hardening=+all | ||
4 | |||
5 | include /usr/share/dpkg/default.mk | ||
6 | |||
7 | # Uncomment this to turn on verbose mode. | ||
8 | # export DH_VERBOSE=1 | ||
9 | |||
10 | # This has to be exported to make some magic below work. | ||
11 | export DH_OPTIONS | ||
12 | |||
13 | ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) | ||
14 | RUN_TESTS := yes | ||
15 | else | ||
16 | RUN_TESTS := | ||
17 | endif | ||
18 | |||
19 | ifeq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) | ||
20 | PARALLEL := | ||
21 | else | ||
22 | PARALLEL := \ | ||
23 | -j$(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) | ||
24 | endif | ||
25 | |||
26 | ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) | ||
27 | CC := gcc | ||
28 | PKG_CONFIG = pkg-config | ||
29 | else | ||
30 | CC := $(DEB_HOST_GNU_TYPE)-gcc | ||
31 | PKG_CONFIG = $(DEB_HOST_GNU_TYPE)-pkg-config | ||
32 | RUN_TESTS := | ||
33 | endif | ||
34 | |||
35 | # Change the version string to reflect distribution | ||
36 | SSH_EXTRAVERSION := $(DEB_VENDOR)-$(shell echo '$(DEB_VERSION)' | sed -e 's/.*-//') | ||
37 | |||
38 | UBUNTU := $(shell $(call dpkg_vendor_derives_from,Ubuntu)) | ||
39 | ifeq ($(UBUNTU),yes) | ||
40 | DEFAULT_PATH := /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games | ||
41 | else | ||
42 | DEFAULT_PATH := /usr/local/bin:/usr/bin:/bin:/usr/games | ||
43 | endif | ||
44 | SUPERUSER_PATH := /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin | ||
45 | |||
46 | ifeq ($(UBUNTU),yes) | ||
47 | server_recommends := ssh-import-id | ||
48 | else | ||
49 | server_recommends := | ||
50 | endif | ||
51 | |||
52 | # Common path configuration. | ||
53 | confflags += --sysconfdir=/etc/ssh | ||
54 | confflags += --libexecdir=\$${prefix}/lib/openssh | ||
55 | |||
56 | # Common build options. | ||
57 | confflags += --disable-strip | ||
58 | confflags += --with-mantype=doc | ||
59 | confflags += --with-4in6 | ||
60 | confflags += --with-privsep-path=/run/sshd | ||
61 | confflags += --with-pid-dir=/run | ||
62 | |||
63 | # The Hurd needs libcrypt for res_query et al. | ||
64 | ifeq ($(DEB_HOST_ARCH_OS),hurd) | ||
65 | confflags += --with-libs=-lcrypt | ||
66 | endif | ||
67 | |||
68 | # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60155 | ||
69 | ifeq ($(DEB_HOST_ARCH),hppa) | ||
70 | confflags += --without-hardening | ||
71 | endif | ||
72 | |||
73 | # Everything above here is common to the deb and udeb builds. | ||
74 | confflags_udeb := $(confflags) | ||
75 | |||
76 | # Options specific to the deb build. | ||
77 | confflags += --with-tcp-wrappers | ||
78 | confflags += --with-pam | ||
79 | confflags += --with-libedit | ||
80 | confflags += --with-kerberos5=/usr | ||
81 | confflags += --with-ssl-engine | ||
82 | ifeq ($(DEB_HOST_ARCH_OS),linux) | ||
83 | confflags += --with-selinux | ||
84 | confflags += --with-audit=linux | ||
85 | confflags += --with-systemd | ||
86 | endif | ||
87 | |||
88 | # The deb build wants xauth; the udeb build doesn't. | ||
89 | confflags += --with-xauth=/usr/bin/xauth | ||
90 | confflags_udeb += --without-xauth | ||
91 | |||
92 | # Default paths. The udeb build has /usr/games removed. | ||
93 | confflags += --with-default-path=$(DEFAULT_PATH) --with-superuser-path=$(SUPERUSER_PATH) | ||
94 | confflags_udeb += --with-default-path=/usr/local/bin:/usr/bin:/bin --with-superuser-path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin | ||
95 | |||
96 | # Compiler flags. | ||
97 | cflags := $(CPPFLAGS) $(CFLAGS) | ||
98 | cflags += -DSSH_EXTRAVERSION=\"$(SSH_EXTRAVERSION)\" | ||
99 | cflags_udeb := -Os | ||
100 | cflags_udeb += -DSSH_EXTRAVERSION=\"$(SSH_EXTRAVERSION)\" | ||
101 | confflags += --with-cflags='$(cflags)' | ||
102 | confflags_udeb += --with-cflags='$(cflags_udeb)' | ||
103 | |||
104 | # Linker flags. | ||
105 | confflags += --with-ldflags='$(strip -Wl,--as-needed $(LDFLAGS))' | ||
106 | confflags_udeb += --with-ldflags='-Wl,--as-needed' | ||
107 | |||
108 | %: | ||
109 | dh $@ --with=autoreconf,systemd | ||
110 | |||
111 | autoreconf: | ||
112 | autoreconf -f -i | ||
113 | cp -f /usr/share/misc/config.guess /usr/share/misc/config.sub ./ | ||
114 | |||
115 | override_dh_autoreconf-arch: | ||
116 | dh_autoreconf debian/rules -- autoreconf | ||
117 | |||
118 | override_dh_autoreconf-indep: | ||
119 | |||
120 | override_dh_auto_configure-arch: | ||
121 | dh_auto_configure -Bdebian/build-deb -- $(confflags) | ||
122 | ifeq ($(filter noudeb,$(DEB_BUILD_PROFILES)),) | ||
123 | dh_auto_configure -Bdebian/build-udeb -- $(confflags_udeb) | ||
124 | # Avoid libnsl linkage. Ugh. | ||
125 | perl -pi -e 's/ +-lnsl//' debian/build-udeb/config.status | ||
126 | cd debian/build-udeb && ./config.status | ||
127 | endif | ||
128 | |||
129 | override_dh_auto_configure-indep: | ||
130 | |||
131 | override_dh_auto_build-arch: | ||
132 | $(MAKE) -C debian/build-deb $(PARALLEL) ASKPASS_PROGRAM='/usr/bin/ssh-askpass' | ||
133 | $(MAKE) -C debian/build-deb regress-prep | ||
134 | $(MAKE) -C debian/build-deb $(PARALLEL) regress-binaries | ||
135 | ifeq ($(filter noudeb,$(DEB_BUILD_PROFILES)),) | ||
136 | $(MAKE) -C debian/build-udeb $(PARALLEL) ASKPASS_PROGRAM='/usr/bin/ssh-askpass' ssh scp sftp sshd ssh-keygen | ||
137 | endif | ||
138 | |||
139 | ifeq ($(filter pkg.openssh.nognome,$(DEB_BUILD_PROFILES)),) | ||
140 | $(MAKE) -C contrib gnome-ssh-askpass3 CC='$(CC) $(CPPFLAGS) $(CFLAGS) -Wall -Wl,--as-needed $(LDFLAGS)' PKG_CONFIG=$(PKG_CONFIG) | ||
141 | endif | ||
142 | |||
143 | override_dh_auto_build-indep: | ||
144 | |||
145 | override_dh_auto_test-arch: | ||
146 | ifeq ($(RUN_TESTS),yes) | ||
147 | $(MAKE) -C debian/build-deb/regress \ | ||
148 | .OBJDIR="$(CURDIR)/debian/build-deb/regress" \ | ||
149 | .CURDIR="$(CURDIR)/regress" \ | ||
150 | unit | ||
151 | $(MAKE) -C debian/build-deb compat-tests | ||
152 | $(MAKE) -C debian/keygen-test | ||
153 | endif | ||
154 | |||
155 | override_dh_auto_test-indep: | ||
156 | |||
157 | override_dh_auto_clean: | ||
158 | rm -rf debian/build-deb debian/build-udeb | ||
159 | ifeq ($(RUN_TESTS),yes) | ||
160 | $(MAKE) -C debian/keygen-test clean | ||
161 | endif | ||
162 | $(MAKE) -C contrib clean | ||
163 | |||
164 | override_dh_auto_install-arch: | ||
165 | $(MAKE) -C debian/build-deb DESTDIR=`pwd`/debian/tmp install-nokeys | ||
166 | |||
167 | override_dh_auto_install-indep: | ||
168 | |||
169 | override_dh_install-arch: | ||
170 | rm -f debian/tmp/etc/ssh/sshd_config | ||
171 | |||
172 | dh_install -Nopenssh-client-udeb -Nopenssh-server-udeb --fail-missing | ||
173 | ifeq ($(filter noudeb,$(DEB_BUILD_PROFILES)),) | ||
174 | dh_install -popenssh-client-udeb -popenssh-server-udeb \ | ||
175 | --sourcedir=debian/build-udeb | ||
176 | endif | ||
177 | |||
178 | # Remove version control tags to avoid unnecessary conffile | ||
179 | # resolution steps for administrators. | ||
180 | sed -i '/\$$OpenBSD:/d' \ | ||
181 | debian/openssh-server/etc/ssh/moduli \ | ||
182 | debian/openssh-client/etc/ssh/ssh_config | ||
183 | |||
184 | # We'd like to use dh_install --fail-missing here, but that doesn't work | ||
185 | # well in combination with dh-exec: it complains that files generated by | ||
186 | # dh-exec for architecture-dependent packages aren't installed. | ||
187 | override_dh_install-indep: | ||
188 | rm -f debian/tmp/etc/ssh/sshd_config | ||
189 | dh_install | ||
190 | |||
191 | override_dh_installdocs: | ||
192 | dh_installdocs -Nopenssh-server -Nopenssh-sftp-server | ||
193 | dh_installdocs -popenssh-server -popenssh-sftp-server \ | ||
194 | --link-doc=openssh-client | ||
195 | # Avoid breaking dh_installexamples later. | ||
196 | mkdir -p debian/openssh-server/usr/share/doc/openssh-client | ||
197 | |||
198 | override_dh_systemd_enable: | ||
199 | dh_systemd_enable -popenssh-server --name ssh ssh.service | ||
200 | dh_systemd_enable -popenssh-server --name ssh --no-enable ssh.socket | ||
201 | |||
202 | override_dh_installinit: | ||
203 | dh_installinit -R --name ssh | ||
204 | |||
205 | debian/openssh-server.sshd.pam: debian/openssh-server.sshd.pam.in | ||
206 | ifeq ($(DEB_HOST_ARCH_OS),linux) | ||
207 | sed 's/^@IF_KEYINIT@//' $< > $@ | ||
208 | else | ||
209 | sed '/^@IF_KEYINIT@/d' $< > $@ | ||
210 | endif | ||
211 | |||
212 | override_dh_installpam: debian/openssh-server.sshd.pam | ||
213 | dh_installpam --name sshd | ||
214 | |||
215 | override_dh_fixperms-arch: | ||
216 | dh_fixperms | ||
217 | chmod u+s debian/openssh-client/usr/lib/openssh/ssh-keysign | ||
218 | |||
219 | # Tighten libssl dependencies to match the check in entropy.c. | ||
220 | override_dh_shlibdeps: | ||
221 | dh_shlibdeps | ||
222 | debian/adjust-openssl-dependencies | ||
223 | |||
224 | override_dh_gencontrol: | ||
225 | dh_gencontrol -- -V'openssh-server:Recommends=$(server_recommends)' | ||
226 | |||
227 | debian/faq.html: | ||
228 | wget -O - http://www.openssh.com/faq.html | \ | ||
229 | sed 's,\(href="\)\(txt/\|[^":]*\.html\),\1http://www.openssh.com/\2,g' \ | ||
230 | > debian/faq.html | ||
diff --git a/debian/run-tests b/debian/run-tests new file mode 100755 index 000000000..7c7a8b2a3 --- /dev/null +++ b/debian/run-tests | |||
@@ -0,0 +1,39 @@ | |||
1 | #! /bin/sh | ||
2 | # Run installed OpenSSH regression tests. | ||
3 | |||
4 | tmp="$1" | ||
5 | if [ -z "$tmp" ]; then | ||
6 | tmp="$(mktemp -d)" | ||
7 | cleanup () { | ||
8 | rm -rf "$tmp" | ||
9 | } | ||
10 | trap cleanup EXIT | ||
11 | fi | ||
12 | |||
13 | # Copy the regression tests to a fresh directory; this is easier than trying | ||
14 | # to pick apart which ones need write access. | ||
15 | cp -a /usr/lib/openssh/regress "$tmp/regress" | ||
16 | |||
17 | ret=0 | ||
18 | make -C "$tmp/regress" \ | ||
19 | .OBJDIR="$tmp/regress" \ | ||
20 | .CURDIR="$tmp/regress" \ | ||
21 | BUILDDIR="$tmp/regress" \ | ||
22 | OBJ="$tmp/regress" \ | ||
23 | SUDO=sudo \ | ||
24 | TEST_SHELL=sh \ | ||
25 | TEST_SSH_SFTPSERVER=/usr/lib/openssh/sftp-server \ | ||
26 | TEST_SSH_PLINK=plink \ | ||
27 | TEST_SSH_PUTTYGEN=puttygen \ | ||
28 | TEST_SSH_CONCH=conch \ | ||
29 | TEST_SSH_IPV6=yes \ | ||
30 | TEST_SSH_ECC=yes \ | ||
31 | tests interop-tests </dev/zero || ret="$?" | ||
32 | if [ "$ret" -ne 0 ]; then | ||
33 | for log in failed-regress.log failed-ssh.log failed-sshd.log; do | ||
34 | if [ -e "$tmp/regress/$log" ]; then | ||
35 | tail -v -n+0 "$tmp/regress/$log" | ||
36 | fi | ||
37 | done | ||
38 | fi | ||
39 | exit "$ret" | ||
diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 000000000..163aaf8d8 --- /dev/null +++ b/debian/source/format | |||
@@ -0,0 +1 @@ | |||
3.0 (quilt) | |||
diff --git a/debian/source/include-binaries b/debian/source/include-binaries new file mode 100644 index 000000000..df5790e2e --- /dev/null +++ b/debian/source/include-binaries | |||
@@ -0,0 +1 @@ | |||
debian/ssh-askpass-gnome.png | |||
diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides new file mode 100644 index 000000000..1a0c77d41 --- /dev/null +++ b/debian/source/lintian-overrides | |||
@@ -0,0 +1,2 @@ | |||
1 | # openssh-server/password-authentication is preseeding-only, at least for now. | ||
2 | openssh source: untranslatable-debconf-templates openssh-server.templates: 20 | ||
diff --git a/debian/ssh-argv0 b/debian/ssh-argv0 new file mode 100644 index 000000000..37506a4d7 --- /dev/null +++ b/debian/ssh-argv0 | |||
@@ -0,0 +1,31 @@ | |||
1 | #! /bin/sh | ||
2 | set -e | ||
3 | |||
4 | # Copyright (c) 2001 Jonathan Amery. | ||
5 | # | ||
6 | # Redistribution and use in source and binary forms, with or without | ||
7 | # modification, are permitted provided that the following conditions | ||
8 | # are met: | ||
9 | # 1. Redistributions of source code must retain the above copyright | ||
10 | # notice, this list of conditions and the following disclaimer. | ||
11 | # 2. Redistributions in binary form must reproduce the above copyright | ||
12 | # notice, this list of conditions and the following disclaimer in the | ||
13 | # documentation and/or other materials provided with the distribution. | ||
14 | # | ||
15 | # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | ||
16 | # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | ||
17 | # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | ||
18 | # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
19 | # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | ||
20 | # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
21 | # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | ||
22 | # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
23 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | ||
24 | # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
25 | |||
26 | if [ "${0##*/}" = "ssh-argv0" ] | ||
27 | then | ||
28 | echo 'ssh-argv0: This script should not be run like this, see ssh-argv0(1) for details' 1>&2 | ||
29 | exit 1 | ||
30 | fi | ||
31 | exec ssh "${0##*/}" "$@" | ||
diff --git a/debian/ssh-argv0.1 b/debian/ssh-argv0.1 new file mode 100644 index 000000000..a36a63d40 --- /dev/null +++ b/debian/ssh-argv0.1 | |||
@@ -0,0 +1,64 @@ | |||
1 | .Dd September 7, 2001 | ||
2 | .Dt SSH-ARGV0 1 | ||
3 | .Os Debian Project | ||
4 | .Sh NAME | ||
5 | .Nm ssh-argv0 | ||
6 | .Nd replaces the old ssh command-name as hostname handling | ||
7 | .Sh SYNOPSIS | ||
8 | .Ar hostname | user@hostname | ||
9 | .Op Fl l Ar login_name | ||
10 | .Op Ar command | ||
11 | .Pp | ||
12 | .Ar hostname | user@hostname | ||
13 | .Op Fl afgknqstvxACNTX1246 | ||
14 | .Op Fl b Ar bind_address | ||
15 | .Op Fl c Ar cipher_spec | ||
16 | .Op Fl e Ar escape_char | ||
17 | .Op Fl i Ar identity_file | ||
18 | .Op Fl l Ar login_name | ||
19 | .Op Fl m Ar mac_spec | ||
20 | .Op Fl o Ar option | ||
21 | .Op Fl p Ar port | ||
22 | .Op Fl F Ar configfile | ||
23 | .Oo Fl L Xo | ||
24 | .Sm off | ||
25 | .Ar port : | ||
26 | .Ar host : | ||
27 | .Ar hostport | ||
28 | .Sm on | ||
29 | .Xc | ||
30 | .Oc | ||
31 | .Oo Fl R Xo | ||
32 | .Sm off | ||
33 | .Ar port : | ||
34 | .Ar host : | ||
35 | .Ar hostport | ||
36 | .Sm on | ||
37 | .Xc | ||
38 | .Oc | ||
39 | .Op Fl D Ar port | ||
40 | .Op Ar command | ||
41 | .Sh DESCRIPTION | ||
42 | .Nm | ||
43 | replaces the old ssh command-name as hostname handling. | ||
44 | If you link to this script with a hostname then executing the link is | ||
45 | equivalent to having executed ssh with that hostname as an argument. | ||
46 | All other arguments are passed to ssh and will be processed normally. | ||
47 | .Sh OPTIONS | ||
48 | See | ||
49 | .Xr ssh 1 . | ||
50 | .Sh FILES | ||
51 | See | ||
52 | .Xr ssh 1 . | ||
53 | .Sh AUTHORS | ||
54 | OpenSSH is a derivative of the original and free | ||
55 | ssh 1.2.12 release by Tatu Ylonen. | ||
56 | Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos, | ||
57 | Theo de Raadt and Dug Song | ||
58 | removed many bugs, re-added newer features and | ||
59 | created OpenSSH. | ||
60 | Markus Friedl contributed the support for SSH | ||
61 | protocol versions 1.5 and 2.0. | ||
62 | Jonathan Amery wrote this ssh-argv0 script and the associated documentation. | ||
63 | .Sh SEE ALSO | ||
64 | .Xr ssh 1 | ||
diff --git a/debian/ssh-askpass-gnome.desktop b/debian/ssh-askpass-gnome.desktop new file mode 100644 index 000000000..eba7a67d1 --- /dev/null +++ b/debian/ssh-askpass-gnome.desktop | |||
@@ -0,0 +1,12 @@ | |||
1 | [Desktop Entry] | ||
2 | Version=1.0 | ||
3 | Encoding=UTF-8 | ||
4 | Name=SSH AskPass | ||
5 | GenericName=ssh-add | ||
6 | Comment=Enter passphrase to authenticate to the ssh agent | ||
7 | Exec=/usr/bin/ssh-add | ||
8 | TryExec=ssh-add | ||
9 | Terminal=false | ||
10 | Type=Application | ||
11 | Icon=ssh-askpass-gnome | ||
12 | Categories=Network;Security; | ||
diff --git a/debian/ssh-askpass-gnome.examples b/debian/ssh-askpass-gnome.examples new file mode 100644 index 000000000..66fd8c0e4 --- /dev/null +++ b/debian/ssh-askpass-gnome.examples | |||
@@ -0,0 +1 @@ | |||
debian/ssh-askpass-gnome.desktop | |||
diff --git a/debian/ssh-askpass-gnome.install b/debian/ssh-askpass-gnome.install new file mode 100755 index 000000000..8715aafaf --- /dev/null +++ b/debian/ssh-askpass-gnome.install | |||
@@ -0,0 +1,3 @@ | |||
1 | #! /usr/bin/dh-exec | ||
2 | contrib/gnome-ssh-askpass3 => usr/lib/openssh/gnome-ssh-askpass | ||
3 | debian/ssh-askpass-gnome.png usr/share/pixmaps | ||
diff --git a/debian/ssh-askpass-gnome.manpages b/debian/ssh-askpass-gnome.manpages new file mode 100644 index 000000000..7749f13bb --- /dev/null +++ b/debian/ssh-askpass-gnome.manpages | |||
@@ -0,0 +1 @@ | |||
debian/gnome-ssh-askpass.1 | |||
diff --git a/debian/ssh-askpass-gnome.png b/debian/ssh-askpass-gnome.png new file mode 100644 index 000000000..06f75764e --- /dev/null +++ b/debian/ssh-askpass-gnome.png | |||
Binary files differ | |||
diff --git a/debian/ssh-askpass-gnome.postinst b/debian/ssh-askpass-gnome.postinst new file mode 100644 index 000000000..8a454e520 --- /dev/null +++ b/debian/ssh-askpass-gnome.postinst | |||
@@ -0,0 +1,48 @@ | |||
1 | #! /bin/sh | ||
2 | # postinst script for ssh-askpass-gnome | ||
3 | # | ||
4 | # see: dh_installdeb(1) | ||
5 | |||
6 | set -e | ||
7 | |||
8 | # summary of how this script can be called: | ||
9 | # * <postinst> `configure' <most-recently-configured-version> | ||
10 | # * <old-postinst> `abort-upgrade' <new version> | ||
11 | # * <conflictor's-postinst> `abort-remove' `in-favour' <package> | ||
12 | # <new-version> | ||
13 | # * <deconfigured's-postinst> `abort-deconfigure' `in-favour' | ||
14 | # <failed-install-package> <version> `removing' | ||
15 | # <conflicting-package> <version> | ||
16 | # for details, see /usr/share/doc/packaging-manual/ | ||
17 | # | ||
18 | # quoting from the policy: | ||
19 | # Any necessary prompting should almost always be confined to the | ||
20 | # post-installation script, and should be protected with a conditional | ||
21 | # so that unnecessary prompting doesn't happen if a package's | ||
22 | # installation fails and the `postinst' is called with `abort-upgrade', | ||
23 | # `abort-remove' or `abort-deconfigure'. | ||
24 | |||
25 | case "$1" in | ||
26 | configure) | ||
27 | update-alternatives --quiet \ | ||
28 | --install /usr/bin/ssh-askpass ssh-askpass \ | ||
29 | /usr/lib/openssh/gnome-ssh-askpass 30 \ | ||
30 | --slave /usr/share/man/man1/ssh-askpass.1.gz \ | ||
31 | ssh-askpass.1.gz /usr/share/man/man1/gnome-ssh-askpass.1.gz | ||
32 | ;; | ||
33 | |||
34 | abort-upgrade|abort-remove|abort-deconfigure) | ||
35 | ;; | ||
36 | |||
37 | *) | ||
38 | echo "postinst called with unknown argument \`$1'" >&2 | ||
39 | exit 0 | ||
40 | ;; | ||
41 | esac | ||
42 | |||
43 | # dh_installdeb will replace this with shell code automatically | ||
44 | # generated by other debhelper scripts. | ||
45 | |||
46 | #DEBHELPER# | ||
47 | |||
48 | exit 0 | ||
diff --git a/debian/ssh-askpass-gnome.prerm b/debian/ssh-askpass-gnome.prerm new file mode 100644 index 000000000..0adcfc76b --- /dev/null +++ b/debian/ssh-askpass-gnome.prerm | |||
@@ -0,0 +1,39 @@ | |||
1 | #! /bin/sh | ||
2 | # prerm script for ssh-askpass-gnome | ||
3 | # | ||
4 | # see: dh_installdeb(1) | ||
5 | |||
6 | set -e | ||
7 | |||
8 | # summary of how this script can be called: | ||
9 | # * <prerm> `remove' | ||
10 | # * <old-prerm> `upgrade' <new-version> | ||
11 | # * <new-prerm> `failed-upgrade' <old-version> | ||
12 | # * <conflictor's-prerm> `remove' `in-favour' <package> <new-version> | ||
13 | # * <deconfigured's-prerm> `deconfigure' `in-favour' | ||
14 | # <package-being-installed> <version> `removing' | ||
15 | # <conflicting-package> <version> | ||
16 | # for details, see /usr/share/doc/packaging-manual/ | ||
17 | |||
18 | case "$1" in | ||
19 | remove|deconfigure) | ||
20 | update-alternatives --quiet --remove ssh-askpass /usr/lib/openssh/gnome-ssh-askpass | ||
21 | ;; | ||
22 | upgrade) | ||
23 | ;; | ||
24 | failed-upgrade) | ||
25 | ;; | ||
26 | *) | ||
27 | echo "prerm called with unknown argument \`$1'" >&2 | ||
28 | exit 0 | ||
29 | ;; | ||
30 | esac | ||
31 | |||
32 | # dh_installdeb will replace this with shell code automatically | ||
33 | # generated by other debhelper scripts. | ||
34 | |||
35 | #DEBHELPER# | ||
36 | |||
37 | exit 0 | ||
38 | |||
39 | |||
diff --git a/debian/ssh.maintscript b/debian/ssh.maintscript new file mode 100644 index 000000000..efd370e25 --- /dev/null +++ b/debian/ssh.maintscript | |||
@@ -0,0 +1 @@ | |||
symlink_to_dir /usr/share/doc/ssh /usr/share/doc/openssh-client 1:6.6p1-8~ | |||
diff --git a/debian/systemd/rescue-ssh.target b/debian/systemd/rescue-ssh.target new file mode 100644 index 000000000..9501b7fd0 --- /dev/null +++ b/debian/systemd/rescue-ssh.target | |||
@@ -0,0 +1,6 @@ | |||
1 | [Unit] | ||
2 | Description=Rescue with network and ssh | ||
3 | Documentation=man:systemd.special(7) | ||
4 | Requires=network-online.target ssh.service | ||
5 | After=network-online.target ssh.service | ||
6 | AllowIsolate=yes | ||
diff --git a/debian/systemd/ssh-agent.override b/debian/systemd/ssh-agent.override new file mode 100644 index 000000000..2905494b6 --- /dev/null +++ b/debian/systemd/ssh-agent.override | |||
@@ -0,0 +1 @@ | |||
manual | |||
diff --git a/debian/systemd/ssh-agent.service b/debian/systemd/ssh-agent.service new file mode 100644 index 000000000..cdc10bb47 --- /dev/null +++ b/debian/systemd/ssh-agent.service | |||
@@ -0,0 +1,11 @@ | |||
1 | [Unit] | ||
2 | Description=OpenSSH Agent | ||
3 | Documentation=man:ssh-agent(1) | ||
4 | Before=graphical-session-pre.target | ||
5 | ConditionPathExists=/etc/X11/Xsession.options | ||
6 | Wants=dbus.socket | ||
7 | After=dbus.socket | ||
8 | |||
9 | [Service] | ||
10 | ExecStart=/usr/lib/openssh/agent-launch start | ||
11 | ExecStopPost=/usr/lib/openssh/agent-launch stop | ||
diff --git a/debian/systemd/ssh-session-cleanup b/debian/systemd/ssh-session-cleanup new file mode 100755 index 000000000..f283cc967 --- /dev/null +++ b/debian/systemd/ssh-session-cleanup | |||
@@ -0,0 +1,11 @@ | |||
1 | #! /bin/sh | ||
2 | |||
3 | ssh_session_pattern='sshd: \S.*@pts/[0-9]+' | ||
4 | |||
5 | IFS="$IFS@" | ||
6 | pgrep -a -f "$ssh_session_pattern" | while read pid daemon user pty; do | ||
7 | echo "Found ${daemon%:} session $pid on $pty; sending SIGTERM" | ||
8 | kill "$pid" || true | ||
9 | done | ||
10 | |||
11 | exit 0 | ||
diff --git a/debian/systemd/ssh-session-cleanup.service b/debian/systemd/ssh-session-cleanup.service new file mode 100644 index 000000000..b86727227 --- /dev/null +++ b/debian/systemd/ssh-session-cleanup.service | |||
@@ -0,0 +1,13 @@ | |||
1 | [Unit] | ||
2 | Description=OpenBSD Secure Shell session cleanup | ||
3 | Wants=network.target | ||
4 | After=network.target | ||
5 | |||
6 | [Service] | ||
7 | ExecStart=/bin/true | ||
8 | ExecStop=/usr/lib/openssh/ssh-session-cleanup | ||
9 | RemainAfterExit=yes | ||
10 | Type=oneshot | ||
11 | |||
12 | [Install] | ||
13 | WantedBy=multi-user.target | ||
diff --git a/debian/systemd/ssh.service b/debian/systemd/ssh.service new file mode 100644 index 000000000..7495d9a81 --- /dev/null +++ b/debian/systemd/ssh.service | |||
@@ -0,0 +1,22 @@ | |||
1 | [Unit] | ||
2 | Description=OpenBSD Secure Shell server | ||
3 | Documentation=man:sshd(8) man:sshd_config(5) | ||
4 | After=network.target auditd.service | ||
5 | ConditionPathExists=!/etc/ssh/sshd_not_to_be_run | ||
6 | |||
7 | [Service] | ||
8 | EnvironmentFile=-/etc/default/ssh | ||
9 | ExecStartPre=/usr/sbin/sshd -t | ||
10 | ExecStart=/usr/sbin/sshd -D $SSHD_OPTS | ||
11 | ExecReload=/usr/sbin/sshd -t | ||
12 | ExecReload=/bin/kill -HUP $MAINPID | ||
13 | KillMode=process | ||
14 | Restart=on-failure | ||
15 | RestartPreventExitStatus=255 | ||
16 | Type=notify | ||
17 | RuntimeDirectory=sshd | ||
18 | RuntimeDirectoryMode=0755 | ||
19 | |||
20 | [Install] | ||
21 | WantedBy=multi-user.target | ||
22 | Alias=sshd.service | ||
diff --git a/debian/systemd/ssh.socket b/debian/systemd/ssh.socket new file mode 100644 index 000000000..5a766dcab --- /dev/null +++ b/debian/systemd/ssh.socket | |||
@@ -0,0 +1,12 @@ | |||
1 | [Unit] | ||
2 | Description=OpenBSD Secure Shell server socket | ||
3 | Before=ssh.service | ||
4 | Conflicts=ssh.service | ||
5 | ConditionPathExists=!/etc/ssh/sshd_not_to_be_run | ||
6 | |||
7 | [Socket] | ||
8 | ListenStream=22 | ||
9 | Accept=yes | ||
10 | |||
11 | [Install] | ||
12 | WantedBy=sockets.target | ||
diff --git a/debian/systemd/ssh@.service b/debian/systemd/ssh@.service new file mode 100644 index 000000000..f7fec1f6f --- /dev/null +++ b/debian/systemd/ssh@.service | |||
@@ -0,0 +1,11 @@ | |||
1 | [Unit] | ||
2 | Description=OpenBSD Secure Shell server per-connection daemon | ||
3 | Documentation=man:sshd(8) man:sshd_config(5) | ||
4 | After=auditd.service | ||
5 | |||
6 | [Service] | ||
7 | EnvironmentFile=-/etc/default/ssh | ||
8 | ExecStart=-/usr/sbin/sshd -i $SSHD_OPTS | ||
9 | StandardInput=socket | ||
10 | RuntimeDirectory=sshd | ||
11 | RuntimeDirectoryMode=0755 | ||
diff --git a/debian/tests/control b/debian/tests/control new file mode 100644 index 000000000..b010ac63c --- /dev/null +++ b/debian/tests/control | |||
@@ -0,0 +1,10 @@ | |||
1 | Tests: regress | ||
2 | Restrictions: needs-root allow-stderr | ||
3 | Depends: devscripts, | ||
4 | haveged, | ||
5 | openssh-tests, | ||
6 | openssl, | ||
7 | putty-tools, | ||
8 | python-twisted-conch, | ||
9 | sudo, | ||
10 | sysvinit-utils, | ||
diff --git a/debian/tests/regress b/debian/tests/regress new file mode 100755 index 000000000..8bb73ee95 --- /dev/null +++ b/debian/tests/regress | |||
@@ -0,0 +1,66 @@ | |||
1 | #! /bin/sh | ||
2 | set -e | ||
3 | |||
4 | if [ "$(id -un)" != openssh-tests ]; then | ||
5 | TMP="$ADTTMP/user" | ||
6 | CREATED_RUN_SSHD=false | ||
7 | STARTED_HAVEGED=false | ||
8 | |||
9 | cleanup () { | ||
10 | if $STARTED_HAVEGED; then | ||
11 | if [ -d /run/systemd/system ] && \ | ||
12 | which systemctl >/dev/null 2>&1; then | ||
13 | systemctl disable haveged || true | ||
14 | systemctl stop haveged || true | ||
15 | else | ||
16 | start-stop-daemon --stop --quiet \ | ||
17 | --retry=TERM/30/KILL/5 \ | ||
18 | --pidfile "$ADTTMP/haveged.pid" \ | ||
19 | --name haveged | ||
20 | fi | ||
21 | fi | ||
22 | rm -f /etc/sudoers.d/openssh-tests | ||
23 | if id openssh-tests >/dev/null 2>&1; then | ||
24 | deluser --remove-home openssh-tests | ||
25 | fi | ||
26 | |||
27 | if $CREATED_RUN_SSHD; then | ||
28 | rm -rf /run/sshd | ||
29 | fi | ||
30 | } | ||
31 | trap cleanup EXIT | ||
32 | |||
33 | adduser --disabled-password --gecos 'OpenSSH tests' openssh-tests | ||
34 | cat >/etc/sudoers.d/openssh-tests <<EOF | ||
35 | openssh-tests ALL = (ALL:ALL) NOPASSWD: ALL | ||
36 | EOF | ||
37 | chmod 440 /etc/sudoers.d/openssh-tests | ||
38 | mkdir -p "$TMP" | ||
39 | chown -R openssh-tests:openssh-tests "$TMP" | ||
40 | |||
41 | # Depending on how the environment is configured, our test | ||
42 | # dependency on openssh-server may not actually started sshd and | ||
43 | # thus may not have caused /run/sshd to be created. | ||
44 | if [ ! -d /run/sshd ]; then | ||
45 | mkdir -m755 /run/sshd | ||
46 | CREATED_RUN_SSHD=: | ||
47 | fi | ||
48 | |||
49 | # If we're running in a container, haveged may not have started | ||
50 | # automatically. | ||
51 | if [ -d /run/systemd/system ] && which systemctl >/dev/null 2>&1; then | ||
52 | systemctl enable haveged || true | ||
53 | systemctl start haveged || true | ||
54 | STARTED_HAVEGED=: | ||
55 | elif ! pidof haveged >/dev/null; then | ||
56 | start-stop-daemon --start --quiet \ | ||
57 | --pidfile "$ADTTMP/haveged.pid" \ | ||
58 | --exec /usr/sbin/haveged -- -p "$ADTTMP/haveged.pid" | ||
59 | STARTED_HAVEGED=: | ||
60 | fi | ||
61 | |||
62 | sudo -u openssh-tests env TMP="$TMP" "$0" "$@" | ||
63 | exit "$?" | ||
64 | fi | ||
65 | |||
66 | annotate-output +%H:%M:%S.%N /usr/lib/openssh/regress/run-tests "$TMP" | ||
diff --git a/debian/upstream/signing-key.asc b/debian/upstream/signing-key.asc new file mode 100644 index 000000000..974ad55f8 --- /dev/null +++ b/debian/upstream/signing-key.asc | |||
@@ -0,0 +1,41 @@ | |||
1 | -----BEGIN PGP PUBLIC KEY BLOCK----- | ||
2 | |||
3 | mQGdBFKmggUBDICUNqm4cNh7tdEbwaNhbnwqLiHpILeXT6sddGI0Stz5ofB1uvIH | ||
4 | m9kXYG5XUUwlc5ywjIZm2JeuKqrd/6wAz5laLagFA6k86EZzzuBE3b5FxSQ4EN4K | ||
5 | 5XZEJo61xASEF7z1mQCiqoA6/F407ht7nNoiVE95kOmqJlv4cqbpCw3n8f2VW+mV | ||
6 | UH6MYRZVrYAC9NnJWv24rem2fjgFhNT1/bx44G7H9bVJqL7hMEGa+xYQBI3YT/ul | ||
7 | Eu9HYmLFVeiZm1gB1eKXW7jS4ctLl5uPrxayA5DX/qNB2yqgVVlIKFwUm8gGPGPO | ||
8 | nsNKo0xBseE7E0F/KeGpaT5aS9yFgPm9A652Jx9felYgb0e9Ipt3lxriPQwgF/cx | ||
9 | LGuP/WEbN5fpWFnuV0ViklusuVI2e8GHJGU5bQD5AlzvWu4Sv6oBOcDCabScydY7 | ||
10 | IxPBk/XBWCF9QDIa2qa32Mc9dYc8EnJszPeVCHX5hG23omDRmdLGLwH7F+CuBvCx | ||
11 | AKCymZtJl5DhRmnhdzRg9d+0VG4hLF7O06ANABEBAAG0H0RhbWllbiBNaWxsZXIg | ||
12 | PGRqbUBtaW5kcm90Lm9yZz6JAc0EEwECACcCGwMFCQ1H67ECHgECF4AFAlKmjJwE | ||
13 | CwkIBwYVCgkICwIFFgIDAQAACgkQ0+X1a22SDTB2TAx9E1ozPJKUGWJPZefqsSr8 | ||
14 | KsO6Dp3QuPrw2Zwgo2QfeCT+uzNA5AKCDIAaYEpVbQsvu4sDy8dAW1+HENCxVrMX | ||
15 | WG+SH41lcdAdI4io0PGHVQDl42R5jX3e9pfjYCQALVv5BDXddK6054nyxEmudQ3I | ||
16 | CFCYXIcqQbA1nfj3Uk06jGhuM99B2/akbxCoFSiUX9uHDZKNYAGpU7/FCF9xCZF4 | ||
17 | Kd9Twvyy17jDIg7km3/Q4Jy++VP8FyvE5JjBdLRQSBzSG9GCjv9fyKWW7S0bMY4D | ||
18 | 3SKKt/Jm1XchEMgpRr4eBpgCs3rxO1hXjzqm3te97uy6/q8CuJUtupJsPKc9Wh4+ | ||
19 | ogUZifC0ta7UrxZp8yZTRvPSUxYrlvDzM32VDLQ3FX6Y2i4VNo48PSJMA+BPUx7D | ||
20 | TcZKIXt457zsLD4jF4sRdwOk/QF/GXCkH2GAyKHWCPXIOe+jIXgiuajcqZm9cAWj | ||
21 | L3hidSohKfefvKkzsg75mDmjhvAtDncIbmImJNjXIe2PQU4iY9Vq5i0vlaVKgBgK | ||
22 | SrkBnQRSpoIFAQyA1OdwfpwXKch+O00W1FsQSMcEjahGmo84WTroM/qjTd7Ysld3 | ||
23 | 00PMv3wkQn2WdhyTca/EmkW0fVTGSYs7Z3v5SpPf0prYSjmfu8WlXoz64ApdXqGH | ||
24 | jj9KAeq2OuUtWrwobgiQEzU4Hxlz94X/65BgG5k7OTyE3J6bgRcMwJCgCkwjK85w | ||
25 | bbBkGH+Jo9o/Zw9TPczQcE7BmGYkkLNAXbw7omKBOL4Z6w9sXToz9UnQ0EB9s4Tv | ||
26 | AbHGKX9y2PEQjZN+wkzR3DavWB7ql8vHZIRmspAsDAJvDT1ofsNtu8MB8wJcxvZa | ||
27 | oZ7j9wULYpnaNYx9xxEhgbB9o1mBcYsdDj3xz5jrgtq/cpdgGC6bg+awDc/ylQ1m | ||
28 | NglKfY8P9hFIhIANZilnmAlk5GSoWclP/69m+u34KKoHU4Yc3I1pPNcL6Nyi0bh8 | ||
29 | mHqe9WedKfod7Y4yM1S20fXaS4vrLIlKgxbsDpWiWrk0ltV03uyC7eqDe3nzzGW/ | ||
30 | 2GLTHj5xsA2+HwGtPom5mmzjvV5PFNpS7a90JQARAQABiQG1BBgBAgAPBQJSpoIF | ||
31 | AhsMBQkNR+uxAAoJENPl9Wttkg0wEScMf2QjDWm3XawJxNA8pqqxrFeTEo+GESzn | ||
32 | VRTUeprrUFd1GHw33qaAvqLixZ+x8cr+1Gj/fJd5eiIVJfRLYbXlC8su8JZXngfX | ||
33 | 0VhuMcUob/FTikfpcoYkRzriUsJEB3/OmjlLjGgnQm5Gz9TV1ityF3bzoHkR8svW | ||
34 | EKKKzNoIEPHLU3y7bqSkOrjnY3bZfdVRh618XbjV28NMuoZsV8E4pOuQoy+3s5Ij | ||
35 | mIf/mkSiFE3VJwdaPem23UsXatFb/eoC/Ahi0iCd/8ioFwi+oHT2Pnt9HrzVF6E8 | ||
36 | gBVO3vKo6UJgDTr9Qt27Nc6eHL0O5j50ins9ob/3DoOC3P5A08zhl+w466yGEv5+ | ||
37 | Es/usUAs/4ng4ksI3DTLK9Ygj70l5oBuMFYd3b5KGVfAIlGc5mwIOIG41YLIzZTr | ||
38 | GuOuTymjwCdC9cUZJ6R2Cv/Vx0htZ0hqDdyaDO0Io9OG/W2s2T7160tY9ic4MwBC | ||
39 | FemzwFELIBIIHNY/n/wsmxQGkI3Oj86JpOVVgR5lXWR+BrGcBjkSEyg= | ||
40 | =1M/J | ||
41 | -----END PGP PUBLIC KEY BLOCK----- | ||
diff --git a/debian/watch b/debian/watch new file mode 100644 index 000000000..9e2a44eb3 --- /dev/null +++ b/debian/watch | |||
@@ -0,0 +1,3 @@ | |||
1 | version=3 | ||
2 | opts=pgpsigurlmangle=s/$/.asc/ \ | ||
3 | https://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-(.*)\.tar\.gz | ||