Server Setup · 21 min read · Sep 11, 2025

Der perfekte Server - Ubuntu 20.04 mit Apache, PHP, MariaDB, PureFTPD, BIND, Postfix, Dovecot und ISPConfig 3.2

Dieses Tutorial zeigt die Installation eines Ubuntu 20.04 (Focal Fossa) Webhosting-Servers mit Apache 2.4, Postfix, Dovecot, Bind und PureFTPD, um ihn für die Installation von ISPConfig 3.2 vorzubereiten. Das resultierende System wird einen Web-, Mail-, Mailinglisten-, DNS- und FTP-Server bereitstellen.

ISPConfig ist ein Webhosting-Control-Panel, das es Ihnen ermöglicht, die folgenden Dienste über einen Webbrowser zu konfigurieren: Apache oder Nginx Webserver, Postfix Mailserver, Courier oder Dovecot IMAP/POP3-Server, MariaDB als MySQL-Ersatz, BIND oder MyDNS Nameserver, PureFTPd, SpamAssassin, ClamAV und viele mehr. Dieses Setup umfasst die Installation von Apache (anstatt Nginx), BIND (anstatt MyDNS) und Dovecot (anstatt Courier).

Es gibt zwei Möglichkeiten, ISPConfig zu installieren. Sie können entweder die manuellen Installationsanweisungen unten verwenden oder den ISPConfig-Auto-Installer verwenden, der ISPConfig automatisch in wenigen Minuten installiert. Wir empfehlen die Verwendung des Auto-Installers, der auch Ubuntu 22.04 unterstützt. Siehe ISPConfig automatisierte Installation für Anweisungen, wie Sie ISPConfig automatisch installieren.

1. Vorbemerkung

In diesem Tutorial verwende ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.0.100 und dem Gateway 192.168.0.1. Diese Einstellungen können bei Ihnen abweichen, daher müssen Sie sie gegebenenfalls anpassen. Bevor Sie fortfahren, benötigen Sie eine grundlegende Minimalinstallation von Ubuntu 20.04, wie im Tutorial erklärt.

Die Befehle in diesem Tutorial müssen mit Root-Rechten ausgeführt werden. Um zu vermeiden, dass Sie vor jedem Befehl sudo hinzufügen, müssen Sie Root-Benutzer werden, indem Sie Folgendes ausführen:

sudo -s

bevor Sie fortfahren.

2. Bearbeiten Sie /etc/apt/sources.list und aktualisieren Sie Ihre Linux-Installation

Bearbeiten Sie /etc/apt/sources.list. Kommentieren Sie die Installations-CD in der Datei aus oder entfernen Sie sie und stellen Sie sicher, dass die Universe- und Multiverse-Repositories aktiviert sind. Es sollte danach so aussehen:

nano /etc/apt/sources.list
# Siehe http://help.ubuntu.com/community/UpgradeNotes für Informationen zur Aktualisierung auf
# neuere Versionen der Distribution.
deb http://de.archive.ubuntu.com/ubuntu focal main restricted
# deb-src http://de.archive.ubuntu.com/ubuntu focal main restricted

## Wichtige Fehlerbehebungsupdates, die nach der endgültigen Veröffentlichung der
## Distribution erstellt wurden.
deb http://de.archive.ubuntu.com/ubuntu focal-updates main restricted
# deb-src http://de.archive.ubuntu.com/ubuntu focal-updates main restricted

## N.B. Software aus diesem Repository wird VOLLSTÄNDIG VON DEM Ubuntu
## Team UNTERSTÜTZT. Bitte beachten Sie auch, dass Software im Universe KEINE
## Überprüfung oder Updates vom Ubuntu-Sicherheitsteam erhält.
deb http://de.archive.ubuntu.com/ubuntu focal universe
# deb-src http://de.archive.ubuntu.com/ubuntu focal universe
deb http://de.archive.ubuntu.com/ubuntu focal-updates universe
# deb-src http://de.archive.ubuntu.com/ubuntu focal-updates universe

## N.B. Software aus diesem Repository wird VOLLSTÄNDIG VON DEM Ubuntu
## Team UNTERSTÜTZT und ist möglicherweise nicht unter einer freien Lizenz. Bitte überzeugen Sie sich selbst von
## Ihren Rechten zur Nutzung der Software. Bitte beachten Sie auch, dass Software im
## Multiverse KEINE Überprüfung oder Updates vom Ubuntu
## Sicherheitsteam erhält.
deb http://de.archive.ubuntu.com/ubuntu focal multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu focal multiverse
deb http://de.archive.ubuntu.com/ubuntu focal-updates multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu focal-updates multiverse

