Server Setup · 22 min read · Nov 03, 2025

Der perfekte Server - Debian 10 (Buster) mit Apache, BIND, Dovecot, PureFTPD und ISPConfig 3.2

Dieses Tutorial zeigt, wie man einen Debian 10 Server (mit Apache2, BIND, Dovecot) für die Installation von ISPConfig 3.2 vorbereitet und wie man ISPConfig installiert. Das Webhosting-Kontrollpanel ISPConfig 3 ermöglicht es Ihnen, die folgenden Dienste über einen Webbrowser zu konfigurieren: Apache oder nginx Webserver, Postfix Mailserver, Courier oder Dovecot IMAP/POP3 Server, MySQL, BIND oder MyDNS Nameserver, PureFTPd, SpamAssassin, ClamAV und viele mehr. Dieses Setup umfasst Apache (anstatt nginx), BIND und Dovecot.

1 Vorbemerkung

In diesem Tutorial werde ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.0.100 und dem Gateway 192.168.0.1 verwenden. Diese Einstellungen können bei Ihnen abweichen, daher müssen Sie sie gegebenenfalls anpassen. Bevor Sie fortfahren, benötigen Sie eine minimale Installation von Debian 10. Dies könnte ein minimales Debian-Image von Ihrem Hosting-Anbieter sein oder Sie verwenden das Minimal Debian Server Tutorial, um das Basissystem einzurichten.

Alle untenstehenden Befehle werden als Root-Benutzer ausgeführt. Melden Sie sich entweder direkt als Root-Benutzer an oder melden Sie sich als normaler Benutzer an und verwenden Sie dann den Befehl

su -

um Root-Benutzer auf Ihrem Server zu werden, bevor Sie fortfahren. WICHTIG: Sie müssen ‘su -‘ verwenden und nicht nur ‘su’, da sonst Ihre PATH-Variable von Debian falsch gesetzt wird.

2 Installieren Sie den SSH-Server (Optional)

Wenn Sie den OpenSSH-Server während der Systeminstallation nicht installiert haben, können Sie dies jetzt tun:

apt-get install ssh openssh-server

Von nun an können Sie einen SSH-Client wie PuTTY verwenden und sich von Ihrem Arbeitsplatz mit Ihrem Debian 9 Server verbinden und die verbleibenden Schritte dieses Tutorials befolgen.

3 Installieren Sie einen Shell-Texteditor (Optional)

Wir werden in diesem Tutorial den nano Texteditor verwenden. Einige Benutzer bevorzugen den klassischen vi-Editor, daher werden wir hier beide Editoren installieren. Das Standard-vi-Programm hat auf Debian und Ubuntu ein seltsames Verhalten; um dies zu beheben, installieren wir vim-nox:

apt-get install nano vim-nox

Wenn vi Ihr bevorzugter Editor ist, ersetzen Sie nano in den folgenden Befehlen durch vi, um Dateien zu bearbeiten.

4 Konfigurieren Sie den Hostnamen

Der Hostname Ihres Servers sollte ein Subdomain wie “server1.example.com” sein. Verwenden Sie keinen Domainnamen ohne Subdomain-Teil wie “example.com” als Hostnamen, da dies später Probleme mit Ihrer Mail-Konfiguration verursachen wird. Zuerst sollten Sie den Hostnamen in /etc/hosts überprüfen und gegebenenfalls ändern. Die Zeile sollte lauten: “IP-Adresse - Leerzeichen - vollständiger Hostname inkl. Domain - Leerzeichen - Subdomain-Teil”. Für unseren Hostnamen server1.example.com sollte die Datei wie folgt aussehen:

nano /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.0.100   server1.example.com     server1

# Die folgenden Zeilen sind wünschenswert für IPv6-fähige Hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Bearbeiten Sie dann die Datei /etc/hostname:

nano /etc/hostname

Sie sollte nur den Subdomain-Teil enthalten, in unserem Fall:

server1

Starten Sie schließlich den Server neu, um die Änderung anzuwenden:

systemctl reboot

Melden Sie sich erneut an und überprüfen Sie, ob der Hostname jetzt mit diesen Befehlen korrekt ist:

hostname  
hostname -f

Die Ausgabe sollte wie folgt aussehen:

root@server1:/tmp# hostname  
server1  
root@server1:/tmp# hostname -f  
server1.example.com

5 Aktualisieren Sie Ihre Debian-Installation

Stellen Sie zunächst sicher, dass Ihre /etc/apt/sources.list das buster/updates-Repository enthält (dies stellt sicher, dass Sie immer die neuesten Sicherheitsupdates erhalten), und dass die contrib- und non-free-Repositories aktiviert sind, da einige benötigte Pakete nicht im Hauptrepository enthalten sind.

nano /etc/apt/sources.list
deb http://deb.debian.org/debian/ buster main contrib non-free  
deb-src http://deb.debian.org/debian/ buster main contrib non-free  
  
deb http://security.debian.org/debian-security buster/updates main contrib non-free  
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free

Führen Sie aus:

apt-get update

Um die apt-Paketdatenbank zu aktualisieren

apt-get upgrade

und um die neuesten Updates zu installieren (falls vorhanden).

6. Ändern Sie die Standard-Shell

