Der perfekte Server für WEB, natürlich Open Source


Der Perfekte Server – Debian 9 (nginx, BIND, Dovecot, ISPConfig 3.1)


Dieses Tutorial zeigt, wie man einen Debian Jessie Server (mit nginx, BIND, Dovecot) für die Installation von ISPConfig 3.1 vorbereitet und wie man ISPConfig 3.1 installiert. ISPConfig 3 ist ein Webhosting Control Panel, mit dem man folgende Dienste über einen Webbrowser konfigurieren kann: Apache oder nginx Webserver, Postfix Mailserver, Courier oder Dovecot IMAP / POP3 Server, MySQL, BIND oder MyDNS Nameserver, PureFTPd, SpamAssassin, ClamAV und viele mehr. Diese Konfiguration umfasst nginx (anstelle von Apache), BIND als DNS-Server und Dovecot als IMAP / POP3-Server.

Anmerkung:

In dieser Anleitung verwenden wir den Hostnamen server1.example.com mit der IP-Adresse 192.168.1.100 und dem Gateway 192.168.1.1. Diese Einstellungen müssen ersetzt werden. Bevor wir fortfahren, müssen wir eine minimale Installation von Debian 9 haben. Wir setzen voraus das die Installation vorhanden ist und funktioniert.

Installieren SSH-Server

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

apt-get -y install ssh openssh-server

Von nun an können wir einen SSH-Client wie PuTTY verwenden und eine Verbindung von der Workstation zum Debian 9-Server herstellen und die restlichen, folgenden Arbeiten durchführen.

Installieren von „shell text editor“ (Optional)

Wir werden Nano-Texteditor in dieser Anleitung verwenden. Für die Benutzer die NANO nicht mögen installieren wir zusätzlich VIM-NOX

apt-get -y install nano vim-nox

und nun zum nächsten Schritt …

Konfigurieren „Hostname“

Der Hostname des Servers sollte eine Subdomain wie „server1.example.com“ sein. Verwenden wir bitte keinen Domainnamen ohne Subdomain-Teil wie „example.com“ als Hostnamen, da dies später zu Problemen bei der Mail-Einrichtung führen kann. Zuerst prüfen wir den Hostnamen in „/etc/hosts“ und ändern diesen bei Bedarf. Die Zeile sollte lauten: „IP-Adresse – Leerzeichen – vollständiger Hostname inkl. Domain – Space – Subdomain-Teil“. Bearbeiten wir also „/etc/hosts“.

nano /etc/hosts

Die Datei sollte ca. so aussehen. Rot markierte Bereiche wurden geändert oder hinzugefügt.

127.0.0.1 localhost.localdomain localhost 
192.168.1.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

als nächstes editieren wir die HOSTS-Datei in /etc/hostname

nano /etc/hostname

Die Datei soll nur den Subdomain-Teil enthalten, in unserem Fall: server1
Nun muss der Server mit dem Befehl „reboot“ neu gestartet werden um die Änderunge zu aktivieren.

Nach der erneuten Anmeldung am Server prüfen wir die Richtigkeit des Hostnamens mit den Befehlen:

hostname
hostname -f

Die Ausgabe sollte ca. so aussehen:

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

Bei der Installation müssen alle Updates installiert sein. Daher der nächste Schritt …

Aktualisieren | Update Debian Installation

Zuerst stellen wir sicher, dass die Datei  „/etc/apt/sources.list“ das Repository für Aktualisierungen enthält (das stellt sicher, dass wir immer die neuesten Updates für den ClamAV Virenscanner erhalten – dieses Projekt veröffentlicht sehr oft Versionen, und manchmal funktionieren alte Versionen nicht mehr), und dass die Contrib- und Non-Free-Repositories aktiviert sind.

nano /etc/apt/sources.list
deb http://ftp.us.debian.org/debian/ stretch main contrib non-free
deb-src http://ftp.us.debian.org/debian/ stretch main contrib non-free

deb http://security.debian.org/debian-security stretch/updates main contrib non-free
deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free

WICHTIG: wir fügen das DEBIAN BACKPORTS REPOSITORY wie oben angeführt hinzu.

nun führen wir folgende Befehle aus:

apt-get update

um die apt package datenbank zu aktualisieren und

apt-get upgrade

um alle verfügebaren Updates zu installieren sollte es welche geben.

„Default Shell“ ändern

/bin/sh ist ein symlink to /bin/dash, wir benötigen aber  /bin/bash, nicht /bin/dash. wir führen also folgenden Befehl aus:

