0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

提高基于Linux的网络连接系统的安全性

星星科技指导员 来源:嵌入式计算设计 作者:Kirill Marinushkin 2022-08-12 10:34 次阅读

嵌入式系统通过 Internet 或本地网络访问设备的能力促进了广泛的便捷交互。物联网IoT) 的发展意味着嵌入式网络的快速增长。对于这些应用程序,网络安全已成为一个大问题。嵌入式系统的资源太有限,很难提供可靠的网络攻击保护。具有 Linux 的高性能设备可能具有安全网络访问的优势。

脚本和技术可以提高这些基于 Linux 的设备的网络访问安全级别。目标是访问设备作为远程控制和管理的服务器。这可以在两个级别进行:用于安全远程 shell 访问和 SFTP 文件传输的 SSH 级别,以及 IP 级别保护。

SSH 级别的安全性

通过 SSH shell 和 SFTP 进行远程访问为使用 Linux 控制目标嵌入式系统提供了最大的机会。启用此功能是管理设备的便捷方式。SSH 协议执行高级别的安全和加密。与 SSH shell 和 SFTP 服务器服务相关的“sshd”实用程序有几种可能的配置,以提高 SSH 级别的安全性。

在用于嵌入式系统的流行 Linux 发行版(例如 Angstrom 或 Arago-project)中,“Dropbear”实用程序是默认的 SSH 服务器。不幸的是,它提供了一组有限的配置选项。此实用程序禁用了重要的配置可能性,例如用户权限。因此,如果目标设备要进行远程访问,安装“OpenSSH”服务器会是一个更好的主意。要更改 SSH 服务器,请删除 Dropbear 启动脚本(或移动它,如下例所示)并安装 OpenSSH 包:

mv /etc/init.d/dropbear /dropbear_script_backup

opkg install openssh

使用非标准 SSH 端口

使用非标准 SSH 端口是防止“偶然”发现的最简单方法。基于扫描最常用的 TCP 端口以查找网络中不同 IP 地址上的指定服务,它可能有助于避免通过 Internet 或 LAN 进行的许多攻击。降低 SSH 协议这种风险的简单方法是将标准端口 22 更改为非标准端口。此选项适用于任何 SSH 服务器。唯一需要注意的是需要在客户端打开防火墙上的指定端口。

SSH 端口号在“/etc/init.d/sshd_config”文件中配置,如下所示:

Port 1907

为 SSH 访问配置用户权限

SSH 服务器选项包括许多限制用户权限的方法。对于安全外壳和 SFTP 服务,“PermitRootLogin”、“AllowUsers”或“DenyUsers”选项限制了能够通过 SSH 连接到设备的登录。对于 SFTP,可以使用更多参数来更改根目录路径。此方法对于保护包含关键和机密数据的系统部件非常重要。此选项允许配置的用户仅在其目录和子目录内进行操作,因此您可以将它们留在他们的“沙箱”中。选项“Subsystem SFTP internal-SFTP”结合“ChrootDirectory”允许更改指定用户的根目录。所有已配置登录的“ChrootDirectory”部分应放在配置文件的末尾。在为不同用户设置目录时,

要配置用户 SSH 权限,请编辑文件 /etc/init.d/sshd_config,如示例中所示:

《。..》

#list of allowed users:

PermitRootLogin yes

AllowUsers root user1 user2 user3

Subsystem SFTP internal-SFTP

#changing the root directory for user1 and user2:

Match user user1 user2

ChrootDirectory /dir1

ForceCommand internal-SFTP

#changing the root directory for user3:

Match user user3

ChrootDirectory /dir2

ForceCommand internal-SFTP

通过 SSH 远程访问您的应用程序

为了在嵌入式系统中执行对您的应用程序的非标准用户访问,使用 SSH 协议作为网络通信的安全层很方便。

一种常见的方法是将您的服务作为侦听指定 TCP 端口的服务器运行。要提供 SSH 连接,您可以使用“libssh”——一个获得 LGPL 许可的开源项目。该项目有几个示例,包括 sshd 源代码,它为构建您的服务器应用程序提供了很好的基础。注意:此方案不连接OpenSSH服务器,需要自己的端口号和用户管理。

