Linux

允許來自特定 IP 的具有特定 UID 的使用者進行 ssh 訪問

  • December 5, 2020

我需要允許所有使用者通過 ssh 訪問,但如果 UID 介於 6000 和 6500 之間,我需要檢查 ssh 來自的 IP 是否在文件 /etc/remote-hosts 中。

/etc/remote-hosts

1.2.3.4
5.6.7.8
9.10.11.12

有什麼辦法可以做到這一點?我找不到有關此問題的任何資訊,只有您允許和阻止特定的 ip 或 uid。

您正在尋找的可能是pam_listfile模組。

如下所示的塊/etc/pam.d/sshd可能會執行您想要的操作:

account [success=1 default=ignore] pam_succeed_if.so quiet uid < 6000 uid > 6500
account required pam_listfile.so file=/etc/remote-hosts item=rhost sense=allow onerr=fail

pam_listfile如果 UID 超出範圍 6000-6500 ,第一行將跳過測試。刪除quiet標誌以查看該測試何時執行。將其更改debug為真正填寫您的日誌。

第二行將檢查使用者的遠端主機是否在訪問文件中。您可以更改該行以使用onerr=succeed; 如果是這樣,您可以刪除該訪問文件以啟用該 UID 範圍內的所有使用者的登錄。

如果我可以建議修改您的策略,而不是使用 UID 範圍,請將此類使用者添加到公共組,例如“restrictedssh”。這樣您就不必擔心將所有此類使用者都納入特定的 UID 範圍。請嘗試以下塊:

account [success=1 default=ignore] pam_succeed_if.so quiet user notingroup restrictedssh
account required pam_listfile.so file=/etc/remote-hosts item=rhost sense=allow onerr=fail

在任何一種情況下,將這些行添加到文件頂部附近/etc/pam.d/sshd,緊跟在任何其他account行之後。

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