GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Der perfekte Server – Ubuntu 20.04 mit Apache, PHP, MariaDB, PureFTPD, BIND, Postfix, Dovecot und ISPConfig 3.2

Dieses Tutorial zeigt die Installation eines Ubuntu 20.04 (Focal Fossa) Webhosting-Servers mit Apache 2.4, Postfix, Dovecot, Bind und PureFTPD, um ihn für die Installation von ISPConfig 3.2 vorzubereiten. Das resultierende System stellt einen Web-, Mail-, Mailinglisten-, DNS- und FTP-Server bereit.

ISPConfig ist ein Webhosting-Bedienfeld, mit dem Sie die folgenden Dienste über einen Webbrowser konfigurieren können:Apache- oder Nginx-Webserver, Postfix-Mailserver, Courier- oder Dovecot-IMAP/POP3-Server, MariaDB als MySQL-Ersatz, 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 dieser Anleitung verwende ich den Hostnamen server1.example.com mit der IP-Adresse 192.168.0.100 und dem Gateway 192.168.0.1  Diese Einstellungen können für Sie abweichen, daher müssen Sie sie gegebenenfalls ersetzen. Bevor Sie fortfahren, benötigen Sie eine grundlegende Minimalinstallation von Ubuntu 20.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 Root-Benutzer werden, indem Sie Folgendes ausführen:

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 die Universe- und Multiverse-Repositories aktiviert sind. Danach sollte es so aussehen:

nano /etc/apt/sources.list
# Siehe http://help.ubuntu.com/community/UpgradeNotes für ein Upgrade auf # neuere Versionen der Distribution.deb http://de.archive.ubuntu.com/ubuntu fokale Haupteinschränkung# deb- src http://de.archive.ubuntu.com/ubuntu Focal Main Restricted## Wichtige Bugfix-Updates, die nach der endgültigen Veröffentlichung der## Distribution.deb erstellt wurden http://de.archive.ubuntu.com/ubuntu Focal- Updates Main Restricted# deb-src http://de.archive.ubuntu.com/ubuntu Focal-Updates Main Restricted## N.B. Software aus diesem Repository wird vom Ubuntu##-Team VÖLLIG NICHT UNTERSTÜTZT. Bitte beachten Sie auch, dass die Software im Universum KEINE## Überprüfungen oder Aktualisierungen vom Ubuntu-Sicherheitsteam.deb http://de.archive.ubuntu.com/ubuntu focus universe# deb-src http://de.archive erhält .ubuntu.com/ubuntu Focal Universedeb http://de.archive.ubuntu.com/ubuntu Focal-Updates Universe# deb-src http://de.archive.ubuntu.com/ubuntu Focal-Updates Universe## N.B. Software aus diesem Repository wird vom Ubuntu##-Team VOLLSTÄNDIG NICHT UNTERSTÜTZT und steht möglicherweise nicht unter einer freien Lizenz. Bitte vergewissern Sie sich über # Ihre Rechte zur Nutzung der Software. Bitte beachten Sie auch, dass Software in## multiverse KEINE Überprüfungen oder Aktualisierungen vom Ubuntu## Sicherheitsteam.deb http://de.archive.ubuntu.com/ubuntu focus multiverse# deb-src http://de erhält .archive.ubuntu.com/ubuntu fokales multiversedeb http://de.archive.ubuntu.com/ubuntu fokales-updates-multiverse# deb-src http://de.archive.ubuntu.com/ubuntu fokales-updates-multiverse## Hinweis:Software aus diesem Repository wurde möglicherweise nicht so## ausführlich getestet wie die in der Hauptversion enthaltene, obwohl sie## neuere Versionen einiger Anwendungen enthält, die möglicherweise nützliche Funktionen bieten.## Bitte beachten Sie auch, dass Software in Backports NICHT empfangen wird alle Überprüfungen## oder Updates vom Ubuntu-Sicherheitsteam.deb http://de.archive.ubuntu.com/ubuntu Focal-Backports Main Restricted Universe Multiverse# deb-src http://de.archive.ubuntu.com/ubuntu Focal-Backports Main Restricted Universe Multiverse## Entkommentieren Sie die folgenden zwei Zeilen, um Software aus Canonicals## „Partner“-Repository hinzuzufügen.## Diese Software ist nicht Teil von Ubuntu, sondern wird von Canonical und den## jeweiligen Anbietern als Service angeboten an Ubuntu-Benutzer. # deb http://archive.canonical.com/ubuntu focus partner -security main limited# deb-src http://de.archive.ubuntu.com/ubuntu fokale-sicherheit main limiteddeb http:/ /de.archive.ubuntu.com/ubuntu Focal-Security Universe# deb-src http://de.archive.ubuntu.com/ubuntu Focal-Security Universedeb http://de.archive.ubuntu.com/ubuntu Focal- Sicherheitsmultiversum # deb-src http://de.archive.ubuntu.com/ubuntu fokales Sicherheitsmultiversum