## N.B. Software aus diesem Repository wurde möglicherweise nicht so
## umfassend getestet wie die in der Hauptversion enthaltene, obwohl sie
## neuere Versionen einiger Anwendungen enthält, die nützliche Funktionen bieten.
## Bitte beachten Sie auch, dass Software in Backports KEINE Überprüfung
## oder Updates vom Ubuntu-Sicherheitsteam erhält.
deb http://de.archive.ubuntu.com/ubuntu focal-backports main restricted universe multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu focal-backports main restricted universe multiverse

## Kommentieren Sie die folgenden beiden Zeilen aus, um Software aus Canonicals
## 'Partner'-Repository hinzuzufügen.
## Diese Software ist kein Teil von Ubuntu, wird jedoch von Canonical und den
## jeweiligen Anbietern als Dienst für Ubuntu-Benutzer angeboten.
# deb http://archive.canonical.com/ubuntu focal partner
# deb-src http://archive.canonical.com/ubuntu focal partner

deb http://de.archive.ubuntu.com/ubuntu focal-security main restricted
# deb-src http://de.archive.ubuntu.com/ubuntu focal-security main restricted
deb http://de.archive.ubuntu.com/ubuntu focal-security universe
# deb-src http://de.archive.ubuntu.com/ubuntu focal-security universe
deb http://de.archive.ubuntu.com/ubuntu focal-security multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu focal-security multiverse

Führen Sie dann aus

apt-get update

um die apt-Paketdatenbank zu aktualisieren und

apt-get upgrade

um die neuesten Updates zu installieren (sofern vorhanden). Wenn Sie sehen, dass ein neuer Kernel als Teil der Updates installiert wird, sollten Sie das System danach neu starten:

reboot

3. Ä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 Folgendes:

dpkg-reconfigure dash

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

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

4. Deaktivieren Sie AppArmor

AppArmor ist eine Sicherheitserweiterung (ähnlich wie SELinux), die erweiterte Sicherheit bieten soll. Meiner Meinung nach benötigen Sie es nicht, um ein sicheres System zu konfigurieren, und es verursacht normalerweise mehr Probleme als Vorteile (denken Sie daran, nachdem Sie eine Woche mit der Fehlersuche verbracht haben, weil ein Dienst nicht wie erwartet funktionierte, und dann stellen Sie fest, dass alles in Ordnung war, nur AppArmor das Problem verursachte). Daher deaktiviere ich es (das ist ein Muss, wenn Sie später ISPConfig installieren möchten).

Wir können es so deaktivieren:

service apparmor stop  
update-rc.d -f apparmor remove   
apt-get remove apparmor apparmor-utils

5. 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, wenn Sie einen physischen Server betreiben. Falls Sie einen virtuellen Server betreiben, sollten Sie diesen Schritt überspringen. Führen Sie einfach aus

apt-get -y install ntp

und Ihre Systemzeit wird immer synchronisiert sein.

6. Installieren Sie Postfix, Dovecot, MariaDB, rkhunter und binutils

Um Postfix zu installieren, müssen wir sicherstellen, dass sendmail nicht installiert und aktiv ist. Um sendmail zu stoppen und zu entfernen, führen Sie diesen Befehl aus:

service sendmail stop; update-rc.d -f sendmail remove

Die Fehlermeldung:

Failed to stop sendmail.service: Unit sendmail.service not loaded.

ist in Ordnung, es bedeutet nur, dass sendmail nicht installiert war, also gab es nichts zu entfernen.

Jetzt können wir Postfix, Dovecot, MariaDB (als MySQL-Ersatz), 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 sudo patch

Sie werden nach den folgenden Fragen gefragt:

Allgemeiner Typ der Mailkonfiguration: <-- Internet Site  
System-Mail-Name: <-- server1.example.com

Es ist wichtig, dass Sie einen Subdomainnamen als „System-Mail-Name“ verwenden, wie server1.example.com oder server1.ihredomain.com und nicht eine Domain, die Sie später als E-Mail-Domain verwenden möchten (z. B. ihredomain.tld).

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

nano /etc/postfix/master.cf