另一种选择是为您的服务使用现有的正在运行的 OpenSSH 服务器。这个想法是用您自己的应用程序为指定用户替换 shell 实用程序。这次用户将通过标准输入/输出接口与远程系统进行交互,就像终端一样。此解决方案是一种更有效的方式来组织具有您需要的确切功能的安全远程访问。要为用户替换 shell,请编辑“/etc/passwd”文件中的参数,将最后一个选项替换为应用程序的路径:

user1::500:500:Linux User,,,:/home/user1:

IP级保护

“Iptables”是一个强大的工具,用于在 IP 级别保护对目标 Linux 系统的远程访问。iptables 允许系统独立于应用级网络协议过滤流量。这是最通用的选项,几乎适用于所有平台。

在 Linux 内核配置期间应该打开 iptables 支持。请注意,一些必要的 iptables 选项,如“conntrack”或“connlimit”,默认情况下可能在内核中关闭,因此请打开它们以使用更多 iptables 可能性。

在系统启动时启动 iptables 脚本

iptables 实用程序用作网络流量过滤器。过滤器是通过运行具有不同参数的“iptables”命令应用的规则链来执行的。这些规则一起设置在一个脚本文件中。要将 iptables 置于初始状态,请使用以下示例规则开始脚本:

iptables -F #flush all chains
iptables -X #delete all chains

#accept network traffic by default:

iptables -P INPUT ACCEPT

iptables -P OUTPUT ACCEPT

#forbid ping:

iptables -A INPUT -p icmp -j DROP

要在系统启动时启用 iptable 保护,请将所需规则写入脚本文件并执行:

sudo mv /etc/init.d/
sudo chmod +x

/etc/init.d/
sudo update-rc.d defaults

防止暴力攻击

暴力破解是使用 SSH 协议时最大的安全问题。可以使用 iptables 设置一个简单的防火墙来防止暴力攻击。这个想法是阻止淹没 SSH 端口的 IP 地址并限制打开的最大连接数。下面的脚本用于此目的:

#create the chain to check the number of tries to connect the port:

iptables -N SSH_brute_check

#if during last 300 seconds any IP address opens more than 20 new connections – block it

iptables -A SSH_brute_check -m conntrack --ctstate NEW -m recent --update --seconds 300 --hitcount 20 -j DROP

#else – allow and add to the checking chain

iptables -A SSH_brute_check -m recent --set -j ACCEPT

iptables -F INPUT #flush input chain

#allow established connections

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

#send all tries to open new connections on port 22 to the checking chain

iptables -A INPUT -m conntrack --ctstate NEW -p tcp --dport 22 -j SSH_brute_check

白名单/黑名单 IP 地址

如果客户端的 IP 地址是静态的,则执行网络安全的最佳方法是只允许某些 IP 地址访问。这意味着除了指定的用户之外,没有其他用户能够远程访问目标嵌入式系统。这可以通过创建合法 IP 地址的白名单来完成。对于下面的示例脚本,允许的 IP 地址记录在像这样逐行文件:

192.168.0.15

192.168.0.100

《。..》

完成这项工作的 iptables 脚本如下所述:

cat | \

while read VAR; do

iptables -A INPUT -s $VAR -j ACCEPT

done

您可以使用相反的策略——通过将指定的 IP 地址添加到黑名单来禁止它们。将 IP 地址从黑名单中屏蔽的示例如下:

cat | \

while read VAR; do

iptables -A INPUT -s $VAR -j DROP

done

关闭 IPv6 支持

所描述的服务和方法使用 IPv4 协议。IPv6 协议的安全配置被忽略,这使得保持启用是不安全的。如果内核中启用了 IPv6 支持,那么它应该有额外的保护。或者,如果您不需要它,您可以通过在 /etc/sysctl.conf 文件中添加这一行来关闭它:

net.ipv6.conf.eth0.disable_ipv6 = 1

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4981

    文章

    18271

    浏览量

    288307
  • Linux
    +关注

    关注

    87

    文章

    10986

    浏览量

    206720
  • 服务器
    +关注

    关注

    12

    文章

    8105

    浏览量

    82485