Dann ausführen

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 im Rahmen der Updates ein neuer Kernel installiert wird, sollten Sie das System danach neu starten:

Neustart

3. Ändern Sie die Standard-Shell

/bin/sh ist ein symbolischer Link zu /bin/dash, wir brauchen jedoch /bin/bash, nicht /bin/dash. Deshalb machen wir das:

dpkg-reconfigure dash

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

Andernfalls schlägt die Installation von ISPConfig fehl.

4. AppArmor deaktivieren

AppArmor ist eine Sicherheitserweiterung (ähnlich wie 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 Fehler behoben haben, weil ein Dienst nicht wie erwartet funktioniert hat, und dann finden Sie heraus, dass alles in Ordnung war, nur AppArmor verursachte das Problem). Daher deaktiviere ich es (dies ist ein Muss, wenn Sie später ISPConfig installieren möchten).

Wir können es wie folgt deaktivieren:

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

5. Synchronisieren Sie die Systemuhr

Es ist eine gute Idee, die Systemuhr mit einem NTP (n Netzwerk t ich bin p rotocol)-Server über das Internet, wenn Sie einen physischen Server betreiben. Falls Sie einen virtuellen Server betreiben, sollten Sie diesen Schritt überspringen. Laufen Sie einfach

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 ist und ausgeführt wird. Um sendmail zu stoppen und zu entfernen, führen Sie diesen Befehl aus:

Dienst sendmail stoppen; update-rc.d -f sendmail entfernen

Die Fehlermeldung:

Fehler beim Beenden von sendmail.service:Unit sendmail.service nicht geladen.

Ist ok, es bedeutet nur, dass sendmail nicht installiert war, 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 sudo patch

Ihnen werden die folgenden Fragen gestellt:

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

Wichtig ist, dass Sie als "System-Mail-Name" eine Subdomain wie server1.example.com oder server1.ihredomain.com verwenden und keine Domain, die Sie später als E-Mail-Domain verwenden möchten (z. B. ihredomain.tld).

Öffnen Sie als Nächstes die TLS/SSL- und Übermittlungsports in Postfix:

nano /etc/postfix/master.cf

Kommentieren Sie die Abschnitte "submission" und "smtps" wie folgt aus - fügen Sie die Zeile -o smtpd_client_restrictions=permit_sasl_authenticated,reject zu beiden Abschnitten hinzu und lassen Sie alles danach auskommentiert:

[...]submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes
-o smtpd_tls_auth_only=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 lehnen # -o milter_macro_daemon_name =ORIGINATINGsmtps 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 lehnen # -o milter_macro_daemon_name =URSPRUNG [...]

HINWEIS: Wichtig sind die Leerzeichen vor den "-o .... "-Zeilen!

Postfix danach neu starten:

Service-Postfix-Neustart

Wir möchten, dass MySQL auf allen Schnittstellen lauscht, nicht nur auf localhost. Daher 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
[...]# Anstatt das Netzwerk zu überspringen, wird jetzt standardmäßig nur auf # localhost gelauscht, was kompatibler und nicht weniger sicher ist.# Bindungsadresse =127.0.0.1

[...]

Jetzt setzen wir ein Root-Passwort in MariaDB. Ausführen:

mysql_secure_installation

Ihnen werden folgende Fragen gestellt:

Aktuelles Passwort für Root eingeben (Eingabe für keins):<-- Enter drücken
Root-Passwort setzen? [J/n] <-- j
Neues Passwort:<-- Geben Sie hier das neue MariaDB-Root-Passwort ein
Neues Passwort erneut eingeben:<-- Wiederholen Sie das Passwort
Anonyme Benutzer entfernen? [Y/n] <-- y
Root-Anmeldung aus der Ferne nicht zulassen? [Y/n] <-- y
Berechtigungstabellen jetzt neu laden? [J/n] <-- ja

