I'm experiencing an issue with PureFTPd, but I don't know that the issue is ISPConfig-specific. In any event, it can't hurt to ask, can it?
I'm attempting to upload a sizable file (a little over 700MB) to the server, via FTPs (I'm not sure the TLS part matters), but my FTP client is disconnected constantly throughout the process; every minute or two. My client attempts to resume the upload each time it is disconnected.
Here is a log excerpt (this was before I enabled verbose logging). The XXX.XXX.XXX.XXX entries represent my public (Internet) IP address.
Code:
Nov 7 02:41:36 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] New connection from XXX.XXX.XXX.XXX
Nov 7 02:41:37 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] SSL/TLS: Enabled TLSv1/SSLv3 with DHE-RSA-AES256-SHA, 256 secret bits cipher
Nov 7 02:41:37 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] ftpuser is now logged in
Nov 7 02:41:37 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [INFO] Logout.
Nov 7 02:41:42 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] New connection from XXX.XXX.XXX.XXX
Nov 7 02:41:43 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] SSL/TLS: Enabled TLSv1/SSLv3 with DHE-RSA-AES256-SHA, 256 secret bits cipher
Nov 7 02:41:43 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] ftpuser is now logged in
Nov 7 02:41:43 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [INFO] Logout.
Nov 7 02:41:48 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] New connection from XXX.XXX.XXX.XXX
Nov 7 02:41:49 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] SSL/TLS: Enabled TLSv1/SSLv3 with DHE-RSA-AES256-SHA, 256 secret bits cipher
Nov 7 02:41:49 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] ftpuser is now logged in
Nov 7 02:41:49 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [NOTICE] Restarting at 638943232
Nov 7 02:43:50 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [INFO] Logout.
Nov 7 02:43:56 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] New connection from XXX.XXX.XXX.XXX
Nov 7 02:43:56 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] SSL/TLS: Enabled TLSv1/SSLv3 with DHE-RSA-AES256-SHA, 256 secret bits cipher
Nov 7 02:43:56 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] ftpuser is now logged in
Nov 7 02:43:56 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [INFO] Logout.
Nov 7 02:44:02 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] New connection from XXX.XXX.XXX.XXX
Nov 7 02:44:02 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] SSL/TLS: Enabled TLSv1/SSLv3 with DHE-RSA-AES256-SHA, 256 secret bits cipher
Nov 7 02:44:02 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] ftpuser is now logged in
Nov 7 02:44:02 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [INFO] Logout.
Nov 7 02:44:07 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] New connection from XXX.XXX.XXX.XXX
Nov 7 02:44:08 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] SSL/TLS: Enabled TLSv1/SSLv3 with DHE-RSA-AES256-SHA, 256 secret bits cipher
Nov 7 02:44:08 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] ftpuser is now logged in
Nov 7 02:44:08 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [NOTICE] Restarting at 638943232
When the log reflects "[NOTICE] Restarting at 638943232", does it mean to say that the file upload is being resumed at byte offset 638943232?
Once the upload progress reaches a certain point (the exact byte offset changes with each new upload attempt), the file is deleted from the server (I see no evidence in the log that the client is requesting the deletion).
Then, the following sequence is repeated in syslog (this is after I enabled verbose debugging):
Code:
Nov 7 08:57:11 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] New connection from XXX.XXX.XXX.XXX
Nov 7 08:57:11 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [DEBUG] Command [auth] [TLS]
Nov 7 08:57:11 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] SSL/TLS: Enabled TLSv1/SSLv3 with DHE-RSA-AES256-SHA, 256 secret bits cipher
Nov 7 08:57:11 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [DEBUG] Command [user] [ftpuser]
Nov 7 08:57:11 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [DEBUG] Command [pass] [<*>]
Nov 7 08:57:11 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] ftpuser is now logged in
Nov 7 08:57:11 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [DEBUG] Command [pbsz] [0]
Nov 7 08:57:11 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [DEBUG] Command [prot] [P]
Nov 7 08:57:11 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [DEBUG] Command [opts] [UTF8 ON]
Nov 7 08:57:11 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [DEBUG] Command [cwd] [/web]
Nov 7 08:57:12 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [DEBUG] Command [type] [I]
Nov 7 08:57:12 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [DEBUG] Command [pasv] []
Nov 7 08:57:12 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [DEBUG] Command [rest] [606683136]
Nov 7 08:57:12 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [NOTICE] Restarting at 606683136
Nov 7 08:57:12 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [DEBUG] Command [stor] [large-file.zip]
Nov 7 08:57:42 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [INFO] Logout.
Nov 7 08:57:48 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] New connection from XXX.XXX.XXX.XXX
Nov 7 08:57:49 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [DEBUG] Command [auth] [TLS]
Nov 7 08:57:49 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] SSL/TLS: Enabled TLSv1/SSLv3 with DHE-RSA-AES256-SHA, 256 secret bits cipher
Nov 7 08:57:49 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [DEBUG] Command [user] [ftpuser]
Nov 7 08:57:50 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [DEBUG] Command [pass] [<*>]
Nov 7 08:57:50 example.com pure-ftpd: (?@XXX.XXX.XXX.XXX) [INFO] ftpuser is now logged in
Nov 7 08:57:50 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [DEBUG] Command [pbsz] [0]
Nov 7 08:57:50 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [DEBUG] Command [prot] [P]
Nov 7 08:57:50 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [DEBUG] Command [opts] [UTF8 ON]
Nov 7 08:57:50 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [DEBUG] Command [cwd] [/web]
Nov 7 08:57:50 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [DEBUG] Command [type] [I]
Nov 7 08:57:50 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [DEBUG] Command [port] [10,0,1,112,213,58]
Nov 7 08:57:50 example.com pure-ftpd: (ftpuser@XXX.XXX.XXX.XXX) [INFO] Logout.
One can see that the FTP client appears to switch from Passive Mode to Active Mode automatically, and, of course, Active Mode will not work (due to firewalls on both ends).
PureFTPd is configured such that
/etc/pure-ftpd/conf/PassivePortRange contains "40110 40210".
Also, the Firewall is configured to allow TCP connections to the passive port range, as defined above.
Here is the firewall configuration (via ISPConfig Status):
Code:
iptables -S (ipv4)
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-N INT_IN
-N INT_OUT
-N PAROLE
-N PUB_IN
-N PUB_OUT
-N fail2ban-apache
-N fail2ban-apache-badbots
-N fail2ban-apache-noscript
-N fail2ban-apache-overflows
-N fail2ban-dovecot
-N fail2ban-postfix
-N fail2ban-pure-ftpd-mysql
-N fail2ban-sasl
-N fail2ban-ssh
-N fail2ban-ssh-ddos
-A INPUT -p tcp -m multiport --dports 21,20,990,989 -j fail2ban-pure-ftpd-mysql
-A INPUT -p tcp -m multiport --dports 80,443 -j fail2ban-apache-badbots
-A INPUT -p tcp -m multiport --dports 80,443 -j fail2ban-apache
-A INPUT -p tcp -m multiport --dports 25,465,143,220,993,110,995 -j fail2ban-sasl
-A INPUT -p tcp -m multiport --dports 25,465 -j fail2ban-postfix
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh
-A INPUT -p tcp -m multiport --dports 80,443 -j fail2ban-apache-overflows
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh-ddos
-A INPUT -p tcp -m multiport --dports 25,465,143,220,993,110,995 -j fail2ban-dovecot
-A INPUT -p tcp -m multiport --dports 80,443 -j fail2ban-apache-noscript
-A INPUT -d 127.0.0.0/8 ! -i lo -p tcp -j DROP
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -s 224.0.0.0/4 -j DROP
-A INPUT -i eth+ -j PUB_IN
-A INPUT -i ppp+ -j PUB_IN
-A INPUT -i slip+ -j PUB_IN
-A INPUT -i venet+ -j PUB_IN
-A INPUT -i bond+ -j PUB_IN
-A INPUT -j DROP
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -j DROP
-A OUTPUT -o eth+ -j PUB_OUT
-A OUTPUT -o ppp+ -j PUB_OUT
-A OUTPUT -o slip+ -j PUB_OUT
-A OUTPUT -o venet+ -j PUB_OUT
-A OUTPUT -o bond+ -j PUB_OUT
-A INT_IN -p icmp -j ACCEPT
-A INT_IN -j DROP
-A INT_OUT -p icmp -j ACCEPT
-A INT_OUT -j ACCEPT
-A PAROLE -j ACCEPT
-A PUB_IN -p icmp -m icmp --icmp-type 3 -j ACCEPT
-A PUB_IN -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A PUB_IN -p icmp -m icmp --icmp-type 11 -j ACCEPT
-A PUB_IN -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A PUB_IN -p tcp -m tcp --dport 20 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 21 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 22 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 25 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 53 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 80 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 110 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 143 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 443 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 465 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 587 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 993 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 995 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 3306 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 8080 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 8081 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 8443 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 10000 -j PAROLE
-A PUB_IN -p tcp -m tcp --dport 40110:40210 -j PAROLE
-A PUB_IN -p udp -m udp --dport 53 -j ACCEPT
-A PUB_IN -p udp -m udp --dport 3306 -j ACCEPT
-A PUB_IN -p icmp -j DROP
-A PUB_IN -j DROP
-A PUB_OUT -j ACCEPT
-A fail2ban-apache -j RETURN
-A fail2ban-apache-badbots -j RETURN
-A fail2ban-apache-noscript -j RETURN
-A fail2ban-apache-overflows -j RETURN
-A fail2ban-dovecot -j RETURN
-A fail2ban-postfix -j RETURN
-A fail2ban-pure-ftpd-mysql -j RETURN
-A fail2ban-sasl -j RETURN
-A fail2ban-ssh -j RETURN
-A fail2ban-ssh-ddos -j RETURN
I'm able to upload small binary files (e.g., 2MB in size) without issue, so the problem appears to be related to a resource-limit of some kind, whether that is a timeout, a file size limit, etc.
The FTP user was created via the ISPConfig interface and all of his resource limits therein are set to -1 (unlimited). Likewise, the ISPConfig client to which the FTP user is assigned is not constrained by resource limits in ISPConfig.
Any help with this is greatly appreciated. Thanks!
Recent comments
12 hours 30 min ago
15 hours 25 min ago
16 hours 39 min ago
18 hours 3 min ago
19 hours 41 min ago
21 hours 9 min ago
22 hours 23 min ago
1 day 14 hours ago
1 day 15 hours ago
1 day 18 hours ago