/bin/sh ist ein Symlink zu /bin/dash, wir benötigen jedoch /bin/bash, nicht /bin/dash. Daher tun wir dies:

dpkg-reconfigure dash

Verwenden Sie dash als Standard-System-Shell (/bin/sh)? <– Nein

Wenn Sie dies nicht tun, schlägt die ISPConfig-Installation fehl.

7 Synchronisieren Sie die Systemuhr

Es ist eine gute Idee, die Systemuhr mit einem NTP ( n etwork t ime p rotokoll) Server über das Internet zu synchronisieren. Führen Sie einfach aus

apt-get -y install ntp

und Ihre Systemzeit wird immer synchronisiert sein.

8 Installieren Sie Postfix, Dovecot, MariaDB, rkhunter und Binutils

Wir können Postfix, Dovecot, MariaDB als MySQL-Alternative, rkhunter und Binutils mit einem einzigen Befehl installieren:

apt-get -y install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudo curl

Sie werden nach folgenden Fragen gefragt:

Allgemeiner Typ der Mailkonfiguration: <– Internet Site
System-Mailname: <– server1.example.com

Um die MariaDB-Installation zu sichern und die Testdatenbank zu deaktivieren, führen Sie diesen Befehl aus:

mysql_secure_installation

Beantworten Sie die Fragen wie folgt:

Ändern Sie das Root-Passwort? [Y/n] <-- y  
Neues Passwort: <-- Geben Sie ein neues MariaDB-Root-Passwort ein  
Neues Passwort erneut eingeben: <-- Wiederholen Sie das MariaDB-Root-Passwort  
Anonyme Benutzer entfernen? [Y/n] <-- y  
Root-Login aus der Ferne verbieten? [Y/n] <-- y  
Testdatenbank und Zugriff darauf entfernen? [Y/n] <-- y  
Privilegientabellen jetzt neu laden? [Y/n] <-- y

Öffnen Sie als Nächstes die TLS/SSL- und Übermittlungsports in Postfix:

nano /etc/postfix/master.cf

Kommentieren Sie die Abschnitte submission und smtps wie folgt aus und fügen Sie Zeilen hinzu, wo nötig, sodass dieser Abschnitt der master.cf-Datei genau wie der unten aussieht. WICHTIG: Entfernen Sie das # vor den Zeilen, die mit smtps und submission beginnen, und nicht nur von den -o-Zeilen nach diesen Zeilen!

[...]
submission inet n - - - - smtpd  
 -o syslog_name=postfix/submission  
 -o smtpd_tls_security_level=encrypt  
 -o smtpd_sasl_auth_enable=yes  
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject  
# -o smtpd_reject_unlisted_recipient=no  
# -o smtpd_client_restrictions=$mua_client_restrictions  
# -o smtpd_helo_restrictions=$mua_helo_restrictions  
# -o smtpd_sender_restrictions=$mua_sender_restrictions  
# -o smtpd_recipient_restrictions=  
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject  
# -o milter_macro_daemon_name=ORIGINATING  
smtps inet n - - - - smtpd  
 -o syslog_name=postfix/smtps  
 -o smtpd_tls_wrappermode=yes  
 -o smtpd_sasl_auth_enable=yes  
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject  
# -o smtpd_reject_unlisted_recipient=no  
# -o smtpd_client_restrictions=$mua_client_restrictions  
# -o smtpd_helo_restrictions=$mua_helo_restrictions  
# -o smtpd_sender_restrictions=$mua_sender_restrictions  
# -o smtpd_recipient_restrictions=  
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject  
# -o milter_macro_daemon_name=ORIGINATING
[...]

Starten Sie Postfix anschließend neu:

systemctl restart postfix

Wir möchten, dass MySQL auf allen Schnittstellen hört, nicht nur auf localhost. Daher bearbeiten wir /etc/mysql/mariadb.conf.d/50-server.cnf und kommentieren die Zeile bind-address = 127.0.0.1 aus, indem wir ein # davor setzen.

nano /etc/mysql/mariadb.conf.d/50-server.cnf
[...]
# Anstelle von skip-networking ist es jetzt Standard, nur auf  
# localhost zu hören, was kompatibler ist und nicht weniger sicher.
#bind-address           = 127.0.0.1  
[...]

Setzen Sie die Passwortauthentifizierungsmethode in MariaDB auf native, damit wir später PHPMyAdmin verwenden können, um uns als Root-Benutzer zu verbinden:

echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root

Bearbeiten Sie die Datei /etc/mysql/debian.cnf und setzen Sie dort das MYSQL / MariaDB Root-Passwort zweimal in den Zeilen, die mit dem Wort password beginnen.

nano /etc/mysql/debian.cnf

Das MySQL-Root-Passwort, das hinzugefügt werden muss, wird rot angezeigt. In diesem Beispiel lautet das Passwort “howtoforge”.

# Automatisch für Debian-Skripte generiert. NICHT ANFASSEN!  
[client]  
host = localhost  
user = root  
password = howtoforge  
socket = /var/run/mysqld/mysqld.sock  
[mysql_upgrade]  
host = localhost  
user = root  
password = howtoforge  
socket = /var/run/mysqld/mysqld.sock  
basedir = /usr

Um den Fehler ‘ Error in accept: Too many open files ‘ zu verhindern, setzen wir jetzt höhere offene Dateigrenzen für MariaDB.

