wiki:dienste:vsftpd

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
wiki:dienste:vsftpd [2011/02/23 13:25] – [SSL-Schlüssel erstellen] wikiadminwiki:dienste:vsftpd [2015/01/13 11:19] (aktuell) – [Bug bei bei chroot] wikiadmin
Zeile 1: Zeile 1:
 +~~BARCODE~class=barcode_right~size=S~~ 
 +
 +====== Verschlüsseltes FTP ======
 +
 +
 +Da FTP ein unsicheres Protokoll ist, um Daten zu übertragen, gibt es hier ein HowTo, um den Login und den Datentransfer zu verschlüsseln
 +
 + 
 ===== Installation ===== ===== Installation =====
  
Zeile 29: Zeile 37:
 <file>sudo chmod go+r /var/log/vsftpd.log</file> <file>sudo chmod go+r /var/log/vsftpd.log</file>
  
-===== Konfigurationsdateien =====+===== Konfigurationsdateien ===== 
    
 /etc/vsftpd.conf /etc/vsftpd.conf
  
-<filebash vsftpd.conf>+<file bash vsftpd.conf>
 # daemon started from an initscript. # daemon started from an initscript.
 listen=YES listen=YES
Zeile 73: Zeile 81:
 data_connection_timeout=120 data_connection_timeout=120
 # You may fully customise the login banner string: # You may fully customise the login banner string:
-ftpd_banner=Welcome to da-checka's FTP.+ftpd_banner="Welcome to da-checka's FTP.
 chroot_local_user=YES chroot_local_user=YES
 # This option should be the name of a directory which is empty.  Also, the # This option should be the name of a directory which is empty.  Also, the
Zeile 110: Zeile 118:
 </file> </file>
  
-===== Skript zur erstellung eines FTP-Benutzers =====+====== Sicherheitseinstellung ======
  
-In /usr/local/bin ein Skript mit folgendem Inhalt erstellen +Da Filezilla ab Version 3.5.3 die Cipher-Suite verändert hatmuss man die Konfiguration von vsftpd anpassen. Hierzu einfach folgende Zeile an die Konfigurtion anhängen
-<file bash ftpuser_create> +
-# Kleines Programm zum erstellen eines ftp-Nutzers mit mount des Verzeichnisses fuer_alle +
-  +
-# Prüfenob das Script als root aufgerufen wurde +
-if [ `id -u` -ne "0"+
-then +
-        echo "You must be root" +
-        exit 1 +
-fi +
- +
-if [ $# = "1"+
-then +
-        user=$1 +
-        # PrÃüft, ob der eingegeben User schon existiert +
-        if ! id $user>/dev/null 2>&+
-        then +
-                #User wird angelegt +
-                if sudo useradd -d /home/$user -m -s /bin/false $user +
-                then +
-                        echo "Nutzer $user angelegt" +
-                        # Passwort generieren +
-                        password=`cat /dev/urandom | tr -cd 'a-z0-9' | head -c8` +
-                        # Abfrage, ob generiertes Passwort verwendet werden soll +
-                        echo -e "Wollen Sie das Passwort $password verwende? [J] \c" +
-                        read fragepasswd +
-                        case $fragepasswd in +
-                                j|J|""+
-                                printf "%s\n%s" $password $password > $passwordfile +
-                                sudo passwd $user < $passwordfile > /dev/null 2>&+
-                                sudo rm $passwordfile +
-                                ;; +
-                                *) +
-                                sudo passwd $user +
-                        esac +
- +
-                        # Abfrage, ob Passwort gespeichert werden soll +
-                        echo -e "Wollen Sie das Passwort speichern? [J] \c" +
-                        read fragespeicher +
-                        case $fragespeicher in +
-                                j|J|""+
-                                printf "%s\t%s\n" $user $password >> $speicherpfad +
-                                ;; +
-                                *) +
-                        esac+
  
