嵌入式系統通過互聯網或本地網絡訪問設備的能力促進了廣泛的便捷交互。物聯網 (IoT) 的發展意味著嵌入式網絡的快速增長。對于這些應用程序,網絡安全已成為一個大問題。嵌入式系統的資源過于有限,很難提供針對網絡攻擊的可靠保護。具有 Linux 的高性能設備可能具有安全網絡訪問的優勢。
腳本和技術可以提高這些基于 Linux 的設備的網絡訪問安全級別。目標是將設備作為服務器進行遠程控制和管理。這可以在兩個級別進行:用于安全遠程外殼訪問和 SFTP 文件傳輸的 SSH 級別,以及 IP 級別保護。
固態混合軟件級別安全性
通過 SSH 外殼和 SFTP 進行遠程訪問是使用 Linux 控制目標嵌入式系統的最大機會。啟用此功能是管理設備的便捷方式。SSH 協議執行高級別的安全性和加密。與 SSH 外殼和 SFTP 服務器服務關聯的“sshd”實用程序有幾種可能的配置,以提高 SSH 級別的安全性。
在嵌入式系統的流行Linux發行版(如埃或阿拉戈項目)中,“丟熊”實用程序是默認的SSH服務器。不幸的是,它提供了一組有限的配置選項。在此實用程序中禁用了重要的配置可能性,例如用戶的權限。因此,如果目標設備將具有遠程訪問權限,則安裝“ OpenSSH”服務器將是一個更好的主意。要更改 SSH 服務器,請刪除丟熊啟動腳本(或移動它,如下面的示例所示)并安裝 OpenSSH 軟件包:
mv /etc/init.d/dropbear /dropbear_script_backup
opkg install openssh
使用非標準 SSH 端口
使用非標準 SSH 端口是防止“巧合”發現的最簡單方法。它可能有助于避免通過互聯網或 LAN 進行的許多攻擊,這些攻擊基于掃描最常用的 TCP 端口以查找網絡中不同 IP 地址上的指定服務。降低 SSH 協議此風險的簡單方法是將標準端口 22 更改為非標準端口。此選項適用于任何 SSH 服務器。唯一需要注意的是需要在客戶端的防火墻上打開指定的端口。
SSH 端口號在“/等/init.d/sshd_config”文件中配置,如下所示:
Port 1907
配置 SSH 訪問的用戶權限
SSH 服務器選項包括許多限制用戶權限的方法。對于安全外殼和 SFTP 服務,選項“允許根登錄”、“允許用戶”或“拒絕用戶”限制了能夠通過 SSH 連接到設備的登錄名。對于 SFTP,可以使用更多參數來更改根目錄路徑。此方法對于保護包含關鍵和機密數據的系統部件非常重要。此選項允許已配置的用戶僅在其目錄和子目錄中操作,因此您可以將其保留在其“沙盒”中。選項“子系統 SFTP 內部 SFTP”與“Chroot 目錄”相結合,允許更改指定用戶的根目錄。所有已配置登錄名的“Chroot 目錄”部分應放在配置文件的末尾。為不同用戶設置目錄時,該目錄的所有者應為 root 用戶。
要配置用戶的 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 選項(如“連接”或“connlimit”)可能會在內核中關閉,因此請打開它們以使用更多 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
-
嵌入式
+關注
關注
5141文章
19528瀏覽量
314905 -
物聯網
+關注
關注
2927文章
45864瀏覽量
387913 -
Linux
+關注
關注
87文章
11459瀏覽量
212778
發布評論請先 登錄
以創新技術驅動網絡連接未來

DHCP在企業網的部署及安全防范
在電氣安裝中通過負載箱實現最大效率和安全性
試驗機設備管理系統成為提高管理效率和安全性的重要手段

智能系統的安全性分析
恒訊科技分析:IPSec與SSL/TLS相比,安全性如何?

在跨境電商中,如何確保網絡節點的安全性和合規性?
工業交換機如何增強網絡連接的可靠性

評論