wiki:dienste:vsftpd

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
wiki:dienste:vsftpd [2011/02/23 12:37] – angelegt 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 11: Zeile 19:
 Bei der Zertifikatserstellung werden folgende Fragen getstellt. Zur Identifikation ist es nötig, die richtigen Dinge einzutragen Bei der Zertifikatserstellung werden folgende Fragen getstellt. Zur Identifikation ist es nötig, die richtigen Dinge einzutragen
  
- <html>Country Name (2 letter code) [GB]:&nbsp;&nbsp;&nbsp;<span style="color:red">Land (z.B. DE)</span> +<file> 
- State or Province Name (full name) [Berkshire]:&nbsp;&nbsp;&nbsp;<span style="color:red">Bundesland (z.B. Bayern)</span> +Country Name (2 letter code) [GB]: Land (z.B. DE) 
- Locality Name (eg, city) [Newbury]:&nbsp;&nbsp;&nbsp;<span style="color:red">Stadt (z.B. München)</span> +State or Province Name (full name) [Berkshire]: Bundesland (z.B. Bayern) 
- Organization Name (eg, company) [My Company Ltd]:&nbsp;&nbsp;&nbsp;<span style="color:red">eigener Name</span> +Locality Name (eg, city) [Newbury]: Stadt (z.B. München) 
- Organizational Unit Name (eg, section) []:&nbsp;&nbsp;&nbsp;<span style="color:red">Bezeichnung des Dienstes (z.B. FTP-Server)</span> +Organization Name (eg, company) [My Company Ltd]: eigener Name 
- Common Name (eg, your name or your server's hostname) []:&nbsp;&nbsp;&nbsp;<span style="color:red">Name, unter dem der Rechner zu erreichen ist (z.B. www.microsoft.de)</span> +Organizational Unit Name (eg, section) []: Bezeichnung des Dienstes (z.B. FTP-Server) 
- Email Address []:&nbsp;&nbsp;&nbsp;<span style="color:red">eMail-Adresse</span> +Common Name (eg, your name or your server's hostname) []: Name, unter dem der Rechner zu erreichen ist (z.B. www.microsoft.de) 
-</html>+Email Address []: eMail-Adresse 
 +</file>
  
 Datei mit Accounts erstellen, die sich nicht am FTP anmelden können Datei mit Accounts erstellen, die sich nicht am FTP anmelden können
Zeile 28: 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 72: 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 109: 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.1298461077.txt.gz
  • Zuletzt geändert: 2011/02/23 12:37
  • von wikiadmin