dpkg-reconfigure dash

Auf die Frage: Use dash as the default system shell (/bin/sh)? antworten wir mit <– No
Wenn wir diesen Schritt nicht durchführen schlägt die Installation von ISPCONFIG fehl!

„System Clock“ syncronisieren

Wir installieren nun das NTP Protokoll (Network Time Protocoll) um die Systemzeit zu synchronisieren und aktuell zu halten. dazu verwenden wir den Befehl:

apt-get install ntp

jetzt ticken wir richtig … und wir können den nächsten Schritt ausführen …

 

Installieren von Postfix, Dovecot, MySQL, rkhunter und binutils

wir können Postfix, Dovecot, MySQL, rkhunter und  Binutils mit einem Befehl installieren:

apt-get 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 uns folgende Fragen gestellt, Die Antworten sehen wir gleich daneben:

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

Um die MariaDB / MySQL Installation zu sichern und die „test database“ zu deaktivieren, führen wir folgenden Befehl aus:

mysql_secure_installation

Wir müssen jetzt nicht das Passwort für den Benutzer root ändern. Dies führen wir zu einem späteren Zeitpunkt durch.
Wir erhalten wieder ein paar Fragen und in Rot die Antworten die wir geben müssen:

Change the root password? [Y/n] <-- y
 New password: <-- Enter a new MySQL root password # hier geben wir ein beliebiges Passwort ein - notieren nicht vergessen
 Re-enter new password: <-- Repeat the MySQL root password hier wiederholen wir das Passwort von oben
 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

um nun TLS/SSL und die Ports in Postfix anzupassen öffnen wir:

nano /etc/postfix/master.cf

