Automatische Backups bei Shared Webhosting

Bei Shared Webhosting Angeboten ist es oft schwierig, kostenlose automatische Backups zu realisieren. Oft sind Backups sowie Cron Jobs (soweit überhaupt verfügbar) kostenpflichtig.

Zudem funktionieren viele der im Internet verfügbaren Skripts nur auf Servern und die, die auch bei Webhosting Services funktionieren, gehen manchmal nicht mehr …

Deshalb habe ich ein Skript für automatische Dateisystem & Datenbank Backups erstellt. Nachfolgend möchte ich die Funktionen sowie die Anwendung des Skriptes erläutern.

Link zum Projekt: https://git.kernel.fun/cmiksche/php-sharedhost-backup

Funktionen / Features

  • Erstellt Datenbank-Backups
  • Erstellt Dateisystem-Backups, die entweder mit ZIP oder GZ komprimiert werden können
    • Bei der Komprimierung mit ZIP können auch Verzeichnisse ausgeschlossen werden
  • Backups können nach X Tagen automatisch gelöscht werden
  • Das Skript kann von extern aufgerufen werden
  • Lizenziert unter der GNU General Public License 3.0

Anwendung

  • Zuerst sollte die Konfiguration wie Datenbankzugangsdaten in den Konstanten der backup.php Datei eingetragen werden
  • Anschließend können die Dateien auf dem Webspace hochgeladen werden
    • Sicherheitshinweise
      • Nicht das .git Verzeichnis hochladen!
      • Im Standardbackupverzeichnis „backup“ ist nur ein Schutz der Dateien unter Apache eingerichtet – unter nginx und anderen Webservern bitte selbst absichern!
  • Nun kann man einen Cron Job auf einem externen System (z.B.: heimischer Raspberry Pi) einrichten, der die backup.php Datei täglich aufruft.

Anregungen, Fehler oder Verbesserungsvorschläge?! Schreibe einen Kommentar!

MECSA: SPF, DKIM und DMARC bei Mailservern

Ich bin gestern über das Projekt My Email Communications Security Assessment (MECSA) der Europäischen Union gestoßen. Mit dem Online-Dienst, welcher unter https://mecsa.jrc.ec.europa.eu/ erreichbar ist, kann man die Sicherheit der E-Mail-Kommunikation zwischen Providern testen.

Da ich meinen Mailserver gestern umgezogen habe und dessen Bewertung bei anderen Providern verbessern sowie den E-Mail-Verkehr sichern wollte, fand ich dieses Tool recht hilfreich.

Im Grunde sind drei Verfahren / Techniken für eine gute Bewertung bei MECSA wichtig. Diese Verfahren müssen alle als TXT-Records beim DNS-Server der jeweiligen Domain eingerichtet werden.

SPF

Sender Policy Framework – gibt aus, welche Server E-Mails für die Domain versenden dürfen. In den meisten Fällen reicht der folgende TXT-Record hierfür völlig aus:

@                   IN TXT     "v=spf1 mx ~all"

Wer sich mehr damit befassen will, sollte am besten einfach mal seine Suchmaschine verwenden.

DKIM

DomainKeys Identified Mail –  hiermit will man im Grunde sicherstellen, dass die E-Mails auch wirklich von angegeben Absender kommen und nichts verändert wurde. Hierfür gibt es einen privaten und einen öffentlichen Schlüssel. Den öffentlichen Schlüssel hinterlegt man als TXT-Record auf den DNS-Server und der private Schlüssel wird auf dem Mailserver verstaut.

Manche Mailserversoftware wie z.B.: Mailcow haben zur Erzeugung der Schlüssel eine grafische Benutzeroberfläche.

DMARC

DMARC ist im Endeffekt das Verbindungsstück von  SPF und DKIM. Man gibt damit an, was passieren soll, wenn die E-Mail nicht SPF und DKIM entspricht und wer über die E-mail informiert werden soll.

MXToolBox bietet einen guten Generator die Erzeugung des TXT-Records an: https://mxtoolbox.com/DMARCRecordGenerator.aspx

Übrigens verwenden aktuell GMX, Web und 1&1 sowie viele andere deutsche Provider kaum die in diesem Post veröffentlichen Methoden und haben daher eine eher schlechte MECSA Bewertung.

Gitea Update

Gitea ist im Grunde etwas wie GitHub, nur selbst gehostet. (Ähnlich zu GitLab nur nicht so intensiv im Verbrauch von RAM und CPU)

Gitea ist ein Fork von Gogs – allerdings mit einer offeneren Mentalität der Community als Gogs …