收藏 人收藏

    评论

    相关推荐

    如何保证汽车远程信息系统安全性

    使车内重要的控制系统对外暴露无遗。网络连接版汽车确实推动了创新,但是,也成了别有用心的人或错误数据的潜在攻击目标,因而联网的车辆可能成为危及生命安全的梦魇。  
    发表于 08-28 12:38

    蓝牙mesh系列的网络安全性

    蓝牙mesh网络安全性概览为何安全性如此关键?安全性可谓是物联网(IoT)最受关注的问题之一。从农业到医院、从智能家居到商业智能建筑、从发电站到交通管理系统,物联网
    发表于 07-22 06:27

    怎么提高SRAM工艺FPGA的设计安全性

    随着FPGA的容量、性能以及可靠提高及其在消费电子、汽车电子等领域的大规模应用,FPGA设计的安全性问题越来越引起人们的关注。相比其他工艺FPGA而言,处于主流地位的SRAM工艺FPGA有一些
    发表于 08-23 06:45

    如何提高SRAM工艺FPGA的设计安全性

    随着FPGA的容量、性能以及可靠提高及其在消费电子、汽车电子等领域的大规模应用,FPGA设计的安全性问题越来越引起人们的关注。
    发表于 09-30 07:23

    如何提高SRAM工艺FPGA的设计安全性

    随着FPGA的容量、性能以及可靠提高及其在消费电子、汽车电子等领域的大规模应用,FPGA设计的安全性问题越来越引起人们的关注。
    发表于 10-18 07:12

    如何提升嵌入式系统的VxWorks安全性

    实时嵌入式系统网络的结合以及高可信覆盖网络的发展使得嵌入式实时操作系统安全性问题日益突出。提高
    发表于 10-30 06:03

    无线传感器网络节点的稳定性和安全性怎么提高?

    随着人们对于环境监测要求的不断提高,无线传感器网络技术以其投资成本低、架设方便、可靠高的性能优势得到了比较广泛的应用。由于无线传感器网络节点需要实现采集、处理、通信等多个功能,因此硬
    发表于 10-30 06:29

    嵌入式设备如何提高安全性

      随着越来越多的嵌入式设备接入网络并成为物联网的一部分,网络黑客们开始利用这些连接,以达到自己不可告人的目的。因此,嵌入式设备必须提高安全性,以防止黑客复制IP、盗窃数据或侵入
    发表于 06-30 11:05

    提高无线网络安全性的方法

    防护网络安全  a.设置较高安全性的无线加密  没有加密的无线网络就像是没有上锁的大门一样,盗窃者可以很轻易地进入。请设置较为复杂的无线密码,提高无线
    发表于 12-11 14:00

    人工智能和机器学习提高网络安全性的方法

    人工智能和机器学习可以帮助组织提高网络安全性的一些方法
    发表于 01-25 06:25

    什么是蓝牙mesh网络安全性

    蓝牙mesh网络安全性的基本概念
    发表于 02-25 08:22

    便携数据库管理系统网络连接安全,不看肯定后悔

    本文介绍掌上电脑无线网络配置,涉及PocketDBA应用程序的组成、Web裁剪技术、通信协议、无线网络连接的相关设备及其功能;PocketDBAw使用时安全设置,包括数据的机密、完整
    发表于 06-04 07:01

    提高基于Linux网络连接系统安全性

      所描述的服务和方法使用 IPv4 协议。IPv6 协议的安全配置被忽略,这使得保持启用是不安全的。如果内核中启用了 IPv6 支持,那么它应该有额外的保护。或者,如果您不需要它,您可以通过在 /etc/sysctl.conf 文件中添加这一行来关闭它:
    的头像 发表于 06-22 14:39 413次阅读

    提高基于Linux网络连接系统安全性

    嵌入式系统通过互联网或本地网络访问设备的能力促进了广泛的便捷交互。物联网 (IoT) 的发展意味着嵌入式网络的快速增长。对于这些应用程序,网络安全已成为一个大问题。嵌入式
    的头像 发表于 10-20 10:20 435次阅读

    如何解决Linux系统中的网络连接问题?

    如何解决Linux系统中的网络连接问题? Linux系统中的网络连接问题是常见的技术难题之一,通
    的头像 发表于 01-12 15:17 246次阅读