<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>Marco Gabriel</title>
    <link>http://www.marcogabriel.com/blog/</link>
    <description>Linux and Life</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 2.0.1 - http://www.s9y.org/</generator>
    
    <image>
    <url>http://www.marcogabriel.com/blog/templates/default/img/s9y_banner_small.png</url>
    <title>RSS: Marco Gabriel - Linux and Life</title>
    <link>http://www.marcogabriel.com/blog/</link>
    <width>100</width>
    <height>21</height>
</image>

<item>
    <title>Wie man git Repositories auf der lokalen Festplatte findet</title>
    <link>http://www.marcogabriel.com/blog/archives/656-Wie-man-git-Repositories-auf-der-lokalen-Festplatte-findet.html</link>
    
    <comments>http://www.marcogabriel.com/blog/archives/656-Wie-man-git-Repositories-auf-der-lokalen-Festplatte-findet.html#comments</comments>
    <wfw:comment>http://www.marcogabriel.com/blog/wfwcomment.php?cid=656</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.marcogabriel.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=656</wfw:commentRss>
    

    <author>nospam@example.com (Marco Gabriel)</author>
    <content:encoded>
    &lt;p&gt;Ich hatte irgendwann mal ein paar Scripte entwickelt, die ich nun wieder suchte. Ich hatte grob eine Ahnung, wo sie sein könnten. Da das schon eine Weile her war, konnte ich mich nur an den Server, nicht aber mehr an das Verzeichnis erinnern. Die meisten Scripte lege ich in Standardverzeichnisse wie /usr/local/bin, weil ich sie dort auch wieder finden würde. Hier handelte es sich aber um ein git Repository und nicht um fertige, ausführbare Scripte.&lt;/p&gt;

&lt;p&gt;Zur Hilfe kam wie so oft find:&lt;/p&gt;

&lt;pre&gt;
~# find / -name &quot;.git&quot; -type d
/opt/checks/prj/.git&lt;/pre&gt;

&lt;p&gt;Gefunden &lt;img src=&quot;http://www.marcogabriel.com/blog/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; class=&quot;emoticon&quot; /&gt;.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Fri, 25 Oct 2019 09:22:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.marcogabriel.com/blog/archives/656-guid.html</guid>
    
</item>
<item>
    <title>Linux Konsole remote anzeigen</title>
    <link>http://www.marcogabriel.com/blog/archives/655-Linux-Konsole-remote-anzeigen.html</link>
    
    <comments>http://www.marcogabriel.com/blog/archives/655-Linux-Konsole-remote-anzeigen.html#comments</comments>
    <wfw:comment>http://www.marcogabriel.com/blog/wfwcomment.php?cid=655</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.marcogabriel.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=655</wfw:commentRss>
    

    <author>nospam@example.com (Marco Gabriel)</author>
    <content:encoded>
    &lt;p&gt;Kürzlich hatte ich ein Update direkt an der Konsole eines Linux Servers gestartet. Das Update dauerte länger und ich wollte aber nicht noch länger vor der Konsole stehen und warten. Aber ich wollte die Ausgabe des bereits gestarteten Updates natürlich sehen.&lt;/p&gt;

&lt;p&gt;Eine einfache und praktische Lösung dazu ist, sich per SSH von extern aus einzuloggen und sich die Konsole anzeigen zu lassen. Das erledigt der Befehl &quot;screendump&quot; für uns. Wenn ich nun den Fortschritt noch sehen möchte, verwende ich dazu &quot;watch&quot; und beschränke die Anzahl der anzuzeigenden Zeilen mit tail.&amp;#160;&lt;/p&gt;

&lt;p&gt;Fertig sieht&#039;s dann so aus:&lt;/p&gt;

&lt;pre&gt;
~# watch &quot;screendump | tail -n &amp;lt;anzahl_zeilen&amp;gt;&quot;&lt;/pre&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sat, 18 Jun 2016 11:53:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.marcogabriel.com/blog/archives/655-guid.html</guid>
    
</item>
<item>
    <title>Hardware Seriennummer unter Linux auslesen</title>
    <link>http://www.marcogabriel.com/blog/archives/654-Hardware-Seriennummer-unter-Linux-auslesen.html</link>
    
    <comments>http://www.marcogabriel.com/blog/archives/654-Hardware-Seriennummer-unter-Linux-auslesen.html#comments</comments>
    <wfw:comment>http://www.marcogabriel.com/blog/wfwcomment.php?cid=654</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.marcogabriel.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=654</wfw:commentRss>
    

    <author>nospam@example.com (Marco Gabriel)</author>
    <content:encoded>
    &lt;p&gt;Neulich testete ich eine neue Software zur Verwaltung vieler Systeme. Um die Systeme unterscheiden zu können ist die Seriennummer der Hardware häufig recht hilfreich, denn daraus lassen sich eventuelle Herstellungsdaten und genaue Systeminformationen beim Hersteller erfragen.&lt;/p&gt;

