ubuntuusers.de

26. April 2014

Es wurde letztens eine neue Version des Proprietären AMD-Treibers veröffentlicht.
Die Version 14.4 enthält neben einigen Verbesserungen erstmals die Unterstützung von
OpenGL 4.4.
Da (fast) alle Spiele unter Linux OpenGL nutzen ist dies vor allem für diese Wichtig.

Auch wird mit dieser Version die Grafikkarte Radeon R9 295X von AMD unterstützt.

Die Unterstützung von Ubuntu 12.04.4 statt 14.04 ist für die meisten Nutzer eher unwichtig da die neue LTS Version 14.04 bereits veröffentlicht wurde.
Dies kann aus meiner Sicht auch an der kurzen Zeitspanne zwischen den beiden Veröffentlichungen von AMD Treiber und Ubuntu liegen.
Nach dem Update auf einer Xubuntu 14.04 Installation lief dass System nach wie vorher und ich konnte keine größeren Probleme feststellen.

Zu den Fehlerbehebungen zählen vor allem Behebungen von Problemen die im Zusammenhang mit Piglit auftraten.
Auch der „Black screen“ Fehler beim benutzen des Big picture Modus von Steam sollte nun nicht mehr auftreten.

Wer genauere Informationen zum Update benötigt kann in den Informationen über diese Version auf der AMD Webseite nachlesen.

Von Keybase.io dürften viele von euch schon gehört haben, speziell auf Twitter ist die Seite gerade recht bekannt.
Falls ihr doch noch nicht wisst worum es bei Keybase.io geht, gibt es hier einen sehr ausführlichen Blogpost von mspr0 dazu.
Und falls ihr zu den Menschen gehört, die Informationen lieber in Audio-Form geliefert bekommen, gibt es hier auch einen kurzen Beitrag vom Deutschlandfunk zum Thema.

Ich habe noch sechs Einladungen für Keybase.io zu vergeben.
Wenn ihr eine davon haben möchtet könnt ihr einfach unter diesem Beitrag einen Kommentar hinterlassen (ich verschicke die Einladung dann an die E-Mail-Adresse, die ihr bei kommentieren angebt) oder mir eine Mail per Encrypt.to schreiben.

[EDIT]: Es ist noch eine Einladung übrig.
[EDIT 2]: Alle Einladungen sind vergeben. Ich sage Bescheid wenn es neue gibt. O:-)


via /home/micha

25. April 2014

Bei den meisten gängigen Internetzugängen erhalten Sie momentan keinen IPv6-Zugang, sondern nur IPv4. Die Installation eines winzigen Pakets reicht aus, um dennoch IPv6 ausprobieren zu können.

Mit ping6 können Sie ausprobieren, ob IPv6 funktioniert:

ping6 google.com
  connect: Network is unreachable

Ihre aktuellen IP-Adressen verrät das Kommando ip addr (Ausgabe gekürzt):

ip addr
1: lo: 
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
2: eth0: 
    inet 10.0.0.77/24 
    inet6 fe80::16da:e9ff:fee1:5c92/64 scope link 

Im Ergebnis tauchen zwar zwei IPv6-Adressen auf, die sind aber für eine Verbindung nach außen ungeeignet. Die Adresse ::1/128 gilt für die Loopback-Schnittstelle und ermöglicht die IPv6-Kommunikation auf dem lokalen Rechner: Ein auf Ihrem Rechner laufendes Programm kann daher mit einem anderen, ebenfalls dort ausgeführten Programm via IPv6 Daten austauschen.

Die Adresse fe80::*/64 ist nur im lokalen Netzwerk gültig. Sie hilft allen Geräten im LAN via IPv6 zu kommunizieren, sofern dies erwünscht ist. Die Adresse hat damit eine ähnliche Funktion wie automatisch erzeugte IPv4-Adressen von Zeroconf/Avahi/Bonjour. Dieses ursprünglich vor allem von Apple eingesetzte System ermöglicht es, dass sich Geräte im lokalen Netzwerk sehen und miteinander kommunizieren können. Beispielsweise kann so ein Drucker ohne lange Konfigurationsarbeiten genutzt werden.

IPv6 unter Ubuntu mit Minimalaufwand aktivieren

Nach diesem kurzen Ausflug in die IPv6-Grundlagen zurück zu Ubuntu. Wenn ping6 google.com also eine Fehlermeldung liefert, kann Ihr Rechner keine IPv6-Verbindung zur Außenwelt herstellen. Abhilfe schafft die Installation eines winzigen Programms:

apt-get install gogoc

Damit wird das Hintergrundprogramm gogoc installiert und auch sofort gestartet. Dieses Programm nutzt das vorhandene IPv4-Netz, um darin einen sogenannten Tunnel in das IPv6-Netz zu bauen. Dabei wird die Infrastruktur von gogo6.com genutzt. Mehr ist nicht zu tun! Vergewissern Sie sich! ping6 funktioniert nun:

ping6 google.com
  PING google.com(2800:3f0:4001:812::1007) 
  64 bytes from 2800:3f0:4001:812::1007: 
    ... 270 ms
  64 bytes from 2800:3f0:4001:812::1007:
     ... 269 ms
  64 bytes from 2800:3f0:4001:812::1007:
     ... 270 ms
  ^C
  3 packets transmitted ...

Und ip addr zeigt nun eine neue Tunnel-Schnittstelle mit ihrer IPv6-Adresse:

ip addr
  ...
  4: tun: 
    inet6 2001:5c0:1400:a::1234/128 

Als weiteren Test besuchen Sie mit einem Webbrowser die Seite http://test-ipv6.com.

IPv6-Test im Webbrowser

Firefox arbeitet nun automatisch mit IPv6, falls die Seite, die Sie gerade besuchen, IPv6 unterstützt. Außer bei einigen großen Unternehmensseiten (Google, Facebook) sowie ausgewählten Seiten aus der IT-Branche (heise.de, pro-linux.de) ist das aber eher selten der Fall. Wenn Sie sehen möchten, ob es sich um eine IPv4- oder eine IPv6-Verbindung handelt, installieren Sie das Firefox-Add-on 4or6. Es zeigt neben der Adressleiste durch ein rotes/grünes Icon an, ob es sich um eine IPv4- oder um eine IPv6-Verbindung handelt.

Das Firefox-Add-on 4or6 kennzeichnet IPv6-Seiten

Sicherheit

Sobald Ihr Rechner eine öffentliche IPv6-Adresse hat (also nicht ::1/128 oder fe80::*/64), ist der Rechner im IPv6-Netz weltweit ansprechbar! Jeder kann z.B. nun versuchen, sich via SSH bei Ihnen einzuloggen. Die Firewall Ihres ADSL-Routers schützt Sie dagegen nicht, weil der IPv6-Verkehr getunnelt ist.

Wenn Sie das nicht möchten, ist es am sichersten, gogoc nach den Experimenten einfach wieder zu deinstallieren:

apt-get remove gogoc

Wollen Sie IPv6 weiter nutzen, müssen Sie alle Netzwerkdienste Ihres Rechners absichern, wahlweise durch eine Firewall oder durch entsprechende Optionen in allen Netzwerkdiensten (z.B. Apache, Samba, NFS oder SSH), die Sie eingerichtet haben!

PS: Dieser Artikel ist ursprünglich auf meiner neuen Website ubuntu-buch.info erschienen.

Heute morgen, als ich das Fotoarchiv meines Bruders auf dem Eigenbau-NAS Server durchsucht habe, ist mir aufgefallen, dass die Bilddateien eine Auflösung von 5184 x 3456 Pixeln hatten. Kein Wunder, dass die Vorschaubilder im Filebrowser so langsam geladen wurden, schließlich mussten große Datenmengen über das Netzwerk übertragen werden. Aber habe ich überhaupt etwas von der hohen Auflösung? Die großen Bilddateien brauchen nur sehr viel länger, um übertragen zu werden und benötigen auch entsprechend viel Platz auf Speicherkarten oder den Serverfestplatten. Ein einziges Bild kommt schon mal auf 6-9 MB, dass summiert sich bei größeren Sammlungen mit tausenden Fotos.

Um zu sehen, ob sich die Bilddateien schmerzlos in ihrer Auflösung verkleinern lassen, habe ich mit ein paar Bilder aus der Sammlung herausgepickt und je eine Version auf eine maximale Auflösung von 2500 Pixeln je Dimension verkleinert. Ein bemerkenswerter Unterschied war auf meinen FullHD Bildschirmen nicht zu erkennen. Die Dateigröße war gleich viel geringer und die Qualität, mit der man die Fotos betrachten konnte, dieselbe. Natürlich muss man beim Vergrößern von Fotos Abstriche machen. Wenn man sich aber ansieht, dass beim Vergrößern der Originale nicht sehr viel mehr zu erkennen ist (abgesehen von vergrößertem Rauschen ;) ), relativiert sich das ganze schon wieder. Ich speichere also gerade Daten, die für mich im Normalfall keinen Nutzen haben. Für mich stand also fest: Die Dateien werden verkleinert.

