Browser: Mangelnde Anonymität trotz VPN

Die Meldung ist schon etwas älter (2015), aber in Zeiten zunehmender Gier von Geheimdiensten und Staaten nach Überwachung vielleicht für den einen oder anderen doch ganz hilfreich. Über VPN ins Internet zu gehen und sich sicher zu glauben, ist eventuell ein Trugschluss.

Denn die Browser Mozilla Firefox und Google Chrome sind auf spezielle Nachfragen der Gegenstelle geschwätzig und verraten trotzdem die aktuelle IP-Adresse des Heimatanschlusses – was ja mit VPN eigentlich gerade vermieden werden soll.

Abhilfe:

Chrome: die Erweiterung WebRTC Block installieren
Firefox: in about:config den Schlüssel media.peerconnection.enabled einfach auf False setzen

Quelle:

www.heise.de/newsticker/meldung/Firefox-und-Chrome-verraten-IP-Adressen-trotz-VPN-2534438.html

BGH: Sicherheit vs. Persönlichkeitsrecht

Üblicherweise gibt es strenge Regeln, welche Daten der Besucher einer Website gespeichert werden dürfen. Das muss dann in der sehr oft vernachlässigten Datenschutzerklärung genau beschrieben werden. Gerade die Sammelleidenschaft von Google & Co macht das schwierig, da nur die Suchmaschinen genau wissen, was genau sie speichern – die Webmastertools von Google lassen ahnen, welchen Umfang das hat.

Sicher auch als Folge des jüngsten Cyber-Angriffs („Wanna Cry“) hat der Bundesgerichtshof nun ein Urteil gefällt, das sogar das sonst so hoch gehaltene Persönlichkeitsrecht an die zweite Stelle rückt. Künftig (ab wann genau?) darf die IP-Adresse des Besuchers gespeichert werden, sofern das die Sicherheit der besuchten Website erhöht. Allerdings ist das eine Eintscheidung im Einzelfall – nicht jeder Betreiber darf also nach Herzenslust IP-Adressen speichern.

Allerdings gibt es ja schon immer die berechtigte Diskussion, ob man durch die IP-Adresse tatsächlich den konkreten Nutzer ermitteln kann. Im privaten Haushalt geht das heutzutage vermutlich, zumal die dynamisch vergebenen Adressen über viele Monate konstant bleiben. zumindest hat man dann schonmal den konkreten Haushalt am Haken. In Firmennetzwerken ist das nach wie vor unmöglich, denn die öffentliche IP-Adresse ist eben die des Anschlusses ungeachtet der Technologie im Inneren – hunderte Nutzer kann man von außen nicht auseinander halten.

Abgesehen davon werden sich „Die Bösen“ sicher kaum an Regeln halten und natürlich Techniken wie das Tor-Netzwerk oder andere Zaubertricks nutzen, um ihr Werk zu tarnen. Man wird sehen, in wie weit dieses Urteil Erfolg haben wird. Abgesehen davon, dass die Fehler immer noch „vorm Bildschirm sitzen“ – ich erinnere an das gedankenlose Anklicken von Links in Emails – oder von Entscheidern und Administratoren verursacht werden, die zum Teil heute noch Windows XP betreiben und neue Systeme und Updates einfach nicht nutzen wollen.

Quelle: Tagesschau vom 16.5.2017

Das Aktenzeichen des BGH: Az. VI ZR 135/13

PHP: Ein erweiterter SOAP-Server

Ich möchte einen Lösungsweg beschreiben, der aus meiner praktischen Arbeit entstanden ist und so nicht im Internet in einer geschlossenen Dokumentation zu finden war. Da es kein Betriebsgeheimnis ist, hoffe ich ein gutes Werk zu tun.

Normalerweise besteht ein SOAP-Server in PHP im Kern aus drei Zeilen:

<?php
try {
     $server = new SoapServer($meine_wsdl_url);
     $server->setClass('meine_klasse_mit_funktionen');
     $server->handle();
} catch(SoapFault $e) {
     echo "Fehler SOAP-Server: $e";
}

class meine_klasse_mit_funktionen {

    public function f1($object1) {
        return $object1->wert1;
        // wert1 wird vom Client der Gegenstelle empfangen
    }
}
?>

Zum eigentlichen Server, der mit handle() endet, kommt eine Klasse ‚meine_klasse_mit_funktionen‘, die die benötigten Funktionen enthält, wie sie auch im ggf. vorhandenen WSDL-File definiert sind und die nicht instantiiert wird. Die Funktionen wie f1($object1) werden vom Client der Gegenstelle aufgerufen, was hier nicht behandelt werden soll.

