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, um ihn für die Installation von ISPConfig 3.1 vorzubereiten. Das resultierende System wird einen Web-, Mail-, Mailinglisten-, DNS- und FTP-Server bereitstellen.

ISPConfig ist ein Webhosting Control Panel, mit dem Sie die folgenden Dienste über einen Webbrowser konfigurieren können: Apache- oder Nginx-Webserver, Postfix-Mailserver, Courier- 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 Diese Einstellungen können sich für Sie unterscheiden, so dass Sie sie gegebenenfalls ersetzen müssen. Bevor Sie weitermachen, benötigen Sie eine grundlegende Minimalinstallation von Ubuntu 18.04, wie im Tutorial erklärt.

Die Befehle in diesem Tutorial müssen mit Root-Rechten ausgeführt werden. Um das Hinzufügen von sudo vor jedem Befehl zu vermeiden, müssen Sie 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 Sie die Installations-CD aus oder entfernen Sie sie aus der Datei und stellen Sie sicher, dass das Universum und die Multiverse-Repositorys aktiviert sind. Danach sollte sie wie folgt aussehen: /etc/apt/sources.list:

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 Datenbank des apt-Pakets zu aktualisieren und

apt-get upgrade

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

reboot

3. Ändern der Standard-Shell

/bin/sh ist ein Symlink zu /bin/dash, wir brauchen jedoch /bin/bash, nicht /bin/dash. Deshalb machen wir dies:

dpkg-reconfigure dash

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

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

4. AppArmor deaktivieren

AppArmor ist eine Sicherheitserweiterung (ähnlich wie SELinux), die erweiterte Sicherheit bieten soll. Meiner Meinung nach braucht man sie nicht, um ein sicheres System zu konfigurieren, und sie verursacht normalerweise mehr Probleme als Vorteile (denken Sie daran, nachdem Sie eine Woche lang Fehler behoben haben, weil irgendein Dienst nicht wie erwartet funktioniert hat, und dann stellen Sie fest, dass alles in Ordnung war, nur AppArmor hat das Problem verursacht). Daher deaktiviere ich es (dies ist ein Muss, wenn Sie ISPConfig später installieren wollen).

Wir können sie 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. Falls Sie einen virtuellen Server betreiben, sollten Sie diesen Schritt überspringen. Führen Sie einfach

apt-get -y install ntp

und Ihre Systemzeit wird immer synchron sein.

6. Postfix, Dovecot, MariaDB, rkhunter und binutils installieren

Um Postfix zu installieren, müssen wir sicherstellen, dass sendmail nicht installiert ist und läuft. 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 in Ordnung, es bedeutet nur, dass sendmail nicht installiert wurde, so dass es nichts zu entfernen gab.

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

Ihnen werden die folgenden Fragen 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 (z.B. yourdomain.tld) verwenden möchten.

Öffnen Sie anschließend die TLS/SSL- und Einreichungsports in Postfix:

nano /etc/postfix/master.cf

Kommentieren Sie die Abschnitte submission und smtps wie folgt auf – 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 …. “ Zeilen sind wichtig!

Postfix danach neu starten:

service postfix restart

Wir wollen, dass MySQL auf allen Schnittstellen lauscht, nicht nur auf localhost. Deshalb editieren wir /etc/mysql/mariadb.conf.d/50-server.cnf und kommentieren die Zeile bind-address = 127.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. Ausführen:

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

Setzen Sie die Passwort-Authentifizierungsmethode in MariaDB auf nativ, so dass wir später PHPMyAdmin verwenden können, um uns als Root-Benutzer zu verbinden:

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

Bearbeiten Sie die Datei /etc/mysql/debian.cnf und setzen Sie dort das MYSQL / MariaDB Root-Passwort zweimal in den Zeilen, die mit password 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 mit dem Befehl mysql_secure_installation festgelegt haben.

# 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. Führen Sie aus.

netstat -tap | grep mysql

Die Ausgabe sollte wie folgt aussehen:

[email protected]:~# netstat -tap | grep mysql
tcp6 0 0 [::]:mysql [::]:* LISTEN 30591/mysqld
[email protected]:~#

7. Installieren Sie Amavisd-neu, SpamAssassin und Clamav

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

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 libdbd-mysql-perl postgrey

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

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

Zum Starten von ClamAV verwenden Sie

freshclam
service clamav-daemon start

Der folgende Fehler kann bei der ersten Ausführung 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 neue Programm amavisd-new hat derzeit einen Fehler in Ubuntu 18.04, der verhindert, dass E-Mails korrekt mit Dkim 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 ‚patch‘-Befehl 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 Metronome 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 anderen ISPConfig-Funktionen hängen von dieser Software ab.

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ügen Sie einen Shell-Benutzer für Metronome 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

Metronome ist nun nach /opt/metronome installiert.

Das könnte dich auch interessieren …