Öffnen Sie die Datei /etc/security/limits.conf mit einem Editor:

nano /etc/security/limits.conf

und fügen Sie diese Zeilen am Ende der Datei hinzu.

mysql soft nofile 65535  
mysql hard nofile 65535

Erstellen Sie als Nächstes ein neues Verzeichnis /etc/systemd/system/mysql.service.d/ mit dem mkdir-Befehl.

mkdir -p /etc/systemd/system/mysql.service.d/

und fügen Sie eine neue Datei darin hinzu:

nano /etc/systemd/system/mysql.service.d/limits.conf

Fügen Sie die folgenden Zeilen in diese Datei ein:

[Service]  
LimitNOFILE=infinity

Speichern Sie die Datei und schließen Sie den Nano-Editor.

Dann laden wir systemd neu und starten MariaDB neu:

systemctl daemon-reload  
systemctl restart mariadb

Überprüfen Sie jetzt, ob das Networking aktiviert ist. Führen Sie aus

netstat -tap | grep mysql

Die Ausgabe sollte wie folgt aussehen:

root@server1:/home/administrator# netstat -tap | grep mysql  
tcp6 0 0 [::]:mysql [::]:* LISTEN 16623/mysqld

9 Installieren Sie Amavisd-new, SpamAssassin und ClamAV

Um amavisd-new, SpamAssassin und ClamAV zu installieren, führen wir aus

apt-get install amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract p7zip p7zip-full unrar lrzip 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 libdbd-mysql-perl postgrey

Die ISPConfig 3 Einrichtung verwendet amavisd, das die SpamAssassin-Filterbibliothek intern lädt, sodass wir SpamAssassin stoppen können, um etwas RAM freizugeben:

systemctl stop spamassassin  
systemctl disable spamassassin

10 Installieren Sie den Apache Webserver und PHP

Apache2, PHP, FCGI, suExec, Pear und mcrypt können wie folgt installiert werden:

apt-get -y install apache2 apache2-doc apache2-utils libapache2-mod-php php7.3 php7.3-common php7.3-gd php7.3-mysql php7.3-imap php7.3-cli php7.3-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear mcrypt imagemagick libruby libapache2-mod-python php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc php7.3-xsl memcached php-memcache php-imagick php-gettext php7.3-zip php7.3-mbstring memcached libapache2-mod-passenger php7.3-soap php7.3-fpm php7.3-opcache php-apcu libapache2-reload-perl

Führen Sie dann den folgenden Befehl aus, um die Apache-Module suexec, rewrite, ssl, actions und include (plus dav, dav_fs und auth_digest, wenn Sie WebDAV verwenden möchten) zu aktivieren:

a2enmod suexec rewrite ssl actions include dav_fs dav auth_digest cgi headers actions proxy_fcgi alias

Um sicherzustellen, dass der Server nicht über die HTTPOXY-Sicherheitsanfälligkeit angegriffen werden kann, werden wir den HTTP_PROXY-Header in Apache global deaktivieren, indem wir die Konfigurationsdatei /etc/apache2/conf-available/httpoxy.conf hinzufügen.

*Hinweis: Die Sicherheitsanfälligkeit heißt httpoxy (ohne ‘r’) und daher heißt die Datei, in die wir die Konfiguration hinzufügen, httpoxy.conf und nicht httproxy.conf, sodass kein ‘r’ im Dateinamen fehlt.*

nano /etc/apache2/conf-available/httpoxy.conf

Fügen Sie den folgenden Inhalt in die Datei ein:


    RequestHeader unset Proxy early

Und aktivieren Sie das Modul, indem Sie ausführen:

a2enconf httpoxy  
systemctl restart apache2

11 Installieren Sie Let’s Encrypt

ISPConfig verwendet jetzt acme.sh als Let’s Encrypt-Client. Installieren Sie acme.sh mit folgendem Befehl:

curl https://get.acme.sh | sh -s

12 Installieren Sie Mailman

ISPConfig ermöglicht es Ihnen, Mailman-Mailinglisten zu verwalten (zu erstellen/zu ändern/zu löschen). Wenn Sie diese Funktion nutzen möchten, installieren Sie Mailman wie folgt:

apt-get install mailman

Wählen Sie mindestens eine Sprache, z.B.:

Sprachen zur Unterstützung: <-- en (Englisch)  
Fehlende Site-Liste <-- Ok

Bevor wir Mailman starten können, muss eine erste Mailingliste namens mailman erstellt werden:

newlist mailman
root@server1:~# newlist mailman  
Geben Sie die E-Mail-Adresse der Person ein, die die Liste verwaltet: <-- admin E-Mail-Adresse, z.B. [email protected]  
Anfängliches Mailman-Passwort: <-- admin-Passwort für die Mailman-Liste  
Um die Erstellung Ihrer Mailingliste abzuschließen, müssen Sie Ihre /etc/aliases (oder  
equivalente) Datei bearbeiten, indem Sie die folgenden Zeilen hinzufügen und möglicherweise das  
`newaliases` Programm ausführen:  
  
