vsftp externe Verbindung SSL

Probleme mit Samba, NFS, FTP und Co.
Antworten
jcw
Beiträge: 99
Registriert: 10.01.2016 17:11:46

vsftp externe Verbindung SSL

Beitrag von jcw » 11.06.2016 16:34:51

Hallo!
Nun habe ich leider schon wieder ein Thema zu FTPS. Es geht um Folgendes:
Ich habe vsftp als Server laufen. Über mein Heimnetzwek kann ich auf diesen per ftp-client (ftp und ftp-ssl) zugreifen. Ob verschlüsselt oder unverschlüsselt macht keinen Unterschied. Beides funktioniert problemlos.

Nun zum Problem: Möchte ich von einem externen Netz auf den vsftp-Server zugreifen, ist dies nicht mehr über eine verschlüsselte Verbindung möglich. Ich benutze als dynamische Adresse den Service von 'no-ip.com'. Ändere ich die vsftpd.config, so dass unverschlüsselte Verbindungen möglich sind (ssl_enable=NO), funktioniert der Zugriff 'von Außen' wieder.

Anbei einige wichtige Dateien:

Code: Alles auswählen

iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
fail2ban-vsftpd  tcp  --  anywhere             anywhere             multiport dports ftp,ftp-data,ftps,ftps-data
fail2ban-ssh  tcp  --  anywhere             anywhere             multiport dports ssh

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-vsftpd (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             anywhere  
/etc/vsftpd.conf für den Fall, unverschlüsselter Zugriff, der intern und extern funktioniert:
http://nopaste.debianforum.de/39357

Auszug aus der vsftpd.log:
Sat Jun 11 14:58:54 2016 [pid 622] CONNECT: Client "::ffff:93.200.243.238"
Sat Jun 11 14:58:54 2016 [pid 622] FTP response: Client "::ffff:93.200.243.238", "220 Willkommen am ftp-Server von jcw."
Sat Jun 11 14:58:57 2016 [pid 622] FTP command: Client "::ffff:93.200.243.238", "USER ftpguest"
Sat Jun 11 14:58:57 2016 [pid 622] [ftpguest] FTP response: Client "::ffff:93.200.243.238", "331 Please specify the password."
Sat Jun 11 14:59:03 2016 [pid 622] [ftpguest] FTP command: Client "::ffff:93.200.243.238", "PASS <password>"
Sat Jun 11 14:59:04 2016 [pid 621] [ftpguest] OK LOGIN: Client "::ffff:93.200.243.238"
Sat Jun 11 14:59:04 2016 [pid 627] [ftpguest] FTP response: Client "::ffff:93.200.243.238", "230 Login successful."
Sat Jun 11 14:59:05 2016 [pid 627] [ftpguest] FTP command: Client "::ffff:93.200.243.238", "PORT 93,200,243,238,205,47"
Sat Jun 11 14:59:05 2016 [pid 627] [ftpguest] FTP response: Client "::ffff:93.200.243.238", "200 PORT command successful. Consider using PASV."
Sat Jun 11 14:59:05 2016 [pid 627] [ftpguest] FTP command: Client "::ffff:93.200.243.238", "LIST"
Sat Jun 11 14:59:06 2016 [pid 627] [ftpguest] FTP response: Client "::ffff:93.200.243.238", "150 Here comes the directory listing."
Sat Jun 11 14:59:06 2016 [pid 627] [ftpguest] FTP response: Client "::ffff:93.200.243.238", "226 Directory send OK."
=========================
Nun zur verschlüsselten Varinate, bei der ein interner Zugriff funktioniert, ein externer Zugriff aber eine Fehlermeldung gibt.
/etc/vsftpd.conf für den Fall, verschlüsselter Zugriff intern OK und verschlüsselt extern funktioniert NICHT:
http://nopaste.debianforum.de/39358

Eigentlich habe ich nur den Schalter:

Code: Alles auswählen

ssl_enable=YES
gesetzt.

Wie gesagt, der Zugriff im internen Heimnetzwerk funktioniert, aber der externe Zugriff leider nicht. Ein Login ist möglich, aber schon ein 'directory listing' schlägt fehl. Ich benutze dafür das Programm ftp-sslAnbei der Ausgabe zum vsftpd.log:
Thu Jun 9 21:52:55 2016 [pid 725] CONNECT: Client "::ffff:62.227.185.154"
Thu Jun 9 21:52:55 2016 [pid 725] FTP response: Client "::ffff:62.227.185.154", "220 Willkommen am ftp-Server von jcw."
Thu Jun 9 21:53:11 2016 [pid 725] FTP command: Client "::ffff:62.227.185.154", "AUTH SSL"
Thu Jun 9 21:53:11 2016 [pid 725] FTP response: Client "::ffff:62.227.185.154", "234 Proceed with negotiation."
Thu Jun 9 21:53:12 2016 [pid 725] DEBUG: Client "::ffff:62.227.185.154", "SSL version: TLSv1/SSLv3, SSL cipher: AES256-GCM-SHA384, not reused, no cert"
Thu Jun 9 21:53:12 2016 [pid 725] FTP command: Client "::ffff:62.227.185.154", "USER ftpguest"
Thu Jun 9 21:53:12 2016 [pid 725] [ftpguest] FTP response: Client "::ffff:62.227.185.154", "331 Please specify the password."
Thu Jun 9 21:53:24 2016 [pid 725] [ftpguest] FTP command: Client "::ffff:62.227.185.154", "PASS <password>"
Thu Jun 9 21:53:25 2016 [pid 723] [ftpguest] OK LOGIN: Client "::ffff:62.227.185.154"
Thu Jun 9 21:53:25 2016 [pid 731] [ftpguest] FTP response: Client "::ffff:62.227.185.154", "230 Login successful."
Thu Jun 9 21:53:25 2016 [pid 731] [ftpguest] FTP command: Client "::ffff:62.227.185.154", "SYST"
Thu Jun 9 21:53:25 2016 [pid 731] [ftpguest] FTP response: Client "::ffff:62.227.185.154", "215 UNIX Type: L8"
Thu Jun 9 21:53:44 2016 [pid 731] [ftpguest] FTP command: Client "::ffff:62.227.185.154", "PORT 192,168,2,131,206,234"
Thu Jun 9 21:53:44 2016 [pid 731] [ftpguest] FTP response: Client "::ffff:62.227.185.154", "500 Illegal PORT command."
Thu Jun 9 21:53:50 2016 [pid 731] [ftpguest] FTP command: Client "::ffff:62.227.185.154", "QUIT"
Thu Jun 9 21:53:50 2016 [pid 731] [ftpguest] FTP response: Client "::ffff:62.227.185.154", "221 Goodbye."
Ich zwar kein Experte, aber ich behaupte, dass eine Verbindung von außen aufgebaut werden kann, aber es dann Probleme gibt, die etwas mit dem ftp-Protokoll zu tun haben. Stimmt da was mit den Ports nicht? An meinem Router kann ich nur ein Portforwarding einrichten. Umgleleitete Ports-öffentlich: 21, umgeleitete Ports-private Client: 21. Ist das korrekt, dass beide den identischen Port besitzen?
Den passiven ftp-mode habe ich auch schon ausprobiert. Dann funktioniert es auch nicht.

Hier nochmal ein Auszug von netstat -a:
http://nopaste.debianforum.de/39360

Nochmal kurz zusammengefasst:
unverschlüsselt: INTERN funkt., EXTERN funkt.
verschlüsselt: INTERN funkt., EXTERN funkt. NICHT

Danke für die Hilfe!

Benutzeravatar
heisenberg
Beiträge: 3526
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: vsftp externe Verbindung SSL

Beitrag von heisenberg » 11.06.2016 16:44:51

PORT 192,168,2,131,206,234
Bei der unverschlüsselten Variante steht im Log eine Public-IP. Bei der verschlüsselten Variante, steht da eine 192.168er - Adresse.

Ich gehe mal davon aus, dass Du da grundsätzlich zwingend passiv-FTP benötigst, dass das aber nicht funktioniert, weil der Router durch das SSL nicht mitbekommt, was im FTP-Protokoll abläuft und die Pakete nicht zur bestehenden FTP-Verbindung zuordnen kann.

Ich würde sagen, ein Portforwarding des Bereiches der Ports für passive-FTP auf Deinem Router zum FTP-Server sollte Abhilfe schaffen.

gemäss Einstellung in der vsftp.conf wären das:

Code: Alles auswählen

#pasv_min_port=7000
#pasv_max_port=7100
Es ist die Frage, ob meine Annahme über Dein Setup auch wirklich zutrifft: Standard-DSL-Router mit FTP-Server als Linux-Büchse im LAN?
Jede Rohheit hat ihren Ursprung in einer Schwäche.

jcw
Beiträge: 99
Registriert: 10.01.2016 17:11:46

Re: vsftp externe Verbindung SSL

Beitrag von jcw » 11.06.2016 17:28:08

Hallo!
Schon mal besten Dank für die Antwort. Deine Aussage trifft zu: Einen Raspberry (192.168.2.3) per LAN an Router angeschlossen. Der Router ist ein Speedport W920V von der Telekom. Wie richte ich denn dort ein Portforwarding ein? Folgendes habe ich schon am Router eingerichtet:
Informationen über alle vergebenen Ports, sortiert nach Öffentlicher Port-Adresse:
Öffentlicher Port Private Client Port Bezeichnung Zugeordnete IP-Adresse
TCP: 21 21 FTP-Server 192.168.2.3
TCP: 22 22 SSH 192.168.2.3
Was muss ich noch zusätzlich einrichten?

Auch wundert es mich, dass es bei der unverschlüsselten Variante funktioniert, bei der verschlüsselten nicht. Müsste das Problem des Portforwarding bei beiden Varianten nicht identisch sein?

Vielen Dank.

Benutzeravatar
heisenberg
Beiträge: 3526
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: vsftp externe Verbindung SSL

Beitrag von heisenberg » 11.06.2016 18:14:42

jcw hat geschrieben:Wie richte ich denn dort ein Portforwarding ein?
Keine Ahnung. Habe keinen Speedport. Klick dich durch. Use google.
jcw hat geschrieben: Auch wundert es mich, dass es bei der unverschlüsselten Variante funktioniert, bei der verschlüsselten nicht. Müsste das Problem des Portforwarding bei beiden Varianten nicht identisch sein?
Vielen Dank.
heisenberg hat geschrieben:weil der Router durch das SSL nicht mitbekommt, was im FTP-Protokoll abläuft - weils eben verschlüsselt ist - und die Pakete nicht zur bestehenden FTP-Verbindung zuordnen kann.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

jcw
Beiträge: 99
Registriert: 10.01.2016 17:11:46

Re: vsftp externe Verbindung SSL

Beitrag von jcw » 12.06.2016 20:29:05

Hallo...
...und vielen Dank für die schnelle Rückmeldung.

Leider habe ich das ganze Thema noch nicht 100%ig durchdrungen. Verstanden habe ich, dass durch die Verschlüsselung die Zuordnung der Pakete nicht mehr korrekt erfolgt. Für mich wäre wichtig, was muss ich nun tun, damit die gewünschte FTPS-Verbindung mittels externer Verbindung funktioniert.

Das Portforwarding am Router W920V kann ich nun einstellen. Soweit habe ich das FTP und SSH Portforwarding eingestellt. Außerdem habe ich noch die Ports 7000-7100 weitergeleitet. Siehe Auszug von Router:

Code: Alles auswählen

Informationen über alle vergebenen Ports, sortiert nach Öffentlicher Port-Adresse:
Öffentlicher Port 	Private Client Port 	Bezeichnung 	Zugeordnete IP-Adresse
TCP: 21 	21 	FTP-Server 	192.168.2.3
TCP: 22 	22 	SSH 	192.168.2.3
TCP: 7000-7100 	7000-7100 	port 	192.168.2.3
Stimmt das so? Welche Ports muss ich zusätzlich zu 21 und 22 weiterleiten und vor allem, wohin? Den Bereich 7000-7100 habe ich im Internet gelesen. Aber sind das die richtigen für das passive FTP? Und zu welchem Port muss der Router diese weiterleiten? Was muss ich in der vsftpd.conf noch editieren?

Danke für die Hinweise!

Benutzeravatar
heisenberg
Beiträge: 3526
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: vsftp externe Verbindung SSL

Beitrag von heisenberg » 13.06.2016 02:44:51

Stimmt das so?
Würde sagen das passt.
Welche Ports muss ich zusätzlich zu 21 und 22 weiterleiten und vor allem, wohin?
Sonst nix mehr.
Den Bereich 7000-7100 habe ich im Internet gelesen. Aber sind das die richtigen für das passive FTP?
Das sind die von Deinem vsftpd verwendeten Ports, die per Vorgabe eingestellt sind. Das könnte man konfigurieren, wenn man möchte. Hier jedoch nicht notwendig.
Und zu welchem Port muss der Router diese weiterleiten?
Der Router leitet die in der von Dir gezeigneten Einstellung automatisch an den gleichen Port der Ziel-IP(192.168.2.3).
Jede Rohheit hat ihren Ursprung in einer Schwäche.

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Re: vsftp externe Verbindung SSL

Beitrag von uname » 13.06.2016 10:23:38

Auch wenn ich das in jedem Post frage. Was ist der Grund warum du dir ftps (vsftp-Dienst mit TLS/SSL) anstatt sftp (Subsystem von SSH) antust? Bei ssh/sftp/scp hast du die Probleme nicht, da du reines SSH (Port 22) nutzt auch kannst du viele andere nette Dinge machen wie z.B. "rsync über ssh". Und wenn du willst kannst du natürlich auch beliebige Personen in /etc/ssh/sshd_config einschränken.

Benutzeravatar
heisenberg
Beiträge: 3526
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: vsftp externe Verbindung SSL

Beitrag von heisenberg » 13.06.2016 12:43:35

Natürlich. Wenn man Firewall+Sicher+Einfach haben will, dann ist SFTP wahrscheinlich besser. Ein Port und fertich ist der Lack.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

andreathome
Beiträge: 24
Registriert: 21.07.2015 10:50:55

Re: vsftp externe Verbindung SSL

Beitrag von andreathome » 13.06.2016 13:04:42

Ich habe ftp verlassen... und bin auf Webdav umgeschaltet. Das grösste Vorteil ist das man die Stellen die in der apache/webdav/SSL config stehe wie ein lokales Map zugreifen kann über HTTPS (also SSH über Port 443).
Fuer Debian 6 hab Ich das fast gemacht wie hier beschrieben:
http://bernaerts.dyndns.org/linux/75-de ... bdav-share
Mit ein bisschen suchen funktioniert das auch unter Debian 8.1 (> 1 Jahr schon, ohne Problemen).

Im router: nur Port 443 öffnen under forward einstellen zum richtigen Rechner.

Unter Win7/10 muss mann ein Root Certificat verwenden um "net use" erfolgreich zu verwenden.
Wie Ungefähr:
Root Certificate installation
To get it working, just add the Root Certificate of the server into Windows, as follows:
1) You should first get the server certificate on your computer. I got the certificate directly from the server administrator in CER format. It is also possible to download it with for example Firefox. I guess instructions could be found on the net.
2) Import it in Windows: start Certmanager: in “cmd” type certmgr.msc
3) Select on the left “Trusted Root Certification Authorities”
4) In the menu “Actions” -> “All Tasks” select “Import” and then “Next”
5) Browse for the location of certificate file you saved earlier on your computer and click “Open”.
6) You will get a few more warning messages. Just say to go through with it until the certificate is accepted."

