Go to file
Vladislav Grishenko 2301b6ac0b
Disallow leading lines before the ident for server (#102)
Per RFC4253 4.2 clients must be able to process other lines of data
before the version string, server behavior is not defined neither
with MUST/SHOULD nor with MAY.
If server process up to 50 lines too - it may cause too long hanging
session with invalid/evil client that consume host resources and
potentially may lead to DDoS on poor embedded boxes.
Let's require first line from client to be version string and fail
early if it's not - matches both RFC and real OpenSSH behavior.
2020-06-15 21:22:18 +08:00
debian Bump to 2019.78 2019-03-27 21:47:34 +08:00
libtomcrypt Remove blowfish 2020-06-10 23:42:42 +08:00
libtommath Avoid oss-fuzz $SANITIZER causing wrong build 2020-05-27 20:33:45 +08:00
.gitignore update ltm to 1.1.0 and enable FIPS 186.4 compliant key-generation (#79) 2019-09-16 21:50:38 +08:00
.hgignore fuzz harness 2017-05-13 22:50:54 +08:00
.hgsigs Added signature for changeset ebcdb893992d 2019-03-27 22:15:23 +08:00
.hgtags Added tag DROPBEAR_2019.78 for changeset 009d52ae26d3 2019-03-27 22:15:10 +08:00
.travis.yml Bring back -Werror and improve travis tests 2020-05-26 23:53:50 +08:00
agentfwd.h rsa-sha256 for ssh-agent 2020-05-25 20:23:02 +08:00
algo.h merge rsa-sha256 2020-05-26 00:24:02 +08:00
atomicio.c upgrade atomicio 2016-11-15 14:56:25 +01:00
atomicio.h upgrade atomicio 2016-11-15 14:56:25 +01:00
auth.h Increase MAX_USERNAME_LEN to 100 2019-03-20 23:47:25 +08:00
bignum.c Update LibTomMath to 1.2.0 (#84) 2020-05-26 23:36:47 +08:00
bignum.h add m_mp_free_multi, be more careful freeing when failing to load keys 2017-05-26 21:08:43 +08:00
buffer.c Update LibTomMath to 1.2.0 (#84) 2020-05-26 23:36:47 +08:00
buffer.h ext-info handling for server-sig-algs 2020-05-19 00:31:41 +08:00
chachapoly.c Fix ChaCha20 on 32-bit platforms (#99) 2020-05-29 21:26:22 +08:00
chachapoly.h Add Chacha20-Poly1305, AES128-GCM and AES256-GCM support (#93) 2020-05-25 23:50:25 +08:00
CHANGES Bump to 2019.78 2019-03-27 21:47:34 +08:00
channel.h Split ChanType closehandler() and cleanup() so that dbclient doesn't 2018-11-14 22:57:56 +08:00
chansession.h Set SSH_ORIGINAL_COMMAND for "dropbear -c" too, fix build without 2020-03-14 23:28:18 +08:00
circbuffer.c Pointer parameter could be declared as pointing to const 2017-08-19 17:16:13 +02:00
circbuffer.h Pointer parameter could be declared as pointing to const 2017-08-19 17:16:13 +02:00
cli-agentfwd.c rsa-sha256 for ssh-agent 2020-05-25 20:23:02 +08:00
cli-auth.c rename some options and move some to sysoptions.h 2018-02-18 00:29:17 +08:00
cli-authinteract.c Convert #ifdef to #if, other build changes 2016-05-04 15:33:40 +02:00
cli-authpasswd.c Convert #ifdef to #if, other build changes 2016-05-04 15:33:40 +02:00
cli-authpubkey.c initialise variable to stop warning 2020-05-28 22:02:03 +08:00
cli-channel.c Rearranged some more bits, marked some areas that need work. 2006-10-02 16:34:06 +00:00
cli-chansession.c Fix regression where TTY modes weren't reset for client 2019-03-24 20:41:02 +08:00
cli-kex.c Allow DH to be completely disabled (#97) 2020-05-28 23:01:48 +08:00
cli-main.c set up early logging name 2020-05-28 22:02:33 +08:00
cli-runopts.c Make "dbclient -m help -c help" work 2020-05-26 20:15:39 +08:00
cli-session.c fix typo 2020-05-26 20:15:00 +08:00
cli-tcpfwd.c Split ChanType closehandler() and cleanup() so that dbclient doesn't 2018-11-14 22:57:56 +08:00
common-algo.c Remove blowfish 2020-06-10 23:42:42 +08:00
common-channel.c Split ChanType closehandler() and cleanup() so that dbclient doesn't 2018-11-14 22:57:56 +08:00
common-chansession.c Chantype handling is sorted 2004-06-02 04:59:49 +00:00
common-kex.c Allow DH to be completely disabled (#97) 2020-05-28 23:01:48 +08:00
common-runopts.c Make "dbclient -m help -c help" work 2020-05-26 20:15:39 +08:00
common-session.c Disallow leading lines before the ident for server (#102) 2020-06-15 21:22:18 +08:00
compat.c Merge pull request #31 from bengardner/PATH_DEVNULL 2017-06-02 22:57:09 +08:00
compat.h fix empty C prototypes 2016-03-16 22:41:20 +08:00
config.guess Update config.sub to 2019-01-05 and config.guess to 2019-03-04 2019-03-23 21:19:02 +08:00
config.sub Update config.sub to 2019-01-05 and config.guess to 2019-03-04 2019-03-23 21:19:02 +08:00
configure.ac Use Linux getrandom() to ensure random device is initialised 2020-05-28 22:50:41 +08:00
crypto_desc.c Convert #ifdef to #if, other build changes 2016-05-04 15:33:40 +02:00
crypto_desc.h fix empty C prototypes 2016-03-16 22:41:20 +08:00
curve25519.c void return types for curve25519 2020-05-30 00:05:49 +08:00
curve25519.h void return types for curve25519 2020-05-30 00:05:49 +08:00
dbclient.1 Add dbclient '-J &fd' option for a file descriptor 2018-02-18 15:12:15 +08:00
dbhelpers.c some linting after fuzz merge (#60) 2018-03-03 11:06:45 +08:00
dbhelpers.h include config.h for options.h. don't need to include options.h when 2018-02-18 11:22:13 +08:00
dbmalloc.c Update LibTomMath to 1.2.0 (#84) 2020-05-26 23:36:47 +08:00
dbmalloc.h Attempt to fix m_free for libtomcrypt/libtommath 2018-03-02 00:02:06 +08:00
dbmulti.c allow specifying dropbearmulti command as an argument 2016-03-10 21:35:23 +08:00
dbrandom.c Fix warning for unused prngd branch 2020-05-28 23:01:15 +08:00
dbrandom.h Pointer parameter could be declared as pointing to const 2017-08-19 17:16:13 +02:00
dbutil.c - Add adaptive authentication failure delay 2018-11-05 23:36:34 +08:00
dbutil.h - Add adaptive authentication failure delay 2018-11-05 23:36:34 +08:00
debug.h Remove unused DEBUG_FORKGPROF 2020-05-29 23:32:19 +08:00
default_options.h Disable by default 3des, cbc, hmac-sha1-96, x11 forwarding 2020-06-11 00:09:15 +08:00
dh_groups.c Fix typo DROPBEAR_NORMAL_DH 2020-05-28 23:23:54 +08:00
dh_groups.h Fix typo DROPBEAR_NORMAL_DH 2020-05-28 23:23:54 +08:00
dropbear_lint.sh Add linter for #ifdef 2020-05-24 13:15:24 +08:00
dropbear.8 Add Ed25519 support (#91) 2020-03-12 00:09:45 +08:00
dropbearconvert.1 Fix minor manpage formatting issues 2015-11-25 20:46:06 +08:00
dropbearconvert.c Convert #ifdef to #if, other build changes 2016-05-04 15:33:40 +02:00
dropbearkey.1 Mention Ed25519 in dropbearkey man (#94) 2020-05-25 21:28:27 +08:00
dropbearkey.c send and handle SSH_MSG_EXT_INFO only at the correct point 2020-05-24 14:16:58 +08:00
dss.c Update LibTomMath to 1.2.0 (#84) 2020-05-26 23:36:47 +08:00
dss.h use sigtype where appropriate 2020-04-06 23:18:26 +08:00
ecc.c Update LibTomMath to 1.2.0 (#84) 2020-05-26 23:36:47 +08:00
ecc.h include config.h for options.h. don't need to include options.h when 2018-02-18 11:22:13 +08:00
ecdsa.c include config.h for options.h. don't need to include options.h when 2018-02-18 11:22:13 +08:00
ecdsa.h It turns out you can't have a single-quote in an #error 2018-03-08 22:37:54 +08:00
ed25519.c void return types for curve25519 2020-05-30 00:05:49 +08:00
ed25519.h use sigtype where appropriate 2020-04-06 23:18:26 +08:00
fake-rfc2553.c - Update fake-rfc2553.{c,h} from OpenSSH 5.5p1 2010-07-21 13:53:23 +00:00
fake-rfc2553.h DROPBEAR_ prefix for include guards to avoid collisions 2015-02-24 20:43:01 +08:00
filelist.txt Add Ed25519 support (#91) 2020-03-12 00:09:45 +08:00
fuzz-common.c Update LibTomMath to 1.2.0 (#84) 2020-05-26 23:36:47 +08:00
fuzz-harness.c Disable wrapfds outside of fuzzed code 2018-03-08 23:22:53 +08:00
fuzz-hostkeys.c Add Ed25519 support (#91) 2020-03-12 00:09:45 +08:00
fuzz-wrapfd.c workaround memory sanitizer FD_ZERO false positives 2018-03-06 21:51:51 +08:00
fuzz-wrapfd.h some linting after fuzz merge (#60) 2018-03-03 11:06:45 +08:00
fuzz.h Add kexdh and kexecdh fuzzers 2018-03-05 11:50:31 +08:00
fuzzer-kexcurve25519.c Add Ed25519 support (#91) 2020-03-12 00:09:45 +08:00
fuzzer-kexdh.c Fix leaks in kex fuzzers 2018-03-09 23:16:37 +08:00
fuzzer-kexecdh.c Fix leaks in kex fuzzers 2018-03-09 23:16:37 +08:00
FUZZER-NOTES.md Add Ed25519 support (#91) 2020-03-12 00:09:45 +08:00
fuzzer-preauth_nomaths.c add fuzzer-preauth_nomaths 2018-01-23 23:05:47 +08:00
fuzzer-preauth.c add fuzzer-preauth_nomaths 2018-01-23 23:05:47 +08:00
fuzzer-pubkey.c use sigtype where appropriate 2020-04-06 23:18:26 +08:00
fuzzer-verify.c Fix untested rsa-sha256 change to fuzzer-verify 2020-05-26 23:13:23 +08:00
fuzzers_test.sh update ltm to 1.1.0 and enable FIPS 186.4 compliant key-generation (#79) 2019-09-16 21:50:38 +08:00
gcm.c Fix ChaCha20 on 32-bit platforms (#99) 2020-05-29 21:26:22 +08:00
gcm.h Add Chacha20-Poly1305, AES128-GCM and AES256-GCM support (#93) 2020-05-25 23:50:25 +08:00
gendss.c update ltm to 1.1.0 and enable FIPS 186.4 compliant key-generation (#79) 2019-09-16 21:50:38 +08:00
gendss.h Convert #ifdef to #if, other build changes 2016-05-04 15:33:40 +02:00
gened25519.c Add Ed25519 support (#91) 2020-03-12 00:09:45 +08:00
gened25519.h Add Ed25519 support (#91) 2020-03-12 00:09:45 +08:00
genrsa.c Update LibTomMath to 1.2.0 (#84) 2020-05-26 23:36:47 +08:00
genrsa.h Convert #ifdef to #if, other build changes 2016-05-04 15:33:40 +02:00
gensignkey.c Fallback for key gen without hard link support (#89) 2020-03-14 22:37:35 +08:00
gensignkey.h add configuration option for default RSA size. 2017-06-24 23:32:25 +08:00
ifndef_wrapper.sh avoid extended regex features to avoid caring about sed -r vs -E 2018-07-24 20:19:05 +08:00
includes.h Use Linux getrandom() to ensure random device is initialised 2020-05-28 22:50:41 +08:00
INSTALL Update remaining advise to edit options.h 2020-03-10 15:38:38 +01:00
install-sh Makefile.in contains updated files required 2004-06-01 02:46:09 +00:00
kex.h Allow DH to be completely disabled (#97) 2020-05-28 23:01:48 +08:00
keyimport.c Update LibTomMath to 1.2.0 (#84) 2020-05-26 23:36:47 +08:00
keyimport.h Pointer parameter could be declared as pointing to const 2017-08-19 17:16:13 +02:00
LICENSE Sync curve25519 license 2020-06-10 22:13:53 +08:00
list.c include config.h for options.h. don't need to include options.h when 2018-02-18 11:22:13 +08:00
list.h fix empty C prototypes 2016-03-16 22:41:20 +08:00
listener.c Pointer parameter could be declared as pointing to const (callback) 2017-08-19 22:39:53 +02:00
listener.h Pointer parameter could be declared as pointing to const (callback) 2017-08-19 22:39:53 +02:00
loginrec.c loginrec close fd on error path 2018-02-17 12:16:18 +08:00
loginrec.h remove unused loginrec_set_addr() 2016-03-15 22:04:13 +08:00
ltc_prng.c include config.h for options.h. don't need to include options.h when 2018-02-18 11:22:13 +08:00
ltc_prng.h include config.h for options.h. don't need to include options.h when 2018-02-18 11:22:13 +08:00
Makefile.in merge rsa-sha256 2020-05-26 00:24:02 +08:00
MULTI - Fix "inst_scp" target since there isn't a manpage 2013-10-09 22:24:39 +08:00
netio.c Set IOV_MAX for IRIX 2020-06-10 22:09:29 +08:00
netio.h bind to port as well with -b 2018-01-26 00:28:25 +08:00
options.h mention localoptions.h being build directory, fix underscore in CHANGES 2018-03-01 22:12:30 +08:00
packet.c Add Chacha20-Poly1305, AES128-GCM and AES256-GCM support (#93) 2020-05-25 23:50:25 +08:00
packet.h get rid of unused packet_type in encrypted write queue 2018-03-04 14:57:18 +08:00
process-packet.c merge rsa-sha256 2020-05-26 00:24:02 +08:00
progressmeter.c Update to scp from OpenSSH portable 4.3p2 2006-03-08 14:20:24 +00:00
progressmeter.h Makefile.in contains updated files required 2004-06-01 02:46:09 +00:00
pubkeyapi.h Rename EPKA -> Plugin 2019-05-15 21:59:45 +08:00
queue.c Pointer parameter could be declared as pointing to const 2017-08-19 17:16:13 +02:00
queue.h Pointer parameter could be declared as pointing to const 2017-08-19 17:16:13 +02:00
README Add Ed25519 support (#91) 2020-03-12 00:09:45 +08:00
release.sh Add linter for #ifdef 2020-05-24 13:15:24 +08:00
rsa.c Update LibTomMath to 1.2.0 (#84) 2020-05-26 23:36:47 +08:00
rsa.h split signkey_type and signature_type for RSA sha1 vs sha256 2020-05-17 23:58:31 +08:00
runopts.h Rename EPKA -> Plugin 2019-05-15 21:59:45 +08:00
scp.c scp.c: Port OpenSSH CVE-2018-20685 fix (#80) 2020-05-25 20:54:29 +08:00
scpmisc.c use strlcpy & strlcat (#74) 2019-03-20 22:09:19 +08:00
scpmisc.h fix some gcc warnings (#73) 2019-03-20 22:25:15 +08:00
service.h fix empty C prototypes 2016-03-16 22:41:20 +08:00
session.h merge rsa-sha256 2020-05-26 00:24:02 +08:00
signkey.c cast to fix warning 2020-05-26 19:57:28 +08:00
signkey.h ext-info handling for server-sig-algs 2020-05-19 00:31:41 +08:00
SMALL 0.44 release changes 2005-01-02 17:08:27 +00:00
ssh.h ext-info handling for server-sig-algs 2020-05-19 00:31:41 +08:00
sshpty.c ignore I_PUSH if it isn't defined, for Android from Reimar Döffinger 2013-03-19 20:12:19 +08:00
sshpty.h Makefile.in contains updated files required 2004-06-01 02:46:09 +00:00
svr-agentfwd.c Support servers without multiple user support (#76) 2019-03-20 22:44:49 +08:00
svr-auth.c Improve address logging on early exit messages (#83) 2020-03-18 23:28:56 +08:00
svr-authpam.c Fix for issue successfull login of disabled user (#78) 2019-03-20 22:03:40 +08:00
svr-authpasswd.c limit password length to 100 2019-03-21 00:09:07 +08:00
svr-authpubkey.c split signkey_type and signature_type for RSA sha1 vs sha256 2020-05-17 23:58:31 +08:00
svr-authpubkeyoptions.c Don't log authorized_keys command= every time 2020-03-14 23:26:37 +08:00
svr-chansession.c Set SSH_ORIGINAL_COMMAND for "dropbear -c" too, fix build without 2020-03-14 23:28:18 +08:00
svr-kex.c send and handle SSH_MSG_EXT_INFO only at the correct point 2020-05-24 14:16:58 +08:00
svr-main.c Remove unused DEBUG_FORKGPROF 2020-05-29 23:32:19 +08:00
svr-runopts.c send and handle SSH_MSG_EXT_INFO only at the correct point 2020-05-24 14:16:58 +08:00
svr-service.c more linting (#58) 2018-02-26 21:31:15 +08:00
svr-session.c send and handle SSH_MSG_EXT_INFO only at the correct point 2020-05-24 14:16:58 +08:00
svr-tcpfwd.c add missing initializer (#71) 2019-01-07 23:09:45 +08:00
svr-x11fwd.c Split ChanType closehandler() and cleanup() so that dbclient doesn't 2018-11-14 22:57:56 +08:00
sysoptions.h merge rsa-sha256 2020-05-26 00:24:02 +08:00
tcp-accept.c FIx remote forward listeners 2018-09-07 23:02:20 +08:00
tcpfwd.h FIx remote forward listeners 2018-09-07 23:02:20 +08:00
termcodes.c termcodes: make VEOL2, VWERASE, VLNEXT, ECHOCTL, and ECHOKE optional 2016-05-25 10:03:53 -05:00
termcodes.h DROPBEAR_ prefix for include guards to avoid collisions 2015-02-24 20:43:01 +08:00
x11fwd.h Pointer parameter could be declared as pointing to const 2017-08-19 17:16:13 +02:00

This is Dropbear, a smallish SSH server and client.
https://matt.ucc.asn.au/dropbear/dropbear.html

INSTALL has compilation instructions.

MULTI has instructions on making a multi-purpose binary (ie a single binary
which performs multiple tasks, to save disk space)

SMALL has some tips on creating small binaries.

Please contact me if you have any questions/bugs found/features/ideas/comments etc :)
There is also a mailing list http://lists.ucc.gu.uwa.edu.au/mailman/listinfo/dropbear

Matt Johnston
matt@ucc.asn.au


In the absence of detailed documentation, some notes follow:
============================================================================

Server public key auth:

You can use ~/.ssh/authorized_keys in the same way as with OpenSSH, just put
the key entries in that file. They should be of the form:

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEAwVa6M6cGVmUcLl2cFzkxEoJd06Ub4bVDsYrWvXhvUV+ZAM9uGuewZBDoAqNKJxoIn0Hyd0Nk/yU99UVv6NWV/5YSHtnf35LKds56j7cuzoQpFIdjNwdxAN0PCET/MG8qyskG/2IE2DPNIaJ3Wy+Ws4IZEgdJgPlTYUBWWtCWOGc= someone@hostname

You must make sure that ~/.ssh, and the key file, are only writable by the
user. Beware of editors that split the key into multiple lines.

Dropbear supports some options for authorized_keys entries, see the manpage.

============================================================================

Client public key auth:

Dropbear can do public key auth as a client, but you will have to convert
OpenSSH style keys to Dropbear format, or use dropbearkey to create them.

If you have an OpenSSH-style private key ~/.ssh/id_rsa, you need to do:

dropbearconvert openssh dropbear ~/.ssh/id_rsa  ~/.ssh/id_rsa.db
dbclient -i ~/.ssh/id_rsa.db <hostname>

Dropbear does not support encrypted hostkeys though can connect to ssh-agent.

============================================================================

If you want to get the public-key portion of a Dropbear private key, look at
dropbearkey's '-y' option.

============================================================================

To run the server, you need to generate server keys, this is one-off:
./dropbearkey -t rsa -f dropbear_rsa_host_key
./dropbearkey -t dss -f dropbear_dss_host_key
./dropbearkey -t ecdsa -f dropbear_ecdsa_host_key
./dropbearkey -t ed25519 -f dropbear_ed25519_host_key

or alternatively convert OpenSSH keys to Dropbear:
./dropbearconvert openssh dropbear /etc/ssh/ssh_host_dsa_key dropbear_dss_host_key

You can also get Dropbear to create keys when the first connection is made -
this is preferable to generating keys when the system boots. Make sure 
/etc/dropbear/ exists and then pass '-R' to the dropbear server.

============================================================================

If the server is run as non-root, you most likely won't be able to allocate a
pty, and you cannot login as any user other than that running the daemon
(obviously). Shadow passwords will also be unusable as non-root.

============================================================================

The Dropbear distribution includes a standalone version of OpenSSH's scp
program. You can compile it with "make scp", you may want to change the path
of the ssh binary, specified by _PATH_SSH_PROGRAM in options.h . By default
the progress meter isn't compiled in to save space, you can enable it by 
adding 'SCPPROGRESS=1' to the make commandline.