Stellen Sie die Passwort-Authentifizierungsmethode in MariaDB auf nativ ein, damit 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 das MYSQL/MariaDB-Root-Passwort dort zweimal in den Zeilen, die mit password beginnen.

nano /etc/mysql/debian.cnf

Das hinzuzufügende MySQL-Root-Passwort wird rot angezeigt. In diesem Beispiel lautet 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.

# Automatisch generiert für Debian-Skripte. NICHT ANFASSEN!
[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

Ö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 als Nächstes mit dem Befehl mkdir ein neues Verzeichnis /etc/systemd/system/mysql.service.d/.

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

und fügen Sie eine neue Datei darin hinzu:

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

Fügen Sie die folgenden Zeilen in diese Datei ein:

[Dienst]
LimitNOFILE=unendlich

Speichern Sie die Datei und schließen Sie den Nano-Editor.

Dann laden wir systemd neu und starten MariaDB neu:

systemctl daemon-reload
service mariadb restart

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

netstat -tap | grep mysql

Die Ausgabe sollte so aussehen:

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

7. Installieren Sie Amavisd-new, 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 amavisd, das die SpamAssassin-Filterbibliothek intern lädt, sodass 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 bei der ersten Ausführung von freshclam ignoriert werden.

FEHLER:/var/log/clamav/freshclam.log wird von einem anderen Prozess gesperrt
FEHLER:Problem mit internem Logger (UpdateLogFile =/var/log/clamav/freshclam.log).

8. Installieren Sie Apache, PHP, phpMyAdmin, FCGI, SuExec, Pear

Apache 2.4, PHP 7.4, phpMyAdmin, FCGI, suExec und Pear können wie folgt installiert werden:

apt-get -y install apache2 apache2-doc apache2-utils libapache2-mod-php php7.4 php7.4-common php7.4-gd php7.4-mysql php7.4-imap phpmyadmin php7.4-cli php7.4-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear libruby libapache2-mod-python php7.4-curl php7.4-intl php7.4-pspell php7.4-sqlite3 php7.4-tidy php7 .4-xmlrpc php7.4-xsl memcached php-memcache php-imagick php7.4-zip php7.4-mbstring php-soap php7.4-soap php7.4-opcache php-apcu php7.4-fpm libapache2-reload -perl

Sie sehen die folgende Frage:

Webserver zur automatischen Neukonfiguration:<-- apache2


Datenbank für phpmyadmin mit dbconfig-common konfigurieren? <-- Ja

Passwort der MySQL-Anwendung für phpmyadmin:<-- Drücken Sie die Eingabetaste

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

a2enmod suexec rewrite SSL-Aktionen beinhalten cgi alias proxy_fcgi
a2enmod dav_fs dav auth_digest Header

Um sicherzustellen, dass der Server nicht über die HTTPOXY-Schwachstelle angegriffen werden kann, werde ich den HTTP_PROXY-Header in Apache global deaktivieren. Erstellen Sie eine neue httpoxy.conf-Datei mit nano:

nano /etc/apache2/conf-available/httpoxy.conf

Fügen Sie diesen Inhalt in die Datei ein:

 RequestHeader setzt Proxy früh zurück

Aktivieren Sie die Konfigurationsdatei, indem Sie Folgendes ausführen:

a2enconf httpoxy

Starten Sie danach Apache neu:

service apache2 neu starten

Wenn Sie Ruby-Dateien mit der Erweiterung .rb auf Ihren mit ISPConfig erstellten Websites hosten möchten, müssen Sie die Zeile application/x-ruby rb in /etc/mime.types auskommentieren:

nano /etc/mime.types
[...]# application/x-ruby rb[...]

(Dies wird nur für .rb-Dateien benötigt; Ruby-Dateien mit der Erweiterung .rbx funktionieren sofort.)

Danach Apache neu starten:

service apache2 neu starten

9. Installieren Sie Let's Encrypt

ISPConfig 3.2 verfügt über eine integrierte Unterstützung für die kostenlose SSL-Zertifizierungsstelle Let's encrypt. Mit der Let's Encrypt-Funktion können Sie in ISPConfig kostenlose SSL-Zertifikate für Ihre Website erstellen.

Jetzt werden wir Unterstützung für Let's encrypt hinzufügen.

apt-get install certbot

10. Installieren Sie Mailman

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 -y install mailman

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

Unterstützte Sprachen:<-- de (Englisch)
Fehlende Seitenliste <-- Ok

Der Fehler „Job für mailman.service ist fehlgeschlagen, da der Steuerungsprozess mit beendet wurde Fehlercode. ' kann vorerst ignoriert werden.

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

Newlist-Mailman

[email protected]:~# newlist mailman
Geben Sie die E-Mail-Adresse der Person ein, die die Liste führt: <-- Administrator-E-Mail-Adresse, z. B. [email protected]
Anfängliches Mailman-Passwort: <-- Admin-Passwort für die Mailman-Liste
Um das Erstellen Ihrer Mailingliste zu abschließen, müssen Sie Ihre /etc/aliases (oder
äquivalente) Datei bearbeiten indem Sie die folgenden Zeilen hinzufügen und möglicherweise das
`newaliases' Programm ausführen:

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

Drücken Sie die Eingabetaste, um den Mailman-Besitzer zu benachrichtigen... <-- ENTER

[E-Mail-geschützt]:~#

Danach /etc/aliases öffnen...

nano /etc/aliases

... und fügen Sie die folgenden Zeilen hinzu:

[...]## mailman Mailinglistemailman:"|/var/lib/mailman/mail/mailman post mailman"mailman-admin:"|/var/lib/mailman/mail/mailman admin mailman "mailman-bounces:"|/var/lib/mailman/mail/mailman prallt mailman ab"mailman-confirm:"|/var/lib/mailman/mail/mailman bestätigen mailman"mailman-join:"|/var/lib/ mailman/mail/mailman tritt mailman bei"mailman-leave:"|/var/lib/mailman/mail/mailman verlässt mailman"mailman-owner:"|/var/lib/mailman/mail/mailman Eigentümer mailman"mailman-request:"|/var/lib/mailman/mail/mailman mailman anfordern"mailman-subscribe:"|/var/lib/mailman/mail/mailman mailman abonnieren"mailman-unsubscribe:"|/var/lib/mailman/mail/mailman Mailman abbestellen" 

Ausführen

newaliases

danach Postfix neu starten:

Service-Postfix-Neustart

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

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

Dies definiert den Alias ​​/cgi-bin/mailman/ für alle Apache vhosts, was bedeutet, dass Sie auf die Mailman-Admin-Oberfläche für eine Liste unter http:///cgi-bin/mailman/admin/ zugreifen können, und die Webseite für Benutzer einer Mailingliste finden Sie unter http:///cgi-bin/mailman/listinfo/.

Unter http:///pipermail finden Sie das Archiv der Mailingliste.

Aktivieren Sie die Konfiguration mit:

a2enconf Mailman

Starten Sie danach Apache neu:

service apache2 neu starten

Starten Sie dann den Mailman-Daemon:

Service Mailman starten

11. Installieren Sie PureFTPd und Quota

PureFTPd und Quota können mit dem folgenden Befehl installiert werden:

apt-get -y install pure-ftpd-common pure-ftpd-mysql Kontingent Kontingenttool

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=eigenständig [...]VIRTUALCHROOT=true [...]

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

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

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

mkdir -p /etc/ssl/private/

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

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

Ländername (2-Buchstaben-Code) [AU]:<-- Geben Sie Ihren Ländernamen ein (z. B. "DE").
Name des Bundesstaates oder der Provinz (vollständiger Name) [Some-State]:<-- Geben Sie den Namen Ihres Bundesstaates oder der Provinz ein.
Ortsname (z. B. Stadt) []:<-- Geben Sie Ihre Stadt ein.
Name der Organisation (z. B. Firma) [Internet Widgits Pty Ltd]:<-- Geben Sie den Namen Ihrer Organisation ein (z. B. den Namen Ihrer Firma).
Name der Organisationseinheit (z. B. Abteilung) []:<-- Geben Sie den Namen Ihrer Organisationseinheit ein (z. B. "IT-Abteilung").
Allgemeiner Name (z. B. IHR Name) []:<-- Geben Sie den vollständig qualifizierten Domänennamen des Systems ein (z. B. "server1.example.com").
E-Mail-Adresse []:<-- Geben Sie Ihre E-Mail-Adresse ein.

Ändern Sie die Berechtigungen des SSL-Zertifikats:

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

Starten Sie dann PureFTPd neu:

Dienst pure-ftpd-mysql neu starten

Bearbeiten Sie /etc/fstab. Meine sieht so aus (ich habe ,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 zur Partition mit dem Einhängepunkt / hinzugefügt):

nano /etc/fstab
# /etc/fstab:Statische Dateisysteminformationen.
#
# Verwenden Sie 'blkid', um die universell eindeutige Kennung für ein
# Gerät auszugeben; Dies kann mit UUID=als robustere Methode zum Benennen von Geräten verwendet werden,
# die auch dann funktioniert, wenn Festplatten hinzugefügt und entfernt werden. Siehe fstab(5).
#
#
/dev/mapper/server1--vg- root / ext4 error=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
/dev/mapper/server1--vg-swap_1 none swap sw 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0

Führen Sie die folgenden Befehle aus, um Kontingente zu aktivieren:

mount -o remount /
quotacheck -avugm
quotaon -avug

Was die folgende Ausgabe zeigt:

[email protected]:/tmp# quotacheck -avugm
quotacheck:Scanning /dev/mapper/server1--vg-root [/] done
quotacheck:Konnte alte Benutzerquotendatei nicht anzeigen // quota.user:Keine solche Datei oder Verzeichnis. Nutzung wird nicht abgezogen.
quotacheck:Alte Gruppenquotendatei kann nicht angezeigt werden //quota.group:Keine solche Datei oder kein Verzeichnis. Die Nutzung wird nicht abgezogen.
quotacheck:Alte Benutzerkontingentdatei kann nicht angezeigt werden //quota.user:Keine solche Datei oder dieses Verzeichnis. Nutzung wird nicht abgezogen.
quotacheck:Alte Gruppenquotendatei kann nicht angezeigt werden //quota.group:Keine solche Datei oder kein Verzeichnis. Nutzung wird nicht abgezogen.
quotacheck:13602 Verzeichnisse und 96597 Dateien überprüft
quotacheck:Alte Datei nicht gefunden.
quotacheck:Alte Datei nicht gefunden.
[email protected]:/ tmp# quotaon -avug
/dev/mapper/server1--vg-root [/]:Gruppenkontingente aktiviert
/dev/mapper/server1--vg-root [/]:Benutzerkontingente aktiviert ein

12. Installieren Sie den BIND-DNS-Server

BIND kann wie folgt installiert werden:

apt-get -y install bind9 dnsutils haveged

Aktivieren und starten Sie den Haveged-Daemon:

systemctl enable haveged
systemctl start haveged

13. Installieren Sie Vlogger, Webalizer, AWStats und GoAccess

Vlogger, Webalizer und AWStats können wie folgt installiert werden:

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

Installieren der neuesten GoAccess-Version direkt aus dem GoAccess-Repository:

echo "deb https://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/goaccess.gpg add -
sudo apt-get update
sudo apt-get install goaccess

Danach /etc/cron.d/awstats öffnen...

nano /etc/cron.d/awstats

... und alles in dieser Datei auskommentieren:

# MAILTO=root# */10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] &&/usr/share/awstats/tools/update.sh# Statische Berichte generieren:# 10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] &&/usr/share/awstats/tools/buildstatic.sh

14. Jailkit installieren

Jailkit wird verwendet, um Shell-Benutzer und Cronjobs in ISPConfig zu inhaftieren. Jailkit mit apt installieren:

apt-get -y install jailkit

15. Fail2ban und UFW installieren

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

apt-get -y install fail2ban

Damit fail2ban PureFTPd und Dovecot überwacht, erstellen Sie die Datei /etc/fail2ban/jail.local:

nano /etc/fail2ban/jail.local
[pure-ftpd]enabled =trueport =ftpfilter =pure-ftpdlogpath =/var/log/syslogmaxretry =3[dovecot]enabled =truefilter =dovecotaction =iptables-multiport[name=dovecot-pop3imap, port="pop3, pop3s,imap,imaps", protocol=tcp]logpath =/var/log/mail.logmaxretry =5[postfix]enabled =trueport =smtpfilter =postfixlogpath =/var/log/mail.logmaxretry =3

Danach fail2ban neu starten:

Dienst fail2ban Neustart

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

apt-get install ufw

16. Installieren Sie Roundcube Webmail

Um Roundcube Webmail zu installieren, führen Sie Folgendes aus:

apt-get -y installiere roundcube roundcube-core roundcube-mysql roundcube-plugins roundcube-plugins-extra javascript-common libjs-jquery-mousewheel php-net-sieve tinymce

Das Installationsprogramm stellt möglicherweise die folgenden Fragen:

Datenbank für Roundcube mit dbconfig-common konfigurieren? <-- Ja
MySQL-Anwendungspasswort für Roundcube:<-- Drücken Sie die Eingabetaste

Machen Sie sich keine Sorgen, wenn Sie diese Fragen und eine Warnung zum UCF-Skript nicht erhalten, das ist in Ordnung.

Die ucf-Warnung, die Sie auf der Shell erhalten, kann ignoriert werden, sie hat keine negativen Auswirkungen auf die Installation.

Bearbeiten Sie dann die RoundCube-Apache-Konfigurationsdatei.

nano /etc/apache2/conf-enabled/roundcube.conf

und entfernen Sie das # vor der Alias-Zeile, fügen Sie dann die zweite Alias-Zeile für /webmail hinzu und fügen Sie die Zeile "AddType application/x-httpd-php .php" direkt nach dem "" hinzu. Zeile:

# Diese Aliase funktionieren nicht richtig mit mehreren Hosts auf Ihrem Apache-Server
# Kommentieren Sie sie aus, um sie zu verwenden, oder passen Sie sie an Ihre Konfiguration an
Alias ​​/roundcube /var/lib/roundcube
Alias ​​/webmail /var/lib/roundcube[...]AddType application/x-httpd-php .php[...]

Und Apache neu starten

service apache2 neu starten

Bearbeiten Sie dann die Konfigurationsdatei von RoundCube config.inc.php:

nano /etc/roundcube/config.inc.php

und ändern Sie den Standardhost auf localhost:

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

und den SMTP-Server an:

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

und

$config['smtp_port']  =25;

Dies verhindert, dass Roundcube das Eingabefeld für den Servernamen im Anmeldeformular anzeigt.

17. Installieren Sie ISPConfig 3.2

Wir werden hier die stabile Version von ISPConfig 3.2 verwenden.

cd /tmp 
wget -O ispconfig.tar.gz https://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ispconfig.tar.gz
cd ispconfig3*/install/

Der nächste Schritt ist die Ausführung

php -q install.php

Dadurch wird das ISPConfig 3-Installationsprogramm gestartet. Der Installer konfiguriert alle Dienste wie Postfix, Dovecot usw. für Sie.

# php -q install.php

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

>> Erstkonfiguration
Betriebssystem:Ubuntu 20.04.1 LTS (Focal Fossa)
Es folgen ein paar Fragen zur primären Konfiguration, also seien Sie vorsichtig.
Standardwerte stehen in [Klammern] und können mit übernommen werden.
Tippen Sie auf "Beenden" (ohne die Anführungszeichen) um den Installer zu stoppen.

Sprache auswählen (en,de) [en]:<-- Enter drücken
Installationsmodus (Standard, Experte) [Standard]: <-- Drücken Sie die Eingabetaste
Vollqualifizierter Hostname (FQDN) des Servers, z. B. server1.domain.tld [server1.canomi.com]: <-- Drücken Sie die Eingabetaste
Hostname des MySQL-Servers [localhost]: <-- Drücken Sie die Eingabetaste
MySQL-Serverport [3306]: <-- Drücken Sie die Eingabetaste
MySQL-Root-Benutzername [root]: <-- Drücken Sie die Eingabetaste
MySQL-Root-Passwort []: <-- Geben Sie Ihr MySQL-Root-Passwort ein
MySQL-Datenbank zum Erstellen von [dbispconfig]: <-- Drücken Sie die Eingabetaste
MySQL-Zeichensatz [utf8]: <-- Drücken Sie die Eingabetaste
Konfigurieren von Postgrey
Konfigurieren von Postfix
Generieren eines privaten 4096-Bit-RSA-Schlüssels
........................ ...............................................++
................................................. .................................................... .........................................++
Schreiben eines neuen privaten Schlüssels in 'smtpd.key'
-----
Sie werden gleich aufgefordert, Informationen einzugeben, die
in Ihre Zertifikatsanforderung aufgenommen werden.
Was Sie gleich eingeben werden wird Distinguished Name oder DN genannt.
Es gibt einige Felder, aber Sie können einige leer lassen
Für einige Felder gibt es einen Standardwert,
Wenn Sie '. ', das Feld bleibt leer.
-----
Landesname (2-Buchstaben-Code) [AU]:<-- Geben Sie den 2-Buchstaben-Ländercode ein
Staats- oder Provinzname ( vollständiger Name) [Some-State]:<-- Geben Sie den Namen des Staates ein
Ortsname (z. B. Stadt) []:<-- Geben Sie Ihre Stadt ein
Name der Organisation (z. B. Unternehmen) [ Int ernet Widgits Pty Ltd]:<-- Geben Sie den Firmennamen ein oder drücken Sie die Eingabetaste
Name der Organisationseinheit (z. B. Abschnitt) []: <-- Drücken Sie die Eingabetaste
Common Name (z. B. Server-FQDN oder IHR Name) []:<-- Geben Sie den Hostnamen des Servers ein, in meinem Fall:server1.example.com
E-Mail-Adresse []: <-- Drücken Sie die Eingabetaste
Konfigurieren von Mailman
Dovecot konfigurieren
Spamassassin konfigurieren
Amavisd konfigurieren
Getmail konfigurieren
BIND konfigurieren
Jailkit konfigurieren
Pureftpd konfigurieren
Apache konfigurieren
vlogger konfigurieren
Konfigurieren des Metronom-XMPP-Servers
Schreiben des neuen privaten Schlüssels in „localhost.key“
-----
Landesname (2-Buchstaben-Code) [AU]: <-- Enter 2-Buchstaben-Ländercode
Ortsname (z. B. Stadt) []: <-- Geben Sie Ihre Stadt ein
Organisationsname (z. B. Firma) [Internet Widgits Pty Ltd]: <-- Geben Sie den Firmennamen ein oder drücken Sie
Name der Organisationseinheit eingeben (z. B. Abschnitt) []: <-- Drücken Sie die Eingabetaste
Allgemeiner Name (z. B. Server-FQDN oder IHR Name) [server1.canomi.com]: <-- Geben Sie den Hostnamen des Servers ein , in meinem Fall:server1.example.com
E-Mail-Adresse []: <-- Drücken Sie die Eingabetaste
Ubuntu Firewall konfigurieren
Fail2ban konfigurieren
[INFO] Dienst OpenVZ nicht erkannt
Apps vhost konfigurieren
ISPConfig installieren
ISPConfig Port [8080]:
Admin-Passwort [admin]:
Möchten Sie eine sichere (SSL-)Verbindung zur ISPConfig-Weboberfläche (j,n) [j]: <-- Drücken Sie die Eingabetaste
Generieren des privaten RSA-Schlüssels, 4096 Bit langer Modulus
.......................++
..... .................................................... .................................................... .........................++
e ist 65537 (0x10001)
Sie werden gleich aufgefordert, Informationen einzugeben, die dies erfordern in Ihren Zertifikatsantrag
einbezogen werden.
Was Sie jetzt eingeben werden, ist ein sogenannter Distinguished Name oder DN.
Es gibt einige Felder, aber Sie können einige leer lassen
Für einige Felder gibt es einen Standardwert.
Wenn Sie '.' eingeben, bleibt das Feld leer.
-----
Landesname (2-Buchstaben-Code) [AU]: <-- Geben Sie den 2-Buchstaben-Ländercode ein
Name des Staates oder der Provinz (vollständiger Name) [Some-State]: <-- Geben Sie den Namen des Staates ein
Name des Ortes (z. B. Stadt) []: <-- Geben Sie Ihre Stadt ein
Organisationsname (z. B. Firma) [Internet Widgits Pty Ltd]: <-- Geben Sie den Firmennamen ein oder drücken Sie die Eingabetaste
Name der Organisationseinheit (z. B. Abschnitt) [] : <-- Drücken Sie die Eingabetaste
Allgemeiner Name (z. B. Server-FQDN oder IHR Name) []: <-- Geben Sie den Hostnamen des Servers ein, in meinem Fall:server1.example.com
E-Mail-Adresse []: <-- Drücken Sie die Eingabetaste
Bitte geben Sie die folgenden „zusätzlichen“ Attribute ein,
die mit Ihrer Zertifikatsanforderung gesendet werden sollen
Ein Challenge-Passwort []: <-- Drücken Sie die Eingabetaste
Einen optionalen Firmennamen []: <- - Drücken Sie die Eingabetaste
Schreiben des RSA-Schlüssels

Symlink ISPConfig LE SSL-Zertifikate zu Postfix? (y,n) [y]: <-- Drücken Sie die Eingabetaste
Symlink ISPConfig LE SSL-Zertifikate zu pureftpd? Das Erstellen der dhparam-Datei dauert einige Zeit. (y,n) [y]: <-- Drücken Sie die Eingabetaste
Erzeuge DH-Parameter, 2048 Bit lange sichere Primzahl, Generator 2
Das wird lange dauern
................... .........................................+....... .................................................... .................................................... .................................................... ............+...................

DBServer konfigurieren
ISPConfig crontab installieren
keine crontab für root
keine crontab für getmail
IP-Adressen erkennen
Dienste neu starten ...
Installation abgeschlossen.

Das Installationsprogramm konfiguriert automatisch alle zugrunde liegenden Dienste, sodass keine manuelle Konfiguration erforderlich ist.

Afterward you can access ISPConfig 3 under http(s)://server1.example.com:8080/ or http(s)://192.168.0.100:8080/ (HTTP or HTTPS depends on what you chose during installation). Log in with the username admin and the password admin (you should change the default password after your first login):






The system is now ready to be used.

18. Virtual machine image download of this tutorial

Dieses Tutorial ist als gebrauchsfertiges Image der virtuellen Maschine im ovf/ova-Format verfügbar, das mit VMWare und Virtualbox kompatibel ist. Das Image der virtuellen Maschine verwendet die folgenden Anmeldedaten:

SSH-/Shell-Anmeldung

Benutzername:administrator
Passwort:howtoforge

Dieser Benutzer hat sudo-Rechte.

ISPConfig Login

Username:admin
Password:howtoforge

MySQL-Anmeldung

Benutzername:root
Passwort:howtoforge

The IP of the VM is 192.168.0.100, it can be changed in the file /etc/netplan/01-netcfg.yaml . Bitte ändern Sie alle oben genannten Passwörter, um die virtuelle Maschine zu sichern.

19. Links

  • Ubuntu:http://www.ubuntu.com/
  • ISPConfig:http://www.ispconfig.org/

Ubuntu
  1. Der perfekte Server – Ubuntu 14.10 (nginx, BIND, Dovecot, ISPConfig 3)

  2. Der perfekte Server – Ubuntu 15.04 (Vivid Vervet) mit Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot und ISPConfig 3

  3. Der perfekte Server – Ubuntu 15.04 (nginx, BIND, Dovecot und ISPConfig 3)

  4. Der perfekte Server – Ubuntu 15.10 (nginx, MySQL, PHP, Postfix, BIND, Dovecot, Pure-FTPD und ISPConfig 3)

  5. Der perfekte Server – Ubuntu 16.10 (Yakkety Yak) mit Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot und ISPConfig 3.1

Der perfekte Server CentOS 7.2 mit Apache, Postfix, Dovecot, Pure-FTPD, BIND und ISPConfig 3.1

Der perfekte Server CentOS 7.3 mit Apache, Postfix, Dovecot, Pure-FTPD, BIND und ISPConfig 3.1

Der perfekte Server CentOS 7.4 mit Apache, Postfix, Dovecot, Pure-FTPD, BIND und ISPConfig 3.1

Der perfekte Server CentOS 7.6 mit Apache, PHP 7.2, Postfix, Dovecot, Pure-FTPD, BIND und ISPConfig 3.1

Der perfekte Server CentOS 8 mit Apache, PHP, Postfix, Dovecot, Pure-FTPD, BIND und ISPConfig 3.2

Der perfekte Server – Ubuntu 14.10 mit Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot und ISPConfig