Der perfekte Server – Debian 9 (Stretch) mit Apache, BIND, Dovecot, PureFTPD und ISPConfig 3.1

Dieses Tutorial zeigt, wie man einen Debian 9-Server (mit Apache2, BIND, Dovecot) für die Installation von ISPConfig 3.1 vorbereitet und wie man ISPConfig installiert. Das Webhosting-Control Panel ISPConfig 3 ermöglicht es Ihnen, die folgenden Dienste über einen Webbrowser zu konfigurieren: Apache oder nginx Webserver, Postfix Mailserver, Kurier- oder Dovecot IMAP/POP3-Server, MySQL, BIND oder MyDNS Nameserver, PureFTPd, SpamAssassin, ClamAV und viele mehr. Dieses Setup umfasst Apache (statt nginx), BIND und Dovecot.

1 Vorbemerkung

In diesem Tutorial werde ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.1.100 und dem Gateway 192.168.1.1.1 verwenden. Diese Einstellungen können für Sie unterschiedlich sein, so dass Sie sie gegebenenfalls ersetzen müssen. Bevor Sie fortfahren können, benötigen Sie eine minimale Installation von Debian 9. Dies kann ein Debian-Minimalimage von Ihrem Hosting-Provider sein oder Sie verwenden das Tutorial Minimal Debian Server, um das Basissystem einzurichten.

2 Installation des SSH-Servers (optional)

Wenn Sie den OpenSSH-Server während der Systeminstallation nicht installiert haben, können Sie dies 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 dieses Tutorials ausführen.

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 Standardprogramm vi hat ein seltsames Verhalten unter Debian und Ubuntu; um dies zu beheben, installieren wir vim-nox:

apt-get install nano vim-nox

Wenn vi dein Lieblingseditor ist, dann ersetze nano durch vi in den folgenden Befehlen zum Bearbeiten von Dateien.

4 Konfigurieren des Hostnamens

Der Hostname Ihres Servers sollte eine Subdomain wie „server1.example.com“ sein. Verwenden Sie keinen Domainnamen ohne Subdomainteil wie „example.com“ als Hostnamen, da dies später zu Problemen bei der Einrichtung Ihrer Mail führen wird. Zuerst solltest du den Hostnamen in /etc/hosts überprüfen und bei Bedarf ändern. Die Linie sollte so sein: „IP-Adresse – Space – voller Hostname inkl. Domain – Space – Subdomainteil“. Für unseren Hostnamen server1.example.com soll die Datei so aussehen:

nano /etc/hosts
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

Bearbeiten Sie dann die Datei /etc/hostname:

nano /etc/hostname

Sie enthält in unserem Fall nur den Teil der Subdomain:

server1

Starten Sie schließlich den Server neu, um die Änderung zu übernehmen:

reboot

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

hostname
hostname -f

Die Ausgabe soll so erfolgen:

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 stretch/updates-Repository enthält (so erhalten Sie immer die neuesten Sicherheitsupdates) und dass die contrib- und non-free Repositories aktiviert sind, da einige benötigte Pakete nicht im Haupt-Repository liegen.

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

Lauf:

apt-get update

So aktualisieren Sie die apt-Paketdatenbank

apt-get upgrade

und um die neuesten Updates zu installieren (falls vorhanden).

6 Ändern der Standard-Shell

/bin/sh ist ein Symlink zu /bin/dash, aber wir brauchen /bin/bash, nicht /bin/dash. Deshalb tun wir das:

dpkg-reconfigure dash

Dash als Standardsystem-Shell verwenden (/bin/sh)? <- nein

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

7 Synchronisieren der Systemuhr

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

apt-get install ntp

und Ihre Systemzeit wird immer synchron sein.

8 Postfix, Dovecot, MySQL, rkhunter und Binutils installieren

Wir können Postfix, Dovecot, MySQL, rkhunter und Binutils mit einem einzigen 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

Wenn Sie MySQL gegenüber MariaDB bevorzugen, ersetzen Sie die Pakete „mariadb-client mariadb-server“ im obigen Befehl durch „mysql-client mysql-server“.

Die folgenden Fragen werden Ihnen gestellt:

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

Um die MariaDB / MySQL-Installation zu sichern und die Testdatenbank 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 MySQL root password
Re-enter new password: <-- Repeat the MySQL 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

Öffnen Sie anschließend 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 bei Bedarf Zeilen hinzu, so dass dieser Abschnitt der master.cf-Datei genau wie der untenstehende aussieht.

[...]
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 anschließend neu:

service postfix restart

Wir wollen, dass MySQL an allen Schnittstellen lauscht, nicht nur an localhost. Deshalb bearbeiten wir /etc/mysql/mariadb.conf.d/50-server.cnf und kommentieren die Zeile bind-address = 127.0.0.0.1 aus und fügen die Zeile sql-mode=“NO_ENGINE_SUBSTITUTION hinzu:

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“