&lt;p&gt;Bei Windows Systemen funktionierte das Auslesen der Seriennnummer auch problemlos. Nur das Auslesen der Seriennummer von Linux Systemen&amp;#160;funktioniert leider gar nicht.&lt;/p&gt;

&lt;p&gt;Dabei geht das unter Linux sehr einfach:&lt;/p&gt;

&lt;pre&gt;
~# dmidecode -t system|grep -i &quot;serial&quot;
&amp;#160;&amp;#160; &amp;#160;Serial Number: xxxxxxx&lt;/pre&gt;

&lt;p&gt;dmidecode kann übrigens noch mehr auslesen. Ein Blick in die Dokumentation oder ein einfaches dmidecode auf der Shell lohnt sich.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sat, 28 May 2016 11:38:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.marcogabriel.com/blog/archives/654-guid.html</guid>
    
</item>
<item>
    <title>Alle ZFS Snapshots auf einmal löschen</title>
    <link>http://www.marcogabriel.com/blog/archives/653-Alle-ZFS-Snapshots-auf-einmal-loeschen.html</link>
    
    <comments>http://www.marcogabriel.com/blog/archives/653-Alle-ZFS-Snapshots-auf-einmal-loeschen.html#comments</comments>
    <wfw:comment>http://www.marcogabriel.com/blog/wfwcomment.php?cid=653</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.marcogabriel.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=653</wfw:commentRss>
    

    <author>nospam@example.com (Marco Gabriel)</author>
    <content:encoded>
    &lt;p&gt;ZFS hat Snapshots um regelmäßige Sicherungspunkte zu erstellen. Das lässt sich mittels zfs-auto-snapshot sogar automatisieren.&lt;/p&gt;

&lt;p&gt;Wenn man nun aber plötzlich Platz benötigt kann es mühsam sein, hunderte von Snapshots manuell zu löschen. Das geht auch mit einem Einzeiler:&lt;/p&gt;

&lt;blockquote&gt;
&lt;pre&gt;
for snapshot in `zfs list -H -t snapshot | cut -f 1`; do zfs destroy $snapshot; done&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Thu, 26 May 2016 13:42:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.marcogabriel.com/blog/archives/653-guid.html</guid>
    
</item>
<item>
    <title>Lets Encrypt Zertifikate automatisch installieren</title>
    <link>http://www.marcogabriel.com/blog/archives/652-Lets-Encrypt-Zertifikate-automatisch-installieren.html</link>
    
    <comments>http://www.marcogabriel.com/blog/archives/652-Lets-Encrypt-Zertifikate-automatisch-installieren.html#comments</comments>
    <wfw:comment>http://www.marcogabriel.com/blog/wfwcomment.php?cid=652</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.marcogabriel.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=652</wfw:commentRss>
    

    <author>nospam@example.com (Marco Gabriel)</author>
    <content:encoded>
    &lt;p&gt;Der &lt;a href=&quot;https://certbot.eff.org/&quot;&gt;CertBot von der Electronic Frontier Foundation&lt;/a&gt; geht dabei zur Hand.&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:143 --&gt;&lt;img alt=&quot;&quot; class=&quot;serendipity_image_center&quot; height=&quot;78&quot; src=&quot;http://www.marcogabriel.com/blog/uploads/2016/05/certbot.serendipityThumb.jpg&quot; width=&quot;110&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Fri, 13 May 2016 17:35:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.marcogabriel.com/blog/archives/652-guid.html</guid>
    
</item>
<item>
    <title>rsync zu langsam im LAN - Wie man rsync beschleunigt</title>
    <link>http://www.marcogabriel.com/blog/archives/651-rsync-zu-langsam-im-LAN-Wie-man-rsync-beschleunigt.html</link>
    
    <comments>http://www.marcogabriel.com/blog/archives/651-rsync-zu-langsam-im-LAN-Wie-man-rsync-beschleunigt.html#comments</comments>
    <wfw:comment>http://www.marcogabriel.com/blog/wfwcomment.php?cid=651</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.marcogabriel.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=651</wfw:commentRss>
    

    <author>nospam@example.com (Marco Gabriel)</author>
    <content:encoded>
    &lt;p&gt;...hat schon jemand geschrieben. Man kann es bereits &lt;a href=&quot;https://gist.github.com/KartikTalwar/4393116&quot;&gt;hier&lt;/a&gt;&amp;#160;nachlesen.&lt;/p&gt;

