puretpd를 사용하여 큰 디렉터리를 나열할 수 없습니다.

puretpd를 사용하여 큰 디렉터리를 나열할 수 없습니다.

VPS(ovh)에 pureftpd를 설치했습니다. 작은 디렉토리를 나열할 수 있지만(작다는 것은 단지 몇 개의 파일만 있는 디렉토리를 의미합니다), 수천 개의 파일(디렉터리 포함)이 있는 큰 디렉토리를 나열하려고 하면 filezilla 클라이언트에서 "Unable to"라는 오류 메시지가 나타납니다. "ps" 디렉터리를 클릭하면 클라이언트 측에서 디렉터리 목록 검색" 오류 메시지가 나타납니다.

Command:    USER xxxxx
Response:   331 User xxxxx OK. Password required
Command:    PASS ************
Response:   230 OK. Current directory is /
Command:    OPTS UTF8 ON
Response:   200 OK, UTF-8 enabled
Status: Connected
Status: Retrieving directory listing...
Command:    CWD /ps
Response:   250 OK. Current directory is /ps
Command:    TYPE I
Response:   200 TYPE is now 8-bit binary
Command:    PASV
Response:   227 Entering Passive Mode (<my_vps_ip>,156,188)
Command:    MLSD
Response:   150 Accepted data connection
Response:   226-Options: -a -l 
Response:   226 33 matches total
Error:  Connection timed out
Error:  Failed to retrieve directory listing

명령줄에서는 끝없이 기다립니다.

ftp> cd ps
250 OK. Current directory is /ps
ftp> ls
200 PORT command successful
150 Connecting to port 38359

나는 이 규칙을 읽고 내 서버의 문제를 해결했기 때문에 이 규칙을 iptables에 추가했습니다.

root@vpsxxx:/var/www/html# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ftp-data ctstate RELATED,ESTABLISHED /* Allow ftp connections on port 20 */
ACCEPT     tcp  --  anywhere             anywhere             tcp spts:1024:65535 dpts:1024:65535 ctstate ESTABLISHED /* Allow passive inbound connections */

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ftp-data ctstate ESTABLISHED /* Allow ftp connections on port 20 */
ACCEPT     tcp  --  anywhere             anywhere             tcp spts:1024:65535 dpts:1024:65535 ctstate RELATED,ESTABLISHED /* Allow passive inbound connections */

puretpd에 패시브 모드에 대한 수정 포트 범위를 추가했습니다.

root@xxx:/var/www/html# cat /etc/pure-ftpd/conf/PassivePortRange
40110 40210
root@xxx:/var/www/html# 

나열하려는 ps 디렉토리의 권한은 다음과 같습니다.

drwxr-xr-x 25 root    root         4096 May  9 08:29 ps

이것은 내 클라이언트 OS(Debian 8)의 iptables입니다.

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT

내가 시도한 모든 것이 쓸모없고 효과가 없는 것 같습니다. Wireshark를 사용하여 트래픽 분석을 시도했는데 FTP-DATA 프로토콜 패키지의 디렉터리 목록 일부를 가져오는 것처럼 보이지만 문제가 발생하지만 무엇인지 모르겠습니다...

방금 proftpd와 동일한 문제가 있다는 것을 알았습니다. puretpd를 사용하는 것이 더 나을 것이라고 생각했지만 그렇지 않았습니다 :)

답변1

귀하의 의견을 포함한 문제 설명에 따르면 방화벽( iptables)이 TCP 포트 20 및 21과의 연결을 차단하고 있습니다. 수동 FTP를 사용하더라도(수신 21은 분명히 열려 있음) 이러한 연결이 필요합니다.

자세히 알아보려면 방화벽 블록에 대한 로그를 검색하세요.

dmesg | grep -i firewall | tail -40

파일을 다운로드하려고 시도한 후 실패합니다.

또한 AppArmor 또는 기타 보안 기능으로 인해 pureftpd이러한 파일을 제공하는 프로세스가 차단될 수 있습니다. 따라서 위의 내용에 포트 차단이 표시되지 않으면 차단을 해제하여 문제를 해결할 수 있으며 로그 파일도 살펴보세요( s 없는 출력을 ls -ltr /var/log제외하고 후보 로그 파일을 확인해 보세요 ).dmesggrep

관련 정보