Der perfekte Server – Ubuntu 20.04 mit Apache, PHP, MariaDB, PureFTPD, BIND, Postfix, Dovecot und ISPConfig 3.2 (Beta)

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, mit dem Sie die folgenden Dienste über einen Webbrowser konfigurieren können: 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 (anstelle von Nginx), BIND (anstelle von MyDNS) und Dovecot (anstelle von Courier).

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 sich für Sie unterscheiden, so dass Sie sie gegebenenfalls ersetzen müssen. Bevor Sie weitermachen, 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 das Hinzufügen von sudo vor jedem Befehl zu vermeiden, müssen Sie durch Ausführen root-Benutzer werden:

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 aus oder entfernen Sie sie aus der Datei und stellen Sie sicher, dass das Universum und die Multiverse-Repositorys aktiviert sind. Danach sollte es so aussehen:

nano /etc/apt/sources.list
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://de.archive.ubuntu.com/ubuntu focal main restricted
# deb-src http://de.archive.ubuntu.com/ubuntu focal main restricted

## Major bug fix updates produced after the final release of the
## distribution.
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 from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
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 from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
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 from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
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

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# 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

apt-get update

um die Datenbank des apt-Pakets zu aktualisieren und

apt-get upgrade

um die neuesten Updates zu installieren (falls es welche gibt). Wenn Sie sehen, dass ein neuer Kernel als Teil der Aktualisierungen 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. Deshalb machen wir dies:

dpkg-reconfigure dash

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

Wenn Sie dies nicht tun, wird die Installation von ISPConfig fehlschlagen.

4. AppArmor deaktivieren

AppArmor ist eine Sicherheitserweiterung (ähnlich wie SELinux), die erweiterte Sicherheit bieten soll. Meiner Meinung nach brauchen Sie sie nicht, um ein sicheres System zu konfigurieren, und sie verursacht normalerweise mehr Probleme als Vorteile (denken Sie daran, nachdem Sie eine Woche lang Fehler behoben haben, weil ein Dienst nicht wie erwartet funktionierte, und dann stellen Sie fest, dass alles in Ordnung war, nur AppArmor hat das Problem verursacht). Daher deaktiviere ich es (dies ist ein Muss, wenn Sie ISPConfig später installieren wollen).

Wir können ihn so deaktivieren:

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

5. Synchronisieren der Systemuhr

Es ist eine gute Idee, die Systemuhr mit einem NTP-Server (Network Time Protocol) ü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

apt-get -y install ntp

und Ihre Systemzeit wird immer synchronisiert sein. Es ist empfehlenswert ggf. auf einen NTP-Pool Server umzustellen.

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

Um Postfix zu installieren, müssen wir sicherstellen, dass sendmail nicht installiert ist und läuft. 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 wurde, es gab also 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

Ihnen werden die folgenden Fragen gestellt:

General type of mail configuration: <-- Internet Site
System mail name: <-- server1.example.com

Es ist wichtig, dass Sie als „System-Mail-Name“ eine Subdomain wie server1.example.com oder server1.yourdomain.com verwenden und nicht eine Domain, die Sie später als E-Mail-Domain (z.B. yourdomain.tld) verwenden wollen.

Als nächstes öffnen Sie die TLS/SSL- und Submissions-Ports in Postfix:

nano /etc/postfix/master.cf

Entkommentieren Sie die Abschnitte submission und smtps wie folgt – fügen Sie die Zeile -o smtpd_client_restrictions=permit_sasl_authenticated hinzu, lehnen Sie beide Abschnitte ab und lassen Sie alles danach kommentiert:

[...]
submission inet n       -       y       -       -       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=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
[...]

ANMERKUNG: Die Whitespaces vor dem „-o …. “ Zeilen sind wichtig!

Starten Sie Postfix danach neu:

service postfix restart

Wir wollen, dass MySQL auf allen Schnittstellen lauscht, nicht nur auf localhost. Deshalb editieren 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
[...]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address           = 127.0.0.1

[…]

Nun setzen wir ein Root-Passwort in MariaDB. Ausführen:

mysql_secure_installation

Diese Fragen werden Ihnen gestellt:

Enter current password for root (enter for none): <-- press enter
Set root password? [Y/n] <-- y
New password: <-- Enter the new MariaDB root password here
Re-enter new password: <-- Repeat the password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

Setzen Sie die Passwort-Authentifizierungsmethode 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 dort das MYSQL / MariaDB Root-Passwort zweimal in den Zeilen, die mit password beginnen.