&lt;p&gt;rsync nutzt SSH und SSH verschlüsselt. Das kostet Zeit und Performance, vor allem wenn man im LAN mit Gigabit unterwegs ist.&amp;#160;&lt;/p&gt;

&lt;p&gt;Kurz gesagt nutzt man die richtigen Optionen und macht&#039;s damit schneller:&lt;/p&gt;

&lt;pre&gt;
rsync -aHAXxv --numeric-ids --delete --progress -e &quot;ssh -T -c arcfour -o Compression=no -x&quot; user@&amp;lt;source&amp;gt;:&amp;lt;source_dir&amp;gt; &amp;lt;dest_dir&amp;gt;
&lt;/pre&gt;
 
    </content:encoded>

    <pubDate>Wed, 11 May 2016 18:05:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.marcogabriel.com/blog/archives/651-guid.html</guid>
    
</item>
<item>
    <title>SSH Host Keys bei Hetzner austauschen</title>
    <link>http://www.marcogabriel.com/blog/archives/650-SSH-Host-Keys-bei-Hetzner-austauschen.html</link>
    
    <comments>http://www.marcogabriel.com/blog/archives/650-SSH-Host-Keys-bei-Hetzner-austauschen.html#comments</comments>
    <wfw:comment>http://www.marcogabriel.com/blog/wfwcomment.php?cid=650</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.marcogabriel.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=650</wfw:commentRss>
    

    <author>nospam@example.com (Marco Gabriel)</author>
    <content:encoded>
    &lt;p&gt;Auch Hetzner als Provider für Rootserver ist vor Bugs nicht sicher. Durch einen Bug wurde auf neu installierten Servern möglicherweise ein Host Key nicht sauber neu erstellt und so ist genau dieser eine SSH Host Key nun in ganz vielen unterschiedlichen Servern mit drin.&amp;#160;&lt;/p&gt;

&lt;p&gt;Hetzner empfiehlt, diesen Key neu zu generieren. Mehr dazu im Hetzner Wiki:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://wiki.hetzner.de/index.php/Ed25519&quot;&gt;http://wiki.hetzner.de/index.php/Ed25519&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
 
    </content:encoded>

    <pubDate>Thu, 31 Dec 2015 11:02:00 +0100</pubDate>
    <guid isPermaLink="false">http://www.marcogabriel.com/blog/archives/650-guid.html</guid>
    
</item>
<item>
    <title>Frohe Weihnacht</title>
    <link>http://www.marcogabriel.com/blog/archives/649-Frohe-Weihnacht.html</link>
    
    <comments>http://www.marcogabriel.com/blog/archives/649-Frohe-Weihnacht.html#comments</comments>
    <wfw:comment>http://www.marcogabriel.com/blog/wfwcomment.php?cid=649</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.marcogabriel.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=649</wfw:commentRss>
    

    <author>nospam@example.com (Marco Gabriel)</author>
    <content:encoded>
    &lt;p&gt;Weil&#039;s so schön ist, muss ich&#039;s hier auch noch mal rein tun:&lt;/p&gt;

&lt;p&gt;????&lt;br /&gt;
He&#039;s making a database&lt;br /&gt;
He&#039;s sorting it twice&lt;br /&gt;
SELECT * from contacts WHERE behavior = &#039;nice&#039;&lt;br /&gt;
SQL Clause is coming to town&lt;br /&gt;
????&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; lang=&quot;de&quot;&gt;
&lt;p dir=&quot;ltr&quot; lang=&quot;en&quot;&gt;???? He&#039;s making a database He&#039;s sorting it twice SELECT * from contacts WHERE behavior = &#039;nice&#039; SQL Clause is coming to town ????&lt;/p&gt;
— Karen Kringle (@KarenMN) &lt;a href=&quot;https://twitter.com/KarenMN/status/677111492135661569&quot;&gt;16. Dezember 2015&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt; 
    </content:encoded>

    <pubDate>Thu, 24 Dec 2015 13:52:00 +0100</pubDate>
    <guid isPermaLink="false">http://www.marcogabriel.com/blog/archives/649-guid.html</guid>
    
