Webmin-Jumpstart – Ersteinrichtung des Webservers

Webmin-Jumpstart – Ersteinrichtung des Webservers

Aktuell arbeite ich nach langer Zeit auch wieder mit Webmin – welches eine kostenlose Alternative zu Plesk sein könnte. Natürlich müssen nach der Installation auch hier einige wichtige Schritte unternommen werden. Diese möchte ich in aller Kürze hier aufzeigen:

Aktivieren der Firewall

Zunächst muss iptables installiert werden, denn ohne iptables wird die Firewall nicht funktionieren können

apt-get install -y iptables

Anschließend kann über Module->Linux-Firewall ein Reset der Firewall ausgelöst werden. Im nachfolgenden Schritt wählt ihr „Block all except SSH, IDENT, ping and high ports on interface“ aus. Der Reset sorgt für einige Standardregeln.

Achtung: DROP führt bei dieser Konfiguration zu einer Fehlermeldung, die richtige Auswahl für DROP lautet daher „Do nothing“.

Fail2Ban

Als nächstes kümmern wir uns um Fail2Ban welches wir ebenfalls zuerst installieren müssen. Das ist auch komfortabel direkt über Webmin möglich.

Anschließend aktivieren wir unter „Filter Action Jails“ die entsprechenden Jails (insbesondere sshd und auth).

PHP-Konfiguration

Anschließend passen wir unter Tools->PHP-Konfiguration->Manage->Ressource Limits die Einstellungen für PHP entsprechend an.

Ggf. kann es notwendig sein dies auch über SSH (nano) zu erledigen. Die Datei sollte sich unter /etc/php/7.4/fpm/php.ini befinden. Anschließend muss der Apache2 und php-fpm Server neu gestartet werden.

MariaDB-Konfiguration

In der Regel wird eine MySQL-Datenbank für sogut wie jede Anwendung benötigt, daher ist auch die Erstellung einer solchen Datenbank unter Webmin ein wichtiger Punkt.

Unter Servers->MySQL Database können wir die Einstelllungen unserer MariaDB anpassen und auch neue User und Datenbanken erstellen. Für letzeres erstellen wir zunächst unter User Permissions einen neuen Datenbankbenutzer OHNE RECHTE. Danach erstellen wir unter dem vorherigen Hauptmenü eine neue Datenbank. Danach erst erteilen wir unter „Database Permissions“ dem Benutzer die Rechte für die neu erstellte Datenbank.

Es können hier auch noch viele weitere Einstellungen vorgenommen werden. Die Erklärungen wären hier jedoch zu umfangreich und Datenbanken sind ein sehr eigenes Thema. Gerne optimiere ich Eure MariaDB-Datenbank zu einem günstigen Stundensatz.

Domains / vHost anlegen

Natürlich muss die entsprechende Domain auch über den Apache-Webserver aufrufbar sein. Zu diesem Zweck müssen wir unter Servers->Apache einen entsprechenden neuen vHost anlegen. Als „Document Root“ (Verzeichnis der Dateien für das Internet) könnt Ihr einen neuen Pfad wählen oder einfach das vorhandene Hauptverzeichnis /var/www/html wählen.

Ihr solltet einen vHost für Port 80 (http) und einen auf Port 443 (https) separat anlegen.

Danach könnt Ihr Eure Dateien einfach über das Upload-Tool oder anderweitig auf den Server laden. Bei einem Upload als root sollte natürlich später der Besitzer der Dateien geändert werden. Das ist z. B. wie folgt möglich:

apt-get install sudo
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R g+rwX /var/www/html

Tipp: Unter dem Reiter Tools gibt es ein Upload/Download-Tool und auch einen File-Manager mit dem einzelne Dateien bearbeitet werden können.

SSL

Selbstverständlich müssen wir nun auch noch ein SSL-Zertifikat für unseren neuen Host erhalten. Das geht unter Webmin->Webmin-Konfiguration->SSL-Encryption->Lets Encrypt. Als Verzeichnis wird der „Document Root“ angegeben – in unserem Beispiel also „/var/www/html“

Danach öffnet ihr unter Servers->Apache den entsprechenden vHost (Port 443) und wählt den Reiter SSL aus. Hier aktiviert Ihr SSL und ladet die entsprechenden Zertifikatsdateien hoch. Wenn dies nicht durchgeführt wird erhaltet Ihr später den Fehler „ssl_error_rx_record_too_long“.

Solltet Eure Domain gleichzeitig der Hostname sein, so dürften die Dateien in der Regel diese Pfade haben:

/etc/webmin/letsencrypt-cert.pem
/etc/webmin/letsencrypt-key.pem
/etc/webmin/letsencrypt-ca.pem

Danach muss unter System->Bootup and Shutdown der Dienst Apache2 neu gestartet werden.

Wichtige Module installieren

Euer Webserver wird in den meisten Fällen noch einige wichtige Module benötigen, diese könnt Ihr wie folgt installieren:

apt-get install -y php-curl
apt-get install -y php-dom
apt-get install -y php-mbstring
apt-get install -y php-imagick
apt-get install -y php-zip
apt-get install -y php-gd
apt-get install -y php-opcache
wget https://dl-ssl.google.com/dl/linux/direct/mod-pagespeed-stable_current_amd64.deb
dpkg -i mod-pagespeed-stable_current_amd64.deb
systemctl restart apache2

Wer möchte kann auch die AdminConsole von mod_pagespeed aktivieren, hierfür muss die entsprechende Datei bearbeitet werden:

nano /etc/apache2/mods-available/pagespeed.conf

und folgender Inhalt hinzugefügt werden (feste IP-Adresse)

<Location /pagespeed_admin>
    Order allow,deny
    Allow from localhost
    Allow from 127.0.0.1
    Allow from 123.123.123.123
    SetHandler pagespeed_admin
</Location>

<Location /pagespeed_global_admin>
    Order allow,deny
    Allow from localhost
    Allow from 127.0.0.1
    Allow from 123.123.123.123
    SetHandler pagespeed_global_admin
</Location>

Danach muss Apache wieder neu gestartet werden:

systemctl restart apache2

Danach ist der Pagespeed Admin unter example.com/pagespeed_admin abrufbar.

Im Apache Webserver sollte auch noch der entsprechende vHost mit „Edit Directives“ angepasst werden um 404/403 Fehler bei der Nutzung von mod_rewrite (z. B. bei WordPress) zu vermeiden:

<Directory "/var/www/html">
   Options Indexes FollowSymLinks
   AllowOverride All
        allow from all
      # Options None
        Require all granted
        DirectoryIndex index.php
    </Directory>

Webmin Hardening

Unter Webmin->Webmin Configuration->IP Access Control sollte zusätzlich zur Firewall noch auf „only allow from listed addresses“ umgestellt werden. Natürlich setzt das bei Euch eine feste IP-Adresse voraus.

localhost
127.0.0.1
IP_DES_HOSTS
EURE_IP

Hinweis: Webmin hat nur einen www-user und erscheint mir daher standardmäßig als nicht geeignet bzw. sicher für mehrere/unterschiedliche Nutzer/Kunden auf einem Hostsystem. Für einen einzigen Kunden auf einem System ist es allerdings eine interessante Alternative.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.