Nun verwende ich diese Software auf einem meiner Server und wollte es heute aktualisieren. Bei einer „normalen“ Anwendung klickt man dazu einfach auf einen Button wie „Update suchen“. Leider gibt es diesen Button bei Gitea aktuell nicht.

Was also tun?

Ich habe das gemacht, was man an der Stelle wahrscheinlich oft als Erstes macht: Googeln!

Google brachte mir das Ergebnis: https://geeklabor.de/archives/207-Gitea-source-update.html

Dieses Ergebnis brauchte mich aber nicht weiter, da ich nicht einmal die Programmiersprache Go auf meinem System installiert hatte … (Ich erwähne es hier trotzdem, vielleicht hilft es ja jemand weiter ….)

Die Lösung!

Ich hatte Gitea als Binary auf meinem Server installiert. Gitea bietet auf GitHub neue Versionen auch als Binary an.

Die Lösung war also recht einfach: Neue Binary mit wget ziehen, mit mv umbenennen, die Berechtigungen mit chmod und chown ändern und wie gewohnt ausführen!

Vor solchen Updates sollte man übrigens mit ./gitea dump eine Sicherung erstellen …

Wronnay Pics eingestellt

Seit 2013 konnte man unter pics.wronnay.net kostenlos Bilder hochladen.

Ich habe heute nach einer Neuinstallation eines Webservers den Dienst erneut geprüft und festgestellt, dass das Hosting in letzter Zeit für unseriöse Dinge missbraucht wurde. Zudem wird die verwendete Software nicht mehr weiterentwickelt.

Deshalb habe ich nun, nach fast 5 Jahren, den Dienst eingestellt. Da dieser allerdings nicht wirklich populär war, wird es wenige tote Bilder geben.

Der ursprüngliche Zweck war das Anbieten einer Möglichkeit zum Hochladen von Bildern für Nutzer von WebPage4.Me, ForenHosting.net und Homepage-versammlung. Unter WebPage4.Me kann man allerdings jetzt direkt Bilder hochladen und die anderen Dienste existieren aktuell nicht mehr.

WebPage4.Me Relaunch

WebPage4.Me war ab 2013 ein Portal zum Erstellen einer Website mit verschiedenen CMS. Man konnte dort unter anderem WordPress Blogs oder Webseiten mit meinem eigenen CMS („WronnayCMS“, aktuell nicht verfügbar) erstellen.

Das Portal wurde ca. 2014 geschlossen, da der Wartungsaufwand zu hoch war (damals hatte ich für die Verwaltung noch ein eigenes System genutzt, jeder Nutzer bekam eine eigene Datenbank und Subdomain und konnte externe Domains aufschalten, dadurch musste mit jeder neuen WordPress / Joomla, etc Version der (sehr aufwendige) Installationsvorgang angepasst werden).

Gestern habe ich auf Basis von WordPress Multisite das Projekt mit einem für mich viel geringeren Wartungsaufwand neu gestartet. Das neue Webdesign kann man durchaus den Minimalismus zuschreiben. Mein Ziel ist es, den Wartungsaufwand so gering wie möglich zu halten, d. h. es werden alle wiederholenden Vorgänge automatisiert.

Piwik / WordPress Remote Update

Wie ich teilweise bereits auf meinem persönlichen Blog erwähnt habe, wurden von mir in letzter Zeit Python Scripts zum Aktualisieren von WordPress und Piwik über die Kommandozeile geschrieben.

Wenn man diese z.B.: als Cronjob laufen lässt, kann man von einem entfernten Gerät die Piwik- oder WordPress Instanz automatisch aktualisieren lassen.

Das ist in manchen Fällen recht nützlich.

Downloaden kann man die beiden Programme von GitHub, eine Installationsanleitung ist in der jeweiligen README.md Datei:

Bei Fehlern / Problemen kann gerne im jeweiligen GitHub Repo ein Issue erstellt werden.

Tutorial: Einen Debian Server absichern

In letzter Zeit werden immer wieder Server für Projekte von „Wronnay“ eingerichtet. Um das Ganze etwas bequemer zu machen, wurde von mir ein Bash-Script erstellt, dass die Grundeinrichtung etwas vereinfacht. Ich möchte jetzt eine kleine Anleitung veröffentlichen, die die Verwendung dieses Scripts erklärt.

Informationen über das Script:

  • Es steht unter der GNU General Public License
  • Es aktualisiert die installieren Pakete
  • Es installiert folgende Pakete: ufw rkhunter fail2ban nano sudo htop whois
  • Es setzt einen Cronjob für tägliche Paket-Updates
  • Es erstellt eine Grundkonfiguration für die Firewall „ufw“
  • Es erstellt einen neuen Benutzer
  • Der Standard-Port für SSH wird geändert und der Login mit dem „root“ – User verboten