## mailman Mailingliste  
mailman:              "|/var/lib/mailman/mail/mailman post mailman"  
mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"  
mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"  
mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"  
mailman-join:         "|/var/lib/mailman/mail/mailman join mailman"  
mailman-leave:        "|/var/lib/mailman/mail/mailman leave mailman"  
mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"  
mailman-request:      "|/var/lib/mailman/mail/mailman request mailman"  
mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"  
mailman-unsubscribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"  
  
Drücken Sie die Eingabetaste, um den Mailman-Besitzer zu benachrichtigen... <-- EINGABETASTE  
  
root@server1:~#

Öffnen Sie anschließend /etc/aliases…

nano /etc/aliases

… und fügen Sie die folgenden Zeilen hinzu:

[...]  
## mailman Mailingliste  
mailman:              "|/var/lib/mailman/mail/mailman post mailman"  
mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"  
mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"  
mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"  
mailman-join:         "|/var/lib/mailman/mail/mailman join mailman"  
mailman-leave:        "|/var/lib/mailman/mail/mailman leave mailman"  
mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"  
mailman-request:      "|/var/lib/mailman/mail/mailman request mailman"  
mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"  
mailman-unsubscribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"

Führen Sie aus:

newaliases

und starten Sie Postfix neu:

systemctl restart postfix

Schließlich müssen wir die Mailman-Apache-Konfiguration aktivieren:

ln -s /etc/mailman/apache.conf /etc/apache2/conf-enabled/mailman.conf

Dies definiert das Alias /cgi-bin/mailman/ für alle Apache vHosts, was bedeutet, dass Sie auf die Mailman-Admin-Oberfläche für eine Liste unter http://server1.example.com/cgi-bin/mailman/admin/ zugreifen können, und die Webseite für Benutzer einer Mailingliste finden Sie unter http://server1.example.com/cgi-bin/mailman/listinfo/.

Unter http://server1.example.com/pipermail finden Sie die Mailinglistenarchive.

Starten Sie anschließend Apache neu:

systemctl restart apache2

Starten Sie dann den Mailman-Daemon:

systemctl restart mailman

13 Installieren Sie PureFTPd und Quota

PureFTPd und Quota können mit folgendem Befehl installiert werden:

apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool

Erstellen Sie die dhparam-Datei für pure-ftpd:

openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 2048

Bearbeiten Sie die Datei /etc/default/pure-ftpd-common…

nano /etc/default/pure-ftpd-common

… und stellen Sie sicher, dass der Startmodus auf standalone gesetzt ist und VIRTUALCHROOT=true gesetzt ist:

[...]  
STANDALONE_OR_INETD=standalone  
[...]  
VIRTUALCHROOT=true  
[...]  

Jetzt konfigurieren wir PureFTPd, um FTP- und TLS-Sitzungen zuzulassen. FTP ist ein sehr unsicheres Protokoll, da alle Passwörter und alle Daten im Klartext übertragen werden. Durch die Verwendung von TLS kann die gesamte Kommunikation verschlüsselt werden, wodurch FTP viel sicherer wird.

Wenn Sie FTP- und TLS-Sitzungen zulassen möchten, führen Sie aus

echo 1 > /etc/pure-ftpd/conf/TLS

Um TLS verwenden zu können, müssen wir ein SSL-Zertifikat erstellen. Ich erstelle es in /etc/ssl/private/, daher erstelle ich zuerst dieses Verzeichnis:

mkdir -p /etc/ssl/private/

Anschließend können wir das SSL-Zertifikat wie folgt generieren:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
Land (2-Buchstaben-Code) [AU]: <-- Geben Sie Ihren Ländernamen ein (z.B. "DE").  
Bundesland oder Provinzname (vollständiger Name) [Some-State]: <-- Geben Sie den Namen Ihres Bundeslandes oder Ihrer Provinz ein.  
Ort (z.B. Stadt) []: <-- Geben Sie Ihre Stadt ein.  
Organisationsname (z.B. Firma) [Internet Widgits Pty Ltd]: <-- Geben Sie den Namen Ihrer Organisation ein (z.B. den Namen Ihrer Firma).  
Abteilung (z.B. Bereich) []: <-- Geben Sie den Namen Ihrer Abteilung ein (z.B. "IT-Abteilung").  
Allgemeiner Name (z.B. IHRE Name) []: <-- Geben Sie den vollqualifizierten Domainnamen des Systems ein (z.B. "server1.example.com").  
E-Mail-Adresse []: <-- Geben Sie Ihre E-Mail-Adresse ein.

Ändern Sie die Berechtigungen des SSL-Zertifikats:

chmod 600 /etc/ssl/private/pure-ftpd.pem

Starten Sie dann PureFTPd neu:

systemctl restart pure-ftpd-mysql

Bearbeiten Sie /etc/fstab. Meine sieht so aus (ich habe usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 zur Partition mit dem Einhängepunkt / hinzugefügt):

nano /etc/fstab
# /etc/fstab: statische Dateisysteminformationen.  
#  
# Verwenden Sie 'blkid', um die universell eindeutige Kennung für ein  
# Gerät zu drucken; dies kann mit UUID= als robustere Methode verwendet werden, um Geräte zu benennen,  
# die auch dann funktioniert, wenn Festplatten hinzugefügt und entfernt werden. Siehe fstab(5).  
#  
#        
# / war auf /dev/sda1 während der Installation  
UUID=45576b38-39e8-4994-b8c1-ea4870e2e614 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1  
# Swap war auf /dev/sda5 während der Installation  
UUID=8bea0d1e-ec37-4b20-9976-4b7daaa3eb69 none swap sw 0 0  
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

