Linux
允許來自特定 IP 的具有特定 UID 的使用者進行 ssh 訪問
我需要允許所有使用者通過 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
行之後。