Wie verkleinert man tausende Fotos am einfachsten?

Mit zwei kleinen Tools: “find”, um passende Bilddateien (auch rekursiv in Unterordnern) ausfindig zu machen und das “mogrify”-Kommando aus dem “imagemagick” Paket, um die Bilddateien zu skalieren. Das folgende Kommando habe ich mir zusammengebaut:

find . -name "*.JPG" -exec mogrify -resize '2500x2500>' {} \;

Es wird in dem Ordner ausgeführt, in dem sich die zu verkleinernden Fotos mit der Dateiendung .JPG  befinden. Andere Dateien werden nicht verarbeitet, ebenso keine Bilder, die kleiner als 2500 x 2500 Pixel groß sind. Alle anderen Dateien, die diese Dimensionen überschreiten, werden so skaliert, dass die angegebenen Dimensionen nicht mehr überschritten werden. Die Skalierung erfolgt natürlich proportional. Verzerrungen treten nicht auf.

Bevor das Kommando aufgerufen wird, sollte eine Sicherung des Original Ordners gemacht werden, denn die Originaldateien werden überschrieben und sind danach nicht mehr vorhanden.

Den Befehl habe ich direkt auf dem Server in einer Screen-Session ausgeführt, sodass ich meine SSH-Verbindung trennen und später ggf. wieder aufnehmen kann. Der Server verarbeitet die Dateien ohne weiteres Zutun im Hintergrund.

Durch die Skalierung auf eine vernünftige Größe habe ich eine Menge Speicher gespart: Die kleine Sammlung konnte ohne bedeutende Qualitätseinbußen von 20,6 GB auf 6.2 GB verkleinert werden und lädt im Filebrowser nun ein ganzes Stück schneller.

Update am 26.04.: Bevor sich noch mehr Leute aufregen weil ich die ach-so-wichtigen Fotos verkleinert habe und die ja jetzt völlig entstellt sind… ;) … natürlich habe ich auch noch die Originale. Die verkleinerte Version der Sammlung benutze ich für den Zugriff über das Netzwerk.

Mozilla besetzt wichtige Posten neu: wenige Tage nach der Ernennung von Chris Beard zum neuen Interims-CEO wurde die Ernennung von Andreas Gal zum neuen Chief Technical Officer von Mozilla angekündigt.

Andreas Gal

Dr. Andreas Gal ist der Nachfolger von Brendan Eich als Chief Technical Officer (CTO) von Mozilla. Der in Deutschland aufgewachsene und in den USA lebende Gal arbeitet seit über sechs Jahren für Mozilla und kann aus dieser Zeit einen beeindruckenden Arbeitsnachweis vorzeigen: Gal ist der Erfinder von TraceMonkey, dem ersten JavaScript Just-in-Time-Compiler, noch bevor es Google Chrome und die V8-Engine gab. Als Director of Research von Mozilla hat er das Projekt PDF.js gestartet, ein PDF-Betrachter auf JavaScript-Basis, welcher heute fester Bestandteil von Firefox ist. Ebenfalls beteiligt war Gal an der Erfindung von Broadway.js, einem Video-Decoder auf JavaScript- und WebGL-Basis, sowie Shumway, einer auf Webtechnologien basierenden Alternative zum Flash Player. Er trägt außerdem maßgeblichen Anteil an der Neuentwicklung von Firefox Mobile für Android. Und natürlich nicht zu vergessen: Gal ist Mitgründer des Boot to Gecko-Projekts, besser bekannt als Firefox OS. Darüber hinaus ist Gal an der Entwicklung von Mozillas Programmiersprache Rust sowie der darauf basierenden neuen Engine Servo beteiligt. Seine Rolle als Mozillas Vice President of Mobile wird Gal auch weiterhin ausführen.

Vor wenigen Tagen wurde Chris Beard übergangsweise zum neuen Chief Executive Officer (CEO) von Mozilla ernannt. Wer diesen Posten dauerhaft und ab wann übernehmen wird, ist noch nicht klar.

24. April 2014

Mit Firefox 30 führt Mozilla sogenannte Telemetrie-Experimente ein – dabei handelt es sich um zeitlich begrenzte Tests für bestimmte Zielgruppen. Das erste Experiment für Nutzer von Firefox Nightly ist nun aktiv und betrifft die Neuer Tab-Seite.

Firefox besitzt mit dem Telemetrie-Feature eine Mess-Infrastruktur, um diverse Leistungsdaten während des Browserbetriebs anonym an die Mozilla-Server zu übertragen. Dieses Feature ist standardmäßig für Nutzer der Nightly- und Aurora-Versionen aktiviert und für Nutzer der Beta- sowie finalen Versionen deaktiviert. Telemetrie liefert Mozilla wichtige Erkenntnisse zur Nutzung des Browsers und möglichst jeder Nutzer sollte das Telemetrie-Feature aktivieren (Einstellungen → Erweitert → Datenübermittlung) – denn nur wer seine Daten übermittelt, nur für den kann gezielt optimiert werden.

Bei den Telemetrie-Experimenten handelt es sich um eine Erweiterung dieses Features. Nutzer, welche Telemetrie nicht aktiviert haben, nehmen auch nicht an den Telemetrie-Experimenten teil. Die Idee hinter den Telemetrie-Experimenten ist es, Daten einer statistisch relevanten Zielgruppe zu erhalten.

Mozilla hat nun das erste Telemetrie-Experiment scharf gestellt. Dieses wird ab sofort bis zum 15. Mai an rund 25 Prozent der Nutzer von Firefox Nightly für eine Dauer von jeweils fünf Tagen verteilt. Nutzer, welche den DOM Inspector oder Tree-Style-Tabs aktiviert haben, nehmen nicht am Experiment teil. Das erste Experiment ordnet die Vorschaubilder der Seite about:newtab so um, dass die meistbesuchte Seite nicht links oben, sondern stattdessen in der Mitte ist.

Dieses erste Experiment dient noch keinem größeren Zweck und soll in erster Linie als Test des neuen Experimente-Systems dienen. Eine Übersicht über aktuelle und vergangene Experimente gibt es auf telemetry-experiment.cdn.mozilla.net. Wer sich über den zusätzlichen Reiter im Add-on Manager wundert, der weiß nun zumindest, was es damit auf sich hat.

Bei der Einrichtung eines Ubuntu Servers kann man eine Einstellung aktivieren, die dafür sorgt, dass das System täglich nach neuen Security Updates (oder allgemein Updates) sucht und diese automatisch installiert. Allgemeine Updates automatisch installieren zu lassen mag vielleicht nicht besonders sinnvoll auf Produktivservern sein, aber mit Sicherheitsupdates sollte man nicht warten. Da bietet es sich an, diese einfach automatisch installieren zu lassen. Wer mehrere Server betreut, freut sich ganz besonders über die Funktion ;)

Wer die Einrichtung der automatischen Upgradess verpasst hat, kann diese später problemlos nachinstallieren. Dazu wird das Paket “unattended-upgrades” installiert:

sudo apt-get install unattended-upgrades

Art der Upgrades wählen

Nach der Installation wird die Konfigurationsdatei /etc/apt/apt.conf.d/50unattended-upgrades geöffnet und an die eigenen Bedürfnisse angepasst. Die Konfiguration kann beispielsweise so aussehen:

// Automatically upgrade packages from these (origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
       "${distro_id}:${distro_codename}-security";
//     "${distro_id}:${distro_codename}-updates";
//     "${distro_id}:${distro_codename}-proposed";
//     "${distro_id}:${distro_codename}-backports";
};

In diesem Fall werden nur Security Updates automatisch installiert. Die drei anderen Upgrade-Streams werden wegen der vorangestellten “//” Kommentarzeichen ignoriert.

Pakete von Upgrade ausnehmen

Falls bestimmte Pakete nicht automatisch aktualisiert werden sollen, kann man das in einer anderen Direktive festlegen:

Unattended-Upgrade::Package-Blacklist {
    "vim";
    "libc6-i686";
};

In diesem Beispiel werden die Pakete “vim” und “libc-i686″ von den automatischen Upgrades ausgenommen.

E-Mail Benachrichtigungen an den Administrator schicken

Wer sich gerne Benachrichtigen lässt, kann sich vom System E-Mails zu den Upgrades schicken lassen. Auch diese Einstellung wird in “50unattended-upgrades” geschrieben.

Unattended-Upgrade::Mail "administrator@domain.tld";
Unattended-Upgrade::MailOnlyOnError "true";

Hier werden nur Benachrichtigungsmails versendet, wenn es beim Upgrade Probleme gibt. Wenn die zweite Einstellung weggelassen wird, wird bei jedem Upgrade eine E-Mail gesendet. Damit Mails verschickt werden können, muss das mailx Kommando verfügbar sein, welches z.B. durch das Paket “heirloom-mailx” bereitgestellt wird:

sudo apt-get install heirloom-mailx

Wann soll auf Upgrades geprüft werden?

