Der perfekte Server – Ubuntu 20.04 mit Apache, PHP, MariaDB, PureFTPD, BIND, Postfix, Dovecot und ISPConfig 3.2 (Beta)
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 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, 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 diesem Tutorial 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 sich für Sie unterscheiden, so dass Sie sie gegebenenfalls ersetzen müssen. Bevor Sie weitermachen, 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 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 es so aussehen:
nano /etc/apt/sources.list
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://de.archive.ubuntu.com/ubuntu focal main restricted # deb-src http://de.archive.ubuntu.com/ubuntu focal main restricted ## Major bug fix updates produced after the final release of the ## distribution. deb 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 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 focal universe # deb-src http://de.archive.ubuntu.com/ubuntu focal universe deb http://de.archive.ubuntu.com/ubuntu focal-updates universe # deb-src http://de.archive.ubuntu.com/ubuntu focal-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 focal multiverse # deb-src http://de.archive.ubuntu.com/ubuntu focal multiverse deb http://de.archive.ubuntu.com/ubuntu focal-updates multiverse # deb-src http://de.archive.ubuntu.com/ubuntu focal-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 focal-backports main restricted universe multiverse # deb-src http://de.archive.ubuntu.com/ubuntu focal-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 focal partner # deb-src http://archive.canonical.com/ubuntu focal partner deb http://de.archive.ubuntu.com/ubuntu focal-security main restricted # deb-src http://de.archive.ubuntu.com/ubuntu focal-security main restricted deb http://de.archive.ubuntu.com/ubuntu focal-security universe # deb-src http://de.archive.ubuntu.com/ubuntu focal-security universe deb http://de.archive.ubuntu.com/ubuntu focal-security multiverse # deb-src http://de.archive.ubuntu.com/ubuntu focal-security multiverse
Führen Sie dann
apt-get update
um die Datenbank des apt-Pakets zu aktualisieren und
apt-get upgrade
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 danach neu starten:
reboot
3. Ändern Sie die Standard-Shell
/bin/sh ist ein Symlink zu /bin/dash, wir benötigen jedoch /bin/bash, nicht /bin/dash. Deshalb machen wir dies:
dpkg-reconfigure dash
Benutzen Sie dash als Standard-System-Shell (/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 brauchen Sie 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 ein Dienst nicht wie erwartet funktionierte, 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 ihn 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 synchronisiert sein. Es ist empfehlenswert ggf. auf einen NTP-Pool Server umzustellen.
6. Installieren Sie Postfix, Dovecot, MariaDB, rkhunter und binutils
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, es gab also 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:
General type of mail configuration: <-- Internet Site System mail name: <-- server1.example.com
Es ist wichtig, dass Sie als „System-Mail-Name“ eine Subdomain 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 wollen.
Als nächstes öffnen Sie die TLS/SSL- und Submissions-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
[...]
ANMERKUNG: Die Whitespaces vor dem „-o …. “ Zeilen sind wichtig!
Starten Sie Postfix danach neu:
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, 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 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 gezeigt, 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
Öffnen Sie die Datei /etc/security/limits.conf mit einem Editor:
nano /etc/security/limits.conf
installieren und diese Zeilen am Ende der Datei hinzufügen.
mysql soft nofile 65535 mysql hard nofile 65535
Als nächstes erstellen Sie ein neues Verzeichnis /etc/systemd/system/mysql.service.d/ mit dem Befehl mkdir.
mkdir /etc/systemd/system/mysql.service.d/
und fügen Sie darin 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 systemd neu und starten MariaDB neu:
systemctl daemon-reload service mariadb restart
Prüfen Sie nun, ob das Netzwerk aktiviert ist. Führen Sie aus.
netstat -tap | grep mysql
Die Ausgabe sollte wie folgt aussehen:
root@server1:~# netstat -tap | grep mysql tcp6 0 0 [::]:mysql [::]:* LISTEN 51836/mysqld root@server1:~#
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 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).
8. Installieren Sie Apache, PHP, phpMyAdmin, FCGI, SuExec, Pear und mcrypt
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
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 (plus dav, dav_fs und auth_digest, wenn Sie WebDAV verwenden wollen) zu aktivieren:
a2enmod suexec rewrite ssl actions include cgi alias proxy_fcgi
a2enmod dav_fs dav auth_digest headers
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:
<IfModule mod_headers.c> RequestHeader unset Proxy early </IfModule>
Aktivieren Sie die Konfigurationsdatei durch Ausführen:
a2enconf httpoxy
Starten Sie danach Apache neu:
service apache2 restart
Wenn Sie Ruby-Dateien mit der Endung .rb auf Ihren mit ISPConfig erstellten Websites hosten wollen, 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 Endung .rbx funktionieren out of the box).
Starten Sie danach Apache neu:
service apache2 restart
9. Installieren Sie Let’s Encrypt
ISPConfig 3.2 hat eine eingebaute Unterstützung für die kostenlose SSL-Zertifizierungsstelle Let’s encrypt. Die Funktion „Let’s Encrypt“ ermöglicht es Ihnen, kostenlose SSL-Zertifikate für Ihre Website in ISPConfig zu erstellen.
Jetzt werden wir Unterstützung für Let’s Encrypt hinzufügen.
apt-get install certbot
10. Mailman installieren
Mit ISPConfig können Sie Mailman-Mailinglisten verwalten (erstellen/ändern/löschen). Wenn Sie von dieser Funktion Gebrauch machen wollen, installieren Sie Mailman wie folgt:
apt-get -y install mailman
Wählen Sie mindestens eine Sprache, z.B:
Zu unterstützende Sprachen: <– en (Englisch)
Fehlende Standortliste <– Ok
Der Fehler ‚Job für mailman.service schlug fehl, weil der Steuerungsprozess mit Fehlercode beendet wurde. kann vorerst ignoriert werden.
Bevor wir mit dem Mailman beginnen 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 betreibt: <– Admin-E-Mail-Adresse, z.B. listadmin@example.com
Ursprüngliches Briefträger-Passwort:<– Admin-Passwort für die Mailman-Liste Um die Erstellung Ihrer Mailingliste abzuschließen,
müssen SieIhre Datei /etc/aliases (oder gleichwertig
), indem Sie die folgenden Zeilen hinzufügen und möglicherweise das Programm `newaliases‘ ausführen:
## mailman mailing list mailman: “
|/var/lib/mailman/mail/mail/mailman post mailman“ mailman-admin:“|/var/lib/mailman/mail/mailman admin mailman“ mailman-bounces: „|/var/lib/mailman/mailman/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/mailman join mailman“ mailman-leeave:“|/var/lib/mailman/mail/mail/mailman leave mailman“ Briefträger-Betreiber:“|/var/lib/mailman/mail/mailman/mailman owner mailman“ Briefträger-Antrag: „|/var/lib/mailman/mailman/mail/mailman owner mailman“|/var/lib/mailman/mail/mail/mailman request mailman“ mailman-subscribe: „|/var/lib/mailman/mail/mail/mailman
subscribe mailman“ mailman-abbestellen:“|/var/lib/mailman/mail/mailman unsubscribe mailman“ Drücken Sie Enter, um den Eigentümer des Postboten 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"
Führen Sie aus.
newaliases
danach 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-available/mailman.conf
Dies definiert den Alias /cgi-bin/mailman/ für alle Apache-Vhosts, was bedeutet, dass Sie auf die Mailman-Administrationsschnittstelle für eine Liste unter http://<vhost>/cgi-bin/mailman/admin/<listname> zugreifen können. Die Webseite für Benutzer einer Mailingliste finden Sie unter http://<vhost>/cgi-bin/mailman/listinfo/<listname>.
Unter http://<vhost>/pipermail finden Sie die Archive der Mailingliste.
Aktivieren Sie die Konfiguration mit:
a2enconf mailman
Starten Sie danach Apache neu:
service apache2 restart
Starten Sie anschließend den Mailman-Dämon:
service mailman start
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 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 gesetzt ist und setzen Sie VIRTUALCHROOT=true:
[...] STANDALONE_OR_INETD=standalone [...] VIRTUALCHROOT=true [...]
Nun konfigurieren wir PureFTPd, um FTP- und TLS-Sitzungen zuzulassen. 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 wesentlich sicherer wird.
Wenn Sie FTP- und TLS-Sitzungen erlauben möchten, führen Sie
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/, daher lege ich dieses Verzeichnis zuerst an:
mkdir -p /etc/ssl/private/
Danach 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
Name des Landes (2-Buchstaben-Code) [AU]: <– Geben Sie Ihren Ländernamen ein (z.B. „DE“).
Name des Staates oder der Provinz (vollständiger Name) [Irgendein Staat]:<– Geben Sie den Namen Ihres Bundesstaates oder Ihrer Provinz ein.
Name der Ortschaft (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. Abschnitt) []:<– Geben Sie den Namen Ihrer Organisationseinheit ein (z.B. „IT-Abteilung“).
Allgemeiner Name (z.B. IHR Name) []:<– Geben Sie den vollqualifizierten 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:
service pure-ftpd-mysql restart
Bearbeiten Sie /etc/fstab. Meine sieht wie folgt aus (ich habe ,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 zur Partition mit dem Mount-Punkt / 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
Das wird die folgende Ausgabe zeigen:
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
Aktivieren und starten Sie den haveged Daemon:
systemctl enable haveged systemctl start haveged
13. Installieren Sie Vlogger, Webalizer und AWStats
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 für inhaftierte Shell-Benutzer und Cronjobs in ISPConfig verwendet. Installieren Sie Jailkit mit apt:
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 der fail2ban-Monitor PureFTPd und Dovecot überwacht, 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 danach fail2ban neu:
service fail2ban restart
Um die UFW-Firewall zu installieren, führen Sie diesen apt-Befehl aus:
apt-get install ufw
16. Roundcube Webmail installieren
Führen Sie Roundcube Webmail aus, um Roundcube Webmail zu installieren:
apt-get -y install roundcube roundcube-core roundcube-mysql roundcube-plugins roundcube-plugins-extra javascript-common libjs-jquery-mousewheel php-net-sieve tinymce
Das Installationsprogramm könnte die folgenden Fragen stellen:
Configure database for roundcube with dbconfig-common? <-- Yes MySQL application password for roundcube: <-- Press enter
Machen Sie sich keine Sorgen, wenn Sie diese Fragen und eine Warnung vor dem ucf-Skript nicht erhalten, dann ist das 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 der Zeile „<Directory /var/lib/roundcube>“ ein:
# Those aliases do not work properly with several hosts on your apache server # Uncomment them to use it or adapt them to your configuration Alias /roundcube /var/lib/roundcube Alias /webmail /var/lib/roundcube [...] <Directory /var/lib/roundcube> AddType application/x-httpd-php .php [...]
Und starten Sie Apache neu
service apache2 restart
Bearbeiten Sie dann die RoundCube-Konfigurationsdatei config.inc.php:
nano /etc/roundcube/config.inc.php
und ändern Sie den Standard-Host in localhost:
$config['default_host'] = 'localhost';
Dadurch wird verhindert, dass Roundcube das Eingabefeld für den Servernamen im Anmeldeformular anzeigt.
17. ISPConfig 3.2 installieren
Wir werden die ISPConfig 3.2 Nightly Builds verwenden, die ISPConfig 3.2 beta 1 zum Zeitpunkt der Veröffentlichung dieses Leitfadens enthalten, da ISPConfig 3.2 final noch nicht freigegeben ist.
cd /tmp wget -O ispconfig.tar.gz https://www.ispconfig.org/downloads/ISPConfig-3-nightly.tar.gz tar xfz ispconfig.tar.gz cd ispconfig3*/install/
Der nächste Schritt ist die Durchführung von
php -q install.php
Dadurch wird das ISPConfig 3-Installationsprogramm gestartet. Der Installer wird alle Dienste wie Postfix, Dovecot, etc. für Sie konfigurieren.
# php -q install.php
-------------------------------------------------------------------------------- _____ ___________ _____ __ _ ____ |_ _/ ___| ___ \ / __ \ / _(_) /__ \ | | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ / | | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ | _| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \ \___/\____/\_| \____/\___/|_| |_|_| |_|\__, | \____/ __/ | |___/ --------------------------------------------------------------------------------
>> Initial configuration
Operating System: Ubuntu 20.04.1 LTS (Focal Fossa)
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
Symlink ISPConfig LE SSL certs to postfix? (y,n) [y]: <-- Hit Enter
Symlink ISPConfig LE SSL certs to pureftpd? Creating dhparam file takes some times. (y,n) [y]: <-- Hit Enter
Generating DH parameters, 2048 bit long safe prime, generator 2 This is going to take a long time .............................................................+.........................................................................................................................................................................+...................
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.0.100:8080/ zugreifen (HTTP oder HTTPS hängt davon ab, was Sie bei der Installation ausgewählt haben). Melden Sie sich mit dem Benutzernamen admin und dem Passwort admin an (Sie sollten das Standardpasswort nach der ersten Anmeldung ändern):
Das System ist nun einsatzbereit.
18. Links
- Ubuntu: http://www.ubuntu.com/
- ISPConfig: http://www.ispconfig.org/