nano /etc/mysql/debian.cnf

Das MySQL-Root-Passwort, das hinzugefügt werden muss, wird in read gezeigt, in diesem Beispiel ist 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.

# Automatically generated for Debian scripts. DO NOT TOUCH!
[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

installieren und diese Zeilen am Ende der Datei hinzufügen.

mysql soft nofile 65535
mysql hard nofile 65535

Als nächstes erstellen Sie ein neues Verzeichnis /etc/systemd/system/mysql.service.d/ mit dem Befehl mkdir.

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

und fügen Sie darin eine neue Datei 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

Prüfen Sie nun, ob das Netzwerk aktiviert ist. Führen Sie aus.

netstat -tap | grep mysql

Die Ausgabe sollte wie folgt aussehen:

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

7. Installieren Sie Amavisd-neu, SpamAssassin und Clamav

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

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, so dass wir SpamAssassin stoppen können, um etwas RAM freizugeben:

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

Zum Starten von ClamAV verwenden Sie:

freshclam
service clamav-daemon start

Der folgende Fehler kann bei der ersten Ausführung 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 und mcrypt

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

Sie werden die folgende Frage sehen:

Web server to reconfigure automatically: <-- apache2

Aktivieren von PHPMyAdmin in Apache2

Configure database for phpmyadmin with dbconfig-common? <-- Yes
DBConfig Allgemein
MySQL application password for phpmyadmin: <-- Press enter

MySQL-Anwendungskennwort

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 wollen) 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-Schwachstelle 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:

<IfModule mod_headers.c>
    RequestHeader unset Proxy early
</IfModule>

Aktivieren Sie die Konfigurationsdatei durch Ausführen:

a2enconf httpoxy

Starten Sie danach Apache neu:

service apache2 restart

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

nano /etc/mime.types
[...]
#application/x-ruby                             rb
[...]

(Dies wird nur für .rb-Dateien benötigt; Ruby-Dateien mit der Endung .rbx funktionieren out of the box).

Starten Sie danach Apache neu:

service apache2 restart

9. Installieren Sie Let’s Encrypt

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

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

apt-get install certbot

10. Mailman installieren

Mit ISPConfig können Sie Mailman-Mailinglisten verwalten (erstellen/ändern/löschen). Wenn Sie von dieser Funktion Gebrauch machen wollen, installieren Sie Mailman wie folgt:

apt-get -y install mailman

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

Zu unterstützende Sprachen: <– en (Englisch)
Fehlende Standortliste <– Ok

Der Fehler ‚Job für mailman.service schlug fehl, weil der Steuerungsprozess mit Fehlercode beendet wurde. kann vorerst ignoriert werden.

