Ping-Antwort (ICMP-Echo) unter Linux deaktiveren

Manchmal macht es Sinn, unter Linux die Ping-Antwort zu verhindern, d.h. der Rechner reagiert dann nicht mehr auf Ping-Anfragen.

Hier hilft die Datei /etc/sysctl.conf weiter, die man um diesen Eintrag erweitern muss:

net.ipv4.icmp_echo_ignore_all=1

Mit diesem Befehl werden die Einstellungen ohne Neustart übernommen:

sysctl -p

2 Faktor-Authentifizierung für Webmin unter CentOS 7

Eigentlich ist die Aktivierung der 2-Faktor-Authentifizierung für Webmin ganz einfach. Allerdings scheitert das unter CentOS 7 beim Installieren der nötigen CPAN-Pakete. Über die Webmin-GUI hat es bei mir absolut nicht geklappt.

Lösung brachte es, diese Befehl per SSH am Server auszuführen:

yum -y install perl-CPAN
perl -MCPAN -e "install Test::Moose"
perl -MCPAN -e "install Types::Standard"
perl -MCPAN -e "install Moo"
perl -MCPAN -e "install Authen::OATH"

Danach kann dann die 2FA über Webmin „normal“ aktiviert werden.

Linux – Inhalt in vielen Dateien suchen / ersetzen

Manchmal hat man die Themenstellung, das man in vielen Textdateien einen bestimmten Text suchen und ersetzen muss. Manuell ist das natürlich viel zu viel Aufwand, aber unter Linux geht das zum Glück recht einfach.

Soll das ganze in nur einer einzelnen Datei gemacht werden, hilft dieser Befehl weiter:

sed -i 's/SUCHMUSTER/ERSETZUNGSTEXT/g' /pfad/zur/datei

Sollen alle Dateien in einem Verzeichnis entsprechend bearbeitet werden, dann hilft diese Kombination aus find und sed weiter:

find /pfad/zu/dateien -type f -exec sed -i 's/SUCHMUSTER/ERSETZUNGSTEXT/g' {} \;

Ein Beispiel aus der Praxis währe dann zum Beispiel:

find /pfad/zu/dateien -type f name „*.html“ -exec sed -i ’s/iso-8859-1/UTF-8/g‘ {} \; 

CentOS7 – PHP auf 7.2 updaten

CentOS 7 hat ja ein mitlerweile steinaltes PHP 5.4 on board. Sicherheitsupdates dafür sind Fehlanzeige, Support ebenso. Was liegt also näher, als auf PHP 7.2 updzudaten? Voraussetzung ist natürlich, das man vorher geprüft hat, das damit alle Webanwendungen die man verwendet, funktionieren.

Schritt 1: Zunächst müssen wir die Yum-Utils und das Epel-Repository installieren.

yum install epel-release yum-utils -y

Schritt 2: Remipo herunteraden und installieren

yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Schritt 3: Das PHP 7.2 Repository aktivieren. Gültige Parameter wären auch remi-php70 oder remi-php71 je nach gewünschter Version.

yum-config-manager --enable remi-php72

Schritt 4: PHP installieren.

yum install php php-common php-opcache php-mcrypt php-cli php-gd php-curl php-mysql -y

Um alle PHP-Module anzuzeigen, hilft dieser Befehl weiter:

yum search php | more

Schritt 5: Installation prüfen. Zunächst sollte man an der Shell einfach php -v eintippen. Hier muss nun die PHP-Version 7.2 (oder die man gerade installiert hat) zurückgegeben werden. Nun sollte man noch ins Webserver-Verzeichnis eine PHP-Datei ablegen und diese dann im Browser aufrufen – auch hier muss die aktuelle Versionsnummer angezeigt werden. Inhalt:

<?php
phpinfo();
?>

ownCloud / nextCloud – Dateien als Ordner in Documents am iPad

Seit langem nutze ich die App „Documents“ von Readdle. Seit dem letzten ownCloud-Update auf onwCloud 10.x werden hier Dateien als Ordner angezeigt. Andere WebDAV-Clients funktionieren soweit ich das beurteilen konnte.

Ich habe dann länger nach der Ursache geforscht. Unter anderem habe ich das ganze auch mit einer aktuellen nextCloud-Installation getestet, mit dem gleichen Ergebnis. Mit einer alten ownCloud 9 hingegen hat alles richtig funktioniert. Nach längerer Recherche fand ich dann die Lösung in diesem GitHub-Issue.

