Inhaltsverzeichnis

HowTo ISPConfig3 [ISPC3]

F4RR3LL | Sven sven.richter@nixhelp.de
Kaimane | Kai mail@kaimane.de
Stand: 01.05.2010

Dieses Installation wurde auf Debian LENNY getestet

Debian Dist-Upgrade

Der erste Schritt nach der fehlerfreien Installation von Debian Lenny sollte das Anpassen der 'sources.list' sein. Hiermit wird gewährleistet, dass die richtigen Pakete aus dem Repository geladen und installiert werden.

vi /etc/apt/sources.list

Passt die Zeilen wie folgt an:

deb ftp://ftp2.de.debian.org/debian/ lenny main contrib non-free
deb-src ftp://ftp2.de.debian.org/debian/ lenny main contrib non-free

deb http://ftp2.de.debian.org/debian-security lenny/updates main contrib non-free

deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free

deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

# deb http://www.backports.org/debian lenny-backports main
# deb http://ftp.de.debian.org/debian sid main

Auf die letzten beiden Zeilen kommen wir im späteren Teil des HowTos zurück.
Für den Moment müssen sie auskommiert bleiben.

Nun starten wir das Upgrade, das uns unser Betriebssystem auf den neusten Stand bringt …

apt-get update && apt-get dist-upgrade

Installation NTP

Nur sollten wir sicherstellen, dass die Uhrzeit des System immer genau ist.
Dies erledigt für uns der NTP-Dienst. Hierzu benötigen wir lediglich eine Zeile:

apt-get install ntp ntpdate

Anschließend die Default-Konfigurationsdatei '/etc/ntp.conf' umbennenen und eine Neue erstellen.

mv /etc/ntp.conf /etc/ntp.conf.orig
vi /etc/ntp.conf

Diese Datei wie folgt füllen:

# Datei für die Abweichungen
driftfile /var/lib/ntp/ntp.drift

# NTP-Server
server 0.europe.pool.ntp.org
server 1.europe.pool.ntp.org
server 2.europe.pool.ntp.org
server 3.europe.pool.ntp.org

# Zugriff durch NTP-Server gestatten
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery

# Zugriff vom localhost gestatten (ntpq -p)
restrict 127.0.0.1

# allen anderen Rechnern Zugriff verwehren
restrict default notrust nomodify nopeer

Hinweis: Man sollte zum Zeitabgleich immer NTP-Server wählen, die sich in der Nähe seines Serverstandortes befinden.
Schaut euch daher die NTP-Server-Liste an und wählt die für euch sinnvollsten Server aus.
Jetzt wird der NTPd noch einmal neu gestartet und unsere Konfiguration übernommen …

/etc/init.d/ntp restart

Installation Apache + PHP + MySQL

Um den Apache Webserver, PHP5 und MySQL5 zu installieren geben wir nun folgende Zeile ein:

aptitude install openbsd-inetd apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert apache2-suexec libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap php5-cli php5-cgi php5-mcrypt mcrypt libapache2-mod-fcgid  php-pear php-auth php5-imagick imagemagick libapache2-mod-suphp mysql-server mysql-client libmysqlclient15-dev

Während der Installation wirst du nach dem Passwort für den Root-Benutzer der MySQL-DB gefragt.
Setze dein gewünschtes Passwort und bestätige es anschließend noch einmal.
Hinweis: Achte darauf, dass das Passwort nur aus Buchstaben und Zahlen bestehen sollte um Komplikationen zu verhindern.

Nach der Installation müssen folgende Module aktiviert werden:

a2enmod suexec rewrite ssl actions include


Wird auf deinen MySQL-Server auch von außen zugegriffen, musst du die Bindung an die lokale IP lösen:

vi /etc/mysql/my.cnf

Und die Zeile auskommentieren …

#bind-address            = 127.0.0.1

Installation PHPMyAdmin

Zuerst müssen wir die '/etc/apt/sources.list' anpassen, damit wir Zugriff auf die neuste Version von PMA erhalten.

/etc/apt/sources.list

Hier kommentieren wir bis auf die letzte Zeile (sid-Repository) alle aus.
Darauf folgt ein …

