By Toradex秦海

1). 简介

嵌入式 Linux  由于运行平台通常资源受限同时对稳定性要求高,因此需要比较精简,那么针对 SSH 服务器/客户端应用,通常也不使用庞大的 OpenSSH,而是采用十分精简的 Dropbear SSH工具。Dropbear 是一个基于 MIT License 的开源软件,其一些基本信息可以参考如下软件发布页面:

Dropbear SSH

本文所演示的平台来自于ToradexApalisiMX8嵌入式平台,基于NXP iMX8系列ARM处理器,核心为Cortex-A52/A53 

2). 硬件准备

a).  Apalis iMX8 ARM核心版配合Apalis Eva Board载板,并连接调试串口和网口以便测试。

3). 具体配置说明

a). Apalis iMX8 模块标准 Ycoto Linux BSP 中已经包含 Dropbear 相关软件,不过由于默认配置为了开发测试方便,默认使能了 debug-tweaks 功能(比如这样可以允许 root 账户无密码登录),这样如下面 Ycoto Project/Openembedded 相关文件说明也就同时也使能了 weak ciphers

./ layers/meta-toradex-demos/recipes-core/dropbear/dropbear_%.bbappend

---------------------------------------

# THE Eclipse RSE system explorer uses a ssh client which cannot cope with the

# dropbear ssh server if weak ciphers are disabled.

# If debug-tweaks is set in IMAGE_FEATURES then enable also weak ciphers.

# With debug-tweaks we allow password less root access, enforcing strong

# ciphers is pointless anyway.

PACKAGECONFIG = "${@bb.utils.contains("IMAGE_FEATURES", "debug-tweaks", "", "disable-weak-ciphers",d)}"

---------------------------------------

b). 为了使 Dropbear SSH安全性更高,可以在 Ycoto 编译环境下参考如下 patch 文件修改关闭 debug-tweaks 和 weak ciphers。因为同时这样也关闭了 root 用户无密码登录,因此也需要给 root 用户配置默认密码。

./ local.conf 文件修改 patch

---------------------------------------

--- a/build/conf/local.conf 2023-05-30 12:16:33.780891419 +0800

+++ b/build/conf/local.conf 2023-05-31 10:55:36.841801362 +0800

@@ -277,3 +277,9 @@

include conf/machine/include/${MACHINE}.inc

# DO NOT SET THE MACHINE AFTER THE ABOVE INCLUDE

+# accept the Freescale EULA

+ACCEPT_FSL_EULA = "1"

+# add root password

+EXTRA_IMAGE_FEATURES = "allow-root-login package-management"

+INHERIT += "extrausers"

+EXTRA_USERS_PARAMS = "usermod -P Abcd1234 root"

---------------------------------------

./ 参考这里的说明将上述修改下重新编译生成的 Ycoto Linux Image 通过 Toradex Easy Installer 更新到 Apalis iMX8 模块,此时测试无论本地串口登录还是远程SSH登录 root 用户都需要输入预设的密码了,增强了安全性。

c). 为了进一步提高 SSH 安全性,可以创建普通 user 用户用于远程登录,而禁止 root 用户 SSH 远程登录。这样也可以通过限制 user 用户的权限来提高系统安全性。

./ 创建新的 user 用户

---------------------------------------

root@apalis-imx8-07308034:~# useradd testuser

root@apalis-imx8-07308034:~# passwd testuser

New password:

Retype new password:

passwd: password updated successfully

---------------------------------------

./ 禁止 root 用户 SSH 登录,参考如下 patch 修改 /etc/default/dropbear 文件

---------------------------------------

--- a/etc/default/dropbear

+++ b/etc/default/dropbear

@@ -1,2 +1,2 @@

# Disallow root logins by default

-DROPBEAR_EXTRA_ARGS=""

+DROPBEAR_EXTRA_ARGS=" -w"

---------------------------------------

./ 测试使用 testuser 用户远程 SSH 登录成功, root 用户登录失效

---------------------------------------

### root login ###

$ ssh root@10.20.1.168

root@10.20.1.168's password:

Permission denied, please try again.

### testuser login ###

$ ssh testuser@10.20.1.168

testuser@10.20.1.168's password:

mkdir: cannot create directory '/run/user/1000': Permission denied

chmod: cannot access '/run/user/1000': No such file or directory

apalis-imx8-07308034:~$

---------------------------------------

./ 另外,如果需要本地串口 testuser 或者 root 用户自动登录,可以参考如下 patch 修改