Um Quota zu aktivieren, führen Sie diese Befehle aus:

mount -o remount /
quotacheck -avugm  
quotaon -avug

14 Installieren Sie den BIND DNS-Server

BIND kann wie folgt installiert werden:

apt-get install bind9 dnsutils

Wenn Ihr Server eine virtuelle Maschine ist, wird dringend empfohlen, den haveged-Daemon zu installieren, um eine höhere Entropie für die DNSSEC-Signierung zu erhalten. Sie können haveged auch auf nicht-virtuellen Servern installieren, es sollte nicht schaden.

apt-get install haveged

Eine Erklärung zu diesem Thema finden Sie hier.

15 Installieren Sie Webalizer, AWStats und GoAccess

Webalizer und AWStats können wie folgt installiert werden:

apt-get install webalizer awstats geoip-database libclass-dbi-mysql-perl libtimedate-perl

Öffnen Sie anschließend /etc/cron.d/awstats…

nano /etc/cron.d/awstats

… und kommentieren Sie alles in dieser Datei aus:

#MAILTO=root

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Generieren Sie statische Berichte:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

Installieren Sie die neueste GoAccess-Version direkt aus dem GoAccess-Repository:

echo "deb https://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list  
wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/goaccess.gpg add -  
apt-get update  
apt-get install goaccess

16 Installieren Sie Jailkit

Jailkit wird nur benötigt, wenn Sie SSH-Benutzer chrooten möchten. Es kann wie folgt installiert werden:

apt-get install build-essential autoconf automake libtool flex bison debhelper binutils
cd /tmp  
wget http://olivier.sessink.nl/jailkit/jailkit-2.20.tar.gz  
tar xvfz jailkit-2.20.tar.gz  
cd jailkit-2.20  
echo 5 > debian/compat  
./debian/rules binary

Sie können jetzt das Jailkit.deb-Paket wie folgt installieren:

cd ..  
dpkg -i jailkit_2.20-1_*.deb  
rm -rf jailkit-2.20*

17 Installieren Sie fail2ban und die UFW-Firewall

Dies ist optional, aber empfohlen, da der ISPConfig-Monitor versucht, das Protokoll anzuzeigen:

apt-get install fail2ban

Um fail2ban zu veranlassen, PureFTPd und Dovecot zu überwachen, erstellen Sie die Datei /etc/fail2ban/jail.local:

nano /etc/fail2ban/jail.local

Und fügen Sie die folgende Konfiguration hinzu.

[pure-ftpd]  
enabled = true  
port = ftp  
filter = pure-ftpd  
logpath = /var/log/syslog  
maxretry = 3  
  
[dovecot]  
enabled = true  
filter = dovecot  
logpath = /var/log/mail.log  
maxretry = 5  
  
[postfix-sasl]  
enabled = true  
port = smtp  
filter = postfix[mode=auth]  
logpath = /var/log/mail.log  
maxretry = 3

Starten Sie fail2ban anschließend neu:

systemctl restart fail2ban

Um die UFW-Firewall zu installieren, führen Sie diesen apt-Befehl aus:

apt-get install ufw

18 Installieren Sie das PHPMyAdmin-Datenbankverwaltungstool

Seit Debian 10 ist PHPMyAdmin nicht mehr als .deb-Paket verfügbar. Daher werden wir es aus dem Quellcode installieren.

Erstellen Sie Ordner für PHPMyAdmin:

mkdir /usr/share/phpmyadmin  
mkdir /etc/phpmyadmin  
mkdir -p /var/lib/phpmyadmin/tmp  
chown -R www-data:www-data /var/lib/phpmyadmin  
touch /etc/phpmyadmin/htpasswd.setup

Gehen Sie in das /tmp-Verzeichnis und laden Sie die PHPMyAdmin-Quellen herunter:

cd /tmp  
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gz

Entpacken Sie die heruntergeladene Archivdatei und verschieben Sie die Dateien in den Ordner /usr/share/phpmyadmin und bereinigen Sie das /tmp-Verzeichnis.

tar xfz phpMyAdmin-4.9.0.1-all-languages.tar.gz  
mv phpMyAdmin-4.9.0.1-all-languages/* /usr/share/phpmyadmin/  
rm phpMyAdmin-4.9.0.1-all-languages.tar.gz  
rm -rf phpMyAdmin-4.9.0.1-all-languages

Erstellen Sie eine neue Konfigurationsdatei für PHPMyAdmin basierend auf der bereitgestellten Beispieldatei:

cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

Öffnen Sie die Konfigurationsdatei mit dem Nano-Editor:

nano /usr/share/phpmyadmin/config.inc.php

Setzen Sie ein sicheres Passwort (Blowfish-Geheimnis), das 32 Zeichen lang sein muss:

$cfg['blowfish_secret'] = 'bD3e6wva9fnd93jVsb7SDgeiBCd452Dh'; /* SIE MÜSSEN DAS FÜR COOKIE AUTH FÜLLEN! */

Verwenden Sie nicht mein Beispiel-Blowfish-Geheimnis, setzen Sie Ihr eigenes!