unter den Rubrik „submission“ und  „smtps sections“ setzen wir vor dem Parameter (leave -o milter_macro_daemon_name=ORIGINATING) eine Raute (#) da wir diesen Eintrag nicht benötigen.

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

danach starten wir postfix neu mit folgenden Befehl:

service postfix restart

Wir bringen nun den SQL Server „MariaDB“ dazu sich auf allen verfügbaren Interfaces zu melden, nicht nur auf  „localhost“.
Dazu ändern wir die Datei „/etc/mysql/mariadb.conf.d/50-server.cnf, setzen eine Raute (#) vor den Eintrag in Klammer (bind-address = 127.0.0.1)  und fügen folgenden Eintrag hinzu:

sql-mode=“NO_ENGINE_SUBSTITUTION“

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

sql-mode="NO_ENGINE_SUBSTITUTION"

[...]

Jetzt setzen wir „password authentication method“ in MariaDB auf „native“ damit wir nachher uns im PHPMyAdmin als root user anmelden können.

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

wir bearbeiten die Datei  „/etc/mysql/debian.cnf“ und setzen das Root-Passwortset von MYSQL / MariaDB  zwei mal in den Abschnitt „password“ siehe Beispiel unten:

nano /etc/mysql/debian.cnf
# Automatically generated for Debian scripts. DO NOT TOUCH!
 [client]
 host = localhost
 user = root
 password = meinpasswort
 socket = /var/run/mysqld/mysqld.sock
 [mysql_upgrade]
 host = localhost
 user = root
 password = meinpasswort
 socket = /var/run/mysqld/mysqld.sock
 basedir = /usr

Um die Fehlermeldung ‚Error in accept: Too many open files‚ zu verhindern setzen wr einen weiteren Parameter wie folgt.

Wir bearbeiten die Datei „/etc/security/limits.conf“:

nano /etc/security/limits.conf

und fügen am Ende folgende Zeilen hinzu:

mysql soft nofile 65535
mysql hard nofile 65535

als nächstes erstellen wir ein neues Verzeichnis „/etc/systemd/system/mysql.service.d/“ mit de Befehl „mkdir“.

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

wir erstellen darin folgende Datei und bearbeiten diese wie folgt:

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

die folgenden Zeilen in die erstellte Datei einfügen und speichern.

[Service]
LimitNOFILE=infinity

Nun muss der Dienst MariaDB neu gestartet werden. Das machen wir wie folgt.

systemctl daemon-reload
 service mysql restart

Wir prüfen ob alle nötigen Dienste laufen und führen dazu folgenden Befehl aus:

netstat -tap | grep mysql

Die Augabe am Monitor sollte ca. so aussehen:

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

Geschafft – weiter gehts mit dem nächstten Schritt

 

Install Amavisd-new, SpamAssassin, and ClamAV

Um amavisd-new, SpamAssassin, and ClamAV zu installieren führen wir folgenden Befehl aus:

apt-get install amavisd-new spamassassin clamav clamav-daemon zoo 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 libdbd-mysql-perl postgrey

Da die Dienste von ISPCONFIG gestartet werden können wir „spamassassin“ stopen und somit etwas Speicher frei machen. Notwendig ist es allerdings nicht wirklich.

service spamassassin stop
 systemctl disable spamassassin

 

Install Nginx, PHP (PHP-FPM), and Fcgiwrap

Nginx ist als Package in Debian vorhanden und wir können den Server mit folgendem Befehl installieren:

apt-get install nginx

Der Webserver APACHE2 ist bereits installiert, da wir ihn nicht benötigen stoppen wir den Dienst wie folgt.

service apache2 stop

Die Meldungen „Failed to stop apache2.service: Unit apache2.service not loaded.“ können wir inorieren, sie stellen keinen Fehler dar. Es ist nur eine Information. Zusätzlich deaktivieren wir Apache2 noch für den Start beim Booten des Systems.

systemctl disable apache2

Nun starten wir ngninx:

service nginx start

Anmerkung:
Sollte Apache2 und ngingx installiert sein wird man bei der Installation von IPSCONFIG gefragt welchen Server man verwenden will. Wir verwenden in dieser Installation nginx. Das Setup von ISPConfig macht den Rest von selbst.

Jetzt binden wir PHP in nginx ein. Das machen wir mit folgendem Befehl:

apt-get install php7.0-fpm

Um MySQL Support in PHP zu erhalten installieren wir php7.0-mysql. mit folgendem Befehl können wir nach verfügbaren PHP Modulen suchen.

apt-cache search php7

Nun suchen wir uns das passende Paket und installieren es wie folgt:

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

Jetzt müssen wir die Datei „/etc/php/7.0/fpm/php.ini wie folgt bearbeiten

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

… und passen folgenden Einträge an: cgi.fix_pathinfo=0

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

Der Dienst PHP-FPM muss neu gestartet werden. Dies geht wie folgt:

service php7.0-fpm reload

Um nun CGI Support in nginx zu bekommen installieren wir Fcgiwrap.

apt-get install fcgiwrap

Erledigt! Erstellen wir in Zukunft einen virtuellen Host am Webserver verwendet ISPCONFIG die richtige VHOST Konfiguration.

 

Install phpMyAdmin

Wir nstallieren phpMyAdmin wie folgt:

apt-get install phpmyadmin

Bei der Frage „Web server to reconfigure automatically:“ treffen wir KEINE Auswahl und drücken einfach „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

phpMyAdmin wurde nun in „/usr/share/phpmyadmin/“ installiert.

Nach der Installation von ISPConfig 3.1, gibt es folgende Möglichkeiten phpMyAdmin aufzurufen:

ISPConfig vhost auf Port 8081 für nginx hat phpMyAdmin integriert. Zugriff erfolgt über: http://server1.example.com:8081/phpmyadmin oder http://server1.example.com:8081/phpMyAdmin um mit phpMyAdmin zu arbeiten.

Wenn wir einen / phpmyadmin- oder / phpMyAdmin-Alias ​​verwenden möchten, den wir in unseren Websites verwenden können, ist dies etwas komplizierter als für Apache, da nginx keine globalen Aliase hat (d. H. Aliasnamen, die für alle vhosts definiert werden können). Daher müssen wir diese Aliase für jeden vhost definieren, von dem wir auf phpMyAdmin zugreifen wollen.

Fügen Sie dazu Folgendes in das Feld nginx Direktiven auf der Registerkarte Optionen der Website in ISPConfig 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 wir https anstelle von http für den vhost verwenden, sollten wir die Zeile fastcgi_param HTTPS zur phpMyAdmin Konfiguration hinzufügen.  Dies tun wir wie folgt:

        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 wir sowohl http als auch https für den vhost verwenden, können wir die Variable $ https verwenden. Gehen wir also erneut zum Feld nginx Direktiven und anstelle von fastcgi_param HTTPS on fügen wir die Zeile fastcgi_param HTTPS $ https; hinzu um phpMyAdmin für HTTP- und HTTPS-Anfragen verwenden zu 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;
        }

jetz get es weiter mit dem nächsten Schritt

 

Installieren von Let’s Encrypt

ISPConfig 3.1 unterstützt den Dienst „Free SSL Certificate authority – Let’s encrypt“. Wir können damit über ISPCONFIG gratis Sicherheitszertifikate für und erstellen und verwenden. Die Installation geht wie folgt:

apt-get install certbot

weiter im Programm …

Installieren von Mailman

ISPConfig unterstützt „Mailman mailing lists“. Wenn wir dieses Feature verwenden wollen müssen wir dieses wie folgt installieren:

apt-get install mailman

Die Sprache ist wichtig und wir wählen eine beliebige aus – wie z.B.:

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

Bevor wir den Mailman verwenden und starten können, müssen wir erst eine Mailinglistet mit dem Namen  „mailman“ erstellen. Diese ist sehr wichtig. Wir tun das wie folgt:

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:~#

Jetzt öffnen wir  „/etc/aliases“

nano /etc/aliases

… und fügen folgende 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"

Danach führen wir folgenden Befehl aus:

newaliases

und starten Postfix Dienst neu:

service postfix restart

Jetzt müssen wir den Mailman Deamon starten: Dazu führen wir folgendes aus:

service mailman start

Nach der Installation von ISPConfig  können wir den Mailman Dienst wie folgt verwenden.

ISPConfig „vhost“ an Port 8081 für nginx enthält eine Mailman-Konfiguration, sodass wir http://server1.example.com:8081/cgi-bin/mailman/admin/ <Listenname> oder
http: //server1.example.com: 8081 / cgi-bin / mailman / listinfo / <Listenname> für den Zugriff auf Mailman verwenden können

Wenn wir Mailman von der Webseite verwenden möchten, 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 wir diese Aliase für jeden vhost definieren, von dem wir auf Mailman zugreifen möchten.

Fügen wir dazu Folgendes in das Feld nginx Direktiven auf der Registerkarte Optionen der Website in ISPConfig 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;
        }