-                        # Verzeichnis wird ür den Mountpoint angelegt +<file bash vsftpd.conf
-                        sudo mkdir /home/$user/fuer_alle +ssl_ciphers=HIGH
-                        # Anlegen des oeffentlVerzeichnisses fuer Apache +
-                        sudo mkdir /home/$user/public_html +
-                        sudo chown $user.$user /home/$user/public_html +
-                        # Eintrag in die fstab wird geschrieben, +
-                        # damit automatisch gemountet wird +
-                        echo -e "/home/fuer_alle\t/home/$user/fuer_alle\text3\tbind\t0\t0" >> /etc/fstab +
-                        # Mountpoint einhängen +
-                        /bin/mount -a +
-                fi +
-        else +
-                echo -e "Nutzer gibt es schon" +
-        fi +
-else +
-        echo -e "Falsche Parameter" +
-fi+
 </file> </file>
  
-===== Script zum löschen eines FTP-Benutzers ===== +====== Skripte für FTP ======
-in /usr/local/bin ein Skript mit folgendem Inhalt erstellen +
  
-<file bash ftpuser_del> +Das Leben ist zu kurz zum tippen, deshalb hier ein paar Scripte, um mir ein paar Arbeiten zu erleichtern
-#!/bin/bash+
  
-user=$1+  * Skript zur erstellung eines FTP-Benutzers findet man [[wiki:skripte:ftpuser_create|hier]]. 
 +  * Script zum löschen eines FTP-Benutzers findet man [[wiki:skripte:ftpuser_del|hier]]. 
 +  * ftpwho für vsftpd findet man [[wiki:skripte:ftpwho|hier]].
  