apt-get install debian-backports-keyring
apt-get update && apt-cache gencaches

Nachdem das Repository eingelesen und der Apt-Cache neu geladen wurde, können wir nun ein …

apt-get install phpmyadmin

durchführen.

Auch hier werden wir wieder während der Installation unterbrochen.
Webserver, die automatisch konfiguriert werden sollen: <– apache2
Konfigurieren der Datenbank für phpmyadmin mit dbconfig-common: ← Ja
Passwort des administrativen Datenbank-Benutzers: ← MySQL-Root-Passwort
MySQL-Anwendungspasswort für phpmyadmin: ← ohne Eingabe OK

Nachdem die Installation von PHPMyAdmin abgeschlossen ist, versetzen wir die '/etc/apt/sources.list' in den vorheringen Zustand.

deb ftp://ftp2.de.debian.org/debian/ lenny main contrib non-free
deb-src ftp://ftp2.de.debian.org/debian/ lenny main contrib non-free

deb http://ftp2.de.debian.org/debian-security lenny/updates main contrib non-free

deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free

deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

# deb http://www.backports.org/debian lenny-backports main
# deb http://ftp.de.debian.org/debian sid main

Nun wird PHPMyAdmin vorkonfiguriert …

rm -rf /etc/phpmyadmin/htpasswd.setup

Folgenden Teil in der /etc/phpmyadmin/apache.conf auskommentieren:

vi /etc/phpmyadmin/apache.conf
# For Apache 2.2
# <IfModule mod_authn_file.c>
#   AuthType Basic
#   AuthName "phpMyAdmin Setup"
#   AuthUserFile /etc/phpmyadmin/htpasswd.setup
# </IfModule>
# Require valid-user

Jetzt noch ein kleiner Ruby-Fix aus dem Howtoforge-Forum.

vi /etc/mime.types

Folgenden Teil auskommentieren …

#application/x-ruby                             rb

Nach den ganzen Änderungen ist nun Zeit für ein Restart des Apache …

/etc/init.d/apache2 restart

Symlink für PHPMyAdmin setzen:

ln -s /usr/share/phpmyadmin /var/www/phpmyadmin

Installation FTP Server

Vorab sollte gesagt sein, dass sich die Installation des FTP-Servers bei dedizierten Servern anders verhält, als bei VServern die als Hostsystem z.B. Proxmox, Openvz, Virtuozzo, … verwenden.

Installation ohne Virtualisierungssystem:

aptitude install pure-ftpd-common pure-ftpd-mysql


Installation mit Virtualisierungssystem:

cd /tmp

apt-get source pure-ftpd
apt-get build-dep pure-ftpd

cd /pureftpd-1.0.21/debian

vi rules

Die Zeile (beginnend mit 'optflags') ändern:

optflags=–-with-everything –-with-largefile –-with-pam –-with-privsep –-with-tls –-without-capabilities
cd ..
dpkg-buildpackage -uc -b

Wenn das geklappt hat, können wir mit der Installation beginnen (Dateinamen ggf. der Versionsnummer anpassen) :

dpkg -i pure-ftpd-mysql_1.0.21-8_i386.deb


Ab hier geht's nun ganz normal weiter. Wir nehmen zwei kleinen Anpassungen vor:

vi /etc/default/pure-ftpd-common

Hier den Startmodus ändern und chroot auf true setzen:

STANDALONE_OR_INETD=standalone
VIRTUALCHROOT=true


Es bietet sich noch an die Passive Portrange des FTP direkt mit anzugeben.
Wenn man IPTABLES nutzt wird dies recht hilfreich sein.
In diesem Beispiel setzen wir die Portrange auf 4000 - 4020 (kann beliebig geändert werden).

echo 4000 4020 > /etc/pure-ftpd/conf/PassivePortRange


Nun öffne die Datei:

vi /etc/inetd.conf

hier folgende Zeile auskommentieren:

#ftp    stream  tcp     nowait  root    /usr/sbin/tcpd /usr/sbin/pure-ftpd-wrapper


Zu guter Letzt starten wir inetd sowie den FTP-Server neu …

