Der perfekte Server – Debian 9 (Nginx, BIND, Dovecot, ISPConfig 3.1)

10 Nginx, PHP (PHP-FPM) und Fcgiwrap installieren

Nginx ist als Paket für Debian verfügbar, das wir wie folgt installieren können:

apt-get install nginx

Wenn Apache2 bereits auf dem System installiert ist, stoppen Sie es jetzt…..

service apache2 stop

Die Meldung „apache2.service konnte nicht gestoppt werden: Unit apache2.service nicht geladen. “ ist in Ordnung und zeigt keinen Fehler an.

…. und entfernen Sie die Systemstartup-Links von Apache:

systemctl disable apache2

Starten Sie anschließend nginx:

service nginx start

(Wenn sowohl Apache2 als auch nginx installiert sind, fragt Sie das Installationsprogramm von ISPConfig 3, welches Sie verwenden möchten – beantworten Sie in diesem Fall nginx. Wenn nur einer dieser beiden installiert ist, führt ISPConfig die notwendige Konfiguration automatisch durch.)

Wir können PHP 7 in nginx durch PHP-FPM (PHP-FPM (FastCGI Process Manager) ist eine alternative PHP FastCGI-Implementierung mit einigen zusätzlichen Funktionen, die für Websites jeder Größe, insbesondere für geschäftigere Websites, nützlich sind) funktionieren lassen, die wir wie folgt installieren:

apt-get install php7.0-fpm

PHP-FPM ist ein Daemon-Prozess, der einen FastCGI-Server auf dem Socket /var/run/php/php/php7.0-fpm.sock ausführt.

Um MySQL-Unterstützung in PHP zu erhalten, können wir das Paket php7.0-mysql installieren. Es ist eine gute Idee, einige andere PHP-Module zu installieren, da Sie diese für Ihre Anwendungen benötigen könnten. Sie können auf diese Weise nach verfügbaren PHP-Modulen suchen:

apt-cache search php7

Wählen Sie die gewünschten aus und installieren Sie sie so:

apt-get install php7.0 php7.0-common php7.0-gd php7.0-mysql php7.0-imap php7.0-cli php7.0-cgi php-pear php7.0-mcrypt mcrypt  imagemagick libruby php7.0-curl php7.0-intl php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl memcached php-memcache php-imagick php-gettext php7.0-zip php7.0-mbstring memcached php7.0-soap php7.0-opcache

Öffnen Sie nun /etc/php/7.0/fpm/php.ini…..

nano /etc/php/7.0/fpm/php.ini

…. und setze cgi.fix_pathinfo=0 und deine Zeitzone:

[...]
cgi.fix_pathinfo=0
[...]
date.timezone="Europe/Berlin"
[...]

(Du findest alle verfügbaren Zeitzonen in den Verzeichnissen /usr/share/zoneinfo und ihren Unterverzeichnissen.)

Laden Sie nun PHP-FPM neu:

service php7.0-fpm reload

Um CGI-Unterstützung in nginx zu erhalten, installieren wir Fcgiwrap.

Fcgiwrap ist ein CGI-Wrapper, der auch für komplexe CGI-Skripte funktionieren sollte und für Shared Hosting-Umgebungen verwendet werden kann, da er es jedem Vhost ermöglicht, sein eigenes cgi-bin-Verzeichnis zu verwenden.

Installieren Sie das fcgiwrap-Paket:

apt-get install fcgiwrap

Nach der Installation sollte der fcgiwrap-Daemon bereits gestartet sein; sein Socket ist /var/run/fcgiwrap.socket. Wenn es nicht läuft, können Sie es mit dem fservice fcgiwrap-Skript fservice starten.

Das ist es! Wenn Sie nun einen nginx vhost erstellen, kümmert sich ISPConfig um die korrekte Vhost-Konfiguration.

10.1 Zusätzliche PHP-Versionen

Ab ISPConfig 3.0.5 ist es möglich, mehrere PHP-Versionen auf einem Server (wählbar über ISPConfig) zu haben, die über PHP-FPM inkl. PHP 5.x und 7.x ausgeführt werden können. Um zu erfahren, wie man zusätzliche PHP-Versionen (PHP-FPM) erstellt und wie man ISPConfig konfiguriert, lesen Sie bitte dieses Tutorial: How to install PHP 7.1, 7.2 and 5.6 as PHP-FPM & FastCGI for ISPConfig 3 on Debian 9.

10.2 phpMyAdmin installieren

Installieren Sie phpMyAdmin wie folgt:

apt-get install phpmyadmin

Wählen Sie keine Option aus, wenn das Installationsprogramm „Webserver zur automatischen Neukonfiguration:“ fragt, und drücken Sie ok.