Zusammengefasst:

Im ownCloud-Verzeichnis gibt es die Datei /lib/composer/sabre/dav/lib/DAV/Server.php

In dieser sucht man nach @param PropFind und löscht den darunter folgenden Block raus und fügt den hier ein. Und schon funktioniert es wieder mit Readdle Documents und ownCloud 10.

 * Small helper to support PROPFIND with DEPTH_INFINITY.
 *
 *
 * @param PropFind $propFind
 * @param array $yieldFirst
 * @return \Iterator
 */
private function generatePathNodes(PropFind $propFind, array $yieldFirst = null) {
    if ($yieldFirst !== null) {
        yield $yieldFirst;
    }
    $newDepth = $propFind->getDepth();
    $path = $propFind->getPath();

    if ($newDepth !== self::DEPTH_INFINITY) {
        $newDepth--;
    }

//FIX in order to create new PropFind objects and not clone them
$propertyNames = $propFind->getRequestedProperties();
$propFindType = $propertyNames ? PropFind::NORMAL : PropFind::ALLPROPS;

    foreach ($this->tree->getChildren($path) as $childNode) {
     //FIX : no cloning, creating new PropFind objects
        //$subPropFind = clone $propFind;
        //$subPropFind->setDepth($newDepth);
        if ($path !== '') {
            $subPath = $path . '/' . $childNode->getName();
        } else {
            $subPath = $childNode->getName();
        }
        //$subPropFind->setPath($subPath);

     //FIX : create a new PropFind object with the right parameters
     $subPropFind = new PropFind($subPath, $propertyNames, $newDepth, $propFindType);

        yield [
            $subPropFind,
            $childNode
        ];

        if (($newDepth === self::DEPTH_INFINITY || $newDepth >= 1) && $childNode instanceof ICollection) {
            foreach ($this->generatePathNodes($subPropFind) as $subItem) {
                yield $subItem;
            }
        }

    }
}

Webserver-Administration mit VirtualMin – Plesk ist tot…

Bisher (siehe alte Blog-Einträge) war ich ein zufriedener Nutzer der kommerziellen Server-Administrationsoberfläche Plesk. Leider hat der Softwarehersteller seine Lizenzpolitik zum Jahresende 2017 so geändert, so das ich jetzt mehr Geld für die Administrationsoberfläche als für den vServer gezahlt hätte. Das war nicht mehr tragbar und so sah ich mich nach einer zukunftsfähigen Lösung um, die meine Anforderungen abdeckte. Diese wären:

  • Einfach Administration von Domains und Subdomains
  • Einfach Administration vom Mailadressen, Mailpostfächern und mySQL-Datenbanken
  • Grafische Oberfläche die verständlich und leicht zu installieren ist
  • Unterstützung von Let’s Encrypt SSL-Zertifikaten für Webserver, Mailserver und FTP-Server
  • Automatisierung von Backups auf einen externen Server, wenn möglich Übertragung per SSH

Ich habe einiges ausprobiert und bin dann letztlich bei VirtualMin gelandet, einer Erweiterung zu Webmin. Meine Anforderungen erfüllt es gut und die Installation verlief dank der ausführlichen Anleitung auf der Webmin-Homepage recht gut. Es stellte sich heraus, das man VirtualMin am besten mit dem Installationsskript auf einem Server installiert, auf dem ein minimal konfiguriertes Linux, am besten ohne Apache und mySQL läuft. Während das Installationsskript läuft, werden alle Komponenten wie mySQL, Apache, Mail- und FTP-Server nachinstalliert.

Ausführliche Infos und die Installationsanleitung findet man auf der Webseite von VirtualMin.

Die Navigation der Anwendung sieht dann so aus:

Alles in allem funktioniert das ganze sehr problemlos und nach kurzer Eingewöhnungszeit kann ich mitlerweile damit alles tun, was ich in Plesk erledigt habe. Nur halt endlich in einer OpenSource-Software, die keine irren Beträge kostet und von einer willkürlichen Preispolitik eines Herstellers abhängig ist.

