2013-02-07 28 views
3

我試圖爲遵循以下邏輯的AllowUsers指令非常具體配置:sshd_config中的AllowUsers

  • 允許用戶1從主機1的ssh
  • 拒絕user1的任何其他主機的ssh
  • 允許所有其他用戶從任何主機

我已經試過如下:

AllowUsers [email protected] [email protected]!* *@* 

不幸的是,當有史以來@存在,它否定了之前的參數,也不管順序是什麼。

我有兩個問題;是存在於其中的AllowUsers指令中的參數被執行,並且是上述甚至可以邏輯訂單?

回答

0

注意:您還可以通過使用SSH PAM CONFIG(推薦用於大量用戶)或使用TCP包裝程序來允許或拒絕ssh訪問,但您需要獲取libwrap.a庫以使其能夠與SSH一起使用。

如果你想通過SSHD CONFIG到restric訪問,您可以使用這四個項目:

的AllowUsers AllowGroups DenyUsers DenyGroups

按以下順序出現的模式匹配:DenyUsers,的AllowUsers,DenyGroups ,AllowGroups。這意味着,例如,如果你添加一個用戶到兩個條目(的AllowUsers和DenyUsers),這將導致用戶被拒絕無論在哪個規則出現在配置腳本的順序。

要完成你所提到的3種限制,你可以嘗試創建一個組sshgroup和配置每個用戶帳戶,除了USER1,要包含在組中。最後,你可以創建一個腳本在sshgroup添加的用戶在你的sshd_config文件的規則,它總是包括:

的AllowUsers USER1 @主機1

導致:

的AllowUsers USER1 @ host1 user2 user3 ...

爲了讓sshd配置文件保持最新,您可以在每次創建/刪除用戶時調用該腳本。不要忘記每次更改配置文件後重新啓動ssh守護進程。

Here你可以找到一個劇本「pop_user_allow_ssh」那還試圖生成一個用戶列表。

你不提你的操作系統,但是這是我做到了在AIX上。我希望這個想法有幫助。

2

上面的邏輯是不可能只用一個sshd的實例。但是,如果您運行第二個sshd實例(配置爲偵聽不同的端口),則可能會發生這種情況。

DenyUsers user1 

配置與第二實例:

與配置的第一個實例

AllowUsers [email protected] 

泰爾USER1連接到第二實例(不同的端口)。告訴所有其他用戶連接到第一個實例(默認端口)。

2

sshd_config man說,處理的順序是:

的允許/拒絕的指令在下列順序處理:DenyUsers,的AllowUsers,DenyGroups,最後AllowGroups。

因此,如果 「用戶1」 也有自己的一羣 「USER1」 您可以使用此配置:

AllowUsers *@host1 
DenyGroups user1 
AllowGroups * 

另一種選擇是使用否定:

DenyUsers [email protected]!host1 
AllowUsers *@* 
0
# Deny user1 from all hosts but host1 
DenyUsers [email protected]!host1,* 
# Allow all users from any host that are not denied yet 
AllowUsers *@* 
+0

請嘗試用解釋來回答這兩個問題。 –

相關問題