Dies definiert den Alias ​​/ cgi-bin / mailman / für den vhost, was bedeutet, dass wir auf die Mailman Admin-Schnittstelle für eine Liste unter http: // <vhost> / cgi-bin / mailman / admin / <Listenname> zugreifen können Die Webseite für Benutzer einer Mailingliste finden wir unter http: // <vhost> / cgi-bin / mailman / listinfo / <listenname>.

Unter http://<vhost>/pipermail finden wir die Mailing List Archive.

 

Installieren von PureFTPd and Quota

Wir installieren nun PureFTPd and quota mit folgendem Befehl:

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

jetzt bearbeiten wir folgende Datei: /etc/default/pure-ftpd-common mittels folgendem Befehl:

nano /etc/default/pure-ftpd-common

… und stellen sicher das der „start mode“ auf „standalone“ und der Parameter „VIRTUALCHROOT=true“ eingetragen ist:

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

Jetzt bringen wir PureFTPd bei FTP and TLS Sessions zu erlauben. FTP ist sehr unsicher da Benutzername und Passwort im Klartext übertragen werden. Verwenden wir TLS wird die gesamte Kommunikation verschlüsselt.

Wir führen daher folgenden Befehl aus:

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

Wir dürfen nicht vergessen ein Zertifikat im Verzeichnis /etc/ssl/private/ zu erstellen, der Befehl dazu leutet:

mkdir -p /etc/ssl/private/

und danach folgender Befehl:

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.

Rechte des Zertifikates ändern wir nun wie folgt:

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

PureFTPd neu starten:

service pure-ftpd-mysql restart

Für Quota nun die Datei  /etc/fstab berbeiten. Man kann nun folgendes dem Mount Befehl hinzufügen (siehe Beispiel unten – usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 to the partition with the mount point /):

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 starten wir die folgenden Befehle:

mount -o remount /
quotacheck -avugm
 quotaon -avug

weiter geht es mit dem DNS-Server BIND …

 

Installieren von BIND DNS Server

Der DNS-Server BIND wird wie folgt installiert:

apt-get install bind9 dnsutils

Weiter mit etwas Analysefunktion und Statitiken.

Installieren von Webalizer and AWStats

Webalizer und AWStats installieren wir mit dem folgenden Befehl:

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

wir öffnen die Datei /etc/cron.d/awstats

nano /etc/cron.d/awstats

… und kommentieren alles mit einer Raute zu beginn jeder Zeile aus. Beispiel folgt:

#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

Nun weiter im Programm.

Installieren von Jailkit

Jailkit wird benötigt wenn man „chroot SSH users“ durchführen will. Es kann wie folgt installiert werden.
(wichtig: Jailkit muss vor ISPConfig installiert werden, danach ist es nicht mehr möglich!):

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

