<?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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>IT Sicherheit von oben betrachtet</title>
	
	<link>http://www.rouven-hegemann.de</link>
	<description>Don´t expect nothing only the unexpected.</description>
	<lastBuildDate>Tue, 07 Sep 2010 19:59:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/rouvenhegemann" /><feedburner:info uri="rouvenhegemann" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Drupal 7 – Was ist neu?</title>
		<link>http://feedproxy.google.com/~r/rouvenhegemann/~3/SGn7_w0ZJ0E/drupal-7-was-ist-neu</link>
		<comments>http://www.rouven-hegemann.de/web-entwicklung/drupal-7-was-ist-neu#comments</comments>
		<pubDate>Tue, 07 Sep 2010 19:48:19 +0000</pubDate>
		<dc:creator>Rouven Hegemann</dc:creator>
				<category><![CDATA[Web-Entwicklung]]></category>
		<category><![CDATA[anforderungen]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[durpal 7]]></category>
		<category><![CDATA[neu]]></category>
		<category><![CDATA[objekt]]></category>
		<category><![CDATA[orientiert]]></category>

		<guid isPermaLink="false">http://www.rouven-hegemann.de/?p=22</guid>
		<description><![CDATA[Der erste Eindruck Installiert man Drupal fällt zuerst auf, das das „Backend“ ein eigenes Theme bekommen hat und nicht mehr identisch mit dem Frontend Theme ist. Es sind also out-of-the Box ein Theme für Frontend und ein Theme für das Backend installiert und aktiviert. Hier wird wohl dem Umstand Rechnung getragen, dass das alte „Garlend“ [...]]]></description>
			<content:encoded><![CDATA[<h3>Der erste Eindruck</h3>
<p>Installiert man Drupal fällt zuerst auf, das das „Backend“ ein eigenes Theme bekommen hat und nicht mehr identisch mit dem Frontend Theme ist. Es sind also out-of-the Box ein Theme für Frontend und ein Theme für das Backend installiert und aktiviert. Hier wird wohl dem Umstand Rechnung getragen, dass das alte „Garlend“ Theme für Administrationszwecke eher suboptimal war und nur schwer anpassbar war. Der Admin Bereich wirkt nun deutlich aufgeräumter und übersichtlicher. Man hat merklich an der Usability Schraube gedreht. Eine weitere Neuerung, die schnell ins Auge sticht ist, dass sich die Anzahl der Core Module erhöht hat. <span id="more-22"></span>So ist z.B. das  Image Modul sofort bei jeder Installation dabei. Jeder Content Type hat default mässig auch ein „Image Feld“. Außerdem sind ImageCache, ImageField und FileField sofort aktiviert. Weitere Module können nun auch direkt über das Backend installiert werden, was z.B. von WordPress kennt. Man kann nun auch Installationsprofile anlegen. Damit ist es z.B. möglich eine firmeninterne Standart Drupal Installation an- zulegen, bei der diverse Module und Einstellungen automatisch installiert werden. Einstellarbeit wird dadurch reduziert. jQueryUI hat es nun auch zu den Core Modulen geschafft. Außerdem ist es wohl möglich eine „MulitSite“ Installtion anzulegen.</p>
<h3>Wann erscheint Drupal 7?</h3>
<p>Derzeit liegt Drupal 7 in einer frühen alpha Version vor. Genaue Angaben, wann die erste „stable“ Version erscheinen soll, gibt es derzeit nicht. Von den Core Entwicklern gibt es nur ein „Wenn it‘s done“ zu lesen. Den Meinungen in der Community zu beurteilen. ist wohl nicht vor Jahresende mit einer finalen Version zu rechnen. Bevor produktive Projekte mit Drupal 7 umgesetzt werden können, bleibt zudem abzuwarten welche wichtigen Module bis dahin für diese Version verfügbar sind.</p>
<h3>Anforderungen</h3>
<p>Zuerst fällt auf, dass bei Drupal 7 mindestens PHP in Version 5.2.0 benötigt wird. Ob dies auf auf eine Objekt Orientierte Entwicklung (OOP) zurückzuführen ist, (die erst ab PHP 5 möglich wäre) werden wir später klären. Drupal 7 benötigt im Vergleich zu Drupal 6 ein mehr als doppelt so hoches Arbeitsspeicher Limit wie Drupal 6. Dies muss allerdings nicht unbedingt schlecht sein<br />
Eine Neuerung in Drupal 7 ist, dass nicht zwangsweise MySQL als Datenbank benötigt wird, sondern (fast) jedes beliebige Datenbank System benutzt werden kann.strong&gt;Ist Drupal 7 Objekt Orientiert?<br />
Neben den allgemeinen Änderungen, die wohl hauptsächlich die Anwenderschicht interessieren dürfte, schauen wir nun mal unter die Haube, was sich für die Entwickler ändert. Das Drupal 7 nun PHP 5.2 als Anforderung stellt, könnte auf eine OOP Struktur hinweisen. Eine Umsetzung mit OOP würde einiges leichter machen, so sind nach Ansicht der meisten Entwickler die Umsetzung von Design Patterns nur mit OOP Systemen möglich, der Code wäre leichter zu lesen, Core Methoden könnten endlich überschrieben werden.<br />
Der Drupal Core besteht aus 2 Verzeichnissen, einem include Verzeichnis und einem Core Modul Verzeichnis. Im Include Verzeichnis findet man die größte Änderung &#8211; die Datenbank Funktionen. Die wurden nämlich durch den PHP Abstraktions Layer ersetzt &#8211; und ist OOP. Damit ist es möglich Drupal z.B. auch mit einer Oracle Datenbank zu betreiben. Außerdem ist es nun leichter möglich Datenbank Abfragen leichter zusammen zuhacken.<br />
Schaut man sich nun die Drupal Core Module an, wird man festellen, dass sich nicht viel geändert hat. Vom prinziplillen Aufbau hat sich nicht viel geändert, die funktionale Programmierung bleibt, statt Objekte gibt es weiter hin Arrays und statt Klassen gibt es immer noch Module.<br />
Die Antwort lautet &#8211; nein Drupal 7 ist nicht Objekt orientiert.</p>
<h3>Ist Drupal 7 abwärtskompatibel?</h3>
<p>Die Frage kann man so nicht direkt beantworten. Es wird wohl so wie in den vergangenen Versionen sein, dass es Möglichkeiten gibt bestehende Projekte zu portieren. Da sich aber auch diesmal die Drupal API ändern wird, kann man von keiner generellen abwärtskompatibilität sprechen</p>
<h3>Fazit</h3>
<p>Drupal 7 wird sicherlich einige Kritikpunkte der alten Versionen ausmerzen, den Code teilweise entschlacken, und manche Dinge leichtermachen &#8211; aber aus Programmierersicht kein großer neuer Schritt sein. Man wird so wie ich das für diesem Moment beurteilen kann, an der Usability Schraube drehen, viele bewährte Module gleich in den Core mit aufnehmen, die Übersicht im Backend vereinfachen, aber unter der Haube bleibt es zumindest im groben und ganzen gleich.</p>
<img src="http://feeds.feedburner.com/~r/rouvenhegemann/~4/SGn7_w0ZJ0E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rouven-hegemann.de/web-entwicklung/drupal-7-was-ist-neu/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.rouven-hegemann.de/web-entwicklung/drupal-7-was-ist-neu</feedburner:origLink></item>
		<item>
		<title>WPA Verschlüsselung in 60 sec geknackt</title>
		<link>http://feedproxy.google.com/~r/rouvenhegemann/~3/RKTqfvcXkcQ/wpa-verschlusselung-in-60-sec-geknackt</link>
		<comments>http://www.rouven-hegemann.de/it-sicherheit/wpa-verschlusselung-in-60-sec-geknackt#comments</comments>
		<pubDate>Fri, 28 Aug 2009 11:49:56 +0000</pubDate>
		<dc:creator>Rouven Hegemann</dc:creator>
				<category><![CDATA[IT-Sicherheit]]></category>

		<guid isPermaLink="false">http://www.rouven-hegemann.de/?p=18</guid>
		<description><![CDATA[Laut einem Bericht der Network World soll es japansichen Wissenschaftler gelungen sein WPA Verschlüsselungen (Wi-Fi Protected Access) innerhalb von nur 60 Sekunden zu knacken. Bislang war es nur durch aufwendige Bruteforce angriffe möglich den für Wireless Lan vorgesehenen Schutz zu umgehen.  Erste Details zu dem Angriff geben die Entwickler in einem veröffentlichen PDF Dokument bereits [...]]]></description>
			<content:encoded><![CDATA[<p>Laut einem Bericht der <a rel="nofollow" href="http://www.networkworld.com/news/2009/082709-new-attack-cracks-common-wi-fi" target="_blank">Network World </a>soll es japansichen Wissenschaftler gelungen sein WPA Verschlüsselungen (Wi-Fi Protected Access) innerhalb von nur 60 Sekunden zu knacken. Bislang war es nur durch aufwendige Bruteforce angriffe möglich den für Wireless Lan vorgesehenen Schutz zu umgehen.  Erste Details zu dem Angriff geben die Entwickler in einem veröffentlichen <a rel="nofollow" href="http://jwis2009.nsysu.edu.tw/location/paper/A%20Practical%20Message%20Falsification%20Attack%20on%20WPA.pdf" target="_self">PDF Dokument</a> bereits bekannt. Geneaue Angaben zu dem Angriff wollen die Entwickler allerdings erst am 25. September 2009 bei einer &#8220;<a rel="nofollow" href="http://www.ieice.org/ken/paper/20090925faPH/eng/">technical conference</a>&#8221; bekanntgeben.</p>
<p>Nach derzeitigen Informationen ist es allerdings weiterhin nicht möglich, direkt den Wlan-key auszelesen, wohl aber kann man gefälschte Pakete in das fremde Netz einschleusen. Zum Einsatz kommt hier eine &#8220;Man in the middle&#8221; Attacke, bei der der Datenverkehr des Opfers abgefangen wird und über das eigene System geleitet wird. Eine Einschränkung gibt es dennoch. Die beschriebene Methode funktioniert nur mit WPA Systemen die auf den <em>&#8220;Temporal Key Integrity Protocol&#8221;</em> (TKIP) Algorithmus nutzen. Alle Geräte die auf den Advanced Encryption Standard (AES) setzen, sind hiervon nich betroffen.</p>
<p><strong><br />
</strong></p>
<p><strong>Sicherheitsmaßnahmen</strong></p>
<p>Erstmal: WPA Systeme mit AES oder WPA2 Systeme können nach wie vor als sicher eingestuft werden.In allen fällen sollte man natürlich auf die Qualität des Passwortes achten, sodass BruteForce Attacken oder Wörterbuchattacken nicht soleicht möglich sind. Insbesondere sollte man die maximale Key Länge von 63 Zeichen voll ausgenutzt werden und aus einem Mix aus Buchstaben, Zahlen und Zeichen bestehen. Ansonsten gelten nach wie vor die üblichen Sicherheitsmaßnahmen:</p>
<p>- Die Routerkonfiguration sollte nicht via WLAN möglich sein<br />
- Die SSID sollte geändert werden und sollte keine Rückschlüsse auf die eingesetze Hardware geben<br />
- regelmässige Firmware Updates des Routers</p>
<img src="http://feeds.feedburner.com/~r/rouvenhegemann/~4/RKTqfvcXkcQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rouven-hegemann.de/it-sicherheit/wpa-verschlusselung-in-60-sec-geknackt/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.rouven-hegemann.de/it-sicherheit/wpa-verschlusselung-in-60-sec-geknackt</feedburner:origLink></item>
		<item>
		<title>Google Wave developer preview Teil 1</title>
		<link>http://feedproxy.google.com/~r/rouvenhegemann/~3/7wpVNHHzj80/google-wave-developer-preview-teil-1</link>
		<comments>http://www.rouven-hegemann.de/web-entwicklung/google-wave-developer-preview-teil-1#comments</comments>
		<pubDate>Sat, 22 Aug 2009 15:21:53 +0000</pubDate>
		<dc:creator>Rouven Hegemann</dc:creator>
				<category><![CDATA[Web-Entwicklung]]></category>
		<category><![CDATA[account]]></category>
		<category><![CDATA[beta]]></category>
		<category><![CDATA[developper]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[preview]]></category>
		<category><![CDATA[Wave]]></category>

		<guid isPermaLink="false">http://www.rouven-hegemann.de/it-sicherheit/google-wave-developper-preview-teil-1</guid>
		<description><![CDATA[Seit einigen Tagen bin ich nun glücklicher Besitzer von 2 Google Wave Accounts (Anm.: man braucht zum testen aller Features sinnergerweise 2 Stück). Google Wave ist ein neuartiges Echtzeitkommunikationssystem welches grob gesagt die Vorteile von Email und Instant Messaging vereinen soll. Zur Zeit befindet sich das System noch in einer Testphase zu der nur einige [...]]]></description>
			<content:encoded><![CDATA[<p>Seit einigen Tagen bin ich nun glücklicher Besitzer von 2 Google Wave Accounts (Anm.: man braucht zum testen aller Features sinnergerweise 2 Stück). Google Wave ist ein neuartiges Echtzeitkommunikationssystem welches grob gesagt die Vorteile von Email und Instant Messaging vereinen soll. Zur Zeit befindet sich das System noch in einer Testphase zu der nur einige Tausend Entwickler Zugriff haben. In Teil 1 möchte ich erstmal allgemein erklären, was Google Wave ist und wofür man es verwenden kann. Da es schwer in Worte zu fassen ist, lege ich jedem ans Herz sich das Youtube Video von der Google I/O anzuschauen, die Möglichkeiten die Goolge Wave bietet sind aus meiner Sicht imenz, somal man auch kompelt ohne Goolge Server agieren kann.</p>
<p><object width="480" height="295"><param name="movie" value="http://www.youtube.com/v/v_UyVmITiYQ&#038;hl=de&#038;fs=1&#038;rel=0&#038;color1=0x2b405b&#038;color2=0x6b8ab6"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/v_UyVmITiYQ&#038;hl=de&#038;fs=1&#038;rel=0&#038;color1=0x2b405b&#038;color2=0x6b8ab6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"></embed></object><br />
Allgemein</p>
<p>Google Wave besteht aus einem Webangebot (wave.google.com) sowie einem XMPP basierentem Protokoll, welches zum Großteil als Open Sorce und offenes Protokoll zur Verfügung gestellt werden soll. Es wird somit möglich sein komplett eigene Wave Applications zu implementieren. Zudem stellt Google eine API zur Verfügung mit der  bequem eigene Erweiterungen entwickelt werden können.</p>
<p>Wie funktioniert das ganze?<br />
Der Benutzer kann aus der Wave Anwendung heraus eine &#8220;Welle&#8221; starten und andere Benutzer zur Mitarbeit einladen. Man kann die Wave sinngemäß mit einem Thread im Forum , einem Chatverlauf in ICQ oder einer Konversation von mehreren Emails vergleichen. Dieser Welle fügt man nun Personen als &#8220;Empfänger&#8221; hinzu. . Nun kann jeder hinzugefügte Nutzer in Echzeit an der Wave arbeiten, Medienobjekte hinzufügen oder Texte ändern. Die Änderungen sind dann sofort für alle sichtbar, so dass es zu keinem Versionskonflikt kommen kann. Die hinzugefügten Empfänger müssen keine natürlichen Personen sein, sondern können auch z.B. &#8220;Robots&#8221; sein, die eine gewesse Aufgabe erfüllen. Man kann z.B. mit einem Klick einen Blog Robot oder Facebook Robot hinzufügen. Die Wave (z.B. eine Umfrage) ist dann sofort auch auf dem eigenen Blog oder in dem Facebook Account sichtbar. Schreibt nun ein Facebook User einen Kommentar dazu, ist der Kommentar neben den Blogkommentaren zentral in der Wave zu lesen (man braucht also keinen Google Wave Account um in einer Wave zu agieren!). Änderungen, egal auf welcher Plattform sind überall sofort zu sehen.</p>
<p>Eine Wave kann mit jedlichem Inhalt gefüllt werden, so kann man z.b. via Drag und Drop Bilder reinziehen, und gleichzeit in Facebook und auf dem eigenen Blog veröffentlichen. Löscht man ein Bild aus der Wave sind die Änderungen sofort und überall sichtbar. Macht man eine internationale Konferenz, fügt man einfach einen Translate Robot hinzu, der in Echtzeit die Wave in die entsprechende Sprache übersetzt. Natürlich kann man seine eigenen Robots schreiben, oder über die API jeden belieben Inhalt einfügen. Die Möglichkeiten sind nahezu unbegrenzt. Oder einfach den ne Runde Schach gegen den besten Freund spielen <img src='http://www.rouven-hegemann.de/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Der Clou an der Sache ist allerdings, das es dank des offenen Standarts möglich sein wird eigene Wave server aufzusetzen, die &lt;b&gt; komplett autark von Google agieren können&lt;/b&gt;. Ähnlich wie bei dem E-Mail System kann aber dennoch der eigene Waveserver in echtzeit mit anderen Wave  server agieren. Man kann also wenn man in Firma A ist, eine Person aus Firma B der Wave hinzufügen. Das dürfte alle Google Kritiker freuen.Alle Änderungen an einer Wave können durch die Playback funktion jederzeit sichtbar gemacht werden und zurückgesetzt werden. Das macht Wave gleichzeitig  zu einem sehr schönen Versionierungssystem. Eine Wave kann jederzeit mit neuen Empfängern dupilziert werden, so ist es z.b. möglich aus einer Entwicklerversion mit ein wenigen Klicks ein &#8220;Rollout&#8221; auf den Produktivserver zu machen.So einfach die Idee hinter Wave auch ist, umso mehr darf man gespannt sein was sich daraus entwickelt. Ende September sollen laut Google ca. 100 000 Benutzer Accounts vergeben werden.</p>
<p>Ich werde mich die nächsten Tage mit der Wave API sowie mit dem Entwickeln eigener Wave Robots beschäftigen. In Teil 2 wir hierzu dann mehr zu lesen sein.</p>
<p><object height="344" width="425"></object></p>
<img src="http://feeds.feedburner.com/~r/rouvenhegemann/~4/7wpVNHHzj80" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rouven-hegemann.de/web-entwicklung/google-wave-developer-preview-teil-1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.rouven-hegemann.de/web-entwicklung/google-wave-developer-preview-teil-1</feedburner:origLink></item>
		<item>
		<title>MySQL Performance Tuning leicht gemacht</title>
		<link>http://feedproxy.google.com/~r/rouvenhegemann/~3/Flqe-pnSLC0/mysql-performance-tuning-leichtgemacht</link>
		<comments>http://www.rouven-hegemann.de/linux-server/mysql-performance-tuning-leichtgemacht#comments</comments>
		<pubDate>Mon, 26 Nov 2007 21:11:53 +0000</pubDate>
		<dc:creator>Rouven Hegemann</dc:creator>
				<category><![CDATA[Linux-Server]]></category>
		<category><![CDATA[config]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[keybuffer]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[optimieren]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[querycache]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[tuning]]></category>

		<guid isPermaLink="false">http://www.rouven-hegemann.de/it-sicherheit/mysql-performance-tuning-leichtgemacht</guid>
		<description><![CDATA[Eines der interessantesten und wohl auch kniffligsten Themen der Webserver Performance Optimierung dürfte wohl das Tuning des MySQL Severs sein. Man findet unzählige Seiten mit Anleitungen und HowTos, wie man welche Variable der MySQL Config  richtig einzustellen hat. Sogar ganze Config Files, die einen Performance Boost versprechen sollen, werden zum Download angeboten . Ich möchte hier [...]]]></description>
			<content:encoded><![CDATA[<p>Eines der interessantesten und wohl auch kniffligsten Themen der Webserver Performance Optimierung dürfte wohl das Tuning des MySQL Severs sein. Man findet unzählige Seiten mit Anleitungen und HowTos, wie man welche Variable der MySQL Config  richtig einzustellen hat. Sogar ganze Config Files, die einen Performance Boost versprechen sollen, werden zum Download angeboten . Ich möchte hier keine reinen Zahlenwerte  angeben, sondern einen kleinen Überblick über die &#8220;Schrauben&#8221; an der man drehen sollte geben, um den Server auf seine Verhältnisse anzupassen zu können. <br />
<h3><span style="font-size: 16px; font-weight: normal" class="Apple-style-span"><span style="font-size: 19px; font-weight: bold" class="Apple-style-span">Die optimale Hardware</span></span></h3>
<p>Voll im Trend liegen heute dedizierte Rootserver, die man bei vielen Hostern mittlerweile für einen Apple und ein Ei günstig anmieten kann.<span id="more-14"></span>Doch leider hat man hier oft nur begrenzte Auswahlmöglichkeiten an der Hardwareausstattung. Ich möchte dennoch kurz auf die wichtigsten Anforderungen an die Hardware bei einem  reinen Datenbank Server eingehen. Zunächst sollte man erwähnen, dass jegliche Festplattenzugriffe generell zu langsam für Datenbankanwendungen sind. Ziel sollte es also sein, speichergesättigte Datenbanken, sprich nach Möglichkeit alle Daten in den Speicher legen, und die Schreibzugriffe so niedrig wie möglich  halten, zu bauen. Am Speicher sollte man also als letztes sparen! MySQL arbeitet mit einer Einprozessor Architektur. Ein MySQL Server besitzt mehrere Service Threads und einen Handler Thread  pro Verbindung, die sich alle den gemeinsamen Speicher des Prozesses teilen. Viel RAM ist zwar gut, es nützt uns allerding reichlich wenig, wenn wir diesen nicht mit einzelnen Prozessen ansprechen können. Mit anderen Worten: Eine 64 Bit CPU ist hier im Jahre 2007 Stand der Dinge. Will man mehr als 3GB RAM adressieren, kommt ein 64 Bit Betriebssystem noch hinzu. Sollen die Schreizugriffe auch optimiert werden, muss man Geld in den Datendurchsatz bei den Festplatten investieren. Reichen hier schnelle Platten ansich nicht mehr aus, sollte man die Anzahl der Spindeln erhöhen,  z. B. ein RAID 10 in Betracht ziehen. Ich selbst habe ein solches Setup noch nicht gefahren, verfüge hierzu also über keinerlei Erfahrungswerte. Die eigentliche CPU Leistung ist bei den heute standardmäßig verbauten Prozessoren eher vernachlässigbar.<br />
<h3>Die Konfiguration  </h3>
<p>In der Regel wird der MySQL Server über die my.cnf konfiguriert. Es ist aber auch möglich zur Laufzeit verschiedene Variablen  über den Prompt zu ändern. Aber nun zu den wichtigsten Optionen:<br />
<h4><span style="font-size: 13px" class="Apple-style-span"><span style="font-size: 16px" class="Apple-style-span"> </span><span style="font-size: 16px" class="Apple-style-span">Querycache </span></span></h4>
<p>Der Querycache sollte sich  mittlerweile rumgesprochen haben. Potenziell lassen sich bei Datenbanken mit wenigen Schreibzugriffe, hohe Performance Steigerungen erzielen. Die Konfiguration des Query Cache erfolgt über die gleichnamige Variable in der [mysqld] Sektion. In einem MySQL Kommandozeilenclient kann man sich die aktuelle Einstellung mit <span style="font-style: italic" class="Apple-style-span">show variables like &#8220;query_cache%&#8221;</span> ansehen. Der Query Cache legt bereits ausgeführte Abfragen in den Speicher. Führt man also z.b. die gleiche SELECT Abfrage 2 mal hintereinander aus, wird der 2. Aufruf wesentlich schneller abgearbeitet,  da er nicht wirklich ausgeführt wird, sondern das Ergebnis direkt aus dem Speicher kommt. Viele wissen allerdings nicht, dass es hier auf die wirklich identische Schreibweise ankommt. Ein &#8220;<span style="font-weight: bold" class="Apple-style-span">s</span>elect x=2 where y=1&#8243; ist in diesem Sinne nicht identisch mit &#8220;<span style="font-weight: bold" class="Apple-style-span">S</span>elect x=2 where y=1&#8243; . Generell geht das mit dem Cache auch nur solange gut, bis es zu einer Veränderung der zugrundeliegenden Base Table kommt. Daher wird beispielsweise nach einem INSERT das entsprechende Query aus dem Cache gelöscht. <br />
<h4>query_cache_limit</h4>
<p>Hiermit wird die maximale Größe des Result Sets bestimmt &#8211; also die maximale Größe des Ergebnisses einer Abfrage die in den Cache kommen soll. Es macht bei den meisten Anwendungen wenig Sinn den Cache mit wenigen großen Querrys vollzustopfen und somit andere wichtigere Querries rausfliegen zu lassen. <br />
<h4>query_cache_type</h4>
<p>0 (Off) Query Cache ist ausgeschaltet, alle anderen Query Cache Parameter werden übersprungen. 1 (ON) hier werden sofern möglich alle Querries in den Cache aufgenommen, mit Ausnahme von solchen, die nicht konstante Funktionsaufrufe (wie z.b. rand() now(),..) enthalten. Mit 2 (On Demand) werden nur Querys aufgenommen, die ausdrücklich mit SQL_CACHE makiert sind. <br />
<h4>query_cache_size</h4>
<p>Hier wird festgelegt wieviel Arbeitspeicher für den Query Cache reserviert werden soll.  Die Größe ist nachtürlich von Anwendung zu Anwendung verschieden. Man muss hier ein wenig rumexperimentieren. Mit einem SHOW STATUS kann dies leicht kontrolliert werden.Wird ein Schreiblock auf eine Tabelle gelegt, werden Querrys aus dem Cache dennoch ausgeliefert. Möchte man dies vermeiden, muss man die Option query_cache_wlock_invalidate auf 1 setzen.  Nach der ganzen Einstellerei sollte man sich  nun mal einen Überblick über das ganze mit einem &#8220;SHOW STATUS LIKE &#8216;%qc&#8217;&#8221; verschaffen. Je nachdem wie lange der Server schon läuft sollte in etwa sowas zu sehen sein:  
<pre>mysql&gt; show status like "qc%";</pre>
<p><code>
<pre>+-------------------------+-----------+</pre>
<pre>| Variable_name           | Value     |</pre>
<pre>+-------------------------+-----------+</pre>
<pre>| Qcache_free_blocks      | 1 |</pre>
<pre>| Qcache_free_memory      | 113943576 |</pre>
<pre>| Qcache_hits             | 11 |</pre>
<pre>| Qcache_inserts          | 216961140 |</pre>
<pre>| Qcache_lowmem_prunes    | 0         |</pre>
<pre>| Qcache_not_cached       | 44 |</pre>
<pre>| Qcache_queries_in_cache | 100 |</pre>
<pre>| Qcache_total_blocks     | 35 |</pre>
<pre>+-------------------------+-----------+</pre>
<pre>8 rows in set (0.00 sec)</pre>
<p></code><code></code><code></code><code></code><code></code><code></code><code></code><code></code><code></code><code></code><code></code><code></code><code></code><code></code><code></code><code></code><code></code><code></code><code></code><code></code><code></code><code></code><code></code><code></code> In diesem Bespiel sieht man, das der Cache noch nie übergelaufen ist (prunes), 44 Querrys konnten nicht gecached werden. Sollte der prunes Wert mit der Lauftzeit steigen, ist der Query Cache offensichtlich zu klein und sollte größer gestellt werden. wenn der Qcache_free_blocks Wert Groß wird, dann fragmentiert der Qcache. Abhilfe schaft hier eine andere Größe der Blocksize die mit qcache_min_block_size eingestellt werden kann. <br />
<h3><span style="font-size: 16px; font-weight: normal" class="Apple-style-span"> Key Buffer</span></h3>
<p>Ebenfalls in der [mysqld] Sektion findet man die key_buffer Option.  <span style="font-size: 16px; font-weight: normal" class="Apple-style-span"></span> Aber erst zum Hintergrund. MySQL legt die Daten chronologisch in eine MYD File ab. Vergleichen kann man dies mit einer Bücherei. Hier werden neu gekaufte Bücher einfach hinten ans Regal angestellt, wenn Lücken vorhanden sind, werden diese aufgefüllt. Um die Bücher nun besser finden zu können gibt es in jeder verschiedene Indexe, z.b. einen Schlagwortkatalog oder einen Autorenkatalog, mit denen man die Bücher sehr einfach finden kann.Bei MySQL legt man einen  Index mit CREATE INDEX an. Der Befehl geht dann die Spalte durch, merkt sich die Werte für jeden Wert und die Datensatznummer, in der der Wert zu finden ist. Dann müssen die Werte sortiert werden, und hierfür wird Platz benötigt. Und dieser Platz sollte sehr großzügig bemessen werden. Beispiel: Nehmen wir an, wir möchten einen Index auf eine INTEGER SPALTE, wird pro Datensatz 4 Byte für das Integer plus 4 Byte für den Zeiger auf die Daten benötigt. Bei 20 Millionen Einträgen sind das also ca. 152 MB. Das stimmt so aber noch nicht ganz. Denn eine Index File wird in Blöcke von key_cache_block_size Byte größe angelegt. In der Bibliothek sind die Indexeinträge auch Gruppiert, es gibt z.b. eine Block &#8220;A&#8221;, &#8220;B&#8221; etc. Es macht aber keinen Sinn die Blöcke von anfang an komplett voll zu machen, denn dann müßte bei jedem neuen Eintrag der komplette index &#8220;verschoben&#8221; werden. Das Verschieben macht auch MySQL und wird Rebalancing genannt. Damit dies nicht jedes mal passieren muss, sollte man die Blöcke nur zu 2/3 füllen. Bei unseren Beispiel heisst es allso 8 Byte pro Zeile geteilt durch 2/3, dann kommt man auf ca.  228 MB </p>
<img src="http://feeds.feedburner.com/~r/rouvenhegemann/~4/Flqe-pnSLC0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rouven-hegemann.de/linux-server/mysql-performance-tuning-leichtgemacht/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.rouven-hegemann.de/linux-server/mysql-performance-tuning-leichtgemacht</feedburner:origLink></item>
		<item>
		<title>Wieviel Load ist noch okay?</title>
		<link>http://feedproxy.google.com/~r/rouvenhegemann/~3/HQaEH4Fdvrc/wieviel-load-ist-noch-okay</link>
		<comments>http://www.rouven-hegemann.de/linux-server/wieviel-load-ist-noch-okay#comments</comments>
		<pubDate>Wed, 21 Nov 2007 19:29:30 +0000</pubDate>
		<dc:creator>Rouven Hegemann</dc:creator>
				<category><![CDATA[Linux-Server]]></category>

		<guid isPermaLink="false">http://www.rouven-hegemann.de/blog/it-security/wieviel-load-ist-noch-okay/</guid>
		<description><![CDATA[Der Load Wert eines Unix Systemes wird oft als Maßeinheit für die Auslastung eines Systems benutzt. Meist wird allerdings von einem Durschnittswert der sogenannten Load Average gesprochen. Dieser Zahlenwert gibt die mittlere Länge der Run-Queue an. Der Wert gibt also an, wieviel Prozessoren das System im Schnitt auslasten könnten. Hat man eine Load Average von [...]]]></description>
			<content:encoded><![CDATA[<p>Der<span class="Apple-style-span" style="font-style: italic"> Load</span> Wert eines Unix Systemes wird oft als Maßeinheit für die Auslastung eines Systems benutzt. Meist wird allerdings von einem Durschnittswert der sogenannten <span class="Apple-style-span" style="font-style: italic">Load Average </span>gesprochen. Dieser Zahlenwert gibt die mittlere Länge der Run-Queue an. Der Wert gibt also an, wieviel Prozessoren das System im Schnitt auslasten könnten. Hat man eine Load Average von 1 wäre ein 1 Prozessorsystem in etwa ausgelastet. Eine Maschine mit 64 CPUs wäre also erst mit einer Load Average von 64 ausgelastet. Es gilt also, je niedriger der Wert desto unausgelasteter ist ein System.   Schaut man in einem Linux System sich die Load AVG an, bekommt  man meist 3 Werte geliefert, die jeweils die Durschnittswerte der letzten Minute, der letzen 5 Minuten und der letzen 15 Minuten angeben. Das Standart Tool um mal schnell einen Blick auf die Auslastung eines Systems zu Schauen dürfte wohl der Befehl <span class="Apple-style-span" style="font-style: italic">top</span> sein.  Auf einem von mir betreuten Server sieht das zur Prime Time in etwa so aus:<img src="http://www.rouven-hegemann.de/wp-content/uploads/2007/11/bild-4.png" alt="Top linux" /> Ganz oben rechts finden wir die Load Average. Wir sehen hier das die Last wohl in den letzten 5 Minuten wohl leicht gefallen ist. Zu Spitzenzeiten hab ich in der Regel eine Load von ca. 0,9 was einen Prozessor also zu ca. 90% auslastet. Die Kiste hat also nicht allzuviel Reserven mehr, ist aber noch gut im Saft.   Aber es gibt hier noch weitere Werte zu sehen. So gibt in etwas &#8220;id&#8221; die ungenutzte  Zeit der CPU an. Die anderen Zahlen sagen unteranderem aus mit was die CPU ihre Zeit verbringt: &#8220;us&#8221; (User Time) ist z.b. die Zeit die im Programm verbraucht wird, &#8220;sys&#8221; (System Time) ist die Zeit die vom Kernel im Auftrag des Programms verbraucht wird, &#8220;ni&#8221; (Nice Time) ist die Zeit die von herunterpriorisierten sinnvoll genutzt wird. &#8220;wa&#8221; (Wait Time) ist die Wartezeit auf I/O -Wait, also die Zeit, die gebraucht wird, bis die Daten z.b. von der Festplatte eingelesen wurden. Hat ein Server eine hohe Load Zahl, aber trotzdem eine niedrige CPU-Auslastung, kann man davon ausgehen, dass irgendwo aderst im System was faul ist. So konnte eine miserable Durchsatzrate bei der Festplatte  z.B. der Auslöser hierfür sein.</p>
<img src="http://feeds.feedburner.com/~r/rouvenhegemann/~4/HQaEH4Fdvrc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rouven-hegemann.de/linux-server/wieviel-load-ist-noch-okay/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.rouven-hegemann.de/linux-server/wieviel-load-ist-noch-okay</feedburner:origLink></item>
		<item>
		<title>Netzwerkueberwachung mit Ettercap</title>
		<link>http://feedproxy.google.com/~r/rouvenhegemann/~3/6iym7r-X_vE/netzwerkuberwachung-mit-ettercap</link>
		<comments>http://www.rouven-hegemann.de/it-sicherheit/netzwerkuberwachung-mit-ettercap#comments</comments>
		<pubDate>Wed, 21 Nov 2007 09:24:38 +0000</pubDate>
		<dc:creator>Rouven Hegemann</dc:creator>
				<category><![CDATA[IT-Sicherheit]]></category>
		<category><![CDATA[arp]]></category>
		<category><![CDATA[ettercap]]></category>
		<category><![CDATA[in]]></category>
		<category><![CDATA[man]]></category>
		<category><![CDATA[middle]]></category>
		<category><![CDATA[MITM]]></category>
		<category><![CDATA[Poisoning]]></category>
		<category><![CDATA[spoofing]]></category>
		<category><![CDATA[the]]></category>
		<category><![CDATA[Vlan]]></category>

		<guid isPermaLink="false">http://www.rouven-hegemann.de/blog/allgemein/netzwerkuberwachung-mit-ettercap/</guid>
		<description><![CDATA[Allgemein zu Ettercap  Neulich bin ich auf sein interessantes Tool zur Netzwerküberwachung gestoßen. Es handelt sich um das Open-Source Tool Ettercap mit dem Sniffing auf IP und auf ARP-Basis, sowie Echtzeitkontrolle über Verbindungen selbst in geswitchten Netzwerken,inhaltsbezogene Filterung und aktive sowie passive Analysen von einzelnen Hosts oder ganzen Netzwerken möglich ist. Offiziell handelt es sich um ein [...]]]></description>
			<content:encoded><![CDATA[<h3><span class="Apple-style-span" style="font-size: 16px; font-weight: normal"></span></h3>
<h3><span style="font-size: 16px; font-weight: normal" class="Apple-style-span"></span></h3>
<p><img src="http://www.rouven-hegemann.de/wp-content/uploads/2007/11/ettercapconnections1.gif" align="left" alt="Screenshot Ettercap" /><br />
<h3>Allgemein zu Ettercap </h3>
<p>Neulich bin ich auf sein interessantes Tool zur Netzwerküberwachung gestoßen. Es handelt sich um das Open-Source Tool <a href="http://ettercap.sourceforge.net/" rel="nofollow" title="Offizielle Ettercap Seite">Ettercap</a> mit dem Sniffing auf IP und auf ARP-Basis, sowie Echtzeitkontrolle über Verbindungen selbst in geswitchten Netzwerken,<span id="more-7"></span>inhaltsbezogene Filterung und aktive sowie passive Analysen von einzelnen Hosts oder ganzen Netzwerken möglich ist. Offiziell handelt es sich um ein Sicherheitstool, kann aber aufgrund seiner nahezu unbegrenzten Möglichkeiten auch für &#8220;Man-in-the-Middle&#8221; Angriffe missbraucht werden. Da Ettercap Pakete bereits auf ARP Ebene abfängt, ist es sogar möglich verschlüsselte Verbindungen zu belauschen. Trotz der gefährlichen Nachteile, eignet sich das Tool, wenn es sinnvoll angewendet wird, perpekt zur Netzwerkanalyse im eigenen Netz. Verfügbar ist Ettercap für zahlreiche Linux Verisonen, BSD Derivate, Solaris, Mac OS X wie auch Windows.<br />
<h3><span style="font-size: 16px; font-weight: normal" class="Apple-style-span">F</span>unktionsweise von Ettercap </h3>
<p>Ettercap arbeitet mit dem Funktionsprinzip des &#8220;ARP-Spoffing&#8221;. Hierbei werden vom Sender  an das &#8220;Opfer&#8221; manipulierte  ARP Pakte mit seiner eigenen MAC Adresse gesendet. So ist ein einschleusen von gefälschten Adresspaaren in den Zwischenspeicher möglich (Cache Poisoning). Da das ARP Protokoll keine weiteren Abfragen und Sicherheitsmechanismen hat, werden vom Client alle weiteren Pakete erst über den Angreifer geschickt. Der Angreifer leitet dann alle Pakte (unbemerkt) weiter an den eigentlichen Empfänger (Men-in-the-middle). <br />
<h3>Wie kann sich gegen Angriffe mit Ettercap schützen?</h3>
<p>Mit erscheinen von Ettercap bieten auch geswichte Netzwerke mittlerweile keinen wirklichen Schutz mehr.  Es gibt allerdings möglichkeiten das sog. ARP Spoofing zu verhindern.  So ist es mit statischen ARP Einträgen möglich eine Manipulation zu verhindern. Dies ist natürlich mit hohem administrativen Aufwand verbunden. Man könnte allerdings z.b. das Standart Gateway fest eintragen. Ein weiterer Lösungsansatz besteht darin, die einzelnen Host im Netz soweit wie möglich mittels eins VLANs (Virtuell LAN)  zu isolieren. Da nur auf Ethernetebene ARP zum Einsatz kommt, ist es bei isolierten Hosts nicht möglich Opfer eines solchen Angriffs zu werden. Allerdings stellen die meisten gänigen Router nur eine begrenzte Anzahl von VLANs zur Verfügung, wodurch es kaum möglich sein wird, jeden einzelen Host zu Isolieren. Bei diveresn Serverhostern (z.b. Hetzner) wird diese Technik allerdings erfolgreich eingesetzt, um eben Spoofing im Servernetz nicht zu ermöglichen. <br />
<h3><span style="font-size: 16px; font-weight: normal" class="Apple-style-span"> </span>Spass mit Ettercap </h3>
<p>Ja, man kann auch lustige Dinge mit Ettercap machen, und so seine Kollegen ärgern (ACHTUNG! Ettercap nie (!!!) im Unternehmensnetz ungefragt einsetzen, damit kann man sich mächtig Ärger einfangen!!).  So Kann man quasi live Webseiten, die der Kollege aufruft manipulieren und z. B. <a href="http://irongeek.com/i.php?page=security/ettercapfilter" title="Bilder austauschen mit Ettercap">Bilder austauschen</a>. <span class="Apple-style-span" style="color: #000080; font-family: Courier; font-size: 13px; line-height: normal; -webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px">
<pre><span style="color: #000000; font-family: Georgia; font-size: 16px; line-height: 20px; white-space: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px" class="Apple-style-span"> </span></pre>
<p></span> </p>
<img src="http://feeds.feedburner.com/~r/rouvenhegemann/~4/6iym7r-X_vE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.rouven-hegemann.de/it-sicherheit/netzwerkuberwachung-mit-ettercap/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.rouven-hegemann.de/it-sicherheit/netzwerkuberwachung-mit-ettercap</feedburner:origLink></item>
	</channel>
</rss>
