FTP-Verbindung Backup Debian Squeeze

schweich1

New Member
Hallo,

ich nutze ein Backup-Skript, das die erstelle Sicherung über FTP auf einen anderen Server überträgt. Mit Debian Lenny gab es überhaupt keine Probleme, seitdem ich jedoch Debian Squeeze nutze, funktioniert die FTP-Verbindung nicht mehr.

Der Login wird nicht korrekt aufgebaut und scheitert, sodass auch kein Transfer der Dateien stattfindet.

Folgendes Skript nutze ich:

PHP:
#!/bin/bash

# Titel: Backup-Script 
# Description: Sicherung von /srv, /etc, /var/log und MYSQL-Datenbanken anlegen und automatisch auf einen festgelegten FTP-Server hochladen. 
# Copyright: Christian Beier (http://www.beier-christian.eu/) 
# Version 1.1


# Allgemeine Angaben
MYSQL_USER=
MYSQL_PASS=
FTP_SERVER=
FTP_USER=
FTP_PASS=

# Festlegung des Datums - Format: 20050710
DATE=`date +"%d.%m.%Y"`

# ENDE DER EINSTELLUNGEN

# Backup-Verzeichnis anlegen 
mkdir /tmp/backup
mkdir /tmp/backup/mysql

# Verzeichnisse die ins Backup integriert werden sollen
cp -r /srv /tmp/backup
cp -r /etc /tmp/backup
cp -r /var/log /tmp/backup
cp -r /var/www /tmp/backup

cd /tmp/backup/mysql

# Sicherung der Datenbanken
mysqldump -AaCceQ -u$MYSQL_USER -p$MYSQL_PASS -r mysql.dbs

cd ../

# Alle Dateien mit tar.bz2 komprimieren
tar cjfp files-$DATE.tar.bz2 srv
tar cjfp etc-$DATE.tar.bz2 etc
tar cjfp logs-$DATE.tar.bz2 log
tar cjfp www-$DATE.tar.bz2 www
tar cjfp mysql-$DATE.tar.bz2 mysql

# Alle Dateien in 1 Datei packen
tar cjfp backup-$DATE.tar.bz2 files-$DATE.tar.bz2 etc-$DATE.tar.bz2 logs-$DATE.tar.bz2 www-$DATE.tar.bz2 mysql-$DATE.tar.bz2

# Backup verschlüsseln
gpg --passphrase passwort -c backup-$DATE.tar.bz2


#Alle komprimierten Dateien per FTP auf den Backup-Server laden

ftp -u ftp://$FTP_USER:$FTP_PASS@$FTP_SERVER $DATE

#Anschließend alle auf den Server angelegten Dateien wieder löschen

rm -r -f /backup


Ist der FTP-Befehl bei Debian Squeeze vielleicht anders?
Oder weiß jemand, woran es liegen könnte?

Vielen Dank schonmal


Gruß
 
Ich sehe folgendes Verbesserungspotential:

1. Deine Kopiererei verwirft sämtliche Permissions und Timestamps, aus SymLinks werden Files. Ein solches Backup ist meines erachtens im Ernstfall fast wertlos. Wenn man schon kopiert, dann unter Erhalt sämtlicher Metadaten und Special-Files.

2. Wozu kopierst Du die Daten in ein Backup-Verzeichnis zusammen? Kann keinen Sinn darin erkennen.

3. Wozu erstellst Du einzelne TAR-Archive und packst diese dann nochmals in ein großes zusammen? Entweder einzelne TAR-Archive oder ein großes. Jedenfalls machts keinen Sinn etwas 2x durch bzip2 zu jagen - also zumindest einmal dann auf die Kompression verzichten.

4. Jeder User am Server kann Dein Backup (und somit auch wertvolle Dinge wie z.B. die /etc/shadow, ...) lesen.

Vorschlag zur Behebung von 1, 2 und 3, 4:
Code:
mkdir /backup
chmod 700 /backup
tar -cpjf /backup/backup-$DATE.tar.bz2 /srv /etc /var/log /var/www /tmp/backup/mysql

5. Du löscht am Schluss ein völlig anderes Verzeichnis (/backup) als am Beginn angelegt (/tmp/backup). Also gleich /backup anlegen anstatt das world-readable /tmp Verzeichnis hierzu zu verwenden.

6. zu Deinem eigentlichen FTP Problem:
Ich wüsste nicht, wie dein FTP Kommando so wie es da steht jemals funktioniert haben sollte.

Installiere Dir das Paket ncftp und verwende folgenden Einzeiler:
Code:
 ncftpput -u $FTP_USER -p :$FTP_PASS $FTP_SERVER ./Ziel-Verzeichnis /backup/backup-$DATE.tar.bz2

Ganz generell: anstatt sich sowas selbst zu stricken, kann man auch auf fertige Lösungen wie duply oder duplicity zurückgreifen. Die kümmern sich auch um inkrementelle Backup und die Verschlüsselung. Da Dein symmetrisches Kennwort im Script wohl hartcoded hinterlegt ist, könnte ein Angreifer dieses einfach lesen. Asymmetrische Verschlüsselung wäre hier das Mittel der Wahl.
 
Last edited by a moderator:
Back
Top