Der perfekte Server – Ubuntu 18.04 (Bionic Beaver) mit Apache, PHP, MySQL, PureFTPD, BIND, Postfix, Dovecot und ISPConfig 3.1
8. Installieren Sie Apache, PHP, phpMyAdmin, FCGI, SuExec, Pear und mcrypt.
Apache 2.4, PHP 7.2, phpMyAdmin, FCGI, suExec und Pear können wie folgt installiert werden:
apt-get -y install apache2 apache2-doc apache2-utils libapache2-mod-php php7.2 php7.2-common php7.2-gd php7.2-mysql php7.2-imap phpmyadmin php7.2-cli php7.2-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear mcrypt imagemagick libruby libapache2-mod-python php7.2-curl php7.2-intl php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl memcached php-memcache php-imagick php-gettext php7.2-zip php7.2-mbstring php-soap php7.2-soap
Sie werden die folgende Frage sehen:
Web server to reconfigure automatically: <-- apache2 Configure database for phpmyadmin with dbconfig-common? <-- Yes MySQL application password for phpmyadmin: <-- 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 cgi
a2enmod dav_fs dav auth_digest headers
Um sicherzustellen, dass der Server nicht durch die HTTPOXY-Schwachstelle angegriffen werden kann, werde ich den HTTP_PROXY-Header im 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:
<IfModule mod_headers.c> RequestHeader unset Proxy early </IfModule>
Aktivieren Sie die Konfigurationsdatei durch Ausführen:
a2enconf httpoxy
Starten Sie den Apache anschließend neu:
service apache2 restart
Wenn Sie Rubin-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 ist nur für .rb-Dateien erforderlich; Rubin-Dateien mit der Erweiterung.rbx funktionieren sofort nach dem Auspacken.)
Starten Sie den Apache anschließend neu:
service apache2 restart
8.1 PHP Opcode Cache (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.2-opcache php-apcu
Starten Sie nun den Apache neu:
service apache2 restart
8.2 PHP-FPM
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.2-fpm
Stellen Sie sicher, dass Sie die Module aktivieren und den Apache neu starten:
a2enmod actions proxy_fcgi alias service apache2 restart
10.1 HHVM (HipHop Virtual Machine) installieren, optional
In diesem Schritt werden wir HHVM mit apt installieren. HHVM ist eine schnelle PHP-Engine, die von Facebook entwickelt wurde.
apt-get -y install hhvm
9. Installieren Sie Let’s Encrypt
ISPConfig 3.1 hat eine integrierte Unterstützung für die kostenlose SSL-Zertifizierungsstelle Let’s encrypt. Mit der Funktion Let’s Encrypt 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 -y install certbot
10. 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 -y install mailman
Wählen Sie mindestens eine Sprache aus, z.B:
Zu unterstützende Sprachen: <– en (Englisch)
Fehlende Standortliste <– Ok
Der Fehler‘Job für mailman.service fehlgeschlagen, weil der Kontrollprozess mit Fehlercode beendet wurde. kann vorerst ignoriert werden.
Bevor wir Mailman starten können, muss eine erste Mailingliste namens mailman erstellt werden:
newlist mailman
root@server1:~# newlist mailman Geben Sie die
E-Mail-Adresse der Person ein, die die Liste ausführt: <– admin E-Mail-Adresse, z.B. listadmin@example.com
Initiales Mailman-Passwort:<– Admin-Passwort für die Mailingliste Um die Erstellung Ihrer Mailingliste abzuschließen,
müssen Sie Folgendes bearbeitenIhre /etc/aliases (oder gleichwertige
) Datei, indem Sie die folgenden Zeilen hinzufügen und möglicherweise das Programm `newaliases‘ ausführen:
## mailman mailing list mailman: “
|/var/lib/mailman/mail/mail/mail/mailman postman postman“ mailman-admin:“|/var/lib/mailman/mail/mail/mailman admin mailman“ mailman-bounces:“|/var/lib/mailman/mail/mail/mailman bounces mailman“ mailman-confirm: „|/var/lib/mailman/mail/mail/mailman
confirm mailman“ mailman-join:“|/var/lib/mailman/mail/mail/mailman join mailman“ mailman-leave:“|/var/lib/mailman/mail/mail/mail/mailman leave mailman“ mailman-owner:“|/var/lib/mailman/mail/mail/mail/mailman owner mailman“ mailman-request:“|/var/lib/mailman/mail/mail/mailman request mailman“ mailman-Abonnement: „|/var/lib/mailman/mail/mail/mailman
subscribe mailman“ mailman-abonnement:“|/var/lib/mailman/mail/mail/mail/mailman unsubscribe mailman“ Drücken Sie die Eingabetaste, um den
Mailman-Besitzer zu benachrichtigen.... <– 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"
Laufen
newaliases
und starten Sie anschließend Postfix neu:
service postfix restart
Schließlich müssen wir die Mailman Apache Konfiguration aktivieren:
ln -s /etc/mailman/apache.conf /etc/apache2/conf-available/mailman.conf
Hiermit wird der Alias /cgi-bin/mailman/ für alle Apache vhosts definiert, d.h. Sie können auf die Mailman-Administrationsoberfläche für eine Liste unter http://<vhost>/cgi-bin/mailman/admin/<listname> zugreifen, und die Webseite für Benutzer einer Mailingliste finden Sie unter http://<vhost>/cgi-bin/mailman/mailman/listinfo/<listname>.
Unter http://<vhost>/pipermail finden Sie die Archive der Mailingliste.
Aktivieren Sie die Konfiguration mit:
a2enconf mailman
Starten Sie den Apache anschließend neu:
service apache2 restart
Dann starten Sie den Mailman-Daemon:
service mailman start
11. PureFTPd und Quota installieren
PureFTPd und quota können mit dem folgenden Befehl installiert werden:
apt-get -y install pure-ftpd-common pure-ftpd-mysql quota quotatool
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
Ländername (2-stelliger Code)[AU]: <– Geben Sie Ihren Ländernamen ein (z.B. „DE“).
Name des Staates oder der Provinz (vollständiger Name)[Irgendein Staat]:<– Geben Sie Ihren Staats- oder Provinztitel ein.
Ortsname (z.B. Stadt) []:<– Betrete deine Stadt.
Firmenname (z.B. Firma)[Internet Widgits Pty Ltd]:<– Geben Sie Ihren Firmennamen ein (z.B. den Namen Ihrer Firma).
Name der Organisationseinheit (z.B. Abschnitt) []:<– Geben Sie den Namen Ihrer Organisationseinheit ein (z.B. „IT-Abteilung“).
Common Name (z.B. Ihr Name) []:<– Geben Sie den voll qualifizierten Domainnamen 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:
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>
/dev/mapper/server1--vg-root / ext4 errors=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
Um Quota zu aktivieren, führen Sie diese Befehle aus:
mount -o remount /
quotacheck -avugm quotaon -avug
Welches die folgende Ausgabe anzeigt:
root@server1:/opt/metronome# quotacheck -avugm quotacheck: Scanning /dev/mapper/server1--vg-root [/] done quotacheck: Cannot stat old user quota file //quota.user: No such file or directory. Usage will not be subtracted. quotacheck: Cannot stat old group quota file //quota.group: No such file or directory. Usage will not be subtracted. quotacheck: Cannot stat old user quota file //quota.user: No such file or directory. Usage will not be subtracted. quotacheck: Cannot stat old group quota file //quota.group: No such file or directory. Usage will not be subtracted. quotacheck: Checked 13602 directories and 96597 files quotacheck: Old file not found. quotacheck: Old file not found. root@server1:/opt/metronome# quotaon -avug /dev/mapper/server1--vg-root [/]: group quotas turned on /dev/mapper/server1--vg-root [/]: user quotas turned on
12. BIND DNS Server installieren
BIND kann wie folgt installiert werden:
apt-get -y install bind9 dnsutils haveged
Aktiviere und starte den gelähmten Daemon:
systemctl enable haveged systemctl start haveged
13. Vlogger, Webalizer und AWStats installieren
Vlogger, Webalizer und AWStats können wie folgt installiert werden:
apt-get -y install vlogger webalizer awstats geoip-database libclass-dbi-mysql-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
14. Jailkit installieren
Jailkit wird nur benötigt, wenn Sie SSH-Benutzer chrooten wollen. Es kann wie folgt installiert werden (wichtig: Jailkit muss vor dem ISPConfig installiert werden – es kann nicht danach installiert werden! ):
apt-get -y install build-essential autoconf automake1.11 libtool flex bison debhelper binutils
cd /tmp wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz tar xvfz jailkit-2.19.tar.gz cd jailkit-2.19 echo 5 > debian/compat
Dann erstellen Sie das Jailkit-Paket, indem Sie diesen Befehl ausführen:
./debian/rules binary
Sie können das Paket Jailkit.deb nun wie folgt installieren:
cd .. dpkg -i jailkit_2.19-1_*.deb rm -rf jailkit-2.19*
15. fail2ban und UFW installieren
Dies ist optional, wird aber empfohlen, da der ISPConfig-Monitor versucht, das Protokoll anzuzeigen:
apt-get -y install fail2ban
Um fail2ban Monitor PureFTPd und Dovecot zu machen, erstellen Sie die Datei /etc/fail2ban/jail.local:
nano /etc/fail2ban/jail.local
[pure-ftpd]
enabled = true
port = ftp
filter = pure-ftpd
logpath = /var/log/syslog
maxretry = 3
[dovecot]
enabled = true
filter = dovecot
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5
[postfix]
enabled = true
port = smtp
filter = postfix
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