Kommentieren Sie die Abschnitte für Einreichung und smtps wie folgt aus - fügen Sie die Zeile -o smtpd_client_restrictions=permit_sasl_authenticated,reject zu beiden Abschnitten hinzu und lassen Sie alles danach auskommentiert:

[...]
submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes  
  -o smtpd_tls_auth_only=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=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
smtps     inet  n       -       y       -       -       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=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
[...]

HINWEIS: Die Leerzeichen vor den „-o …. “-Zeilen sind wichtig!

Starten Sie Postfix danach neu:

service postfix restart

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:

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

Jetzt setzen wir ein Root-Passwort in MariaDB. Führen Sie aus:

mysql_secure_installation

Sie werden nach diesen Fragen gefragt:

Geben Sie das aktuelle Passwort für root ein (drücken Sie Enter für keines): <-- drücken Sie Enter  
Root-Passwort festlegen? [Y/n] <-- y  
Neues Passwort: <-- Geben Sie hier das neue MariaDB-Root-Passwort ein  
Neues Passwort erneut eingeben: <-- Wiederholen Sie das Passwort  
Anonyme Benutzer entfernen? [Y/n] <-- y  
Root-Login aus der Ferne verbieten? [Y/n] <-- y  
Privilegientabellen jetzt neu laden? [Y/n] <-- y

Setzen Sie die Passwortauthentifizierungsmethode in MariaDB auf nativ, 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 das MYSQL / MariaDB-Root-Passwort dort zweimal in den Zeilen, die mit 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“. Ersetzen Sie das Wort „howtoforge“ durch das Passwort, das Sie für den MySQL-Root-Benutzer mit dem Befehl mysql_secure_installation festgelegt haben.

# 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

Ö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 /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  
service mariadb restart

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

netstat -tap | grep mysql

Die Ausgabe sollte so aussehen:

root@server1:~# netstat -tap | grep mysql  
tcp6       0      0 [::]:mysql              [::]:*                  LISTEN      51836/mysqld  
root@server1:~#

7. Installieren Sie Amavisd-new, SpamAssassin und Clamav

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

apt-get -y install amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract 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 postgrey

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

service spamassassin stop  
update-rc.d -f spamassassin remove

Um ClamAV zu starten, verwenden Sie:

freshclam  
service clamav-daemon start

Die folgende Fehlermeldung kann beim ersten Ausführen von freshclam ignoriert werden.

ERROR: /var/log/clamav/freshclam.log is locked by another process  
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).

8. Installieren Sie Apache, PHP, phpMyAdmin, FCGI, SuExec, Pear

Apache 2.4, PHP 7.4, phpMyAdmin, FCGI, suExec und Pear können wie folgt installiert werden:

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

Sie werden die folgende Frage sehen:

Webserver automatisch neu konfigurieren: <-- apache2

PHPMyAdmin in Apache2 aktivieren


Konfigurieren Sie die Datenbank für phpmyadmin mit dbconfig-common? <-- Ja

MySQL-Anwendungspasswort für phpmyadmin: <-- Drücken Sie Enter

![MySQL-Anwendungspasswort](/files/d6d79cfd-1efd-46ca-8155-f42a53d02409.png)

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 cgi alias proxy_fcgi

a2enmod dav_fs dav auth_digest headers


Um sicherzustellen, dass der Server nicht über die HTTPOXY-Sicherheitsanfälligkeit angegriffen werden kann, werde ich den HTTP_PROXY-Header in Apache global deaktivieren. Erstellen Sie eine neue httpoxy.conf-Datei mit nano:

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


Fügen Sie diesen Inhalt in die Datei ein:
RequestHeader unset Proxy early

Aktivieren Sie die Konfigurationsdatei, indem Sie Folgendes ausführen:

a2enconf httpoxy


Starten Sie Apache danach neu:

service apache2 restart


Wenn Sie Ruby-Dateien mit der Erweiterung .rb auf Ihren über ISPConfig erstellten Websites hosten möchten, müssen Sie die Zeile application/x-ruby rb in /etc/mime.types auskommentieren:

nano /etc/mime.types

[…] #application/x-ruby rb […]


(Dies ist nur für .rb-Dateien erforderlich; Ruby-Dateien mit der Erweiterung .rbx funktionieren sofort.)

Starten Sie Apache danach neu:

service apache2 restart


## 9. Installieren Sie Let's Encrypt