</item>
<item>
    <title>IT Security im Jahr 2016 wird spannend</title>
    <link>http://www.marcogabriel.com/blog/archives/648-IT-Security-im-Jahr-2016-wird-spannend.html</link>
    
    <comments>http://www.marcogabriel.com/blog/archives/648-IT-Security-im-Jahr-2016-wird-spannend.html#comments</comments>
    <wfw:comment>http://www.marcogabriel.com/blog/wfwcomment.php?cid=648</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.marcogabriel.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=648</wfw:commentRss>
    

    <author>nospam@example.com (Marco Gabriel)</author>
    <content:encoded>
    &lt;p&gt;Früher tat&#039;s ein funktionierender und guter Virenscanner. Heute ist das nicht mehr so. Für die &lt;a href=&quot;https://www.inett.de/&quot;&gt;inett&lt;/a&gt; habe ich daher mal in einem Blogbeitrag die &lt;a href=&quot;https://www.inett.de/blog/2015/12/23/5-tipps-fuer-sichere-firmen-it/&quot;&gt;wichtigsten Tipps für sichere Unternehmensnetzwerke&lt;/a&gt; zusammengefasst.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Wed, 23 Dec 2015 08:43:00 +0100</pubDate>
    <guid isPermaLink="false">http://www.marcogabriel.com/blog/archives/648-guid.html</guid>
    
</item>
<item>
    <title>Jetzt auf Serendipity 2.0.1</title>
    <link>http://www.marcogabriel.com/blog/archives/647-Jetzt-auf-Serendipity-2.0.1.html</link>
    
    <comments>http://www.marcogabriel.com/blog/archives/647-Jetzt-auf-Serendipity-2.0.1.html#comments</comments>
    <wfw:comment>http://www.marcogabriel.com/blog/wfwcomment.php?cid=647</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.marcogabriel.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=647</wfw:commentRss>
    

    <author>nospam@example.com (Marco Gabriel)</author>
    <content:encoded>
    &lt;p&gt;Da schaut man länger nicht auf die eigene Blog Software, schon gibt&#039;s eine neue Version. Ich hab dann mal auf Serendipity 2.0.1 geupdated&amp;#160;und das lief - wie immer - völlig stressfrei und automatisch.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sun, 29 Mar 2015 19:58:00 +0200</pubDate>
    <guid isPermaLink="false">http://www.marcogabriel.com/blog/archives/647-guid.html</guid>
    
</item>
<item>
    <title>site_url in Modx Revo</title>
    <link>http://www.marcogabriel.com/blog/archives/646-site_url-in-Modx-Revo.html</link>
            <category>Software</category>
    
    <comments>http://www.marcogabriel.com/blog/archives/646-site_url-in-Modx-Revo.html#comments</comments>
    <wfw:comment>http://www.marcogabriel.com/blog/wfwcomment.php?cid=646</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.marcogabriel.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=646</wfw:commentRss>
    

    <author>nospam@example.com (Marco Gabriel)</author>
    <content:encoded>
    &lt;p&gt;Neulich stellte ich eine Modx Revo Seite von http auf https um. Allerdings hatte ich danach damit zu k&amp;auml;mpfen, dass in der Base URL mal http:// und mal https:// Links auftauchten. Da Modx die [[++base_url]] selbst ermittelt, kam dann je nach erstem Abruf entweder ein http oder https zum Zug.&lt;/p&gt;

&lt;p&gt;Im Modx Forum habe ich eine &lt;a href=&quot;http://forums.modx.com/thread/31534/revolution-solved-quick-question-standard-way-to-retrieve-the-base-url&quot;&gt;L&amp;ouml;sung&lt;/a&gt; dazu gefunden: [[!++site_url]] verwenden und diese im verwendeten Kontext einfach festschreiben. Danach sollten alle Links sauber sein.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sat, 27 Dec 2014 23:59:46 +0100</pubDate>
    <guid isPermaLink="false">http://www.marcogabriel.com/blog/archives/646-guid.html</guid>
    <category>base_url</category>
<category>http</category>
<category>https</category>
<category>modx</category>
<category>site_url</category>

</item>
<item>
    <title>MODx Revo hacked (Update 23.12.2014)</title>
    <link>http://www.marcogabriel.com/blog/archives/645-MODx-Revo-hacked-Update-23.12.2014.html</link>
    
    <comments>http://www.marcogabriel.com/blog/archives/645-MODx-Revo-hacked-Update-23.12.2014.html#comments</comments>
    <wfw:comment>http://www.marcogabriel.com/blog/wfwcomment.php?cid=645</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.marcogabriel.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=645</wfw:commentRss>
    

    <author>nospam@example.com (Marco Gabriel)</author>
    <content:encoded>
    &lt;p&gt;Von Googles Webmastertools wurde ich eben darauf hingewiesen, dass eine meiner MODx Revo Sites offenbar URLs f&amp;uuml;r Spammer redirected. Sie Website verwies also auf dubiose Shops mit Medikamenten und anderem Ged&amp;ouml;ns.&lt;/p&gt;