Configure database for phpmyadmin with dbconfig-common? <-- yes
MySQL application password for phpmyadmin: <-- Press Enter
Password of the database's administrative user: <-- Enter the MySQL root password

Du kannst phpMyAdmin nun im Verzeichnis /usr/share/phpmyadmin/ finden.

Nachdem Sie ISPConfig 3.1 installiert haben, können Sie wie folgt auf phpMyAdmin zugreifen:

Die ISPConfig apps vhost auf Port 8081 für nginx wird mit einer phpMyAdmin-Konfiguration ausgeliefert, so dass Sie über http://server1.example.com:8081/phpmyadmin oder http://server1.example.com:8081/phpMyAdmin auf phpMyAdmin zugreifen können.

Wenn Sie einen /phpmyadmin- oder /phpMyAdmin-Alias verwenden möchten, den Sie von Ihren Websites aus verwenden können, ist dies etwas komplizierter als bei Apache, da nginx keine globalen Aliase hat (d.h. Aliase, die für alle Vhosts definiert werden können). Daher müssen Sie diese Aliase für jeden Vhost definieren, von dem aus Sie auf phpMyAdmin zugreifen möchten.

Fügen Sie dazu in ISPConfig auf der Registerkarte Optionen der Website folgendes in das Feld nginx Direktiven ein:

        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       fastcgi_buffer_size 128k;
                       fastcgi_buffers 256 4k;
                       fastcgi_busy_buffers_size 256k;
                       fastcgi_temp_file_write_size 256k;
                       fastcgi_intercept_errors on;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }

Wenn Sie https anstelle von http für Ihren vhost verwenden, sollten Sie die Zeile fastcgi_param HTTPS on; zu Ihrer phpMyAdmin-Konfiguration hinzufügen:

        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
                       fastcgi_param HTTPS on; # <-- add this line
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       fastcgi_buffer_size 128k;
                       fastcgi_buffers 256 4k;
                       fastcgi_busy_buffers_size 256k;
                       fastcgi_temp_file_write_size 256k;
                       fastcgi_intercept_errors on;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }

Wenn Sie sowohl http als auch https für Ihren vhost verwenden, können Sie die Variable $https verwenden. Gehen Sie wieder in das Feld nginx Directives und anstelle von fastcgi_param HTTPS on; Sie fügen die Zeile fastcgi_param HTTPS $https hinzu, so dass Sie phpMyAdmin sowohl für http- als auch für https-Anfragen verwenden können:

        location /phpmyadmin {
               root /usr/share/;
               index index.php index.html index.htm;
               location ~ ^/phpmyadmin/(.+\.php)$ {
                       try_files $uri =404;
                       root /usr/share/;
                       fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
                       fastcgi_param HTTPS $https; # <-- add this line
                       fastcgi_index index.php;
                       fastcgi_param SCRIPT_FILENAME $request_filename;
                       include /etc/nginx/fastcgi_params;
                       fastcgi_param PATH_INFO $fastcgi_script_name;
                       fastcgi_buffer_size 128k;
                       fastcgi_buffers 256 4k;
                       fastcgi_busy_buffers_size 256k;
                       fastcgi_temp_file_write_size 256k;
                       fastcgi_intercept_errors on;
               }
               location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
                       root /usr/share/;
               }
        }
        location /phpMyAdmin {
               rewrite ^/* /phpmyadmin last;
        }

11 Installieren Lasst uns verschlüsseln

ISPConfig 3.1 unterstützt 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.

apt-get install certbot

12 Mailman installieren

Mit ISPConfig können Sie Mailman-Mailinglisten verwalten (erstellen, ändern, löschen). Wenn Sie diese Funktion nutzen möchten, installieren Sie Mailman wie folgt:

apt-get install mailman

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

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

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

newlist mailman

root@server1:~# newlist mailman Geben Sie die
E-Mail-Adresse der Person ein, die die Liste ausführt: <– admin E-Mail-Adresse, z.B. listadmin@example.
com
Initiales Mailman-Passwort:<– Admin-Passwort für die Mailingliste Um die Erstellung Ihrer Mailingliste abzuschließen,
müssen Sie Folgendes bearbeitenIhre /etc/aliases (oder gleichwertige
) Datei, indem Sie die folgenden Zeilen hinzufügen und möglicherweise das Programm `newaliases‘ ausführen: „|/var/lib/mailman/mail/mail/mailman admin mailman“ mailman-bounces:
|/var/lib/mailman/mail/mail/mailman join mailman“ mailman-leave:|/var/lib/mailman/mail/mail/mail/mailman leave mailman“ mailman-owner:|/var/lib/mailman/mail/mail/mail/mailman owner mailman“ mailman-request:|/var/lib/mailman/mail/mail/mail/mailman unsubscribe mailman“ Drücken Sie die Eingabetaste, um den

Mailman-Besitzer 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"

Laufen

newaliases

danach und starten Sie Postfix neu:

service postfix restart

Dann starten Sie den Mailman-Daemon:

service mailman start

Nachdem Sie ISPConfig 3 installiert haben, können Sie wie folgt auf Mailman zugreifen:

Die ISPConfig apps vhost auf Port 8081 für nginx wird mit einer Mailman-Konfiguration ausgeliefert, so dass Sie über http://server1.example.com:8081/cgi-bin/mailman/admin/<listname> oder http://server1.example.com:8081/cgi-bin/mailman/listinfo/<listname> auf Mailman zugreifen können.

Wenn Sie Mailman von Ihren Webseiten aus verwenden wollen, ist dies etwas komplizierter als für Apache, da nginx keine globalen Aliase hat (d.h. Aliase, die für alle vhosts definiert werden können). Daher müssen Sie diese Aliase für jeden Vhost definieren, von dem aus Sie auf Mailman zugreifen möchten.

Fügen Sie dazu in ISPConfig auf der Registerkarte Optionen der Website folgendes in das Feld nginx Direktiven ein:

        location /cgi-bin/mailman {
               root /usr/lib/;
               fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$;
               include /etc/nginx/fastcgi_params;
               fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
               fastcgi_param PATH_INFO $fastcgi_path_info;
               fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
               fastcgi_intercept_errors on;
               fastcgi_pass unix:/var/run/fcgiwrap.socket;
        }

        location /images/mailman {
               alias /usr/share/images/mailman;
        }

        location /pipermail {
               alias /var/lib/mailman/archives/public;
               autoindex on;
        }

Hiermit wird der Alias /cgi-bin/mailman/ für Ihren Vhost definiert, d.h. Sie können auf die Mailman-Administrationsschnittstelle für eine Liste unter http://<vhost>/cgi-bin/mailman/admin/<listname> zugreifen, und 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.

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

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

Jetzt konfigurieren wir PureFTPd so, dass es FTP- und TLS-Sitzungen erlaubt. FTP ist ein sehr unsicheres Protokoll, da alle Passwörter und Daten im Klartext übertragen werden. Durch den Einsatz 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 Folgendes aus

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

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

mkdir -p /etc/ssl/private/

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

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Ländername (2-stelliger Code)[AU]: <– Geben Sie Ihren Ländernamen ein (z.B. „DE“).
Name des Staates oder der Provinz (vollständiger Name)[Irgendein Staat]:
<– Geben Sie Ihren Staats- oder Provinztitel ein.
Ortsname (z.B. Stadt) []:
<– Betrete deine Stadt.
Firmenname (z.B. Firma)[Internet Widgits Pty Ltd]:
<– Geben Sie Ihren Firmennamen ein (z.B. den Namen Ihrer Firma).
Name der Organisationseinheit (z.B. Abschnitt) []:
<– Geben Sie den Namen Ihrer Organisationseinheit ein (z.B. „IT-Abteilung“).
Common Name (z.B. Ihr Name) []:
<– Geben Sie den voll qualifizierten 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. Meine sieht so aus (ich habe ,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 zur Partition mit dem Mountpunkt / 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=f539c5cb-624f-4c27-a149-1446a251a453 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
# swap was on /dev/sda5 during installation
UUID=8d3194e7-edb5-4492-937d-d066b4994baf none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

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

mount -o remount /
quotacheck -avugm
quotaon -avug

14 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 gehackten Daemon zu installieren, um eine höhere Entropie für die DNSSEC-Signatur zu erhalten. Du kannst haveged auch auf nicht-virtuellen Servern installieren, es sollte nicht schaden.

apt-get install haveged
systemctl enable haveged
service haveged start

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 libtimedate-perl 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

16 Jailkit installieren

Jailkit wird nur benötigt, wenn Sie SSH-Benutzer chrooten wollen. Es kann wie folgt installiert werden (wichtig: Jailkit muss vor dem ISPConfig installiert werden – es kann nicht danach installiert werden! ):

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

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

cd ..
dpkg -i jailkit_2.19-1_*.deb
rm -rf jailkit-2.19*

17 Fail2ban und UFW Firewall installieren

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

apt-get install fail2ban

Um fail2ban Monitor PureFTPd und Dovecot zu machen, 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
logpath = /var/log/mail.log
maxretry = 5

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

Starten Sie fail2ban anschließend neu:

service fail2ban restart

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

apt-get install ufw

Das könnte Dich auch interessieren …