Fügen Sie dann eine Zeile hinzu, um das Verzeichnis festzulegen, das PHPMyAdmin verwenden soll, um temporäre Dateien zu speichern:

$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

Als Nächstes erstellen wir die Apache-Konfigurationsdatei für PHPMyAdmin, indem wir eine neue Datei im Nano-Editor öffnen:

nano /etc/apache2/conf-available/phpmyadmin.conf

Fügen Sie die folgende Konfiguration in die Datei ein und speichern Sie sie.

# phpMyAdmin Standard-Apache-Konfiguration  
  
Alias /phpmyadmin /usr/share/phpmyadmin  
  
  
 Options FollowSymLinks  
 DirectoryIndex index.php  
  
   
 AddType application/x-httpd-php .php  
  
 php_flag magic_quotes_gpc Off  
 php_flag track_vars On  
 php_flag register_globals Off  
 php_value include_path .  
   
  
  
  
# Autorisierung für die Einrichtung  
  
   
 AuthType Basic  
 AuthName "phpMyAdmin Setup"  
 AuthUserFile /etc/phpmyadmin/htpasswd.setup  
   
 Require valid-user  
  
  
# Verweigern Sie den Webzugriff auf Verzeichnisse, die dies nicht benötigen  
  
 Order Deny,Allow  
 Deny from All  
  
  
 Order Deny,Allow  
 Deny from All  

Aktivieren Sie die Konfiguration und starten Sie Apache neu.

a2enconf phpmyadmin  
systemctl restart apache2

Im nächsten Schritt werden wir den PHPMyAdmin-Konfigurationsspeicher (Datenbank) konfigurieren.

Melden Sie sich bei MariaDB als Root-Benutzer an:

mysql -u root -p

Erstellen Sie in der MariaDB-Shell eine neue Datenbank für PHPMyAdmin:

MariaDB [(none)]> CREATE DATABASE phpmyadmin;

Erstellen Sie dann einen neuen Benutzer:

MariaDB [(none)]> CREATE USER 'pma'@'localhost' IDENTIFIED BY 'mypassword';

Ersetzen Sie das Wort mypassword durch ein sicheres Passwort Ihrer Wahl in den obigen und folgenden Befehlen, verwenden Sie dasselbe Passwort beide Male. Gewähren Sie dem Benutzer dann Zugriff auf diese Datenbank und laden Sie die Datenbankberechtigungen neu.

MariaDB [(none)]> GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;  
MariaDB [(none)]> FLUSH PRIVILEGES;  
MariaDB [(none)]> EXIT;

Laden Sie schließlich die SQL-Tabellen in die Datenbank:

mysql -u root -p phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sql

Geben Sie das MariaDB-Root-Passwort auf Anfrage ein.

Alles, was wir jetzt noch tun müssen, ist, die PHPMyAdmin-Benutzerdaten im Konfigurationsdatei festzulegen. Öffnen Sie die Datei erneut im Nano-Editor:

nano /usr/share/phpmyadmin/config.inc.php

Scrollen Sie nach unten, bis Sie die folgenden Zeilen sehen, und bearbeiten Sie sie:

/* Benutzer, der mit dem Speicher arbeitet */  
$cfg['Servers'][$i]['controlhost'] = 'localhost';  
$cfg['Servers'][$i]['controlport'] = '';  
$cfg['Servers'][$i]['controluser'] = 'pma';  
$cfg['Servers'][$i]['controlpass'] = 'mypassword';  
  
/* Speicher-Datenbank und -Tabellen */  
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';  
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';  
$cfg['Servers'][$i]['relation'] = 'pma__relation';  
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';  
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';  
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';  
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';  
$cfg['Servers'][$i]['history'] = 'pma__history';  
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';  
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';  
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';  
$cfg['Servers'][$i]['recent'] = 'pma__recent';  
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';  
$cfg['Servers'][$i]['users'] = 'pma__users';  
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';  
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';  
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';  
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';  
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';  
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

Ich habe die Zeilen rot markiert, die ich bearbeitet habe. Ersetzen Sie mypassword durch das Passwort, das Sie für den PHPMyAdmin-Benutzer gewählt haben. Beachten Sie, dass die // vor den Zeilen ebenfalls entfernt wurden!

19 Installieren Sie RoundCube Webmail (optional)

In diesem Kapitel werden wir den RoundCube-Webmail-Client installieren. Zuerst müssen wir die Datenbank für Roundcube manuell erstellen, da es derzeit ein Problem im RoundCube-Debian-Installer gibt, das dazu führt, dass die Datenbank nicht automatisch erstellt wird. Führen Sie diesen Befehl aus, um die Datenbank zu erstellen:

echo "CREATE DATABASE roundcube;" | mysql --defaults-file=/etc/mysql/debian.cnf

Installieren Sie dann RoundCube mit diesem Befehl:

apt-get install roundcube roundcube-core roundcube-mysql roundcube-plugins

Der Installer wird nach folgenden Fragen fragen:

Datenbank für Roundcube mit dbconfig.common konfigurieren? <-- ja  
MySQL-Anwendungspasswort für Roundcube: <-- drücken Sie die Eingabetaste

Bearbeiten Sie die RoundCube /etc/roundcube/config.inc.php Datei und passen Sie einige Einstellungen an:

nano /etc/roundcube/config.inc.php

Setzen Sie den default_host auf localhost und den smtp_server.

$config['default_host'] = 'localhost';  
$config['smtp_server'] = 'localhost';  
$config['smtp_port']  = 25;

Bearbeiten Sie dann die Apache-RoundCube-Konfigurationsdatei /etc/apache2/conf-enabled/roundcube.conf:

nano /etc/apache2/conf-enabled/roundcube.conf

Und fügen Sie eine Aliaszeile für den Apache /webmail-Alias und eine für /roundcube hinzu, Sie können die Zeile direkt am Anfang der Datei hinzufügen. HINWEIS: Verwenden Sie nicht /mail als Alias, da das ISPConfig-E-Mail-Modul sonst nicht mehr funktioniert!

Alias /roundcube /var/lib/roundcube  
Alias /webmail /var/lib/roundcube

Laden Sie dann Apache neu:

systemctl reload apache2

Jetzt können Sie RoundCube wie folgt aufrufen:

http://192.168.0.100/webmail
http://www.example.com/webmail
http://server1.example.com:8080/webmail (nachdem Sie ISPConfig installiert haben, siehe das nächste Kapitel)

Es gibt einige Plugins, um RoundCube Webmail mit ISPConfig zu integrieren, schauen Sie hier für die Installationsanweisungen des ISPConfig RoundCube-Plugins.

20 Laden Sie ISPConfig 3 herunter

20 Laden Sie die stabile Version von ISPConfig herunter (empfohlen)

Um ISPConfig 3 aus der neuesten veröffentlichten Version zu installieren, tun Sie dies:

cd /tmp  
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz  
tar xfz ISPConfig-3-stable.tar.gz  
cd ispconfig3_install/install/

21 Installieren Sie ISPConfig

Der nächste Schritt besteht darin, den ISPConfig-Installer auszuführen.

php -q install.php

Dies startet den ISPConfig 3-Installer. Der Installer konfiguriert alle Dienste wie Postfix, Dovecot usw. für Sie. Eine manuelle Einrichtung, wie sie für ISPConfig 2 erforderlich war (perfekte Einrichtungsanleitungen), ist nicht notwendig.

# php -q install.php
  
--------------------------------------------------------------------------------  
_____ ___________ _____ __ _ ____  
|_ _/ ___| ___ \ / __ \ / _(_) /__ \  
| | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /  
| | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |  
_| |_\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \  
\___/\____/\_| \____/\___/|_| |_|_| |_\__, | \____/  
__/ |  
|___/  
--------------------------------------------------------------------------------
  
>> Erste Konfiguration
Betriebssystem: Debian 10.0 (Buster) oder kompatibel
Folgendes werden einige Fragen zur primären Konfiguration sein, seien Sie vorsichtig.  
Standardwerte stehen in [Klammern] und können mit  akzeptiert werden.  
Tippen Sie "quit" (ohne Anführungszeichen), um den Installer zu stoppen.
  
