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.
27. Aug
Teaser

Linux: Aktuelle Ubuntu Version auslesen

Um in der Shell oder per command line die aktuelle Ubuntu Version abzufragen, können Sie folgenden Befehl nutzen:

lsb_release -a

Die Ausgabe sieht z.Bsp. so aus:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04 LTS
Release:        16.04
Codename:       xenial

Auf diesem Beispiel-PC läuft also derzeit “Ubuntu 16.04 LTS”.

22. Aug
Teaser

Komplette Webseite mit “wget” sichern

Der folgende Befehl erlaubt es, eine Webseite unter Linux komplett als Kopie lokal zu speichern:

wget -r http://www.domain-name.de

Dabei erstellt “wget” automatisch eine Verzeichnisstruktur im aktuellen Ordner und legt alle angerufenen Dateien dort ab.

21. Aug
Teaser

VirtualBox: Windows ohne Aktivierung umziehen (importieren)

Wenn Sie eine VirtualBox mit installiertem und aktiviertem Windows von einem Host auf einen anderen umziehen, dann fordert Windows beim nächsten Start eine neue Aktivierung.

Das können Sie durch folgenden “Trick” vermeiden:

Lassen Sie sich die Daten Ihrer VirtualBox auf dem Original-/Quell-Host in eine Datei (“vminfo.txt”) ausgeben:

vboxmanage showvminfo /path/to/Original.vbox > vminfo.txt

Öffnen Sie die Textdatei:

nano vminfo.txt

Suchen Sie die “Hardware UUID” heraus (meist ist sie identisch zur Geräte “UUID”):

UUID:            8fd5972d-53fe-42c8-807c-d6dee4e222ed
Hardware UUID:   8fd5972d-53fe-42c8-807c-d6dee4e222ed

Sie können auch folgenden Befehl für das Auslesen benutzen:

vboxmanage showvminfo /path/to/Original.vbox | grep "Hardware UUID"
Hardware UUID:   8fd5972d-53fe-42c8-807c-d6dee4e222ed

Durch den Import auf den Ziel-Host wurden (meist) die UUID verändert. Korrigieren Sie die Hardware UUID durch folgenden Befehl und setzen Sie diese wieder auf den Wert des Original-Hosts:

vboxmanage modifyvm /path/to/New.vbox --hardwareuuid "8fd5972d-53fe-42c8-807c-d6dee4e222ed"

Wenn Sie jetzt die VirtualBox auf dem neuen Host starten, dann wird Windows keine erneute Aktivierung fordern.

08. Aug
Teaser

Sicherheit: Streamen der IP Kamera “HOSAFE-1MB6”

Die IP Kamera “1MB6” vom Hersteller Hosafe liefert auch einen IP-Video-Stream.

Allerdings nicht auf den üblichen Ports und den üblichen Pfaden, sondern etwas versteckt:

rtsp://12.34.56.78:5544/live0.264

Für openRTSP lautet der Befehl z.Bsp.:

openRTSP -D 10 -4 -Q -F "video" -d 30 -P 1800 -t -u admin admin -B 10000000 -b 10000000 rtsp://12.34.56.78:5544/live0.264

Die Angabe “12.34.56.78” ist durch die IP Adresse der Kamera zu ersetzen.

Opened URL "rtsp://12.34.56.78:5544/live0.264", returning a SDP description:
v=0
o=- 1062276890 1 IN IP4 12.34.56.78
s=Session Streamed by LIBZRTSP
i=live0.264
t=0 0
a=tool:LIBZRTSPD v1/0.3
m=video 0 RTP/AVP 96
c=IN IP4 12.34.56.78
b=AS:2
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=4D401F;sprop-parameter-sets=Z03AH5WrFAFuhACDAwAEAAADAHgy,aO22gA==
a=control:track1
m=audio 0 RTP/AVP 0
c=IN IP4 0.0.0.0
b=AS:64
a=rtpmap:0 PCMU/8000
a=control:track2

Created receiver for "video/H264" subsession (client ports 59974-59975)
Changed socket receive buffer size for the "video/H264" subsession from 212992 to 425984 bytes
Created receiver for "audio/PCMU" subsession (client ports 38420-38421)
Changed socket receive buffer size for the "audio/PCMU" subsession from 212992 to 425984 bytes
Sending request: SETUP rtsp://12.34.56.78:5544/live0.264/track1 RTSP/1.0
CSeq: 4
User-Agent: openRTSP (LIVE555 Streaming Media v2014.01.13)
Transport: RTP/AVP/TCP;unicast;interleaved=0-1

Received 219 new bytes of response data.
Received a complete SETUP response:
RTSP/1.0 200 OK
CSeq: 4
Date: Aug 05 2017 19:05:08 GMT
Session: 26C0B3BC;timeout=60
Transport: RTP/AVP/TCP;unicast;destination=192.168.5.50;source=12.34.56.78;interleaved=0-1;mode=PLAY;
x-Dynamic-Rate: 1

Setup "video/H264" subsession (client ports 59974-59975)
Sending request: SETUP rtsp://12.34.56.78:5544/live0.264/track2 RTSP/1.0
CSeq: 5
User-Agent: openRTSP (LIVE555 Streaming Media v2014.01.13)
Transport: RTP/AVP/TCP;unicast;interleaved=2-3
Session: 26C0B3BC

Received a complete SETUP response:
RTSP/1.0 200 OK
CSeq: 5
Date: Aug 05 2017 19:05:08 GMT
Session: 26C0B3BC;timeout=60
Transport: RTP/AVP/TCP;unicast;destination=11.22.33.44;source=12.34.56.78;interleaved=2-3;mode=PLAY;
x-Dynamic-Rate: 1

Setup "audio/PCMU" subsession (client ports 38420-38421)
Outputting to the file: "video.mp4"
Sending request: PLAY rtsp://12.34.56.78:5544/live0.264/ RTSP/1.0
CSeq: 6
User-Agent: openRTSP (LIVE555 Streaming Media v2014.01.13)
Session: 26C0B3BC
Range: npt=0.000-30.000

Received a complete PLAY response:
RTSP/1.0 200 OK
CSeq: 6
Date: Aug 05 2017 19:05:08 GMT
Range: npt=0.000-
Session: 26C0B3BC
RTP-Info: url=rtsp://12.34.56.78:5544/live0.264/track1;seq=0;rtptime=0,url=rtsp://12.34.56.78:5544/live0.264/track2;seq=0;rtptime=0

Started playing session
Receiving streamed data (for up to 30.000000 seconds)...
07. Aug
Teaser

Linux: PHP ohne Apache Webserver installieren

Wenn man PHP installieren möchte und dafür den üblichen Befehl unter Debian benutzt:

apt-get install php5

… dann wird angezeigt, dass auch apache2 usw. usf. installiert werden sollen:

The following extra packages will be installed:
  apache2 apache2-bin apache2-data apache2-utils libapache2-mod-php5 libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0
  libonig2 libperl4-corelibs-perl libqdbm14 lsof php5-cli php5-common php5-json php5-readline ssl-cert

Lösung:
Wenn man jedoch keinen Webserver (oder Apache im Besonderen nicht) installieren möchte, dann hilft:

apt-get install php5-cgi php5
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”.