jetzt installieren wir das Jailkit.deb Paket wie folgt:

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

Ein wenig Sicherheit und Optionales aber Optimales folgt jetzt.

Installieren von Fail2ban and UFW Firewall

Dieser Teil ist optional aber sehr empfehlenswert, da der ISPConfig monitor versucht LOG Files zu öffnen und bereitzustellen.

apt-get install fail2ban

Um fail2bandazu zu bringen PureFTPd and Dovecot zu monitoren erstellen wir folgende
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

fail2ban neu starten mit:

service fail2ban restart

Um die UFW firewall zu installieren führen wir folgendes aus:

apt-get install ufw

jetzt weiter zu den Webanwendungen wie Webmail (Roundcube oder Squirrel)

 

 

Installieren von RoundCube

Dazu verwenden wir folgenden Befehl:

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

Wir müssen wieder ein paar Fragen beantworten

Configure database for roundcube with dbconfig.common? <-- yes
 MySQL application password for roundcube: <-- press enter
 Password of the databases administrative user: <-- enter the MySQL root password here.

Danach bearbeiten wir eine Datei für RoundCube, und zwar diese: /etc/roundcube/config.inc.php und fügen ein paar Einstellungen hinzu

nano /etc/roundcube/config.inc.php

Der Eintrag „default_host and smtp_server“ wird auf „localhost“ gesetzt.

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

ISPConfig stellt eine Konfiguration in nginx apps vhost für squirrelmail zur Verfügung diese  funktioniert auch für roundcube . Wir müssen nun fogendes aktivieren:

ln -s /usr/share/roundcube /usr/share/squirrelmail

nun können wir Roundcube (Webmail) wie folgt verwenden:

http://192.168.1.100:8081/webmail
http://server1.example.com:8081/webmail
(erst nach der Installation von ISPCONFIG)

 

 

Installieren von ISPConfig 3

Bevor wir mit der Installation von ISPConfig beginnen müssen wir unbedingt sicherstellen das der Dienst APACHE2 gestoppt ist. Wenn er luft müssen wir ihn stoppen. Das passiert wie folgt:

service apache2 stop

… wir entfernen den Automatischen Start on APACHE mit folgendem Befehl:

update-rc.d -f apache2 remove

weil wir schon bei der Kontrolle sind stellen wir noch sicher das nginx läuft:

service nginx restart

 

Um ISPConfig 3.1 zu installieren führen wir folgendes aus:
(ACHTUNG: ist Apache und nginx installiert fragt das Setup welchen Server wir verwenden wollen. Unbedingt für diese Insstallation nginx auswählen)

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

danach starten wir folgenden Befehl:

php -q install.php

Das Setup von IPSCONFIG wird ausgeführt. Alle Dienste werden nun konfiguriert.

# php -q install.php
--------------------------------------------------------------------------------
 _____ ___________ _____ __ _ ____
 |_ _/ ___| ___ \ / __ \ / _(_) /__ \
 | | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
 | | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |
 _| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
 \___/\____/\_| \____/\___/|_| |_|_| |_|\__, | \____/
 __/ |
 |___/
 --------------------------------------------------------------------------------

>> Initial configuration

Operating System: Debian 9.0 (Stretch) 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.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

Apache and nginx detected. Select server to use for ISPConfig: (apache,nginx) [apache]: <-- nginx

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 Nginx
 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 UFW Firewall
 Configuring Fail2ban
 [INFO] service OpenVZ not detected
 Configuring Apps vhost
 Installing ISPConfig
 ISPConfig Port [8080]:

Admin password [admin]: <-- Enter desired ISPConfig admin user password here

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.

Nach der Installation können wir ISPConfig 3 unter http(s)://server1.example.com:8080/ oder http(s)://192.168.1.100:8080/ ( http or https hängt von der Auswahl während der Installation ab) aufrufen.

Die ANMELDUNG beim ersten mal erfolgt mir User: admin und Passwort: admin
Danach das Passwort und eventuell auch den User sofort ändern.

 

Jetzt sind wir am Ende angelangt und der Web Server mit den Maildiensten, einer gewissen Sicherheit und Web-Management mittel ISPCONFIG sollte laufen. Testen wir nun alles durch und stellen wir fest das alles funktioniert können wir das Gerät in Betrieb nehmen und vergessen. Die Funktion wird erhalten bleiben.

Liebe Grüße und viel Erfolg bei der Konfiguration wünscht
Manuel Graf

 


Werbeanzeige





Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Ich akzeptiere