Martins Schmierzettel https://blog.mdosch.de/ de Sun, 19 Mar 2017 09:57:00 GMT https://blog.mdosch.de/feed/ acrylamid 0.7.10 Kurztipp: Debian-Repositorys über https nutzen https://blog.mdosch.de/2017/03/19/kurztipp-debian-repositorys-ueber-https-nutzen/ <p>Über <a href="https://debianforum.de/forum/viewtopic.php?f=37&amp;t=163361&amp;hilit=apt+transport+https">diesen Eintrag im debianforum</a> kam ich auf die Idee, soweit möglich, meine <a href="https://wiki.debianforum.de/Sources.list">sources.list</a> auf <a href="https://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol_Secure">https</a> umzustellen.</p> <p>Dazu benötigt man das Paket <em>apt-transport-https</em>:</p> <div class="highlight"><pre><span></span># apt install apt-transport-https </pre></div> <!-- more --> <p>Nun kann man überprüfen, welches Repository über <em>https</em> erreichbar ist:</p> <div class="highlight"><pre><span></span>$ nmap -p <span class="m">443</span> ftp.de.debian.org Starting Nmap <span class="m">7</span>.40 <span class="o">(</span> https://nmap.org <span class="o">)</span> at <span class="m">2017</span>-03-19 <span class="m">10</span>:46 CET Nmap scan report <span class="k">for</span> ftp.de.debian.org <span class="o">(</span><span class="m">141</span>.76.2.4<span class="o">)</span> Host is up <span class="o">(</span><span class="m">0</span>.22s latency<span class="o">)</span>. PORT STATE SERVICE <span class="m">443</span>/tcp open https Nmap <span class="k">done</span>: <span class="m">1</span> IP address <span class="o">(</span><span class="m">1</span> host up<span class="o">)</span> scanned in <span class="m">0</span>.97 seconds $ nmap -p <span class="m">443</span> security.debian.org Starting Nmap <span class="m">7</span>.40 <span class="o">(</span> https://nmap.org <span class="o">)</span> at <span class="m">2017</span>-03-19 <span class="m">10</span>:46 CET Nmap scan report <span class="k">for</span> security.debian.org <span class="o">(</span><span class="m">212</span>.211.132.250<span class="o">)</span> Host is up <span class="o">(</span><span class="m">0</span>.21s latency<span class="o">)</span>. Other addresses <span class="k">for</span> security.debian.org <span class="o">(</span>not scanned<span class="o">)</span>: <span class="m">195</span>.20.242.89 <span class="m">212</span>.211.132.32 <span class="m">217</span>.196.149.233 <span class="m">2001</span>:a78:5:1:216:35ff:fe7f:6ceb 2a02:16a8:dc41:100::233 <span class="m">2001</span>:a78:5:0:216:35ff:fe7f:be4f rDNS record <span class="k">for</span> <span class="m">212</span>.211.132.250: lobos.debian.org PORT STATE SERVICE <span class="m">443</span>/tcp closed https Nmap <span class="k">done</span>: <span class="m">1</span> IP address <span class="o">(</span><span class="m">1</span> host up<span class="o">)</span> scanned in <span class="m">0</span>.94 seconds </pre></div> <p>An diesen beiden Beispielen ist zu sehen, dass <em>ftp.de.debian.org</em> über <em>https</em> verfügbar ist und <em>security.debian.org</em> nicht.</p> <p>Nun kann man <em>ftp.de.debian.org</em> von <a href="https://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol">http</a> auf <em>https</em> umstellen:</p> <div class="highlight"><pre><span></span># sed -i s#http://ftp.de.debian.org#https://ftp.de.debian.org#g /etc/apt/sources.list </pre></div> <p>Ich benutze in dem Fall <code>#</code> statt <code>/</code> als Trennzeichen bei <em>sed</em> um nicht die ganzen <code>/</code> in den Adressen escapen zu müssen. ;-)</p> <p>Nun kann man sich fragen wozu man die Pakete über <em>https</em> herunterladen sollte wenn über die Prüfsummen <a href="https://de.wikipedia.org/wiki/Man-in-the-Middle-Angriff">MITM</a>-Angriffe bereits verhindert werden. Es kann aber auch mal <a href="https://lists.debian.org/debian-security-announce/2016/msg00316.html">Bugs beim Überprüfen der Signaturen</a> geben, weshalb es nicht schaden kann auch den Transportweg abzusichern und <em>MITM</em>-Angriffe weiter zu erschweren.</p> Sun, 19 Mar 2017 09:57:00 GMT tag:blog.mdosch.de,2017-03-19:/2017/03/19/kurztipp-debian-repositorys-ueber-https-nutzen Kurztipp: Verbindungen mit proxychains durch Proxyserver leiten https://blog.mdosch.de/2017/03/19/kurztipp-verbindungen-mit-proxychains-durch-proxyserver-leiten/ <p>Manchmal ist es nötig Verbindungen eines Programmes über einen Proxy zu leiten. Einige Programme bieten keine Konfiguration zur Nutzung eines Proxys an, oder man möchte die Verbindungen nur gelegentlich durch einen Proxy leiten und deshalb nicht ständig die Konfiguration editieren.</p> <p>Bei <a href="https://askubuntu.com/questions/210410/how-to-run-youtube-dl-through-proxy-server/311445">askubuntu</a> fand ich einen Hinweis auf das Programm <a href="http://proxychains.sourceforge.net/">proxychains</a>, das genau das tut. <!-- more --></p> <h5>Installation</h5> <p>Da <em>proxychains</em> in den Debian-Quellen vorhanden ist gibt es hinsichtlich der Installation nicht viel zu sagen:</p> <div class="highlight"><pre><span></span>apt install proxychains </pre></div> <h5>Konfiguration</h5> <p>Standardmäßig benutzt <em>proxychains</em> <a href="https://blog.torproject.org/">Tor</a>. Möchte man die Konfiguration anpassen kann man dies in der Datei <code>/etc/proxychains.conf</code> global für alle Benutzer des Systems tun. Um benutzerspezifische Konfigurationen anzulegen kopiert man die globale Konfigurationsdatei nach <code>~/.proxychains/proxychains.conf</code>.</p> <h5>Benutzung</h5> <p>Um die Verbindungen eines Programms durch den konfigurierten Proxy zu leiten stellt man dem Programmaufruf einfach <code>proxychains</code> voran:</p> <div class="highlight"><pre><span></span>proxychains curl ip.mdosch.de </pre></div> Sun, 19 Mar 2017 09:30:00 GMT tag:blog.mdosch.de,2017-03-19:/2017/03/19/kurztipp-verbindungen-mit-proxychains-durch-proxyserver-leiten Ein Tor-Relay auf Uberspace einrichten https://blog.mdosch.de/2017/03/17/ein-tor-relay-auf-uberspace-einrichten/ <h5>Intention</h5> <p>Da ich in letzter Zeit nach dem <a href="https://www.kuketz-blog.de/das-3-browser-konzept-not-my-data-teil2/">3-Browser-Prinzip</a> surfe, nutze ich nun für alltägliches Surfen ohne LogIn den <a href="https://www.torproject.org/projects/torbrowser.html.en">Tor-Browser</a> und wollte nun dem <a href="https://www.torproject.org/">Tor</a>-Netzwerk etwas zurückgeben.</p> <p>Die meisten dürften <em>Tor</em> kennen, aber hier noch mal eine kurze Beschreibung von <a href="https://de.wikipedia.org/wiki/Tor_%28Netzwerk%29">Wikipedia</a>:</p> <blockquote> <p>Tor ist ein Netzwerk zur Anonymisierung von Verbindungsdaten. Es wird für TCP-Verbindungen eingesetzt und kann beispielsweise im Web für Browsing, Instant Messaging, IRC, SSH, E-Mail oder P2P benutzt werden. Tor schützt seine Nutzer vor der Analyse des Datenverkehrs. Es basiert auf der Idee des Onion-Routings. </p> </blockquote> <!-- more --> <h5>Anleitungen</h5> <p>Im <a href="https://wiki.uberspace.de/cool">Wiki von Uberspace</a> fand ich eine Anleitung von <a href="https://debianer.puppis.uberspace.de/2014/03/tor-relay-auf-dem-uberspace/">Debianer</a>. Leider funktionierte dieses HowTo für mich nicht. Toast (ein Tool zum Kompilieren von Anwendungen im Userspace) beschwerte sich über die fehlende Bibliothek <em>libevent</em>. Nachdem ich <em>libevent</em> per toast installiert hatte meldete toast beim Installieren von <em>Tor</em> <em>libevent</em> wäre vorhanden, könnte aber nicht gelinkt werden.</p> <p>Ich fand im Netz eine weitere Anleitung zur Installation von <em>Tor</em> auf Uberspace von <a href="https://flambda.de/2013/06/18/tor-node-on-uberspace/">f(Λ)</a>, nach der <em>libevent</em> und <em>Tor</em> einfach ohne toast mit dem altbekannten <a href="http://www.linux-community.de/Internal/Artikel/Print-Artikel/LinuxUser/2004/03/Programme-unter-Linux-kompilieren">Dreisatz</a> installiert wurden.</p> <h5>Mein Vorgehen</h5> <h6>Tor installieren</h6> <p>Man loggt sich auf seinem Uberspace ein, erstellt einen temporären Ordner und installiert <em>libevent</em> und <em>Tor</em> (bitte die aktuelle Version von Tor <a href="https://www.torproject.org/download/download.html.en">hier</a> beziehen):</p> <div class="highlight"><pre><span></span>mkdir ~/tmp cd ~/tmp git clone git://levent.git.sourceforge.net/gitroot/levent/levent cd levent ./autogen.sh ./configure --prefix=$HOME make make install cd .. wget https://www.torproject.org/dist/tor-X.X.X.X.tar.gz tar xvf https://www.torproject.org/dist/tor-X.X.X.X.tar.gz cd tor-X.X.X.X ./configure --prefix=$HOME make make install </pre></div> <h6>Tor konfigurieren</h6> <p>Lief die Installation ohne Fehler kann man nun den Ordner löschen und sich anschließend an die Konfiguration machen:</p> <div class="highlight"><pre><span></span>cd ~ rm -rf tmp </pre></div> <p>Eine Beispielkonfiguration mit Erläuterungen findet ihr nun unter <code>~/etc/tor/torrc.sample</code>, ich habe als Basis die Konfiguration von <a href="https://debianer.puppis.uberspace.de/2014/03/tor-relay-auf-dem-uberspace/">Debianer</a> genommen und für mich angepasst und unter <code>~/etc/tor/torrc</code> gespeichert:</p> <div class="highlight"><pre><span></span>SocksPort 0 Log notice file /home/USER/etc/tor.log DataDirectory /home/USER/lib/tor ControlPort PORT1 CookieAuthentication 1 ORPort PORT2 Nickname NICKNAME RelayBandwidthRate 300 KB RelayBandwidthBurst 600 KB AccountingMax 10 GB AccountingStart month 1 02:00 ContactInfo Mail DirPort PORT3 ExitPolicy reject *:* DisableDebuggerAttachment 0 AvoidDiskWrites 1 </pre></div> <p>Die Zeile <code>ExitPolicy reject *:*</code> ist immens wichtig, da diese festlegt, dass ihr nicht als Exit-Node fungiert. </p> <p><strong>Richtet keinen Exit-Node bei Uberspace ein!</strong> </p> <p><code>USER</code> ist durch euren Benutzernamen bei Uberspace auszutauschen und <code>NICKNAME</code> durch einen frei wählbaren Namen für das <em>Tor</em>-Netzwerk. Bei <code>PORT1</code>, <code>PORT2</code> und <code>PORT3</code> tragt ihr Ports ein, die ihr euch bei Uberspace <a href="https://blog.uberspace.de/mehr-fur-selbermacher/">mittlerweile selbst freischalten</a> könnt. Dafür führt ihr einfach dreimal folgenden Befehl aus und notiert euch den Port:</p> <div class="highlight"><pre><span></span>uberspace-add-port -p tcp --firewall </pre></div> <h6>Tor auf Uberspace aktivieren</h6> <p>Nun kann man <em>Tor</em> über <code>exec ~/bin/tor -f ~/etc/tor/torrc</code> starten, aber sobald man den Befehl abbricht oder sich ausloggt wird der <em>Tor</em>-Service beendet. Man kann sich hier mit Tools wie <a href="https://tmux.github.io/">tmux</a> oder <a href="https://www.gnu.org/software/screen/">screen</a> behelfen, praktischer ist es aber <em>Uberspace</em> dafür sorgen zu lassen, dass <em>Tor</em> läuft:</p> <div class="highlight"><pre><span></span>cat &lt;&lt;__EOF__ &gt; ~/etc/tor/run\n#!/bin/sh\nexec ~/bin/tor -f ~/etc/torrc 2&gt;&amp;1\n__EOF__ chmod +x ~/etc/tor/run ln -s ~/etc/tor ~/service/tor </pre></div> <p>Theoretisch sollte jetzt schon alles laufen, aber es kann nicht schaden zur Sicherheit noch eine Aktivierung hinterherzuschicken:</p> <div class="highlight"><pre><span></span>svc -u ~/service/tor </pre></div> <h6>Tor-Node überprüfen</h6> <p>Natürlich möchte man nun überprüfen, ob der Torknoten auch erfolgreich eingerichtet wurde und Teil des Netwerks ist. Hierzu beobachtet man erst mal in das Logfile:</p> <div class="highlight"><pre><span></span>tail -f ~/etc/tor.log </pre></div> <p>Wenn die letzten Zeilen in etwa so aussehen scheint es schon mal ganz gut zu laufen:</p> <div class="highlight"><pre><span></span>Mar 17 18:32:38.000 [notice] Bootstrapped 0%: Starting Mar 17 18:32:42.000 [notice] Bootstrapped 80%: Connecting to the Tor network Mar 17 18:32:43.000 [notice] Bootstrapped 85%: Finishing handshake with first hop Mar 17 18:32:43.000 [notice] Bootstrapped 90%: Establishing a Tor circuit Mar 17 18:32:45.000 [notice] Tor has successfully opened a circuit. Looks like client functionality is working. Mar 17 18:32:45.000 [notice] Bootstrapped 100%: Done Mar 17 18:32:45.000 [notice] Now checking whether ORPort 95.143.172.208:64795 and DirPort 95.143.172.208:61540 are reachable... (this may take up to 20 minutes -- look for log messages indicating success) Mar 17 18:32:45.000 [notice] Self-testing indicates your ORPort is reachable from the outside. Excellent. Mar 17 18:32:45.000 [notice] Self-testing indicates your DirPort is reachable from the outside. Excellent. Publishing server descriptor. Mar 17 18:32:46.000 [notice] Performing bandwidth self-test...done. </pre></div> <p>Man kann dann auch bei <em>Tor</em> selbst überprüfen <a href="https://exonerator.torproject.org">ob man Teil des Netzwerks ist</a>. Man sollte dabei aber nicht zu ungeduldig sein. Bei mir dauerte es ca. eine Stunde bis ich dort gelistet wurde.</p> <p><strong>[Update 2017-03-18]</strong></p> <p>Nachdem euer Middle-Node ein paar Stunden läuft könnt ihr auch Infos über die Verbindungen und den Traffic in <code>~/etc/tor.log</code> sehen:</p> <div class="highlight"><pre><span></span><span class="nt">Mar</span> <span class="nt">18</span> <span class="nt">12</span><span class="p">:</span><span class="nd">32</span><span class="p">:</span><span class="nd">42</span><span class="p">.</span><span class="nc">000</span> <span class="cp">[</span><span class="nx">notice</span><span class="cp">]</span> <span class="nt">Heartbeat</span><span class="o">:</span> <span class="nt">Tor</span><span class="s1">&#39;s uptime is 17:59 hours, with 8 circuits open. I&#39;</span><span class="nt">ve</span> <span class="nt">sent</span> <span class="nt">147</span><span class="p">.</span><span class="nc">39</span> <span class="nt">MB</span> <span class="nt">and</span> <span class="nt">received</span> <span class="nt">171</span><span class="p">.</span><span class="nc">18</span> <span class="nt">MB</span><span class="o">.</span> <span class="nt">Mar</span> <span class="nt">18</span> <span class="nt">12</span><span class="p">:</span><span class="nd">32</span><span class="p">:</span><span class="nd">42</span><span class="p">.</span><span class="nc">000</span> <span class="cp">[</span><span class="nx">notice</span><span class="cp">]</span> <span class="nt">Heartbeat</span><span class="o">:</span> <span class="nt">Accounting</span> <span class="nt">enabled</span><span class="o">.</span> <span class="nt">Sent</span><span class="o">:</span> <span class="nt">150</span><span class="p">.</span><span class="nc">26</span> <span class="nt">MB</span><span class="o">,</span> <span class="nt">Received</span><span class="o">:</span> <span class="nt">183</span><span class="p">.</span><span class="nc">90</span> <span class="nt">MB</span><span class="o">,</span> <span class="nt">Used</span><span class="o">:</span> <span class="nt">186</span><span class="p">.</span><span class="nc">87</span> <span class="nt">MB</span> <span class="o">/</span> <span class="nt">10</span><span class="p">.</span><span class="nc">00</span> <span class="nt">GB</span><span class="o">,</span> <span class="nt">Rule</span><span class="o">:</span> <span class="nt">max</span><span class="o">.</span> <span class="nt">The</span> <span class="nt">current</span> <span class="nt">accounting</span> <span class="nt">interval</span> <span class="nt">ends</span> <span class="nt">on</span> <span class="nt">2017-04-01</span> <span class="nt">02</span><span class="p">:</span><span class="nd">00</span><span class="p">:</span><span class="nd">00</span><span class="o">,</span> <span class="nt">in</span> <span class="nt">13</span> <span class="nt">days</span> <span class="nt">12</span><span class="p">:</span><span class="nd">27</span> <span class="nt">hours</span><span class="o">.</span> <span class="nt">Mar</span> <span class="nt">18</span> <span class="nt">12</span><span class="p">:</span><span class="nd">32</span><span class="p">:</span><span class="nd">42</span><span class="p">.</span><span class="nc">000</span> <span class="cp">[</span><span class="nx">notice</span><span class="cp">]</span> <span class="nt">Circuit</span> <span class="nt">handshake</span> <span class="nt">stats</span> <span class="nt">since</span> <span class="nt">last</span> <span class="nt">time</span><span class="o">:</span> <span class="nt">14</span><span class="o">/</span><span class="nt">14</span> <span class="nt">TAP</span><span class="o">,</span> <span class="nt">66</span><span class="o">/</span><span class="nt">66</span> <span class="nt">NTor</span><span class="o">.</span> <span class="nt">Mar</span> <span class="nt">18</span> <span class="nt">12</span><span class="p">:</span><span class="nd">32</span><span class="p">:</span><span class="nd">42</span><span class="p">.</span><span class="nc">000</span> <span class="cp">[</span><span class="nx">notice</span><span class="cp">]</span> <span class="nt">Since</span> <span class="nt">startup</span><span class="o">,</span> <span class="nt">we</span> <span class="nt">have</span> <span class="nt">initiated</span> <span class="nt">0</span> <span class="nt">v1</span> <span class="nt">connections</span><span class="o">,</span> <span class="nt">0</span> <span class="nt">v2</span> <span class="nt">connections</span><span class="o">,</span> <span class="nt">0</span> <span class="nt">v3</span> <span class="nt">connections</span><span class="o">,</span> <span class="nt">and</span> <span class="nt">520</span> <span class="nt">v4</span> <span class="nt">connections</span><span class="o">;</span> <span class="nt">and</span> <span class="nt">received</span> <span class="nt">1</span> <span class="nt">v1</span> <span class="nt">connections</span><span class="o">,</span> <span class="nt">0</span> <span class="nt">v2</span> <span class="nt">connections</span><span class="o">,</span> <span class="nt">0</span> <span class="nt">v3</span> <span class="nt">connections</span><span class="o">,</span> <span class="nt">and</span> <span class="nt">775</span> <span class="nt">v4</span> <span class="nt">connections</span><span class="o">.</span> </pre></div> <p><strong>[Update 2017-03-19]</strong></p> <p>Gerade habe ich entdeckt, dass man den Status auch mit <a href="https://atlas.torproject.org">Atlas</a> überprüfen kann. Dort bekommt man auch ein paar interessante Statistiken zu sehen. Um euren eigenen Server zu finden müsst ihr einfach im Suchfeld rechts oben den Namen, den ihr für das Tor-Netzwerk gewählt habt, oder eure IP eingeben.</p> <p>Wenn ihr euch wundert, warum euer Knoten zu Beginn wenig Traffic generiert, so liegt dies nicht nur am vergebenen Limit, sondern auch am <a href="https://blog.torproject.org/blog/lifecycle-of-a-new-relay">Lebenszyklus eines Tor-Knotens</a>. Euer Tor-Knoten muss also erst mal ein paar Tage <a href="https://metrics.torproject.org/glossary.html#consensus-weight">concensus weight</a> sammeln, was ich in etwa als Reputation interpretiere.</p> Fri, 17 Mar 2017 18:53:00 GMT tag:blog.mdosch.de,2017-03-17:/2017/03/17/ein-tor-relay-auf-uberspace-einrichten Zufällige MAC-Adresse mit dem NetworkManager https://blog.mdosch.de/2017/03/14/zufaellige-mac-adresse-mit-dem-networkmanager/ <p>Heute habe ich gelernt, dass man den <a href="https://wiki.ubuntuusers.de/NetworkManager/">NetworkManager</a> so konfigurieren kann, dass er <a href="https://blogs.gnome.org/thaller/2016/08/26/mac-address-spoofing-in-networkmanager-1-4-0/">gefälschte MAC-Adressen verwendet</a>. <br /> Wozu ist das gut? Ist WLAN in mobilen Geräten aktiviert scannen diese ständig nach Netzwerken und teilen diesen die MAC-Adresse mit, wodurch man getrackt werden kann. <!-- more --> Lt. dem verlinkten Blogpost auf <em>gnome.org</em> wird beim Scannen bereits eine gefälschte MAC verwendet, aber wer sich häufig in HotSpots anmeldet ist spätestens nach dem Aufbau der Verbindung identifizierbar.</p> <p>Wie in dem Post beschrieben kann man den NetworkManager so konfigurieren, dass bei jeder neuen Verbindung eine Zufalls-MAC verwendet wird. Dafür muss man die Datei <code>NetworkManager.conf</code> editieren. Bei Debian befindet sich diese hier: <code>/etc/NetworkManager/NetworkManager.conf</code></p> <p>Man fügt der Datei folgendes hinzu:</p> <div class="highlight"><pre><span></span><span class="k">[device-mac-randomization]</span> <span class="c1"># &quot;yes&quot; is already the default for scanning</span> <span class="na">wifi.scan-rand-mac-address</span><span class="o">=</span><span class="s">yes</span> <span class="k">[connection-mac-randomization]</span> <span class="na">ethernet.cloned-mac-address</span><span class="o">=</span><span class="s">random</span> <span class="na">wifi.cloned-mac-address</span><span class="o">=</span><span class="s">random</span> </pre></div> <p>Die Änderung wird wirksam sobald man den Netzwerkservice neu startet:</p> <div class="highlight"><pre><span></span># service network-manager restart </pre></div> <p>Möchte man in einem Netzwerk immer dieselbe MAC nutzen, z.B. damit der Router weiterhin trotz DHCP die richtige IP-Adresse zuweist kann man dies in der GUI des NetworkManagers einstellen, indem man die gewünschte MAC bei den Einstellungen des Netzwerks unter <strong>Identität → Duplizierte Adresse</strong> einträgt:</p> <p><a href="https://files.mdosch.de/2017-03/nm-mac.png"><img alt="NetworkManager MAC spoofing" src="https://files.mdosch.de/2017-03/nm-mac.png"/></a></p> Tue, 14 Mar 2017 20:07:00 GMT tag:blog.mdosch.de,2017-03-14:/2017/03/14/zufaellige-mac-adresse-mit-dem-networkmanager Git-Repository von GitHub zu Uberspace umziehen https://blog.mdosch.de/2017/03/11/git-repository-von-github-zu-uberspace-umziehen/ <p>Derzeit wird ja viel über die <a href="https://www.heise.de/newsticker/meldung/GitHub-eckt-mit-neuen-Nutzungsbedingungen-an-3647980.html">neuen Nutzungsbedingungen von GitHub</a> diskutiert. Ich gebe zu, ich habe mich nicht mit den Details der Änderungen befasst und weiß nicht ob mich diese wirklich betreffen würden. Ich nutze GitHub nur um meinen <a href="https://blog.mdosch.de/2014/09/07/blog-mdosch-de-jetzt-statisch/">statischen Blog</a> zwischen meinen Rechnern zu synchronisieren. <!-- more --></p> <p>Nun habe ich diese Diskussion aber zum Anlass genommen zu überdenken ob es denn wirklich nötig ist meinen Blog über einen externen Dienstleister zu synchronisieren und das Repository öffentlich bereitzustellen und die Antwort lautete beide Male "Nein".</p> <p>Nun habe ich festgestellt, dass <a href="https://wiki.uberspace.de/development:git#git_als_server">Uberspace bereits Git anbietet</a> und die Einrichtung ein Kinderspiel ist:</p> <p>Man loggt sich per SSH auf Uberspace ein und erstellt einen Ordner mit der Endung .git, in diesem Beispiel blog.git und führt in diesem <code>git init --bare</code> aus:</p> <div class="highlight"><pre><span></span>mkdir ~/blog.git cd ~/blog.git git init --bare </pre></div> <p>Mein Blog liegt lokal unter <code>~/www/blog</code>. Um dieses Repository zukünftig mit meinem Uberspace statt mit GitHub zu synchronisieren reichte es aus in der Datei <code>~/www/blog/.git/config</code> im Unterpunkt <code>[remote "origin"]</code> die Zeile beginnend mit <code>url =</code> folgendermaßen abzuändern:</p> <div class="highlight"><pre><span></span>url = ssh://USER@DOMAIN/home/USER/blog.git/ </pre></div> <p><code>USER</code> ist natürlich durch den eigenen Benutzernamen bei Uberspace und <code>DOMAIN</code> durch die eigene Domain zu ersetzen.</p> <p>Anschließend kann man mit einem <code>git push</code> die Daten in das Repository übertragen.</p> <p>Wer möchte kann natürlich auch bei Uberspace sein <a href="https://wiki.uberspace.de/development:git#oeffentlich_bereitstellen">Repository öffentlich bereitstellen</a>.</p> Sat, 11 Mar 2017 15:18:00 GMT tag:blog.mdosch.de,2017-03-11:/2017/03/11/git-repository-von-github-zu-uberspace-umziehen Ups und Downs mit dem verlorenen Koffer https://blog.mdosch.de/2017/03/10/ups-und-downs-mit-dem-verlorenen-koffer/ <p>Ich fliege häufiger, aber gestern passierte mir etwas, das mir zuvor noch nie passiert war: Mein Koffer (bzw. einer meiner Koffer) kam nicht über das Förderband an.</p> <p>Ich gab in Paris zwei Koffer auf, einer von beiden kam nicht in München an der Gepäckausgabe an.</p> <p>Nachdem ich eine Weile vergeblich wartete, dass das Förderband wieder anläuft, ging ich zum 'lost and found' von <a href="http://www.airfrance.de/">AirFrance</a> und meldete, dass nur einer von zwei Koffern ankam. Daraufhin erhielt ich folgende Antwort:</p> <blockquote> <p>Ich habe bereits angerufen, es kommt noch eine Ladung Koffer.</p> </blockquote> <p>Ich setzte mich wieder hin und las mein Handgepäckbuch... <!-- more --> Nach einer Weile kam die Person auf mich zu und eröffnete mir, dass wohl doch keine Koffer mehr kommen und ich eine Verlustmeldung aufgeben solle.</p> <p>Soweit so gut, aber mir passierte dieses Mal dummerweise ein Missgeschick: Ich hatte meinen Wohnungsschlüssel im Koffer. Üblicherweise nehme ich diesen vor CheckIn aus dem Gepäck und packe ihn in meine Hose oder mein Handgepäck. Dies hatte ich zum ersten Mal vergessen und <a href="https://de.wikipedia.org/wiki/Murphys_Gesetz">Murphys Law</a> schlug zu: Ich vergesse einmal meinen Schlüssel im aufgegebenen Gepäck, zum ersten Mal geht eines meiner Gepäckstücke verloren (und ich fliege häufig) und natürlich kommt mein Firmenkoffer in München an, mein Privatkoffer (mit Haustürschlüssel) hingegen nicht.</p> <p>Mein erster Gedanke: Wie kann ein Koffer denn auf einem Direktflug verloren gehen? Bei Flügen mit Umstieg an einem Drehkreuz und eventuell kurzen Umstiegszeiten kann ich mir das ja noch vorstellen, aber bei 55min Umstiegszeit in Amsterdam oder 1:05h Umstiegszeit in Doha war dies noch nie ein Thema. Aber in Paris schafft man es, dass von zwei aufgegebenen Gepäckstücken eines auf einem Direktflug verloren geht. Man kann ja nicht mal von verloren sprechen, das war der Koffer ja nie. Er wurde einfach nicht eingeladen, es bestand nie ein Zweifel, dass er noch in Paris steht.</p> <p>Ok, so weit so dumm. Es war mein Fehler, dass mein Schlüssel im Koffer war und ich keine Chance hatte in mein Wohnung zu kommen, aber mich wundert doch wie lange es dauerte bis ich meinen Koffer zurückbekam.</p> <p>Als ich mit der Frau am Schalter redete, fragte ich diese ob es heute noch Flüge zwischen Paris und München mit <strong>AirFrance</strong> gebe. Darauf wurde mir geantwortet, dass noch drei weitere <strong>AirFrance</strong>-Flüge von Paris nach München fliegen. Auf meine Frage, ob dann nicht mein Koffer noch am selben Tage ankommen sollte wurde mir geantwortet, dass dies durchaus wahrscheinlich sei.</p> <p>Meine naive Annahme war ja: Flughäfen sind automatisiert und die Koffer über die UID fest identifizierbar und daher sollte doch schon kurz nach Abheben das System wissen der Koffer mit der UID XYZ steht noch in Paris obwohl der Flieger nach München schon weg ist und somit über das System automatisch in den nächsten Flieger geladen werden.</p> <p>Diese einfache Schlussfolgerung bekommen Flughafengepäckleitsysteme aber noch nicht hin, zumindest nicht in Paris. Denn mein Gepäck kam nicht mit dem nächsten, übernächsten oder drittnächsten Flieger an diesem Tag, sondern erst am Folgetag.</p> <p>Kein Problem, ich hatte bei einem Arbeitskollegen übernachtet und Zahnbürste, Zahnpaste und Kontaktlinsenpflege sind ja schnell gekauft. Ersatzunterwäsche hat man als Vielreisender eh immer im Rucksack. Lt. Aussage einer (zugegeben sehr hilfsbereiten und netten) Mitarbeiterin der Airline-Hotline bekomme ich diese Ausgaben evtl. sogar erstattet. Aber sie sagte mir (Gedächtniszitat):</p> <blockquote> <p>Aber geben Sie für diese Besorgungen kein Geld aus, das Sie demnächst dringend benötigen. Wir haben derzeit <strong>sehr viele Beschwerden</strong>, deshalb dauert die Bearbeitung lange.</p> </blockquote> <p>Aha, da hat die nette Dame mir wohl euphemistisch gesteckt, dass derzeit viel Gepäck verbummelt wird.</p> <p>Am nächsten Morgen rief ich natürlich wieder bei der Hotline an und mir konnte die Flugnummer des Fluges, der meinen Koffer zurückbringt durchgesagt werden. Dieser Flieger landete um ca. 9 Uhr in München. Um 12 Uhr fragte ich die Hotline ob mein Koffer denn zurückgebracht wird und mir wurde mitgeteilt, der Kurierdienst würde sich bis 14 Uhr mit mir in Verbindung setzen.</p> <p>Um 15 Uhr rief ich wieder bei <strong>AirFrance</strong> an und ein Mitarbeiter teilte mir mit, der Kurierdienst würde sich bis 14 Uhr mit mir in Verbindung setzen.</p> <p>Um 16 Uhr rief ich wieder bei <strong>AirFrance</strong> an und ein Mitarbeiter teilte mir mit, der Kurierdienst würde sich bis 14 Uhr mit mir in Verbindung setzen.</p> <p>Schließlich erreichte mich um knapp 17 Uhr ein Anruf mein Koffer würde mir zwischen 19 und 21 Uhr zugestellt. Um 19:45 konnte ich meinen Koffer in Empfang nehmen und wieder in meine Wohnung gelangen.</p> <p>Mir ist klar, dass das Vergessen meines Schlüssels im Gepäck mein Fehler war und dass eine Zustellung innerhalb von 30h normalerweise schnell ist, aber der Fall ist meiner Meinung nach nicht normal. Üblicherweise gehen Gepäckstücke an großen Drehkreuzflughäfen beim Umsteigen verloren. Üblicherweise dauert es eine Weile festzustellen an welcher Station der Reise der Koffer verloren ging.</p> <p>Aber all dies trifft hier nicht zu:</p> <ul> <li>Es war ein Direktflug, kein Umladen nötig<ul> <li>Also musste der Koffer nicht gesucht werden, er blieb einfach in Paris stehen</li> </ul> </li> <li>Obwohl mein Koffer um ca. 13 Uhr in Paris stehen blieb, hat <strong>AirFrance</strong> es nicht geschafft, meinen Koffer vor dem nächsten Morgen in einen Flieger zu laden</li> <li>Obwohl mein Koffer um kurz vor 9 Uhr in München ankam musste ich noch bis 19:45 Uhr warten, bis er zugestellt wurde</li> </ul> <p>Alles in allem bin ich froh, dass mein Koffer letzten Endes ankam und ich wieder in meine Wohnung kann. Wenn es aber schon so lange dauert wenn ein Koffer auf einem Regionalflug einfach beim Einladen vergessen wird, dann möchte ich mir nicht vorstellen wie lange man auf einen Koffer warten muss, der auf einem Interkontinentalflug mit ein bis zwei Umstiegen verbummelt wird.</p> <p>Eines weiß ich sicher, ich werde in Zukunft <strong>AirFrance</strong> meiden und im Zweifelsfall eher etwas mehr zahlen um ein geringeres Risiko des Gepäckverlustes einzugehen, immerhin gestand mir die Mitarbeiterin am Telefon, dass derzeit wohl viele Gepäckstücke vermisst werden. Dafür sprach auch, dass nach dem kleinen Regionalflug nach München neben mir noch ca. 6 andere Personen den 'lost and found' Schalter aufgesucht haben.</p> Fri, 10 Mar 2017 21:09:00 GMT tag:blog.mdosch.de,2017-03-10:/2017/03/10/ups-und-downs-mit-dem-verlorenen-koffer Kurztipp: SSH config Datei https://blog.mdosch.de/2017/03/05/kurztipp-ssh-config-datei/ <p>Manchmal stolpert man über Vereinfachungen für Dienste bzw. Programme, die man häufig nutzt und die deren Nutzung deutlich vereinfachen. Häufig fragt man sich dann, wie man bisher ohne diese Kniffe auskommen konnte und warum noch nicht früher darauf aufmerksam wurde. So erging es mir heute als ich wegen einer <a href="https://debianforum.de/forum/viewtopic.php?f=30&amp;t=164453">Frage im Debianforum</a> auf die Seite von <a href="http://arachnoid.com/android/SSHelper/">SSHelper</a> fand und dort folgendes las:</p> <blockquote> <p>But the configuration-file method shown earlier is preferred, because it prevents the possibility of typographical errors and (maybe) carpal-tunnel syndrome from too much typing.</p> </blockquote> <p>Die erwähnte Methode ist es Server, Benutzer und Port in der Datei <code>~/.ssh/config</code> anzugeben unter einem frei wählbaren Namen anzugeben: <!-- more --></p> <div class="highlight"><pre><span></span>Host beispiel HostName example.com Port 2222 User nutzer </pre></div> <p>In diesem Beispiel könnte man sich per <code>ssh beispiel</code> statt per <code>ssh -p 2222 nutzer@example.com</code> mit dem Server verbinden. Besonders in Verbindung mit Programmen wie <a href="https://wiki.ubuntuusers.de/rsync/">rsync</a> ist dies eine willkommene Erleichterung:</p> <p><code>rsync -a /path/to/file beispiel:/remote/path/</code> ist deutlich angenehmer als <code>rsync -ae "ssh -p 2222" /path/to/file nutzer@example.com:/remote/path/</code>. </p> <p>Natürlich können noch <a href="http://nerderati.com/2011/03/17/simplify-your-life-with-an-ssh-config-file/">weitere Einstellungen</a> in dieser Datei getätigt werden.</p> <p>Ich frage mich, warum ich das nicht früher entdeckt habe. :-)</p> Sun, 05 Mar 2017 16:46:00 GMT tag:blog.mdosch.de,2017-03-05:/2017/03/05/kurztipp-ssh-config-datei Kommentarbenutzung https://blog.mdosch.de/2017/02/19/kommentarbenutzung/ <p>Da ich häufig Probleme in den Kommentaren bzgl. der Unterstützung von markdown beobachte werde ich in Zukunft diesen Beitrag statt des <a href="https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet">markdown cheat sheets</a> verlinken, da nicht alle dort genannten tags, dafür aber auch einige html tags genutzt werden können. <!-- more --></p> <p>Hier sind die wichtigsten Funktionen zusammengefasst:</p> <h5><p id="markdown">Überschriften</p></h5> <div class="highlight"><pre><span></span># H1 ## H2 ### H3 #### H4 ##### H5 ###### H6 </pre></div> <h5>Auszeichnung</h5> <div class="highlight"><pre><span></span>*text* kursiv **text** fett ~~text~~ durchstreichen </pre></div> <h5>Listen</h5> <div class="highlight"><pre><span></span>* Listenpunkt * Noch ein Listenpunkt </pre></div> <h5>Links</h5> <div class="highlight"><pre><span></span>[Link zu meinem Blog](https://blog.mdosch.de) </pre></div> <h5>Inline Code</h5> <div class="highlight"><pre><span></span>Das ist der Text und `hier der Inline Code` </pre></div> <h5>Code Block</h5> <div class="highlight"><pre><span></span><span class="nt">&lt;pre&gt;</span> #! /bin/bash echo &quot;Ich bin ein Code Block&quot; <span class="nt">&lt;/pre&gt;</span> </pre></div> <h5>Zitate</h5> <div class="highlight"><pre><span></span>Hier schreibe ich. &gt; Hier zitiere ich. </pre></div> <h5>Zeilenumbruch</h5> <div class="highlight"><pre><span></span>Hier gibt es keinen Zeilenumbruch. Hier gibt es einen Zeilenumbruch. </pre></div> <h5>Erlaubte html Elemente</h5> <p>Folgende html Elemente <strong>sollten</strong> (ungetestet) lt. isso Dokumentation funktionieren:</p> <p>a, blockquote, br, code, del, em, h1, h2, h3, h4, h5, h6, hr, ins, li, ol, p, pre, strong, table, tbody, td, th, thead und ul.</p> Sun, 19 Feb 2017 12:06:00 GMT tag:blog.mdosch.de,2017-02-19:/2017/02/19/kommentarbenutzung Kurztipp: fstrim als systemd service https://blog.mdosch.de/2017/02/19/kurztipp-fstrim-als-systemd-service/ <p>Bisher habe ich den <a href="https://wiki.ubuntuusers.de/SSD/TRIM/">TRIM</a>-Befehl für SSDs immer mal wieder manuell ausgeführt, aber vor ein paar Tagen sah ich in einem hilfreichen Blogpost, dass man das <a href="https://got-tty.org/fedora-fstrim-als-service-via-systemd">von systemd erledigen lassen kann</a>.</p> <p>Unter Debian ist jedoch erst ein <a href="https://wiki.debian.org/SSDOptimization#Mounting_SSD_filesystems">zusätzlicher Befehl</a> nötig um die entsprechenden Dateien an die richtige Stelle zu kopieren: <!-- more --></p> <div class="highlight"><pre><span></span># cp /usr/share/doc/util-linux/examples/fstrim.{service,timer} /etc/systemd/system </pre></div> <p>Anschließend lässt sich der service per systemd aktivieren:</p> <div class="highlight"><pre><span></span># systemctl enable fstrim.timer Created symlink /etc/systemd/system/timers.target.wants/fstrim.timer → /etc/systemd/system/fstrim.timer. </pre></div> Sun, 19 Feb 2017 10:17:00 GMT tag:blog.mdosch.de,2017-02-19:/2017/02/19/kurztipp-fstrim-als-systemd-service Firefoxprofil automatisiert übertragen https://blog.mdosch.de/2017/02/18/firefoxprofil-automatisiert-ubertragen/ <p>Neben meinem Hauptrechner habe ich ein Netbook, das ich auf Reisen nutze und bisher habe ich mich häufig darüber geärgert, dass ich Firefox-Einstellungen immer an beiden Rechnern vornehmen musste weshalb ich nach einem Weg suchte um das Firefoxprofil automatisiert zu synchronisieren.</p> <p>Zuerst habe ich diese <a href="https://wiki.ubuntuusers.de/Unison/#Automatisierung">Anleitung</a> mit <a href="https://www.cis.upenn.edu/~bcpierce/unison/">unison</a> umgesetzt. An dieser Lösung gefiel mir jedoch nicht, dass Dateien die lokal geändert wurden nicht mehr synchronisiert wurden. Außerdem habe ich mit <a href="https://rsync.samba.org/">rsync</a> schon ein mächtiges Tool zur Synchronisierung/Dateiübertragung installiert. Deshalb habe ich <em>unison</em> wieder deinstalliert und ein Script mit <em>rsync</em> erstellt. <!-- more --></p> <p>Das Script prüft die MAC des Quellrechners und übertragt bei Erfolgreicher MAC-Prüfungen das Firefoxprofil mit <em>rsync</em> per <em>SSH</em>. Ein Lockfile verhindert, dass mehrere Instanzen des Scripts zeitgleich ausgeführt werden. Die Lösung mit dem Lockfile habe ich mir aus dem verlinkten UbuntuUsers Wiki-Artikel abgeschaut.</p> <p>Hier der Inhalt von <code>/usr/local/bin/firefox-profile-sync</code>:</p> <table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="ch">#! /bin/bash</span> <span class="nv">MAC</span><span class="o">=</span>xx:xx:xx:xx:xx:xx <span class="c1"># MAC des Quellrechners</span> <span class="nv">IP_REMOTE</span><span class="o">=</span> <span class="c1"># IP oder hostname des Quellsystems</span> <span class="nv">USER_LOCAL</span><span class="o">=</span> <span class="c1"># Lokaler Benutzername</span> <span class="nv">USER_REMOTE</span><span class="o">=</span> <span class="c1"># Benutzername auf dem Quellsystem</span> <span class="nv">FIREFOX_PROFILE</span><span class="o">=</span>xxxxxxxx.default <span class="c1"># Firefoxprofil </span> <span class="nv">SSH_PORT</span><span class="o">=</span><span class="m">22</span> <span class="c1"># SSH-Port auf dem Quellsystem</span> <span class="c1"># Abbruch wenn bereits ein Lockfile existiert, ansonsten Lockfile anlegen</span> <span class="nb">test</span> -e /var/lock/firefox-profile-sync <span class="o">&amp;&amp;</span> <span class="nb">exit</span> <span class="m">0</span> <span class="o">||</span> touch /var/lock/firefox-profile-sync <span class="c1"># Überprüfung der MAC des Quellsystems (Scriptabbruch in fremden Netzen)</span> <span class="k">if</span> <span class="o">[</span> <span class="k">$(</span>arp -a <span class="p">|</span> awk <span class="s2">&quot;/</span><span class="nv">$IP_REMOTE</span><span class="s2">/ {print \$4}&quot;</span><span class="k">)</span> <span class="o">==</span> <span class="nv">$MAC</span> <span class="o">]</span> <span class="k">then</span> su -c <span class="s2">&quot;rsync -ae &#39;ssh -p </span><span class="nv">$SSH_PORT</span><span class="s2">&#39; --delete \</span> <span class="s2"> </span><span class="nv">$USER_REMOTE</span><span class="s2">@</span><span class="nv">$IP_REMOTE</span><span class="s2">:/home/</span><span class="nv">$USER_REMOTE</span><span class="s2">/.mozilla/firefox/</span><span class="nv">$FIREFOX_PROFILE</span><span class="s2"> \</span> <span class="s2"> /home/</span><span class="nv">$USER_LOCAL</span><span class="s2">/.mozilla/firefox/&quot;</span> <span class="nv">$USER_LOCAL</span> <span class="k">fi</span> rm /var/lock/firefox-profile-sync </pre></div> </td></tr></table> <p>Das Script kann man dann per <a href="https://wiki.ubuntuusers.de/cron/">cron</a> oder <a href="https://www.thomas-krenn.com/de/wiki/Anacron">anacron</a> im gewünschten Intervall ausführen lassen.</p> Sat, 18 Feb 2017 16:50:00 GMT tag:blog.mdosch.de,2017-02-18:/2017/02/18/firefoxprofil-automatisiert-ubertragen HTTP Public Key Pinning https://blog.mdosch.de/2017/02/09/http-public-key-pinning/ <p>Heute kam ich endlich mal dazu <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Public_Key_Pinning">HTTP Public Key Pinning</a> (<em>HPKP</em>) einzurichten. Eine Technik, die <a href="https://de.wikipedia.org/wiki/Man-in-the-Middle-Angriff">Man-In-The-Middle-Angriffe</a> verhindern soll. Damit schneide ich in den gängigen Sicherheits- und Verschlüsselungstests überall noch ein bisschen besser ab.</p> <p><a href="https://reraise.eu/2016/06/30/let-s-encrypt-hpkp-in-der-praxis-einsetzen-best-practice">Hier</a> habe ich eine hilfreiche Anleitung zur Einrichtung von <em>HPKP</em> bei Verwendung von <a href="https://letsencrypt.org/">Let's Encrypt</a> gefunden. </p> <p>Die Einrichtung ist in dem Blog ganz gut beschrieben, weshalb ich hier nicht näher darauf eingehe. Die Hashes von den <em>Let's Encrypt</em> Zertifikaten findet man <a href="https://community.letsencrypt.org/t/official-hpkp-support-from-lets-encrypt/23753">hier</a>.</p> Thu, 09 Feb 2017 18:58:00 GMT tag:blog.mdosch.de,2017-02-09:/2017/02/09/http-public-key-pinning Netflix und der Firefox unter Linux https://blog.mdosch.de/2017/02/03/netflix-und-der-firefox-unter-linux/ <p>Seit Version 49 <a href="https://www.soeren-hentzschel.at/firefox/firefox-49-netflix-ohne-silverlight-nun-auch-fuer-linux-nutzer/">erfüllt</a> der Firefox sämtliche Anforderungen um Netflix auch unter Linux nutzen zu können. Mittlerweile nutze ich unter Debian Testing Firefox 51 (aus unstable) und ich werde immer noch per Browserweiche auf eine <a href="https://help.netflix.com/de/node/23742">Seite</a> weitergeleitet, die mir erzählt, dass ich die Voraussetzungen nicht erfülle und auflistet welche Kombinationen funktionieren.</p> <p>Die Kombination <em>Firefox &gt;49 / Linux</em> funktioniert aber. Es gibt technisch keine Probleme, man kann Netflix nämlich auch unter Linux mit dem Firefox nutzen wenn man den Browserstring folgendermaßen manipuliert: <!-- more --></p> <div class="highlight"><pre><span></span><span class="nt">Linux</span> <span class="o">/</span> <span class="nt">Chrome</span> <span class="nt">53</span><span class="o">:</span> <span class="nt">Mozilla</span><span class="o">/</span><span class="nt">5</span><span class="p">.</span><span class="nc">0</span> <span class="o">(</span><span class="nt">X11</span><span class="o">;</span> <span class="nt">Ubuntu</span><span class="o">;</span> <span class="nt">Linux</span> <span class="nt">x86_64</span><span class="o">)</span> <span class="nt">AppleWebKit</span><span class="o">/</span><span class="nt">535</span><span class="p">.</span><span class="nc">11</span> <span class="o">(</span><span class="nt">KHTML</span><span class="o">,</span> <span class="nt">like</span> <span class="nt">Gecko</span><span class="o">)</span> <span class="nt">Chrome</span><span class="o">/</span><span class="nt">53</span><span class="p">.</span><span class="nc">0</span><span class="p">.</span><span class="nc">2785</span><span class="p">.</span><span class="nc">34</span> <span class="nt">Safari</span><span class="o">/</span><span class="nt">537</span><span class="p">.</span><span class="nc">36</span> </pre></div> <p>Da sich nichts zu bessern scheint habe ich mich mal an den Support-Chat gewandt und ein freundlicher Mitarbeiter (oder ein Chat-Bot, aufgrund der sehr generischen Aussagen bin ich mir da nicht so sicher) nahm sich meiner an.</p> <p>Es kamen lustige Aussagen, dass Netflix offiziell kein Linux unterstützt, da dies aufgrund der offenen <del>Architektur</del> Struktur schwierig sei (?!) <a href="https://blog.mdosch.de/2017/02/03/netflix-und-der-firefox-unter-linux/#1">[1]</a>, dass man aber keine speziellen Behandlungen für Linux-Nutzer hinterlegt hätte usw. Die letzte Aussage ist ein Witz wenn ich daran denke, dass Netflix funktioniert sobald ich den Browserstring manipuliere, aber wenn ich dies nicht tue auf eine andere Seite umleitet. Eine solche Browserweiche ist doch genau das, was Netflix laut Aussage dieses Support-Mitarbeiters (Chatbots?) nicht tut.</p> <p>Ich habe versucht das Dilemma zu erklären, habe als Beispiel auch oben genannten Browserstring in den Chat kopiert und erklärt, dass es damit auch im Firefox funktioniert und Netflix also eine Browserweiche eingebaut haben muss, die sie doch bitte entfernen sollen. Darauf kam eine Erklärung über die Probleme Linux zu unterstützen, die man wohlwollend noch als wirr bezeichnen kann. <a href="https://blog.mdosch.de/2017/02/03/netflix-und-der-firefox-unter-linux/#2">[2]</a></p> <p>Immerhin wurde mir auf meine Bitte die genannten Beschreibungen und technischen Details doch bitte an eine technische Abteilung weiterzuleiten, die vermutlich versteht worum es geht positiv beantwortet. Hoffentlich passiert dies wirklich und diese unnötige Beschränkung auf Google Chrome oder nervige Manipulation des Browserstrings sind bald passé. </p> <h5>Update</h5> <p>Wenige Minuten nach Erstellung dieses Blogposts trudelt auch das Transkript per Email ein. Hier zwei nette Auszüge:</p> <p id="1">[1]</p> <blockquote> <p>[...] Wir blockieren Streaming auf Linux-Computern nicht aktiv, aber wir können nicht dafür garantieren, dass es zuverlässig funktioniert.Aufgrund der offenen Struktur von Linux haben wir keine Lösungen für Streaming-Probleme, die auf diesem Betriebssystem auftreten. [...]</p> </blockquote> <p id="2">[2]</p> <blockquote> <p>Netflix hat an sich spezielle Wege, um an sein Ziel zu kommen. Diese Wege werden immer gegangen, um den Kunden die Chance zu geben Netflix zu schauen. Bei Linux ist das aber so, dass die Wege nicht immer gleich sind. Somit sammeln sich im Hintergrund die Daten an. Sobald Linux dann aber plötzlich einen anderen Weg geht, kann Netflix die Daten nicht mehr abrufen bzw. wiedergeben, die es benötigt. Das ist der Grund warum das auf dem Firefox an sich nicht möglich ist.</p> </blockquote> Fri, 03 Feb 2017 15:56:00 GMT tag:blog.mdosch.de,2017-02-03:/2017/02/03/netflix-und-der-firefox-unter-linux fgallery: Schlichte, hübsche Fotogalerien https://blog.mdosch.de/2016/12/14/fgallery-schlichte-huebsche-fotogalerien/ <p>Ich habe gerade mein <a href="http://de.piwigo.org/">Piwigo</a>, das bisher meine <a href="https://blog.mdosch.de/2013/11/13/neu-pics-mdosch-de/">Bildergalerien</a> erzeugt hat, in Rente geschickt. Stattdessen erzeuge ich jetzt statische Bildergalerien mit <a href="https://www.thregr.org/~wavexx/software/fgallery/">fgallery</a>.</p> <p><em>Fgallery</em> steht unter der <em>GPLv2+</em> und ist ab <em>Stretch</em> in <em>Debian</em> <a href="https://packages.debian.org/stretch/fgallery">verfügbar</a>. Mit <em>fgallery</em> kann man schlichte aber hübsche Fotogalerien in HTML/JavaScript generieren lassen. <!-- more --> Meiner Meinung nach sehen diese simplen Galerien gerade wegen ihrer Einfachkeit bzw. Reduktion auf das wesentliche , die Bilder, toll aus. Download-/Viewzähler, Bewertungen etc. benötige ich nicht unbedingt weshalb eine statische Galerie für mich auch ausreichend ist und auch Vorteile mit sich bringt.</p> <p>Da ich <em>Piwigo</em> selten genutzt habe kam es vor, dass ich von einem Update längere Zeit nichts mitbekam und dies erst relativ spät ausgeführt habe. Das kann natürlich ein Sicherheitsrisiko bedeuten, das statische Seiten nicht mit sich bringen.</p> <p>Das einzige was ich an <em>fgallery</em> etwas vermisse ist die Unterstützung für mehrere Galerien, aber das habe ich umgangen indem ich die Galerien einfach einzeln anlege und in Ermangelung einer Übersichtsseite einfach <a href="https://pics.mdosch.de">pics.mdosch.de</a> auf den entsprechenden tag im blog umgeleitet habe.</p> Wed, 14 Dec 2016 19:46:00 GMT tag:blog.mdosch.de,2016-12-14:/2016/12/14/fgallery-schlichte-huebsche-fotogalerien Quickstart firejail https://blog.mdosch.de/2016/12/02/quickstart-firejail/ <p>Ich hatte schon einmal <a href="https://firejail.wordpress.com/">firejail</a>, ein Programm um Anwendungen in <a href="http://www.itwissen.info/definition/lexikon/Sandbox.html">Sandboxes</a> vom restlichen System abzuschotten, installiert und damit herumexperimentiert. Aber aus Gründen, an die ich mich nicht mehr erinnere, habe ich es nie wirklich in mein System integriert. </p> <p>In letzter Zeit ist mir <em>firejail</em> wieder durch Blogeinträge oder <a href="https://www.kuketz-blog.de/firejail-linux-haerten-teil4/">diesen</a> Teil einer interessanten Artikelserie ins Gedächtnis gerufen worden und ich werde es nun für so viele Programme wie möglich nutzen. <!-- more --></p> <h5>Installation</h5> <p>Unter Debian ist <em>firejail</em> ab <em>Stretch</em> enthalten, bzw. für <em>Jessie</em> in den <a href="https://backports.debian.org/">Backports</a> verfügbar. Man installiert es denkbar einfach:</p> <div class="highlight"><pre><span></span># apt install firejail </pre></div> <h5>Einrichtung und Benutzung</h5> <p>Für viele Programme sind schon Profile unter <code>/etc/firejail</code> vorhanden und man kann diese einfach nutzen, indem man die Anwendung per <code>firejail $PROGRAMMNAME</code> aufruft. Per <code>firecfg</code> kann man sich für installierte Programme, für die ein Profil vorhanden ist, folgendermaßen automatisch Symlinks nach <code>/usr/local/bin/</code> anlegen lassen:</p> <div class="highlight"><pre><span></span># firecfg </pre></div> <p>Dadurch genügt es nun das Programm in einem Terminal oder per <em>Alt+F2</em> mit dem Programmnamen ohne vorangestelltes <code>firejail</code> aufzurufen.</p> <p>Mit folgendem Befehl kann man sich anzeigen lassen, welche Symlinks zu <em>firejail</em> von <em>firecfg</em> angelegt wurden:</p> <div class="highlight"><pre><span></span>$ firecfg --list </pre></div> <p>Da viele Programmstarter (.desktop-Dateien) unter <code>/usr/local/share/applications/</code> den kompletten Pfad zum binary enthalten funktionieren die Verknüpfungen aus den Menüs der Desktopumgebungen für diese Programme nicht mit <em>firejail</em>. Das lässt sich ebenfalls automatisch mit <em>firecfg</em> beheben:</p> <div class="highlight"><pre><span></span>$ firecfg --fix </pre></div> <p>Dann scannt firecfg die .desktop-Dateien unter <code>/usr/local/share/applications/</code> nach vollständigen Pfadangaben bei <code>Exec=</code> in den Startern von unterstützten Programmen, kopiert diese nach <code>~/.local/share/applications/</code> und trägt dort statt dem kompletten Pfad nur den Namen des binary ein. Nach anschließendem Aus- und Einloggen (bzw. Ausführen von <code>r</code> mittels <em>Alt+F2</em> bei Gnome3) werden diese Anwendungen nun automatisch in einer Sandbox geöffnet.</p> <p>Man kann sich anzeigen lassen welche Programme gerade von <em>firejail</em> in einer Sandbox ausgeführt werden:</p> <div class="highlight"><pre><span></span>$ firejail --list </pre></div> <p>Oder man lässt sich auch sämtliche Subprozesse mit anzeigen:</p> <div class="highlight"><pre><span></span>$ firejail --tree </pre></div> <h5>Eigene Profile anlegen</h5> <p>Möchte man ein Profil abändern erstellt man den Ordner <code>~/.config/firejail/</code> und kopiert das entsprechende Profil von <code>/etc/firejail/</code> in den erstellten Ordner <code>~/.config/firejail/</code>. Man kann die Profile natürlich auch global in <code>/etc/firejail/</code> editieren, aber die Änderungen könnten von Updates überschrieben werden.</p> <p>Möchte man eigene Profile für Programme, für die kein Profil mitgeliefert wird, anlegen macht man dies am Besten unter <code>~/.config/firejail/$BINARYNAME.profile</code>. Es bietet sich an ein neues Profil auf der Basis von <code>/etc/firejail/default.profile</code> aufzubauen.</p> <p>Auf die Konfiguration von Profilen werde ich hier (noch?) nicht eingehen, da ich auch noch in der Einarbeitungsphase stecke. Deshalb gibt es hier auch "nur" einen Quickstart-Guide. <code>firecfg --fix</code> wird leider in den Blogbeiträgen, die ich bisher zum Theme gelesen habe, nicht erwähnt. Dummerweise habe ich es erst in der manpage gefunden nachdem ich das schon händisch erledigt hatte. 😄</p> <h5>Profile testen [Update 2017-02-25]</h5> <p>Mit der Option <code>--audit</code> lassen sich Profile auf mögliche Sicherheitslecks untersuchen. Ein einfacher Aufruf ohne weitere Parameter prüft das Defaultprofil:</p> <div class="highlight"><pre><span></span>$ firejail --audit </pre></div> <p>Die vorhanden Profile lassen sich prüfen indem man einfach den Programmnamen übergibt:</p> <div class="highlight"><pre><span></span>$ firejail --audit firefox </pre></div> <p>Mögliche Sicherheitslöcher werden von firejail dann folgendermaßen berichtet:</p> <div class="highlight"><pre><span></span><span class="n">UGLY</span><span class="o">:</span> <span class="n">I</span> <span class="n">can</span> <span class="n">access</span> <span class="n">files</span> <span class="k">in</span> <span class="sr">/home/martin/.mozilla directory. Use &quot;firejail --blacklist=/home/martin/</span><span class="o">.</span><span class="na">mozilla</span><span class="err">&quot;</span> <span class="n">to</span> <span class="n">block</span> <span class="n">it</span><span class="o">.</span> </pre></div> <p>In dem fall ist es natürlich ok, dass <em>firefox</em> auf <code>~/.mozilla</code> zugreifen darf. Findet man aber Zugriffe auf Ordner, die man global unterbinden möchte legt man eine Datei <code>/etc/firejail/disable-common.local</code> an und fügt dort einen blacklist Eintrag ein:</p> <div class="highlight"><pre><span></span># Lokale firejail blacklist blacklist <span class="cp">${</span><span class="n">HOME</span><span class="cp">}</span>/.gnupg blacklist <span class="cp">${</span><span class="n">HOME</span><span class="cp">}</span>/.mozilla blacklist <span class="cp">${</span><span class="n">HOME</span><span class="cp">}</span>/.thunderbird </pre></div> <p>Trotzdem sollte man die Programme die man mit firejail in den Berechtigungen einschränkt auch noch einzeln einem Audit unterziehen, da globale Einstellungen in den einzelnen Profilen wieder aufgehoben werden können.</p> <h5>Troubleshooting</h5> <h6>Gnome-extensions AddOn im Firefox [Update 2016-12-03]</h6> <p>Heute fiel mir auf, dass ich keine Gnome-extensions mehr im Firefox installieren konnte. Ich konnte es lösen indem ich folgende Zeilen dem <code>firefox.profile</code> hinzugefügt habe:</p> <div class="highlight"><pre><span></span>noblacklist ~/.local/share/gnome-shell/extensions/ whitelist ~/.local/share/gnome-shell/extensions/ </pre></div> <p>Das komplette Profil sieht nun so aus:</p> <div class="highlight"><pre><span></span># Firejail profile for Mozilla Firefox (Iceweasel in Debian) noblacklist ~/.mozilla noblacklist ~/.cache/mozilla noblacklist ~/.local/share/gnome-shell/extensions/ include /etc/firejail/disable-common.inc include /etc/firejail/disable-programs.inc include /etc/firejail/disable-devel.inc caps.drop all netfilter nonewprivs noroot protocol unix,inet,inet6,netlink seccomp tracelog whitelist <span class="cp">${</span><span class="n">DOWNLOADS</span><span class="cp">}</span> mkdir ~/.mozilla whitelist ~/.mozilla mkdir ~/.cache/mozilla/firefox whitelist ~/.cache/mozilla/firefox whitelist ~/dwhelper whitelist ~/.zotero whitelist ~/.vimperatorrc whitelist ~/.vimperator whitelist ~/.pentadactylrc whitelist ~/.pentadactyl whitelist ~/.keysnail.js whitelist ~/.config/gnome-mplayer whitelist ~/.cache/gnome-mplayer/plugin whitelist ~/.pki # Gnome-Shell AddOn whitelist ~/.local/share/gnome-shell/extensions/ # lastpass, keepassx whitelist ~/.keepassx whitelist ~/.config/keepassx whitelist ~/keepassx.kdbx whitelist ~/.lastpass whitelist ~/.config/lastpass #silverlight whitelist ~/.wine-pipelight whitelist ~/.wine-pipelight64 whitelist ~/.config/pipelight-widevine whitelist ~/.config/pipelight-silverlight5.1 include /etc/firejail/whitelist-common.inc # experimental features #private-etc passwd,group,hostname,hosts,localtime,nsswitch.conf,resolv.conf,gtk-2.0,pango,fonts,iceweasel,firefox,adobe,mime.types,mailcap,asound.conf,pulse </pre></div> Fri, 02 Dec 2016 17:24:00 GMT tag:blog.mdosch.de,2016-12-02:/2016/12/02/quickstart-firejail Der schnellste Live-Ticker für Eishockey-Fans https://blog.mdosch.de/2016/11/23/der-schnellste-live-ticker-fuer-eishockey-fans/ <p>Ich verfolge leidenschaftlich Eishockey und wenn ich gerade zu Hause bin während meine Mannschaft ein Auswärtsspiel bestreitet verfolge ich dieses gerne indem ich die Übertragung schaue. Leider wird nur ein ausgewähltes Spiel pro Woche im Free-TV übertragen und ich möchte mir das Telekom-Abo nicht zulegen.<!-- more -->¹</p> <p>Wird ein Spiel nicht im Free-TV übertragen habe ich bisher den Sport1 Live-Ticker aufgerufen und im Hintergrund dem Bericht von <a href="http://www.radio-oberwiesenfeld.de/">Radio Oberwiesenfeld</a> gelauscht. Das war aber häufig ärgerlich, da der Liveticker von Sport1 extrem langsam ist und die Qualität der Berichterstattung des Sport1-Tickers auch stark zu wünschen übrig ließ.</p> <p>Mittlerweile habe ich den Live-Ticker von <a href="http://www.flashscore.de/eishockey/">flashscore</a> als bessere Alternative schätzen gelernt. Der Live-Ticker ist schnell, extrem schnell. Teilweise kam es schon vor, dass ich im Live-Ticker bereits von einem Tor erfahren habe, bevor ich es im Webradio hörte. Dazu gibt es noch die Live-Tabelle, die genau so hochaktuell den Tabellenstand entsprechend der aktuellen Zwischenstände widergibt. Fehlerhafte Berichterstattung wie bei Sport1 gibt es auch nicht, da es bei flashscore einfach die aktuelle Statistik und keine Prosa zu sehen gibt. Aber dafür höre ich ja <em>Radio Oberwiesenfeld</em>. ;-)</p> <p><a href="https://files.mdosch.de/2016-11/flashscore_icehockey.png"><img alt="Flashscore Icehockey" src="https://files.mdosch.de/2016-11/flashscore_icehockey_sm.png"/></a></p> <p>Wer aktuelle Statistiken sehen möchte und sich an Werbung für Wettportale nicht stört, dem möchte ich ausdrücklich <em>flashscore</em> empfehlen.</p> <p>¹ Es lohnt sich für mich einfach nicht, da ich zu wenige Spiele schauen würde. Heimspiele schaue ich im Stadion und ich werde Freitag Abende nicht daheim vorm Fernseher verbringen wenn ein Ausswärtsspiel ansteht. Selbst die Spiele am Sonntag Nachmittag oder Abend würde ich u.U. nicht verfolgen, da ich evtl. auf Dienstreise bin und es aufgrund der Zeitverschiebung nicht möglich ist. Daher vermisse ich bei der Telekom zusätzlich zum Abo-Modell die Möglichkeit einzelne Spiele für einen fairen Preis (3€ fände ich angemessen) zu kaufen. So entgehen der Telekom die Gelegenheits-Zuschauer, wie ich einer bin (bezogen auf die übertragen, ins Stadion gehe ich bei jeder Gelegenheit).</p> Wed, 23 Nov 2016 19:00:00 GMT tag:blog.mdosch.de,2016-11-23:/2016/11/23/der-schnellste-live-ticker-fuer-eishockey-fans Mal wieder auf der Suche nach einer Blogsoftware https://blog.mdosch.de/2016/10/17/mal-wieder-auf-der-suche-nach-einer-blogsoftware/ <p>Da der, von mir verwendete, Blog-Compiler <a href="https://posativ.org/acrylamid/"><em>Acrylamid</em></a> leider seit kurzem <a href="https://github.com/posativ/acrylamid/commit/c53c85088d9cd79335f69ad74fb647468c707afd">nicht mehr weiterentwickelt</a> wird werde ich irgendwann auf eine neue Blog-Software umsteigen müssen. Natürlich funktioniert Acrylamid auch weiterhin und Sicherheitslücken sind bei einem statischen Blog-Compiler nicht wirklich ein Thema aber wer weiß ob Acrylamid nicht irgendwann inkompatibel zu seinen Abhängigkeiten wird. Um in diesem Fall nicht plötzlich vor Problemen zu stehen möchte ich mir schon vorher einen neuen Blog-Compiler besorgen, testen und wenn alles soweit klappt umsteigen.</p> <p>Ich hatte hier schon mal einen <a href="https://blog.mdosch.de/2014/01/16/wordpress-alternativen/">ähnlichen Beitrag</a> geschrieben als ich von Wordpress umsteigen wollte. Nun ist leider die Zeit gekommen um erneut umzusteigen, auch wenn mir Acrylamid sehr gut gefallen hat. <!-- more --></p> <p>Was ich derzeit von einer Blog-Software erwarte:</p> <ul> <li>Statischer Blog, da ich nicht von überall und jedem fremden Rechner bloggen muss und da ich mittlerweile die <a href="https://blog.mdosch.de/2014/09/07/blog-mdosch-de-jetzt-statisch/">Vorzüge</a> eines statischen Blogs zu schätzen weiß (must have)</li> <li>Permalink-Struktur muss erhalten bleiben, d.h. die Struktur <code>https://blog.mdosch.de/$JAHR/$MONAT/$TAG/$TITEL</code> muss konfigurierbar sein (must have)</li> <li>OpenSource (must have)</li> <li>Beiträge in <a href="http://markdown-here.com/">Markdown</a> (must have)</li> <li>In den Debian-Repos vorhanden (nice-to-have)</li> <li>Automatische Silbentrennung für Zeilenumbrüche (nice-to-have)</li> </ul> <p>Bevor ich auf Acrylamid umgestiegen bin habe ich das alles recht gut mit <a href="https://jekyllrb.com/"><em>Jekyll</em></a> hinbekommen. Ich habe Jekyll dann nur verworfen weil mir Acrylamid besser gefallen hat. Ich denke, dass ich mir das Jekyll-Framework <a href="http://octopress.org/"><em>Octopress</em></a> näher ansehen werde.</p> <p>Wenn jemand einen tollen statischen Blog-Compiler kennt, der meine Anforderungen erfüllt wäre ich für Hinweise dankbar. Überraschenderweise sind einige Tests mit statischen Blog-Compilern daran gescheitert, dass ich nicht herausfinden konnte wie ich die Permalink-Struktur wie gewünscht einstelle. Ich bin fast sicher, dass so etwas nicht hartkodiert sondern variabel programmiert ist, aber in den Beispiel-Configs und der Dokumentation habe ich meist nichts dazu gefunden.</p> <h5>[2016-10-17]</h5> <p>Da die automatische Silbentrennung für Zeilenumbrüche ein nettes Feature von Acrylamid ist habe ich dies in der Liste nachgetragen.</p> <h5>[2016-10-18]</h5> <p>Aufgrund der Kommentare stehen derzeit folgende Blog-Compiler auf meiner Liste um sie bei Gelegenheit näher zu betrachten:</p> <ul> <li><a href="https://gohugo.io/">Hugo</a></li> <li><a href="http://blogcpp.org/">BlogC++</a></li> <li><a href="http://blog.getpelican.com/">Pelican</a></li> <li><a href="https://getnikola.com/">Nikola</a></li> </ul> <p>Vielen Dank für die Hinweise.</p> Mon, 17 Oct 2016 19:51:00 GMT tag:blog.mdosch.de,2016-10-17:/2016/10/17/mal-wieder-auf-der-suche-nach-einer-blogsoftware HTTPS: Wechsel von WoSign zu Let's Encrypt https://blog.mdosch.de/2016/10/16/https-wechsel-von-wosign-zu-let-s-encrypt/ <p>Bisher habe ich https mit einem Zertifikat von <em>WoSign</em> angeboten, aber aufgrund <a href="https://wiki.mozilla.org/CA:WoSign_Issues">einiger Probleme</a> bei WoSign sieht es aus als würde <em>Mozilla</em> demnächst deren Zertifikate <a href="http://www.golem.de/news/wosign-und-startcom-mozilla-macht-ernst-mit-dem-rauswurf-1610-123829.html">rauswerfen</a>.</p> <p>Da ich bei WoSign alle 3 Jahre neue Zertifikate erstellen und einpflegen muss wäre ich über kurz oder lang eh auf <a href="https://letsencrypt.org/"><em>Let's Encrypt</em></a> umgestiegen, da sich das bei <em>Uberspace</em> schön automatisieren lässt. Die Einrichtung ging mit Hilfe des <a href="https://wiki.uberspace.de/webserver:https#let_s-encrypt-zertifikate">Wiki</a> einwandfrei und die Bewertung meiner Transportverschlüsselung bleibt bei den gängigen Testportalen gleich hoch.</p> <p>Jetzt heißt es nur abwarten ob die Automatisierung auch funktioniert sonst kann man, <a href="https://de.wikipedia.org/wiki/HTTP_Strict_Transport_Security">HSTS</a> sei Dank, nach Ablauf der Gültigkeit der Zertifikate meine Seiten nicht mehr aufrufen.</p> Sun, 16 Oct 2016 13:54:00 GMT tag:blog.mdosch.de,2016-10-16:/2016/10/16/https-wechsel-von-wosign-zu-let-s-encrypt Beiträge jetzt per E-Mail teilbar https://blog.mdosch.de/2016/10/15/beitraege-jetzt-per-e-mail-teilbar/ <p>Ich hatte in meinem Blog ja zeitweise Share-Buttons für soziale Netzwerke über die <a href="https://blog.mdosch.de/2014/09/07/2-klicks-fuer-mehr-datenschutz/">2-Klick-Variante</a> von <a href="https://heise.de">heise</a> eingebaut. Diese habe ich dann irgendwann durch <a href="https://blog.mdosch.de/2014/09/20/social-media-jetzt-als-einfache-textlinks/">einfache Textlinks</a> ersetzt. Warum? Weil das mit einem Klick funktioniert, auch keine externen Scripte nachlädt und einfach ohne irgendwelches Scripting funktioniert. <a href="https://de.wikipedia.org/wiki/KISS-Prinzip">KISS</a>! <!-- more --></p> <p>Heute fiel mir auf, dass der Klassiker, nämlich die E-Mail, fehlt. Zwar bietet der Firefox auch eine Funktion zum Teilen (Datei -&gt; Link per E-Mail senden...) an und ich gehe davon aus, dass die anderen gängigen Browser auch so eine Funktion anbieten, aber es ist doch deutlich komfortabler wenn man dies einfach durch einen Link unterhalb des Beitrags tun kann.</p> <p>Es gibt <a href="https://blog.kulturbanause.de/2012/01/e-mail-links-mailto-mit-betreff-kopie-cc-blindkopie-bcc-und-nachrichteninhalt/">diverse Möglichkeiten</a> E-Mail-Verlinkungen in HTML zu erstellen. Ich habe letztlich folgendes in das Template für Beiträge eingebaut:</p> <div class="highlight"><pre><span></span><span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">&quot;mailto:?subject=</span><span class="cp">{{</span> <span class="nv">entry.title</span> <span class="cp">}}</span><span class="s">&amp;body=</span><span class="cp">{{</span> <span class="nv">conf.www_root</span> <span class="o">+</span> <span class="nv">entry.permalink</span> <span class="cp">}}</span><span class="s">&quot;</span><span class="nt">&gt;</span>E-Mail<span class="nt">&lt;/a&gt;</span> </pre></div> <p>Ich verzichte also auf die E-Mail-Adresse, die direkt nach dem <code>mailto:</code> stehen sollte und gebe mit <code>subject=</code> einen Betreff und mit <code>&amp;body=</code> den Nachrichteninhalt mit. <code>{{ entry.title }}</code> und <code>{{ conf.www_root + entry.permalink }}</code> werden von meinem Blog-Compiler mit dem Titel und dem Link des Beitrags ersetzt.</p> <p>Bei einem ersten Test funktioniert dieses Vorgehen bei mir einwandfrei. Thunderbird öffnet eine neue E-mail und der Cursor ist sogar im Empfängerfeld positioniert. Auch auf meinem Mobiltelefon gibt es keine Probleme, der <a href="https://de.wikipedia.org/wiki/Jolla#Sailfish_OS">Sailfish</a>-Browser öffnet den Sailfish-Mail-Client und der Cursor ist ebenfalls im Empfängerfeld. Ich hoffe dies funktioniert bei anderen E-Mail-Programmen ähnlich gut. Wenn nicht bitte ich um Rückmeldung, da ich die Funktion wieder entfernen werde, falls das Gros der Programme mit diesem Link nicht klar kommt. Schließlich möchte ich niemanden frusten.</p> <p>Der gesamte Bereich um Beiträge über <em>Facebook</em>, <em>Twitter</em>, <em>Google</em> oder <em>E-Mail</em> zu teilen sieht so aus:</p> <div class="highlight"><pre><span></span><span class="nt">&lt;p&gt;</span>Teilen: <span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">&quot;https://www.facebook.com/sharer.php?u=</span><span class="cp">{{</span> <span class="nv">conf.www_root</span> <span class="o">+</span> <span class="nv">entry.permalink</span> <span class="cp">}}</span><span class="s">&quot;</span><span class="nt">&gt;</span>FB<span class="nt">&lt;/a&gt;</span> | <span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">&quot;https://plus.google.com/share?url=</span><span class="cp">{{</span> <span class="nv">conf.www_root</span> <span class="o">+</span> <span class="nv">entry.permalink</span> <span class="cp">}}</span><span class="s">&quot;</span><span class="nt">&gt;</span>G+<span class="nt">&lt;/a&gt;</span> | <span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">&quot;https://twitter.com/intent/tweet?text=</span><span class="cp">{{</span> <span class="nv">entry.title</span> <span class="cp">}}</span><span class="s">&amp;url=</span><span class="cp">{{</span> <span class="nv">conf.www_root</span> <span class="o">+</span> <span class="nv">entry.permalink</span> <span class="cp">}}</span><span class="s">&quot;</span><span class="nt">&gt;</span>TW<span class="nt">&lt;/a&gt;</span> | <span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">&quot;mailto:?subject=</span><span class="cp">{{</span> <span class="nv">entry.title</span> <span class="cp">}}</span><span class="s">&amp;body=</span><span class="cp">{{</span> <span class="nv">conf.www_root</span> <span class="o">+</span> <span class="nv">entry.permalink</span> <span class="cp">}}</span><span class="s">&quot;</span><span class="nt">&gt;</span>E-Mail<span class="nt">&lt;/a&gt;&lt;/p&gt;</span> </pre></div> Sat, 15 Oct 2016 20:48:00 GMT tag:blog.mdosch.de,2016-10-15:/2016/10/15/beitraege-jetzt-per-e-mail-teilbar Erste Schritte mit YaCy https://blog.mdosch.de/2016/10/15/erste-schritte-mit-yacy/ <p>Angeregt durch diesen <a href="http://www.golem.de/news/howto-goodbye-google-suchmaschinen-selber-hosten-1610-123482.html">Artikel</a> und diesen <a href="http://tmowizard.square7.ch/wordpress/2016/10/15/yacy-deusu-und-co-suchmaschinen-google-ist-nicht-alles/">Blogpost</a> habe ich etwas mit <a href="http://yacy.net/de/index.html">YaCy</a> gespielt.</p> <p>Was ist <em>YaCy</em>? Ich zitiere die YaCy-<a href="http://yacy.net/de/index.html">Homepage</a>:</p> <blockquote> <p>YaCy ist eine Suchmaschine bei dem die Nutzer selbst zum Betreiber werden. Die freie Suchmaschinensoftware YaCy läuft nicht auf einem Server im Internet, sondern auf Ihrem eigenen Rechner. So können Sie Ihr persönliches Suchportal errichten, bei dem nur Sie bestimmen was die Suchmaschine im Suchindex hat. <!-- more --></p> <p>Die Besonderheit von YaCy ist aber, dass es sich mit den anderen Benutzern, die ebenfalls eine YaCy Suchmaschine betreiben, verbinden kann. So entsteht ein vollständig dezentrales Peer-to-Peer Suchmaschinennetz welches mit der Anzahl der Nutzer skaliert. Diese, von der Gemeinschaft der Nutzer betriebene Suchmaschine ist nicht zensierbar und speichert auch kein Nutzerverhalten an zentraler Stelle. Das Erreichen von Informationsfreiheit durch freie, dezentrale Suchsoftware ist auch ein Projektziel. </p> </blockquote> <p>Das klingt ja alles recht nett also habe ich YaCy mal schnell auf meinem alten Laptop, welches mittlerweile als Server für diverse Dienste genutzt wird, installiert. Mein Server läuft mit Debian <a href="https://www.debian.org/releases/stable/">Stable</a> (derzeit <a href="https://www.debian.org/releases/jessie/releasenotes">Jessie</a>) und die Installation war nach dieser <a href="http://www.yacy-websuche.de/wiki/index.php/De:DebianInstall">Anleitung</a> kein Problem.</p> <p>Auch die Einrichtung war mit Hilfe des <a href="http://www.yacy-websuche.de/wiki/index.php/De:Start">Wiki</a> kein Problem.</p> <p>Lediglich zwei Sachen fielen mir beim Herumspielen bisher auf:</p> <ul> <li>Der Crawler konnte meinen eigenen Blog nicht indizieren</li> <li>Ich kann meine Installation derzeit nicht per https aufraufen (noch ungelöst)</li> </ul> <h5>Meine Webseite indizieren</h5> <p>Das erste Problem lag wohl daran, dass YaCy und meine Seite Probleme beim Schlüsselaustausch hatten: <code>scraper cannot load URL: java.io.IOException: Client can't execute: Could not generate DH keypair duration=187 for url</code>. Nach einiger Recherche fand ich <a href="http://stackoverflow.com/questions/6851461/java-why-does-ssl-handshake-give-could-not-generate-dh-keypair-exception">hier</a> eine für mich funktionierende Lösung:</p> <p>Ich musste in der Datei <code>/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/security/java.security</code> die Zeile</p> <div class="highlight"><pre><span></span>jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize &lt; 768 </pre></div> <p>folgendermaßen ändern:</p> <div class="highlight"><pre><span></span>jdk.tls.disabledAlgorithms=SSLv3, RC4, DHE, MD5withRSA, DH keySize &lt; 768 </pre></div> <p>Danach habe ich als <em>root</em> YaCy neu gestartet und konnte auch meinen Blog indizieren:</p> <div class="highlight"><pre><span></span>service yacy restart </pre></div> <p>Nebenwirkungen konnte ich bisher keine feststellen, kann ich aber natürlich auch nicht ausschließen. Ich persönlich vermute aber, dass diese veraltete Methode kaum noch eingesetzt wird.</p> <h5>HTTPS-Zugriff</h5> <p>Dieses Problem besteht derzeit noch, obwohl ich alles gemäß dem Wiki eingerichtet habe. Ich hoffe ich komme demnächst dazu hier etwas zu recherchieren und das Problem zu lösen. Laut YaCy ist https aktiviert, aber mit https://192.168.178.22:8443 kann keine Verbindung aufgebaut werden. Auch ein Portscan mit <a href="https://wiki.ubuntuusers.de/nmap/">nmap</a> zeigte nur die Ports der anderen installierten Dienste.</p> <p>Falls jemand ein ähnliches Problem hatte und dies gelöst hat oder einen möglichen Ansatz weiß würde ich mich über Rückmeldungen freuen.</p> Sat, 15 Oct 2016 18:44:00 GMT tag:blog.mdosch.de,2016-10-15:/2016/10/15/erste-schritte-mit-yacy Code-Schnippsel: Backup über SSH mit rsync (2) https://blog.mdosch.de/2016/09/24/code-schnippsel-backup-ueber-ssh-mit-rsync-2/ <p>Seit meinem letzten <a href="https://blog.mdosch.de/2014/09/29/code-schnippsel-backup-ueber-ssh-mit-rsync/">Beitrag</a> über mein Backup-Script ist schon wieder eine Weile vergangen und ich möchte hier mal wieder den aktuellen Stand protokollieren. <!-- more --></p> <table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="ch">#! /bin/bash</span> <span class="c1">#### Diese Variablen bitte auf die eigenen Bedürfnisse anpassen</span> <span class="nv">BACKUP_PFADE</span><span class="o">=</span><span class="s2">&quot;/home/martin /etc /root /usr/local&quot;</span> <span class="c1"># Pfade die gesichert werden sollen</span> <span class="nv">ZIELPFAD</span><span class="o">=</span>/mnt/backup <span class="c1"># Pfad auf dem Backupserver (ohne abschließenden /)</span> <span class="nv">ZIEL_EXT</span><span class="o">=</span><span class="nb">true</span> <span class="c1"># true = Wechseldatenträger, false = interner Speicher</span> <span class="nv">ANZAHL_TAGE</span><span class="o">=</span><span class="m">7</span> <span class="c1"># Tägliches Backup für x Tage</span> <span class="nv">BENUTZER</span><span class="o">=</span>martin <span class="c1"># Benutzername auf dem Backupserver</span> <span class="nv">SERVER</span><span class="o">=</span>backup <span class="c1"># IP-Adresse oder Hostname des Backupservers</span> <span class="nv">PORT</span><span class="o">=</span><span class="m">1418</span> <span class="c1"># SSH-Port des Backupservers</span> <span class="nv">MAC</span><span class="o">=</span><span class="m">88</span>:ae:1d:31:cd:17 <span class="c1"># MAC-Adresse des Servers für WOL</span> <span class="nv">EXCLUDES</span><span class="o">=</span><span class="s2">&quot;--exclude .cache/ \</span> <span class="s2">--exclude cache/ --exclude Cache/&quot;</span> <span class="c1"># TODO: Elegantere Lösung finden </span> <span class="nv">HISTORY</span><span class="o">=</span>/root/.backup_hist <span class="c1"># Protokoll-Datei</span> <span class="nv">LISTE</span><span class="o">=</span>/root/installed_packages.txt <span class="c1"># Speicherort für Liste der installierten Pakete</span> <span class="c1">#### Don&#39;t touch this; domdididom</span> <span class="c1">#### Ab hier bitte nichts anfassen, wenn du nicht sicher weißt was du tust</span> <span class="nv">MONAT</span><span class="o">=</span><span class="k">$(</span>date +%-m<span class="k">)</span> <span class="nv">VORMONAT</span><span class="o">=</span><span class="k">$(</span>expr <span class="nv">$MONAT</span> - <span class="m">1</span><span class="k">)</span> <span class="nv">HOST</span><span class="o">=</span><span class="k">$(</span>hostname<span class="k">)</span> <span class="c1"># Backup-Server bereit?</span> <span class="k">if</span> ! ping -c <span class="m">1</span> <span class="nv">$SERVER</span> &gt; /dev/null <span class="k">then</span> <span class="c1"># Backup-Server hochfahren</span> wakeonlan <span class="nv">$MAC</span> <span class="m">1</span>&gt;/dev/null sleep <span class="m">60</span> <span class="k">if</span> ! ping -c <span class="m">1</span> <span class="nv">$SERVER</span> &gt; /dev/null <span class="k">then</span> <span class="nb">echo</span> <span class="s2">&quot;Backup konnte nicht durchgeführt werden. Der Server war nicht erreichbar.&quot;</span> <span class="se">\</span> <span class="p">|</span> mail -s <span class="s1">&#39;Backup fehlgeschlagen!&#39;</span> <span class="k">$(</span>whoami<span class="k">)</span>@<span class="nv">$HOST</span> <span class="nb">exit</span> <span class="k">fi</span> <span class="k">fi</span> <span class="c1"># Falls Zieldatenträger Wechselplatte, diese einhängen</span> <span class="k">if</span> <span class="nv">$ZIEL_EXT</span> <span class="k">then</span> ssh -p <span class="nv">$PORT</span> <span class="nv">$BENUTZER</span><span class="se">\@</span><span class="nv">$SERVER</span> <span class="s2">&quot;sudo mount </span><span class="nv">$ZIELPFAD</span><span class="s2">&quot;</span> &gt;/dev/null <span class="c1"># Datei CURRENT zur Protokollierung der aktiven Backups existiert?</span> <span class="k">if</span> ! ssh -p <span class="nv">$PORT</span> <span class="nv">$BENUTZER</span><span class="se">\@</span><span class="nv">$SERVER</span> stat <span class="nv">$ZIELPFAD</span>/CURRENT <span class="se">\&gt;</span> /dev/null <span class="m">2</span><span class="se">\&gt;\&amp;</span><span class="m">1</span> <span class="k">then</span> ssh -p <span class="nv">$PORT</span> <span class="nv">$BENUTZER</span><span class="se">\@</span><span class="nv">$SERVER</span> <span class="s2">&quot;touch </span><span class="nv">$ZIELPFAD</span><span class="s2">/CURRENT &amp;&amp; echo &quot;</span><span class="m">0</span><span class="s2">&quot; &gt; </span><span class="nv">$ZIELPFAD</span><span class="s2">/CURRENT&quot;</span> <span class="k">fi</span> <span class="c1"># CURRENT auslesen und inkrementieren</span> <span class="nv">CURRENT</span><span class="o">=</span><span class="k">$(</span>ssh -p <span class="nv">$PORT</span> <span class="nv">$BENUTZER</span><span class="se">\@</span><span class="nv">$SERVER</span> <span class="s2">&quot;cat </span><span class="nv">$ZIELPFAD</span><span class="s2">/CURRENT&quot;</span><span class="k">)</span> <span class="nv">CURRENT</span><span class="o">=</span><span class="k">$(</span><span class="nb">echo</span> <span class="s2">&quot;</span><span class="nv">$CURRENT</span><span class="s2"> + 1&quot;</span> <span class="p">|</span> bc<span class="k">)</span> ssh -p <span class="nv">$PORT</span> <span class="nv">$BENUTZER</span><span class="se">\@</span><span class="nv">$SERVER</span> <span class="s2">&quot;echo </span><span class="nv">$CURRENT</span><span class="s2"> &gt; </span><span class="nv">$ZIELPFAD</span><span class="s2">/CURRENT&quot;</span> <span class="k">fi</span> <span class="c1"># Link 0 -&gt; 12 (für Link auf letztes Backup im Januar) existiert?</span> <span class="k">if</span> ! ssh -p <span class="nv">$PORT</span> <span class="nv">$BENUTZER</span><span class="se">\@</span><span class="nv">$SERVER</span> stat <span class="nv">$ZIELPFAD</span>/<span class="nv">$HOST</span>/0 <span class="se">\&gt;</span> /dev/null <span class="m">2</span><span class="se">\&gt;\&amp;</span><span class="m">1</span> <span class="k">then</span> ssh -p <span class="nv">$PORT</span> <span class="nv">$BENUTZER</span><span class="se">\@</span><span class="nv">$SERVER</span> <span class="s2">&quot;ln -s </span><span class="nv">$ZIELPFAD</span><span class="s2">/</span><span class="nv">$HOST</span><span class="s2">/12 </span><span class="nv">$ZIELPFAD</span><span class="s2">/</span><span class="nv">$HOST</span><span class="s2">/0&quot;</span> <span class="k">fi</span> <span class="c1"># Bei Problemen zu Testzwecken auskommentieren</span> <span class="c1"># ssh -v -p $PORT $BENUTZER@$SERVER /bin/true</span> <span class="c1"># Eine Liste der installierten Pakete erstellen</span> dpkg --get-selections &gt; <span class="nv">$LISTE</span> <span class="c1"># Backup per rsync</span> <span class="k">for</span> PFAD in <span class="nv">$BACKUP_PFADE</span> <span class="k">do</span> rsync -az --delete-excluded <span class="nv">$EXCLUDES</span> --rsync-path<span class="o">=</span><span class="s1">&#39;sudo rsync&#39;</span> --rsh<span class="o">=</span><span class="s2">&quot;ssh -p </span><span class="nv">$PORT</span><span class="s2">&quot;</span> <span class="se">\</span> --link-dest<span class="o">=</span>../<span class="nv">$VORMONAT</span> <span class="nv">$PFAD</span> <span class="nv">$BENUTZER</span>@<span class="nv">$SERVER</span>:<span class="nv">$ZIELPFAD</span>/<span class="nv">$HOST</span>/<span class="nv">$MONAT</span> <span class="k">done</span> <span class="c1"># Erstellen von Snapshots der letzten x Tage</span> ssh -p <span class="nv">$PORT</span> <span class="nv">$BENUTZER</span><span class="se">\@</span><span class="nv">$SERVER</span> <span class="s2">&quot;sudo rm -rf </span><span class="nv">$ZIELPFAD</span><span class="s2">/</span><span class="nv">$HOST</span><span class="s2">/daily.</span><span class="nv">$ANZAHL_TAGE</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="o">[</span> <span class="nv">$ANZAHL_TAGE</span> -gt <span class="m">1</span> <span class="o">]</span> <span class="k">then</span> <span class="k">for</span> <span class="o">((</span> <span class="nv">ANZAHL</span><span class="o">=</span><span class="nv">$ANZAHL_TAGE</span> <span class="p">;</span> ANZAHL &gt;<span class="o">=</span> <span class="m">2</span> <span class="p">;</span> ANZAHL-- <span class="o">))</span> <span class="k">do</span> ssh -p <span class="nv">$PORT</span> <span class="nv">$BENUTZER</span><span class="se">\@</span><span class="nv">$SERVER</span> <span class="se">\</span> <span class="s2">&quot;sudo mv </span><span class="nv">$ZIELPFAD</span><span class="s2">/</span><span class="nv">$HOST</span><span class="s2">/daily.</span><span class="k">$(</span>expr <span class="nv">$ANZAHL</span> - <span class="m">1</span><span class="k">)</span><span class="s2"> </span><span class="nv">$ZIELPFAD</span><span class="s2">/</span><span class="nv">$HOST</span><span class="s2">/daily.</span><span class="nv">$ANZAHL</span><span class="s2">&quot;</span> <span class="k">done</span> <span class="k">fi</span> <span class="k">if</span> <span class="o">[</span> ! <span class="nv">$ANZAHL_TAGE</span> -eq <span class="m">0</span> <span class="o">]</span> <span class="k">then</span> ssh -p <span class="nv">$PORT</span> <span class="nv">$BENUTZER</span><span class="se">\@</span><span class="nv">$SERVER</span> <span class="s2">&quot;sudo mv </span><span class="nv">$ZIELPFAD</span><span class="s2">/</span><span class="nv">$HOST</span><span class="s2">/daily.latest </span><span class="nv">$ZIELPFAD</span><span class="s2">/</span><span class="nv">$HOST</span><span class="s2">/daily.1&quot;</span> ssh -p <span class="nv">$PORT</span> <span class="nv">$BENUTZER</span><span class="se">\@</span><span class="nv">$SERVER</span> <span class="s2">&quot;sudo cp -al </span><span class="nv">$ZIELPFAD</span><span class="s2">/</span><span class="nv">$HOST</span><span class="s2">/</span><span class="nv">$MONAT</span><span class="s2"> </span><span class="nv">$ZIELPFAD</span><span class="s2">/</span><span class="nv">$HOST</span><span class="s2">/daily.latest&quot;</span> <span class="k">fi</span> <span class="c1"># Falls Zieldatenträger Wechselplatte, diese aushängen sofern kein weiteres Backup aktiv ist (Variable Current)</span> <span class="k">if</span> <span class="nv">$ZIEL_EXT</span> <span class="k">then</span> <span class="nv">CURRENT</span><span class="o">=</span><span class="k">$(</span>ssh -p <span class="nv">$PORT</span> <span class="nv">$BENUTZER</span><span class="se">\@</span><span class="nv">$SERVER</span> <span class="s2">&quot;cat </span><span class="nv">$ZIELPFAD</span><span class="s2">/CURRENT&quot;</span><span class="k">)</span> <span class="k">if</span> <span class="o">[</span> <span class="nv">$CURRENT</span> -eq <span class="m">1</span> <span class="o">]</span> <span class="k">then</span> ssh -p <span class="nv">$PORT</span> <span class="nv">$BENUTZER</span><span class="se">\@</span><span class="nv">$SERVER</span> <span class="s2">&quot;echo &quot;</span><span class="m">0</span><span class="s2">&quot; &gt; </span><span class="nv">$ZIELPFAD</span><span class="s2">/CURRENT&quot;</span> ssh -p <span class="nv">$PORT</span> <span class="nv">$BENUTZER</span><span class="se">\@</span><span class="nv">$SERVER</span> <span class="s2">&quot;sudo umount </span><span class="nv">$ZIELPFAD</span><span class="s2">&quot;</span> &gt;/dev/null <span class="k">else</span> <span class="nv">CURRENT</span><span class="o">=</span><span class="k">$(</span><span class="nb">echo</span> <span class="s2">&quot;</span><span class="nv">$CURRENT</span><span class="s2"> - 1&quot;</span> <span class="p">|</span> bc<span class="k">)</span> ssh -p <span class="nv">$PORT</span> <span class="nv">$BENUTZER</span><span class="se">\@</span><span class="nv">$SERVER</span> <span class="s2">&quot;echo &quot;</span><span class="nv">$CURRENT</span><span class="s2">&quot; &gt; </span><span class="nv">$ZIELPFAD</span><span class="s2">/CURRENT&quot;</span> <span class="k">fi</span> <span class="k">fi</span> <span class="c1"># Datum und Uhrzeit des Backups protokollieren</span> date &gt;&gt; <span class="nv">$HISTORY</span> </pre></div> </td></tr></table> <p>Das Script sorgt dafür, dass mein <em>home</em> <code>/home/martin</code>, sowie <code>/etc</code> und <code>/usr/local/bin</code> gesichert werden.</p> <p>Ich habe auch eine Rotation eingebaut, die mir erlaubt auf einen Snapshot der letzten 7 Sicherungen zuzugreifen und es werden Snapshots der letzten 11 Monate aufbewahrt.</p> <p>Durch Nutzung von <a href="https://wiki.ubuntuusers.de/ln/#Hardlinks">Hardlinks</a> reduziere ich den Speicherplatzverbauch auf ein Minimum.</p> <p>Das Script ist darauf ausgelegt den Backup-Server per <a href="https://wiki.ubuntuusers.de/Wake_on_LAN/">WOL</a> aufzuwecken, eine externe Festplatte zu mounten und das Backup durchzuführen. Das mag ein recht spezifisches Setup sein, aber vielleicht kann es ja mal jemand brauchen oder zumindest Teile davon für eigene Scripte recyclen.</p> <p>Dieses Script wird einmal täglich von <a href="https://de.wikipedia.org/wiki/Anacron">anachron</a> aufgerufen und sorgt dafür, dass ich mich nicht mehr bewusst um Backups kümmern muss.</p> <p>Angefangen hat das Script als einfaches <em>rsync</em>-Kommando das mein Home-Verzeichnis <code>/home/martin</code> per <em>SSH</em> auf eine USB-Festplatte auf meinem Server kopiert hat. Mit der Zeit habe ich aber immer mehr Verbesserungen vorgenommen und es ist eine recht gute Backup-Lösung geworden.</p> Sat, 24 Sep 2016 18:53:00 GMT tag:blog.mdosch.de,2016-09-24:/2016/09/24/code-schnippsel-backup-ueber-ssh-mit-rsync-2 Kurztipp: Eine bestimmte Stelle eines Youtube-Videos verlinken https://blog.mdosch.de/2016/09/17/kurztipp-eine-bestimmte-stelle-eines-youtube-videos-verlinken/ <p>In meinem <a href="https://blog.mdosch.de/2016/09/17/der-letzte-mond-vor-dem-beil/">letzten Beitrag</a> musste ich auf eine bestimmte Stelle eines Youtube-Videos verlinken, da die Band ihr komplettes Album als Video online gestellt hat und nicht die einzelnen Songs.</p> <p>Wie ich <a href="http://sebastian.thiele.me/blog/youtube-verlinken-auf-eine-bestimmte-stelle">hier</a> sehen konnte ist dies sogar denkbar einfach: Man hängt an die URL des Videos einfach <code>#t=$MINUTENm$SEKUNDENs</code> an.</p> <p>Im Beispiel meines verlinkten Beitrages heißt dies: Ich möche auf die Stelle bei 33 Minuten und 40 Sekunden im Video <a href="https://www.youtube.com/watch?v=YW5ARg-dEjE">https://www.youtube.com/watch?v=YW5ARg-dEjE</a> verlinken und erreiche dies per folgendem Link: <a href="https://www.youtube.com/watch?v=YW5ARg-dEjE#t=33m40s">https://www.youtube.com/watch?v=YW5ARg-dEjE#t=33m40s</a>.</p> Sat, 17 Sep 2016 17:46:00 GMT tag:blog.mdosch.de,2016-09-17:/2016/09/17/kurztipp-eine-bestimmte-stelle-eines-youtube-videos-verlinken Der letzte Mond vor dem Beil https://blog.mdosch.de/2016/09/17/der-letzte-mond-vor-dem-beil/ <p>I really enjoy listening to <a href="http://www.last.fm/music/Totenmond">Totenmond</a>s latest album "Der letzte Mond vor dem Beil". But... for the first time they did a song with english lyrics by doing a cover of <a href="https://en.wikipedia.org/wiki/Deep_Purple">Deep Purple</a>s "<a href="https://www.youtube.com/watch?v=QcH_HCRQczM">Into the fire</a>" and I want to nominate Pazzer for the worst english pronounciation. But actually the pronounciation is so funny that I think he did it purrrrrrrrrrrrrrrrrposely this way.</p> <p><a href="https://www.youtube.com/watch?v=YW5ARg-dEjE#t=33m40s">Totenmond "Into the fire" on YouTube</a></p> Sat, 17 Sep 2016 17:35:00 GMT tag:blog.mdosch.de,2016-09-17:/2016/09/17/der-letzte-mond-vor-dem-beil Sicherheitseinstellungen von Webseiten mit Observatory testen https://blog.mdosch.de/2016/08/28/sicherheitseinstellungen-von-webseiten-mit-observatory-testen/ <p>Jetzt geht's rund. :D Vorgestern hatte ich Webkoll <a href="https://blog.mdosch.de/2016/08/26/mein-blog-und-der-datenschutz/">entdeckt</a> und deswegen schon einiges auf der ToDo-Liste und heute sehe ich einen <a href="https://www.soeren-hentzschel.at/mozilla/observatory-by-mozilla/">Blog-Eintrag</a> der auf Mozillas <a href="https://observatory.mozilla.org/">Observatory</a> hinweist, ein weiteres Tool um die Sicherheit der eigenen Webseite zu testen.</p> <p>Da ich dort nur ein <strong>D</strong> Rating für meine Seite bekam machte ich mich nun daran die nötigen Einstellungen vorzunehmen. Leider kam ich nicht über eine Bewertung von <strong>B+</strong> hinaus, da ich noch Inline-Skripte erlaube. Ohne dies funktioniert nämlich die Anbindung meines Kommentarsystems <a href="http://posativ.org/isso/">Isso</a> nicht mehr.</p> <p>Was ist neu? <!-- more --></p> <ul> <li>Ich habe eine <a href="https://developer.mozilla.org/en-US/docs/Web/Security/CSP">Content Security Policy</a> umgesetzt, mit der ich bestimme welche Objekte von welchen hosts geholt bzw. ausgeführt werden. Das hilft <a href="https://developer.mozilla.org/en-US/docs/Glossary/Cross-site_scripting">XSS</a>- Attacken zu vermeiden.</li> <li><a href="https://developer.mozilla.org/en-US/docs/Web/Security/HTTP_strict_transport_security">HTTP Strict Transport Security</a>, d.h. der Browser bekommt mitgeteilt, dass er die Seite in Zukunft nur noch per <em>https</em> aufruft.</li> <li><a href="http://stackoverflow.com/questions/18337630/what-is-x-content-type-options-nosniff">X-Content-Type-Options nosniff</a> hält soweit ich das verstanden habe Browser davon ab anders zu interpretieren als vorgegeben, damit der Browser z.B. nicht auf die Idee kommt Inhalt als Script auszuführen, der kein Script sein sollte. </li> <li><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options">X-Frame-Options</a> verbieten meine Seite in einem <em>iframe</em> auszuliefern, was gegen <a href="https://en.wikipedia.org/wiki/Clickjacking">Clickjacking</a> hilft.</li> <li><a href="https://stackoverflow.com/questions/9090577/what-is-the-http-header-x-xss-protection">X-XSS-Protection</a> aktiviert Browsermethoden zur Vermeidung von <a href="https://developer.mozilla.org/en-US/docs/Glossary/Cross-site_scripting">XSS</a>- Attacken</li> </ul> <p>Damit sieht die Konfiguration meiner Seite in den gängigen Testtools schon ganz gut aus, aber ich werde in nächster Zeit versuchen das nach und nach noch etwas zu verbessern. Leider weiß ich nicht, ob ich bei einem shared hosting da nicht irgendwann an Grenzen stoße.</p> Sun, 28 Aug 2016 13:27:00 GMT tag:blog.mdosch.de,2016-08-28:/2016/08/28/sicherheitseinstellungen-von-webseiten-mit-observatory-testen Mein Blog und der Datenschutz https://blog.mdosch.de/2016/08/26/mein-blog-und-der-datenschutz/ <p>Ich bin heute über einen <a href="https://www.kuketz-blog.de/webbkoll-wie-datenschutzfreundlich-ist-deine-webseite/">Link</a> auf das interessante Tool <a href="https://webbkoll.dataskydd.net/en">Webkoll</a> aufmerksam geworden. <br /> <em>Webkoll</em> ist ein Open-Source-Tool mit dem man die eigene Homepage, und auch andere, auf Datenschutzkonformität überprüfen kann. Da das Tool OpenSource ist kann der <a href="https://github.com/andersju/webbkoll">Quellcode</a> eingesehen werden und man kann das Tool auch auf dem eigenen Webspace/Server installieren. Ich habe die bequeme Variante vorgezogen die <a href="https://webbkoll.dataskydd.net/en">Onlineversion</a> des Entwicklers zu nutzen. <!-- more --></p> <p>Das Tool überprüft die Verwendung externer Ressourcen und bewertet sie danach ob sie in der Blockliste von <a href="https://disconnect.me/">Disconnect</a> vorkommen, ob die Seite über <em>HTTPS</em> ausgeliefert wird, <em>HSTS</em> genutzt wird, Drittpartie-Cookies gesetzt werden und einiges mehr.</p> <p><a href="https://webbkoll.dataskydd.net/en/results?url=https%3A%2F%2Fblog.mdosch.de%2F">Mein Ergebnis</a> sah gar nicht so schlecht aus aber ließ sich durch Abschalten der <em>referrer</em> noch verbessern, d.h. es wird Seiten nicht mehr mitgeteilt, dass ihr von hier kommt wenn ihr einem Link folgt (es sei denn ihr nutzt einen veralteten Browser der dies noch nicht unterstützt). <br /> Auch habe ich <a href="https://blog.mdosch.de/2013/06/15/piwik/">Piwik</a> nicht mehr auf dieser Seite in Betrieb. Piwik ist zwar quelloffen und somit für interessierte Personen mit der nötigen Kompetenz überprüfbar und auch lokal gehosted (d.h. es werden keine Daten an Google oder sonstige Firmen übermittelt), aber da mir der Datenschutz wichtig ist habe ich es deaktiviert. Piwik wurde von <em>Webkoll</em> übrigens nicht negativ bewertet, aber ich habe die Überprüfung mal als Denkanstoß genommen und Piwik entfernt.</p> <p>Ich habe auch <em>HSTS</em> auf diesem Blog aktiviert, d.h. Browser merken sich, dass dieser Blog über <em>HTTPS</em> erreichbar ist und werden in Zukunft nicht mehr versuchen unverschlüsselt zuzugreifen.</p> <p><em>Webkoll</em> zeig <em>HSTS</em> zwar weiterhin als nicht aktiv an, aber mein <a href="https://www.ssllabs.com/ssltest/analyze.html?d=blog.mdosch.de&amp;s=95.143.172.208">SSL-Labs Ranking</a> hat sich durch diese Maßnahme von <strong>A</strong> auf <strong>A+</strong> verbessert. Vermutlich wird <em>HSTS</em> von <em>Webkoll</em> erst gewürdigt wenn man die Seite in eine Liste eintragen lässt, die mit allen gängigen Browsern ausgeliefert wird. Ist man in dieser Liste vertreten wird jeder Browser, der sie ausliefert, sofort eine HTTPS-Verbindung zur Seite aufbauen, auch wenn die Seit explizit mit http:// aufgerufen wurde.</p> <p>Wie schneidet eure Seite ab? <strong>Hosen runter!</strong> :D</p> Fri, 26 Aug 2016 18:08:00 GMT tag:blog.mdosch.de,2016-08-26:/2016/08/26/mein-blog-und-der-datenschutz Saints Row 2 unter Linux https://blog.mdosch.de/2016/08/21/saints-row-2-unter-linux/ <p><em>Saints Row 2</em> ist ein spaßiges, wenn auch brutales, Spiel aber auf den Inhalt möchte ich hier nicht eingehen. Wie auch anderen <a href="https://www.onli-blogging.de/1564/Saints-Row-2.html">Blogs</a> zu entnehmen ist der Linux-Port eher schlecht gelungen. Ich möchte hier ein paar Tipps sammeln, wie man das Spielerlebnis etwas verbessern kann. Bisher habe ich nur Möglichkeiten gefunden die kaputte Sound-Ausgabe zu beheben, aber damit werden die Cut-Scenes wenigstens erträglich. Ich werde noch etwas weitersuchen ob ich evtl. Möglichkeiten finde die Performance allgemein zu verbessern. Für sein Alter läuft das Spiel nämlich relativ unperformant. <!--more--></p> <h5>Audio-Probleme</h5> <h6>Kein Audio bzw. Verzerrungen in Cut-Scenes</h6> <p>Dies lässt sich wie <a href="https://playingtux.com/forumposts/fix-stutteringmissing-audio-cutscenes-saints-row-2">hier</a> beschrieben durch folgende Änderung am Script <em>saintsrow2</em> beheben:</p> <table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1 2 3 4</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="ch">#!/bin/sh</span> <span class="c1">#export __GL_THREADED_OPTIMIZATIONS=1</span> <span class="nb">export</span> <span class="nv">PULSE_LATENCY_MSEC</span><span class="o">=</span><span class="m">60</span> ./saferun.sh ./saintsrow2.i386 <span class="s2">&quot;</span><span class="nv">$@</span><span class="s2">&quot;</span> </pre></div> </td></tr></table> <p>Bei <em>Steam</em> unter <em>Debian</em> befindet sich die Datei unter <code>~/.steam/steam/SteamApps/common/Saints\ Row\ 2/saintsrow2</code>.</p> <h6>Radio-Qualität verbessern</h6> <p>Die Radio-Qualität lässt sich deutlich steigern wenn man die beiden Dateien <em>music1.vpp_pc</em> und <em>music2.vpp_pc</em> durch die <a href="https://www.saintsrowmods.com/forum/threads/high-quality-radio-mod.9515/">hier</a> zum Download angebotenen ersetzt.</p> Sun, 21 Aug 2016 14:58:00 GMT tag:blog.mdosch.de,2016-08-21:/2016/08/21/saints-row-2-unter-linux