&lt;p&gt;Nach einer ausgedehnten Analyse habe ich dann zun&amp;auml;chst in core/cache/ mehrere tmp-* Dateien gefunden, die offenbar immer dann angelegt wurden, wenn eine dieser URLs aufgerufen worden ist.&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:139 --&gt;&lt;img alt=&quot;&quot; class=&quot;serendipity_image_center&quot; height=&quot;99&quot; src=&quot;http://www.marcogabriel.com/blog/uploads/2014/tmp-files.png&quot; width=&quot;434&quot; /&gt;Die Datei selbst enthielt etwas PHP Code, der sich gegen&amp;uuml;ber Google und anderen Suchmaschinen unsichtbar machte, in dem der Code nur ausgef&amp;uuml;hrt wurde, wenn der Request nicht von bestimmten IPs oder Agents kam. Im Web habe ich dar&amp;uuml;ber etwas unter dem Begriff &amp;quot;Google Conditional Hack&amp;quot; gefunden, z.B. &lt;a href=&quot;http://typo3blogger.de/die-eigene-webseite-als-spam-schleuder-der-google-conditional-hack/&quot;&gt;hier&lt;/a&gt;. Scheinbar existiert dieser Hack &lt;a href=&quot;http://blog.namics.com/2012/01/a-study-in-viagra.html&quot;&gt;f&amp;uuml;r&lt;/a&gt; &lt;a href=&quot;http://forums.modx.com/thread/92140/security-warning-need-help-understanding-new-version-of-site-hack-on-evo-1-014&quot;&gt;diverse&lt;/a&gt; CMS Systeme, nicht nur f&amp;uuml;r MODx Revo. In meinem speziellen Fall scheint der Angriff zumindest auf MODx angepasst worden zu sein, denn er gibt sich als Core Komponente aus, damit Benutzer ihn nicht finden oder sich nicht trauen ihn zu l&amp;ouml;schen:&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:141 --&gt;&lt;img alt=&quot;&quot; class=&quot;serendipity_image_center&quot; height=&quot;136&quot; src=&quot;http://www.marcogabriel.com/blog/uploads/2014/tarnung.png&quot; width=&quot;603&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Aber woher kamen diese Dateien? Ein auff&amp;auml;lliger String im Code (&amp;quot;tmhapbzcerff&amp;quot;)&amp;#160;war wie gemacht als Suchmuster. Also bem&amp;uuml;hte ich grep um das Muster vielleicht auch noch in anderen Dateien zu finden. Tats&amp;auml;chlich wurde ich f&amp;uuml;ndig: Auch in&amp;#160;core/cache/includes/elements/modplugin/20.include.cache.php existierte dieser&amp;#160;String.&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:140 --&gt;&lt;img alt=&quot;&quot; class=&quot;serendipity_image_center&quot; height=&quot;111&quot; src=&quot;http://www.marcogabriel.com/blog/uploads/2014/code.png&quot; width=&quot;713&quot; /&gt;Cache und tmp Dateien l&amp;ouml;schen f&amp;uuml;hrte zwar dazu, dass die Dateien weg waren, aber kurze Zeit sp&amp;auml;ter tauchten sie wieder auf. Also musste es noch einen tiefer liegenden Ausl&amp;ouml;ser daf&amp;uuml;r geben.&amp;#160;&lt;/p&gt;

&lt;p&gt;Das&amp;#160;core/cache/includes/elements/modplugin/ Verzeichnis wird als Cache erstellt, wenn MODx Plugins ausgef&amp;uuml;hrt werden. Der erste Zahlenwert des Dateinamens, so vermutete ich, k&amp;ouml;nnte die ID eines Datensatzes sein.&lt;/p&gt;

&lt;p&gt;&lt;!-- s9ymdb:142 --&gt;&lt;img alt=&quot;&quot; class=&quot;serendipity_image_center&quot; height=&quot;125&quot; src=&quot;http://www.marcogabriel.com/blog/uploads/2014/include-cache.png&quot; width=&quot;493&quot; /&gt;Ein Blick in die Datenbank von MODx zeigte eine Tabelle namens modx_site_plugins. Das k&amp;ouml;nnte passen.&lt;/p&gt;

&lt;p&gt;In dieser Tabelle gab es einen Datensatz mit der ID 20 und dem Namen &amp;quot;Search Highlighter&amp;quot;. In den Details sah man dann auch den Schadcode, zwar encrypted, aber durchaus identifizierbar.&amp;#160;Nach dem entfernen dieses Datensatzes und dem erneuten L&amp;ouml;schen des Cache und der tmp Dateien ist der Schadcode nun verschwunden.&lt;/p&gt;

