Ubuntu

將 vsftpd 首頁放在 Windows AD 共享上

  • December 4, 2019

我有外部客戶端通過 Ubuntu 18.04 上的 vsftpd FTP 上傳/下載文件。他們使用 linux 帳戶(不是虛擬帳戶),被 chroot 並且只需要(並且確實)在他們自己的目錄下查看。

現在,他們的家需要以某種方式從 Windows 訪問,以便我們的應用管理員和特定應用操作員(他們是 Windows AD 的正常使用者)查看和可能編輯上傳的內容。

我想將他們的整個 /home 從我們文件伺服器上的 Windows AD 共享中移動,並讓特定的 AD 安全組可以訪問,但我不確定這是否適用於 linux 權限?我明確希望避免通過網路共享 Ubuntu 文件夾。

想法:

  • 從 AD 文件伺服器掛載 /home 作為 CIFS 共享。
  • vsftpd – FTP 使用者 chroot 到掛載 /home – 每個人都可以讀/寫他們自己的目錄
  • Windows AD 使用者 - 可以在其現有共享上查看 Windows 下的目錄,具有適當的 AD 安全組可以讀取/寫入任何主子目錄下的任何文件

這行得通嗎?如果沒有,我還能做什麼?也許我需要轉移到虛擬 vsftpd 使用者?

我已經在 Ubuntu 上安裝了幾個 CIFS 共享,但它們都映射到單個 uid/gid,我不確定 vsftpd 將/如何與上述設置一起使用。

事實證明,即使是虛擬使用者和實際使用者的混合也有效!該指南適用於 Ubuntu 18.04 LTS,但也應適用於其他 Linux,儘管文件位置可能會更改。

因此,一種方法是:

  1. 在您的 CIFS 伺服器上創建一個適當的目錄並設置一個具有適當權限的 AD 使用者(例如 unix_server_user@domain)。
  2. 使用 unix_server_user 的 AD 權限和映射到 VSFTPD 伺服器使用者的本地使用者掛載 CIFS 共享。/etc/fstab

//Your_CIFS_Server/share /mnt/cifs_homes cifs credentials=/etc/your_AD_password_data_file,uid=ftpuser,gid=ftpusers,file_mode=0770,dir_mode=0770 0 0

顯然不要忘記將密碼文件設置為只有 root 可以訪問以獲得一些小的安全獎勵。

  1. /etc/vsftpd.conf至少應該有以下幾行:

local_enable=YES nopriv_user=ftpuser chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd user_config_dir=/etc/vsftpd.userconf

  1. 您需要修改/etc/pam.d/vsftpd以支持虛擬和本地使用者:

虛擬使用者: auth sufficient pam_pwdfile.so pwdfile /etc/vsftpd.passwd account sufficient pam_permit.so

添加虛擬使用者是通過htpasswd -d/etc/vsftpd.passwd 文件上的命令完成的。該文件也可以是 root 訪問權限,僅用於一些次要的安全措施。

請注意,當使用 htpasswd 時 pam_pwdfile 似乎只支持 vsftpd.passwd 文件的 CRYPT 加密,這是不安全的,因此您應該按照連結中的說明使用 openssl 生成密碼,或者另外至少使用 SSL 或 IP 地址限制來進行 FTP 訪問。

本地使用者:

auth required pam_shells.so

所有這些行都應該與通常的 @include common-* 行以及您在 vsftpd pam 文件中需要的任何其他行一起出現。

為 /etc/vsftpd.conf/ 中命名為使用者的每個本地和虛擬使用者添加文件。

本地使用者應該只有 idle_session_timeout 的正常值或您需要的任何值。他的 homedir 將是通常的 /home 或 /etc/passwd 中設置的任何內容。

除了本地使用者所需的任何內容外,虛擬使用者還應具有以下幾行:

chroot_local_user=YES local_root=/mnt/cifs_homes/$USER user_sub_token=$USER virtual_use_local_privs=YES guest_enable=YES nopriv_user=ftpuser guest_username=ftpusers

你最終得到的是:

  1. 從 Windows 端,訪問由您為其設置 AD 權限的任何 AD 使用者和組控制。請記住 unix_server_user@domain 應該具有對其的寫入權限,除非您想要只讀 FTP。

  2. 從 Unix 開始,所有虛擬使用者訪問都映射到 ftpuser.ftpusers。本地使用者照常使用 Unix 伺服器 /home。

  3. 所有的 FTP 登錄都有各自的 homedir 的 chroot 並且可以在其中讀取和寫入。

在這裡猜測,但我會嘗試 3 種方法:

  1. 在 Linux 上使用 AD 使用者(可能使用 SSSD)
  2. 在 vsftpd 上使用虛擬使用者(我認為您需要確保 CIFS 掛載的文件系統文件歸 vsftpd 使用者所有)
  3. 做相反的事情:安裝 Samba 並讓管理員和操作員通過它訪問文件(更簡單的解決方案恕我直言)

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