Diese Einstellung wird in einer zweiten Konfig-Datei “/etc/apt/apt.conf.d/10periodic” vorgenommen.

Folgende Konfiguration prüft täglich auf Updates, lädt sie herunter und installiert sie. Alle 7 Tage werden nicht mehr benötigte Pakete vom System entfernt.

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";
APT::Periodic::Unattended-Upgrade "1";

 

Docker.io bietet Benutzern von Linux die Möglichkeit, auf einfache Art “Linux Container (LXC)” zu verwenden und zu administrieren.
Ganze Images diverser Distributionen können aus dem Repository Dockers heruntergeladen- und verwendet werden. Ebenso stellen Benutzer der Community Images zur Verfügung, die bereits mit Installationen verschiedenster Software daher kommen.

Mit Ubuntu 14.04 LTS (Trusty Tahr) ist Docker in den Ubuntu Repositorys angekommen, der Versionsstand: 0.9.1.
Diese Neuerung möchte ich nutzen und in einem kleinen Artikel die Grundlagen zum interkativen Arbeiten mit Docker vorstellen.
Übrigens: Debian Jessie und Sid liefern mit Version 0.9.0 respektive 0.9.1 ebenso aktuelle Pakete der Software aus.

Die Installation

Die Installation benötigt weiterhin das Paket “lxc”:

1
sudo apt-get install docker.io lxc

Images herunterladen, Container starten, beenden und wieder starten

Images werden aus dem “docker index” heruntergeladen. Außer den offiziellen Images der Entwickler, bietet die Community hier ihre Arbeit an.
Zu finden sind die Images und ihre Bezeichnungen auf https://index.docker.io, alternativ kann auch via Terminal gesucht werden:

1
sudo docker.io search suchbegriff-für-image

“search” kann durch “search -t” ersetzt werden, um nur vertrauenswürdige Images anzuzeigen.
Ich bevorzuge und empfehle trotzallem die Weboberfläche zur Suche.

Ich führe meine Beispiele mit dem offiziellen Ubuntu Image in System-Version 12.04 an.
“Ubuntu” ist hierbei das Repository, die Version “12.04″ ein Tag:

REPOSITORY
Tag
ubuntu12.04
ubuntu12.10
ubuntu13.04
ubuntu13.10
[...][...]

Zum besseren Verständnis, lade ich das Image vorab herunter. Dieser Schritt ist eigentlich optional, da das Image bei Bedarf heruntergeladen würde.
Der Befehl “pull” benötigt das Repository, ein Tag ist optional. Das Format lautet in meinem Fall “repository:tag”:
1
sudo docker.io pull ubuntu:12.04

Ohne Angabe des Tags, würde ich alle verfügbaren Versionen Ubuntus als Image herunterladen.
Dass alles geklappt hat, überprüfe ich mit dem Befehl “images”:

1
sudo docker.io images 

Eine Beispielausgabe:

REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 12.04 1edb91fcb5b5 18 hours ago 209.2 MB

Nun starte ich eine Shell (Bash) in einem neuen Container des Ubuntu Images.
“-i” bezeichnet das interaktive Arbeiten am Container. Ich werde somit im virtuellen System arbeiten.
“-t” wiederum startet mit einer “Pseudo TTY”.

1
sudo docker.io run -i -t ubuntu:12.04 /bin/bash
Der Befehl “run” ist leicht falsch zu verstehen. Mit “run” wird ein neuer Container eines Images erstellt. Weiterhin gibt es “start”, um einen existierenden Container zu starten

Ich befinde mich nun im eben heruntergeladenen Image, welches als Container gestartet wurde:

root@8ee471ae9da4:/root# ls -l
total 0
root@8ee471ae9da4:/root# exit

Mit letztem Befehl “exit”, verlasse UND schließe ich den Container.

Mit STRG+P gefolgt von STRG+Q, löse ich den Container von der TTY (“detach”).

Zum Verständnis: Das Image bleibt immer unangetastet! Der Container bleibt hingegen auch nach dem verlassen gespeichert. Ein Container beinhaltet lediglich die Unterschiede zum Image.
So ist es möglich, einen Container erneut zu starten und in diesen hinein zu wechseln.
Zuerst lasse ich mir alle (“-a”) Container anzeigen. Ohne Parameter zeigt “ps” nur gestartete Container an:

1
sudo docker.io ps -a

Die Ausgabe (Status hervorgehoben):

andre@Laptop:~$ sudo docker.io ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8ee471ae9da4 ubuntu:12.04 /bin/bash 11 seconds ago Exit 0 furious_lumiere

Zu sehen ist hier die ID des Containers. Diese ID benutze ich zum erneuten Start des Containers:

1
sudo docker.io start 8ee471ae9da4

Dass der Container wieder läuft, prüft nochmals “ps -a”:

andre@Laptop:~$ sudo docker.io ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8ee471ae9da4 ubuntu:12.04 /bin/bash 4 minutes ago Up 1 seconds furious_lumiere

Anschließend kann ich den Container wieder betreten:

1
sudo docker.io attach 8ee471ae9da4

Einen neuen (interaktiven) Container erstelle ich mit dem Befehl “run”:

1
sudo docker.io run -i -t ubuntu:12.04 /bin/bash

Einen oder alle Container löschen

Gelöscht werden können Container nur im beendeten Zustand. Mit “ps” kann der Status wie beschrieben überprüft werden.
Um obigen Container zu löschen, benutze ich den Befehl “rm” und arbeite mit der Container ID:

1
sudo docker.io rm 8ee471ae9da4

Alle Container lösche ich mit folgendem Trick:

1
sudo docker.io rm `sudo docker.io ps --no-trunc -a -q`

Ein oder alle Images löschen

Ebenso können Images gelöscht werden. Welche habe ich heruntergeladen?

1
sudo docker.io images

Beispiel der Ausgabe:

andre@Laptop:~$ sudo docker.io images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 12.04 1edb91fcb5b5 32 hours ago 209.2 MB
andre@Laptop:~$

Gezielt löschen funktioniert mit der ID. Statt “rm”, benutze ich nun “rmi”:

1
sudo docker.io rmi 1edb91fcb5b5

Alle Images löschen:

1
sudo docker.io rmi `sudo docker.io images -q`

Nginx installieren, die interaktive Methode

Nachdem ich alle Images und Container gelöscht habe, möchte ich nun Nginx via Ubuntu 12.04 installieren. Wie bereits gesagt, ist das manuelle Herunterladen des Images nicht notwendig, ich kann sofort mit “run” arbeiten. Das Image wird vorab geladen und dann gestartet. Wieder arbeite ich interaktiv.
Neu ist die Angabe zur Weiterleitung des Ports 80 via “-p”.
Die Syntax:

1
[...] -p HOST-PORT:CONTAINER-PORT [...]

Ebenso kann die Weiterleitung auf eine IP des Hosts gebunden werden:

1
[...] -p HOST-IP:HOST-PORT:CONTAINER-PORT

Nun der gesamte Befehl, um Port 80 des Containers auf Port 80 des Hosts weiterzuleiten:

1
sudo docker.io run -p 80:80 -i -t ubuntu:12.04 /bin/bash

Die Ausgabe bis zum Beitritt des Containers:

andre@Laptop:~$ sudo docker.io run -p 80:80 -i -t ubuntu:12.04 /bin/bash
Unable to find image ‘ubuntu:12.04′ locally
Pulling repository ubuntu
1edb91fcb5b5: Download complete
511136ea3c5a: Download complete
c4a6bcd99cef: Download complete
331ad23d66e2: Download complete
d8d201f58bb5: Download complete
root@5cdb480f84a8:/#

Im Container verfahre ich wie auf einer echten Maschine:

root@5cdb480f84a8:/# apt-get install nginx -y
[...]
Setting up nginx-full (1.1.19-1ubuntu0.6) …
[...]
root@5cdb480f84a8:/# nginx
root@5cdb480f84a8:/# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 18060 1992 ? Ss 07:01 0:00 /bin/bash
root 10 0.0 0.0 62912 1336 ? Ss 07:01 0:00 nginx: master process nginx
www-data 11 0.0 0.0 63220 2148 ? S 07:01 0:00 nginx: worker process
www-data 12 0.0 0.0 63220 1648 ? S 07:01 0:00 nginx: worker process
www-data 13 0.0 0.0 63220 1648 ? S 07:01 0:00 nginx: worker process
www-data 14 0.0 0.0 63220 1648 ? S 07:01 0:00 nginx: worker process
root 15 0.0 0.0 15284 1148 ? R+ 07:01 0:00 ps aux
root@5cdb480f84a8:/# exit

Nginx ist jetzt im Container installiert, gestartet und der Container beendet.
Gestartet werden kann der Container im letzten Zustand wieder mit “start”:

1
sudo docker.io start 5cdb480f84a8

Dass der Container gestartet wurde, sehe ich – wieder – mit “ps”.
Beispielausgabe:

andre@Laptop:~$ sudo docker.io ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5cdb480f84a8 ubuntu:12.04 /bin/bash 12 minutes ago Up 3 seconds 0.0.0.0:80->80/tcp cocky_babbage