&lt;p&gt;Wie der Code jedoch in die Datenbank kam, konnte ich noch nicht herausfinden. Da ich die aktuellste Version von MODx Revo einsetze (2.3.2-pl) k&amp;ouml;nnte es nat&amp;uuml;rlich darin eine Sicherheitsl&amp;uuml;cke geben, eine Suche ergab dazu jedoch keine Treffer. Theoretisch k&amp;ouml;nnte der Schadcode schon sehr lange drin gewesen sein und entweder nicht aktiv oder&amp;#160;unbemerkt. M&amp;ouml;glich w&amp;auml;re auch&amp;#160;eine SQL Injection in der Vergangenheit in einer &amp;auml;lteren MODx Version.&lt;/p&gt;

&lt;p&gt;Update am 23.12.2014: Ich hatte noch nicht alles erwischt und entfernt. Nach einigen Stunden waren dann wieder die gleichen Dateien vorhanden. Durch einen Hinweis von &lt;a href=&quot;https://twitter.com/JayGilmore/status/547217462933336064&quot;&gt;@JayGilmore&lt;/a&gt; kam ich dann auf die Seite&amp;#160;&lt;a href=&quot;http://forums.modx.com/thread/89564/warning-hacking-attack-on-revo-2-2-4-using-core-services-plugin&quot;&gt;http://forums.modx.com/thread/89564/warning-hacking-attack-on-revo-2-2-4-using-core-services-plugin&lt;/a&gt; und sah dort, dass ich ein Plugin noch nicht entfernt hatte. Das war mir gestern auch schon aufgefallen, aber ich rechnete es nicht dem Hack zu. Das habe ich jetzt auch noch entfernt - mal sehen ob das nun alles war.&lt;/p&gt;

&lt;p&gt;Es handelt sich wohl um einen Hack, der vor MODx 2.2.14 bereits durchgef&amp;uuml;hrt,&amp;#160;aber bis vor kurzem nicht ausgenutzt wurde.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Tue, 23 Dec 2014 00:46:37 +0100</pubDate>
    <guid isPermaLink="false">http://www.marcogabriel.com/blog/archives/645-guid.html</guid>
    <category>google conditional hack</category>
<category>hack</category>
<category>injection</category>
<category>modx</category>
<category>sql</category>

</item>
<item>
    <title>Warum varnish für normale Webserver nichts bringt</title>
    <link>http://www.marcogabriel.com/blog/archives/644-Warum-varnish-fuer-normale-Webserver-nichts-bringt.html</link>
            <category>Linux</category>
    
    <comments>http://www.marcogabriel.com/blog/archives/644-Warum-varnish-fuer-normale-Webserver-nichts-bringt.html#comments</comments>
    <wfw:comment>http://www.marcogabriel.com/blog/wfwcomment.php?cid=644</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.marcogabriel.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=644</wfw:commentRss>
    

    <author>nospam@example.com (Marco Gabriel)</author>
    <content:encoded>
    &lt;p&gt;&lt;a href=&quot;https://www.varnish-cache.org/&quot;&gt;Varnish&lt;/a&gt; ist ein extrem schneller caching reverse Proxy, der einem normalen Webserver vorgeschaltet wird. In der Regel beantwortet Varnish dann die Anfragen der Benutzer, entscheidet, ob er aus seinem eigenen Cache liefern kann und den Webserver dahinter nicht mehr fragen muss. Da Varnish den Proxy im Speicher h&amp;auml;lt, bedient er Anfragen extrem schnell. Was er nicht selbst bedienen kann, z.B. weil die Seiten aktive Inhalte haben oder nicht gecached werden d&amp;uuml;rfen, gibt er an den dahinter liegenden Webserver weiter. Dar&amp;uuml;ber hinaus &amp;uuml;berwacht er die Webserver und verteilt Anfragen an mehrere Webserver. F&amp;auml;llt einer der Webserver aus, leitet Varnish dort einfach keine Anfragen mehr hin. Benutzer bekommen davon &amp;uuml;berhaupt nichts mit. Varnish ist &amp;uuml;brigens auch v&amp;ouml;llig anpassbar &amp;uuml;ber eine eigene Konfigurationssprache. Damit lassen sich extrem tolle Dinge relativ einfach realisieren.&lt;/p&gt;

