.titleBar { margin-bottom: 5px!important; }

VSFTP Erweiterung: ftps (ftp mit SSL)

Dieses Thema im Forum "Freetz" wurde erstellt von matze1985, 19 Nov. 2008.

  1. matze1985

    matze1985 Aktives Mitglied

    Registriert seit:
    17 Feb. 2007
    Beiträge:
    1,537
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    #1 matze1985, 19 Nov. 2008
    Zuletzt bearbeitet: 22 Nov. 2008
    Hey Leute,

    ich habe mich mal etwas mit dem Vsftpd-Server beschäftigt und bin dabei auch mal die Konfigseite durchgegangen. Dabei ist mir aufgefallen, dass der Vsftpd auch ftps (ftp mit SSL) unterstützt, wonach ich eigentlich schon immer mal die Augen offen gehalten hatte für meine Box.

    Also habe ich mich mal dran gemacht und den Vsftp mit SSL-Support gebaut.

    Dies habe ich auch geschaft :)

    Anbei findet ihr den Patch, der auf den aktuellen trunk angewendet werden kann.
    Code:
    patch -p0 < vsftpd.patch
    Er beinhaltet die notwendigen Patches für den Vsftpd um ihn mit ssl-support zu kompilieren und ein paar Erweiterungen der GUI.
    Das Zertifikat für den Server ist auch per WebGui hochladbar.
    (siehe Screenshots)

    Würde mich freuen, wenn es mal ein paar ausprobieren. (Klar ist natürlich, dass ihr auch nen FTP-Cleint bracht, der ftps unterstützt ;) )

    ###########################
    @An die Leute, die sich mit Freetz auskennen:
    Ich konnte das ganze leider nicht optional über das menuconfig machen, da der SSL-Support nicht per make-parameter einstellbar war, sondern ich in der builddefs.c eine Zeile Code ändern musste, dies lasse ich jetzt über einen Patch machen. Gibt es eine Möglichkeit, dass man sh-scripte, ähnlich derer unter freetz\patches, auch für pakete nutzt um solche patches wählbar zu machen?
    ###########################


    Viel Spaß.

    update1: Hinweiß von cuma zum & in HTML befolgt :)
    update2: SSL-Support jetzt wahlweise per menuconfig (Danke an MaxMuster für die Idee)
    update3: Verstecke SSL-Optionen im WebIf, wenn ssl nicht gewählt.
    update4: Option zum statischen kompilieren hinzugefügt. (+ein paar Verbesserungen)
    update5: Versionbump 2.0.6 -> 2.0.7
     

    Anhänge:

  2. cuma

    cuma Aktives Mitglied

    Registriert seit:
    16 Dez. 2006
    Beiträge:
    2,735
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Wow, tolle Arbeit. Bei Gelegenheit muss ich das mal mitbauen. Mir ist noch aufgefallen, dass das "Zertifikat&Key" nicht übersetzt wird. Dies könnte an dem "&" liegen das in html "&amp;" geschrieben wird
     
  3. MaxMuster

    MaxMuster IPPF-Promi

    Registriert seit:
    1 Feb. 2005
    Beiträge:
    6,919
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    #3 MaxMuster, 19 Nov. 2008
    Zuletzt bearbeitet: 19 Nov. 2008
    Schick!
    Wie ist denn die Größe im Vergleich zu der Lösung von sftp mit dropbear?

    Danke!

    Jörg

    EDIT Zu deine Frage:
    Wenn ich das richtig gelesen habe, wird nur eine Variable VSF_BUILD_SSL "fest gesetzt". Würde es nicht ausreichen, die entsprechende "UNDEFINE" Zeile komplett zu löschen (dann wäre es ja nicht gesetzt, oser?) und das Define über das configure oder make zu machen mit einem -DVSF_BUILD_SSL im Aufruf?
     
  4. henfri

    henfri Mitglied

    Registriert seit:
    21 Sep. 2005
    Beiträge:
    419
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    super Arbeit. Werde ich ausprobieren.
    Was hältst du davon den SSL-Zertifikatsteil zu verallgemeinern. Denn auch für WebDav werden Zertifikate benötigt.
    Ich würde deine Zertifikatsseite einfach allgemein halten (und nicht 'VSFTP...' nennen) und die Datei statt nach /mod/etc/vsftp (o.ä.) nach /mod/etc/cert/ (o.ä.) packen.

    Dann könnten WebDav und VSFTP die gleichen Zertifikate von zentraler Stelle nutzen.

    Siehe auch http://www.freetz.org/ticket/268

    Viele Grüße und Danke für die tolle Arbeit,
    Hendrik
     
  5. matze1985

    matze1985 Aktives Mitglied

    Registriert seit:
    17 Feb. 2007
    Beiträge:
    1,537
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    @henfri:
    ob man alle Zerfifikate an einer Stelle sammeln sollte weiß ich nicht, denn wenn man das macht, sollte man es auch komplett tun, z.B. auch bei stunnel.
    Dort verwendet ich z.B. auch das Zertifikat, weil es schon auf die Domain unterschrieben ist, aber es wird dort in 2 Datein gespeichert (Key+Crt in unterschiedlichen Datein).
    Außerdem gibt es aber die Möglichkeit, dass man die Zertifikate für unterschiedliche Server auch unterschiedlich ausstellen will.

    Ist das Webdav-Zertifikat denn ein Server-Zertifikat mit Key? Es das nicht ne Clientanwendung?

    @MaxMuster:
    Danke für den Hinweis, werde ich mir anschauen.
    Code:
    ls -lah `which vsftpd`
    -rwxr-xr-x    1 root     root       145.0k Nov 18 23:46 /usr/sbin/vsftpd
    
    @cuma:Auch dir Danke für den Hinweiß, werde es ausbessern :)
     
  6. Darkyputz

    Darkyputz Aktives Mitglied

    Registriert seit:
    27 Juli 2005
    Beiträge:
    2,320
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    Newton, New Jersey
    bor ihr seit ja helden...
    kann der dann ssl und auch ohne ssl?
    je nach haken?
    wie geil...
    das MUSS ich haben...werde das gleich heute bauen und berichten...vsftpd wird ja zum super ftp server...da iss ja der bftpd nen shit gegen...

    ne zentrale certifcate stelle wäre schon geil...vor allem würde das echt einges vereinfachen...denn ich brauche wirklich nicht 5 certifikate für 1 box...
    bzw man könnte ja auch das ssl certifcate der box gleich kidnappen...die bringt ja schon eins mit...und sicherer aus plain text iss das ALLE male auch wen ab und an jemand weint es hätte den avm bug und wäre nicht 2048 bitig ;-)
    die grösse zum dropbear sftpd iss nicht tragisch da den ohne webinterface eh keiner nimmt und man da auch nicht wieß ob er generell so verlässlig iss wie der erprobte vsftpd
    und mal ehrlich...die 16 mb keirgt ihr doch eh nicht voll die die box hat...ich komme ja schon mit meinem mist kaum auf 10 mb ;-9
     
  7. matze1985

    matze1985 Aktives Mitglied

    Registriert seit:
    17 Feb. 2007
    Beiträge:
    1,537
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    du kannst ihn ohne probleme so einstellen, dass du dich ssl und ohne ssl verbinden kannst. :) (halt keine hacken bei force machen :) )

    @cuma: habe dienen Tipp befolgt, hat er aber leider noch nicht übersetzt, noch ne Idee?
     
  8. holybabel

    holybabel Neuer User

    Registriert seit:
    30 Aug. 2008
    Beiträge:
    153
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Kann man das eigentlich auch direkt in Freetz als Option für den vsftp mit einbauen?
     
  9. Darkyputz

    Darkyputz Aktives Mitglied

    Registriert seit:
    27 Juli 2005
    Beiträge:
    2,320
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    Newton, New Jersey
    @holybabel
    das wäre der nächste schritt, wenn diese ssl ding dann fertig gebastelt ud gestestet iss...
    im mom iss es testing only mit handarbeit...
     
  10. McNetic

    McNetic Mitglied

    Registriert seit:
    7 Feb. 2007
    Beiträge:
    672
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Ort:
    Aachen
  11. matze1985

    matze1985 Aktives Mitglied

    Registriert seit:
    17 Feb. 2007
    Beiträge:
    1,537
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    @McNetic: Danke für das Ticket, der Weg den MaxMuster aufgeziegt hatte müsste gehen, weiß aber nicht, wann ich das schaffe, wahrscheinlich Fr oder Sa.

    @henfri: Das Vorhin sollte keine Ansage sein, habe mich nur etwas gewundert, da WebDav doch ein Client ist und das file ein Kette von vertrauten Zertifikaten ist, beim Vsftpd ist es das Server-Zertifikat, was ein großer Unterschied ist.
    Man könnte dennnoch bei jeweils in einer Datei machen (also Server_Datei und eine vertraute-Datei), beim vsftpd, kann man auch ohne Porbleme, dann die Option rsa_cert_file=/path/to/file in den eigenen Einstellungen hinzufügen, wenn man ein seperates Crt braucht.

    @holybabel: das ist geplannt und wird mit dem Ticket auch realisiert. :)
     
  12. McNetic

    McNetic Mitglied

    Registriert seit:
    7 Feb. 2007
    Beiträge:
    672
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Ort:
    Aachen
    Ja, so ähnlich wird es wohl funktionieren. Das Makefile muss aber auch entsprechend angepasst werden, und ich überlege im Moment noch, wie man die entsprechenden Teile im WebIF ausblenden kann, wenn kein SSL-Support vorhanden ist.
     
  13. matze1985

    matze1985 Aktives Mitglied

    Registriert seit:
    17 Feb. 2007
    Beiträge:
    1,537
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    das mit dem Makefile ist klar, damit die richtigen Libs geladen werden.

    Das man den SSL-Teil im Webif ausblenden sollte hatte ich mir auch schon überlegt, aber wie muss ich sagen weiß ich nicht. :)
     
  14. matze1985

    matze1985 Aktives Mitglied

    Registriert seit:
    17 Feb. 2007
    Beiträge:
    1,537
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    so hab oben mal nen update gemacht, der SSL-Support ist jetzt wahlweise per Menuconfig auswählbar, bitte mal testen.

    Bleibt die Frage, wir man die Teile des WebIF ausblenden kann?
    Gibt es (ähnlich der lang-Funktionalität) metabefehle für make, um bei gesetzten SSL Teile des Webif zu aktivieren, ins Image zu schreiben, und teile nicht?
     
  15. cuma

    cuma Aktives Mitglied

    Registriert seit:
    16 Dez. 2006
    Beiträge:
    2,735
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Man könnte vorerst in der cgi die Größe der vsftpd Binary überprüfen und daran erkennen ob SSL aktivert ist bis was besseres gefunden ist. Leider gibt vsftpd keine Hilfe beim Aufruf aus. Wie ist denn die Ausgabe hiervon:
    Code:
    $ strings /usr/sbin/vsftpd|grep "SSL support"
    SSL: ssl_enable is set but SSL support not compiled in
    
     
  16. Darkyputz

    Darkyputz Aktives Mitglied

    Registriert seit:
    27 Juli 2005
    Beiträge:
    2,320
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ort:
    Newton, New Jersey
    #16 Darkyputz, 19 Nov. 2008
    Zuletzt bearbeitet: 19 Nov. 2008
    meinst du jetzt in menuconfig oder im webif später?
    im webif könnte man das doch wie bei der firewall und er debug outputs der regeln lösen...oder nicht?
     
  17. MaxMuster

    MaxMuster IPPF-Promi

    Registriert seit:
    1 Feb. 2005
    Beiträge:
    6,919
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    Ich schlage mal vor, erstmal (wäre auch mein Vorschlag: mit strings) prüfen, ob "mit sftp", dann wenn ohne einfach den entsprechenden Bereich "ausblenden", wenn du ganz am Ende zwischen "EOF" und das "sec_end" sowas in der Art wie

    Code:
    echo 	"<script>"
    `! strings /usr/sbin/vsftpd|grep -q "SSL support"` &&  echo 'document.getElementsByTagName("fieldset")[<hier eintragen, die wievielte "section" das ist>].style.display = "none";' 
    echo 	"</script>"
    
    Nicht getestet, nur so aus dem Kopf, aber ich denke die Richtung wird klar ;-))


    Jörg
     
  18. matze1985

    matze1985 Aktives Mitglied

    Registriert seit:
    17 Feb. 2007
    Beiträge:
    1,537
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    aber jetzt lässt du das ganze doch ausblenden, wenn es mit SSL-Support gebaut wurde.
    Code:
    # strings /usr/sbin/vsftpd|grep "SSL support"
    /var/mod/root #
    
    Bei mir mit SSL-Support.
    Nach dem was bei cuma steht müsste es also heißen:
    Code:
    echo 	"<script>"
    `strings /usr/sbin/vsftpd|grep -q "SSL support"` &&  echo 'document.getElementsByTagName("fieldset")[<hier eintragen, die wievielte "section" das ist>].style.display = "none";' 
    echo 	"</script>"
    oder?
     
  19. McNetic

    McNetic Mitglied

    Registriert seit:
    7 Feb. 2007
    Beiträge:
    672
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Ort:
    Aachen
    Es ist sowieso schöner, wenn das direkt serverseitig ausgeblendet wird. Das habe ich auch schon so weit fertig, muss nur noch eben testen...
     
  20. MaxMuster

    MaxMuster IPPF-Promi

    Registriert seit:
    1 Feb. 2005
    Beiträge:
    6,919
    Zustimmungen:
    0
    Punkte für Erfolge:
    36
    @McNetic: Serverseitig Ausblenden ist natürlich noch besser...

    @matze1985:
    Ich habs ja nicht getestet, aber auf die Schnelle falschrum verstanden ;-)
    Da das grep mit SSL ja leer ist muss natürlich die Negation weg, vollkommen richtig!


    Jörg