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 Web-Hosting-Control-Panel ISPConfig 3 erlaubt es Ihnen, die folgenden Dienste über einen Web-Browser 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. Diese Einrichtung umfasst Apache (anstelle von 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 sich für Sie unterscheiden, so dass Sie sie gegebenenfalls ersetzen müssen. Bevor Sie weitermachen, müssen Sie eine minimale Installation von Debian 10 haben. Dies kann ein Debian-Minimal-Image von Ihrem Hosting-Provider sein oder Sie verwenden das Minimal-Debian-Server-Tutorial, um das Basissystem einzurichten.

Alle folgenden Befehle werden als Root-Benutzer ausgeführt. Melden Sie sich entweder direkt als Root-Benutzer an oder melden Sie sich als Ihr 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‘, sonst wird Ihre PATH-Variable von Debian falsch gesetzt.

2 Installieren Sie den SSH-Server (optional)

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

apt-get install ssh openssh-server

Von nun an können Sie einen SSH-Client wie PuTTY verwenden und sich von Ihrer Workstation aus mit Ihrem Debian-9-Server verbinden und die restlichen Schritte aus diesem Tutorial befolgen.

3 Installieren Sie einen Shell-Texteditor (optional)

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

apt-get install nano vim-nox

Wenn vi Ihr bevorzugter Editor ist, dann ersetzen Sie in den folgenden Befehlen zum Bearbeiten von Dateien nano durch vi.

4 Konfigurieren Sie den Hostnamen

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

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

# The following lines are desirable for IPv6 capable 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 soll in unserem Fall nur den Subdomain-Teil enthalten:

server1

Schließlich starten Sie den Server neu, um die Änderung zu übernehmen:

systemctl reboot

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

hostname
hostname -f

Die Ausgabe soll 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 Repository buster/updates enthält (dies stellt sicher, dass Sie immer die neuesten Sicherheitsaktualisierungen erhalten) und dass die Repositorys contrib und non-free aktiviert sind, da einige benötigte Pakete nicht im Haupt-Repository vorhanden 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

Laufen:

apt-get update

So aktualisieren Sie die Datenbank der apt-Pakete

apt-get upgrade

und installieren Sie die neuesten Updates (falls es welche gibt).

6. Ändern der Standard-Shell

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

dpkg-reconfigure dash

Dash als Standard-System-Shell verwenden (/bin/sh)? <– Nein

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

7 Synchronisieren Sie die Systemuhr

Es ist eine gute Idee, die Systemuhr mit einem NTP-Server (Network Time Protocol) über das Internet zu synchronisieren. Führen Sie einfach

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

Es werden Ihnen die folgenden Fragen gestellt:

Allgemeine Art der Mail-Konfiguration: <– Internet Sit
e
System Mail-Name: <– server1.example.com

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

mysql_secure_installation

Beantworten Sie die Fragen wie folgt:

Change the root password? [Y/n] <-- y
New password: <-- Enter a new MariaDB root password
Re-enter new password: <-- Repeat the MariaDB root password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Remove test database and access to it? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- y

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

nano /etc/postfix/master.cf

Entkommentieren Sie die Abschnitte submission und smtps wie folgt und fügen Sie gegebenenfalls Zeilen hinzu, so dass dieser Abschnitt der Datei master.cf genau so aussieht wie der untenstehende. WICHTIG: Entfernen Sie das # vor den Zeilen, die mit smtps und submission beginnen, ebenfalls 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 danach neu:

systemctl restart postfix

Wir wollen, dass MySQL auf allen Schnittstellen lauscht, nicht nur auf localhost. Daher editieren 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
[...]
# 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

[…]

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 das MYSQL / MariaDB-Root-Passwort dort 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 in rot angezeigt. In diesem Beispiel lautet das Passwort „howtoforge“.

# 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

Um den Fehler ‚Fehler bei accept: Zu viele offene Dateien‚ werden wir jetzt höhere Grenzwerte für offene Dateien für MariaDB festlegen.

Ö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

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

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

und fügen Sie 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
systemctl restart mariadb

Überprüfen Sie nun, ob das Netzwerk 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-neu, SpamAssassin und ClamAV

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

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

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

systemctl stop spamassassin
systemctl disable spamassassin

10 Apache-Webserver und PHP installieren

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 durch die HTTPOXY-Schwachstelle 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 Schwachstelle heißt httpoxy (ohne ‚r‘) und daher heißt die Datei, in der wir die Konfiguration hinzufügen, um sie zu verhindern, httpoxy.conf und nicht httproxy.conf, so dass kein ‚r‘ im Dateinamen fehlt.

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

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

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

Und aktivieren Sie das Modul durch Ausführen:

a2enconf httpoxy
systemctl restart apache2

11 Let’s Encrypt installieren

ISPConfig 3.2 hat Unterstützung für die kostenlose SSL-Zertifizierungsstelle Let’s encrypt. Mit der Funktion „Let’s Encrypt“ können Sie aus ISPConfig heraus kostenlose SSL-Zertifikate für Ihre Website erstellen.

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

cd /usr/local/bin
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto --install-only

Es sind keine weiteren Schritte erforderlich als die Installation von LE. Die SSL-Zertifikate für die Website werden von ISPConfig erstellt, wenn Sie die Websites hinzufügen.

12 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 install mailman

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

Languages to support: <-- en (English)
 Missing site list <-- Ok

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

newlist mailman
root@server1:~# newlist mailman
Enter the email of the person running the list: <-- admin email address, e.g. listadmin@example.com
Initial mailman password: <-- admin password for the mailman list
To finish creating your mailing list, you must edit your /etc/aliases (or
equivalent) file by adding the following lines, and possibly running the
`newaliases' program:

## 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“

Hit enter to notify mailman owner… <– ENTER

root@server1:~#

Öffnen Sie danach /etc/aliases

nano /etc/aliases

… und die folgenden Zeilen hinzufügen:

[...]
## 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"

Ausführen:

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 den Alias /cgi-bin/mailman/ für alle Apache-Vhosts, was bedeutet, dass Sie auf die Mailman-Administrationsschnittstelle für eine Liste unter http://server1.example.com/cgi-bin/mailman/admin/ zugreifen können. 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 Archive der Mailingliste.

Starten Sie danach Apache neu:

systemctl restart apache2

Starten Sie dann den Mailman-Daemon:

systemctl restart mailman

13 PureFTPd und Quota installieren

PureFTPd und Quota können mit dem folgenden 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 eingestellt 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/, deshalb lege ich zuerst dieses Verzeichnis an:

mkdir -p /etc/ssl/private/

Danach können wir das SSL-Zertifikat wie folgt erzeugen:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
Country Name (2 letter code) [AU]: <-- Enter your Country Name (e.g., "DE").
State or Province Name (full name) [Some-State]: <-- Enter your State or Province Name.
Locality Name (eg, city) []: <-- Enter your City.
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Enter your Organization Name (e.g., the name of your company).
Organizational Unit Name (eg, section) []: <-- Enter your Organizational Unit Name (e.g. "IT Department").
Common Name (eg, YOUR name) []: <-- Enter the Fully Qualified Domain Name of the system (e.g. "server1.example.com").
Email Address []: <-- Enter your Email Address.

Ändern Sie die Berechtigungen des SSL-Zertifikats:

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

Starten Sie anschließend PureFTPd neu:

systemctl restart pure-ftpd-mysql

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>
# / was on /dev/sda1 during installation
UUID=45576b38-39e8-4994-b8c1-ea4870e2e614 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
# swap was on /dev/sda5 during installation
UUID=8bea0d1e-ec37-4b20-9976-4b7daaa3eb69 none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

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

mount -o remount /
quotacheck -avugm
quotaon -avug

14 BIND DNS-Server installieren

BIND kann wie folgt installiert werden:

apt-get install bind9 dnsutils

Wenn Ihr Server eine virtuelle Maschine ist, dann 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 Webalizer und AWStats installieren

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 Akte 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

16 Jailkit installieren

Jailkit wird nur benötigt, wenn Sie SSH-Benutzer in das Chroot-System aufnehmen 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 nun das Jailkit .deb-Paket wie folgt installieren:

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

17 Fail2ban und UFW-Firewall installieren

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

apt-get install fail2ban

Damit der fail2ban-Monitor PureFTPd und Dovecot überwacht, 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 danach fail2ban 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 Datenbank-Verwaltungswerkzeug PHPMyAdmin

Seit Debian 10 ist PHPMyAdmin nicht mehr als .deb-Paket verfügbar. Daher werden wir es aus den Quellen 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 Verzeichnis /tmp 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 Verzeichnis /tmp.

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 PHPMyaAdmin auf der Grundlage der mitgelieferten 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'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Verwenden Sie nicht mein Beispiel blowfish secret, sondern setzen Sie Ihr eigenes!

Fügen Sie dann eine Zeile hinzu, um das Verzeichnis festzulegen, das PHPMyAdmin zum Speichern temporärer Dateien verwenden soll:

$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 default Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php

<IfModule mod_php7.c>
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 .
</IfModule>

</Directory>

# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName „phpMyAdmin Setup“
AuthUserFile /etc/phpmyadmin/htpasswd.setup
</IfModule>
Require valid-user
</Directory>

# Disallow web access to directories that don’t need it
<Directory /usr/share/phpmyadmin/libraries>
Order Deny,Allow
Deny from All
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
Order Deny,Allow
Deny from All
</Directory>

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 in den Befehlen oben und unten das Wort mypassword durch ein sicheres Passwort Ihrer Wahl, verwenden Sie beide Male dasselbe Passwort. Gewähren Sie dann dem Benutzer 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 auf Anfrage das MariaDB-Root-Passwort ein.

Jetzt müssen wir nur noch die phpmyadmin-Benutzerdetails in der Konfigurationsdatei festlegen. Öffnen Sie die Datei erneut im nano editor:

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

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

/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = 'localhost';
$cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'mypassword';

/* Storage database and tables */
$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, die ich bearbeitet habe, rot markiert. Ersetzen Sie mypassword durch das Passwort, das Sie für den Benutzer phpmyadmin gewählt haben. Beachten Sie, dass das // vor den Zeilen ebenfalls entfernt wurde!

19 RoundCube Webmail installieren (optional)

In diesem Kapitel werden wir den RoundCube Webmail-Client installieren. ZunÃ?chst 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 er die Datenbank nicht automatisch erstellt. Führen Sie diesen Befehl aus, um die Datenbank zu erstellen:

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

Dann installieren Sie RoundCube mit diesem Befehl:

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

Der Installer wird die folgenden Fragen stellen:

Configure database for roundcube with dbconfig.common? <-- yes
MySQL application password for roundcube: <-- press enter

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

nano /etc/roundcube/config.inc.php

Setzen Sie default_host und smtp_server auf localhost.

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

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 Alias-Zeile für den Apache /webmail-Alias und eine für /roundcube hinzu, Sie können die Zeile direkt am Anfang der Datei einfügen. HINWEIS: Verwenden Sie /mail nicht als Alias, sonst funktioniert das E-Mail-Modul ispconfig nicht mehr!

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

Laden Sie dann Apache neu:

systemctl reload apache2

Jetzt können Sie wie folgt auf RoundCube zugreifen:

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

20 ISPConfig 3 herunterladen

20 Herunterladen der stabilen Version (empfohlen)

So installieren Sie ISPConfig 3 aus der zuletzt veröffentlichten Version:

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 ISPConfig installieren

Der nächste Schritt ist die Ausführung des ISPConfig-Installationsprogramms.

php -q install.php

Dadurch wird das ISPConfig-3-Installationsprogramm gestartet. Das Installationsprogramm wird alle Dienste wie Postfix, Dovecot, etc. für Sie konfigurieren. Ein manuelles Setup, wie es für ISPConfig 2 (perfekte Setup-Anleitungen) erforderlich ist, ist nicht notwendig.

# php -q install.php
--------------------------------------------------------------------------------
_____ ___________ _____ __ _ ____
|_ _/ ___| ___ \ / __ \ / _(_) /__ \
| | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
| | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |
_| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
\___/\____/\_| \____/\___/|_| |_|_| |_|\__, | \____/
__/ |
|___/
--------------------------------------------------------------------------------
>> Initial configuration
Operating System: Debian 10.0 (Buster) or compatible
Following will be a few questions for primary configuration so be careful.
Default values are in [brackets] and can be accepted with <ENTER>.
Tap in "quit" (without the quotes) to stop the installer.
Select language (en,de) [en]: <-- Hit Enter
Installation mode (standard,expert) [standard]: <-- Hit Enter
Full qualified hostname (FQDN) of the server, eg server1.domain.tld [server1.example.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
[INFO] service Metronome XMPP Server not detected
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
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 gewä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 Debian 10

ISPConfig-Dashboard auf Debian 10

Das System ist nun einsatzbereit.

22 Verknüpfungen

Das könnte dich auch interessieren …