&lt;p&gt;Ich kam irgendwann auf die Idee, auch normale, einzelne Webserver mit einem Varnish auszustatten, um die Auslieferung von Web Inhalten zu beschleunigen. Zun&amp;auml;chst klang das f&amp;uuml;r mich bei allen oben genannten Vorteilen wie eine Verbesserung. Zumal der Varnish auf dem gleichen Host lief und &amp;uuml;ber eine iptables Regel eingebunden wurde, d.h. mein Varnish war jederzeit im Betrieb transparent ein- und abschaltbar. Nicht mal die Webserver Konfiguration musste ich &amp;auml;ndern.&lt;/p&gt;

&lt;p&gt;Als ich mir die Statistiken des Varnish ansah, war dort allerdings kaum ein positiver Effekt zu erkennen. Die Cache Hit Rate war oft unter 1%, so dass sich kein erkennbarer Gewinn daraus erzielen liess. Varnishhist zeigt ein &amp;auml;hnliches Ergebnis, aber etwas sch&amp;ouml;ner als Varnishstat:&lt;/p&gt;

&lt;div class=&quot;serendipity_imageComment_center&quot; style=&quot;width: 647px&quot;&gt;
&lt;div class=&quot;serendipity_imageComment_img&quot;&gt;&lt;!-- s9ymdb:138 --&gt;&lt;img alt=&quot;&quot; class=&quot;serendipity_image_center&quot; height=&quot;298&quot; src=&quot;http://www.marcogabriel.com/blog/uploads/2014/varnishhist-webserver.png&quot; width=&quot;647&quot; /&gt;&lt;/div&gt;

&lt;div class=&quot;serendipity_imageComment_txt&quot;&gt;Ausgabe von varnishhist: Unter (1) sieht man die Hits, unter (2) die an den Webserver weitergeleiteten Requests. Von links nach rechts erh&amp;ouml;ht sich die Antwortzeit.&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;Der Grund daf&amp;uuml;r ist recht schnell ausgemacht. Sobald Cookies existieren, geht Varnish von einer Session aus und leitet einfach alle Anfragen an den Webserver weiter. Da heute die meisten Websites Content Management Systeme f&amp;uuml;r alles einsetzen, l&amp;auml;uft bereits beim ersten Besuch ein Cookie auf und eine Session startet. Damit ist Varnish au&amp;szlig;en vor.&lt;/p&gt;

&lt;p&gt;Varnish handelt an dieser Stelle v&amp;ouml;llig korrekt, um die Stabilit&amp;auml;t der Webanwendungen vor die Performance zu stellen.&lt;/p&gt;

&lt;p&gt;Bei kleinen Webservern, die verschiedene Websites ausliefern und alle nicht auf Varnish optimiert sind, ergibt der Einsatz von Varnish deshalb (leider) auch keinen Sinn. Man kann mittels der Scriptsprache Varnish beibringen, dass er trotzdem statische Dateien wie Bilder, CSS, etc. cached, der Aufwand lohnt sich aus meiner Erfahrung heraus trotzdem nicht.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sun, 30 Nov 2014 15:00:46 +0100</pubDate>
    <guid isPermaLink="false">http://www.marcogabriel.com/blog/archives/644-guid.html</guid>
    <category>cache</category>
<category>performance</category>
<category>proxy</category>
<category>reverse</category>
<category>varnish</category>
<category>webserver</category>
<category>website</category>

</item>
<item>
    <title>Laufzeit eines Scripts unter Linux messen</title>
    <link>http://www.marcogabriel.com/blog/archives/643-Laufzeit-eines-Scripts-unter-Linux-messen.html</link>
            <category>Linux</category>
    
    <comments>http://www.marcogabriel.com/blog/archives/643-Laufzeit-eines-Scripts-unter-Linux-messen.html#comments</comments>
    <wfw:comment>http://www.marcogabriel.com/blog/wfwcomment.php?cid=643</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.marcogabriel.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=643</wfw:commentRss>
    

    <author>nospam@example.com (Marco Gabriel)</author>
    <content:encoded>
    &lt;p&gt;Neulich hatte ich eine Unterhaltung dar&amp;uuml;ber, wie man die Laufzeit eines Programms m&amp;ouml;glichst einfach misst. Im konkreten Fall wollten wir wissen, wie lange ein mysqldump ben&amp;ouml;tigt hat. Dazu gibts unter Linux den Befehl time, den man dem zu messenden Programm einfach voranstellt.&lt;/p&gt;

&lt;pre&gt;
time &amp;lt;Programm und Parameter&amp;gt;
[...Ausgabe des Programms...]

real&amp;#160;&amp;#160; &amp;#160;0m56.754s
user&amp;#160;&amp;#160; &amp;#160;0m0.784s
sys&amp;#160;&amp;#160; &amp;#160;0m4.004s
&lt;/pre&gt;