Mein Problem war nun, dass ich noch nie was mit SOAP zu tun hatte und außerdem der Auftraggeber seine diesbezüglichen Schnittstellen nicht für den Anfänger dokumentiert hat. Besonders einige Eigenheiten des verlangten XML-Headers machten mir Probleme. Also musste ich nach einer Lösung dafür suchen, wie ich die gesamte Nachricht vom Client des Auftraggebers zunächst mal sichtbar machen konnte. Ich sah immer nur das Ergebnis (oder besser gesagt keins, denn es funktionierte lange nichts…), aber „dazwischen“ konnte ich nichts sehen.

Die Lösung ist recht einfach, war aber für mich eher ein Zufallsfund. Mittels

$xmlstring = file_get_contents('php://input');

hat man die gesamte empfangene Zeichenkette in der Variable $xmlstring. Diese kann ich in eine Date test.xml schreiben und vom Opera-Browser aufrufen. Nebenbei: Firefox ist dafür ungeeignet, denn der interpretiert die vorkommenden Namespaces als nicht erkennbar und schreibt sie nicht hin! Jetzt konnte ich zumindest schon mal sehen, was bei mir ankommt.

Nun war es noch nötig, einzelne Attribute und deren Werte  auszulesen. Eine Hürde dabei war, dass alle Attribute an verschiedene Namespaces geknüpft sind. Das verhindert nämlich das einfache Auslesen als einfaches XML-Element, wie es zum Beispiel hier gemacht wird. Meine Lösung sieht schematisch wie folgt aus:

$xml = new SimpleXMLElement($xmlstring);
$xml->registerXPathNamespace('wsse', $mein_security_namespace);
$attribut_wert = $xml->xpath('//wsse:username');

Damit kann ich auf jedes Element samt Namespace zugreifen und vielleicht eine Abfrage der Anmeldedaten realisieren.

Insgesamt kommt dabei folgendes als grobe Vorlage heraus:

<?php

$xmlstring = file_get_contents('php://input');

$xml = new SimpleXMLElement($xmlstring);
$xml->registerXPathNamespace('wsse', $mein_security_namespace);
$attribut_wert = $xml->xpath('//wsse:username');

if('MaxMustermann' == $attribut_wert) {

  try {
    $server = new SoapServer($meine_wsdl_url);
    $server->setClass('meine_klasse_mit_funktionen');
    $server->handle();
  } catch(SoapFault $e) {
    echo "Fehler SOAP-Server: $e";
  }
} // if

class meine_klasse_mit_funktionen {
  public function f1($object1) {
    return $object1->wert1;
    // wert1 wird vom Client der Gegenstelle empfangen    
  }
}
?>

Ich hoffe, es kann dem einen oder anderen helfen. Kommentare sind ausdrücklich erwünscht 🙂 !

Kann man Social Bots erkennen?

Immer wieder ist von Social Bots die Rede. Also von Computerprogrammen, die als Verfasser oder Kommentatoren in den „Sozialen Medien“ agieren und dort Botschaften verbreiten oder unterstützen, die ein bestimmtes Ziel haben – Wahlbeeinflussung oder Ausländerfeindlichkeit zum Beispiel.

Mir scheint übrigens, auch in den Newsgroups gibt es solche Bots, die ich hinter Beiträgen mit meist abstrusem Inhalt vermute und die gern als „Trolle gefüttert“ werden.

Solche Bots zu erkennen und von echten schreibenden Menschen zu unterscheiden, dürfte für den Leser keine leichte Übung sein. Zumindest dann, wenn nicht ganz offensichtlicher Unfug geschrieben wird (obwohl, auch manche Menschen schreiben Unfug…). Im folgenden Artikel wird kurz versucht zu erklären, wie man Social Bots erkennen kann:

t3n.de/news/bundestagswahl-2017-social-bots-entlarven-800024/

Für mich heißt die Frage eigentlich nicht, wie ich solche Bots erkennen kann, sondern ob. Denn ein Profil heißt ja nicht unbedingt „IchBinEinBot“, sondern „Erika Mustermann“, vielleicht sogar mit einem geklauten Bild einer Frau aus dem Volk. Vielleicht heißt es auch „DonaldJTrump“ – am Inhalt kann man es also auch nicht unbedingt festmachen.

Ist es überhaupt wichtig, solche Techniken zu erkennen? Für mich als Person eher nicht. Aber gesamtgesellschaftlich scheint diese relativ neue Masche ja Auswirkungen zu haben, zumindest ahnt man bereits Manipulationen von Wahlen oder einfach nur Stimmungen für oder gegen etwas oder jemanden. Und da kann es schon gefährlich werden!