Sprache auswählen (en,de) [en]: <-- Eingabetaste drücken
Installationsmodus (standard,experte) [standard]: <-- Eingabetaste drücken
Vollqualifizierter Hostname (FQDN) des Servers, z.B. server1.domain.tld [server1.example.com]: <-- Eingabetaste drücken
MySQL-Server-Hostname [localhost]: <-- Eingabetaste drücken
MySQL-Server-Port [3306]: <-- Eingabetaste drücken
MySQL-Root-Benutzername [root]: <-- Eingabetaste drücken
MySQL-Root-Passwort []: <-- Geben Sie Ihr MySQL-Root-Passwort ein
MySQL-Datenbank zu erstellen [dbispconfig]: <-- Eingabetaste drücken
MySQL-Zeichensatz [utf8]: <-- Eingabetaste drücken
Konfigurieren von Postgrey  
Konfigurieren von Postfix  
Generieren eines 4096-Bit-RSA-Privatschlüssels  
.......................................................................++  
........................................................................................................................................++  
Schreiben eines neuen privaten Schlüssels in 'smtpd.key'  
-----  
Sie werden aufgefordert, Informationen einzugeben, die in Ihre Zertifikatsanforderung aufgenommen werden.  
Was Sie eingeben werden, wird als Distinguished Name oder DN bezeichnet.  
Es gibt einige Felder, die Sie leer lassen können.  
Für einige Felder gibt es einen Standardwert,  
Wenn Sie '.' eingeben, wird das Feld leer gelassen.  
-----  
Land (2-Buchstaben-Code) [AU]: <-- Geben Sie den 2-Buchstaben-Ländercode ein  
Bundesland oder Provinzname (vollständiger Name) [Some-State]: <-- Geben Sie den Namen des Bundeslandes ein  
Ort (z.B. Stadt) []: <-- Geben Sie Ihre Stadt ein  
Organisationsname (z.B. Firma) [Internet Widgits Pty Ltd]: <-- Geben Sie den Namen Ihrer Firma ein oder drücken Sie die Eingabetaste  
Abteilung (z.B. Bereich) []: <-- Eingabetaste drücken  
Allgemeiner Name (z.B. FQDN des Servers oder IHRE Name) []: <-- Geben Sie den Hostnamen des Servers ein, in meinem Fall: server1.example.com  
E-Mail-Adresse []: <-- Eingabetaste drücken  
Konfigurieren von Mailman  
Konfigurieren von Dovecot  
Konfigurieren von Spamassassin  
Konfigurieren von Amavisd  
Konfigurieren von Getmail  
Konfigurieren von BIND  
Konfigurieren von Jailkit  
Konfigurieren von Pureftpd  
Konfigurieren von Apache  
Konfigurieren von vlogger  
[INFO] Dienst Metronome XMPP-Server nicht erkannt  
Konfigurieren der Ubuntu-Firewall  
Konfigurieren von Fail2ban  
[INFO] Dienst OpenVZ nicht erkannt  
Konfigurieren von Apps vhost  
ISPConfig installieren  
ISPConfig-Port [8080]:
Admin-Passwort [admin]:
Möchten Sie eine sichere (SSL) Verbindung zur ISPConfig-Weboberfläche (y,n) [y]: <-- Eingabetaste drücken
Generieren eines RSA-Privatschlüssels, 4096-Bit-lange Modulus  
.......................++  
................................................................................................................................++  
e ist 65537 (0x10001)  
Sie werden aufgefordert, Informationen einzugeben, die in Ihre Zertifikatsanforderung aufgenommen werden.  
Was Sie eingeben werden, wird als Distinguished Name oder DN bezeichnet.  
Es gibt einige Felder, die Sie leer lassen können.  
Für einige Felder gibt es einen Standardwert,  
Wenn Sie '.' eingeben, wird das Feld leer gelassen.  
-----  
Land (2-Buchstaben-Code) [AU]: <-- Geben Sie den 2-Buchstaben-Ländercode ein  
Bundesland oder Provinzname (vollständiger Name) [Some-State]: <-- Geben Sie den Namen des Bundeslandes ein  
Ort (z.B. Stadt) []: <-- Geben Sie Ihre Stadt ein  
Organisationsname (z.B. Firma) [Internet Widgits Pty Ltd]: <-- Geben Sie den Namen Ihrer Firma ein oder drücken Sie die Eingabetaste  
Abteilung (z.B. Bereich) []: <-- Eingabetaste drücken  
Allgemeiner Name (z.B. FQDN des Servers oder IHRE Name) []: <-- Geben Sie den Hostnamen des Servers ein, in meinem Fall: server1.example.com  
E-Mail-Adresse []: <-- Eingabetaste drücken
Bitte geben Sie die folgenden 'zusätzlichen' Attribute ein,  
 die mit Ihrer Zertifikatsanforderung gesendet werden  
Ein Herausforderungs-Passwort []: <-- Eingabetaste drücken  
Ein optionaler Firmenname []: <-- Eingabetaste drücken  
Schreiben des RSA-Schlüssels
  
Konfigurieren von DBServer  
ISPConfig crontab installieren  
kein Crontab für root  
kein Crontab für getmail  
IP-Adressen erkennen  
Dienste neu starten ...  
Installation abgeschlossen.

Der Installer konfiguriert automatisch alle zugrunde liegenden Dienste, sodass keine manuelle Konfiguration erforderlich ist.

Anschließend können Sie auf ISPConfig 3 unter http(s)://server1.example.com:8080/ oder http(s)://192.168.0.100:8080/ zugreifen (http oder https hängt davon ab, was Sie während der Installation gewählt haben). Melden Sie sich mit dem Benutzernamen admin und dem Passwort admin an (Sie sollten das Standardpasswort nach Ihrem ersten Login ändern):

ISPConfig-Anmeldung auf Debian 10

ISPConfig-Dashboard auf Debian 10

Das System ist jetzt bereit zur Nutzung.

21.1 ISPConfig 3 Handbuch

Um zu lernen, wie man ISPConfig 3 verwendet, empfehle ich dringend, das ISPConfig 3 Handbuch herunterzuladen.

Auf mehr als 300 Seiten behandelt es das Konzept hinter ISPConfig (Admin, Reseller, Kunden), erklärt, wie man ISPConfig 3 installiert und aktualisiert, enthält ein Referenzhandbuch für alle Formulare und Formularfelder in ISPConfig zusammen mit Beispielen für gültige Eingaben und bietet Tutorials für die häufigsten Aufgaben in ISPConfig 3. Es beschreibt auch, wie man Ihren Server sicherer macht und enthält am Ende einen Abschnitt zur Fehlersuche.

22 Download des virtuellen Maschinen-Images dieses Tutorials

Dieses Tutorial ist als sofort einsatzbereites virtuelles Maschinen-Image im ovf/ova-Format verfügbar, das mit VMWare und Virtualbox kompatibel ist. Das virtuelle Maschinen-Image verwendet die folgenden Anmeldedaten:

SSH / Shell-Anmeldung

Benutzername: administrator
Passwort: howtoforge

Benutzername: root
Passwort: howtoforge

ISPConfig-Anmeldung

Benutzername: admin
Passwort: admin

MySQL-Anmeldung

Benutzername: root
Passwort: howtoforge

Die IP der VM ist 192.168.0.100, sie kann in der Datei /etc/network/interfaces geändert werden. Bitte ändern Sie alle oben genannten Passwörter, um die virtuelle Maschine zu sichern.

23 Links

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.