Active-Directory

OpenSSH + Active Directory:允許一個組的 sftp,同時禁止其他所有人

  • September 17, 2020

我的目標是允許給定的 Active Directory 組成員在 chroot 中使用 OpenSSH SFTP,並拒絕他們和所有其他不是該組成員的 SSH 訪問,同時仍然允許本地(非 AD)系統帳戶。

我已經配置sshd_config為使用 Kerberos 來獲取 Active Directory 資訊,並且該部分已經在工作。

問題是:雖然它適用於我希望授予訪問權限的組(允許 sftp,拒絕 ssh),但所有其他 AD 帳戶都可以打開 SSH shell 和非 chroot SFTP,這當然是不希望的。

總結一下,我需要:

  • 授予對 Active Directory 組的 chroot’ed SFTP 訪問權限;拒絕他們的 SSH。
  • 拒絕該組的非成員的 SFTP 和 SSH。
  • 保留對本地系統帳戶的訪問權限。

我正在使用帶有 OpenSSH_8.3p1 的 Fedora 32,我的配置如下(未註釋掉的行)。

/etc/ssh/sshd_config:

Include /etc/ssh/sshd_config.d/*.conf
HostbasedAuthentication no
KerberosAuthentication yes
Subsystem       sftp   internal-sftp
Match Group sftp_users
       ChrootDirectory /sftp/%u
       ForceCommand internal-sftp
       X11Forwarding no
       AllowTcpForwarding no
       PermitTTY no

/etc/ssh/sshd_config.d/50-redhat.conf:

PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication yes
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
PrintMotd no

提前致謝!

經過一些試驗和錯誤,我可能已經找到了我自己問題的答案。我只是想從你們那裡知道這個解決方案是否會產生任何已知的影響。

所以,我變成sshd_config了這樣(省略其餘部分):

Match Group !wheel,*
       ChrootDirectory /sftp/%u
       ForceCommand internal-sftp
       X11Forwarding no
       AllowTcpForwarding no
       PermitTTY no
       AllowGroups sftp_users

Match Group wheel

第一個Match塊強制匹配組(使用!),並使用 * 匹配任何其他組。然後AllowGroups定義允許使用 SFTP 的組的空格分隔列表。這些組的成員將無權訪問 SSH shell。在我的測試中,我可以看到它們已成功 chroot。

然後在第二個Match塊中,組通過在塊中放置任何其他內容來定義預設的 sshd 選項。因此,wheel成員將可以不受限制地訪問 SSH 和 SFTP。他們沒有落入chroot。

我選擇了組,因為它是基於 Fedora 的系統上的 sudoers 組,所以對我來說,這些本地系統使用者就足夠了(記住root使用者不屬於它;注意不要把自己鎖在外面!)。

然後我可以看到只有所需的 AD 組成員才能登錄 SFTP。非成員會生成如下日誌:

User john from 192.168.1.11 not allowed because none of user's groups are listed in AllowGroups

我沒有測試的(只是因為它不是我的情況):

  • 屬於允許組和不允許組的使用者會發生什麼。
  • 相同的系統名稱和 Active Directory 名稱會發生什麼(我猜nsswitch.conf順序會在這裡起作用)。

您需要在 SSSD 中使用 ad_access_filter 來過濾哪些 AD 使用者可以訪問伺服器。語法類似於:

ad_access_filter=(&(memberof=cn=sftp_user,ou=groups,dc=example,dc=com)(其他會員標準))

引用自:https://serverfault.com/questions/1034260