Der perfekte Server – Ubuntu 18.04 (Bionic Beaver) mit Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot und ISPConfig 3.1

Dieses Tutorial zeigt die Installation eines Ubuntu 18.04 (Bionic Beaver) Webhosting-Servers mit Apache 2.4, Postfix, Dovecot, Bind und PureFTPD zur Vorbereitung auf die Installation von ISPConfig 3.1. Das resultierende System stellt ein Web, Mail, Mailingliste, DNS und FTP-Server zur Verfügung.

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

1. Vorbemerkung

In diesem Tutorial verwende ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.1.100 und dem Gateway 192.168.1.1.1 Diese Einstellungen können für Sie abweichen, so dass Sie sie gegebenenfalls ersetzen müssen.

Die Befehle in diesem Tutorial müssen mit root-Rechten ausgeführt werden. Um zu vermeiden, dass sudo vor jedem Befehl hinzugefügt wird, musst du durch Ausführen root-Benutzer werden:

sudo -s

bevor Sie fortfahren.

2. Bearbeiten Sie /etc/apt/sources.list und aktualisieren Sie Ihre Linux-Installation.

Bearbeiten Sie /etc/apt/sources.list. Kommentieren oder entfernen Sie die Installations-CD aus der Datei und stellen Sie sicher, dass das Universum und die multiverse Repositories aktiviert sind. So sollte es danach aussehen:

nano /etc/apt/sources.list
#
# deb cdrom:[Ubuntu-Server 18.04 LTS _Bionic Beaver_ - Release amd64 (20180425.1)]/ bionic main restricted

#deb cdrom:[Ubuntu-Server 18.04 LTS _Bionic Beaver_ - Release amd64 (20180425.1)]/ bionic main restricted

# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://de.archive.ubuntu.com/ubuntu/ bionic main restricted
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic main restricted

## Major bug fix updates produced after the final release of the
## distribution.
deb http://de.archive.ubuntu.com/ubuntu/ bionic-updates main restricted
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic-updates main restricted

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://de.archive.ubuntu.com/ubuntu/ bionic universe
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic universe
deb http://de.archive.ubuntu.com/ubuntu/ bionic-updates universe
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic-updates universe

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://de.archive.ubuntu.com/ubuntu/ bionic multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic multiverse
deb http://de.archive.ubuntu.com/ubuntu/ bionic-updates multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic-updates multiverse

## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://de.archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src http://de.archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse

## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu bionic partner
# deb-src http://archive.canonical.com/ubuntu bionic partner

deb http://security.ubuntu.com/ubuntu bionic-security main restricted
# deb-src http://security.ubuntu.com/ubuntu bionic-security main restricted
deb http://security.ubuntu.com/ubuntu bionic-security universe
# deb-src http://security.ubuntu.com/ubuntu bionic-security universe
deb http://security.ubuntu.com/ubuntu bionic-security multiverse
# deb-src http://security.ubuntu.com/ubuntu bionic-security multiverse

Führen Sie dann

apt-get update

um die apt-Paketdatenbank zu aktualisieren und

apt-get upgrade

um die neuesten Updates zu installieren (falls vorhanden). Wenn Sie sehen, dass ein neuer Kernel als Teil der Updates installiert wird, sollten Sie das System anschließend neu starten:

reboot

3. Ändern der Standardshell

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

4. AppArmor deaktivieren

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

Wir können es so deaktivieren:

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

5. Synchronisieren der Systemuhr

Es ist eine gute Idee, die Systemuhr mit einem NTP-Server (Network Time Protocol) über das Internet zu synchronisieren, wenn Sie einen physischen Server betreiben. Wenn Sie einen virtuellen Server betreiben, sollten Sie diesen Schritt überspringen. Einfach laufen lassen

apt-get -y install ntp

und Ihre Systemzeit wird immer synchron sein.

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

Für die Installation von Postfix müssen wir sicherstellen, dass sendmail nicht installiert und ausgeführt wird. Um sendmail zu stoppen und zu entfernen, führen Sie diesen Befehl aus:

service sendmail stop; update-rc.d -f sendmail remove

Die Fehlermeldung:

Failed to stop sendmail.service: Unit sendmail.service not loaded.

Ist ok, es bedeutet nur, dass sendmail nicht installiert wurde, also gab es nichts zu entfernen.

Jetzt können wir Postfix, Dovecot, MariaDB (als MySQL-Ersatz), rkhunter und binutils mit einem einzigen Befehl installieren:

apt-get -y install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudo

Die folgenden Fragen werden Ihnen gestellt:

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

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

Ö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 – fügen Sie die Zeile -o smtpd_client_restrictions=permit_sasl_authenticated hinzu, lehnen Sie beide Abschnitte ab und lassen Sie alles danach kommentiert:

[...]
submission inet n       -       y       -       -       smtpd
  -o syslog_name=postfix/submission
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o smtpd_reject_unlisted_recipient=no
#  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
smtps     inet  n       -       y       -       -       smtpd
  -o syslog_name=postfix/smtps
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
#  -o smtpd_reject_unlisted_recipient=no
#  -o smtpd_client_restrictions=$mua_client_restrictions
#  -o smtpd_helo_restrictions=$mua_helo_restrictions
#  -o smtpd_sender_restrictions=$mua_sender_restrictions
#  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
#  -o milter_macro_daemon_name=ORIGINATING
[...]

HINWEIS: Die Whitespaces vor dem „-o ……“. “ Linien sind wichtig!

Starten Sie Postfix danach 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.0.1 aus:

nano /etc/mysql/mariadb.conf.d/50-server.cnf
[...]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address           = 127.0.0.1

[…]

Nun setzen wir ein Root-Passwort in MariaDB. Lauf:

mysql_secure_installation

Diese Fragen werden Ihnen gestellt:

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

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“. Ersetzen Sie das Wort „howtoforge“ durch das Passwort, das Sie für den MySQL-Root-Benutzer festgelegt haben, durch den Befehl mysql_secure_installation.

# 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

Dann starten wir MariaDB neu:

service mysql restart

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

netstat -tap | grep mysql

Die Ausgabe sollte so aussehen:

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

7. Installieren Sie Amavisd-neu, SpamAssassin und Clamav.

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

apt-get -y install amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl postgrey

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

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

Um ClamAV zu starten, verwenden Sie:

freshclam
service clamav-daemon start

Der folgende Fehler kann beim ersten Lauf von freshclam ignoriert werden.

ERROR: /var/log/clamav/freshclam.log is locked by another process
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).

Das amavisd-neue Programm hat derzeit einen Fehler in Ubuntu 18.04, der verhindert, dass E-Mails mit Dkim korrekt signiert werden. Führen Sie die folgenden Befehle aus, um amavisd-new zu patchen.

cd /tmp
wget https://git.ispconfig.org/ispconfig/ispconfig3/raw/stable-3.1/helper_scripts/ubuntu-amavisd-new-2.11.patch
cd /usr/sbin
cp -pf amavisd-new amavisd-new_bak
patch < /tmp/ubuntu-amavisd-new-2.11.patch

Falls Sie einen Fehler für den letzten Befehl’patch‘ erhalten, dann hat Ubuntu das Problem wahrscheinlich in der Zwischenzeit behoben, so dass es sicher sein sollte, diesen Fehler dann zu ignorieren.

7.1 Metronom XMPP Server installieren (optional)

Der Metronom XMPP-Server stellt einen XMPP-Chat-Server zur Verfügung. 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.

Installieren Sie die folgenden Pakete mit apt.

apt-get -y 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.

Das könnte Dich auch interessieren …