Ach ja: ein Update von Plesk auf VirtualMin geht nicht, genauso wenig wie das zu einem anderen Panel hin ginge. Die Software macht hierfür zu viele Änderungen im System und jedes Administrationspanel speichert seine Daten an unterschiedlichen Orten und hat auch so einige Besonderheiten, die einen einfachen Umstieg schwierig machen. Aber mit einer Parallelbereitstellung von 2 Servern und schrittweisen Umzug war das alles kein großes Problem.

Linux – Dateien anzeigen, die in den letzten X Tagen erstellt oder geändert wurden

Unter Linux ist es relativ leicht, alle Dateien rekursiv unterhalb des aktuellen Verzeichnisses anzeigen zu lassen, die in den letzten X Tagen geändert wurden:

find ./ -mtime -3

Dieser Befehl gibt alles Dateien aus, die in den letzten 3 Tagen geändert oder erstellt wurden.

Andersherum geht es natürlich auch – wenn man statt -3 z.B. +3 angibt, werden alle Dateien ausgegeben, die älter als 3 Tage sind.

Plesk Onyx Server – Upgrade von mySQL auf MariaDB 10.1

Nachdem ich einen neuen Server mit CentOS 7 aufgesetzt habe und darauf Plesk Onyx als Administrationsoberfläche installiert habe, musste ich feststellen, das darauf mySQL Server 5.5 lief. Da ich einige bestehende Datenbanken übernehmen musste, brauchte ich da was neueres.

Wie so oft im Internet fand ich viele falsche Anleitungen, wie man das macht. Hier nun die zusammengefasste und richtige Fassung:

Zunächst muss man die Version 10.1 von MariaDB installieren. 10.2 wird von Plesk noch nicht voll unterstützt. Was auch immer das bedeutet – ich wollte es nicht ausprobieren. Die Anleitung gibt es bei Plesk.

Theoretisch ist damit das Update auch schon erledigt. Aber ganz vollständig ist die Anleitung leider noch nicht, da die Datenbankstruktur selbst hiermit noch nicht upgedated wurde, was man an Einträgen im Log sieht.

Abschließend muss man noch mit dem Befehl

MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql_upgrade -uadmin

die Datenbankstruktur aktualisieren – und schon funktioniert alles mit MariaDB 10.1.

Nachdem ich dann aber den Watchdog wieder aktiviert habe und den Server neu startete, stellte ich fest, das der Watchdog mit der MariaDB nicht umzugehen wusste. Ich habe da dann noch vom Watchdog eine Mail bekommen, das die Überwachung von MySQL deaktiviert wurde.

Die Lösung: in den Einstellungen vom MySQL-Dienst im Watchdog musste ich die Befehle für das Starten und Beenden des Services anpassen, wie im folgenden Screenshot. Und damit wurde dann auch MariaDB wieder überwacht.

Aus PO Dateien die MO-Dateien erstellen

Für ein WordPress-Projekt musste ich deutschsprachige Übersetzungsdateien herunterladen, die als PO-Dateien vom Hersteller geliefert wurden. Das entsprechende WordPress-Plugin benötigte an der Stelle aber eine PO-Datei.

Die Linux-Kommandozeile half hier mal wieder weiter – und zwar der Befehl

msgfmt -o de.mo de.po

Bei meinem Debian war der Befehl von Haus aus verfügbar, d.h. ich musste nichts nachinstallieren. Auf einem anderen Rechner fehlte es hingegen. Mit apt-get install gettext kann man das aber problemlos nachinstallieren.

Und mir blieb der Weg zu komischen Web-Translator-Diensten die auch PO in MO wandeln können sollen erspart.

Lubuntu & ownCloud – doppelte Passworteingabe verhindern

Unter Lubuntu habe ich den ownCloud-Client installiert. Leider fragt mich der Rechner nun nach jeder Anmeldung nach dem Passwort für den Schlüsselbund. Unter Ubuntu selbst hingegen kommt diese Abfrage nicht.

Das ganze kann man recht einfach abstellen. Zunächst installiert man mit  sudo apt-get install libpam-gnome-keyring  das passende Paket. Nach einer Ab- und Anmeldung sieht der Dialog von eben so aus:

Neu ist nun die Option „Diesen Schlüsselbund beim Anmelden automatisch entsperren“. Diese aktiviert man, und schon kommt diese Meldung nicht mehr!

Detailiert ist das ganze im Ubuntu-Wiki beschrieben.