jcw
Beiträge: 99
Registriert: 10.01.2016 17:11:46

vsftp externe Verbindung SSL [gelöst]

Beitrag von jcw » 14.06.2016 21:50:37

Hallo!
Ich habe alles so konfiguriert, wie oben beschreiben. Jetzt funktioniert es! Vielen Dank für die Hinweise. Anbei nochmal meine vsftpd.conf Datei, für den Fall, dass jemand auf ähnliche Probleme stößt.
http://nopaste.debianforum.de/39368

Weiter hätte ich noch folgende Fragen: Unter Linux benutze ich --wie oben beschrieben-- den ftps-client ftp-ssl. Wie heißt das Gegenstück für Windows? Falls möglich, nur ein Programm was über Kommandozeile zu bedienen ist. Und weiter: Falls ich mit sftp anstatt mit dem vsftp-Dienst mit TLS/SSL arbeite, wie von 'uname' weiter oben vorgeschlagen, wie kann ich in der /etc/ssh/sshd_config den Zugriff auf bestimmt Personen einschränken? Ich habe in der sshd_config nicht gesehen, dass ich eine User-Liste für berechtigte Accounts anlegen kann. Kann mir da jemand einen Hinweis geben? Danke!

Benutzeravatar
heisenberg
Beiträge: 3526
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: vsftp externe Verbindung SSL