Verwendung:

Bevor das Script heruntergeladen werden kann, müssen erst die nötigen Pakete zur Verwendung installiert werden:

Zuerst benötigen wir Root-Rechte:

su

Jetzt installieren wir die benötigten Pakete:

apt-get install nano git

Nun können wir das Script downloaden:

git clone https://github.com/CMiksche/DebianServerBasicConfig.git

Anschließend wechseln wir in das Verzeichnis:

cd DebianServerBasicConfig

Und geben in der config.sh – Datei unsere gewünschten Daten (Benutzername, Passwort, SSH-Port) ein:

nano config.sh

Nach dem Abspeichern der Datei geben wir der Install-Datei noch die passenden Rechte:

chmod 0777 install.sh
chown root install.sh

So. Jetzt können wir die Datei auch ausführen:

./install.sh

Danach müssen wir nur noch das Script löschen:

cd ..
rm -R DebianServerBasicConfig

Fertig. Bei dem nächsten Einloggen über SSH ist jetzt nur noch zu beachten, das man den neuen Port, Benutzer und das neue Passwort verwenden muss.

Vorerst keine Suche mehr

Die bisherige Suchmaschine unter „Wronnay.net“ gibt es vorerst nicht mehr. Das dürfte allerdings auch kaum jemanden interessieren, da die Suche sowieso sehr unbekannt war.

Weil die Funktion so unbekannt war, habe ich auch auf dem Server ein Upgrade auf Debian Jessie („8“) ausprobiert, was allerdings schief lief. Deshalb gibt es seit gestern unter „Wronnay.net“ meine ehemalige Projektübersicht.

Die Suche wird vielleicht bald wieder auferstehen, wenn ich eine Lösung gefunden habe, wie ich meine Anpassungen am Server auf die neue Version von Debian umstellen kann. Vielleicht werde ich die Suche aber trotzdem nicht wieder aktivieren – der Dienst wurde so gut wie nie genutzt, hatte allerdings eine sehr hohe Serverauslastung …

Tutorial: Benutzername und E-Mail Überprüfung

Ich habe ein Script gebastelt, dass alle Benutzernamen auf verbotene Usernamen und alle E-Mail-Adressen auf E-Mail-Adressen von Wegwerf-Email-Diensten überprüft.

Wer es verwenden will und nicht mehr als 25 Mal am Tag ausführt, kann es gerne nutzen:

<?php
/* Check for illegal Usernames and / or Emails
* Created: 15.02.2015 by Christoph Daniel Miksche (Wronnay)
* Uses the Wronnay Database for illegal Usernames and Emails
* More Informations: check.wronnay.net
*/
function wcms_namecheck($username, $email){
$username = str_replace(' ', '_', $username); // Wandelt Leerzeichen in _ um
$username = strtolower($username); // Wandelt alle Buchstaben in Kleinbuchstaben um
$email = str_replace(' ', '_', $email);
$email = strtolower($email);
// Nur die Domain wird benötigt
$email = substr(strrchr($email, "@"), 1);
// Wronnay E-Mail-Check API-URL
$locked_email = file_get_contents('http://check.wronnay.net/locked_email.php?domain='.$email);
// Leerzeichen raus!
$locked_email = str_replace(' ', '', $locked_email);
// Wronnay Username-Check API-URL
$locked_username = file_get_contents('http://check.wronnay.net/locked_username.php?username='.$username);
// Leerzeichen raus!
$locked_username = str_replace(' ', '', $locked_username);
// Default Wert für den Check setzen
$found = false;
// Username: Check
if($locked_username == 'true') {
$found = true;
}
// E-Mail-Check
elseif($locked_email == 'true') {
$found = true;
}
return $found;
}
?>

Server: Umzug

Der Server, der 2014 für die meisten Projekte verwendet wurde, wird jetzt nicht mehr verwendet. Im Januar sind die ersten Projekte des alten Servers auf einem neuen umgezogen und die restlichen Projekte sind in den letzten Tagen auf einen anderen, neuen Server umgezogen.

Die zwei neuen Server haben jeweils mehr Leistung als der alte Server. Der Standort (Frankfurt am Main) bleibt und auch sonst hat sich nicht viel mehr geändert, außer dass jetzt mehr als die doppelte Leistung des alten Servers verfügbar ist.

Insgesamt werden im Netzwerk von Wronnay.net 4 Server in 3 Ländern verwendet.