&lt;p&gt;Der Wert hinter real zeigt an, wie lange das Programm gelaufen ist, im obigen Beispiel 0 Minuten, 56 Sekunden und 754 Millisekunden.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sun, 30 Nov 2014 13:56:48 +0100</pubDate>
    <guid isPermaLink="false">http://www.marcogabriel.com/blog/archives/643-guid.html</guid>
    <category>command</category>
<category>laufzeit</category>
<category>linux</category>
<category>script</category>
<category>shell</category>
<category>time</category>

</item>
<item>
    <title>mysqldump: Error 2020: Got packet bigger than ‘max_allowed_packet’ bytes</title>
    <link>http://www.marcogabriel.com/blog/archives/642-mysqldump-Error-2020-Got-packet-bigger-than-max_allowed_packet-bytes.html</link>
            <category>Zarafa</category>
    
    <comments>http://www.marcogabriel.com/blog/archives/642-mysqldump-Error-2020-Got-packet-bigger-than-max_allowed_packet-bytes.html#comments</comments>
    <wfw:comment>http://www.marcogabriel.com/blog/wfwcomment.php?cid=642</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.marcogabriel.com/blog/rss.php?version=2.0&amp;type=comments&amp;cid=642</wfw:commentRss>
    

    <author>nospam@example.com (Marco Gabriel)</author>
    <content:encoded>
    &lt;p&gt;F&amp;uuml;r ein &lt;a href=&quot;http://www.inett.de/produkte/zarafa&quot; name=&quot;Zarafa&quot; title=&quot;Zarafa&quot;&gt;Zarafa&lt;/a&gt; Upgrade von 6.40 auf 7.1 musste ich eine MySQL Datenbank von einem alten auf einen neuen Server &amp;uuml;bernehmen. Da es sich um eine relativ gro&amp;szlig;e Datenbank handelte, testete ich den Vorgang vorab und alles funktionierte - inklusive dem Dump und dem Restore der Datenbank.&lt;/p&gt;

&lt;p&gt;Beim eigentlichen Upgrade dann brach der Dump mit der folgenden Meldung ab:&lt;/p&gt;

&lt;blockquote&gt;
&lt;pre&gt;
&lt;em&gt;&lt;strong&gt;mysqldump: Error 2020: Got packet bigger than &amp;lsquo;max_allowed_packet&amp;rsquo;&lt;/strong&gt;&lt;/em&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Das Problem ist, dass &lt;em&gt;mysqldump&lt;/em&gt; nicht die gleichen Konfigurationsparameter wie der &lt;em&gt;mysqld&lt;/em&gt; verwendet. In der &lt;em&gt;/etc/mysql/my.cnf&lt;/em&gt; kommt ganz weit unten eine Sektion namens &lt;em&gt;[mysqldump]&lt;/em&gt;, in der man die &lt;em&gt;max_allowed_packet&lt;/em&gt; Gr&amp;ouml;&amp;szlig;e anpassen muss, wenn der Server ebenfalls gr&amp;ouml;&amp;szlig;ere Pakete zul&amp;auml;sst. Passt man diese Gr&amp;ouml;&amp;szlig;e nicht an, k&amp;ouml;nnen Backups unbrauchbar sein weil sie mittendrin abbrechen.&lt;/p&gt;

&lt;p&gt;Der Standardwert liegt bei 16M und sollte je nach Anwendung h&amp;ouml;her gesetzt werden. Bei Zarafa ist in der Regel 32M bis 64M v&amp;ouml;llig ausreichend, da die MAPI Objekte zwar gr&amp;ouml;&amp;szlig;er sein k&amp;ouml;nnen, die Attachments jedoch im Filesystem und nicht in der Datenbank liegen. Demnach muss die Datenbank meist weniger als 32M liefern.&lt;/p&gt;

&lt;p&gt;Wenn man mysqldump von einem anderen Host aus startet (der keine my.cnf besitzt) oder die Koonfiguration nicht anpassen m&amp;ouml;chte, kann man auch als Parameter &lt;em&gt;--max-allowed-packet=32M&lt;/em&gt; angeben. Damit wird der Eintrag in der Konfiguration &amp;uuml;bersteuert.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Sun, 30 Nov 2014 13:38:12 +0100</pubDate>
    <guid isPermaLink="false">http://www.marcogabriel.com/blog/archives/642-guid.html</guid>
    <category>fehler</category>
<category>mysql</category>
<category>mysqldump</category>
<category>zarafa</category>

</item>

</channel>
</rss>