[…]

Stellen Sie die Methode zur Passwortauthentifizierung in MariaDB auf nativ, damit wir PHPMyAdmin später 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 Passwort beginnen.

nano /etc/mysql/debian.cnf

Das MySQL-Root-Passwort, das hinzugefügt werden muss, wird in read angezeigt, in diesem Beispiel ist 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 zu vermeiden ‚Fehler bei der Annahme: Zu viele geöffnete Dateienwir werden jetzt für MariaDB höhere offene Dateigrenzen setzen.

Öffnen Sie die Datei /etc/security/limits.conf mit einem Editor:

nano /etc/security/limits.conf

und fügen Sie diese Zeilen am Ende der Datei hinzu.

mysql soft nofile 65535
mysql hard nofile 65535

Erstellen Sie anschließend ein neues Verzeichnis /etc/systemd/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 das System neu und starten MariaDB neu:

systemctl daemon-reload
service mysql restart

Überprüfen Sie nun, ob das Netzwerk aktiviert ist. Laufen

netstat -tap | grep mysql

Die Ausgabe sollte so aussehen:

root@server1:/home/administrator# netstat -tap | grep mysql
tcp6 0 0 [::]:mysql [::]:* LISTEN 17776/mysqld
root@server1:/home/administrator#

9 Amavisd-neu, SpamAssassin und ClamAV installieren

Um amavisd-neu, SpamAssassin und ClamAV zu installieren, führen wir 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

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

service spamassassin stop
systemctl disable spamassassin

9.1 Metronom XMPP Server installieren (optional)

In diesem Schritt wird der Metronom XMPP-Server installiert, der einen Chat-Server bereitstellt, der mit dem XMPP-Protokoll kompatibel ist. Dieser Schritt ist optional, wenn Sie keinen Chatserver benötigen, dann können Sie diesen Schritt überspringen. Keine weiteren ISPConfig-Funktionen sind von dieser Software abhängig.

Fügen Sie das Prosody-Paket-Repository in Debian hinzu.

echo "deb http://packages.prosody.im/debian stretch main" > /etc/apt/sources.list.d/metronome.list
wget http://prosody.im/files/prosody-debian-packages.key -O - | sudo apt-key add -

Aktualisieren Sie die Paketliste:

apt-get update

und installieren Sie die Pakete mit apt.

apt-get install git lua5.1 liblua5.1-0-dev lua-filesystem libidn11-dev libssl-dev lua-zlib lua-expat lua-event lua-bitop lua-socket lua-sec luarocks luarocks
luarocks install lpc

Füge einen Shell-Benutzer für Metronom hinzu.

adduser --no-create-home --disabled-login --gecos 'Metronome' metronome

Laden Sie Metronom in das Verzeichnis /opt herunter und kompilieren Sie es.

cd /opt; git clone https://github.com/maranda/metronome.git metronome
cd ./metronome; ./configure --ostype=debian --prefix=/usr
make
make install

Das Metronom ist nun in /opt/metronome installiert.

10 Installieren Sie Apache2, PHP, FCGI, suExec, Pear, phpMyAdmin und mcrypt.

Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear und mcrypt können wie folgt installiert werden:

apt-get -y install apache2 apache2-doc apache2-utils libapache2-mod-php php7.0 php7.0-common php7.0-gd php7.0-mysql php7.0-imap phpmyadmin php7.0-cli php7.0-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear php7.0-mcrypt mcrypt  imagemagick libruby libapache2-mod-python 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 libapache2-mod-passenger php7.0-soap

Sie werden die folgenden Fragen sehen:

Web server to reconfigure automatically: <- apache2
 Configure database for phpmyadmin with dbconfig-common? <- yes
Enter the phpmyadmin application password? <-  Just press enter

Führen Sie dann den folgenden Befehl aus, um die Apache-Module suexec, rewrite, ssl, actions und include zu aktivieren (plus dav, dav_fs und auth_digest, wenn Sie WebDAV verwenden möchten):

a2enmod suexec rewrite ssl actions include dav_fs dav auth_digest cgi headers

Um sicherzustellen, dass der Server nicht durch die HTTPOXY-Schwachstelle angegriffen werden kann, deaktivieren wir den HTTP_PROXY-Header im Apache global, indem wir die Konfigurationsdatei /etc/apache2/conf-available/httpoxy.conf hinzufügen.

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
service apache2 restart

10.1 HHVM (HipHop Virtual Machine) installieren

Es gibt noch keine HHVM-Pakete für Debian 9. HHVM ist ein optionaler PHP-Modus, so dass Ihr Server ohne ihn funktioniert, Sie können den PHP-Modus HHVM einfach nicht für Websites verwenden.

10.2 SuPHP

