Security

匹配塊中不允許使用指令“StrictModes”

  • December 12, 2016

我正在建構一個 Raspberry Pi ADS-B接收器網路。幾個節點放置在不同的位置:家、旅館、父母,也許還會有更多……它們都被設置為使用反向 ssh 隧道將回家的電話連接到Amazon-EC2 。

我真正想要實現的是某種方式來區分哪個節點是哪個節點以及用於 SSH 到節點的本地埠。

由於sudo netstat -tlpe --numeric-ports | grep sshd顯示了哪些使用者正在執行該過程,因此我認為每個隧道都有一個使用者。我只想限制 SSH 反向隧道的使用者。最好我想將所有節點(多個)密鑰保留在同一個authorized_keys文件中並保留StrictModes yes給所有其他使用者。

我最終執行了這些命令:

sudo groupadd sshtungrp
sudo useradd sshtunnel -m -d /home/sshtunnel -s /bin/true -g sshtungrp
while read p; do sudo useradd $p -M -d /home/sshtunnel -s /bin/true -g sshtungrp; done < users.txt;

sudo -u sshtunnel mkdir /home/sshtunnel/.ssh
sudo -u sshtunnel vim /home/sshtunnel/.ssh/authorized_keys

sudo -u sshtunnel chmod 750 /home/sshtunnel
sudo -u sshtunnel chmod 750 /home/sshtunnel/.ssh
sudo -u sshtunnel chmod 640 /home/sshtunnel/.ssh/authorized_keys

/etc/ssh/sshd_config我已經添加:

Match Group *,!sshtungrp
       StrictModes yes

我收到錯誤消息Directive 'StrictModes' is not allowed within a Match block。我該如何克服這個問題,或者最終實現我的目標,即知道哪個節點是哪個節點以及用於 SSH 到該節點的本地埠?

您希望通過為它們提供不同的使用者來區分不同的連接來源。authorized_keys在這些不同的使用者之間共享文件是沒有意義的,因為這樣任何密鑰都將允許登錄到任何帳戶。(它會起作用,但帳戶分離不會帶來任何安全優勢。)

所以authorized_keys每個使用者都有一個文件,屬於root。每個authorized_keys文件僅授權與該帳戶對應的密鑰。創建多個密鑰很便宜,沒有理由不這樣做。你不需要關閉StrictModes。您可以AuthorizedKeysFile在一個Match塊中為每個使用者使用該指令,或者有一個AuthorizedKeysFile包含%u由使用者名替換的指令。

隧道使用者創建:

sudo groupadd sshtungrp
sudo mkdir /etc/ssh/tunnelkeys # or wherever you want to keep them
# Add users without /home
while read p; do sudo useradd $p -r -s /bin/true -g sshtungrp; done < users.txt;
# Copy key file with: sudo vim /etc/ssh/tunnelkeys/%u

sshd_config:

Match Group sshtungrp
       AuthorizedKeysFile /etc/ssh/tunnelkeys/%u

引用自:https://unix.stackexchange.com/questions/329698