<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>Willkommen bei der eL Mediaagentur</title>
	
	<link>http://www.el-mediaagentur.com</link>
	<description>die kreative Agentur aus dem Herzen Kölns</description>
	<lastBuildDate>Fri, 02 Apr 2010 19:18:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<meta xmlns="http://www.w3.org/1999/xhtml" name="robots" content="noindex,follow" />
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/el-mediaagentur" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="el-mediaagentur" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Tipps zur Blog Suchmaschinenoptimierung – Teil 2: Schlüsselwörter</title>
		<link>http://www.el-mediaagentur.com/2010/03/31/tipps-zur-blog-suchmaschinenoptimierung-teil-2-schlusselworter/</link>
		<comments>http://www.el-mediaagentur.com/2010/03/31/tipps-zur-blog-suchmaschinenoptimierung-teil-2-schlusselworter/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 12:56:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Sonstiges]]></category>
		<category><![CDATA[alternative schlüsselwörter]]></category>
		<category><![CDATA[Blogosphäre]]></category>
		<category><![CDATA[keyword]]></category>
		<category><![CDATA[keyword density]]></category>
		<category><![CDATA[schlüsselwort]]></category>
		<category><![CDATA[schlüsselwortdichte]]></category>
		<category><![CDATA[Schlüsselwörter]]></category>
		<category><![CDATA[Schlüsselwortkriterien]]></category>
		<category><![CDATA[sichmaschinenoptimierung]]></category>

		<guid isPermaLink="false">http://www.el-mediaagentur.com/?p=434</guid>
		<description><![CDATA[Schlüsselwörter spiegeln die Inhalte Ihres Blogs wieder, sie sind der Zugang zu Ihren Artikeln bzw. Produkten und bedürfen einer ausgiebigen Recherche und sollten gut überlegt gewählt werden.






Sollten Sie direkt auf diesen Artikel über eine Suchmaschine gesprungen sein, dann empfiehlt es sich zuerst Blog Suchmaschinenoptimierung &#8211; Teil 1: Bestandsaufnahme zu lesen.
Der zweite Teil dieser vierteiligen Artikelserie

Blog [...]]]></description>
			<content:encoded><![CDATA[<p><b>Schlüsselwörter spiegeln die Inhalte Ihres Blogs wieder, sie sind der Zugang zu Ihren Artikeln bzw. Produkten und bedürfen einer ausgiebigen Recherche und sollten gut überlegt gewählt werden.</b><span id="more-434"></span></p>
<div id="inline_ad" style="float: left;">
<script type="text/javascript"><!--
google_ad_client = "pub-2821839982812174";
/* Mediaum Rectangle 300x250 (leicht abgr.), Erstellt 27.02.08 */
google_ad_slot = "3929261217";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<p>Sollten Sie direkt auf diesen Artikel über eine Suchmaschine gesprungen sein, dann empfiehlt es sich zuerst <a href="http://www.el-mediaagentur.com/2010/03/23/tipps-zur-blog-suchmaschinenoptimierung-teil-1-bestandsaufnahme/">Blog Suchmaschinenoptimierung &#8211; Teil 1: Bestandsaufnahme</a> zu lesen.</p>
<p>Der zweite Teil dieser vierteiligen Artikelserie</p>
<ul>
<li><a href="http://www.el-mediaagentur.com/2010/03/23/tipps-zur-blog-suchmaschinenoptimierung-teil-1-bestandsaufnahme/">Blog Suchmaschinenoptimierung &#8211; Teil 1: Bestandsaufnahme</a></li>
<li><a href="http://www.el-mediaagentur.com/2010/03/31/tipps-zur-blog-suchmaschinenoptimierung-teil-2-schlusselworter/">Blog Suchmaschinenoptimierung &#8211; Teil 2: Schlüsselwörter</a></li>
<li>(Entwurf) Blog Suchmaschinenoptimierung &#8211; Teil 3: Technische Möglichkeiten </li>
<li>(Entwurf) Blog Suchmaschinenoptimierung &#8211; Teil 4: Link Popularität</li>
</ul>
<p>befasst sich damit, über welche Schlüsselwörter potentielle Besucher Ihr Blog finden können.</p>
<h2> Blog Suchmaschinenoptimierung &#8211; Teil 2: Schlüsselwörter </h2>
<h3>Mit welchen Suchbegriffen würde mein Blog gefunden werden?</h3>
<p>Haben Sie sich bereits Gedanken darüber gemacht, wie Suchende zu Ihrem Blog gelangen? Was würde ein Interessent für Stichworte in einer Suchmaschine eingeben? Gibt er nur ein Stichwort oder mehrere ein? Mit welcher Suchmaschine wird er versuchen relevante Seiten zu dem Thema zu finden?</p>
<p>Die Schwierigkeit herauszufinden welche Suchbegriffe für Interessenten relevant wären liegt in der Tatsache, dass man als Anbieter einer Dienstleistung oder eines Produktes bereits alle relevanten Schlüsselwörter und Daten kennt. Kennt ein Interessent diese Informationen im Vorfeld auch? Nein! Stellen Sie sich einen Kunden in einem Baumarkt vor, der für eine handwerkliche Aufgabenstellung einen Artikel sucht, der ihm die Arbeit erleichtert oder sogar passend für diese Aufgabe entworfen wurde. Je nach Aufgabenstellung, Bildungsgrad oder ob derjenige vom Fach ist, wird er unterschiedliche Möglichkeiten haben, an diese Information zu gelangen. Vielleicht ist er sich über solch einen Artikel nicht mal bewusst? Also wird so jemand seine Aufgabenstellung umschreiben. Vor kurzem musste ich Löcher in Wandkacheln bohren und wunderte mich warum ich mit meinen üblichen Bohrern nicht durch die Kachel kam bzw. die Kachel beschädige. Also ab in den Baumarkt und nach „Kachel bohren“ gefragt, dass es spezielle Kachelbohrer gibt, konnte ich nur ahnen. Also bin ich von der Aufgabenstellung und nicht von der Lösung ausgegangen. Und diese Sichtweise hilft bei der Findung von Schlüsselwörtern. Achten Sie hierbei auch auf die Konkurrenz! Als Webagentur sollte man nicht auf die gängigen Begriffe wie „Suchmaschinenoptimierung“ setzen, der Markt ist zu hart umkämpft. Außerdem greifen Suchende zu umschreibenden Zwei-oder gar Drei-Wort-Suchabfragen. Auch sollte man alternative Schreibweisen des Begriffs wie Singular oder Plural, Berücksichtung von Vertippern oder Mundart Beachtung schenken.</p>
<h3>Schlüsselwortkriterien</h3>
<p>Die Zeiten sind für Schlüsselwortfarmen oder ähnlich dummes Zeug lange vorbei. Verpacken Sie Ihre Schlüsselwörter in sinnvollen Inhalt. Google und Co. messen Zeiten zwischen Aufruf Ihrer Seite und dem Absprung des Benutzers. Sind diese Zeiten zu kurz werden Ihre Seiten nach hinten durchgereicht und meinen Sie, dass Ihre Seiten auf Seite 21 der Suchergebnisse angeklickt werden? Ok, es sind nur 20 Klicks plus die eigentliche Suchabfrage, die Mühe macht sich jeder in den Zeiten von der digitalen Überflutung. Also so abgedroschen es klingen mag, aber Inhalt ist noch immer König und Inhalt verhilft Ihnen im Orbit der Suchmaschinenrelevanzen zu bleiben und nicht nach kurzer Zeit in der Atmosphäre zu verglühen.</p>
<p>Auch sollte Ihnen bewusst sein, dass Ihr Blog nicht der Nabel der Blogosphäre ist, Ihr klitze kleiner Blog ist nur einer von vielen Millionen und die haben sogar ähnliche Themen wie Sie. Also gilt es umzudenken und nicht auf Top-Schlüsselwörter zu setzen. Das Gebot der Stunden lautet Alternativen finden:</p>
<ul>
<li>Einzelwort oder Begriffkombination</li>
<li>Plural oder Singular</li>
<li>Mit oder ohne Bindestrich</li>
<li>Dialekte beachten</li>
<li>Laie und/ oder Fachkollegen</li>
<li>Mit oder ohne Stopworte</li>
<li>Vertipper</li>
</ul>
<p>Google bietet zu dem Thema das <a href="https://adwords.google.de/select/KeywordToolExternal" target="_blank">Keyword-Tool</a> an. Damit lassen sich relativ schnell alternative Schlüsselwörter finden, die keine hohe Bewerberdichte, aber noch immer relevant für Suchende wären. Auch eine Verknüpfung zu einem Ort kann sinnvoll sein, besonders wenn Sie Kunden in Ihrem Umkreis ansprechen möchten.</p>
<h3>Schlüsselwortdichte</h3>
<p>Man sagt 5-7% Dichte pro Schlüsselwort sind unschädlich für eine Webseite. Es sollte das sogenannte „Stuffing“ vermieden werden, also stopfen Sie Ihren Blog nicht mit Schlüsselwörtern voll. Die Schlüsselwortdichte kann durch einfache online Tools wie <a href="http://www.seochat.com/seo-tools/keyword-density/" target="_blank"> http://www.seochat.com/seo-tools/keyword-density/ </a> oder <a href="http://www.web-promotion-tools.de/promotion-tools/keyword-dichte.htm" target="_blank"> http://www.web-promotion-tools.de/promotion-tools/keyword-dichte.htm</a> gemessen werden.</p>
<h3>Schlüsselwortwichtigkeit hervorheben</h3>
<p>Wie im ersten Teil beschrieben, kann durch einfaches HTML dem Crawler die Arbeit erleichtert werden und die Relevanz eines Schlüsselworts hervorgehoben werden. Wichtige Schlüsselwörter sollten soweit wie möglich im Artikel genannt werden, also verwenden Sie den sich im Web etablierten Pyramidenschreibstil  (kurz und bündig das wichtigste vorab). Nutzen Sie H-,B-,U- und I-Tags um Textbereiche hervorzuheben. Wenn Sie Icons oder Bilder verwenden, dann versehen Sie diese immer mit dem Alt-und Title-Attribut, da Crawler Bilder bzw. dessen Aussagekraft nicht erfassen können. </p>
<h3>Fazit zum Thema Schlüsselwörter</h3>
<p>Schlüsselwörter sind der Wichtigste Zugang zu Ihrem Blog. Sie sollten daher besondere strategische Berücksichtigung finden und stetig im Suchmaschinenoptimierungsprozess neu eingeschätzt werden.</p>
<h3>Hinweis</h3>
<p>Diese Artikel ist ein praktischer Leitfaden ohne Gewähr.</p>
<h3>Weiterführende Literatur</h3>
<p>empfehlenswert sind folgende Bücher:</p>
<table>
<tr>
<td>
<a href="http://www.amazon.de/gp/product/3868502882?ie=UTF8&#038;tag=elmediaagentu-21&#038;linkCode=as2&#038;camp=1638&#038;creative=6742&#038;creativeASIN=3868502882"><img border="0" style="border: none;" src="/images/41riiwsgzGL__SL110_.jpg"></a><img src="http://www.assoc-amazon.de/e/ir?t=elmediaagentu-21&#038;l=as2&#038;o=3&#038;a=3868502882" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</td>
<td>
<a href="http://www.amazon.de/exec/obidos/ASIN/3868502882/elmediaagentu-21/" target="_blank">Grundlagen der Suchmaschinenoptimierung: It&#8217;s not a trick &#8211; It&#8217;s knowledge</a> von Thomas Promny</li>
</td>
</tr>
<tr>
<td>
<a href="http://www.amazon.de/gp/product/3836212331?ie=UTF8&#038;tag=elmediaagentu-21&#038;linkCode=as2&#038;camp=1638&#038;creative=6742&#038;creativeASIN=3836212331"><img border="0" style="border: none;" src="/images/51J0kALZPnL__SL110_.jpg"></a><img src="http://www.assoc-amazon.de/e/ir?t=elmediaagentu-21&#038;l=as2&#038;o=3&#038;a=3836212331" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</td>
<td>
<a href="http://www.amazon.de/exec/obidos/ASIN/3836212331/elmediaagentu-21/" target="_blank">Suchmaschinen-Optimierung für Webentwickler: Funktionsweisen von Google &#038; Co. Ranking-Optimierung und Usability</a> von Sebastian Erlhofer
</td>
</tr>
<tr>
<td>
<a href="http://www.amazon.de/gp/product/3826617037?ie=UTF8&#038;tag=elmediaagentu-21&#038;linkCode=as2&#038;camp=1638&#038;creative=6742&#038;creativeASIN=3826617037"><img border="0" style="border: none;" src="/images/411sY2xEmEL__SL110_.jpg"></a><img src="http://www.assoc-amazon.de/e/ir?t=elmediaagentu-21&#038;l=as2&#038;o=3&#038;a=3826617037" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></p>
</td>
<td>
<a href="http://www.amazon.de/exec/obidos/ASIN/3826617037/elmediaagentu-21/" target="_blank">Website Boosting 2.0: Suchmaschinen-Optimierung, Usability, Online-Marketing</a> von Mario Fischer
</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.el-mediaagentur.com/2010/03/31/tipps-zur-blog-suchmaschinenoptimierung-teil-2-schlusselworter/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tipps zur Blog Suchmaschinenoptimierung – Teil 1: Bestandsaufnahme</title>
		<link>http://www.el-mediaagentur.com/2010/03/23/tipps-zur-blog-suchmaschinenoptimierung-teil-1-bestandsaufnahme/</link>
		<comments>http://www.el-mediaagentur.com/2010/03/23/tipps-zur-blog-suchmaschinenoptimierung-teil-1-bestandsaufnahme/#comments</comments>
		<pubDate>Tue, 23 Mar 2010 11:30:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Sonstiges]]></category>
		<category><![CDATA[Broken-Links]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[Google Webmaster-Tools]]></category>
		<category><![CDATA[Schlüsselwörter]]></category>
		<category><![CDATA[Suchmaschinenoptimierung]]></category>

		<guid isPermaLink="false">http://www.el-mediaagentur.com/?p=424</guid>
		<description><![CDATA[Ein Wordpress Blog für Suchmaschinen zu optimieren ist kein Hexenwerk und bedarf ein wenig Neugier und einen Schupps in die richtige Richtung. Die folgenden Tipps sind auch auf andere (nicht Wordpress gestützte) Webseiten übertragbar, abgesehen von dem ein oder anderen Hinweis auf Wordpress-Plugins.






Zuallererst muss man von der Vorstellung, den Suchmaschinen &#8211; insbesondere Google &#8211; ein [...]]]></description>
			<content:encoded><![CDATA[<p><b>Ein Wordpress Blog für Suchmaschinen zu optimieren ist kein Hexenwerk und bedarf ein wenig Neugier und einen Schupps in die richtige Richtung. Die folgenden Tipps sind auch auf andere (nicht Wordpress gestützte) Webseiten übertragbar, abgesehen von dem ein oder anderen Hinweis auf Wordpress-Plugins.</b><span id="more-424"></span></p>
<div id="inline_ad" style="float: left;">
<script type="text/javascript"><!--
google_ad_client = "pub-2821839982812174";
/* Mediaum Rectangle 300x250 (leicht abgr.), Erstellt 27.02.08 */
google_ad_slot = "3929261217";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<p>Zuallererst muss man von der Vorstellung, den Suchmaschinen &#8211; insbesondere Google &#8211; ein Schnippchen zu schlagen oder gar auszutricksen, weg. Das sollte nicht Ihr sportliches Ziel sein. Sehen Sie Suchmaschinen als einen Geschäftspartner für den Erfolg Ihrer Webseite und diesem Partner möchten Sie Ihre Ware verständlich präsentieren und erläutern, so dass die Suchmaschine wiederum Ihre Produkte Interessierten zugänglich machen kann. Und hierbei ist es vollkommen egal ob Sie Bröttchen verkaufen oder Artikel zum Erlernen von Häkeln anbieten, Grundlage für alle Webseiten sind Informationen!</p>
<p>Der erste Teil dieser vierteiligen Artikelserie</p>
<ul>
<li><a href="http://www.el-mediaagentur.com/2010/03/23/tipps-zur-blog-suchmaschinenoptimierung-teil-1-bestandsaufnahme/">Blog Suchmaschinenoptimierung &#8211; Teil 1: Bestandsaufnahme</a></li>
<li><a href="http://www.el-mediaagentur.com/2010/03/31/tipps-zur-blog-suchmaschinenoptimierung-teil-2-schlusselworter/">Blog Suchmaschinenoptimierung &#8211; Teil 2: Schlüsselwörter</a></li>
<li>(Entwurf) Blog Suchmaschinenoptimierung – Teil 3: Technische Möglichkeiten </li>
<li>(Entwurf) Blog Suchmaschinenoptimierung &#8211; Teil 4: Link Popularität</li>
</ul>
<p>befasst sich mit der Bestandsaufnahme. Um einen effektiven Handlungsrahmen zur Optimierung des eigenen Blogs zu schaffen, erfolgt als erstes die Inventur der eigenen Blogseiten.</p>
<h2>Teil 1: Bestandsaufnahme</h2>
<h3>Wie sieht eine Suchmaschine meinem Blog?</h3>
<p>Wer schon einmal mit einem puristischen Textbrowser (z.b. <a href="http://lynx.isc.org/">Lynx</a>) Webseiten besucht hat, wird verstehen warum man seinen Blog durch die &#8220;Augen&#8221; eines Crawlers anschauen sollte.<br />
<a href="http://www.webconfs.com/search-engine-spider-simulator.php" target="_blank">Search Engine Spider Simulator</a> und<br />
<a href="http://www.linkvendor.de/seo-tools/se-spider.html" target="_blank">Spider Simulation</a> sind zwei Simulatoren die einem die nötige Erkenntnis geben. Schnell fallen umfangreiche HTML Konstrukte (bsp. Tabellen) auf oder es verschwinden wichtige Textbestandteile (Überschriften, Texthervorhebungen etc.) im Zeichensalat. Hier wird jedem klar sein, dass HTML und CSS wichtige Werkzeuge, um eine Webseite für Suchmaschinen aufzuräumen, sind. Sie werden sich jetzt fragen: &#8220;Ein Crawler ist doch ein Programm und den kümmert es doch nicht ob eine Webseite aufgeräumt ist?&#8221;, damit haben Sie prinzipiell recht, aber auch ein Programm benötigt Anhaltspunkte um Informationen zu kategorisieren. Eine Überschrift soll als Überschrift erkennbar sein, auch für einen automatisierten Crawler. Es wäre zuviel des Guten etwas an dieser Stelle über das semantische Web zu schreiben, aber für Interessierte lohnt sich eine Recherche zu dem Thema. Später dazu mehr, wie genau man Quellcode aufräumen kann.</p>
<h3>Wie ist die Webseite intern verlinkt?</h3>
<p>Warum sollte man das wissen wollen, man möchte doch von außen verlinkt sein? Stellen Sie sich Ihre Webseite als Wegekonstrukt durch Ihre Themengebiete vor. Eine interne Vernetzung zu artverwandten Themen ist immer sinnvoll und erhöht zudem die Benutzerfreundlichkeit Ihrer Webseite. Machen Sie sich die Mühe und prüfen Sie stetig die interne Verlinkung, insbesondere bei Veröffentlichung neuer Artikel in Ihrem Blog. Zum einen kann man mit den Google Webmaster-Tools die interne Verlinkung prüfen und zum anderen gibt es eine Desktopapplikation namens <a href="http://home.snafu.de/tilman/xenulink.html" target="_blank">Xenu&#8217;s Link Sleuth (TM)</a>. Mit Xenu&#8217;s Link Sleuth (TM) werden unter anderem auch Broken-Links schnell aufgespürt. Broken-Links zeugen von einem nicht aktualisierten Blog und das könnte relevant für Google und Co. sein und sollte daher zu den Aufgaben der Blogpflege gehören. So wie Sie Ihre Wohnung aufräumen, sollten Sie auch Ihren Blog rein halten oder um es mit den Worten eines Kollegen zu sagen: &#8220;Die Webseite braucht kein Redesign, eher sollte hier mal Hausputz gemacht werden!&#8221; und damit meint er das die vorhandenen Informationen der Webseite neu strukturiert werden müssen. </p>
<h3>Unter welchen Begriffen finde ich Seiten meines Blogs?</h3>
<p>Falls Sie ab diesem Zeitpunkt bereits bei Google Analytics einen Zugang besitzen, dann schauen Sie einfach der Realität ins Auge und prüfen mit welchen Schlüsselwörtern Webseiten besucht worden. Hierbei sollten Sie streng mit sich sein und &#8220;wirkliche&#8221; Besucher, Absprungraten und Aufenthaltsdauer berücksichtigen. Es gibt Webseiten die werden unter den tollsten Schlüsselwörter gefunden, sind aber inhaltlich toter als das Hirschgulasch von gestern.<br />Sollten Sie noch kein kostenfreies Analytics Konto nutzen, ist Ihrer Fanatasie freien Lauf gelassen, d.h. schnappen Sie sich eine Suchmaschine und versuchen Artikel Ihrer Webseite zu finden. Mit </p>
<pre class="brush: plain;">
site: blogdomain.de
</pre>
<p>(natürlich <i>blogdomain.de</i> mit Ihren Domainnamen ersetzen) in die Google Suchmaske eingegeben, sehen Sie alle Seiten die in Google zu Ihrer Domain indexiert sind. Anschliessend versuchen Sie mit passenden Schlüsselwörtern ein paar dieser Seiten in Google wiederzufinden.</p>
<h3>Fazit der Bestandsaufnahme</h3>
<p>Die Bestandsaufnahme dient dazu, dass Ihnen bewusst wird, wo Optimierungpotential existiert und Hebel ansetzbar sind. Im kommenden Teil <i>Blog Suchmaschinenoptimierung – Teil 2: Schlüsselwörter</i> befassen wir uns mit den Schlüsselwörtern,  und der Verbesserung derer Wirkungsfähigkeit.</p>
<h3>Hinweis</h3>
<p>Diese Artikel ist ein praktischer Leitfaden ohne Gewähr.</p>
<h3>Weiterführende Literatur</h3>
<p>empfehlenswert sind folgende Bücher:</p>
<table>
<tr>
<td>
<a href="http://www.amazon.de/gp/product/3868502882?ie=UTF8&#038;tag=elmediaagentu-21&#038;linkCode=as2&#038;camp=1638&#038;creative=6742&#038;creativeASIN=3868502882"><img border="0" style="border: none;" src="/images/41riiwsgzGL__SL110_.jpg"></a><img src="http://www.assoc-amazon.de/e/ir?t=elmediaagentu-21&#038;l=as2&#038;o=3&#038;a=3868502882" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</td>
<td>
<a href="http://www.amazon.de/exec/obidos/ASIN/3868502882/elmediaagentu-21/" target="_blank">Grundlagen der Suchmaschinenoptimierung: It&#8217;s not a trick &#8211; It&#8217;s knowledge</a> von Thomas Promny</li>
</td>
</tr>
<tr>
<td>
<a href="http://www.amazon.de/gp/product/3836212331?ie=UTF8&#038;tag=elmediaagentu-21&#038;linkCode=as2&#038;camp=1638&#038;creative=6742&#038;creativeASIN=3836212331"><img border="0" style="border: none;" src="/images/51J0kALZPnL__SL110_.jpg"></a><img src="http://www.assoc-amazon.de/e/ir?t=elmediaagentu-21&#038;l=as2&#038;o=3&#038;a=3836212331" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />
</td>
<td>
<a href="http://www.amazon.de/exec/obidos/ASIN/3836212331/elmediaagentu-21/" target="_blank">Suchmaschinen-Optimierung für Webentwickler: Funktionsweisen von Google &#038; Co. Ranking-Optimierung und Usability</a> von Sebastian Erlhofer
</td>
</tr>
<tr>
<td>
<a href="http://www.amazon.de/gp/product/3826617037?ie=UTF8&#038;tag=elmediaagentu-21&#038;linkCode=as2&#038;camp=1638&#038;creative=6742&#038;creativeASIN=3826617037"><img border="0" style="border: none;" src="/images/411sY2xEmEL__SL110_.jpg"></a><img src="http://www.assoc-amazon.de/e/ir?t=elmediaagentu-21&#038;l=as2&#038;o=3&#038;a=3826617037" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></p>
</td>
<td>
<a href="http://www.amazon.de/exec/obidos/ASIN/3826617037/elmediaagentu-21/" target="_blank">Website Boosting 2.0: Suchmaschinen-Optimierung, Usability, Online-Marketing</a> von Mario Fischer
</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.el-mediaagentur.com/2010/03/23/tipps-zur-blog-suchmaschinenoptimierung-teil-1-bestandsaufnahme/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Protonotes – PostIts für die Webentwicklung</title>
		<link>http://www.el-mediaagentur.com/2010/03/22/protonotes-postits-fur-die-webentwicklung/</link>
		<comments>http://www.el-mediaagentur.com/2010/03/22/protonotes-postits-fur-die-webentwicklung/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 23:33:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Scrum, Kollaboration und Projektmanagment]]></category>
		<category><![CDATA[post its]]></category>
		<category><![CDATA[Protonotes]]></category>
		<category><![CDATA[Web Notes]]></category>
		<category><![CDATA[Web Sticky Notes]]></category>

		<guid isPermaLink="false">http://www.el-mediaagentur.com/?p=387</guid>
		<description><![CDATA[Team unterstützende Austauschformen sind in der agilen Softwareentwicklung ein wichtiges Bindeglied. Daher bin ich stetig auf der Suche nach einfachen und agilen Kollaboration-Tools. Neulich stiess ich auf http://www.protonotes.com/.






Protonotes bieten einen Service um digitale Post Its direkt in Webseiten-bzw. projekten einzubinden. Entweder setzt man dieses Tool als &#8220;Erinner mich&#8221; ein und/ oder man möchte den Mitentwicklern [...]]]></description>
			<content:encoded><![CDATA[<p><b>Team unterstützende Austauschformen sind in der agilen Softwareentwicklung ein wichtiges Bindeglied. Daher bin ich stetig auf der Suche nach einfachen und agilen Kollaboration-Tools. Neulich stiess ich auf <a href="http://www.protonotes.com/">http://www.protonotes.com/</a>.</b><span id="more-387"></span></p>
<div id="inline_ad" style="float: left;">
<script type="text/javascript"><!--
google_ad_client = "pub-2821839982812174";
/* Mediaum Rectangle 300x250 (leicht abgr.), Erstellt 27.02.08 */
google_ad_slot = "3929261217";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<p>Protonotes bieten einen Service um digitale Post Its direkt in Webseiten-bzw. projekten einzubinden. Entweder setzt man dieses Tool als &#8220;Erinner mich&#8221; ein und/ oder man möchte den Mitentwicklern eine Notiz direkt an der richtigen Stelle online im Projekt hinterlassen.<br />
Hat man sich bei Protonotes registriert erhält man eine Gruppenummer und kann sofort, nach Einfügen von etwas Javascript,</p>
<pre class="brush: jscript;">
&lt;script src=&quot;http://www.protonotes.com/js/protonotes.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;&gt;
var groupnumber=&quot;xxx&quot;;
var show_menubar_default=false;
var private_database_key=&quot;xxx&quot;;
&lt;/script&gt;
</pre>
<p>mit den hilfreichen &#8220;Sticky notes&#8221; arbeiten. Mit einer ausblendbaren Toolbar werden Notizen erstellt, aus-oder eingeblendet. Die Notizen sind leicht transparent, verschiebbar und bieten Checkboxen für &#8220;reviewed&#8221; und &#8220;completed&#8221;.<br />
<img src="http://www.el-mediaagentur.com/images/protonotes_screenshot.jpg" height="259" width="321" alt="Protonotes Screenshot" title="Protonotes Screenshot" /></p>
<p class="img_title">Abbildung 1: Protonotes Screenshot</p>
<p>Möchte man die Notizen auf seinem eigenen Server speichern, bietet Protonotes das Hinterlegen von MySQL-Zugangsdaten seiner Datenbank an. Protonotes generiert hierfür einen <i>private_database_key</i> den man dann als Variable in Javascript übergibt. Auch eine .csv Exportfunktionen bietet Protonotes an, um alle Notizen in eine Datei zu sichern.</p>
<h3>Fazit</h3>
<p>Kostenlos und praxistauglich.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.el-mediaagentur.com/2010/03/22/protonotes-postits-fur-die-webentwicklung/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Gestaltpsychologie</title>
		<link>http://www.el-mediaagentur.com/2010/03/20/gestaltpsychologie/</link>
		<comments>http://www.el-mediaagentur.com/2010/03/20/gestaltpsychologie/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 13:08:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Benutzerfreundlichkeit]]></category>
		<category><![CDATA[Elementenpsychologie]]></category>
		<category><![CDATA[Gestaltpsychologie]]></category>
		<category><![CDATA[Scheinbewegungsexperiment]]></category>
		<category><![CDATA[Wahrnehmungslehre]]></category>

		<guid isPermaLink="false">http://www.el-mediaagentur.com/?p=358</guid>
		<description><![CDATA[Die Gestaltpsychologie ist ein Teilgebiet der Psychologie. Die Gestaltpsychologie ist die Wahrnehmungslehre über die Verarbeitung elementarer optischer Reize durch unser Gehirn. Wie verarbeiten wir den Aufbau der optischen Welt?






Den Urpsrung der Gestaltpsychologie entstand in den 20er als Gegenbewegung zur Elementenpsychologie. Die Elementenpsychologie wandte sich gegen die Vorstellung das die Wahrnehmung aus additiven Eindrücken besteht.
Ein Objekt [...]]]></description>
			<content:encoded><![CDATA[<p><b>Die Gestaltpsychologie ist ein Teilgebiet der Psychologie. Die Gestaltpsychologie ist die Wahrnehmungslehre über die Verarbeitung elementarer optischer Reize durch unser Gehirn. Wie verarbeiten wir den Aufbau der optischen Welt?</b><span id="more-358"></span></p>
<div id="inline_ad" style="float: left;">
<script type="text/javascript"><!--
google_ad_client = "pub-2821839982812174";
/* Mediaum Rectangle 300x250 (leicht abgr.), Erstellt 27.02.08 */
google_ad_slot = "3929261217";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<p>Den Urpsrung der Gestaltpsychologie entstand in den 20er als Gegenbewegung zur Elementenpsychologie. Die Elementenpsychologie wandte sich gegen die Vorstellung das die Wahrnehmung aus additiven Eindrücken besteht.</p>
<p>Ein Objekt das aus mehreren Teilobjekten besteht, hat für uns im Ganzen einen andere Bedeutung als die Teilobjekte im Einzelnen.</p>
<p>
Als die Begründer der Gestalpsychologie gelten:</p>
<div style="clear: both; float: left;">
<img src="http://www.el-mediaagentur.com/images/max_wertheimer.jpg" width="92" height="116" /></p>
<p class="img_title">Abbildung 1: Max Wetheimer</p>
</div>
<div style="float: left; margin-left: 20px;">
<img src="http://www.el-mediaagentur.com/images/wolfgang_koehler.jpg" width="92" height="116" /></p>
<p class="img_title">Abbildung 2: Wolfgang Köhler</p>
</div>
<div style="float: left; margin-left: 20px;">
<img src="http://www.el-mediaagentur.com/images/kurt_koffka.jpg" width="92" height="116" /></p>
<p class="img_title">Abbildung 3: Kurt Koffka</p>
</div>
<p><br style="clear: both;" /><br />
Max Wertheimer setzte sich der Elementenpsychologie entgegen und widerlegte die Ansichten der Elementenpsychologie durch das Scheinbewegungsexperiment:<br />
Wenn in einer Versuchsanordnung auf der linken Seite eines Feldes ein Lichtstreifen kurz auftritt, dann eine Dunkelpause von ca. 50 Millisekunden erfolgt, bevor der Streifen auf der rechten Seite des Feldes wieder auftaucht, so nimmt unsere Wahrnehmung im gesamten Versuchsaufbau eine Bewegung von links nach rechts wahr , obwohl während der Dunkelpause keinerlei physikalische Lichtreize vorhanden waren. Ab ca. 60-200 ms nimmt der Mensch Scheinbewegung wahr.</p>
<p>Typische Fragen der Gestaltpsychologie sind:</p>
<ul>
<li>Wie entsteht der Eindruck einer Form?</li>
<li>Was ist eine „gute“ Form?</li>
<li>Wie sehen wir Zusammenhänge zwischen Elementen?</li>
<li>Warum sehen wir Zusammenhänge zwischen Elementen?</li>
</ul>
<p>Weiterführende Themen:</p>
<ul>
<li>Wahrnehmung</li>
<li><a href="http://www.el-mediaagentur.com/2008/02/02/gestaltgesetze/">Gestaltgesetze</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.el-mediaagentur.com/2010/03/20/gestaltpsychologie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PL/SQL Embedded Gateway</title>
		<link>http://www.el-mediaagentur.com/2010/03/19/plsql-embedded-gateway/</link>
		<comments>http://www.el-mediaagentur.com/2010/03/19/plsql-embedded-gateway/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 18:08:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[APEX]]></category>
		<category><![CDATA[apxconf.sql]]></category>
		<category><![CDATA[CREATE_DAD]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Gateway]]></category>
		<category><![CDATA[GETHTTPPORT]]></category>
		<category><![CDATA[Oracle 11g]]></category>
		<category><![CDATA[PL/SQL]]></category>
		<category><![CDATA[SETHTTPPORT]]></category>
		<category><![CDATA[SET_DAD_ATTRIBUTE]]></category>

		<guid isPermaLink="false">http://www.el-mediaagentur.com/?p=302</guid>
		<description><![CDATA[Seit Oracle 11g und APEX 3.0.1 hat man die Wahl einen Apache (1.3 oder 2.0) Webserer mit mod_plsql oder dem integrierten PL/SQL Gateway für die Bereitstellung  dynamisch erstellter PL/SQL Inhalte zu nutzen. Wer bsp. PL/SQL Prozeduren online ausführbar machen möchte und auf die Verwendung eines eigenständigen Apache Webservers (Proxy-Server, URL-Rewriting, Filesystem etc.) verzichten kann, [...]]]></description>
			<content:encoded><![CDATA[<p><b>Seit Oracle 11g und APEX 3.0.1 hat man die Wahl einen Apache (1.3 oder 2.0) Webserer mit mod_plsql oder dem integrierten PL/SQL Gateway für die Bereitstellung  dynamisch erstellter PL/SQL Inhalte zu nutzen. Wer bsp. PL/SQL Prozeduren online ausführbar machen möchte und auf die Verwendung eines eigenständigen Apache Webservers (Proxy-Server, URL-Rewriting, Filesystem etc.) verzichten kann, der ist mit dem PL/SQL Embedded Gateway gut beraten. Im Folgenden wird die einfache Installation bzw. Aktivierung des PL/SQL Embedded Gateway beschrieben.</b><span id="more-302"></span></p>
<div id="inline_ad" style="float: left;">
<script type="text/javascript"><!--
google_ad_client = "pub-2821839982812174";
/* Mediaum Rectangle 300x250 (leicht abgr.), Erstellt 27.02.08 */
google_ad_slot = "3929261217";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<p>Um den PL/SQL Embedded Gateway zu verwenden, führt man als SYS zuerst das folgende</p>
<pre class="brush: bash;">
SQL&gt; @$ORACLE_HOME/apex/apxconf.sql;
</pre>
<p>Konfigurations-Skript aus. Dieses SQL-Skript fragt nach dem HTTP-Port, über den später PL/SQL per URL angesprochen werden kann. Mit</p>
<pre class="brush: bash;">
SQL&gt; EXEC DBMS_XDB.SETHTTPPORT(8080);
</pre>
<p>kann dieser Port nachträglich verändert werden. Ein Aufruf mit Port 0 </p>
<pre class="brush: bash;">
SQL&gt; EXEC DBMS_XDB.SETHTTPPORT(0);
</pre>
<p>deaktivert den PL/SQL embedded Gateway und mit</p>
<pre class="brush: bash;">
SQL&gt; SELECT DBMS_XDB.GETHTTPPORT FROM DUAL;
</pre>
<p>wird der zur Zeit verwendete Port ausgegeben.<br />
Nach der Konfiguration durch <i>apxconf.sql</i> kann mit dem Listener Status-Kommando</p>
<pre class="brush: bash;">
$ lsnrctl status
</pre>
<p>geprüft werden ob der Port aktiv ist. Es sollte eine Zeile ähnlich der folgenden </p>
<pre class="brush: bash;">
$ (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=...)(PORT=8080))(Presentation=HTTP)(Session=RAW))
</pre>
<p>mit aufgeführt werden.<br />
Um bsp. PL/SQL Prozeduren über den PL/SQL Embedded Gateway zugänglich zu machen, benötigt man außerdem einen freigeschalteten</p>
<pre class="brush: bash;">
SQL&gt; alter user ANONYMOUS account unlock
</pre>
<p>ANONYMOUS Benutzer.<br />
Des Weiteren wird ein Database Access Descriptor (DAD) benötigt. Ein DAD übernimmt in etwa die Arbeit wie mod_plsql für den Apache.<br />
Sozusagen ein Servlet für den XML DB HTTP Listener. Unter <a href="http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28424/adfns_web.htm" target="_blank">http://download.oracle.com/docs/cd/B28359_01/appdev.111/b28424/adfns_web.htm</a> im Abschnitt <i>Table 10-2 Mapping Between mod_plsql and Embedded PL/SQL Gateway DAD Attributes</i> sieht man zum Vergleich eine Gegenüberstellung der DAD und mod_plsql Attribute.<br />
Ein DAD wird später durch einen Teil in der URL repräsentiert bzw. angesprochen.<br />
Mit </p>
<pre class="brush: bash;">
SQL&gt; EXEC DBMS_EPG.CREATE_DAD('PL_SQL', '/plsql/*');
</pre>
<p>erstellt man ein DAD mit der Bezeichnung <i>PL_SQL</i> und dem URL-Teilpfad <i>/plsql/</i>.<br />
Damit der ANONYMOUS Benutzer für das DAD als eine Art &#8220;Schnittstelle&#8221; zwischen der DB und dem DAD zu fungieren kann, stellt man mit</p>
<pre class="brush: bash;">
SQL&gt; EXEC DBMS_EPG.SET_DAD_ATTRIBUTE('PL_SQL', 'database-username', 'ANONYMOUS');
</pre>
<p>den ANONYMOUS Benutzer für das DAD ein.<br />
Ab hier wäre der PL/SQL Embedded Gateway grundlegend konfiguriert. Um nun eine Prozedur eines Benutzers öffentlich über den<br />
PL/SQL Embedded Gateway zur Verfügung zu stellen, muß die Prozedur für PUBLIC per</p>
<pre class="brush: bash;">
SQL&gt; GRANT execute on PROZEDUR_NAME to public;
</pre>
<p>die Ausführbarkeit dieser Prozedur erlaubt werden. Wird in dieser Prozedur auf andere Objekte zugeriffen, müssen auch für diese die entsprechenden<br />
Rechte (bsp. für Tabellen GRANT select on TABELLEN_NAME to public) vergeben werden. Erst anschließend ist nach folgenden URL-Schema</p>
<pre class="brush: bash;">

http://www.domain.de/plsql/objekt_inhaber.objekt_name
</pre>
<p>das Objekt aufrufbar.</p>
<h3>Fazit</h3>
<p>Der PL/SQL Embedded Gateway ist eine einfache Methode um datenbanknah Objekte oder APEX-Applikationen per Browser ausführbar zu machen. Es entfällt<br />
die umfangreiche Konfiguration eines Apache Webservers. Auch sichere Verbindungen per SSL sind möglich. Benötigt man keine Sonderfunktionen á la<br />
URL-Umschreibung (mod_rewrite) oder einen Auslagerung des Webserver (Perormanz-und Sicherheitsaspekte) und Ähnliches, dann reicht ein PL/SQL<br />
Embedded Gateway für die meisten Fälle aus. </p>
<h3>Hinweis</h3>
<p>Diese Anleitung ist ein praktischer Leitfaden ohne Gewähr.</p>
<h3>Weiterführende Literatur</h3>
<p>empfehlenswert sind folgende Bücher:</p>
<ul>
<li><a href="http://www.amazon.de/exec/obidos/ASIN/3826655494/elmediaagentu-21/" target="_blank">Oracle APEX und Oracle XE in der Praxis</a> von Dietmar Aust, Jens-Christian Pokolm und Denes Kubicek</li>
<li><a href="http://www.amazon.de/exec/obidos/ASIN/3827326362/elmediaagentu-21/" target="_blank">Oracle 10g für den DBA: Effizient konfigurieren, optimieren und verwalten</a> von Johannes Ahrends, Dierk Lenz, Patrick Schwanke, und Günther Unbescheid</li>
<li><a href="http://www.amazon.de/exec/obidos/ASIN/3772373259/elmediaagentu-21/" target="_blank">Oracle 11g: Das umfassende Handbuch</a> von Lutz Fröhlich</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.el-mediaagentur.com/2010/03/19/plsql-embedded-gateway/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Monatliches Backup auf DVD unter Linux</title>
		<link>http://www.el-mediaagentur.com/2009/02/27/monatliches-backup-auf-dvd/</link>
		<comments>http://www.el-mediaagentur.com/2009/02/27/monatliches-backup-auf-dvd/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 13:10:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux und mehr]]></category>
		<category><![CDATA[backup image]]></category>
		<category><![CDATA[backup iso]]></category>
		<category><![CDATA[dvd+rw-tools]]></category>
		<category><![CDATA[dvd-backup]]></category>
		<category><![CDATA[fstab]]></category>
		<category><![CDATA[growisofs]]></category>
		<category><![CDATA[mkisofs]]></category>
		<category><![CDATA[shell-script]]></category>

		<guid isPermaLink="false">http://www.el-mediaagentur.com/index.php/archives/monatliches-backup-auf-dvd</guid>
		<description><![CDATA[Wer wert auf eine lückenlose Datensicherung legt, gerade in Hinblick auf Datenbank Backups (cold/hot), der möchte von jedem Tag im Jahr den Datenbestand, insbesondere der Iterimdaten, rücksichern (recovern) können. Da nicht immer ein physischer Zugriff auf den Server erfolgen kann (einlegen/wechseln des Backupmediums), muss man sich andere Backup-Strategien überlegen. Folgendes Szenario wäre ein möglicher Ansatz: [...]]]></description>
			<content:encoded><![CDATA[<p><b>Wer wert auf eine lückenlose Datensicherung legt, gerade in Hinblick auf Datenbank Backups (cold/hot), der möchte von jedem Tag im Jahr den Datenbestand, insbesondere der Iterimdaten, rücksichern (recovern) können. Da nicht immer ein physischer Zugriff auf den Server erfolgen kann (einlegen/wechseln des Backupmediums), muss man sich andere Backup-Strategien überlegen. Folgendes Szenario wäre ein möglicher Ansatz: Es existieren ein oder mehrere Webserver mit unterschiedlichen Standorten. Mit Rsync (s. Artikel <a href="http://www.el-mediaagentur.com/index.php/archives/rsync-datei-synchronisation-leicht-gemacht">Rsync &#8211; Synchronisation leicht gemacht</a>), Reoback (s. Artikel <a href="http://www.el-mediaagentur.com/index.php/archives/reoback-backup">REOBack Backup</a>) und Master/Slave MySQL Replikation (s. Artikel <a href="http://www.el-mediaagentur.com/index.php/archives/mysql-replizierung-master-und-slave">MySQL Replikation / Master und Slave in 4 Schritten</a>) synchronisiert man diese Webserver mit einem &#8220;kleinen&#8221; Linux Server daheim. Man zieht sozusagen alle Applikations- und Interimdaten auf ein System, auf das man physischen Zugriff hat, zusammen. Und an dieser Stelle steigen wir in die folgende Anleitung für ein monatliches Backup auf DVD ein.</b><span id="more-51"></span></p>
<div id="inline_ad" style="float: left;">
<script type="text/javascript"><!--
google_ad_client = "pub-2821839982812174";
/* Mediaum Rectangle 300x250 (leicht abgr.), Erstellt 27.02.08 */
google_ad_slot = "3929261217";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<h3>Was wird benötigt?</h3>
<p>1. Linux Kernel >= 2.6<br />
2. dvd+rw-tools<br />
3. ein Backupordner mit Symlinks auf die Backupverzeichnisse<br />
4. ein Cronjob auf eine ausführbares Shell-Script<br />
5. ein Shell-Script für das Anstossen des Brennvorgangs</p>
<h3>Zu 1.: Warum Linux Kernel >= 2.6</h3>
<p>Unter der Kernel Version 2.6 wird ein IDE DVD Brenner als SCSI Gerät mit einer SCSI-Emulation angesprochen. Da dies etwas umständlicher ist und man schliesslich selbst das Derivat auf dem Heimserver bestimmen kann, empfehle ich ein Kernel >= 2.6 zu verwenden.</p>
<h3>Zu 2.: dvd+rw-tools installieren</h3>
<p>Mit</p>
<pre class="brush: bash;">apt-get install -u dvd+rw-tools</pre>
<p>installieren wir das benötigte Programm-Bundle um DVDs beschreiben zu können.</p>
<h3>Zu 3.: Backupordner mit Symlinks auf die Backupverzeichnisse</h3>
<p>Mit</p>
<pre class="brush: bash;">mkdir ORDNERNAME</pre>
<p> erstellen wir einen Ordner, welche die Symlinks auf die Backup-Verzeichnisse beinhalten wird.<br />Anschliessend erstellen wir mit</p>
<pre class="brush: bash;">ln -s ZIEL LINKNAME</pre>
<p> in diesem Ordner die Symlinks auf alle Verzeichnisse welche gesichert werden sollen. Warum Symlinks? Mit Symlinks ersparen wir uns die Daten &#8211; die bereits auf der Platte vorhanden sind &#8211; zu kopieren, des Weiteren sprechen wir wie durch Zauberhand immer die aktuellen Dateien an.</p>
<h3>Zu 4.: Cronjob auf Shell-Script</h3>
<p>Je nachdem wieviele Daten in einem gewissen Zeitraum zu erwarten sind, sollte der Cronjob im entsprechenden Intervall aufgerufen werden. Bsp. werden über 4,7 GB (normaler DVD-Rom, Vorsicht! Die Herstellerangaben für 1 GB entspricht 1000 MB und nicht 1024 MB, d.h. eine DVD-Rom kann also mit ca. 4,3 GB gefüllt werden) in einen Monat erwartet, sollte entweder der Cronjob in kürzeren Zeiträumen ausgeführt werden oder man gestaltet das Shell-Script so, dass die Datenmenge auf mehrere DVDs aufgeteilt wird oder man benutzt andere Medien (bsp. Dual-Layer-DVD mit ca. doppelter Kapazität im Vergleich zur einfachen DVD-Rom). In meinem Fall genügt ein monatliches brennen, also sehe der Cronjob folgendermaßen aus:</p>
<pre class="brush: bash;">
# m   h     dom    mon   dow   command
0     11      15    *     *     /usr/local/bin/dvdbackup.sh &gt;&gt; /var/log/burning-dvd-backup.log
</pre>
<p>Dieser Cronjob wird jeden 15ten im Monat um 11:00 Uhr ausgeführt und ruft das Script <i>dvdbackup.sh</i> auf. Mit <i>>> /var/log/burning-dvd-backup.log</i> leitet man die &#8220;grundlegende&#8221; Ausgabe des Scriptes in eine Log-Datei um. Warum ich hier von &#8220;grundlegende&#8221; Ausgabe spreche erläutere ich im nächsten Schritt.</p>
<h3>Zu 5.: Shell-Script</h3>
<p>Mit <i>vi</i> oder <i>touch</i> erstellen wir eine Textdatei namens &#8220;dvdbackup.sh&#8221;. Diese machen wir mit </p>
<pre class="brush: bash;">
chmod 755 dvdbackup.sh
</pre>
<p>ausführbar. Anschliessend kopieren wir folgendes Listing &#8211; mit entsprechenden Anpassungen &#8211; in die Textdatei:</p>
<pre class="brush: bash;">
#!/bin/bash
cat /dev/null &gt; /var/log/burning-dvd-backup.log

echo &quot;$(date '+%b %d %H:%M:%S') debian-mrs creating monthly backup dvd:&quot;
echo &quot;---------------------------------------------------------------------------------&quot;

#image von symlink ordner erstellen
echo &quot;creating iso backup image&quot;
mkisofs -f -l -iso-level 4 -o /storage/tmpbackup.iso /storage/symbackupfolder/ &gt;&gt; /var/log/burning-dvd-backup.log 2&gt;&amp;1

isosize=`ls -al /storage/tmpbackup.iso | awk '{print $5}'`

if [ $isosize -lt 4697620480 ] ; then
        echo &quot;burning iso backup image on dvd&quot;
        growisofs -dvd-compat -Z /dev/hda=/storage/tmpbackup.iso &gt;&gt; /var/log/burning-dvd-backup.log 2&gt;&amp;1

        echo &quot;eject dvd&quot;
        eject
else
        echo &quot;can't write iso backup image, because iso is to large&quot;
fi

echo &quot;remove iso backup image&quot;
rm /storage/tmpbackup.iso

echo &quot;---------------------------------------------------------------------------------&quot;
</pre>
<h3>Download dvdback.sh</h3>
<p><a class="download" href="http://www.el-mediaagentur.com/download.php?id=fa43a3dbea4bdc50bed3afb47704096e" title="dvdbackup.sh">dvdbackup.sh</a></p>
<p>Was macht das Script?<br />
1. Mit <i>cat /dev/null > /var/log/burning-dvd-backup.log</i> leere ich die Log-Datei.</p>
<p>2. Die Ausgaben mit <i>echo</i> sind genau die Ausgaben die ich durch den Cronjob in die Log-Datei umleite.</p>
<p>3. Mit <i>mkisofs -f -l -iso-level 4 -o /storage/tmpbackup.iso /storage/symbackupfolder/ >> /var/log/burning-dvd-backup.log 2>&#038;1</i> erstellt man ein ISO-File namens <i>tmpbackup.iso</i> von dem erstellten Backup-Ordner, der wiederum durch die Symlinks die entsprechend zu sichernenden Ordner enthält. Die &#8220;spezielle&#8221; Ausgabe von <i>mkisofs</i> leite ich mit <i>>> /var/log/burning-dvd-backup.log 2>&#038;1</i> auch in die Log-Datei um. <i>2>&#038;1</i> entspricht hierbei, dass alle Standardausgaben sowie Fehlermeldungen umge-&#8221;piped&#8221; werden.</p>
<p>4. Die erste <i>if</i>-Bedinung (<i>if [ $isosize -lt 4697620480 ] ;</i>) prüft die Größe des Images und vergleicht diese mit der maximalen Kapazität MEINER Rohlinge! Jeder DVD-Rohling ist unterschiedlich, mit <i>atip</i> kann man die freien Blöcke einer DVD ermitteln und mit 2048 Bytes (Blockgrösse) multiplizieren, nun hat man die maximale Kapazität der DVD in Bytes und ersetzt diese mit <b>4697620480</b>.</p>
<p>5. Wenn das ISO-Image grösser als die maximale Kapazität meines Rohlings ist, wird der Brennvorgang abgebrochen, da ich nach oben noch ca. 500-800 MB Luft habe, ist das für mich die einfachste Lösung gewesen. Stattdessen kann man natürlich das ISO-Image mit <i>split</i> in mundgerechte Stücke zerteilen und hiervon wieder ISO-Images erstellen, die dann in einer Schleife nacheinander gebrannt werden (mit manuellen DVD Wechseln) oder man legt mehrere Backup-Verzeichnisse mit unterschiedlichen Symlinks an, um so bereits zu Beginn mehrere ISOs zu planen und anschliessend zu erstellen.</p>
<p>6. Passt das Image auf den Rohling, wird es nun mit <i>growisofs -dvd-compat -Z /dev/hda=/storage/tmpbackup.iso >> /var/log/burning-dvd-backup.log 2>&#038;1</i> gebrannt. Statt <i>/dev/hda</i> muss eventuell etwas anderes eingetragen werden, in meinem Fall ist das DVD Laufwerk über <i>/dev/hda</i> ansprechbar. Um den Gerätenamen herauszufinden, genügt ein Blick per <i>vi</i> in die <i>/etc/fstab</i>. Der zu indentifizierende Eintrag sollte so</p>
<pre class="brush: bash;">
&lt;b&gt;/dev/hda&lt;/b&gt;        /media/cdrom0   udf,iso9660 user,noauto     0       0
</pre>
<p>oder ähnlich aussehen. <i>cdrom0</i> oder <i>ido9660</i> sind typischen Hinweise auf ein CD-Rom oder DVD-Laufwerk.</p>
<p>6. Abschliessend wird mit <i>eject</i> die DVD ausgeworfen und mit <i>rm /storage/tmpbackup.iso</i> das temporäre ISO-Image gelöscht.</p>
<p><b>Voila!</b></p>
<h3>Hinweis</h3>
<p>Diese Anleitung ist ein praktischer Leitfaden ohne Gewähr.</p>
<h3>Weiterführende Literatur</h3>
<p>empfehlenswert sind folgende Bücher:</p>
<ul>
<li><a href="http://www.amazon.de/exec/obidos/ASIN/3826615875/elmediaagentu-21/" target="_blank">Linux-Server mit Debian GNU/Linux. Das umfassende Handbuch und Praxisbuch für die Versionen Etch (Debian 4.0) und Sarge (Debian 3.1): Das umfassende Praxis-Handbuch</a> von Eric Amberg</li>
<li><a href="http://www.amazon.de/exec/obidos/ASIN/3826617991/elmediaagentu-21/" target="_blank">Shell Skript Programmierung: Kommandos, Techniken, Konzepte. Die wichtigsten UNIX-Tools. Lösungen für den Systemadministrator</a> von Patrick Ditchen</li>
<li><a href="http://www.amazon.de/exec/obidos/ASIN/3897214261/elmediaagentu-21/" target="_blank">Linux in a Nutshell</a> von Ellen Siever, Stephen Figgins, Aaron Weber, und Lars Schulten</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.el-mediaagentur.com/2009/02/27/monatliches-backup-auf-dvd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSH mit DenyHosts sicherer machen</title>
		<link>http://www.el-mediaagentur.com/2008/09/08/ssh-mit-denyhosts-sicherer-machen/</link>
		<comments>http://www.el-mediaagentur.com/2008/09/08/ssh-mit-denyhosts-sicherer-machen/#comments</comments>
		<pubDate>Mon, 08 Sep 2008 16:58:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux und mehr]]></category>
		<category><![CDATA[Brute Force]]></category>
		<category><![CDATA[DenyHosts]]></category>
		<category><![CDATA[Linux Sicherheit]]></category>
		<category><![CDATA[SHHD]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[SSH absichern]]></category>

		<guid isPermaLink="false">http://www.el-mediaagentur.com/index.php/archives/ssh-mit-denyhosts-sicherer-machen</guid>
		<description><![CDATA[DenyHosts ist ein Linux Werkzeug, um über die Authentifizierungs-Log Anmeldungen gegen Brute Force Angriffe, beispielweise über SSH, zu überwachen. Mehrfach in kurzen Abstand wiederholte fehlgeschlagene Login-Versuche von der gleichen IP Adresse werden ermittelt und durch einen Eintrag der IP in die /etc/hosts.deny geblockt. DenyHosts kann durch einen Cron oder Live als Daemon ausgeführt werden. In [...]]]></description>
			<content:encoded><![CDATA[<p><b>DenyHosts ist ein Linux Werkzeug, um über die Authentifizierungs-Log Anmeldungen gegen <i>Brute Force</i> Angriffe, beispielweise über SSH, zu überwachen. Mehrfach in kurzen Abstand wiederholte fehlgeschlagene Login-Versuche von der gleichen IP Adresse werden ermittelt und durch einen Eintrag der IP in die <i>/etc/hosts.deny</i> geblockt. DenyHosts kann durch einen Cron oder Live als Daemon ausgeführt werden. In dieser Anleitung demonstriere ich die Einrichtung und Nutzung von DenyHosts als Daemon. </b><span id="more-50"></span></p>
<div id="inline_ad" style="float: left;">
<script type="text/javascript"><!--
google_ad_client = "pub-2821839982812174";
/* Mediaum Rectangle 300x250 (leicht abgr.), Erstellt 27.02.08 */
google_ad_slot = "3929261217";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<p>Diese Anleitung basiert auf einer Debian etch Distribution. Die Installation auf anderen Linux Derivaten sollte jedoch ähnlich vonstatten gehen. Für weiterführende Informationen lohnt sich ein Blick auf die offizielle <a href="http://denyhosts.sourceforge.net/" target="_blank">DenyHosts Webseite</a> zu werfen. </p>
<h3>DenyHosts installieren</h3>
<p>Mit dem Befehl <i>apt-get</i></p>
<p class="code">
apt-get install denyhosts
</p>
<p>wird zum einen DenyHosts installiert und sofern noch nicht vorhanden, <i>Python</i> mit installiert. Da DenyHosts eine Anwendung die in Python geschrieben ist, ist eine installierte Version von Python zwingend erforderlich.<br />
Unter <i>/usr/share/denyhosts</i> ist das Installationsverzeichnis nach absetzen des Befehls zu finden.</p>
<h3>DenyHosts konfigurieren</h3>
<p>Unter <i>/etc/</i> findet man nach der Installation die Konfigurationsdatei  <i>denyhosts.conf</i> von DenyHosts. Hier werden alle wichtigen Einstellungen für die Verfahrensweise von DenyHosts justiert. Folgend die wichtigsten Einstellungen:</p>
<p class="code">
SECURE_LOG = /var/log/auth.log   // anhand der Beschreibungen in der denyhosts.conf, muß hier die richtige Wahl der Log-Datei, abhängig von der eingesetzten Distribution, erfolgen. Mit # kann auskommentiert werden</p>
<p>DENY_THRESHOLD_INVALID = 3   // Anzahl erlaubter fehlgeschlagener Einlogversuche von nicht vorhandenen Benutzern</p>
<p>DENY_THRESHOLD_VALID = 3   // Anzahl erlaubter fehlgeschlagener Einlogversuche von vorhanden Benutzern</p>
<p>DENY_THRESHOLD_ROOT = 3   // Anzahl erlaubter fehlgeschlagener Einlogversuche durch root. VORSICHT! Standardwert ist auf 1 begrenzt, wenn man mit dem root Benutzer arbeitet sollte hier erhöht werden.</p>
<p>DENY_THRESHOLD_RESTRICTED = 3   // Anzahl erlaubter fehlgeschlagener Einlogversuche von eingeschränkten Benutzern</p>
<p>ADMIN_EMAIL = mail@el-mediaagentur.com   // E-Mail Adresse um über neue geblockte Hosts und/oder verdächtige Einlogversuche informiert zu werden
</p>
<p>Alle Weiteren Einstellungen können auf dem Ursprungswert gelassen werden, ansonsten ist ein Blick in die Erklärungstexte der Konfigurationsdatei oder des Handbuches gefragt.</p>
<h3>DenyHosts Daemon starten</h3>
<p>Mit einem beherzten Absetzen von</p>
<p class="code">
/etc/init.d/denyhosts start   // normaler Start<br />
/etc/init.d/denyhosts start .purge   // erlaubt die Variable PURGE_DENY zu nutzen um geblockte Hosts nach der Zeitspanne wieder aus der hosts.deny zu entfernen
</p>
<p>auf der Konsole wird DenyHosts gestartet.</p>
<p>Wenn Werte in der Konfigurationsdatei geändert wurden, werden diese erst nach einem Neustart</p>
<p class="code">
/etc/init.d/denyhosts restart
</p>
<p>in Kraft treten.</p>
<h3>Hinweis</h3>
<p>Das sportliche Ziel eines Angreifers ist sicherlich Root-Rechte zu erlangen. Wenn man mit dem Benutzer Root per SSH arbeiten muß, empfiehlt es sich über die SSH Konfiguration das direkte Einloggen des Root-Benutzers zu unterbinden. Stattdessen sollte über einen anderen Account, mit minimalen Rechten eingeloggt und dann mit <i>su</i> zu dem Root-Benutzer gewechselt werden. So hat der Angreifer zwei Passwörter als Barriere.</p>
<p>Diese Anleitung ist ein praktischer Leitfaden ohne Gewähr.</p>
<h3>Weiterführende Literatur</h3>
<p>empfehlenswert sind folgende Bücher:</p>
<ul>
<li><a href="http://www.amazon.de/exec/obidos/ASIN/389721413X/elmediaagentu-21/" target="_blank">Linux Server-Sicherheit </a> von  Michael D. Bauer</li>
<li><a href="http://www.amazon.de/exec/obidos/ASIN/3827256224/elmediaagentu-21/" target="_blank">Linux Hacker&#8217;s Guide. Sicherheit für Linux- Server und -Netze</a></li>
<li><a href="http://www.amazon.de/exec/obidos/ASIN/3446226265/elmediaagentu-21/" target="_blank">Praxisbuch Sicherheit für Linux-Server und -Netze</a> von Barbara Oberhaitzinger, Helmar Gerloni, Helmut Reiser und Jürgen Plate</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.el-mediaagentur.com/2008/09/08/ssh-mit-denyhosts-sicherer-machen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MySQL Binary Log Recovery</title>
		<link>http://www.el-mediaagentur.com/2008/03/15/mysql-binary-log-recovery/</link>
		<comments>http://www.el-mediaagentur.com/2008/03/15/mysql-binary-log-recovery/#comments</comments>
		<pubDate>Sat, 15 Mar 2008 17:18:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Binary Log]]></category>
		<category><![CDATA[my.cnf]]></category>
		<category><![CDATA[MySQL Binary Log]]></category>
		<category><![CDATA[mysqlbinlog]]></category>
		<category><![CDATA[punktgenaue Wiederherstellung]]></category>
		<category><![CDATA[Recovery]]></category>
		<category><![CDATA[Wiederherstellung]]></category>

		<guid isPermaLink="false">http://www.el-mediaagentur.com/index.php/archives/mysql-binary-log-recovery</guid>
		<description><![CDATA[Automatisch erzeugte Backups einer MySQL Datenbank helfen nicht in dem Zeitraum zwischen dem letzten und kommenden Backup. Es gibt einige Methoden um auch für diesen Zwischenraum (interim Daten) Datensicherheit zu gewährleisten, eine davon ist das Binary Log Recovery. 






Das Binary Log schreibt zur Laufzeit alle auf dem Server ausgeführten SQL-Transaktionen mit, dies wiederum verbraucht Ressourcen [...]]]></description>
			<content:encoded><![CDATA[<p><b>Automatisch erzeugte Backups einer MySQL Datenbank helfen nicht in dem Zeitraum zwischen dem letzten und kommenden Backup. Es gibt einige Methoden um auch für diesen Zwischenraum (interim Daten) Datensicherheit zu gewährleisten, eine davon ist das Binary Log Recovery. </b><span id="more-38"></span></p>
<div id="inline_ad" style="float: left;">
<script type="text/javascript"><!--
google_ad_client = "pub-2821839982812174";
/* Mediaum Rectangle 300x250 (leicht abgr.), Erstellt 27.02.08 */
google_ad_slot = "3929261217";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<p>Das Binary Log schreibt zur Laufzeit alle auf dem Server ausgeführten SQL-Transaktionen mit, dies wiederum verbraucht Ressourcen (je nach Frequentierung >= 1% CPU), weshalb manche Administratoren die Aktivität des binären loggen eingrenzen oder gar ausschalten. Die Vorteile die das Binary Log mitbringt sind aber enorm, insbesondere wenn neue Applikationen fehlerhafte SQL-Anweisungen absetzen.</p>
<h3>Binäres Loggen konfigurieren</h3>
<p>Alle Einstellungen die das Binary Log betreffen werden in der <i>/etc/mysql/my.cnf</i> vorgenommen</p>
<pre class="brush: bash;">
log_bin                 = /var/log/mysql/mysql-bin.log
expire_logs_days        = 10
max_binlog_size         = 100M
</pre>
<p>Durch <i>log_bin</i> wird der Speicherort der Log-Dateien bestimmt. <i>expire_logs_days</i> bestimmt den Zeitraum, in welchen die Logs aufbewahrt werden sollen, in dem Beispiel werden alle Logs die älter sind als 10 Tage entfernt. <i>max_binlog_size</i> gibt die maximal zugelassene Dateigröße für ein Log-File an. Die Angabe von <i>max_binlog_size</i> sollte unter Debian Systemen nie ohne die Einstellung <i>log_bin</i> aufgeführt werden, da hier der Server abstürzen würde. Je nachdem wieviele SQL-Statements erzeugt werden ist abzuwägen welche Größe und welcher Zeitraum berücksichtigt bzw. zugelassen werden soll. Unbedacht erstellte Applikationen können manchmal riesige Mengen an SQL-Anweisungen innerhalb eines Tages erzeugen, wenn diese Anwendung auch noch von mehreren Benutzern gleichzeitig benutzt wird, kann man sich ausmalen, dass die Grenzen eines zu klein gewählten Log-Files schnell erreicht sind und dann wäre der Vorteil dahin. Um Änderungen an der <i>my.cnf</i> wirksam zu machen, muß der MySQL Server neugestartet werden.</p>
<h3>Einfaches Wiederherstellen</h3>
<p>Durch das binäre Loggen in Verbindung mit der Sicherung der binären Log-Dateien ist es möglich ein vollst. Backup-Konzept zu erstellen. Empfehlen würde ich in Hinsicht auf die mitgeführten redundanten Daten nicht. Praktikabler ist das normale tägliche Backup (bsp. per MySQL Dump oder ähnliches) in Kombination mit dem Binary Log.<br />
Ein alltägliches Backup Szenario könnte folgendermaßen aussehen, vorrausgesetzt das tägliche Backup (bsp. immer um 00:00Uhr) und das Binary Log sind aktiv. Angenommen alle Daten gingen aus irgendeinem Grund verloren, dann ist der erste Schritt den Zugriff auf die Datenbank exklusiv für den Administrator zu setzen:</p>
<pre class="brush: bash;">$ mysqld --socket=/tmp/mysql_restore.sock --skip-networking</pre>
<p><i>skip-networking</i> ermöglicht den Zugriff nur über SSH oder direkt an der Server Konsole.<br />
Nach der Einschränkung des Zugriffs von außen, kann das tägliche Backup per Konsole eingespielt werden um so den Datenstand vom Vortag zu erhalten:</p>
<pre class="brush: bash;">$ mysql -u root -ppassword  --socket=/tmp/mysql_restore.sock \
    &lt; /var/backup/20080325.sql
</pre>
<p>Mit diesem Befehl wird das SQL Backup direkt auf den <i>mysql_restore.sock</i> geleitet. Anschliessend müssen noch die interim Daten wiederhergestellt werden, also die Daten die nach 00:00Uhr entstanden sind. Dazu verwendet man das Werkzeug <i>mysqlbinlog</i>. Vor Benutzung des Tools muß herausgefunden werden welche Log Dateien den jetzigen Tag betreffen, ein einfacher <i>ls -la</i> auf der Konsole im Binary Log Verzeichnis wird alle nötigen Informationen liefern. Nun kann von der kleinsten laufenden Nummer auftsteigend zum neuesten Log folgendermaßen vorgegangen werden:</p>
<pre class="brush: bash;">$ mysqlbinlog /var/log/mysql/mysql-bin.000xxx \
   | mysql -u root -ppassword \
           --socket=/tmp/mysql_restore.sock
</pre>
<p>Mit diesem Befehl werden alle Statements die durch das Binary Log in der Log Datei aufgezeichnet wurden direkt auf der MySQL Datenbank abgesetzt und erneut ausgeführt. Wenn man alle Log-Daten so abgearbeitet hat, hat man alle Daten bis zum DB-Crash wiederhergestellt. Ein abschliessender MySQL-DB Neustart wird die Datenbank wieder zur Verfügung stellen.</p>
<h3>Manuelles Wiederherstellen</h3>
<p>Es kann vorkommen, dass man nicht alle Daten wiederherstellen möchte, da nur eine fehlerhafte Anweisung Daten gelöscht hat. Dazu <i>piped</i> (umleiten) man die Ausgabe nicht direkt auf den MySQL Socket um, sondern in ein seperate Textdatei:</p>
<pre class="brush: bash;">$ mysqlbinlog /var/log/mysql/mysql-bin.000xxx \
    &gt; /tmp/tmp_mysql-bin-000xxx..sql
</pre>
<p>Danach kann mit <i>vi</i> oder <i>vim</i> oder einem anderen Texteditor die temporäre erstellte Datei bearbeitet werden, eventuell fehlerhafte Anweisungen entfernt und danach erneut in die DB eingespielt werden.</p>
<h3>Punktgenaues Wiederherstellen (Zeitstempel)</h3>
<p>Ab MySQL Version 4.1.4 sind die Parameter <i>&#8211;start-date</i> und <i>&#8211;stop-date</i> hinzugefügt wurden. Diese ermöglichen punktuelles Recovery. Beispielsweise löschte eine Anweisung die um 12:00Uhr am 23.03.2008 ausgeführt wurde einige Daten. Die Vorgehensweise wäre die gleiche wie die eben beschriebene, man spielt das tägliche Backup zurück und führt anschliessend folgendes Kommando aus:</p>
<pre class="brush: bash;">$ mysqlbinlog --stop-date=&quot;2008-03-23 11:59:59&quot;
      /var/log/mysql/bin.000xxx |
    mysql -u root -ppassword \
          --socket=/tmp/mysql_restore.sock
</pre>
<p>Hiermit werden alle SQL-Statements die bis 11:59:59 aufgelaufen sind neu auf der Datenbank ausgeführt. Wenn man die fehlerverursachende SQL-Anweisung nicht exakt ausfindig machen kann, dann möchte man vielleicht an dieser Stelle alle Anweisungen die nach dem Fehlerzeitraum abgesetzt wurden wiederherstellen:</p>
<pre class="brush: bash;">$ mysqlbinlog --start-date=&quot;2008-03-23 12:00:01&quot;
      /var/log/mysql/bin.000xxx |
    mysql -u root -ppassword \
          --socket=/tmp/mysql_restore.sock
</pre>
<p>Mit diesen beiden Parametern kann man sehr punktuell Daten wiederherstellen und fehlerhafte SQL-Anweisungen zu umgehen.</p>
<h3>Punktgenaues Wiederherstellen (Positionsangabe)</h3>
<p>Nach dem gleichen Prinzip wie <i>start-date</i> und <i>stop-date</i> funktioniert <i>start-position</i> und <i>stop-position</i>. Wenn man eine binäre Log-Datei in eine Textdatei ausgibt, dann erkennt man das jedes SQL-Statement eine eindeutige Log-Positionsangabe mitführt, auf dieser Basis kann man genauso punktuell Daten wiederherstellen. Wann wird diese Vorgehensweise notwendig? Ganz einfach, wenn man den ungefähren Zeitpunkt des Problemfalles nicht kennt, dann führt kein Weg an dieser Methode vorbei.</p>
<h3>Fazit</h3>
<p>Die Nachteile liegen in dem Verbrauch der Ressourcen, SQL-Statement lastige Anwendungen fluten die Logs, es gilt abzuwägen, wieviel Ressourcen man hierfür als notwendig ansieht. Die Vorteile heben sich aber deutlich von den Nachteilen ab. Ich kam selbst in den Genuß eine MySQL Datenbank in 5 Minuten wieder in ordnungsgemäßen Zustand versetzen zu dürfen, seitdem ist für mich ist das Binary Log Recovery unverzichtbar um eine bessere Datensicherheit bzw. geringere Ausfallzeiten zu gewährleisten.</p>
<h3>Hinweis</h3>
<p>Diese Anleitung ist ein praktischer Leitfaden ohne Gewähr.</p>
<h3>Weiterführende Literatur</h3>
<p>empfehlenswert sind folgende Bücher:</p>
<ul>
<li><a href="http://www.amazon.de/exec/obidos/ASIN/3827324041/elmediaagentu-21/" target="_blank">Das offizielle MySQL 5-Handbuch</a> von  MySQL MySQL AB</li>
<li><a href="http://www.amazon.de/exec/obidos/ASIN/3827326362/elmediaagentu-21/" target="_blank">MySQL 5. Einführung, Programmierung, Referenz (Open Source Library)</a> von Michael Kofler</li>
<li><a href="http://www.amazon.de/exec/obidos/ASIN/3772373259/elmediaagentu-21/" target="_blank">MySQL 5. Für Professionals</a> von Axel Bornträger</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.el-mediaagentur.com/2008/03/15/mysql-binary-log-recovery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spamassassin per E-Mail sensiblisieren</title>
		<link>http://www.el-mediaagentur.com/2008/03/09/spamassassin-per-e-mail-sensiblisieren/</link>
		<comments>http://www.el-mediaagentur.com/2008/03/09/spamassassin-per-e-mail-sensiblisieren/#comments</comments>
		<pubDate>Sun, 09 Mar 2008 12:32:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux und mehr]]></category>
		<category><![CDATA[procmail]]></category>
		<category><![CDATA[procmail Konfiguration]]></category>
		<category><![CDATA[procmailrc]]></category>
		<category><![CDATA[sa-learn]]></category>
		<category><![CDATA[sa-learn Anhang]]></category>
		<category><![CDATA[sa-learn Konfiguration]]></category>
		<category><![CDATA[sa-learn per E-Mail]]></category>
		<category><![CDATA[sa-learn trainieren]]></category>
		<category><![CDATA[sa-warp.pl]]></category>
		<category><![CDATA[sa-wrapper.pl]]></category>
		<category><![CDATA[Spam per Anhang]]></category>
		<category><![CDATA[Spamassassin]]></category>
		<category><![CDATA[Spamassassin per E-Mail]]></category>

		<guid isPermaLink="false">http://www.el-mediaagentur.com/index.php/archives/spamassassin-per-e-mail-sensiblisieren</guid>
		<description><![CDATA[Spam ist lästig und kostet viel Zeit und Geld, Spamassassin ist ein beliebtes Werkzeug dem Einhalt zu gebieten. Doch ist Spam sehr wandlungsfähig, was gestern noch einwandfrei gefiltert wurde, bleibt schon heute unmarkiert. Was tun? Spamassassin bringt mit sa-learn ein tolles Werkzeug mit. Sa-learn ermöglicht das Sensiblisieren auf Spam (schlechte E-Mails) und Ham (gute E-Mails), [...]]]></description>
			<content:encoded><![CDATA[<p><b>Spam ist lästig und kostet viel Zeit und Geld, Spamassassin ist ein beliebtes Werkzeug dem Einhalt zu gebieten. Doch ist Spam sehr wandlungsfähig, was gestern noch einwandfrei gefiltert wurde, bleibt schon heute unmarkiert. Was tun? Spamassassin bringt mit <i>sa-learn</i> ein tolles Werkzeug mit. Sa-learn ermöglicht das Sensiblisieren auf Spam (schlechte E-Mails) und Ham (gute E-Mails), man kann sozusagen Spamassassin darauf trainieren Spam zu erkennen.</b><span id="more-35"></span></p>
<div id="inline_ad" style="float: left;">
<script type="text/javascript"><!--
google_ad_client = "pub-2821839982812174";
/* Mediaum Rectangle 300x250 (leicht abgr.), Erstellt 27.02.08 */
google_ad_slot = "3929261217";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<p>Folgende Vorgehensweise beschreibt die Konfiguration von <i>Spamassassin</i>, um <i>sa-learn</i> per E-Mail (Spam oder Ham per Anhang) zu trainieren.</p>
<h3>Voraussetzung</h3>
<p>Voraussetzung ist eine intakte Installation von <i>Spamassassin</i> und <i>procmail</i>. Lassen Sie sich nicht abschrecken von der Länge des How-Tos, der Mehrwert zur Bekämpfung von Spam ist nicht zu vernachlässigen.</p>
<h3>Schritt 1: Procmail durch procmailrc konfigurieren</h3>
<p>Procmail ermöglicht vor Auslieferung von E-Mails diese vorzubearbeiten, bsp. als Spam zu markieren, ins Nirvana zu schicken (/dev/null) oder Tools wie <i>sa-learn</i> damit zu konfrontieren.<br />
Die Datei die die nötigen Anweisungen enthält befindet sich unter <i>/etc/procmailrc</i>. <i>Procmail</i> ist sehr mächtig und ermöglicht allerhand Einsatzzwecke, es lohnt sich ein Blick auf <a href="http://www.procmail.org/" target="_blank">http://www.procmail.org/</a> zu werfen.<br />
An folgende Beispiel-Konfiguration verdeutliche ich die Vorgehensweise von <i>procmail</i> (s. Kommentare)</p>
<p class="code">
DROPPRIVS=yes<br />
#Logfile für debugging<br />
LOGFILE=/var/log/procmail<br />
#Für debugging [ON|OFF]<br />
VERBOSE=ON<br />
#Welche Shell soll benutzt werden<br />
#SHELL=/bin/sh</p>
<p>#Mails die kleiner als 256000 Bytes sind, sollen mit spamc -f geprüft werden<br />
:0fw<br />
* < 256000<br />
| /usr/bin/spamc -f</p>
<p>#Wenn die Mail an spam@domain.de ausgeliefert werden soll, dann soll das Script sa-wrap.pl mit der Option -<span style="font-size: 1px;"> </span>-spam ausgeführt werden. Die sa-wrap.pl ermöglicht das Anlernen von Spam (schlechte E-Mails) und Ham (gute E-Mails) als Attachment, in Schritt 3 wird dieses Script behandelt.<br />
:0<br />
* spam@domain.de<br />
{<br />
:0fw<br />
| /usr/local/bin/sa-wrap.pl -<span style="font-size: 1px;"> </span>-spam<br />
:0<br />
/dev/null<br />
}</p>
<p>#Wenn die Mail an ham@domain.de ausgeliefert werden soll, dann soll das Script sa-wrap.pl mit der Option -<span style="font-size: 1px;"> </span>-ham ausgeführt werden.<br />
:0<br />
* ham@domain.de<br />
{<br />
:0fw<br />
| /usr/local/bin/sa-wrap.pl -<span style="font-size: 1px;"> </span>-ham<br />
:0<br />
/dev/null<br />
}</p>
<p>#Alle E-Mails, die das SPAM-Level von mehr als 7 (Sterne) erreicht haben und an domain1.de etc. ausgeliefert werden sollte, wird zu /dev/null weitergeleitet, also gelöscht. Augenmerk ist auf TO.*undisclosed-recipients zu richten, hier werden auch die Mails behandelt die keinen eindeutigen Empfänger führen, manche Spam-Mails wollten hiermit gewisse Mechanismen austricksen<br />
:0 w<br />
* ^TO.*@domain1.com|TO.*@domain2.com|TO.*@domain3.de|<br />TO.*@domain4.de|TO.*@domain5.com|TO.*@domain6.de|TO.*@domain7.de|<br />TO.*undisclosed-recipients<br />
* ^X-Spam-Level:.*\*\*\*\*\*\*<br />
/dev/null</p>
<p>#Ab hier kommt ein Work-Around, um ein Problem mit procmail in gewissen Konstellationen zu beheben</p>
<p># Work around procmail bug: any output on stderr will cause the &#8220;F&#8221;<br />
#in &#8220;From&#8221;<br />
# to be dropped.  This will re-add it.<br />
:0 H<br />
* ! ^From[ ]<br />
* ^rom[ ]<br />
{<br />
        LOG=&#8221;*** Dropped F off From_ header! Fixing up. &#8220;</p>
<p>        :0 fhw<br />
        | sed -e &#8217;s/^rom /From /&#8217;<br />
}
</p>
<p>Die Syntax von <i>procmail</i> ist gewöhnungsbedürftig, aber wenn man das Schema verstanden hat, kann man das Script prima anpassen. Es gibt einige Quellen, wenn man <i>procmail</i> intensiver verstehen möchte. Damit das Logging und das spätere Zwischenspeichern und Entpacken der angehangenen Spam und Ham E-Mails in Zusammenhang mit <i>procmail</i> funktioniert, müssen wir <i>/var/log/procmail</i>, <i>/var/log/sa-lear.log</i> und <i>/var/spool/unpack</i> erstellen und die nötigen Rechte und Gruppen setzen:</p>
<p class="code">
$ touch /var/log/procmail.log<br />
$ chown root:mail /var/log/procmail.log<br />
$ chmod 666 /var/log/procmail.log<br />
$ touch /var/log/sa-learn.log<br />
$ chown root:mail /var/log/sa-learn.log<br />
$ chmod 666 /var/log/sa-learn.log<br />
$ mkdir /var/spool/unpack<br />
$ chown root:mail /var/spool/unpack<br />
$ chmod 777 /var/spool/unpack
</p>
<h3>DOWNLOAD der Beispiel procmailrc</h3>
<p><a class="download" href="http://www.el-mediaagentur.com/download.php?id=b48bd8368782e6bcee52bcdd6a097a94" title="procmailrc">procmailrc</a></p>
<h3>Schritt 2: Einrichten der beiden E-Mail Adressen</h3>
<p>Die im Huckepack gesandten Spam oder Ham E-Mails werden an zwei Adressen gesandt. Hier in der Beispiel <i>procmailrc</i> sind es spam@domain.de und ham@domain.de. Diese beiden Adressen müssen existieren. Wie diese erzeugt werden ist egal.</p>
<h3>Schritt 3: Einrichten der <i>sa-wrap.pl</i></h3>
<p>Die <i>sa-wrap.pl</i> ist das Script welche die weitere Verarbeitung der Anhänge übernimmt und <i>sa-learn</i> zuführt. Im Beispiel Script von procmail liegt das Script unter <i>/usr/local/bin/sa-wrap.pl</i>.</p>
<h3>DOWNLOAD sa-wrap.pl</h3>
<p><a class="download" href="http://www.el-mediaagentur.com/download.php?id=4ec6324f7a58fd71a09dcbeaf4cbb6d1" title="sa-wrap.pl">sa-wrap.pl</a></p>
<p>Wenn man das Script anschaut, gibt es nur ein paar Möglichkeiten Einstellungen vorzunehmen</p>
<p class="code">
#<br />
# Thanks to: Chung-Kie Tung for the removal of the dir<br />
#            Adam Gent for bug report<br />
#<br />
# v1.2</p>
<p>use strict;<br />
use MIME::Tools;<br />
use MIME::Parser;</p>
<p>#Debugging aus- oder einschalten [0|1]<br />
my $DEBUG = 0;<br />
#Entpackverzeichnis<br />
my $UNPACK_DIR = &#8216;/var/spool/unpack&#8217;;<br />
#Pfad zu sa-learn<br />
my $SA_LEARN = &#8216;/usr/bin/sa-learn&#8217;;<br />
#kann vernachlässigt werden<br />
my @DOMAINS = qw/gtmp.org winnink.org/;<br />
.<br />
.<br />
.
</p>
<p>Die Pfade sollten natürlich angepasst werden, sofern man andere gewählt hat. Um die Fehlersuche zu unterstützen ist das Debugging wertvoll. Die Logs werden pro versandte E-Mail erzeugt und stadardmäßig unter <i>/tmp</i> abgelegt (spam.log.16377 etc.). Des weiteren werden zusätzliche Informationen in der <i>/var/log/procmail</i> abgelegt.</p>
<h3>HINWEIS</h3>
<p>Es gibt eine neuere <i>sa-wrap.pl</i> namens <i>sa-wrapper.pl</i> auf die ich nicht weiter eingehe, da ich zufriedener mit der alten Version bin. Mit einer Suche in Google oder einer anderen Suchmaschine nach <i>sa-wrapper.pl</i> wird man fündig werden.</p>
<h3>Schritt 4: Der Test</h3>
<p>Nach einem Neustart des Spamassassin Daemons kann man einen Test durchführen. Man nehme eine leere E-Mail und setze Spam oder Ham E-Mails als Attachement ein (<b>wieviele Anhänge ist egal, es wird iterativ abgearbeitet</b>) und schickt diese entwerder an spam@domain.de oder ham@domain.de, wobei natürlich hier die erstellten E-Mail Adressen genutz werden sollen und keine fiktiver Domainname. Wie überprüft man nun den Erfolg?<br />
Ganz einfach auf der Kommandozeile</p>
<p class="code">
$ sa-learn &#8211;dump magic
</p>
<p>wobei <i>magic</i> eine Kurzübersicht bietet. Es sollte so etwas hierbei herauskommen</p>
<p class="code">
$ /tmp # sa-learn &#8211;dump magic<br />
0.000          0          3          0  non-token data: bayes db version<br />
0.000          0      13938          0  non-token data: nspam<br />
0.000          0      12353          0  non-token data: nham<br />
0.000          0     169414          0  non-token data: ntokens<br />
0.000          0 1170422819          0  non-token data: oldest atime<br />
0.000          0 1205088456          0  non-token data: newest atime<br />
0.000          0 1205058100          0  non-token data: last journal sync atime<br />
0.000          0 1205040158          0  non-token data: last expiry atime<br />
0.000          0          0          0  non-token data: last expire atime delta<br />
0.000          0          0          0  non-token data: last expire reduction count
</p>
<p>Wenn das Lernen erfolgreich war wird der Count von <i>nspam</i> oder <i>nham</i> erhöht worden sein. Man kann natürlich auch mit Hilfe der Logs den entsprechenden Erfolg einsehen.</p>
<p><b>Voila!</b></p>
<h3>HINWEIS</h3>
<p>Nicht jeder Spam wird nach dem Anlernen erkannt werden, manchmal muss man ähnlichen Spam mehrmals senden. Auch das Versorgen mit guten E-Mails (Ham) darf nicht vernachlässigt werden, da hierüber Vergleiche gemacht werden.</p>
<h3>Nachtrag: Bug in neueren Spamassassin Versionen</h3>
<p>Vor kurzem stiess ich auf einen Bug in einer neuen Spamassassin Version. Die Logs führten folgendes auf</p>
<p class="code">
archive-iterator: invalid (undef) format in target list, 2<br />
at /usr/lib/perl5/site_perl/5.8.0/Mail/SpamAssassin/<br />ArchiveIterator.pm line 727, <STDIN> line 1.
</p>
<p>, wenn das Auftreten sollte muss die <i>sa-learn</i> unter <i>/usr/bin/</i> angepasst werden. Die Hinweismeldung kommt durch ein nicht gesetztes Target auf. Was ist zu tun?</p>
<p class="code">
Lösung: /usr/bin/sa-learn anpassen</p>
<p>Index: sa-learn.raw<br />
================================================================<br />
&#8212; sa-learn.raw	(revision 507745)<br />
+++ sa-learn.raw	(working copy)<br />
@@ -402,7 +402,10 @@</p>
<p>     # make sure the target list is in the normal AI format<br />
     if ($targets[$elem] !~ /^[^:]*:[a-z]+:/) {<br />
-      $targets[$elem] = target($targets[$elem]);<br />
+      my $item = splice @targets, $elem, 1;<br />
+      $elem&#8211;; # go back to this element again<br />
+      target($item); # add back to the list<br />
+      next;<br />
     }<br />
   }</p>
<p>- Zeile entfernen<br />
+ Zeile einfügen
</p>
<p>Die entpsrechende Zeilen könnt ihr an <i># make sure the target list is in the normal AI format</i> erkennen.</p>
<p><b>Voila!</b></p>
<h3>Hinweis</h3>
<p>Diese Anleitung ist ein praktischer Leitfaden ohne Gewähr.</p>
<h3>Weiterführende Literatur</h3>
<p>empfehlenswert sind folgende Bücher:</p>
<ul>
<li><a href="http://www.amazon.de/exec/obidos/ASIN/3897213931/elmediaagentu-21/" target="_blank">SpamAssassin</a> von Alan Schwartz</li>
<li><a href="http://www.amazon.de/exec/obidos/ASIN/389721377X/elmediaagentu-21/" target="_blank">Mit Open Source-Tools Spam und Viren bekämpfen. Für Unix- und Linux-basierte Mailsysteme</a> von Peter Eisentraut und Alexander Wirt</li>
<li><a href="http://www.amazon.de/exec/obidos/ASIN/3826615573/elmediaagentu-21/" target="_blank">Postfix Ge-Packt</a> von Tobias Wassermann</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.el-mediaagentur.com/2008/03/09/spamassassin-per-e-mail-sensiblisieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SSH ohne Passwort Authentifizierung</title>
		<link>http://www.el-mediaagentur.com/2008/03/07/ssh-ohne-passwort-authentifizierung/</link>
		<comments>http://www.el-mediaagentur.com/2008/03/07/ssh-ohne-passwort-authentifizierung/#comments</comments>
		<pubDate>Fri, 07 Mar 2008 13:20:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux und mehr]]></category>
		<category><![CDATA[öffentlichen Schlüssel]]></category>
		<category><![CDATA[public key]]></category>
		<category><![CDATA[publickey]]></category>
		<category><![CDATA[SSH ohne Passwort]]></category>
		<category><![CDATA[SSH ohne Passwort Authentifizierung]]></category>
		<category><![CDATA[ssh-keygen]]></category>

		<guid isPermaLink="false">http://www.el-mediaagentur.com/index.php/archives/ssh-ohne-passwort-authentifizierung</guid>
		<description><![CDATA[Automatisiere SSH-Kommunikation, bsp. für Datei-Synchronisation (s. Rsync &#8211; Synchronisation leicht gemacht) kann ohne weiteres Zutun nicht automatisch ablaufen. Um auch die Authentifizierung zu automatisieren, bedarf es eines öffentlichen Schlüssels (Public Key)






HINWEIS:
Passwortlose Authentifizierung bürgt Gefahren, hier zwei Szenarien.
1. Ein Angreifer erlangt Zugang zum Zielhost und kann in einem fremden Account in die Datei ~/.ssh/authorized_keys schreiben.
2. Ein [...]]]></description>
			<content:encoded><![CDATA[<p><b>Automatisiere SSH-Kommunikation, bsp. für Datei-Synchronisation (s. <a href="http://www.el-mediaagentur.com/index.php/archives/rsync-datei-synchronisation-leicht-gemacht">Rsync &#8211; Synchronisation leicht gemacht</a>) kann ohne weiteres Zutun nicht automatisch ablaufen. Um auch die Authentifizierung zu automatisieren, bedarf es eines öffentlichen Schlüssels (Public Key)</b><span id="more-36"></span></p>
<div id="inline_ad" style="float: left;">
<script type="text/javascript"><!--
google_ad_client = "pub-2821839982812174";
/* Mediaum Rectangle 300x250 (leicht abgr.), Erstellt 27.02.08 */
google_ad_slot = "3929261217";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script><br />
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</div>
<h3>HINWEIS:</h3>
<p>Passwortlose Authentifizierung bürgt Gefahren, hier zwei Szenarien.<br />
1. Ein Angreifer erlangt Zugang zum Zielhost und kann in einem fremden Account in die Datei <i>~/.ssh/authorized_keys</i> schreiben.<br />
2. Ein Angreifer hat Zugriff auf den Quellhost und dessen Dateien <i>~/.ssh/id_dsa</i> oder <i>~/.ssh/id_rsa</i>. Beide Dateien sind ausserdem nicht passwortgeschuetzt. </p>
<p>Wer die Gefahren ausschliessen kann, sollte weiterlesen.</p>
<h3>Schritt 1: Schlüssel mit ssh-keygen generieren</h3>
<p>Nach Ausführung von</p>
<p class="code">$ ssh-keygen -t dsa</p>
<p>auf dem Quellhost (Ort und Passwort leer lassen und mit Return bestätigen), werden in <i>$HOME/.ssh/</i> die Dateien <i>~/.ssh/id_dsa</i> und <i>~/.ssh/id_dsa.pub</i> erzeugt. </p>
<h3>Schritt 2: Public Key auf Zielhost übertragen</h3>
<p>Hier führen viele Wege zum Ziel. Der Inhalt der erzeugten Datei <i>~/.ssh/id_dsa.pub</i> muß an die <i>.ssh/authorized_keys</i> des Zielhosts angehangen werden. Ob mit <i>cat</i>, <i>ssh-copy-id</i> oder anderen Übertragungsmöglichkeiten gearbeitet wird, ist grundsätzlich egal. Hier ein elegantes Beispiel:</p>
<p class="code">$ cat ~/.ssh/id_dsa.pub | ssh user@remotehost &#8216;cat >> .ssh/authorized_keys&#8217;</p>
<p>Als <i>remotehost</i> ist eine IP oder Domain möglich.</p>
<h3>HINWEIS:</h3>
<p>Die Berechtigungen der <i>authorized_keys</i> müssen auf 0600 gesetzt werden. Sonst lässt der Rechner unter Umständen aus Sicherheitsgründen gar keine Verbindung per Schlüssel zu.</p>
<h3>Schritt 3: Verbidungsversuch</h3>
<p>Wenn ich alles hier korrekt geschildert habe und es so umgesetzt wurde, sollte folgender Verbindungsaufbau vom Client ohne Passwortabfrage funktionieren:</p>
<p class="code">ssh user@remotehost</p>
<p>Wobei <i>remotehost</i> eine IP oder Domain sein kann.</p>
<p><b>Voila!</b></p>
<h3>Hinweis</h3>
<p>Diese Anleitung ist ein praktischer Leitfaden ohne Gewähr.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.el-mediaagentur.com/2008/03/07/ssh-ohne-passwort-authentifizierung/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