SuPHP ist für Debian 9 nicht mehr verfügbar, die SuPHP-Funktionen sind veraltet und werden ebenfalls aus ISPConfig entfernt. Verwenden Sie die verfügbaren PHP-Modi PHP-FPM oder PHP-FCGI zusammen mit suexec anstelle von SuPHP.

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.

Jetzt 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 der Website werden von ISPConfig erstellt, wenn Sie die Websites hinzufügen.

12 PHP-FPM installieren

Um PHP-FPM mit Apache verwenden zu können, benötigen wir das mod_proxy_fcgi Apache Modul, das standardmäßig installiert ist und nur aktiviert werden muss. Wir können PHP-FPM und wie folgt installieren:

apt-get -y install php7.0-fpm

Stellen Sie sicher, dass Sie die Module aktivieren und den Apache neu starten:

a2enmod actions proxy_fcgi alias 
service apache2 restart

12.2 PHP Opcode Cache installieren (optional)

Opcache ist ein kostenloser PHP-Opcode Cacher zum Caching und zur Optimierung von PHP-Zwischencode. APCu ist ein Kompatibilitätsmodul, das APC-kompatible Funktionen für Opcache bereitstellt, das von vielen CMS-Cache-Systemen verwendet wird, und es wird empfohlen, diese PHP-Erweiterungen zu installieren, um Ihre PHP-Seite zu beschleunigen.

APCu kann wie folgt installiert werden:

apt-get -y install php7.0-opcache php-apcu

Starten Sie nun den Apache neu:

service apache2 restart

13 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:

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

Bevor wir Mailman starten 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 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"

Lauf:

newaliases

und starten Sie Postfix neu:

service postfix restart

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

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

Hiermit wird der Alias /cgi-bin/mailman/ für alle Apache vhosts definiert, d.h. Sie können auf die Mailman-Administrationsschnittstelle für eine Liste unter http://server1.example.com/cgi-bin/mailman/admin/ zugreifen, und 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 das Archiv der Mailingliste.

Starten Sie den Apache anschließend neu:

service apache2 restart

Dann starten Sie den Mailman-Daemon:

service mailman start

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

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

15 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

Eine Erklärung zu diesem Thema finden Sie hier.

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

17 Jailkit installieren

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

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

18 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

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

19 RoundCube installieren

Installiere RoundCube mit diesem Befehl:

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

Der Installateur wird die folgenden Fragen stellen:

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.

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

nano /etc/roundcube/config.inc.php

Setzt den 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 hinzu, Sie können die Zeile direkt am Anfang der Datei hinzufügen. HINWEIS: Verwenden Sie nicht /mail als Alias, da sonst das ispconfig E-Mail-Modul nicht mehr funktioniert!

Alias /webmail /var/lib/roundcube

Laden Sie dann den Apache neu:

service apache2 reload

Nun können Sie wie folgt auf den RoundCube zugreifen:

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

20 ISPConfig 3 herunterladen

20.1 Herunterladen der stabilen Version (empfohlen)

Um ISPConfig 3 von der neuesten freigegebenen Version zu installieren, gehen Sie wie folgt vor:

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

20.2 Laden Sie eine Beta-Version der nächsten 3.1-Version herunter (empfohlen nur für Testaufbauten!).

Wenn Sie die Vorabversion einer kommenden 3.1-Version ausprobieren möchten, laden Sie sie mit diesem Befehl herunter:

cd /tmp
wget -O ISPConfig-3.1-dev.tar.gz  https://git.ispconfig.org/ispconfig/ispconfig3/repository/archive.tar.gz?ref=stable-3.1
tar xfz ISPConfig-3.1-dev.tar.gz
cd ispconfig3-stable-3.1*
cd install

21 ISPConfig installieren

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

php -q install.php

Dadurch wird das Installationsprogramm von ISPConfig 3 gestartet. Der Installer konfiguriert alle Dienste wie Postfix, Dovecot, etc. für Sie. Eine manuelle Einrichtung, wie sie für ISPConfig 2 (Perfect Setup Guides) erforderlich ist, ist nicht erforderlich.

# 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
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
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.1.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 Ihrer ersten Anmeldung ändern):

Das System ist nun einsatzbereit.

22 Zusätzliche Hinweise

22.1 OpenVZ

Wenn der Debian-Server, den Sie gerade in diesem Tutorial eingerichtet haben, ein OpenVZ-Container (virtuelle Maschine) ist, sollten Sie dies auf dem Hostsystem tun (ich gehe davon aus, dass die ID des OpenVZ-Containers 101 ist – ersetzen Sie ihn durch die richtige VPSID auf Ihrem System):

VPSID=101
for CAP in CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE CHOWN DAC_READ_SEARCH SETGID SETUID NET_BIND_SERVICE NET_ADMIN SYS_CHROOT SYS_NICE
do
  vzctl set $VPSID --capability ${CAP}:on --save
done

23 Links

Das könnte dich auch interessieren …