---------------------------------------

--- a/lib/systemd/system/serial-getty@.service

+++ b/lib/systemd/system/serial-getty@.service

@@ -30,7 +30,7 @@

[Service]

Environment="TERM=xterm"

-ExecStart=-/sbin/agetty -8 -L %I 115200 $TERM

+ExecStart=-/sbin/agetty -8-a testuser -L %I 115200 $TERM

Type=idle

Restart=always

UtmpIdentifier=%I

---------------------------------------

d). 远程 SSH 除了默认的密码登录方式外,还可以开启安全等级更高的通过 public key 来无密码登录

./ 在需要远程登录 Apalis iMX8 设备的 PC 主机环境下通过 ssh-keygen 工具生成 SSH private key/public key pair

---------------------------------------

### generate 4096-bits key pair ###

$ ssh-keygen -b 4096

Generating public/private rsa key pair.

Enter file in which to save the key (/home/simon/.ssh/id_rsa): /home/simon/local/tmp/ssh-test/id_rsa

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/simon/local/tmp/ssh-test/id_rsa.

Your public key has been saved in /home/simon/local/tmp/ssh-test/id_rsa.pub.

The key fingerprint is:

SHA256:Pr5PQjzRuPMVS3Rrkdtq+7pDVOFMGumBLpFGkjGSEs0 simon@simon-Latitude-5300

The key's randomart image is:

+---[RSA 4096]----+

|   .+..++.. o.++.|

|   . E..o* o +Bo.|

|    .   + + +.+* |

|       . + o =o .|

|        S . o. . |

|       o + .  +  |

|        + o  o . |

|       . +    o  |

|        oo.   o=.|

+----[SHA256]-----+

---------------------------------------

./ 通过 SSH 远程命令将生成的 public key 写入到 Apalis iMX8 dropbear authorized_keys 文件

---------------------------------------

### create ssh folder on apalis iMX8 device ###

apalis-imx8-07308034:~$ mkdir /home/testuser/.ssh

### add public key to apalis iMX8 authorized_keys file from Host PC remotely ###

$ ssh testuser@10.20.1.168 "tee -a /home/testuser/.ssh/authorized_keys" < /home/simon/local/tmp/ssh-test/id_rsa.pub

---------------------------------------

./ 参考如下 patch 修改 Apalis iMX8 dropbear 启动配置来使 public key 验证生效

---------------------------------------

--- a/lib/systemd/system/dropbear@.service

+++ b/lib/systemd/system/dropbear@.service

@@ -4,9 +4,9 @@

After=syslog.target dropbearkey.service

[Service]

-Environment="DROPBEAR_RSAKEY_DIR=/etc/dropbear"

+Environment="DROPBEAR_RSAKEY_DIR=/home/testuser/.ssh/"

EnvironmentFile=-/etc/default/dropbear

-ExecStart=-/usr/sbin/dropbear -i -r ${DROPBEAR_RSAKEY_DIR}/dropbear_rsa_host_key $DROPBEAR

_EXTRA_ARGS

+ExecStart=-/usr/sbin/dropbear -i $DROPBEAR_EXTRA_ARGS

ExecReload=/bin/kill -HUP $MAINPID

StandardInput=socket

KillMode=process

---------------------------------------

./ 重启 Apalis iMX8 使配置生效后,再次尝试远程 SSH 登录,可以实现无需密码而是采用 public key 验证登录

---------------------------------------

$ ssh -i /home/simon/local/tmp/ssh-test/id_rsa testuser@10.20.1.168

mkdir: cannot create directory '/run/user/1000': Permission denied

chmod: cannot access '/run/user/1000': No such file or directory

apalis-imx8-07308034:~$

---------------------------------------

e). 更多关于 dropbear 工具命令参数说明可以参考如下

https://manpages.ubuntu.com/manpages/bionic/man8/dropbear.8.html

4). 总结

本文基于嵌入式 Linux 简单演示了 轻量化 SSH 工具软件 Dropbear 的增强安全性配置供参考。