ISPConfig 3.2 hat eine integrierte Unterstützung für die kostenlose SSL-Zertifizierungsstelle Let's Encrypt. Die Let's Encrypt-Funktion ermöglicht es Ihnen, kostenlose SSL-Zertifikate für Ihre Website in ISPConfig zu erstellen.

Jetzt werden wir die Unterstützung für Let's Encrypt hinzufügen.

apt-get install certbot


## 10. 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 -y install mailman


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

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

Die Fehlermeldung '*Job für mailman.service fehlgeschlagen, da der Steuerungsprozess mit* Fehler *code* beendet wurde.' kann vorerst ignoriert werden.

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: <-- E-Mail-Adresse des Administrators, z. B. [email protected]  
Anfängliches Mailman-Passwort: <-- Administrationspasswort 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 danach aus

newaliases


und starten Sie Postfix neu:

service postfix restart


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

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


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

Unter http:///pipermail finden Sie die Archive der Mailingliste.

Aktivieren Sie die Konfiguration mit:

a2enconf mailman


Starten Sie Apache danach neu:

service apache2 restart


Starten Sie dann den Mailman-Daemon:

service mailman start


## 11. Installieren Sie PureFTPd und Quota

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

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


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 zu verwenden, 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 Ihren Bundesland- oder Provinznamen ein.  
Ortsname (z. B. Stadt) []: <-- Geben Sie Ihre Stadt ein.  
Organisationsname (z. B. Firma) [Internet Widgits Pty Ltd]: <-- Geben Sie Ihren Organisationsnamen ein (z. B. den Namen Ihres Unternehmens).  
Abteilung (z. B. Abschnitt) []: <-- Geben Sie Ihren Abteilungsnamen ein (z. B. „IT-Abteilung“).  
Allgemeiner Name (z. B. IHR 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:

service pure-ftpd-mysql restart


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

nano /etc/fstab

/dev/mapper/server1–vg-root / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
/dev/mapper/server1–vg-swap_1 none swap sw 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0


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

mount -o remount /

quotacheck -avugm
quotaon -avug


Was die folgende Ausgabe zeigt:

root@server1:/tmp# quotacheck -avugm
quotacheck: Scanning /dev/mapper/server1–vg-root [/] done
quotacheck: Cannot stat old user quota file //quota.user: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old group quota file //quota.group: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old user quota file //quota.user: No such file or directory. Usage will not be subtracted.
quotacheck: Cannot stat old group quota file //quota.group: No such file or directory. Usage will not be subtracted.
quotacheck: Checked 13602 directories and 96597 files
quotacheck: Old file not found.
quotacheck: Old file not found.
root@server1:/tmp# quotaon -avug
/dev/mapper/server1–vg-root [/]: group quotas turned on
/dev/mapper/server1–vg-root [/]: user quotas turned on


## 12. Installieren Sie den BIND DNS-Server

BIND kann wie folgt installiert werden:

apt-get -y install bind9 dnsutils haveged


Aktivieren und starten Sie den haveged-Daemon:

systemctl enable haveged
systemctl start haveged


## 13. Installieren Sie Vlogger, Webalizer, AWStats und GoAccess

Vlogger, Webalizer und AWStats können wie folgt installiert werden:

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


Installation der neuesten 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 -
sudo apt-get update
sudo apt-get install goaccess


Ö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

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


## 14. Installieren Sie Jailkit

Jailkit wird verwendet, um Shell-Benutzer und Cronjobs in ISPConfig zu sperren. Installieren Sie Jailkit mit apt:

apt-get -y install jailkit


## 15. Installieren Sie fail2ban und UFW

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

apt-get -y install fail2ban


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

nano /etc/fail2ban/jail.local

[pure-ftpd] enabled = true port = ftp filter = pure-ftpd logpath = /var/log/syslog maxretry = 3

[dovecot] enabled = true filter = dovecot action = iptables-multiport[name=dovecot-pop3imap, port=”pop3,pop3s,imap,imaps”, protocol=tcp] logpath = /var/log/mail.log maxretry = 5

[postfix] enabled = true port = smtp filter = postfix logpath = /var/log/mail.log maxretry = 3


Starten Sie fail2ban danach neu:

service fail2ban restart


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

apt-get install ufw


## 16. Installieren Sie Roundcube Webmail

Um Roundcube Webmail zu installieren, führen Sie aus:

apt-get -y install roundcube roundcube-core roundcube-mysql roundcube-plugins roundcube-plugins-extra javascript-common libjs-jquery-mousewheel php-net-sieve tinymce


Der Installer könnte die folgenden Fragen stellen:

Datenbank für Roundcube mit dbconfig-common konfigurieren? <– Ja
MySQL-Anwendungspasswort für Roundcube: <– Drücken Sie Enter


Machen Sie sich keine Sorgen, wenn Sie diese Fragen nicht erhalten und eine Warnung über das ucf-Skript sehen, das ist in Ordnung.

Die ucf-Warnung, die Sie in der Shell erhalten, kann ignoriert werden, sie hat keine negativen Auswirkungen auf die Installation.

Bearbeiten Sie dann die Apache-Konfigurationsdatei von RoundCube.

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


und entfernen Sie das # vor der Alias-Zeile, fügen Sie dann die zweite Alias-Zeile für /webmail hinzu und fügen Sie die Zeile "AddType application/x-httpd-php .php" direkt nach der Zeile "" hinzu:

Alias /roundcube /var/lib/roundcube
Alias /webmail /var/lib/roundcube […]

AddType application/x-httpd-php .php [...] ``` Und starten Sie Apache neu ``` service apache2 restart ``` Bearbeiten Sie dann die RoundCube config.inc.php-Konfigurationsdatei: ``` nano /etc/roundcube/config.inc.php ``` und ändern Sie den Standardhost in localhost: ``` $config['default_host'] = 'localhost'; ``` und den SMTP-Server auf: ``` $config['smtp_server'] = 'localhost'; ``` und ``` $config['smtp_port']  = 25; ``` Dies verhindert, dass Roundcube das Eingabefeld für den Servernamen im Anmeldeformular anzeigt. ## 17. Installieren Sie ISPConfig 3.2 Wir werden hier die stabile Version von ISPConfig 3.2 verwenden. ``` cd /tmp wget -O ispconfig.tar.gz https://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz tar xfz ispconfig.tar.gz cd ispconfig3*/install/ ``` Der nächste Schritt ist, Folgendes auszuführen: ``` php -q install.php ``` Dies startet den ISPConfig 3-Installer. Der Installer konfiguriert alle Dienste wie Postfix, Dovecot usw. für Sie. ``` # php -q install.php ``` ``` -------------------------------------------------------------------------------- _____ ___________ _____ __ _ ____ |_ _/ ___| ___ \ / __ \ / _(_) /__ \ | | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ / | | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ | _| |_\/__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \ \___/\____/\_| \____/\___/|_| |_|_| |_\__, | \____/ __/ | |___/ -------------------------------------------------------------------------------- ``` ``` >> Erste Konfiguration ``` ``` Betriebssystem: Ubuntu 20.04.1 LTS (Focal Fossa) ``` ``` 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. ``` ``` Wählen Sie die Sprache (en,de) [en]: <-- Drücken Sie Enter ``` ``` Installationsmodus (standard,experte) [standard]: <-- Drücken Sie Enter ``` ``` Vollqualifizierter Hostname (FQDN) des Servers, z. B. server1.domain.tld [server1.canomi.com]: <-- Drücken Sie Enter ``` ``` MySQL-Server-Hostname [localhost]: <-- Drücken Sie Enter ``` ``` MySQL-Server-Port [3306]: <-- Drücken Sie Enter ``` ``` MySQL-Root-Benutzername [root]: <-- Drücken Sie Enter ``` ``` MySQL-Root-Passwort []: <-- Geben Sie Ihr MySQL-Root-Passwort ein ``` ``` MySQL-Datenbank zu erstellen [dbispconfig]: <-- Drücken Sie Enter ``` ``` MySQL-Zeichensatz [utf8]: <-- Drücken Sie Enter ``` ``` Konfiguration von Postgrey Konfiguration von Postfix Generierung 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 ziemlich viele Felder, aber Sie können einige leer lassen 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 Ortsname (z. B. Stadt) []: <-- Geben Sie Ihre Stadt ein Organisationsname (z. B. Firma) [Internet Widgits Pty Ltd]: <-- Geben Sie den Firmennamen ein oder drücken Sie Enter Abteilung (z. B. Abschnitt) []: <-- Drücken Sie Enter Allgemeiner Name (z. B. Server-FQDN oder IHR Name) []: <-- Geben Sie den Hostnamen des Servers ein, in meinem Fall: server1.example.com E-Mail-Adresse []: <-- Drücken Sie Enter Konfiguration von Mailman Konfiguration von Dovecot Konfiguration von Spamassassin Konfiguration von Amavisd Konfiguration von Getmail Konfiguration von BIND Konfiguration von Jailkit Konfiguration von Pureftpd Konfiguration von Apache Konfiguration von Vlogger Konfiguration des Metronome XMPP-Servers Schreiben eines neuen privaten Schlüssels in 'localhost.key' ----- Land (2-Buchstaben-Code) [AU]: <-- Geben Sie den 2-Buchstaben-Ländercode ein Ortsname (z. B. Stadt) []: <-- Geben Sie Ihre Stadt ein Organisationsname (z. B. Firma) [Internet Widgits Pty Ltd]: <-- Geben Sie den Firmennamen ein oder drücken Sie Enter Abteilung (z. B. Abschnitt) []: <-- Drücken Sie Enter Allgemeiner Name (z. B. Server-FQDN oder IHR Name) [server1.canomi.com]: <-- Geben Sie den Hostnamen des Servers ein, in meinem Fall: server1.example.com E-Mail-Adresse []: <-- Drücken Sie Enter ``` ``` Konfiguration der Ubuntu-Firewall Konfiguration von Fail2ban [INFO] Dienst OpenVZ nicht erkannt Konfiguration von Apps vhost Installation von ISPConfig ISPConfig-Port [8080]: ``` ``` Admin-Passwort [admin]: ``` ``` Möchten Sie eine sichere (SSL) Verbindung zur ISPConfig-Weboberfläche (y,n) [y]: <-- Drücken Sie Enter ``` ``` Generierung 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 ziemlich viele Felder, aber Sie können einige leer lassen 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 Ortsname (z. B. Stadt) []: <-- Geben Sie Ihre Stadt ein Organisationsname (z. B. Firma) [Internet Widgits Pty Ltd]: <-- Geben Sie den Firmennamen ein oder drücken Sie Enter Abteilung (z. B. Abschnitt) []: <-- Drücken Sie Enter Allgemeiner Name (z. B. Server-FQDN oder IHR Name) []: <-- Geben Sie den Hostnamen des Servers ein, in meinem Fall: server1.example.com E-Mail-Adresse []: <-- Drücken Sie Enter ``` ``` Bitte geben Sie die folgenden 'zusätzlichen' Attribute ein, die mit Ihrer Zertifikatsanforderung gesendet werden Ein Herausforderungs-Passwort []: <-- Drücken Sie Enter Ein optionaler Firmenname []: <-- Drücken Sie Enter Schreiben des RSA-Schlüssels ``` ``` Symlink ISPConfig LE SSL-Zertifikate zu Postfix? (y,n) [y]:  <-- Drücken Sie Enter ``` ``` Symlink ISPConfig LE SSL-Zertifikate zu pureftpd? Das Erstellen der dhparam-Datei dauert einige Zeit. (y,n) [y]:  <-- Drücken Sie Enter ``` ``` Generierung von DH-Parametern, 2048-Bit-lange sichere Primzahl, Generator 2 Das wird lange dauern .............................................................+.........................................................................................................................................................................+................... ``` ``` Konfiguration des DBServers Installation des ISPConfig-Crontabs 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. Danach 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 Ubuntu 18.04 LTS](/files/24a359d6-6ef5-41f5-934b-3c7d69d55dcf.png) ![ISPConfig 3.2 Dashboard](/files/0aadd86c-90dd-42d7-9206-15914f387fbb.png) Das System ist jetzt bereit zur Verwendung. ## 18. Download des virtuellen Maschinenimages dieses Tutorials Dieses Tutorial ist als sofort einsatzbereites virtuelles Maschinenimage im ovf/ova-Format verfügbar, das mit VMWare und Virtualbox kompatibel ist. Das virtuelle Maschinenimage verwendet die folgenden Anmeldedaten: SSH / Shell-Anmeldung Benutzername: administrator Passwort: howtoforge Dieser Benutzer hat Sudo-Rechte. ISPConfig-Anmeldung Benutzername: admin Passwort: howtoforge MySQL-Anmeldung Benutzername: root Passwort: howtoforge Die IP der VM ist 192.168.0.100, sie kann in der Datei */etc/netplan/01-netcfg.yaml* geändert werden. Bitte ändern Sie alle oben genannten Passwörter, um die virtuelle Maschine zu sichern. ## 19. Links - Ubuntu: http://www.ubuntu.com/ - ISPConfig: http://www.ispconfig.org/
Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.