Ich werde weiter nach passenden Artikeln suchen, das Thema interessiert mich. Ich selbst bin nicht besonders aktiv in den sozialen Medien, weder Facebook noch Twitter sind mein Ding. Lediglich Google+ gibt mir immer mal Lektüre, über die ich gelegentlich auch am Zweifeln bin…

Linux: überflüssige alte Kernel löschen

Ich habe mal gelesen, dass es mit neueren Linux-Distributionen nicht mehr zur früheren Ansammlung alter Kernel und zugehöriger Header-Pakete käme, wenn neue Kernel installiert werden. Obwohl meine derzeit noch laufende Ubuntu-Version 14.04 nun nicht unbedingt alt ist, fand ich heute ein gutes Dutzend solcher alter Pakete, die insgesamt über ein Gigabyte Platz benötigten.

Wenn das Boot-Verzeichnis in einer eigenen Partition liegt, kann das dazu führen, dass diese voll wird und dann keine Kernel-Updates mehr gemacht werden können.

Hier wiki.ubuntuusers.de/Skripte/Alte_Kernel_entfernen

wird beschrieben, wie man diesen Müll sicher und schnell entfernt. Die Kurzfassung:

dpkg -l 'linux-[ihs]*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\([-0-9]*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | tee zu_entfernende_Kernel

cat zu_entfernende_Kernel | xargs sudo apt-get -y purge
rm zu_entfernende_Kernel

Nicht vergessen: entweder jeweils sudo davor oder gleich in einer root-Shell machen! Achtung, die erste Zeile ist überlang, bitte komplett markieren! Die Datei „zu_entfernende_Kernel“ kann man nach dem ersten Schritt noch bearbeiten, falls man bestimmte Kernel dennoch aufheben möchte – das ist der Vorteil gegenüber Lösungen, die gleich alles in einem Rutsch machen.

Abmahngefahr bei Verwendung des AMP-Plugins in WordPress

AMP steht für Accelerated Mobile Pages – eine recht neue Technologie, mit der Websites für die Mobile Anzeige auf minimale Größe (Bytes) getrimmt werden, um auf Mobilgeräte möglichst schnell und mit wenig Datenverbrauch angezeigt werden zu können. Das geht nicht ganz ohne Verluste. So verschwinden Menüs und große Bilder. Dumm nur, wenn in den Menüs die gesetzlich obligatorischen Links zum Impressum und zu den Datenschutz-Bestimmungen enthalten sind und die auch mit verschwinden!

Auf diese Weise entstehen eventuell Websites, die zumindest in der mobilen Ansicht abmahnfähig sind, ohne dass sich der Designer und Besitzer dessen bewusst sind. Ein gefundenes Fressen für die besondere Spezies der Anwälte, die darauf aus sind! Zum Glück kann man mit etwas Programmierkenntnissen abhelfen, sofern es die Struktur der Seiten gestattet.

Auf der Website der RA-Kanzlei Plutte sind der Sachverhalt und die Lösung gut beschrieben – vielen Dank!

Quelle: www.ra-plutte.de/wordpress-abmahngefahr-nutzung-amp-plugin-automattic

Verpixelte Kfz.-Kennzeichen auf Fotos

Weit verbreitet ist es, auf Fotos und in Videos, die im Internet oder anderen Medien gezeigt werden, lesbare Kfz-Kennzeichen unkenntlich zu machen, also sie zu „verpixeln“ oder unscharf zu machen. Soll das Bild einen künstlerischen Wert haben, ist der dahin.

Auf mich macht das immer den Eindruck, als wären alle sichtbaren Autos oder Menschen in einen Kriminalfall verwickelt. Man argumentiert sicher meist damit, dass es das Persönlichkeitrecht verletze, wenn jedermann mich oder mein Eigentum irgendwo erkennt (Das Recht am eigenen Bild gilt natürlich, aber hier geht es nur um die Kennzeichen).

Dem ist nicht so, zumindest nicht was die Kfz.-Kennzeichen betrifft. Ein Kraftfahrzeug ist eine Sache, keine Person. Und es kann von mir auch nicht ohne das Zutun einer Behörde einer Person zugeordnet werden, sofern ich den Zusammenhang nicht zufällig kenne. Durch einen Blogbeitrag bei Google+ bin ich zufällig darauf aufmerksam geworden, dass es schon vor vielen jahren geregelt wurde, dass Kfz.-Kennzeichen nicht unkenntlich gemacht werden müssen.  Wer die lange gerichts-deutsche Erklärung des Landgerichts Kassel von 2007 (!) nachlesen möchte, möge das bitte hier tun:

Quelle:
www.datenschutz.eu/urteile/Landgericht-Kassel-20070510

Hinweis

ACHTUNG: Ob der Beschluss des LG Kassel eventuell inzwischen revidiert oder erweitert wurde, entzieht sich meiner Kenntnis. Ob er auch für Videos und andere Medien als das Internet gilt, ebenfalls. Meine Aussagen sind daher unter Vorbehalt zu sehen. Ich bin für Kommentare ausdrücklich dankbar!

Optimale MTU ermitteln (Ubuntu)

Was ist die MTU?

Die Maximum Transmission Unit (MTU) deutsch maximale Übertragungseinheit) beschreibt die maximale Paketgröße eines Protokolls der Vermittlungsschicht (Schicht 3) des OSI-Modells, gemessen in Oktetten, welche ohne Fragmentierung in den Rahmen (engl. „Frames„) eines Netzes der Sicherungsschicht (Schicht 2) übertragen werden kann. (Wikipedia).

Verstanden? Also ich habe alles schonmal irgendwie gehört, könnte es aber nie so widergeben… Also kurz gesagt: Die MTU ist die maximale Paketlänge bei einer Datenübertragung, bei der die Datenpakete noch nicht zerstückelt werden. Oder so ähnlich. Fakt ist, diese Zahl sollte so genau wie möglich den technischen Gegebenheiten angepasst werden, um den Datenaustausch zum Beispiel mit dem Internet nicht zu bremsen.

Im Folgenden möchte ich zeigen, wie ich (Ubuntu 14.04) meine MTU ermittelt habe und einstellen könnte.

Wie ermittle ich die bei mir eingestellte MTU?

Bekannte Größen sind 1492 oder 1500. Bei der Installation meines Ubuntu-Systems wurde ein Wert ermittelt und gesetzt. So finde ich ihn mit einem Shell-Befehl:

[rollo: ~] ifconfig eth0
eth0 Link encap:Ethernet Hardware Adresse 00:1d:92:01:24:26 
inet Adresse:192.168.178.4 Bcast:192.168.178.255 Maske:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1
RX-Pakete:135724 Fehler:0 Verloren:366 Überläufe:0 Fenster:0
TX-Pakete:83939 Fehler:0 Verloren:0 Überläufe:0 Träger:0
Kollisionen:0 Sendewarteschlangenlänge:1000 
RX-Bytes:142830244 (142.8 MB) TX-Bytes:10209485 (10.2 MB)

In der dritten Zeile steht der eingestellte Wert 1500.

Wie ermittle ich den optimalen Wert?

Wollen wir mal sehen, welcher Wert eigentlich optimal ist. Das ermittle ich mit einem weiteren Shell-Befehl, indem ich die „Route“ zum Webserver abfrage, auf der diese Website liegt. Hierfür ist jede vorhandene namentliche oder numerische Domain nutzbar:

[rollo: ~] tracepath it-consulting-stahl.de
 1?: [LOCALHOST] pmtu 1500
 1: router 1.192ms 
 1: router 0.888ms 
 2: no reply
 3: 83-169-181-254-isp.superkabel.de 18.882ms 
 4: ip5886c235.dynamic.kabel-deutschland.de 18.848ms asymm 5 
 5: ip5886eb2c.dynamic.kabel-deutschland.de 22.478ms asymm 6 
 6: ip5886cbf0.dynamic.kabel-deutschland.de 23.539ms asymm 5 
 7: decix.r1.fra3.opencarrier.eu 19.709ms asymm 8 
 8: decix.r1.fra3.opencarrier.eu 18.915ms 
 9: oc-dus.tal.de 26.389ms 
10: oc-dus.tal.de 22.069ms asymm 9 
11: mail-s4.rb-host.de 25.715ms reached
 Resume: pmtu 1500 hops 11 back 11

Hier steht in der ersten Zeile die vorgegebene MTU, in der letzten die ermittelte optimale. Beide sind bei mir gleich, ich muss nichts weiter tun. Wenn die optimale MTU anders sein sollte, sollte ich handeln.

Wie ändere ich die MTU?

Auch das geht ganz einfach in der Shell mit dem Befehl ifconfig:

[rollo: ~]sudo ifconfig eth0 mtu 1500

Achtung, hierfür sind root-Rechte erforderlich (sudo)!