/etc/init.d/openbsd-inetd restart
/etc/init.d/pure-ftpd-mysql start


Um Auth TLS zu aktivieren mache folgendes:

cd /etc/pure-ftpd/conf
echo 1 > TLS
mkdir -p /etc/ssl/private/
openssl req -x509 -nodes -newkey rsa:1024 -keyout \
 /etc/ssl/private/pure-ftpd.pem \
 -out /etc/ssl/private/pure-ftpd.pem
chmod 600 /etc/ssl/private/*.pem

Installation Quota

aptitude install quota quotatool

Hier nun die /etc/fstab anpassen:

vi /etc/fstab

Bei der betreffenden Passage usrquota,grpquota mit anfügen.

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
/dev/sda1       /               ext3    errors=remount-ro,usrquota,grpquota 0       1
/dev/sda2       /tmp            ext3    defaults,noexec        0       2
/dev/sda3       none            swap    sw              0       0

Um nun das Quota für den Mountpoint zu Aktivieren, geben wir Folgendes ein:

touch /quota.user /quota.group
chmod 600 /quota.*

mount -o remount /

quotacheck -avugm
quotaon -avug

Installation Bind

Für die Installation des DNS-Servers benötigen wir lediglich eine kurze Anweisung:

aptitude install bind9

Install fail2ban rkHunter Jailkit vLogger Webalizer

apt-get install fail2ban vlogger webalizer build-essential autoconf automake1.9 libtool flex bison rkhunter

In der Konfiguration vom Webalizer muss noch eine Kleinigkeit geändert werden:

vi /etc/webalizer/webalizer.conf
#Incremental no

Ersetzen drch …

Incremental yes


cd /usr/src/
wget http://olivier.sessink.nl/jailkit/jailkit-2.11.tar.gz
tar xvfz jailkit-2.11.tar.gz
cd jailkit-2.11
./configure
make
make install

Installation Mailserver

aptitude install postfix postfix-mysql libsasl2-2 sasl2-bin libsasl2-modules-sql libsasl2-modules procmail dovecot-pop3d dovecot-imapd gamin libgamin0 libglib2.0-0 amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl getmail4

Folgende Fragen tauchen bei der Installation auf:
(alles andere mit OK bestätigen)

Allgemeine Art der Konfiguration: ← Internet-Site
Verzeichnisse für WWW-Administration anlegen? ← NEIN
System-E-Mail-Name: ← deine.domain.tld (FQDN des Servers)

Dovecot ist noch nicht für die Zusammenarbeit mit ISPC3 vorbereitet. In der Grundkonfiguration gibt es Probleme bei der Auswertung des einrichteten Quotas für ein jeweiliges Postfach. Daher müssen wir eine kleine Änderung in der Dovecot-Konfigurationsdatei vornehmen:

vi /etc/dovecot/dovecot-sql.conf
CONCAT('maildir:storage=', quota)) AS quota

ersetzen durch …

CONCAT('maildir:storage=', floor(quota/1024)) AS quota

Dies ist Teil der letzten Zeile der Datei.
Damit ist die Installation des Mailservers abgeschlossen.

Installation Squirrelmail oder Roundcube Webmail

SQUIRRELMAIL

aptitude install squirrelmail
ln -s /usr/share/squirrelmail/ /var/www/webmail

Anschließend muss man noch den Squirrel einrichten:

squirrelmail-configure

D drücken
dovecot reinschreiben
bestätigen mit anyeinem key ;)
speichern mit S
und schließen mit Q

ROUNDCUBE

cd /usr/src/
wget http://downloads.sourceforge.net/project/roundcubemail/roundcubemail/0.3.1/roundcubemail-0.3.1.tar.gz?use_mirror=mesh
tar xvzf roundcubemail-0.3.1.tar.gz -C /var/www/
mv /var/www/roundcubemail-0.3.1/ /var/www/webmail/
chmod 777 /var/www/webmail/temp/
chmod 777 /var/www/webmail/logs/


Bevor du Roundcube nutzen kannst, solltest du eine Datenbank und einen Benutzer für Roundcube erstellen.
Logge dich via PHPMyAdmin mit deinem MySQL-Root-Benutzer auf http://domain.server.tld/phpmyadmin/ ein.
Erstelle dir eine Datenbank und einen User mit Pass für Roundcube.
Nun im Browser die Seite http://domain.server.tld/webmail/installer/ aufrufen und den Anweisungen folgen.
Im Prinzip ist die Installation selbsterklärend.

Vermutlich wird dir im ersten Schritt der Roundcube-Installation angezeigt, dass 'FileInfo' nicht verfügbar ist.
Abhilfe schaffen wir so:

apt-get install php5-dev libmagic-dev
pecl install fileinfo

Im Anschluss die 'php.ini' öffnen …

vi /etc/php5/apache2/php.ini

… und die Extension aktivieren.

extension=fileinfo.so

Ein paar Zeilen weiter unten finden wir die auskommentierte Zeile …

;date.timezone =

… und ergänzen sie; wenn wir eh schon mal grad' da sind.

date.timezone = "Europe/Berlin"

Abschließend die Datei speichern und den Apache neu starten.

/etc/init.d/apache2 restart

Wenn du nun die Roundcube-Installations-Seite im Browser neu lädst wirst du feststellen, dass alle relevanten „Not Available“s verschwunden sind. Also weiter im Takt …
Die Konfigurationen, die bei der Installation erstellt wurden, müssen bei Schritt 2 nach

vi /var/www/webmail/config/main.inc.php

und

vi /var/www/webmail/config/db.inc.php

kopiert werden.

Nach der Installation solltet ihr die Installationsdateien entfernen:

rm -rf /var/www/webmail/installer/


Um den Webmail-Usern die Möglichkeit zu geben ihr Passwort via Roundcube zu ändern …

vi /var/www/webmail/config/main.inc.php
$rcmail_config['plugins'] = array();

… durch …

$rcmail_config['plugins'] = array('password');

… ersetzen.
Danach kopieren wir im Ordner plugins/password die 'config.inc.php.dist' nach 'config.inc.php'.

cp /var/www/webmail/plugins/password/config.inc.php.dist /var/www/webmail/plugins/password/config.inc.php

In dieser Datei müssen wir drei Zeilen anpassen:

$rcmail_config['password_driver'] = 'sql';
$rcmail_config['password_db_dsn'] = 'mysql://roundcubemail:*passwd*@localhost/dbispconfig';
$rcmail_config['password_query'] = 'UPDATE mail_user SET password = %c WHERE email = %u LIMIT 1';


Installation ISPConfig 3

Schau am besten vor der Installation nach das Du auch die neuste Version benutzt http://www.ispconfig.org/
Derzeit ist Version 3.0.2.1 aktuell und dient als Grundlage für die Installation:

cd /usr/src/
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xvfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/
php -q install.php
php -q install.php


--------------------------------------------------------------------------------
 _____ ___________   _____              __ _
|_   _/  ___| ___ \ /  __ \            / _(_)
  | | \ `--.| |_/ / | /  \/ ___  _ __ | |_ _  __ _
  | |  `--. \  __/  | |    / _ \| '_ \|  _| |/ _` |
 _| |_/\__/ / |     | \__/\ (_) | | | | | | | (_| |
 \___/\____/\_|      \____/\___/|_| |_|_| |_|\__, |
                                              __/ |
                                             |___/
--------------------------------------------------------------------------------


>> Initial configuration

Operating System: Debian Lenny or compatible

    Following will be a few questions for primary configuration so be careful.
    Default values are in [brackets] and can be accepted with <ENTER>.
    Tap in "quit" (without the quotes) to stop the installer.


Select language (en,de) [en]: de

Installation mode (standard,expert) [standard]:

Full qualified hostname (FQDN) of the server, eg server1.domain.tld  [testispconfig.nixhelp.de]:

MySQL server hostname [localhost]:

MySQL root username [root]:

MySQL root password []: monstermegahammergeheimespasswort

MySQL database to create [dbispconfig]:

MySQL charset [utf8]:

Generating a 2048 bit RSA private key
..........................................+++
.................+++
writing new private key to 'smtpd.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:testispconfig.nixhelp.de
Email Address []:chef@vomserver.de
Configuring Jailkit
Configuring SASL
Configuring PAM
Configuring Dovecot
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring Pureftpd
Configuring BIND
Configuring Apache
Configuring vlogger
Configuring Apps vhost
Configuring Firewall
Installing ISPConfig
ISPConfig Port [8080]:

Configuring DBServer
Installing Crontab
no crontab for root
no crontab for getmail
Restarting services ...
Stopping MySQL database server: mysqld.
Starting MySQL database server: mysqld.
Checking for corrupt, not cleanly closed and upgrade needing tables..
Stopping Postfix Mail Transport Agent: postfix.
Starting Postfix Mail Transport Agent: postfix.
Stopping SASL Authentication Daemon: saslauthd.
Starting SASL Authentication Daemon: saslauthd.
Stopping amavisd: amavisd-new.
head: cannot open `/etc/mailname' for reading: No such file or directory
Starting amavisd: amavisd-new.
Stopping ClamAV daemon: clamd.
Starting ClamAV daemon: clamd .
Restarting IMAP/POP3 mail server: dovecot.
Restarting web server: apache2 ... waiting ..
Restarting ftp server: Running: /usr/sbin/pure-ftpd-mysql-virtualchroot -l mysql:/etc/pure-ftpd/db/mysql.conf -l pam -b -E -p 4000:4020 -u 1000 -A -O clf:/var/log/pure-ftpd/transfer.log -Y 1 -H -B
Installation completed.


Du kannst Dich jetzt in deinen Webserver einloggen unter http://domain.server.tld:8080
Login: User: admin Pass: admin
Nach dem ersten Einloggen bietet sich an erstmal das Admin pass zu ändern und die Sprache auf Deutsch zu stellen.
Klicke auf Tools und dann auf Password and Language
Trage dein neues Passwort ein und wechsel die Sprache auf Deutsch

Backup Installation

Damit die Daten und Dateien unseres Webservers nicht durch einen dummen Zufall verschwinden, installieren wir ein Backup-System. Dadurch sind die Webseiten, MySQL-Datenbanken und eMail-Postfächer unseres Servers gesichert und können bei Datenverlust relativ schnell und unkompliziert wieder hergestellt werden.

MySQLDumper Installieren

Als erstes richten wir den MySQLDumper für die Sicherung der MySQL-DB ein.

cd /usr/src
wget http://downloads.sourceforge.net/project/mysqldumper/MySQLDumper/MySQLDumper1.24stable.zip?use_mirror=mesh
unzip MySQLDumper1.24stable.zip -d /var/www/
mv /var/www/msd1.24stable/ /var/www/msd

Nun wechseln wir in den Browser und rufen die Seite http://domain.tld/msd/ auf.
Das Setup ist so gut wie selbsterklärend, daher wird hier nicht näher drauf eingegangen.
Weitere Informationen zum Thema MySQLDumper findet ihr auf http://mysqldumper.de

Damit auch der Verzeichnisschutz über die .htaccess-Datei funktioniert, müssen wir noch die Apache-Konfiguration anpassen:

vi /etc/apache2/sites-enabled/000-default

Hinter diesem Block …

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

… fügen wir folgenden Block ein …

<Directory /var/www/msd/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

Das ist wichtig, damit die Datei .htaccess überhaupt berücksichtigt wird (AllowOverride All).
Jetzt kannst du auch den Verzeichnisschutz wie gewohnt nutzen.

Duplicity / FTPlicity installieren

Damit auch nun die zu sichernden Dateien gepackt, verschlüsselt und via FTP verschickt werden können, müssen wir verschieden Pakete installieren. Bevor wir das aber machen können, muss vorher ein Keyring geladen und die 'sources.list' angepasst werden.

apt-get install ncftp librsync1 python python-central python-pexpect build-essential python-gnupginterface screen
vi /etc/apt/sources.list
#deb ftp://ftp2.de.debian.org/debian/ lenny main contrib non-free
#deb-src ftp://ftp2.de.debian.org/debian/ lenny main contrib non-free

#deb http://ftp2.de.debian.org/debian-security lenny/updates main contrib non-free

#deb http://security.debian.org/ lenny/updates main contrib non-free
#deb-src http://security.debian.org/ lenny/updates main contrib non-free

#deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

deb http://www.backports.org/debian lenny-backports main
deb http://ftp.de.debian.org/debian sid main

Anschließend können wir Duplicity via apt-get installieren …

apt-get install debian-backports-keyring
apt-get install duplicity

… und setzen danach die 'sources.list' wieder zurück.

vi /etc/apt/sources.list
deb ftp://ftp2.de.debian.org/debian/ lenny main contrib non-free
deb-src ftp://ftp2.de.debian.org/debian/ lenny main contrib non-free

deb http://ftp2.de.debian.org/debian-security lenny/updates main contrib non-free

deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free

deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free

#deb http://www.backports.org/debian lenny-backports main
#deb http://ftp.de.debian.org/debian sid main


Als letztes Tool installieren wir ftplicity …

cd /usr/src
wget http://downloads.sourceforge.net/project/ftplicity/duply%20%28simple%20duplicity%29/1.5.x/ftplicity_1.5.0.2.tgz?use_mirror=mesh
tar xzvf ftplicity_1.5.0.2.tgz
cp /usr/src/ftplicity_1.5.0.2/ftplicity /usr/local/bin


Bevor wir das Backup einrichten können, müssen wir uns noch einen GPG-Schlüssel erstellen. Dieser ist wichtig, damit die Archive verschlüsselt werden können.

gpg --gen-key

Ein beliebig ausgedachtes Passwort verwenden.
Standards bestätigen und weitere Daten ausfüllen.
Anschliessend den Public-Key sichern / notieren. ACHTUNG: Man sollte das Verzeichnis /root/.gpg nochmal an sicherer Stelle aufheben.
Wenn diese Dateien weg sind kann man kein Backup zurücksichern.

Nun geht es an's Konfigurieren. Dafür führen wir einen Befehl aus, damit die Grundkonfiguration schon mal geschrieben wird …

ftplicity [BACKUPNAME] create

Jetzt wechseln wir in das Verzeichnis, in dem die Konfiguration zu finden ist und editieren die Datei 'conf' …

cd /root/.ftplicity/[BACKUPNAME]
vi conf

In dieser Datei müsst ihr nun die Variablen GPG_KEY, GPG_PW, und Target anpassen.
Danach könnt ihr diese Vorgaben nutzen, oder die Konfiguration selber anpassen …

SOURCE='/var'
MAX_FULL_BACKUPS=2
MAX_FULLBKP_AGE=1M
VOLSIZE=100

Die Exclude-Datei muss ebenfalls erstellt und gefüllt werden, damit nicht unerwünschte Verzeichnisse / Dateien mit in die Sicherung wandern …

vi exclude
/var/backups
/var/cache
/var/lib
/var/local
/var/lock
/var/opt
/var/run
/var/spool
/var/tmp

Damit die Datenbanken kurz vor dem Backup-Prozess gesichert werden, legen wir die Datei 'pre' an.

vi pre

In diese Datei schreiben wir die Kommandos, die den MySQLDumper anstoßen die Datenbanken zu Dumpen …

perl /var/www/msd/msd_cron/crondump.pl -config=[KONFIGURATIONSNAME] -html_output=0


Nachdem wir das hinter uns haben, können wir direkt ein Fullbackup zum Test starten …

ftplicity [BACKUPNAME] full

Danach können wir das Backup wie folgt prüfen:

ftplicity [BACKUPNAME] status


Um das Backup automatisch starten zu lassen, legen wir einen Cronjob an …

crontab -e

… und fügen diese Zeilen ein …

00 3 1 * * /usr/local/bin/ftplicity [BACKUPNAME] cleanup --force && /usr/local/bin/ftplicity [BACKUPNAME] full && /usr/local/bin/ftplicity [BACKUPNAME] purge --force
00 3 2-31 * * /usr/local/bin/ftplicity [BACKUPNAME] cleanup --force && /usr/local/bin/ftplicity [BACKUPNAME] backup

HTTPS für das Admin Interface / Webmail / Phpmyadmin // MySQLDumper

Admin Interface

Eigenes SSL-Certifikat

Für diese Passage bedanke ich mich bei Alexander Fox der diese Anleitung als gesondertes Howto auf howtoforge.de veröffentlicht hat. Da ich der Meinung bin das dies wichtiger Bestandteil der Hauptinstallation ist habe ich es hier direkt integriert.

cd /etc/ssl/certs

Zertifikate erstellen:

openssl genrsa -des3 -out ispserver.key 4096
openssl req -new -key ispserver.key -out ispserver.csr
openssl x509 -req -days 3650 -in ispserver.csr -signkey ispserver.key -out ispserver.crt
openssl rsa -in ispserver.key -out ispserver.key.insecure

mv ispserver.key ispserver.key.secure
mv ispserver.key.insecure ispserver.key

Signiertes StartSSL-Zertifikat

Um ein signiertes SSL-Zertifikat einzubinden, musst du dir dieses - vor dem Anpassen der Apache-Konfiguration - bei StartSSL erstellen. StartSSL bietet einen sehr guten Wizard, daher möchte ich hier nicht im Detail auf das Erzeugen des Zertifikats eingehen.

Bevor wir loslegen können, benötigen wir drei Dateien:

Bei der Datei 'ispserver.key' handelt es sich um die entschlüsselte Key-Datei von StartSSL (beginnt mit „—–BEGIN RSA PRIVATE KEY—–“). Ihr könnt selbstverständlich auch die verschlüsselte Key-Datei verwenden, allerdings müsst ihr dann beim reload / restart des Apache immer das entsprechende Passwort eingeben. Davon rate ich jedoch ab!

Die Datei 'ispserver.crt' beinhaltet das von StartSSL erstellte Zertifikat, das ihr ganz am Ende des Wizards „ausgehändigt“ bekommt (beginnt mit „—–BEGIN CERTIFICATE—–“).

Die dritte und letzte Datei ist die 'ispserver.pem'. Auch diese bekommt ihr von StartSSL (ControlPanel → Tool Box → StartCom CA Certificates). Es handelt sich um die 'Class (1 | 2 | 3) Intermediate Server CA'. Allerdings ist hierbei darauf zu achten, dass ihr die Richtige (Class 1, 2 oder 3) wählt. Habt ihr euch ein kostenloses Zertifikat erstellt, müsst ihr die 'Class 1 Intermediate Server CA' nehmen.

Haben wir nun alle Dateien zusammen, legen wir sie im Verzeichnis '/etc/apache2/ssl' ab.

cd /etc/ssl/certs

vi ispserver.key
-- hier den entschlüsselten Key einfügen --
vi ispserver.crt
-- hier das Zertifikat einfügen --

wget https://www.startssl.com/certs/sub.class1.server.ca.pem --no-check-certificate
-- bei dem Link auf die class achten! --
mv sub.class1.server.ca.pem ispserver.pem

Apache Konfiguration

Erst mal muss dem Apache mitgeteilt werden, dass wir ssl benutzen wollen:

a2enmod ssl

Danach bearbeiten wir die vhost-Datei von ispconfig …

vi /etc/apache2/sites-available/ispconfig.vhost

… und fügen die folgenden Zeilen innerhalb von “<VirtualHost ….></VirtualHost>” hinzu …

SSLEngine On

SSLCertificateFile /etc/ssl/certs/ispserver.crt
SSLCertificateKeyFile /etc/ssl/certs/ispserver.key
SSLCertificateChainFile /etc/ssl/certs/ispserver.pem

SSLProtocol All -SSLv2
SSLCipherSuite ALL:!EXP:!NULL:!ADH:!LOW
SetEnvIf User-Agent “.*MSIE.*” nokeepalive ssl-unclean-shutdown


Im Anschluss daran müssen wir den Apache einmal neu starten …

/etc/init.d/apache2 restart

… und können nun eine verschlüsselte Verbindung via https://domain.tld:8080 zum ISPC3-Webinterface aufbauen.

Webmail, PHPMyAdmin und MySQLDumper

Webmail und PHPMyAdmin ebenfalls auf https switchen:

vi /etc/apache2/sites-available/default

Folgende Zeilen werden (wie oben) zwischen “<VirtualHost ….></VirtualHost>” eingefügt:

    <IfModule mod_rewrite.c>
        <IfModule mod_ssl.c>
            <Location /phpmyadmin>
                RewriteEngine on
                RewriteCond %{HTTPS} off
                RewriteRule ^(.*)$ https://%{HTTP_HOST}:8080/phpmyadmin [R]
            </Location>
        </IfModule>
    </IfModule>

    <IfModule mod_rewrite.c>
        <IfModule mod_ssl.c>
            <Location /webmail>
                RewriteEngine on
                RewriteCond %{HTTPS} off
                RewriteRule ^(.*)$ https://%{HTTP_HOST}:8080/webmail [R]
            </Location>
        </IfModule>
    </IfModule>

    <IfModule mod_rewrite.c>
        <IfModule mod_ssl.c>
            <Location /msd>
                RewriteEngine on
                RewriteCond %{HTTPS} off
                RewriteRule ^(.*)$ https://%{HTTP_HOST}:8080/msd [R]
            </Location>
        </IfModule>
    </IfModule>

Danach muss in der '/etc/apache2/sites-available/ispconfig.vhost' noch etwas hinzugefügt werden.
Ich habs hinter den <IfModule mod_php5.c></IfModule> -Block gesetzt:

  Alias /msd /var/www/msd
  <Directory /var/www/msd>
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>

  Alias /webmail /var/www/webmail
  <Directory /var/www/webmail>
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>

Im Anschluss den Apache neustarten …

/etc/init.d/apache2 restart


Nun sind auch PHPMyAdmin, das Webmail-Interface und der MySQLDumper über eine verschlüsselte Verbindung zu erreichen.

Postfix SSL- / TLS-Fähig machen

Um nun auch die SSL-Zertifikate für Postfix nutzen zu können, begeben wir uns in die 'main.cf' von Postfix …

vi /etc/postfix/main.cf

In der Datei ersetzt ihr nun die beiden Zeilen …

smtpd_tls_cert_file = /etc/postfix/smtpd.cert
smtpd_tls_key_file = /etc/postfix/smtpd.key

… nach …

smtpd_tls_cert_file = /etc/ssl/certs/ispserver.crt
smtpd_tls_key_file = /etc/ssl/certs/ispserver.key
smtpd_tls_CAfile = /etc/ssl/certs/ispserver.pem
-- auch hier nur die letzte Zeile, wenn ihr das Zertifikat von StartSSL habt --

Jetzt noch einmal Postfix dazu auffordern die Konfiguration neu zu laden …

/etc/init.d/postfix reload

Das war es auch schon. Nun könnt ihr den SMTP-Port auch mit TLS nutzen.

Dovecot SSL- / TLS-Fähig machen

Damit wir Dovecot (also IMAP bzw POP3) über eine verschlüsselte Verbindung erreichen, gehen wir wie folgt vor:

vi /etc/dovecot/dovecot.conf

In dieser Datei müssen wir lediglich drei Zeilen anpassen …

ssl_cert_file = /etc/ssl/certs/ispserver.crt
ssl_key_file = /etc/ssl/certs/ispserver.key
ssl_ca_file = /etc/ssl/certs/ispserver.pem
-- auch hier wieder nur die letzte Zeile editieren, wenn ihr das Zertifikat von StartSSL habt. Ansonsten auskommentiert lassen! --

Nun noch den Dovecot-Daemon neu starten …

/etc/init.d/dovecot restart

Und nun solltet ihr euch an dem Posteingangsserver via SSL / TLS anmelden können.

Hilfen und Extras

OpenVZ / Proxmox und PureFTPD


PureFTPD greift auf gewisse Schnittstellen zurück die der Virtuellen Maschine nicht vom Standard aus gegeben sind.
Hierzu muss im Host die Config der VM bearbeitet bzw. ergänzt werden.
Die Configs liegen unter /etc/vz/config !

CAPABILITY=”CHOWN:on DAC_READ_SEARCH:on SETGID:on SETUID:on NET_BIND_SERVICE:on NET_ADMIN:on SYS_CHROOT:on SYS_NICE:on “

Zurück zum Index