Beitrag von heisenberg » 14.06.2016 22:38:55

Falls ich mit sftp anstatt mit dem vsftp-Dienst mit TLS/SSL arbeite, wie von 'uname' weiter oben vorgeschlagen, wie kann ich in der /etc/ssh/sshd_config den Zugriff auf bestimmt Personen einschränken?
1. Treffer bei Google:

http://www.cyberciti.biz/tips/openssh-d ... roups.html

Bitte prüfe auch mal Dein Brain-Google-Plugin. Ich glaube, da gibt's ein paar Softwareupdates. Im
Ich habe in der sshd_config nicht gesehen, dass ich eine User-Liste für berechtigte Accounts anlegen kann. Kann mir da jemand einen Hinweis geben?
In der Config selbst stehen nicht alle Optionen. Schaue am besten mal in die man-page. Da springen mir die Optionen sofort ins Auge:

Code: Alles auswählen

man sshd_config
Jede Rohheit hat ihren Ursprung in einer Schwäche.

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Re: vsftp externe Verbindung SSL

Beitrag von uname » 17.06.2016 10:35:02

jcw hat geschrieben:wie kann ich in der /etc/ssh/sshd_config den Zugriff auf bestimmt Personen einschränken?
Die Benutzer sind ganz normale Benutzer im Linux-System (also /etc/passwd, ...).

Laut diesem Post von mir kannst du am besten die betroffenen Benutzer einer entsprechenden Gruppe zuweisen.
Die Konfiguration geht davon aus, dass jeder Benutzer sein /home/user/home/user hat.
Sichtbar ist für den Benutzer jedoch nur die chroot-Umgebung /home/user

viewtopic.php?f=8&t=154910#p1037685

Poste was du genau willst und wir könnten die Konfiguration entsprechend anpassen.
Als Windows-Client möchte ich dir mal "Filezilla" empfehlen. Wichtig ist dort nur, dass der Anwender auch den SSH-Port (22) angibt.

Antworten