題 使用sshd_config限制root登錄?


使用ubuntu 12.04,我想使用sshd_config來限制從root到固定IP子集的ssh會話。我希望普通用戶能夠從任何地方ssh,但root應該只能從IP範圍(我的本地子網)ssh,以及從該範圍之外的一個IP(我的異地備份服務器)。

我的備份解決方案需要通過ssh進行root訪問,因此請使用

PermitRootLogin沒有

不是解決方案。與此同時,我不希望通過為每個人和他們的母親打開根來不必要地危及我的系統。

我目前在sshd_config中有以下內容:

AllowUsers *@*
DenyUsers root@*
AllowUsers root@local.subnet.range.*
AllowUsers root@offsite.backup.server.ip

本地子網和異地備份號碼正確的位置。

這不起作用。關於如何使這個工作的任何提示,為什麼? sshd_config的文檔沒有幫助我理解AllowUsers和DenyUsers如何交互。


2
2017-10-31 16:40


起源


你考慮過使用嗎? sudo 要么 su? - pabouk
我不能讓我的備份以這種方式工作。我設法獲得工作備份的唯一方法是允許我的備份解決方案以root身份直接登錄。 - IceRabbit
有備份解決方案正在運行 ssh 這不需要 root 登錄。參見例如: 使用rdiff-backup進行遠程備份 - pabouk


答案:


考慮簡單地使用SSH密鑰以root身份登錄(PermitRootLogin without-password)。使用可以將每個密鑰限制為特定的源地址 from="1.2.3.4,8.9.0.0/24,::1" authorized_keys中的選項。

手冊頁,在“AllowUsers”下,  說:

allow / deny指令按以下順序處理:DenyUsers,AllowUsers,DenyGroups,最後是AllowGroups。

- 因此,如果DenyUsers條目匹配,則根本不會檢查任何其他規則。


5
2017-10-31 16:54



然後 By default, login is allowed for all users.。 - week
ssh_config 模式可以否定使用 ! 但我已經註意到這與allow / deny指令不兼容。 - pabouk
我不確定處理是如何實際發生的,DenyUsers是否可以覆蓋現有的AllowUsers或其他方式。但是如果sshd在發現任何匹配後只是停止檢查,那麼它顯然不會按照我想要的方式工作。我將研究使用無密碼作為root登錄。 - IceRabbit


在/ etc / ssh / sshd_config中,確保在配置的主要部分中設置了以下內容

PermitRootLogin no

並將其附加到配置文件的末尾。現在root只能從本地地址登錄。

Match Address 192.168.0.*,127.0.0.1
PermitRootLogin yes

我認為這個功能已經存在近2個主要版本所以......令人驚訝的是沒有人能夠盡快回答這個問題。

你可以在比賽后做其他事情,比如啟用端口轉發等...


0
2018-02-21 09:38



我已經用grawity的答案解決了這個問題。但有兩個問題:您的方法是否也可以使用外部IP(我的異地備份在外部網絡上),並且安全性與設置有什麼不同 PermitRootLogin without-password 並使用。明確限制授權密鑰 from="1.2.3.4" 選項? - IceRabbit
您應該能夠匹配任何IP本地或遠程...因此您可以匹配您希望啟用PermitRootLogin的遠程IP而無需密碼...可能沒有太大的區別但匹配地址確實解決了問題。 - cb88