嵌入式Linux下Dropbear SSH配置优化相关推荐

  1. linux内核 can总线,嵌入式Linux下CAN总线配置

    问题背景:本人开发板使用的是迅为iTOP4412精英版,额外购买的CAN/485模块,如下图: 但是插上模块之后,在终端使用ifconfig can0命令发现开发板读不到CAN设备,显示"i ...

  2. 《嵌入式Linux内存使用与性能优化》笔记

    <嵌入式Linux内存使用与性能优化>笔记 这本书有两个关切点:系统内存(用户层)和性能优化. 这本书和Brendan Gregg的<Systems Performance>相 ...

  3. 嵌入式 linux下利用backtrace追踪函数调用堆栈以及定位段错误

    嵌入式 linux下利用backtrace追踪函数调用堆栈以及定位段错误 2015-05-27 14:19 184人阅读 评论(0) 收藏 举报  分类: 嵌入式(928)  一般察看函数运行时堆栈的 ...

  4. Linux 下的网络配置

    #######linux下的网络配置############ ###1.什么是IP ADDRESS     internet protocol ADDRESS    ##网络进程地址         ...

  5. Linux下安装和配置JDK与Tomcat(升级版)

    在这个版本 Linux下安装和配置JDK与Tomcat(入门版) 的基础上优化升级 1.下载相关软件 apache-tomcat-6.0.37.tar.gz jdk-6u25-linux-i586-r ...

  6. 南京邮电大学嵌入式系统开发实验5:嵌入式Linux下LED报警灯驱动设计及编程

    实验5  嵌入式Linux下LED报警灯驱动设计及编程 一.实验目的 理解驱动本质,掌握嵌入式Linux系统下驱动开发相关知识,包括端口寄存器访问.接口函数编写.和文件系统挂接.注册及相关应用编程等知 ...

  7. Linux下路由器的配置

    Linux下路由器的配置 主要介绍如何用Linux做一个功能完备的路由器,这里将主要介绍静态路由器和动态路由器的配置,但不包括IP伪装或者说公用一个IP地址访问外面网络等问题.其已经不属于本主题讨论的 ...

  8. 《嵌入式linux内存使用与性能优化》读书笔记

    <嵌入式linux内存使用与性能优化>读书笔记 前言 本书的重点分为系统内存和性能优化,前4章着重内存使用,尽量减少进程的内存使用量,定位和发现内存泄漏:后5章着重与如何让系统性能优化,加 ...

  9. 嵌入式linux查看usb设备驱动程序,嵌入式Linux下USB驱动程序的设计

    嵌入式Linux下USB驱动程序的设计 usb概念:  USB(Universal Serial Bus)即通用串行总线,是一种全新的双向同步传输的支持热插拔的数据传输总线,其目的是为了提供一种兼容不 ...

最新文章

  1. 三星手机如何分屏_刷机基础知识三星如何手机进入ODIN模式
  2. 数据库常用对象概念讲解
  3. wxPython各个布局的简单案例
  4. pytorh 激活函数,循环神经网络层,损失函数和优化器
  5. 人生一知己,足以慰风尘吗?
  6. hbase 查询_不用ES也能海量数据复杂查询秒回
  7. 分享三:mysql跨库查询
  8. mysql创建工作经历表_国内首款 Serverless MySQL 数据库重磅发布!
  9. Android用MediaRecorder实现MPEG4视频监控
  10. 光电LED玻璃屏成商显新势力 优势颠覆传统LED灯条屏
  11. simplelink_cc13x0_sdk中的串口UART
  12. 【首发】 ubuntu20.04安装matlab2021b/matlab2020b
  13. hashCode() vs equals() vs ==
  14. 微博官方API使用方法【全流程教学】
  15. linux命令如何查看dns,详解Linux系统使用dig/nslookup命令查看dns解析的方法
  16. MQTT之十一 阿里云物联网平台网址
  17. Android基本概念介绍
  18. JBoss的AS版本 Wildfly 介绍和使用
  19. jcg q8 固件_JCG读者的免费团队管理工具(Giveaway)
  20. 大型网站技术架构(一)--大型网站架构演化

热门文章

  1. 董明珠透露择偶观;小霸王宣布回归游戏机市场;苹果将提高股东回报规模丨价值早报
  2. linux cgroup 原理,Cgroup框架的实现
  3. Window Server 2012R2 多用户登录
  4. 【天池-Python训练营】Task3学习笔记
  5. BorderLayout小练习
  6. 计算机打印机共享失败,两台win7系统共享打印机提示不成功的解决方法
  7. Selector 选择器
  8. excel 2003 ,wps office 2007,excel 2007 xls xlsx文件操作效率比较
  9. 服务器几种系统,服务器有几种操作系统
  10. html5画布作品,10款面向HTML5 画布(Canvas)的JavaScript库