Im Browser kann nun “http://localhost” aufgerufen werden.
Um den Container wieder zu betreten:

1
sudo docker.io attach 5cdb480f84a8
Wie angeführt, muss ich die Shell nicht via “exit” verlassen und den Container somit stoppen, sondern kann sie loslösen via STRG+P gefolgt von STRG-Q, womit der Container weiterläuft.

Schlusswort

Docker.io ist ein mächtiges Tool, um Linux Container zu handlen.
In meinem Artikel gehe ich -nur- auf die absoluten Grundlagen ein, um interaktiv mit diesen zu arbeiten.
Bei Zeit werde ich die schönere Art vorstellen, die sich auch für den Server-Einsatz eignet. So ist es etwa möglich, mit einem “Docker-File” einen Container unbeaufsichtigt zu erstellen und vieles, vieles mehr…

Da ich bisher Debian nur als Einzelbenutzersystem im privaten Bereich nutze ist mir das bisher noch nie aufgefallen, aber in der Standardeinstellung können alle Benutzer lesend auf das Home-Verzeichnis aller Benutzer zugreifen.
Auch wenn das für mich persönlich wenig relevant ist möchte ich mein System, aus Prinzip, relativ sicher vorkonfigurieren. Dazu gehört für mich auch eine saubere Trennung der einzelnen Benutzer. Vielleicht richte ich ja auch irgendwann mal einen weiteren Benutzer auf einem meiner Rechner ein und dann ist es von Vorteil, wenn alles bereits ordentlich eingerichtet ist und ich mich dann nicht mehr damit befassen muss.

Damit Dateien und Verzeichnisse im jeweiligen home nicht mehr für andere Benutzer zugänglich sind genügt es

    dpkg-reconfigure -plow adduser

auszuführen. Dies wirkt sich aber nicht auf bereits vorhandene Benutzer aus, weshalb man auch folgendes einstellen sollte:

Um neu angelegte Dateien nicht mehr für alle Benutzbar zugänglich zu machen ändert man einfach den UMASK-Wert in der Datei `/etc/login.defs` von `022` auf `027`.

    UMASK      027
    …

Um die Änderungen zu übernehmen muss man folgende Zeile an die Datei /etc/pam.d/common-session anhängen:

    session optional   pam_umask.so

Weitere Informationen zu UMASK kann man dem manual entnehmen.