Bevor wir mit dem Mailman beginnen 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 betreibt: <– Admin-E-Mail-Adresse, z.B. listadmin@example.
com
Ursprüngliches Briefträger-Passwort:<– Admin-Passwort für die Mailman-Liste Um die Erstellung Ihrer Mailingliste abzuschließen,
müssen SieIhre Datei /etc/aliases (oder gleichwertig
), indem Sie die folgenden Zeilen hinzufügen und möglicherweise das Programm `newaliases‘ ausführen:

## mailman mailing list mailman: “
|/var/lib/mailman/mail/mail/mailman post mailman“ mailman-admin:“|/var/lib/mailman/mail/mailman admin mailman“ mailman-bounces: „|/var/lib/mailman/mailman/mail/mailman admin mailman“ mailman-bounces:“|/var/lib/mailman/mail/mail/mailman bounces mailman“ mailman-confirm: „|/var/lib/mailman/mail/mail/mailman
confirm mailman“ mailman-join:“|/var/lib/mailman/mail/mailman join mailman“ mailman-leeave:“|/var/lib/mailman/mail/mail/mailman leave mailman“ Briefträger-Betreiber:“|/var/lib/mailman/mail/mailman/mailman owner mailman“ Briefträger-Antrag: „|/var/lib/mailman/mailman/mail/mailman owner mailman“|/var/lib/mailman/mail/mail/mailman request mailman“ mailman-subscribe: „|/var/lib/mailman/mail/mail/mailman
subscribe mailman“ mailman-abbestellen:“|/var/lib/mailman/mail/mailman unsubscribe mailman“ Drücken Sie Enter, um den Eigentümer des Postboten zu benachrichtigen

…. <– ENTER root@server1:~#

Öffnen Sie anschließend /etc/aliases

nano /etc/aliases

… und fügen Sie die folgenden Zeilen hinzu:

[...]
## mailman mailing list
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

danach 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 den Alias /cgi-bin/mailman/ für alle Apache-Vhosts, was bedeutet, dass Sie auf die Mailman-Administrationsschnittstelle für eine Liste unter http://<vhost>/cgi-bin/mailman/admin/<listname> zugreifen können. Die Webseite für Benutzer einer Mailingliste finden Sie unter http://<vhost>/cgi-bin/mailman/listinfo/<listname>.

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

Aktivieren Sie die Konfiguration mit:

a2enconf mailman

Starten Sie danach Apache neu:

service apache2 restart

Starten Sie anschließend den Mailman-Dämon:

service mailman start

11. Installieren Sie PureFTPd und Quota

PureFTPd und Quota können mit dem folgenden 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 setzen Sie VIRTUALCHROOT=true:

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

Nun 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 wesentlich sicherer wird.

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

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 lege ich dieses Verzeichnis zuerst an:

mkdir -p /etc/ssl/private/

Danach 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

Name des Landes (2-Buchstaben-Code) [AU]: <– Geben Sie Ihren Ländernamen ein (z.B. „DE“).
Name des Staates oder der Provinz (vollständiger Name) [Irgendein Staat]:
<– Geben Sie den Namen Ihres Bundesstaates oder Ihrer Provinz ein.
Name der Ortschaft (z.B. Stadt) []:
<– Geben Sie Ihre Stadt ein.
Name der Organisation (z.B. Firma) [Internet Widgits Pty Ltd]:
<– Geben Sie den Namen Ihrer Organisation ein (z.B. den Namen Ihrer Firma).
Name der Organisationseinheit (z.B. Abschnitt) []:
<– Geben Sie den Namen Ihrer Organisationseinheit ein (z.B. „IT-Abteilung“).
Allgemeiner Name (z.B. IHR Name) []:
<– Geben Sie den vollqualifizierten Domänennamen 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. Meine sieht wie folgt aus (ich habe ,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 zur Partition mit dem Mount-Punkt / hinzugefügt):

nano /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
/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

Das wird die folgende Ausgabe zeigen:

root@server1:/opt/metronome# 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:/opt/metronome# quotaon -avug
/dev/mapper/server1--vg-root [/]: group quotas turned on
/dev/mapper/server1--vg-root [/]: user quotas turned on

12. BIND DNS-Server installieren

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 und AWStats

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

apt-get -y install vlogger webalizer awstats geoip-database libclass-dbi-mysql-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

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

14. Jailkit installieren

Jailkit wird für inhaftierte Shell-Benutzer und Cronjobs in ISPConfig verwendet. Installieren Sie Jailkit mit apt:

apt-get -y install jailkit

15. Fail2ban und UFW installieren

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

apt-get -y install fail2ban

Damit der fail2ban-Monitor PureFTPd und Dovecot überwacht, 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 danach fail2ban neu:

service fail2ban restart

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

apt-get install ufw

16. Roundcube Webmail installieren

Führen Sie Roundcube Webmail aus, um Roundcube Webmail zu installieren:

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

Das Installationsprogramm könnte die folgenden Fragen stellen:

Configure database for roundcube with dbconfig-common? <-- Yes
MySQL application password for roundcube: <-- Press enter

Machen Sie sich keine Sorgen, wenn Sie diese Fragen und eine Warnung vor dem ucf-Skript nicht erhalten, dann ist das in Ordnung.

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

Bearbeiten Sie dann die RoundCube Apache-Konfigurationsdatei.

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 „<Directory /var/lib/roundcube>“ ein:

# Those aliases do not work properly with several hosts on your apache server
# Uncomment them to use it or adapt them to your configuration
Alias /roundcube /var/lib/roundcube
Alias /webmail /var/lib/roundcube
[...]
<Directory /var/lib/roundcube>
AddType application/x-httpd-php .php
[...]

Und starten Sie Apache neu

service apache2 restart

Bearbeiten Sie dann die RoundCube-Konfigurationsdatei config.inc.php:

nano /etc/roundcube/config.inc.php

und ändern Sie den Standard-Host in localhost:

$config['default_host'] = 'localhost';

Dadurch wird verhindert, dass Roundcube das Eingabefeld für den Servernamen im Anmeldeformular anzeigt.

17. ISPConfig 3.2 installieren

Wir werden die ISPConfig 3.2 Nightly Builds verwenden, die ISPConfig 3.2 beta 1 zum Zeitpunkt der Veröffentlichung dieses Leitfadens enthalten, da ISPConfig 3.2 final noch nicht freigegeben ist.

cd /tmp 
wget -O ispconfig.tar.gz https://www.ispconfig.org/downloads/ISPConfig-3-nightly.tar.gz
tar xfz ispconfig.tar.gz
cd ispconfig3*/install/

Der nächste Schritt ist die Durchführung von

php -q install.php

Dadurch wird das ISPConfig 3-Installationsprogramm gestartet. Der Installer wird alle Dienste wie Postfix, Dovecot, etc. für Sie konfigurieren.

# php -q install.php
--------------------------------------------------------------------------------
_____ ___________ _____ __ _ ____
|_ _/ ___| ___ \ / __ \ / _(_) /__ \
| | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
| | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |
_| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
\___/\____/\_| \____/\___/|_| |_|_| |_|\__, | \____/
__/ |
|___/
--------------------------------------------------------------------------------
>> Initial configuration
Operating System: Ubuntu 20.04.1 LTS (Focal Fossa)
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]: <-- Hit Enter
Installation mode (standard,expert) [standard]: <-- Hit Enter
Full qualified hostname (FQDN) of the server, eg server1.domain.tld [server1.canomi.com]: <-- Hit Enter
MySQL server hostname [localhost]: <-- Hit Enter
MySQL server port [3306]: <-- Hit Enter
MySQL root username [root]: <-- Hit Enter
MySQL root password []: <-- Enter your MySQL root password
MySQL database to create [dbispconfig]: <-- Hit Enter
MySQL charset [utf8]: <-- Hit Enter
Configuring Postgrey
Configuring Postfix
Generating a 4096 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]: <-- Enter 2 letter country code
State or Province Name (full name) [Some-State]: <-- Enter the name of the  state
Locality Name (eg, city) []: <-- Enter your city
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter company name or press enter
Organizational Unit Name (eg, section) []: <-- Hit Enter
Common Name (e.g. server FQDN or YOUR name) []: <-- Enter the server hostname, in my case: server1.example.com
Email Address []: <-- Hit Enter
Configuring Mailman
Configuring Dovecot
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring BIND
Configuring Jailkit
Configuring Pureftpd
Configuring Apache
Configuring vlogger
Configuring Metronome XMPP Server
writing new private key to 'localhost.key'
-----
Country Name (2 letter code) [AU]: <-- Enter 2 letter country code
Locality Name (eg, city) []: <-- Enter your city
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter company name or press enter
Organizational Unit Name (eg, section) []: <-- Hit Enter
Common Name (e.g. server FQDN or YOUR name) [server1.canomi.com]: <-- Enter the server hostname, in my case: server1.example.com
Email Address []: <-- Hit Enter
Configuring Ubuntu Firewall
Configuring Fail2ban
[INFO] service OpenVZ not detected
Configuring Apps vhost
Installing ISPConfig
ISPConfig Port [8080]:
Admin password [admin]:
Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]: <-- Hit Enter
Generating RSA private key, 4096 bit long modulus
.......................++
................................................................................................................................++
e is 65537 (0x10001)
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]: <-- Enter 2 letter country code
State or Province Name (full name) [Some-State]: <-- Enter the name of the  state
Locality Name (eg, city) []: <-- Enter your city
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter company name or press enter
Organizational Unit Name (eg, section) []: <-- Hit Enter
Common Name (e.g. server FQDN or YOUR name) []: <-- Enter the server hostname, in my case: server1.example.com
Email Address []: <-- Hit Enter
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: <-- Hit Enter
An optional company name []: <-- Hit Enter
writing RSA key
Symlink ISPConfig LE SSL certs to postfix? (y,n) [y]:  <-- Hit Enter
Symlink ISPConfig LE SSL certs to pureftpd? Creating dhparam file takes some times. (y,n) [y]:  <-- Hit Enter
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
.............................................................+.........................................................................................................................................................................+...................
Configuring DBServer
Installing ISPConfig crontab
no crontab for root
no crontab for getmail
Detect IP addresses
Restarting services ...
Installation completed.

Das Installationsprogramm konfiguriert automatisch alle zugrunde liegenden Dienste, so dass 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 bei der Installation ausgewählt haben). Melden Sie sich mit dem Benutzernamen admin und dem Passwort admin an (Sie sollten das Standardpasswort nach der ersten Anmeldung ändern):

ISPConfig-Anmeldung auf Ubuntu 18.04 LTS

ISPConfig 3.2 Dashboard

 

Das System ist nun einsatzbereit.

18. Links

Das könnte dich auch interessieren …