Copying sources and texts (also in parts) for publishing without our permission is NOT ALLOWED. We are fed up with finding our work on other sites (like stackoverflow).
Das Kopieren von Quellcode und Texten (auch in Auszügen) ist nicht erlaubt. Wir haben es gründlich satt, unsere Arbeit auf anderen Webseiten zu finden.

Copying for non-public usage is allowed.           Das private Kopieren und Benutzen ist natürlich erlaubt und erwünscht.
05. Aug
Teaser

WordPress: Die readme.html Datei blocken

WordPress hat schon lange die unbeachtete Sicherheitslücke mit der eigenen “readme.html” Datei.

Das wird bei den Veröffentlichungen (Updates) wohl auch keiner vom WordPress Team mehr lernen: Solche Details geben Angreifern wertvolle Informationen über das eingesetzte System, die eingesetzte Version (denn auch die readme Datei ändert sich von Zeit zu Zeit) und somit mehr Möglichkeiten des Angriffes. Der Inhalt solcher Dateien ist für den Webseitenbetreiber ggf. interessant; jeden anderen gehen solche Details nichts an.

Lösung:
Sperren Sie selbst in der .htaccess Datei den Zugriff auf diese Datei:

RewriteCond %{THE_REQUEST} /readme\.html[?/\s] [NC]
RewriteRule ^ - [R=404,L]

Danach wird dem Benutzer für diese Datei ein 404 Fehler (“Datei nicht gefunden”) angezeigt.

13. Jul
Teaser

Sicherheit: SSL für Authentifizierung erzwingen (Apache erlaubt non-SSL redirect)

Wenn Sie auf Ihrem Webserver Verzeichnisse per “.htaccess” schützen und SSL für eine verschlüsselte und sichere Übertragung der Benutzerdaten benutzen möchten, dann kennen Sie wahrscheinlich das Problem:

Der Benutzer ruft die Webseite ohne SSL (“http://” und nicht “https://”) auf und die Passwortabfrage erscheint noch vor der Weiterleitung auf die SSL geschützte Seite. Das heißt, dass die Benutzerdaten (Benutzername und Passwort zur Identifizierung) unverschlüsselt an den Server übertragen werden und erst nach der Akzeptanz dieser Zugangsdaten eine Weiterleitung auf die SSL geschützte Webseite erfolgt. Nicht wirklich sicher und nicht wirklich der gewünschte Ablauf, denn gerade solche Daten sollten bei der Übertragung geschützt werden.

Lösung: Ergänzen Sie Ihre “.htaccess” Datei nach dem folgenden Muster und der Apache-Server wird erkennen, dass der Benutzer ohne SSL zugreift. Zuerst erfolgt dann eine Weiterleitung auf den SSL Kanal und erst danach, auf Basis der SSL Verschlüsselung, erfolgt die Abfrage der Benutzerdaten (in diesem Beispiel gegen die “.htpasswd”).

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

<If "%{HTTPS} == 'on'">
AuthUserFile "/path/to/.htpasswd"
AuthType Basic
AuthName "Enter your password with SSL protection"
require valid-user
</If>
27. Jun
Teaser

Sicherheit: access.log analysen (Browser, IP Adressen, …)

Um aus der “accedd_log” (oder “access.log”) die Anzahl der unterschiedlichen Browser zu filtern, nutzen Sie folgenden Befehl:

awk -F\" '{print $6}' /var/log/access_log | sort | uniq -c | sort -fnr

Die 50 häufigsten IP Adressen von Zugriffen zu erhalten:

awk '{print $1}' /var/log/access_log | sort | uniq -c | sort -rn | head -50

Bei beiden Beispielen muss natürlich der Pfad zum gewünschten Log angepasst werden.

02. Jun
Teaser

mySQL: Using a password on the command line interface can be insecure

Über die “Sicherheit”, ein Passwort im Klartext gleich neben den SQL Befehl zu schreiben, möchten wir Sie nicht aufklären. Das wird Ihnen selbstverständlich bewußt sein und Sie suchen wahrscheinlich nur eine Lösung um solche Befehle weiterhin nutzen zu können.

Geben Sie das Passwort über die Bash gleich mit an. Hier ein Script-Beispiel:

export MYSQL_PWD=MeinPasswort;mysql -u root -e "CREATE DATABASE example;"
22. Mai
Teaser

Fritz!Box: Prüfen, ob TR-069 aktiv ist und ob/wann der letzte Kontakt zum ACS1 Server war

Durch das TR-069 Protokoll können Provider (und ggf. andere) z.Bsp. auf Router (Fritz!Box = Router) zugreifen. Dadurch können Einstellungen, Firmware, etc. ausgelesen und manipuliert werden. Von diesen Zugriffen und Änderungen bekommen Sie als verantwortlicher Eigentümer der Fritz!Box (ein AVM Produkt) nichts mit.

Für weitere Details empfehlen wir Ihnen die entsprechende Wikipedia Seite:
https://de.wikipedia.org/wiki/TR-069

Bis zur Version 6.30 der FritzBox Firmware gab es die Möglichkeit, per “telnet” auf die FritzBox zuzugreifen und das TR-069 Protokoll (und andere Einstellungen) selbst anzupassen. Ab Version 6.30 ist das (leider) nicht mehr möglich. Ein Auszug aus der Info-Datei von AVM:

[...]
Neues in FRITZ!OS 6.30
[...]
Hinweis - Zugang zur FRITZ!Box per Telnet wird nicht mehr unterstützt
[...]

Angeblich soll die TR-069 Funktionalität in der FritzBox Oberfläche abgeschaltet werden können.

Gehen Sie dafür auf Ihre FritzBox (im Browser in die Adresszeile http://fritz.box eingeben) und aktivieren Sie die “erweiterte Ansicht” (unten links auf “Ansicht:” klicken, bis “Ansicht: Erweitert” angezeigt wird).

Führen Sie folgende Schritte aus:

  1. Klicken Sie im linken Menü auf “Internet”
  2. Dann den Unterpunkt “Zugangsdaten” anklicken
  3. Im Hauptfenster den Bereich “Anbieter-Dienste” öffnen
  4. Deaktivieren Sie alle hier angezeigten Optionen (derzeit drei Stück)
  5. Speichern Sie die Einstellungen per Klick auf “Übernehmen”

Nachdem diese Option (lt. AVM Support) auf diese Weise deaktiviert sein soll, können Sie sich Ihre komplette FritzBox Konfiguration auf folgende Weise einfach ansehen: Sie erstellen ein Backup der Einstellungen

  1. Klicken Sie im linken Menü auf “System”
  2. Jetzt den Unterpunkt “Sicherung” anklicken
  3. Geben Sie ein Kennwort ein (für diesen Test z.Bsp. einfach “xxx”)
  4. Klicken SIe auf “Sichern”
  5. Lästigerweise muss diese Aktion (neuerdings) per Telefon bestätigt werden:
    Folgen Sie also bitte der angezeigten Anleitung zur Eingabe eines PIN per Telefon. Klicken Sie danach auf das dann angezeigte “OK”.
  6. Speichern Sie die Datei auf Ihrem Computer

Anmerkung:
Wenn eine sicherheitsrelevante Einstellung wie das TR-069 so “einfach” zu deaktivieren wäre, dann wäre ja alles ok.

Öffnen Sie bitte die gerade gespeicherte Datei. Es ist eine Textdatei, ein einfaches Textprogramm wie “notepad” oder “wordpad” sind vollkommen ausreichend und sind bei Windoes meist automatisch instelliert.

Suchen Sie in der Datei nach der Zeichenkette “tr069discover” (meist per “Strg+F”). Sie werden eine folgende Anzeige finden:

tr069discover_active = yes;
tr069discover_mode = only_pppoe;
tr069discover_without_dhcpoption = no;
tr069discover_forced = yes;
tr069discover_vlan_takeover = no;
tr069discover_vlancfg_list {
        vlanencap = vlanencap_fixed_prio;
        vlanid = 7;
        vlanprio = 0;
}
tr069discover_vlancfg {
        vlanencap = vlanencap_none;
        tagtype = vlantagtype_customer;
        vlanid = 0;
        vlanprio = 0;
        tos = 0;
}

Extrem wichtig ist hier die Einstellung “tr069discover_mode”. Diese soll (wenn schon TR-069 aktiviert ist) verhindern, dass sich jemand über das Internet mit Ihrer FritzBox über das Protokoll verbinden kann. Durch diese Einstellung soll der Zugriff auf Anfragen über die aktuelle Einwahl zum Provider beschränkt werden.

Um die Details zur Verbindung zum TR-069 einzusehen, suchen Sie bitte nach dem Text “tr069cfg”:

tr069cfg {
        enabled = yes;
        litemode = yes;
        tr181_support = no;
        dhcp43_support = no;
        igd {
                DeviceInfo {
                        ProvisioningCode = "666";
                        FirstUseDate = "2017-01-11 12:51:28";
                }
                managementserver {
                        url = "https://acs1.online.de";
                        username = "$$$$CG5T**entfernt";
                        password = "$$$$CJBE**entfernt";
                        URLAlreadyContacted = yes;
                        LastInformReq = "2017-05-21 17:20:19";
                        LastSuccessfulContact = "2017-05-21 17:20:19";
                        URLbyDHCPIface = "";
                        PeriodicInformEnable = no;
                        PeriodicInformInterval = 0;
                        PeriodicInformTime = "1970-01-01 01:00:00";
                        UpgradesManaged = no;
                        ACSInitiationEnable = no;
                        ACSInitiationPorts = "46000+1000";
                        SessionTerminationWithEmptyPost = no;
                        ConnectionRequestUsername = "";
                        ConnectionRequestPassword = "";
                        dnsprefer = tr069dnsprefer_ipv6;
                }
        }
        FirmwareDownload {
                enabled = no;
                enabled_converted = no;
                upload_enabled = no;
                valid = no;
                suppress_notify = yes;
                status = 0;
                StartTime = "1970-01-01 01:00:00";
                CompleteTime = "1970-01-01 01:00:00";
                method = Download_Method_DL;
        }
        RebootRequest = no;
        RebootRequest_CommandKey = "";
        ACS_SSL {
                verify_server = yes;
                trusted_ca_file = "/etc/default/root_ca.pem";
        }
        Download_SSL {
                verify_server = yes;
                trusted_ca_file = "/etc/default/root_ca.pem";
        }
        guimode = guimode_visible;
        lab {
                Enable = no;
                URLAlreadyContacted = no;
                PeriodicInformInterval = 0;
                Features = 65535;
        }
}

Mehr als irritierend ist hier die erste Einstellung:

enabled = yes;

Wenn ich TR-069 deaktiviere, dann erwarte ich auch ein vollständig deaktiviertes Protokoll bzw. eine komplett deaktivierte Schnittstelle (Dienst).

Trotz “Deaktivierung” ist offenbar der TR-069 Dienst auf der FritzBox immernoch aktiv (= enabled).

Auch die nachfolgende Zeile mit dem “litemode” bessert meine Laune und das Vertrauen dabei nicht ! Wie wenig lustig dieses Thema und diese Einstellungen sind, können Sie z.Bsp. auch in diesem Heise Artikel erfahren: Millionen DSL-Router durch TR-069-Fernwartung kompromittierbar. Der Artikel stammt aus dem Jahr 2014; genügend Zeit also für eine Korrektur war vorhanden.

Den letzten Kontakt zum Server finden Sie in der Einstellung “LastSuccessfulContact”.

10. Apr
Teaser

svn: E205009: Local, non-commit operations do not take a log message or revision properties

Sollte bei einem SVN Befehl folgender Fehler auftreten:

svn: E205009: Local, non-commit operations do not take a log message or revision properties

… dann fehlt häufig der “file:///” Zusatz oder ist fehlerhaft.

Beispiel:

svn mkdir --parents /home/path/svn/name/{trunk,tags,branches} -m "initial dir creation"

erzeugt die o.a. Fehlermeldung. Der richtige (korrekte) Befehl lautet:

svn mkdir --parents file:///home/path/svn/name/{trunk,tags,branches} -m "initial dir creation"
31. Mrz
Teaser

SVN: Die Grundstruktur mit einem Befehl erzeugen

In einem SVN Repository können Sie die (meist) benötigte Grundstruktur mit den Ordnern “trunk”, “tags” und “branches” mit einem einzigen Befehl in der Kommandozeile erstellen lassen:

svn mkdir --parents file:///path/to/svn/repositoryName/{trunk,tags,branches} -m "initial dir creation"

Der Parameter -m “initial dir creation” stellt dabei den zu speichernden Text dar.

02. Mrz
Teaser

Gefährlicher Müll: Pseudo Rechnungen mit personlichen Daten

Betreff : Rechnung für Max Muster NR. 025653380
Absender: Sachbearbeiter OnlinePayment GmbH 

Sehr geehrte(r) Max Muster,

leider mussten wir feststellen, dass die Zahlungserinnerung Nummer 025651280 bis 
heute ohne Reaktion Ihrerseits blieb. Nun bieten wir Ihnen damit letztmalig die 
Chance, den nicht gedeckten Betrag unseren Mandanten OnlinePayment GmbH zu 
begleichen.

Aufgrund des bestehenden Zahlungsausstands sind Sie verpflichtet dabei, die durch 
unsere Tätigkeit entstandene Kosten von 81,08 Euro zu tragen. Bei Fragen oder 
Unklarheiten erwarten wir eine Kontaktaufnahme innerhalb von 48 Stunden. Um 
weitete Kosten auszuschließen, bitten wir Sie den ausstehenden Betrag auf unser 
Bankkonto zu überweisen. Berücksichtigt wurden alle Buchungen bis zum 05.04.2017.

Verbindliche Personalien:

Name
Anschrift
PLZ Ort

Telefon: Nummer

Überweisen Sie den nun fälligen Betrag unter Angaben der Artikelnummer so 
rechtzeitig, dass dieser spätestens zum 11.04.2017 auf unserem Bankkonto verbucht 
wird. Können wird bis zum genannten Datum keine Überweisung bestätigen, sind wir 
gezwungen Ihre Forderung an ein Inkasso zu übergeben. Alle damit verbundenen 
zusätzliche Kosten werden Sie tragen müssen.

Die detaillierte Kostenaufstellung NR025653380, der Sie alle Einzelpositionen 
entnehmen können, befindet sich im Anhang.

Mit verbindlichen Grüßen

Sachbearbeiter Tobias Wein

Im Anhang findet sich eine Zip-Datei, welche meist den Namen des Empängers trägt.

Diese Zip-Datei sollten Sie unter keinen Umständen speichern oder öffnen.

Um den Inhalt einmal preis und damit eine Begründung für meine Warnung zu geben, habe ich die Datei in einer geschützten Umgebung analysiert.

In der Zip-Datei versteckt sich wieder eine Zip-Datei, in welcher eine ausführbare Datei (.com Endung) enthalten ist. Würde diese Datei auf dem PC ausgeführt werden, kann sie alles mögliche installieren, auslesen oder durchführen. Das dadurch gestartete Programm hat auf alle Daten Zugriff, auf welche Sie auch Zugriff haben. Wenn sie “nur” gelesen und/oder verschickt werden ist das schon schlimm genug. Wenn jedoch unbemerkt Daten verändert werden, dann haben Sie innerhalb von Sekunden(bruchteilen) veränderte Daten bzw. Dateien.

23. Feb
Teaser

Spam per Telefon: Fakeanrufe aus dem Ausland

Es nervt hauptsächlich Unternehmen und kleine Betriebe, denn Telefonnummer und Ansprechpartner sind zumeist einfach und öffentlich auf den Webseiten zu erkennen: Das Telefon klingt mehrfach am Tag und unbekannte Telefonnummer aus dem Ausland werden angezeigt.

Dabei gilt die erste und wichtigste Regel:

Nicht ohne Prüfung zurückrufen !

In diesen Tagen haben es Betrüger als neue Masche entdeckt, sich (meist Handy-) Nummern im europäischen Ausland besorgt. Wenn man dort ahnungslos zurückruft, dann können hohe Kosten entstehen.

Auch wenn man das Gespräch entgegen nimmt, wird einem auf englisch versucht, dubiose Methoden vorzustellen. Es sind meist Call-Center, denn der Gesprächslärm im Hintergrund ist beträchrlich.

Bei einem der letzten Anrufe haben sich die Anrufer leider entgültig als (dämliche) Betrüber verraten: Sie riefen von einer dänischen Nummer an. Nach zwei Sätzen Englisch wechselte ich die Sprache ins Dänische und der Anrufer war deutlich überfordert und vollkommen verwirrt.

Also erklärte ich ihm in der englischen Zwei-Worte-Kurzversion meine Meinung und legte auf.

Das ist auch die beste Empfehlung: Direkt wieder auflegen.

20. Feb
Teaser

VirtualMin: .. request failed : Domain has no website, and DNS-based validation is not possible

Unter VirtualMin gibt es eineen Bug mit den Scripten zum Update der SSL Zertifikate von “Let’s Encrypt”.
Nach dem bzw. beim Ausführen der autotomatischen Updates wird folgende Meldung produziert

Requesting a certificate for * from Let's Encrypt .. 
.. request failed : Domain has no website, and DNS-based validation is not possible

Derzeit steht noch kein Fix oder Update bereit. Die folgende Lösung behebt das Problem jedoch vorübergehend und erlaubt die automatische SSL Aktualisierung:

Melden Sie sich an Ihrem Server (oder dem Computer mit dem VirtualMin Server) als “root” an:

find / -name feature-ssl.pl

Notieren Sie sich den Fundort des gesuchten Perl-Scriptes (z.Bsp. “/usr/share/webmin/virtual-server/feature-ssl.pl”)

nano /usr/share/webmin/virtual-server/feature-ssl.pl

Gehen Sie in Zeile 2148 (z.Bsp. durch die Tastenkombination “Strg Shift -“) und korrigieren Sie die folgende (fehlerhafte) Zeile

if ($d->{'web'} && 0) {

in diese (korrigierte) Zeile:

if ($d->{'web'}) {

Beenden und speichern Sie die Datei (Tastenkombination “Strg X” und dann mit “Enter” bestätigen). Starten Sie nun VirtualMin neu:

/etc/webmin/restart

Fertig.

Einen Augenblick später wird das SSL Zertifikat erneuert und Sie erhalten (sofern Sie es eingestellt haben) eine E-Mail zu Bestätigung:

A new certificate was successfully requested from Let's Encrypt, and installed for xyz.com