Das wirkt sich aber nicht auf bereits vorhandene Benutzer und deren Verzeichnisse/Dateien aus. Um bereits vorhandene Dateien für andere Benutzer unzugänglich zu machen genügt dieser Befehl:

    chmod 750 /home/*

Vielen Dank an alle Beteiligten dieses Threads im df.de. Besonderer Dank geht an smutbert, der die hier erwähnten Lösungen beschrieben hat. 😉

Da ich bisher Debian nur als Einzelbenutzersystem im privaten Bereich nutze ist mir das bisher noch nie aufgefallen, aber in der Standardeinstellung können alle Benutzer lesend auf das Home-Verzeichnis aller Benutzer zugreifen.
Auch wenn das für mich persönlich wenig relevant ist möchte ich mein System, aus Prinzip, relativ sicher vorkonfigurieren. Dazu gehört für mich auch eine saubere Trennung der einzelnen Benutzer. Vielleicht richte ich ja auch irgendwann mal einen weiteren Benutzer auf einem meiner Rechner ein und dann ist es von Vorteil, wenn alles bereits ordentlich eingerichtet ist und ich mich dann nicht mehr damit befassen muss.

Damit Dateien und Verzeichnisse im jeweiligen home nicht mehr für andere Benutzer zugänglich sind genügt es

    dpkg-reconfigure -plow adduser

auszuführen. Dies wirkt sich aber nicht auf bereits vorhandene Benutzer aus, weshalb man auch folgendes einstellen sollte:

Um neu angelegte Dateien nicht mehr für alle Benutzbar zugänglich zu machen ändert man einfach den UMASK-Wert in der Datei `/etc/login.defs` von `022` auf `027`.

    UMASK      027
    …

Um die Änderungen zu übernehmen muss man folgende Zeile an die Datei /etc/pam.d/common-session anhängen:

    session optional   pam_umask.so

Weitere Informationen zu UMASK kann man dem manual entnehmen.

Das wirkt sich aber nicht auf bereits vorhandene Benutzer und deren Verzeichnisse/Dateien aus. Um bereits vorhandene Dateien für andere Benutzer unzugänglich zu machen genügt dieser Befehl:

    chmod 750 /home/*

Vielen Dank an alle Beteiligten dieses Threads im df.de. Besonderer Dank geht an smutbert, der die hier erwähnten Lösungen beschrieben hat. 😉

23. April 2014

Seit einiger Zeit gibt es die Do Not Track Funktion in einigen Browsern. Mit dabei ist natürlich auch der Mozilla Firefox in jeder halbwegs aktuellen Version. Ich selbst habe diese Funktion natürlich entsprechend meiner Wünsche konfiguriert.

Bisher hatte ich mit dieser Funktion noch keine negativen (oder spürbar positiven) Effekte. Heute durfte ich mal wieder Hand an einen Speedport W503V anlegen, welcher sich mit aktiviertem DNT nicht konfigurieren lässt. Beim Versuch sich mit dem Gerätepasswort am Router anzumelden bekommt man folgende nichts aussagende Fehlermeldung:

403 Forbidden
Your client does not have permission to get this page.(code=41193) from this server.

Ob das Problem nur mit einem bestimmten Firmwarestand auftaucht, konnte ich leider aus zeitlichen Gründen nicht genauer analysieren. Ich frage mich aber warum die Telekom bzw. der Hersteller vom Router über zusätzliche Header stolpert, denn normalerweise sollte man zusätzliche Header einfach ignorieren.

Die Mozilla Foundation hat übrigens einen großartigen Artikel über diese Do Not Track Funktion, dort wir auch die Konfiguration und deren Auswirkungen gut erklärt.

Seit einiger Zeit gibt es die Do Not Track Funktion in einigen Browsern. Mit dabei ist natürlich auch der Mozilla Firefox in jeder halbwegs aktuellen Version. Ich selbst habe diese Funktion natürlich entsprechend meiner Wünsche konfiguriert.

Bisher hatte ich mit dieser Funktion noch keine negativen (oder spürbar positiven) Effekte. Heute durfte ich mal wieder Hand an einen Speedport W503V anlegen, welcher sich mit aktiviertem DNT nicht konfigurieren lässt. Beim Versuch sich mit dem Gerätepasswort am Router anzumelden bekommt man folgende nichts aussagende Fehlermeldung:

403 Forbidden
Your client does not have permission to get this page.(code=41193) from this server.

Ob das Problem nur mit einem bestimmten Firmwarestand auftaucht, konnte ich leider aus zeitlichen Gründen nicht genauer analysieren. Ich frage mich aber warum die Telekom bzw. der Hersteller vom Router über zusätzliche Header stolpert, denn normalerweise sollte man zusätzliche Header einfach ignorieren.

Die Mozilla Foundation hat übrigens einen großartigen Artikel über diese Do Not Track Funktion, dort wir auch die Konfiguration und deren Auswirkungen gut erklärt.

Christoph von “Linux und Ich” hat gerade ShareDrop verbloggt.Das ist ein auf HTML5 basierender Webclient zum Übertragen von Dateien im eigenen Heimnetz. Die Situation kennt man ja: Ein Freund ist als Gast Zuhause und eine Datei soll schnell zwischen den Rechnern ausgetauscht werden. Jetzt kann man natürlich einen Mailclient starten und die Datei durch das halbe Internet jagen, einen lokalen Webserver aufsetzen, die Datei via Samba Share, FTP oder SFTP übertragen… es gibt genug Möglichkeiten.

Und dann gibt es da noch ShareDrop. Beide User surfen www.sharedrop.io an und sehen dann jeweils den anderen Rechner im Netzwerk. Via Drag & Drop kann dann eine Datei auf den Partner gezogen werden und die Datei wird  über das Heimnetzwerk übertragen. Fertig.

Standardmäßig werden als Bezeichner die IP Adressen der Rechner im Netzwerk angezeigt. Wer lieber andere Bezeichner hat, kann sich via Mozilla Persona einloggen und trägt dann seine E-Mail Adresse als Bezeichner + das zugehörige Gravatar Profilbild.

Das solltet ihr euch unbedingt mal ansehen. Ich bin begeistert! :) Das Projekt ist übrigens unter einer Open Source Lizenz auf GitHub verfügbar.

ShareDrop Webinterface

ShareDrop Webinterface

Habt ihr schon von nsupdate.info gehört? Die bieten einen kostenlosen DynDNS Service an, ohne Werbung und Spam. Sagen sie zumindest ;) Der Dienst war mir neu. Das beste ist aber: Deren Dienst basiert auf der gleichnamigen Software, die unter einer Open Source Lizenz auf GitHub verfügbar ist :)

Fuchsi wan Kenobi aus Diaspora hat sich die Software mal unter bndns.de auf dem eigenen Server installiert und besitzt jetzt einen eigenen DynDNS Service. Anscheinend war es nicht besonders leicht, die auf Python basierende Software zu konfigurieren, aber ich habe seinen DynDNS Service vor einigen Minuten getestet und es funktioniert großartig!

Nach der Registrierung ist eine moderne, einfach gehaltene Weboberfläche zu sehen, auf der man seine neuen Dynamischen Domains einrichten kann. Limits gibt es (bis auf die Domain natürlich) nicht. Fuchsi bietet seinen Nameserver kostenlos für jeden an – das Angebot nehme ich doch gerne an. Danke dafür!

Die Weboberfläche unter bndns.de

Die Weboberfläche unter bndns.de

Wer also noch auf der Suche nach einem DynDNS Anbieter ist, kann sich nsupdate.info mal ansehen oder direkt den Server von Fuchsi nutzen. Der läuft privat und nimmt ein bisschen Wind aus den Segeln der kommerziellen Konkurrenz ;) DynDNS bietet ja inzwischen gar keine kostenlosen Dienste mehr an. Dazu kommt noch, dass ihr eine riesige Auswahl an Subdomains habt, die bei den großen Anbietern schon vergriffen sind.

Und: Wir geben dem Internet wieder ein bisschen mehr Dezentralität. Also los! Rennt Fuchsi den Server ein! ;)

Seit einiger Zeit gibt es ein neues Konzept für das Bereitstellen und Verwalten von PGP Keys (vor allem Public Keys): Keybase nennt sich der neue Dienst, der sich im Moment noch in der Alpha-Phase befindet und nur über eine Einladung eines Mitglieds zugänglich ist.

Micha Stöcker hat gestern einige Einladungen verteilt, sodass ich mir auch einen Account bei Keybase anlegen konnte und die Chance hatte, mir das ganze mal selbst anzusehen. Was Keybase genau ist und was ich davon halte, erfahrt ihr in diesem Beitrag.

Die Idee

Was macht Keybase so speziell? Hinter Keybase.io steht der Gedanke, PGP Public Keys zu verifizieren. Woher will ein fremder Wissen, dass er gerade den echten Public Key einer Person herunterlädt und nicht den Key einer gefakten Identität bzw. einen manipulierten Schlüssel? Zur Absicherung gibt es bereits Verfahren, wie z.B. Keys über SSL herunterzuladen (Schutz vor Manipulation) oder Public Keys eines anderen zu signieren, sodass Dritten die Identität bestätigt wird. Heise bietet so einen Service z.B. auch an: Man besucht das Verlagsgebäude und legt dann Personalausweis und Public Key vor. Heise bestätigt dann, dass die beiden Identitäten übereinstimmen und unterzeichnet den Public Key. Menschen, die Heise vertrauen, können dann auch sicher sein, dass die Identität und der Public Key von Person x zusammengehören und echt sind.

Dieses Verfahren ist zwar relativ zuverlässig, wenn Public Keys von vertrauenswürdigen Instanzen signiert werden, sind deshalb aber nicht weniger kompliziert. PGP ist für “Normalos” komplex genug – man muss sich ja nur mal ansehen, wer denn PGP wirklich nutzt … ;). Um die Verifizierung von PGP Keys zu vereinfachen, versucht Keybase einen anderen Weg zu gehen: Grundsätzlich hat Keybase in etwa dieselbe Funktion wie der Heise Verlag im vorherigen Beispiel: Es funktioniert als CA (Certificate Authority) und bestätigt Public Keys.

Keybase ID Suche

Keybase ID Suche

Die Bestätigung und Verifizierung des Schlüssels erfolgt aber nicht über den Personalausweis, sondern über bereits bestehende Identitäten im Internet: Über GitHub, Twitter, über die eigene Website, über die bereits vorhandenen und vom Hoster abgesegneten DNS Daten. Weitere Identitätsnachweise sollen kommen. So sind beispielsweise auch Verbindungen mit Facebook, Google und anderen Nutzerkonten denkbar. In der Praxis funktioniert das Verfahren so: Ich gebe in Keybase z.B. an, meine Keybase Identität (und damit meinen hochgeladenen Public Key) über GitHub verifizieren zu wollen. Über den Keybase Command Line Client gebe ich den Befehl

keybase prove github ThomasLeister

ein. Mir wird dann Text / Code ausgegeben, den ich öffentlich als GitHub Gist speichern muss. Keybase kann diesen Text dann auslesen, erkennt mich wieder und leitet daraus ab, dass mir der GitHub Account mit dem Benutzernamen “ThomasLeister” gehören muss. Damit ist bestätigt, dass mir dieser eine GitHub Account gehört und die GitHub Identität wird in die bestätigten Identitäten aufgenommen.

Wer sich meinen Public Key nun von Keybase herunterladen will, kann sehen, dass ich derselbe Thomas Leister bin, der auch als “ThomasLeister” auf GitHub unterwegs ist. Wenn noch weitere Identitäten hinzukommen, wächst somit die Sicherheit, den richtigen Public Key herunterzuladen und nicht eine gefälschte Version. Mit jedem Account, den ich mit Keybase verbinde, festigt sich meine Identität auf Keybase.

Ein Angriffsszenario

Wenn nun jemand einen falschen Public Key unter meinem Namen veröffentlichen wollte, müsste er auch einen gefälschten Keybase Account anlegen und über diesen den falschen Key publizieren. Soweit kein Problem. Das ist möglich. Jetzt kommt aber das entscheidende: Er muss andere Identitäten vorweisen und den Keybase Account “assuren”. Zu dem gefälschten Keybase Account müssten dann auch noch weitere gefälschte Accounts für GitHub, Twitter etc hinzukommen. Nehmen wir an, auch diesen Aufwand macht sich der Angreifer noch.

Ein Dritter kommt nun hinzu. Er kennt mich z.B. über Github und will nun meinen Public Key von Keybase.io herunterladen. Er findet zwei Identitäten – beide gültig für mich. Aber welche ist nun die echte, und welche die gefälschte? Ganz einfach: Es muss nur jeweils das Profil besuchen und vergleichen, welches Profil mit dem GitHub Account verbunden ist, den er kennt. Wenn er auch ausschließen will, dass mein GitHub Account gehackt wurde, kann er zusätzlich auch die Verbindung mit dem DNS oder mit einer Domain prüfen. Die Wahrscheinlichkeit, dass alle verbundenen Accounts gehacked wurden, ist sehr gering.

Die Person sucht sich also die Keybase Identität aus, die am besten zu dem passt, was bereits über mich bekannt ist und umgeht damit den Fälschungsversuch eines Angreifers.

Wer sich meinen Public Key von Keybase.io herunterlädt, kann also ziemlich sicher sein, dass er den richtigen, echten Key downloadet. [Zu meinem Profil]

Keybase.io profil

Mein Keybase.io Profil

Dezentralität als Sicherheitsmaßnahme

Weil man aber niemals nur auf ein Pferd setzen wollte, bleibt mein Key natürlich auch auf den anderen Keyservern verfügbar. Auf diese Weise könnt ihr den Key von vielen, vielen Servern beziehen und müsst nicht nur einem einzelnen voll vertrauen. Ihr habt die Möglichkeit, die Keys, die ihr von verschiedenen Servern heruntergeladen habt, zu vergleichen und evtl. Unstimmigkeiten oder Manipulationsversuche festzustellen.

Weitere Möglichkeiten mit Keybase.io

Der Dienst hat noch eine weitere Funktion, die vor allem für jene gedacht ist, die normalerweise kein PGP nutzen und trotzdem mal eben eine PGP verschlüsselte Nachricht an jemanden schicken wollen. Über ein Webinterface kann ein Text und der dazugehörige Empfänger ausgewählt werden. Dann wird der Text mit dem Public Key des angegebenen Empfängers verschlüsselt und angezeigt, sodass er z.B. bequem in eine normale, unverschlüsselte E-Mail gepackt werden kann.

Anwendung könnte das z.B. finden, wenn meine nicht so technisch versierten Eltern mir sensible Daten via E-Mail zukommen lassen wollen. Sie haben auf ihren Rechnern kein PGP eingerichtet, trotzdem wäre PGP Verschlüsselung in diesem Fall eine tolle Sache. Ich schicke ihnen dann einfach einen Link auf mein Keybase Profil, wo sie die Identität anhand der verbundenen Konten nochmals überprüfen können. Sie können mir danach ganz einfach und schnell einen verschlüsselten Text zuzuschicken. Dazu brauchen sie nur den Klartext in das Feld einzugeben, “Verschlüsseln” anzuklicken und den umgewandelten Text wieder in die E-Mail einzufügen.

“Haaaaaaaaalt!!!” Werden jetzt die ersten schreien. “Du kannst doch nicht einfach den Klartext auf einer Website eingeben?! Das ist unsicher!”. Ja, das ist nicht komplett sicher. Schließlich könnte Keybase die Daten in Klartext theoretisch vor dem verschlüsseln abfangen und abspeichern. Theoretisch. In der Praxis funktioniert die Verschlüsselung komplett im Browser. Ich habe das nachgeprüft und konnte keine kritischen Anfragen an den Server feststellen. Natürlich (!) ist auch das keine 100%-ige Sicherheit, schließlich könnte Keybase ja in Ausnahmefällen und zu Missbrauchszwecken veränderten Code ausliefern, der dann dennoch Klartext an die Server schickt. Natürlich. Das halte ich aber für eher unwahrscheinlich. Angesichts des überschaubaren Risikos ist diese Funktion eine bequeme Sache, wenn man mal schnell was verschlüsseln muss und kein PGP auf dem Rechner installiert hat.

Wer öfter verschlüsselt, sollte sich PGP installieren. Wobei: Dann bitte nicht unter Microsoft Windows und Mac OS, schließlich sind das Ami-Produkte, die serienmäßig Backdoors für die NSA implementiert haben ;)
Ihr seht: Die vollständige Sicherheit gibt es nicht. Man braucht sich auch nicht über ein Webinterface aufzuregen und dann munter nebenbei PGP unter Windows XP benutzen. Ich denke ihr merkt, worauf ich hinaus will? ;)

 

Mein Fazit

Keybase.io ist schön gemacht und bringt wieder ein bisschen mehr Sicherheit in das Reich von PGP. Eine moderne, einfach gehaltene Oberfläche und ein herausragender Konsolenclient, der übrigens unter einer Open Source Lizenz steht, sprechen für den neuen Dienst im Web. Man muss nur aufpassen, dass man die PGP Verifizierung nicht komplett auf Keybase.io verlagert. Es ist immer gut, mehrere Möglichkeiten für einen Schlüsseldownload anzubieten und nicht nur einen, der dann im unpassendsten Moment nicht verfügbar ist. Dazu kommt ja schließlich auch noch das Risiko, dass Keybase.io selbst gehackt werden könnte oder durch Sicherheitsprobleme in Schieflage kommt. Die clientseitige Verschlüsselung über den Browser finde ich eine gute Idee – auch wenn sich manchen Sicherheitsexperten diesbezüglich die Haare aufstellen und auch ich mir der Risiken bewusst bin. Dennoch sollte man so objektiv an die Sache herangehen können und Risiken abwägen. Wenn man Windows XP oder andere Software im Einsatz hat, von der bekannt ist, dass sie Hintertüren für Geheimdienste hat … oder Software wie Java oder Flash nutzt, die ständig schwere Lücken haben… dann sollte man sich auch nicht über ein browserbasiertes Kryptosystem aufregen, das zum derzeitigen Kenntnisstand einzig und allein via JS auf dem Client läuft und keinen Klartext an die Server sendet.

Bleibt noch die Frage, wie sich Keybase.io einmal finanziert? Werbung einblenden? Wohl kaum. Aktuell gibt es keine besseren Spione im Web. Sponsoren? Schon eher. Vielleicht werden in Zukunft aber auch Premium Accounts angeboten. Wer weiß…

Wer noch weitere Lektüre zu Keybase.io beziehen will, kann sich auch mal den Beitrag von Michael Seemann ansehen, in dem er auch auf die Argumente gegen Keybase eingeht.

Leider habe ich selbst noch keine verfügbaren Einladungen. Sollte ich einmal welche ausstellen können, sage ich natürlich Bescheid ;)

Was ist eure Meinung zu Keybase.io? Wollt ihr das auch testen? Seht ihr weitere Risiken?

Step-by-Step Anleitung wie der LEMP Webserver (Linux + Nginx + MySQL + PHP) unter Debian Wheezy in wenigen Schritten installiert wird.

Definition LEMP Stack

Als LEMP Stack wird in der IT Welt eine Softwarezusammenstellung für die Ausführung von dynamischen Webseiten bezeichnet. Es besteht aus folgenden vier Kernkomponenten, welche alle perfekt miteinander arbeiten. Der Unterschied zum klassischen LAMP Stack besteht nur im Webserver, Nginx statt Apache:

Linux (Betriebssystem)
Nginx (ausgeprochen EngineX) (Webserver)
MySQL (Datenbank)
PHP (Skript Interpreter)

Nginx (ausgesprochen: EnigneX) ist ein Webserver, welcher mehr und mehr Marktanteil bekommt. Er gilt im Zusammenspiel mit php-fpm als sehr performant und gerade für große Umgebungen als sehr geeignet. Es besteht aber auch die Möglichkeit Apache mit php-fpm zu betreiben. Ich möchte in diesem Tutorial zeigen wie der Nginx Webserver mit PHP und MySQL installiert werden kann.

Aktuellste Nginx Version für Debian

Die Debian Wheezy Standardrepositories haben derzeit die Nginx Version 1.2.1 inkludiert, welche leider etwas veraltet ist. Aktuell ist aber bereits 1.4.7 (Stand: April 2014). Ich empfehle auch diese zu installieren und nicht die Standardrepositories zu verwenden.

Die Jungs von Dotdeb sind da sehr viel aktiver und bieten sofort nach Release die aktuellen Versionen in ihren Debian Mirrors an und sind im Bereich Webhosting um Jahre schneller als die Debian Maintainer. Dotdeb ist auch der einzige Mirror, welchen ich ausser den Debian Mirrors verwende. Zudem gibt es hier auch PHP 5.5 Installationspakete für Debian, welche ebenfalls in den Standardmirrors nicht verfügbar ist. So schlagen wir gleich zwei Fliegen mit einer Klappe

Um den dotdeb Mirror hinzuzufügen wird die /etc/sources.list…

vi /etc/apt/sources.list

…und um folgende zwei Einträge erweitert:

deb http://packages.dotdeb.org wheezy all
deb-src http://packages.dotdeb.org wheezy all

Wenn statt einer PHP 5.4 auch PHP 5.5 verwendet werden soll (was ich wegen der Geschwindigkeit empfehle), dann sind in der sources.list noch folgende zwei Zeilen zu ergänzen:

deb http://packages.dotdeb.org wheezy-php55 all
deb-src http://packages.dotdeb.org wheezy-php55 all

Anschließend wird noch der GnuPG key heruntergeladen und importiert.

wget http://www.dotdeb.org/dotdeb.gpg
apt-key add dotdeb.gpg && rm dotdeb.gpg

Ein apt-get update aktualisiert nun die Paketlisten (in diesem Schritt wird noch nicht installiert, keine Sorge)

apt-get update

Installation von Nginx mit PHP 5.5 unter Debian Wheezy

Nun wird die eigentliche Nginx + PHP Installation via apt-get install durchgeführt

apt-get install nginx php5-fpm

Der Webserver sollte nun bereits gestartet sein und auf den Port 80 hören. Zum Testen kann einfach die Server-IP oder der Hostname des Servers aufgerufen werden. So sieht die Standardwebseite von Nginx aus:

Nginx Installation Debian

Nginx spricht aber derzeit noch kein PHP, welches wir nun in der „default“ Konfiguration aktivieren. Später wird für jeden vServer eine eigene Configfile erstellt.

Dazu wird die default Datei editiert…

vi /etc/nginx/sites-available/default

… und im Bereich „server{“ die folgenden Zeilen auskommentiert, sodass der PHP Teil wie folgt aussieht (die # kommentieren jeweils eine Zeile aus):

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
#
# # With php5-cgi alone:
# fastcgi_pass 127.0.0.1:9000;
# # With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}

Der PHP FPM Worker wurde nun in der Config eingetragen. Damit die Änderung aktiv wird muss der Nginx noch neu gestartet werden:

/etc/init.d/nginx restart

Im zweiten Schritt wird die php fpm Konfigurationsdatei editiert…

vi /etc/php5/fpm/pool.d/www.conf

…und folgende Punkte hinzugefügt bzw. auskommentiert (Strichpunkt enfernen):

listen.owner = www-data
listen.group = www-data
listen.mode = 0660

Nach der Änderung sollte der PHP-FPM Prozess neu gestartet werden

/etc/init.d/php5-fpm restart

Um nun zu testen ob unser Nginx nun wirklich PHP spricht, wird einfach eine test.php Datei im Standardverzeichnis /usr/share/nginx/html angelegt

vi /usr/share/nginx/html/test.php

Als Inhalt lassen wir phpinfo ausgeben:


Ein Aufruf der IP bzw. des Hostnames (zB: http://192.168.1.100/test.php) sollte folgende Ausgabe bereit halten:

Nginx PHP 5.5 Installation

 

MySQL Server 5.6 installieren

Nun wir es Zeit den MySQL Server zu installieren. Das bereits die dotdeb Mirrors eingebunden sind, kann die aktuellste Version bequem via apt-get installiert werden:

apt-get install mysql-server mysql-php

Währen der Installation wird nach einem Passwort für den Root Datenbank User gefragt. Diese könnt ihr beliebig festlegen. Falls ihr es vergessen habt könnt ihr das MySQL Root Passwort wiederherstellen.

MySQL Datenbank und Datenbankbenutzer anlegen

Der MySQL Server ist nun installiert und wir können die erste Datenbank und den ersten User anlegen. Über folgenden Befehl verbinden wir uns mit der MySQL Server Konsole:

mysql -u root -p

Ihr werdet nun nach eurem Passwort gefragt, das ihr bei der Installation in der grauen Box eingegeben habt. Wir sind nun mit der MySQL Server Konsole verbunden und legen die erste Datenbank und den ersten User an:

create database datenbank1;
grant all privileges on datenbank1.* to 'dbuser1'@'localhost' identified by 'Passwort' with grant option;

datenbank1 – steht für den Datenbanknamen
dbuser1
 – steht für den Benutzernamen
localhost – Bedeutet das der Benutzer nur vom lokalen Server auf die Datenbank zugreifen darf.
Passwort – steht für das Passwort, welches der Benutzer zur Authentifizierung benutzt.

Ein externer Zugriff auf MySQL Datenbank kann unter Umständen gewährt werden, ist aber nicht zu empfehlen, wenn es nicht benötigt wird.


SysADMINsLife auch auf Facebook | Google+ | Twitter | Youtube | Google Currents
Copyright © 2009-2015 - Der Feed ist nur für den persönlichen, nicht für den gewerblichen Gebrauch bestimmt und Inhalt des Angebotes von www.sysadminslife.com

22. April 2014

(Inter-Tech RPD-150 - Quelle: Inter-Tech Bilderpaket)
( RPD-150 )

Im Bereich eingebetteter Systeme ticken die Uhren langsamer, als im Desktop- und Server-Bereich. Hier lassen sich noch leicht klassische Schwachstellen wie Directory Traversal oder OS Command Injection finden. Letztere Variante findet sich auch im WLAN-Router RPD-150 der Firma PC-Professional, der durch Inter-Tech vertrieben wird. Das Gerät wird für circa 11 Euro angeboten und wird mit überragender Sicherheit beworben.

Bildschirmfoto - 17.04.2014 - 00:09:20
RPD-150: Mit überragender Sicherheit.

OS Command Injection Angriffe (nach OWASP) bezwecken es, Befehle die durch den Angreifer festgelegt werden, in eine anfällige Anwendung einzuschleusen. Dabei verhält sich die verwundbare Anwendung wie eine Pseudo-Shell, die es erlaubt, mit den Rechten und in der Umgebung in der sie ausgeführt wird, Befehle auf dem System auszuführen.

Erste Stelle, die oft für Command Injection Angriffe besonders interessant ist, ist die Ausführung von Diagnosebefehlen in der administrativen Oberfläche eines Routers. Hier werden teilweise Eingaben ungefiltert an die entsprechenden Systembefehle wie ping oder traceroute weitergegeben. So auch beim RPD-150. Das folgende Bildschirmfoto zeigt, wie mit Hilfe der PING Funktion und Einbettung von Shellbefehlen ein Telnet-Server gestartet werden kann.

command_injection

Ein kurzer Test bestätigt den Start des Telnet-Servers, wie auf folgendem Bildschirmfoto zu sehen.

Bildschirmfoto - 20.04.2014 - 14:06:47

Ein laufender Telnet-Server ist aber nicht gleichbedeutung mit vollem Superuser-Zugriff auf den Router. Dafür muss ein Kennwort gebrochen werden. Da das Webinterface mit Root-Rechten ausgeführt wird (eine Eingabe von 127.0.0.1; echo $USER bestätigt das), ist die Gewinnung der Datei /etc/passwd kein Problem.

Sie enthält bei eingebetteten Systemen nicht nur die bekannten Informationen zu Benutzernamen und User-IDs, sondern darüber hinaus auch das gehashte Kennwort. Auf Desktop-Systemen wird es sonst in der Datei /etc/shadow/ gespeichert. Durch Ausnutzung der Schwachstelle mit dem Befehl 127.0.0.1; cat /etc/passwd kann der Inhalt der Datei gewonnen werden: root:C75rzlQ3E2Dkc:0:0:root:/:/bin/sh.

Das Kennwort des Superusers kann darauf folgend mit John the Ripper in kurzer Zeit gebrochen werden. Es lautet admin.

Mit dem Kennwort kann jetzt eine Verbindung als Superuser zum vorher gestarteten Telnet-Server hergestellt werden, wie das folgende Bildschirmfoto zeigt.

Bildschirmfoto - 17.04.2014 - 00:10:06

Die Schwachstelle ist natürlich nur geringfügig, da eine Anmeldung im Webinterface erforderlich ist.

Besonderer Dank an Inter-Tech, die sehr schnell reagierten und der Veröffentlichung des Artikels zugestimmt haben. Quelle des Produktfotos: Inter-Tech RPD-150 Bilderpaket.

Wow, 11 Artikel, für ein Projekt, welches eigentlich gar nicht so lange dauern sollte und im Endeffekt mehr Freizeit, im Alltag, darstellen sollte!! 😡 Hardware – Intel NUC D34010WYK | Betriebssystem Xubuntu | Xubuntu – Konfiguration | Projekt Media-PC – Synology NAS – Windows-Freigaben automatisch per FSTAB verbinden | Intel NUC – IR-Empfänger – Nuvoton w836x7hg | XBMC – Installation und Konfiguration | Projekt Media-PC – … Projekt Media-PC – Fazit weiterlesen

21. April 2014

So, nun kommen wir zum alles entscheidenden Artikel vor dem endgültigen Fazit des Projekts “Media-PC“. :mrgreen:

Update_140422: Fazit zum Projekt Media-PC

XBMC - Live-TV mit Senderlogos

Einmal müssen wir noch den Terminal bemühen, um das PVR Plugin von XBMC für VDR VNSI zu installieren – dieses kommt aus dem XBMC “unstable” Repo.

apt-get install xbmc-pvr-vdr-vnsi

Nun starten wir XBMC und navigieren zu Einstellungen > Addons > Deaktivierte Addons > VDR VNSI Client > Konfigurieren > …

XBMC - VDR VNSI Client - Konfiguration

OK > Aktivieren.

Jetzt müssen wir noch zu Einstellungen > Live TV und wählen dort “Aktivieren“.

XBMC - Live TV aktivieren

Info: Ihr solltet auf jedenfall im Hinterkopf haben, dass es dort auch die Funktion “PVR-Datenbank zurücksetzen” und unter EPG “EPG-Datenbank zurücksetzen” gibt – nach dem Bearbeiten der Senderliste hilft dies oft Wunder. </div>
                <div class= Permalink

So, nun kommen wir zum alles entscheidenden Artikel vor dem endgültigen Fazit des Projekts „Media-PC„. :mrgreen:

Update_140422: Fazit zum Projekt Media-PC

XBMC - Live-TV mit Senderlogos

Einmal müssen wir noch den Terminal bemühen, um das PVR Plugin von XBMC für VDR VNSI zu installieren – dieses kommt aus dem XBMC „unstable“ Repo.

apt-get install xbmc-pvr-vdr-vnsi

Nun starten wir XBMC und navigieren zu Einstellungen > Addons > Deaktivierte Addons > VDR VNSI Client > Konfigurieren > …

XBMC - VDR VNSI Client - Konfiguration

OK > Aktivieren.

Jetzt müssen wir noch zu Einstellungen > Live TV und wählen dort „Aktivieren„.

XBMC - Live TV aktivieren

Info: Ihr solltet auf jedenfall im Hinterkopf haben, dass es dort auch die Funktion „PVR-Datenbank zurücksetzen“ und unter EPG „EPG-Datenbank zurücksetzen“ gibt – nach dem Bearbeiten der Senderliste hilft dies oft Wunder. </div>
                <div class= Permalink

Zum Fernsehen komme ich nicht viel und damit ich die ein oder andere Folge nicht verpasse, nutze ich den Linux Videorekorder.

Ein sehr nützliches Plugin ist epgsearch, mit dessen Hilfe der Timer automatisch programmiert wird. Es können Suchbegriffe eingegeben werden und der vdr programmiert den Timer wenn der gesuchte Begriff im Titel oder in der Beschreibung gefunden wurde.
Neben den Suchbegriff können noch Kanäle ausgewählt werden, auf denen aufgenommen werden darf.
Das Plugin bietet auch eine Funktion das bereits aufgenommene Folgen nicht noch einmal aufgenommen werden sollen, leider habe ich diese Funktion erst spät entdeckt und nun wurden einige Folgen doppelt aufgenommen.

Damit ich die doppelten Folgen schnell entfernen kann, habe ich mir folgendes Script erstellt.
#!/bin/bash
VDRPFAD=/vdr

grep "D " --include="info" -R /vdr/ | cut -d ":" -f 2 | sort | uniq -d > $VDRPFAD/vdrtemp

while read i
do
FILE=`grep "$i" --include="info" -R /vdr | tail -1 | cut -d ':' -f1 | sed -e 's/\/info//g'`
rm -R $FILE

done

rm $VDRPFAD/vdrtemp

Das Script sucht nach doppelten Beschreibungen und löscht dann eine der gefundenen Aufnahmen.

20. April 2014

Wer eine neuere Nvidia Grafikkarte in seinem Rechner verbaut hat wird im laufe des Betriebes ab und zu verwackelte Fenster beim bewegen von diesen.
Dass nennt man Tearring und kann ziemlich nervig sein sowohl beim Spielen als auch beim normalen nutzen des PCs.
Dafür gibt es eine einfache Lösung die jedoch erst Getestet werden sollte da sie ca….. 20 Prozent der Leistung einfordert.
Wer jedoch eine gute Grafikkarte hat wird den Unterschied kaum merken.

Der Bug tritt häufig im Zusammenhang mit dem Proprietären Treibern von Nvidia auf.
In meiner Quelle (unten angegeben) stand dass er erstmals mit Ubuntu 12.04.x und dem Nvidia Treiber 319.32 beobachtet worden ist.

Um den Fix im laufendem Betrieb zu testen benötigt ihr die folgenden zwei Befehle.

nvidia-settings --assign CurrentMetaMode="DVI-I-1: nvidia-auto-select { ForceCompositionPipeline = On }"   # einschalten
nvidia-settings --assign CurrentMetaMode="DVI-I-1: nvidia-auto-select { ForceCompositionPipeline = Off }"  # ausschalten 

Hinweis: Dass Wort „DVI-I-1„ muss dabei an dass eigene Ausgabemedium angepasst werden.

Der erste Befehl aktiviert den Fix, der zweite deaktiviert ihn wieder.
Sollte nach dem einschalten der Effekt weg sein oder besser kann man ihn über den folgenden Weg dauerhaft aktivieren.

In der Datei /etc/X11/xorg.conf den Abschnitt Section „Screen“ mit dem folgendem Text ergänzen.

Section "Screen"
    …
    Option         "metamodes" "DVI-I-1: nvidia-auto-select { ForceCompositionPipeline = On }"
EndSection

Hinweis: Hier bitte auch wieder „DVI-I-1„ an dass eigene Ausgabemedium anpassen.

Danach wird beim nächsten Hochfahren automatisch der Fix aktiviert.

Den Bug-Fix habe ich aus dem Ubuntuusers Wiki Beitrag zu Nvidia Grafikkarten.
Der Fix hat bei mir funktioniert jedoch muss dass nicht bedeuten dass er auf allen Geräten funktioniert.
Wer ein anderes Problem hat oder sich weiter über diese Problematik informieren möchte kann sich dort nochmal informieren.

Neues aus der Mozilla Design-Schmiede. Unter diesem Titel wird in regelmäßigen Abständen über aktuelle Mockups, Design-Experimente und Ähnliches berichtet. Manches davon wird in dieser oder ähnlicher Form sicher den Weg in ein Mozilla-Produkt finden, anderes wird vielleicht nie über den Status eines Entwurfes oder Experiments hinausgehen, viele Ideen entwickeln und verändern sich über die Zeit und diese Entwicklungen werden wir in dieser offenen Serie beobachten können.

Vergangene Woche erst hatte ich die Jubiläums-Ausgabe #10 dieser offenen Artikel-Serie veröffentlicht, welche einen besonderen Schwerpunkt auf Design-Entwicklungen gelegt hatte, welche nahtlos an das Australis-Konzept anknüpfen. Darüber hinaus gibt es aber noch weitere Mockups, welche mögliche künftige Neuerungen zeigen.

Visualisierung von Such-Anfragen in Adressleiste

Für Firefox sind diverse Verbesserungen geplant, um den Nutzer beim Suchen zu unterstützen. Sofern Firefox weiß, dass eine Suche durchgeführt wird, soll die Such-URL in der Adressleiste besonders dargestellt werden. Auch in die Adressleisten-Vorschläge soll die Suche besser integriert werden.

Lesemodus für den Desktop-Browser

Firefox Mobile für Android hat einen Lesemodus. Dieser bereitet Artikel auf Webseiten besonders lesefreundlich auf. Zuletzt war dieser für die Windows 8 Modern UI-Variante von Firefox in Arbeit, doch wurden die Arbeiten an diesem bekanntlich eingestellt. Aber auch der Desktop-Browser soll dieses Feature erhalten, wovon es nun Mockups gibt.

Tab-Gruppen-Ersatz als Sidebar

Die Tab-Gruppen, auch bekannt als Panorama oder Tab Candy, sind eine grundsätzlich tolle Idee, in der Praxis aber nicht ohne Schwächen und sollen mittelfristig aus Firefox wieder entfernt werden. Doch das heißt nicht, dass nicht ein ähnliches Konzept eine Chance erhalten könnte. So zeigt ein neuer Design-Prototyp, wie die Tab-Gruppen in besser funktionieren könnten. In diesem Prototyp befindet sich links von den Tabs ein Pfeil-Symbol. Ein Klick darauf öffnet eine Sidebar, welche die Tabs untereinander mit Vorschaubildern anzeigt. Unten kann zwischen verschiedenen Gruppen von Tabs gewechselt werden. Der Design-Prototyp deutet außerdem eine Integration mit Sync an, um die Tabs anderer Geräte darstellen zu können. Eine Suchfunktion ist außerdem vorhanden.

Vorschaubilder auf Neuer Tab-Seite via Bearbeiten-Panel ändern

Mozilla plant nicht nur vordefinierte Vorschaubilder für die Neuer Tab-Seite und eine Integration der Suchleiste in diese Seite, sondern auch eine einfachere Anpassung der einzelnen Vorschaubilder über ein Bearbeiten-Panel. Über dieses kann direkt eine URL eingegeben werden, wobei man ähnlich wie bei der Adressleiste Vorschläge basierend auf der Chronik angezeigt bekommt, zusätzlich werden sofort vier Webseiten in Form von Vorschaubildern vorgeschlagen.

Performance-Tool für die Entwicklerwerkzeuge

Ein Mockup zeigt ein mögliches neues Performance-Tool für die Entwicklerwerkzeuge von Firefox.

Neues Design für den App Manager

Und schließlich gibt es auch noch Mockups, welche ein mögliches neues Design für den App Manager zeigen, welcher das Testen und Debuggen von Firefox OS-Apps auf dem Desktop-Gerät ermöglicht.

Da mittlerweile nun auch der Treiber und die Firmware für die TV-Karte installiert sind, kann nun das VDR samt Plugins und dem nützlichen VDRAdmin-AM Webinterface installiert und konfiguriert werden.

Update_140422: Fazit zum Projekt Media-PC

VDR - VDRAdmin-AM

Mit diesem Befehl …

apt-get install vdr vdr-plugin-vnsiserver vdr-plugin-streamdev-server vdr-plugin-epgsearch vdradmin-am

… installieren wir alle benötigten VDR Pakete aus dem offiziellen Ubuntu Repository.

In den Dateien /etc/default/vdr und .../vdradmin-am müssen wir nun ENABLE=0 zu ENABLE=1 ändern.

vi /etc/default/vdr
vi /etc/default/vdradmin-am

In folgenden Dateien …

vi /etc/vdr/svdrphosts.conf
vi /etc/vdr/plugins/streamdevhosts.conf
vi /etc/vdr/plugins/vnsiserver/allowed_hosts.conf

…  müssen wir noch das jeweilige IP-Netz eintragen, welches Befehle an das VDR senden (svdrphosts.conf) und den TV-Stream empfangen (streamdevhosts.confallowed_hosts.conf) darf – in meinem Fall 192.168.137.0/24.

Nun kopieren wir noch unsere Senderliste, welche wir im Artikel zuvor erstellt haben, in das VDR Konfigurations-Verzeichnis. Als Alternative könntet ihr auch meine aktuelle channels.conf nehmen – da sind wenigstens die ersten 21 Sender schon sortiert. :mrgreen:

cp channels.conf /etc/vdr/channels.conf

Zu guter Letzt starten wir mit …

/etc/init.d/vdr start

… und …

/etc/init.d/vdradmin-am start

… das VDR samt allen installierten Plugins und VDRAdmin-AM.

Über das Webinterface vom Streamdev Plugin …

  • http://IP-DES-MEDIA-PCS:3000

… kann man sich den TV-Stream über, beispielsweise, VLC am Computer anschauen – kein “must have“, aber definitiv eine nützliche Funktion. Im Webinterface von VDRAdmin-AM

  • http://IP-DES-MEDIA-PCS:8001

… kann man sich die EPG-Daten anzeigen lassen und beispielsweise Aufnahmen programmieren.

Viel Spaß damit!


© loggn.de, 2014. | Permalink | 2 Kommentare
_nico bei Twitter und Google+ | loggn.de bei Facebook und Google+

Copyright © 2009-2015
Dieser Feed ist ausschließlich für den privaten Gebrauch bestimmt. Der gewerbliche Gebrauch, in gedruckter oder digitaler Form, ist ohne ausdrückliche Zustimmung des Betreibers nicht erlaubt.