-#Pruefen, ob das Progamm als root gestartet wurde +====== Bug bei bei chroot ======
-if [ ! `id -u` "0"+
-then +
-        echo "You must be root" +
-        exit 1 +
-fi+
  
-#Pruefen, ob Benutzer existiert 
-if ! id -u $user>/dev/null 2>&1 
-then 
-        echo -e "$user existiert nicht\nProgramm beendet" 
-        exit 1 
-fi 
  
-#Mountpunkt umountendamit beim loeschen nicht fuer_alle geloescht wird +In der Version 2.3.5die bei ubuntu und Debian standardmäßig ausgeliefert wird, gibt es einen Bug [[http://bugs.debian.org/656900|#656900]].
-if ! umount /home/$user/fuer_alle>/dev/null 2>&+
-then +
-        echo -e "umount nicht erfolgreich\nProgramm beendet" +
-        exit 1 +
-fi+
  
-#Nutzer wird mit home-Verzeichnis geloescht +Dieser ist bekannt und wurde in der Version 3 behoben. Leider wird Version 3 nicht bei Debian und Ubuntu ausgeliefert.
-if ! userdel -r $user +
-then +
-        echo -e "userdel nicht erfolgreich\nProgramm beendet" +
-        exit 1 +
-fi+
  
-#Eintrag fuer den Nutzer aus der fstab loeschen +Zum fixen den Bugs eignet sich folgende Methoden
-cp /etc/fstab /etc/fstab.orig +
-if ! grep -v "/home/$user/fuer_alle" /etc/fstab > /etc/fstab.neu +
-then +
-        echo -e "schreiben der fstab.neu fehlgeschlagen\nProgramm beendet" +
-        exit 1 +
-fi+
  
-mv /etc/fstab.neu /etc/fstab+<file> 
 +echo "deb http://ftp.cyconet.org/debian wheezy-updates main non-free contrib" >> /etc/apt/sources.list.d/wheezy-updates.cyconet.list 
 +aptitude update 
 +aptitude install -t wheezy-updates debian-cyconet-archive-keyring vsftpd  
 +echo "allow_writeable_chroot=YES" >> /etc/vsftpd.conf 
 +/etc/init.d/vsftpd restart
 </file> </file>
  
-===== ftpwho für vsftpd =====+Und alles läuft wieder wie gewünscht
  
-ftpwho-Skript nach /usr/local/bin schreiben+Ausführliche Anleitung findet man auf der Seite [[http://ftp.cyconet.org/instructions]].
  
-<file bash ftpwho> +======  Quellen ====== 
-#!/bin/bash +  [[http://wiki.ubuntuusers.de/vsftpd]
- +  [[http://ibohm.blogspot.de/2012/02/gnutls-error-12-tls-fatal-alert-has.html]] 
-#Funktion, um eine Linie zu zeichnen +  * [[http://www.redirect301.de/filezilla-gnutls-error-12.html]
-function linie(){ +  * [[http://blog.waja.info/2013/05/13/500-oops-vsftpd-refusing-to-run-with-writable-root-inside-chroot/]]
-echo "-----------------------------------------------------------------------------------------------------------------------" +
-+
- +
-#setzen des Seperators, damit das Array befüllt werden kann +
-IFS=$'\n' +
- +
-#Einlesen der Daten in ein Array "Daten" +
-Daten=( `ps -C vsftpd -o user,pid,stime,cmd | grep "vsftpd:" | egrep -v 'root|nobody' | tr -s ' ' ' '` ) +
- +
-# Zeichnen der ersten Tabellenspalte +
-echo -e "\nftpwho for vsftpd\n" +
-linie +
-printf "| %-15s| %-5s | %-17s| %-10s| %-60s|\n" User Start IP Up/Down File +
-linie +
-#echo "Ausgabe des Arrays" +
-for (( i=0 ; $i<${#Daten[*]} ; i=i+1)) +
-do +
- +
-        IFS=$' ' +
-        #Befüllen des Zweiten Arrays, das für jede Zeile zuständig ist +
-        Zeile=( ${Daten[$i]} )  +
- +
- +
-#       Testschleife, um das Array Zeile[] auszugeben +
-#       for (( zaehler=0 ; $zaehler<${#Zeile[*]} ; zaehler=zaehler+1 )) +
-#       do +
-#               echo Zeile $zaehler: ${Zeile[$zaehler]} +
-#       done +
- +
- +
-        #Wenn nicht der Username sondern die UID ausgegeben wird, wird dies behoben +
-        case ${Zeile[0]:0:1} in +
-                0|1|2|3|4|5|6|7|8|9) +
-                        user=`grep :${Zeile[0]}: /etc/passwd | cut -d":" -f1` +
-                ;; +
-                *+
-                        user=${Zeile[0]} +
-        esac +
- +
-        #Zeit und IP aus dem Array in Variablen schreiben +
-        zeit=${Zeile[2]} +
-        ip=${Zeile[4]%%/*:} +
-        # Umwandeln der Worte STOR in "Upload", RETR in "Download" und IDLE in "-+
-        case ${Zeile[5]} in +
-                STOR) +
-                        updown="Upload" +
-                ;; +
-                RETR) +
-                        updown="Download" +
-                ;; +
-                IDLE) +
-                        updown="-" +
-                ;; +
-                *+
-        esac +
- +
-        what='' +
-        for (( z=6 ; $z<${#Zeile[*]} ; z=z+1)) +
-        do +
-#               echo $z +
-                what=$what\ ${Zeile[$z]} +
-#               echo $what +
-        done +
-        # Setzen des Seperierungszeichens, damit die Ausgabe richtig formatiert wird +
-        IFS=$'' +
-        # Ausgabe der jeweiligen ArrayZeile +
-        printf "| %-15s| %-5s | %-17s| %-10s| %-60s|\n" $user $zeit $ip $updown $what; +
- +
-done +
- +
-if [ ! $i = "0" ] +
-then +
-        linie +
-fi +
- +
-echo +
-</file>+
  • wiki/dienste/vsftpd.1298463911.txt.gz
  • Zuletzt geändert: 2011/02/23 13:25
  • von wikiadmin