嵌入式系統(tǒng)通過(guò) Internet 或本地網(wǎng)絡(luò)訪問(wèn)設(shè)備的能力促進(jìn)了廣泛的便捷交互。物聯(lián)網(wǎng) (IoT) 的發(fā)展意味著嵌入式網(wǎng)絡(luò)的快速增長(zhǎng)。對(duì)于這些應(yīng)用程序,網(wǎng)絡(luò)安全已成為一個(gè)大問(wèn)題。嵌入式系統(tǒng)的資源太有限,很難提供可靠的網(wǎng)絡(luò)攻擊保護(hù)。具有 Linux 的高性能設(shè)備可能具有安全網(wǎng)絡(luò)訪問(wèn)的優(yōu)勢(shì)。
腳本和技術(shù)可以提高這些基于 Linux 的設(shè)備的網(wǎng)絡(luò)訪問(wèn)安全級(jí)別。目標(biāo)是訪問(wèn)設(shè)備作為遠(yuǎn)程控制和管理的服務(wù)器。這可以在兩個(gè)級(jí)別進(jìn)行:用于安全遠(yuǎn)程 shell 訪問(wèn)和 SFTP 文件傳輸?shù)?SSH 級(jí)別,以及 IP 級(jí)別保護(hù)。
SSH 級(jí)別的安全性
通過(guò) SSH shell 和 SFTP 進(jìn)行遠(yuǎn)程訪問(wèn)為使用 Linux 控制目標(biāo)嵌入式系統(tǒng)提供了最大的機(jī)會(huì)。啟用此功能是管理設(shè)備的便捷方式。SSH 協(xié)議執(zhí)行高級(jí)別的安全和加密。與 SSH shell 和 SFTP 服務(wù)器服務(wù)相關(guān)的“sshd”實(shí)用程序有幾種可能的配置,以提高 SSH 級(jí)別的安全性。
在用于嵌入式系統(tǒng)的流行 Linux 發(fā)行版(例如 Angstrom 或 Arago-project)中,“Dropbear”實(shí)用程序是默認(rèn)的 SSH 服務(wù)器。不幸的是,它提供了一組有限的配置選項(xiàng)。此實(shí)用程序禁用了重要的配置可能性,例如用戶權(quán)限。因此,如果目標(biāo)設(shè)備要進(jìn)行遠(yuǎn)程訪問(wèn),安裝“OpenSSH”服務(wù)器會(huì)是一個(gè)更好的主意。要更改 SSH 服務(wù)器,請(qǐng)刪除 Dropbear 啟動(dòng)腳本(或移動(dòng)它,如下例所示)并安裝 OpenSSH 包:
mv /etc/init.d/dropbear /dropbear_script_backup
opkg install openssh
使用非標(biāo)準(zhǔn) SSH 端口
使用非標(biāo)準(zhǔn) SSH 端口是防止“偶然”發(fā)現(xiàn)的最簡(jiǎn)單方法。基于掃描最常用的 TCP 端口以查找網(wǎng)絡(luò)中不同 IP 地址上的指定服務(wù),它可能有助于避免通過(guò) Internet 或 LAN 進(jìn)行的許多攻擊。降低 SSH 協(xié)議這種風(fēng)險(xiǎn)的簡(jiǎn)單方法是將標(biāo)準(zhǔn)端口 22 更改為非標(biāo)準(zhǔn)端口。此選項(xiàng)適用于任何 SSH 服務(wù)器。唯一需要注意的是需要在客戶端打開(kāi)防火墻上的指定端口。
SSH 端口號(hào)在“/etc/init.d/sshd_config”文件中配置,如下所示:
Port 1907
為 SSH 訪問(wèn)配置用戶權(quán)限
SSH 服務(wù)器選項(xiàng)包括許多限制用戶權(quán)限的方法。對(duì)于安全外殼和 SFTP 服務(wù),“PermitRootLogin”、“AllowUsers”或“DenyUsers”選項(xiàng)限制了能夠通過(guò) SSH 連接到設(shè)備的登錄。對(duì)于 SFTP,可以使用更多參數(shù)來(lái)更改根目錄路徑。此方法對(duì)于保護(hù)包含關(guān)鍵和機(jī)密數(shù)據(jù)的系統(tǒng)部件非常重要。此選項(xiàng)允許配置的用戶僅在其目錄和子目錄內(nèi)進(jìn)行操作,因此您可以將它們留在他們的“沙箱”中。選項(xiàng)“Subsystem SFTP internal-SFTP”結(jié)合“ChrootDirectory”允許更改指定用戶的根目錄。所有已配置登錄的“ChrootDirectory”部分應(yīng)放在配置文件的末尾。在為不同用戶設(shè)置目錄時(shí),
要配置用戶 SSH 權(quán)限,請(qǐng)編輯文件 /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
通過(guò) SSH 遠(yuǎn)程訪問(wèn)您的應(yīng)用程序
為了在嵌入式系統(tǒng)中執(zhí)行對(duì)您的應(yīng)用程序的非標(biāo)準(zhǔn)用戶訪問(wèn),使用 SSH 協(xié)議作為網(wǎng)絡(luò)通信的安全層很方便。
一種常見(jiàn)的方法是將您的服務(wù)作為偵聽(tīng)指定 TCP 端口的服務(wù)器運(yùn)行。要提供 SSH 連接,您可以使用“l(fā)ibssh”——一個(gè)獲得 LGPL 許可的開(kāi)源項(xiàng)目。該項(xiàng)目有幾個(gè)示例,包括 sshd 源代碼,它為構(gòu)建您的服務(wù)器應(yīng)用程序提供了很好的基礎(chǔ)。注意:此方案不連接OpenSSH服務(wù)器,需要自己的端口號(hào)和用戶管理。
另一種選擇是為您的服務(wù)使用現(xiàn)有的正在運(yùn)行的 OpenSSH 服務(wù)器。這個(gè)想法是用您自己的應(yīng)用程序?yàn)橹付ㄓ脩籼鎿Q shell 實(shí)用程序。這次用戶將通過(guò)標(biāo)準(zhǔn)輸入/輸出接口與遠(yuǎn)程系統(tǒng)進(jìn)行交互,就像終端一樣。此解決方案是一種更有效的方式來(lái)組織具有您需要的確切功能的安全遠(yuǎn)程訪問(wèn)。要為用戶替換 shell,請(qǐng)編輯“/etc/passwd”文件中的參數(shù),將最后一個(gè)選項(xiàng)替換為應(yīng)用程序的路徑:
user1::500:500:Linux User,,,:/home/user1:
IP級(jí)保護(hù)
“Iptables”是一個(gè)強(qiáng)大的工具,用于在 IP 級(jí)別保護(hù)對(duì)目標(biāo) Linux 系統(tǒng)的遠(yuǎn)程訪問(wèn)。iptables 允許系統(tǒng)獨(dú)立于應(yīng)用級(jí)網(wǎng)絡(luò)協(xié)議過(guò)濾流量。這是最通用的選項(xiàng),幾乎適用于所有平臺(tái)。
在 Linux 內(nèi)核配置期間應(yīng)該打開(kāi) iptables 支持。請(qǐng)注意,一些必要的 iptables 選項(xiàng),如“conntrack”或“connlimit”,默認(rèn)情況下可能在內(nèi)核中關(guān)閉,因此請(qǐng)打開(kāi)它們以使用更多 iptables 可能性。
在系統(tǒng)啟動(dòng)時(shí)啟動(dòng) iptables 腳本
iptables 實(shí)用程序用作網(wǎng)絡(luò)流量過(guò)濾器。過(guò)濾器是通過(guò)運(yùn)行具有不同參數(shù)的“iptables”命令應(yīng)用的規(guī)則鏈來(lái)執(zhí)行的。這些規(guī)則一起設(shè)置在一個(gè)腳本文件中。要將 iptables 置于初始狀態(tài),請(qǐng)使用以下示例規(guī)則開(kāi)始腳本:
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
要在系統(tǒng)啟動(dòng)時(shí)啟用 iptable 保護(hù),請(qǐng)將所需規(guī)則寫(xiě)入腳本文件并執(zhí)行:
sudo mv /etc/init.d/?sudo chmod +x
/etc/init.d/?sudo update-rc.d defaults
防止暴力攻擊
暴力破解是使用 SSH 協(xié)議時(shí)最大的安全問(wèn)題。可以使用 iptables 設(shè)置一個(gè)簡(jiǎn)單的防火墻來(lái)防止暴力攻擊。這個(gè)想法是阻止淹沒(méi) SSH 端口的 IP 地址并限制打開(kāi)的最大連接數(shù)。下面的腳本用于此目的:
#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 地址是靜態(tài)的,則執(zhí)行網(wǎng)絡(luò)安全的最佳方法是只允許某些 IP 地址訪問(wèn)。這意味著除了指定的用戶之外,沒(méi)有其他用戶能夠遠(yuǎn)程訪問(wèn)目標(biāo)嵌入式系統(tǒng)。這可以通過(guò)創(chuàng)建合法 IP 地址的白名單來(lái)完成。對(duì)于下面的示例腳本,允許的 IP 地址記錄在像這樣逐行文件:
192.168.0.15
192.168.0.100
《。..》
完成這項(xiàng)工作的 iptables 腳本如下所述:
cat | \
while read VAR; do
iptables -A INPUT -s $VAR -j ACCEPT
done
您可以使用相反的策略——通過(guò)將指定的 IP 地址添加到黑名單來(lái)禁止它們。將 IP 地址從黑名單中屏蔽的示例如下:
cat | \
while read VAR; do
iptables -A INPUT -s $VAR -j DROP
done
關(guān)閉 IPv6 支持
所描述的服務(wù)和方法使用 IPv4 協(xié)議。IPv6 協(xié)議的安全配置被忽略,這使得保持啟用是不安全的。如果內(nèi)核中啟用了 IPv6 支持,那么它應(yīng)該有額外的保護(hù)。或者,如果您不需要它,您可以通過(guò)在 /etc/sysctl.conf 文件中添加這一行來(lái)關(guān)閉它:
net.ipv6.conf.eth0.disable_ipv6 = 1
審核編輯:郭婷
-
嵌入式
+關(guān)注
關(guān)注
5152文章
19676瀏覽量
317699 -
Linux
+關(guān)注
關(guān)注
87文章
11511瀏覽量
213864 -
服務(wù)器
+關(guān)注
關(guān)注
13文章
9796瀏覽量
88014
發(fā)布評(píng)論請(qǐng)先 登錄
如何保證汽車(chē)遠(yuǎn)程信息系統(tǒng)的安全性
藍(lán)牙m(xù)esh系列的網(wǎng)絡(luò)安全性
怎么提高SRAM工藝FPGA的設(shè)計(jì)安全性?
如何提高SRAM工藝FPGA的設(shè)計(jì)安全性?
如何提高SRAM工藝FPGA的設(shè)計(jì)安全性?
如何提升嵌入式系統(tǒng)的VxWorks安全性?
無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)的穩(wěn)定性和安全性怎么提高?
嵌入式設(shè)備如何提高安全性
提高無(wú)線網(wǎng)絡(luò)的安全性的方法
人工智能和機(jī)器學(xué)習(xí)提高網(wǎng)絡(luò)安全性的方法
linux操作系統(tǒng)的安全性
Linux教程之如何配置網(wǎng)絡(luò)連接的資料概述

評(píng)論