Debian 上的 Proftpd - 檔案傳輸問題

Debian 上的 Proftpd - 檔案傳輸問題

我租了一個安裝了 debian 的 VPS。最近,我安裝了 proftpd,以便允許每個人進行唯讀訪問,並允許特定用戶進行完全訪問。

我根據幾個指南配置了 proftpd(使用 TLS)。我已經解鎖了被動連接埠(透過 iptables 的連接埠和連接埠 21)並設定了匿名登入。

當我登入時,一切都很好 - 快速登錄,快速瀏覽目錄...當我嘗試下載文件時出現問題 - Winscp/filezilla/python,所有內容都卡在下載文件然後鬆動連接(文件〜 1kB,非常小)。當我透過 SFTP 連接到伺服器時,沒有任何問題並且全速。

有任何想法嗎?你需要我的proftpd.conf文件嗎?

更新:

我發現我需要添加一些信息,感謝第一條評論(關於 SCP):

  • 我希望能夠匿名查看文件,最好是透過網頁瀏覽器,但這不是必須的。
  • 我需要設定一個應用程序,將 VPS 中的整個資料夾與我的硬碟上的資料夾同步(我計劃通過 python 執行此操作,但 shell/bash 也很好)
  • 我希望能夠下載/上傳整個目錄或僅那些已更改的文件
  • 我需要在沒有第三方程式的情況下實現這一點。透過 cmdline/bash 或官方 python 函式庫。需要在 Windows 和 Fedora 上運行

我的 iptables 設定:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
fail2ban-ssh-ddos  tcp  --  anywhere             anywhere             multiport dports ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpts:60000:65535
fail2ban-ssh  tcp  --  anywhere             anywhere             multiport dports ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ftp

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain fail2ban-ssh (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

Chain fail2ban-ssh-ddos (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

我關閉了 TLS,透過來賓帳戶連接,打開二進位模式並在連接埠 21(伺服器端 ofc)上啟動 tcpdump。然後我對單個文件進行了“獲取”,過了一會兒我得到了“連接被遠端主機關閉”。這是 ftp 輸入:

ftp> get light.cfg
200 PORT command successful
150 Opening BINARY mode data connection for light.cfg (94 bytes)
Connection closed by remote host.

在這裡您可以看到 get 和 connection_close 由新行分隔:

15:12:15.836468 IP (tos 0x0, ttl 119, id 30359, offset 0, flags [DF], proto TCP (6), length 67)
    83-144-76-138.static.chello.pl.54225 > vz31640.dahost.pl.ftp: Flags [P.], cksum 0x5526 (correct), seq 139:166, ack 575, win 7618, length 27
15:12:15.836636 IP (tos 0x0, ttl 64, id 50952, offset 0, flags [DF], proto TCP (6), length 69)
    vz31640.dahost.pl.ftp > 83-144-76-138.static.chello.pl.54225: Flags [P.], cksum 0x7049 (correct), seq 575:604, ack 166, win 115, length 29
15:12:15.856530 IP (tos 0x0, ttl 119, id 30360, offset 0, flags [DF], proto TCP (6), length 56)
    83-144-76-138.static.chello.pl.54225 > vz31640.dahost.pl.ftp: Flags [P.], cksum 0xd20f (correct), seq 166:182, ack 604, win 7589, length 16
15:12:15.868348 IP (tos 0x0, ttl 64, id 50953, offset 0, flags [DF], proto TCP (6), length 106)
    vz31640.dahost.pl.ftp > 83-144-76-138.static.chello.pl.54225: Flags [P.], cksum 0xba9a (correct), seq 604:670, ack 182, win 115, length 66
15:12:15.934002 IP (tos 0x0, ttl 119, id 30365, offset 0, flags [DF], proto TCP (6), length 40)
    83-144-76-138.static.chello.pl.54225 > vz31640.dahost.pl.ftp: Flags [.], cksum 0x0ccc (correct), ack 670, win 7523, length 0


15:13:15.909873 IP (tos 0x0, ttl 119, id 30372, offset 0, flags [DF], proto TCP (6), length 40)
    83-144-76-138.static.chello.pl.54225 > vz31640.dahost.pl.ftp: Flags [F.], cksum 0x0ccb (correct), seq 182, ack 670, win 7523, length 0
15:13:15.910056 IP (tos 0x0, ttl 64, id 50954, offset 0, flags [DF], proto TCP (6), length 40)
    vz31640.dahost.pl.ftp > 83-144-76-138.static.chello.pl.54225: Flags [F.], cksum 0x29ba (correct), seq 670, ack 183, win 115, length 0
15:13:15.922725 IP (tos 0x0, ttl 119, id 30373, offset 0, flags [DF], proto TCP (6), length 40)
    83-144-76-138.static.chello.pl.54225 > vz31640.dahost.pl.ftp: Flags [.], cksum 0x0cca (correct), ack 671, win 7523, length 0

答案1

請發布您的iptables設定。請注意,使其與 FTP 一起工作可能會很棘手,因為 FTP 使用動態端口分配(在被動模式下,當客戶端想要下載或上傳檔案時,伺服器為資料傳輸流分配動態端口,告訴客戶端並期望客戶端連接到它)。

這意味著:

  1. 如果你想在Netfilter中使用一些「有狀態」的方法來偵測FTP資料流,你需要載入特殊的核心模組來解碼控制FTP流;
  2. 這不適用於 TLS,因為核心將無法解碼上述 FTP 控制流程。

SCP(和 SFTP)工作正常,因為它們在單一 TCP 流中復用控制和資料流。

至於同步……首先,忘記它,scp因為這是遺留協議;請改用 SFTP。 似乎是一個跨平台的 Python SFTP 實現,因此它可能適合您。順便說一句,Windows對SFTP前端軟體有很好的支援(google for WinSCP)。

您也可以考慮其他同步方式。例如,rsync具有 Windows 版本,而且它無疑是現有的最好的檔案系統同步工具。您也可以考慮 WebDAV 甚至實作一些 RESTful 的東西。

相關內容