<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>Tech-Nerds &#187; Apache</title>
	<atom:link href="http://www.tech-nerds.de/blog/tag/apache/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tech-nerds.de/blog</link>
	<description>Weblog für Nerds und andere Verrückte</description>
	<lastBuildDate>Mon, 30 Jan 2012 20:26:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Apache2 durch Yaws ersetzen</title>
		<link>http://www.tech-nerds.de/blog/2010/02/apache2-durch-yaws-ersetzen/</link>
		<comments>http://www.tech-nerds.de/blog/2010/02/apache2-durch-yaws-ersetzen/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 20:23:14 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Allgemeines]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Yaws]]></category>

		<guid isPermaLink="false">http://www.tech-nerds.de/blog/?p=420</guid>
		<description><![CDATA[Ich hatte ja schon ein bisschen mit dem Erlang-Webserver Yaws experimentiert und festgestellt, dass die Performance im Vergleich zum de facto-Standard Apache2 deutlich besser ist. Beim Experimentieren ist es seinerzeit allerdings auch geblieben. Haupts&#228;chlich aufgrund niedrigerer Prio auf meiner ToDo-Liste. Nun wollte ich aber den ersten Systemen mal ernsthaft an den Kragen und den schwerf&#228;lligen [...]]]></description>
			<content:encoded><![CDATA[<p>Ich hatte ja schon ein bisschen mit dem Erlang-Webserver <a href="http://yaws.hyber.org" target="_blank">Yaws</a> <a href="http://www.tech-nerds.de/blog/2009/08/es-muss-nicht-immer-php-sein/" target="_self">experimentiert</a> und festgestellt, dass die Performance im Vergleich zum de facto-Standard <a href="http://www.apache.org" target="_blank">Apache2</a> deutlich besser ist. Beim Experimentieren ist es seinerzeit allerdings auch geblieben. Haupts&auml;chlich aufgrund niedrigerer Prio auf meiner ToDo-Liste.</p>
<p>Nun wollte ich aber den ersten Systemen mal ernsthaft an den Kragen und den schwerf&auml;lligen Indianer endlich abl&ouml;sen. Ein kurzer Test mit allerlei Standardsoftware hat mich ja schon fast ein bisschen erstaunt. Nachdem ich Yaws PHP (per php-cgi) beigebracht hatte, liefen so Sachen wie <a href="http://www.joomla.org" target="_blank">Joomla!</a> oder <a href="http://www.wordpress.org" target="_blank">WordPress</a> bereits problemlos. Wenn letzteres auch nur ohne Rewrite-URLs. Einen Workaround gibt es allerdings <a href="http://thestaticvoid.com/post/2009/08/04/replacing-apache-with-yaws/" target="_blank">an dieser Stelle</a>. Wobei zu beachten ist, dass der Performance-Gewinn durch PHP nat&uuml;rlich wieder entsprechend minimiert wird.</p>
<p>Neben Geschwindigkeitsaspekten ist aber nat&uuml;rlich auch die Tatsache interessant, dass Erlang-Code direkt in die HTML-Seiten (dann mit der Endung .yaws) eingebunden und ausgef&uuml;hrt werden kann.</p>
<p>F&uuml;r meine Konfiguration konnten gr&ouml;&szlig;tenteils die Standardwerte beibehalten werden. Zu finden ist sie, wie immer, auf dem <a href="gopher://gopher.tech-nerds.de" target="_blank">Gopher</a>.</p>
<p>Was fehlt noch? Genau, IPv6.<br />Inzwischen bin ich mir recht sicher, dass ohne gr&ouml;&szlig;ere Modifikationen des Source Codes keine M&ouml;glichkeit besteht, Yaws an einen TCP6-Socket zu binden, obwohl Erlang es nativ unterst&uuml;tzen w&uuml;rde. Eine M&ouml;glichkeit, die bei vern&uuml;nftiger Konfguration ebenfalls Performance-steigernd wirkt, ist der Einsatz von <a href="http://varnish-cache.org" target="_blank">Varnish</a>. Sch&auml;tze, dazu verliere ich bei Gelegenheit auch noch ein paar Worte.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tech-nerds.de/blog/2010/02/apache2-durch-yaws-ersetzen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Es muss nicht immer PHP sein</title>
		<link>http://www.tech-nerds.de/blog/2009/08/es-muss-nicht-immer-php-sein/</link>
		<comments>http://www.tech-nerds.de/blog/2009/08/es-muss-nicht-immer-php-sein/#comments</comments>
		<pubDate>Thu, 13 Aug 2009 00:13:37 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Erlang]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Yaws]]></category>

		<guid isPermaLink="false">http://www.tech-nerds.de/blog/?p=254</guid>
		<description><![CDATA[Gemeint ist dynamischer Inhalt von Webseiten. Aus aktuellem Anlass war ich zun&#228;chst auf der Suche nach einem Erlang-Modul f&#252;r den Apache-Webserver und wurde auch f&#252;ndig. Allerdings liegt die letzte &#196;nderung an dieser Software offensichtlich schon ein bisschen l&#228;nger zur&#252;ck. Eigentlich schade, erm&#246;glicht es doch dieses Modul, Erlang-Code direkt in HTML-Dokumente einzubinden. Als ich das Orakel [...]]]></description>
			<content:encoded><![CDATA[<p>Gemeint ist dynamischer Inhalt von Webseiten.</p>
<p>Aus <a href="http://www.tech-nerds.de/blog/2009/07/programming-erlang/" target="_self">aktuellem Anlass</a> war ich zun&auml;chst auf der Suche nach einem Erlang-Modul f&uuml;r den Apache-Webserver und wurde auch <a href="http://www.rfc1149.net/devel/mod_erl" target="_blank">f&uuml;ndig</a>. Allerdings liegt die letzte &Auml;nderung an dieser Software offensichtlich schon ein bisschen l&auml;nger zur&uuml;ck. Eigentlich schade, erm&ouml;glicht es doch dieses Modul, Erlang-Code direkt in HTML-Dokumente einzubinden.</p>
<p>Als ich das <a href="http://www.google.de" target="_blank">Orakel</a> dann noch einmal befragte, fand ich eine etwas elegantere M&ouml;glichkeit, HTML-Seiten mit Erlang-Code auszustatten: Der ohnehin in Erlang programmierte und sehr performante Webserver <a href="http://yaws.hyber.org/" target="_blank">Yaws</a> bringt diese Funktion nativ mit.</p>
<p>Kleines Beispiel:</p>
<p><code>&lt;erl&gt;<br />out(A) -&gt;<br />{html, &quot;Hallo Welt&quot;}.<br />&lt;/erl&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tech-nerds.de/blog/2009/08/es-muss-nicht-immer-php-sein/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Slowloris fail2ban</title>
		<link>http://www.tech-nerds.de/blog/2009/06/slowloris-fail2ban/</link>
		<comments>http://www.tech-nerds.de/blog/2009/06/slowloris-fail2ban/#comments</comments>
		<pubDate>Sun, 21 Jun 2009 11:39:48 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Netzwerke]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[DoS]]></category>
		<category><![CDATA[fail2ban]]></category>
		<category><![CDATA[slowloris]]></category>

		<guid isPermaLink="false">http://www.tech-nerds.de/blog/?p=151</guid>
		<description><![CDATA[Wie bereits beschrieben, existiert bisher keine wirksame M&#246;glichkeit, einen Apache-Server vor einem Angriff mit Slowloris zu sch&#252;tzen. Ein Ansatz ist sicherlich, die IP des Angreifers zu sperren. Also im Prinzip die Funktionsweise des Tools fail2ban. Ich habe ein kleines Script gebastelt, welches den Apache-Errorlog auf Eintr&#228;ge durchsucht, die auf einen Angriff mit Slowloris hindeuten und [...]]]></description>
			<content:encoded><![CDATA[<p>Wie <a href="http://www.tech-nerds.de/blog/2009/06/http-dos-mit-slowloris/" target="_self">bereits beschrieben</a>, existiert bisher keine wirksame M&ouml;glichkeit, einen Apache-Server vor einem Angriff mit <a href="http://ha.ckers.org/slowloris" target="_blank">Slowloris</a> zu sch&uuml;tzen.</p>
<p>Ein Ansatz ist sicherlich, die IP des Angreifers zu sperren. Also im Prinzip die Funktionsweise des Tools <a href="http://www.fail2ban.org" target="_blank">fail2ban</a>.</p>
<p>Ich habe ein kleines Script gebastelt, welches den Apache-Errorlog auf Eintr&auml;ge durchsucht, die auf einen Angriff mit Slowloris hindeuten und dann die entsprechenden IP-Adressen per iptables sperrt. Um den Angreifer nicht ewig zu sperren, sollte der Apache-Errorlog nat&uuml;rlich relativ h&auml;ufig rotieren.</p>
<p>Beide Dateien habe ich auf dem <a href="gopher://gopher.tech-nerds.de" target="_self">Gopher</a> zug&auml;nglich gemacht. Die Firewall-Regeln m&uuml;ssen ggf. angepasst werden (Flush beachten).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tech-nerds.de/blog/2009/06/slowloris-fail2ban/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HTTP DoS mit Slowloris</title>
		<link>http://www.tech-nerds.de/blog/2009/06/http-dos-mit-slowloris/</link>
		<comments>http://www.tech-nerds.de/blog/2009/06/http-dos-mit-slowloris/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 10:20:45 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Netzwerke]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[DoS]]></category>
		<category><![CDATA[slowloris]]></category>

		<guid isPermaLink="false">http://www.tech-nerds.de/blog/?p=144</guid>
		<description><![CDATA[RSnake hat mit dem Tool Slowloris eine einfache M&#246;glichkeit ver&#246;ffentlicht, Apache-Webserver zu attackieren. Auf einer Debian Standard-Installation muss lediglich die Perl-Erweiterung IO::Socket::SSL installiert werden, um das Perl-Script auszuf&#252;hren. Einmal aufgerufen, sendet Slowloris permanent unvollst&#228;ndige HTTP-Requests an das &#34;Ziel&#34;. Ein Apache-Prozess wartet nach dem Empfang eines unvollst&#228;ndigen Requests auf die Vervollst&#228;ndigung durch den Client. Das f&#252;hrt [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ha.ckers.org/" target="_blank">RSnake</a> hat mit dem Tool <a href="http://ha.ckers.org/slowloris/" target="_blank">Slowloris</a> eine einfache M&ouml;glichkeit ver&ouml;ffentlicht, Apache-Webserver zu attackieren.</p>
<p>Auf einer Debian Standard-Installation muss lediglich die Perl-Erweiterung IO::Socket::SSL installiert werden, um das Perl-Script auszuf&uuml;hren.</p>
<p>Einmal aufgerufen, sendet Slowloris permanent unvollst&auml;ndige HTTP-Requests an das &quot;Ziel&quot;. Ein Apache-Prozess wartet nach dem Empfang eines unvollst&auml;ndigen Requests auf die Vervollst&auml;ndigung durch den Client. Das f&uuml;hrt dazu, dass der Apache das (konfigurierbaren) Maximum seiner  Kindprozesse ausf&uuml;hrt und so innerhalb k&uuml;rzester Zeit keine wirklichen HTTP-Requests anderer Clients mehr beantworten kann.</p>
<p>W&auml;hrenddessen sind andere Dienste &#8211; selbst andere Apache-Instanzen &#8211;  auf der gleichen Maschine weiterhin erreichbar. Zumal der Angriff mit Slowloris lediglich eine Bandbreite von &lt;1 Kbyte/Sek. ben&ouml;tigt.</p>
<p>Eine Firewall bietet f&uuml;r diese Art der Angriffe i.d.R. keinen Schutz, da die TCP-Verbindung korrekt zustande kommt. Der Angriff beginnt also auf Protkollebene.</p>
<p>Auch scheint kein Workaround f&uuml;r die Apache-Konfiguration zu existieren. Hier f&auml;llt mir auch lediglich das Experimentieren mit der Konfiguration des Moduls mpm_prefork ein. Allerdings st&ouml;&szlig;t ja jeder Server irgendwann an seine physikalischen Grenzen.</p>
<p>Neben dem Apache sollen noch weitere Web- und Proxyserver betroffen sein. Popul&auml;re Ausnahmen sind architekturbedingt aber <a href="http://www.lighttpd.net/" target="_blank">lighttpd</a> und <a href="http://de.wikipedia.org/wiki/Microsoft_Internet_Information_Services" target="blank">IIS</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tech-nerds.de/blog/2009/06/http-dos-mit-slowloris/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apache2 mit mehreren SSL-VirtualHosts</title>
		<link>http://www.tech-nerds.de/blog/2009/02/apache2-mit-mehreren-ssl-virtualhosts/</link>
		<comments>http://www.tech-nerds.de/blog/2009/02/apache2-mit-mehreren-ssl-virtualhosts/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 16:05:09 +0000</pubDate>
		<dc:creator>Marc</dc:creator>
				<category><![CDATA[Netzwerke]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[ssl]]></category>
		<category><![CDATA[tls]]></category>
		<category><![CDATA[zertifikate]]></category>

		<guid isPermaLink="false">http://www.tech-nerds.de/blog/?p=44</guid>
		<description><![CDATA[Wer mehrere Domains auf einem Webserver betreibt, wird m&#246;glicherweise den Wunsch haben, hier verschiedene SSL-Zertifikate f&#252;r die jeweiligen Domains zu installieren. Allerdings kann der Server erst nach dem SSL-Handshake entscheiden, welchen Host der Browser angefragt hat. Abhilfe schafft das die TSL-Erweiterung SNI (Server Name Indication). Unterst&#252;tzt wird diese doch recht sinnvolle Neuerung aber bisher nur [...]]]></description>
			<content:encoded><![CDATA[<p>Wer mehrere Domains auf einem Webserver betreibt, wird m&ouml;glicherweise den Wunsch haben, hier verschiedene SSL-Zertifikate f&uuml;r die jeweiligen Domains zu installieren. Allerdings kann der Server erst nach dem SSL-Handshake entscheiden, welchen Host der Browser angefragt hat.</p>
<p>Abhilfe schafft das die TSL-Erweiterung <a href="http://de.wikipedia.org/wiki/Server_Name_Indication">SNI</a> (Server Name Indication). Unterst&uuml;tzt wird diese doch recht sinnvolle Neuerung aber bisher nur von <strong>gnutls</strong>. Die Installation auf einem Debian-Server wird hier kurz beschrieben und sollte auch auf anderen Systemen mit geringen Anpassungen machbar sein.</p>
<p>Als Allererstes steht die Installation des Pakets <strong>apache2-threaded-dev</strong> auf dem Programm (sofern noch nicht geschehen). Dann wird die aktuelle gnutls-Version ben&ouml;tigt. Und zwar von <a href="http://www.gnu.org/software/gnutls/">gnu.org</a>. Herunterladen, entpacken, konfigurieren, kompilieren, installieren kennt man ja. Dann ben&ouml;tigen div. Systeme noch einen Aufruf von <code>ldconfig</code>. Anschlie&szlig;end kann dann bereits das Apache-Modul heruntergeladen und installiert werden. Zu bekommen ist es <a href="http://www.outoforder.cc/projects/apache/mod_gnutls/">hier</a>.<br />Die Installationsprozedur verl&auml;ft hier auch unspektakul&auml;r normal. Ich musste configure allerdings den Pfad von apxs2 mitgeben:<br/><code>./configure --with.apxs2=/usr/bin/apxs2</code></p>
<p><code>make install</code><br />kopiert das Apache-Modul dann (hoffentlich) an die richtige Stelle. In diesem Fall /usr/lib/apache2/modules</p>
<p>Die Datei <font color="#FF4500">/etc/apache2/mods-enabled/gnutls.load</font> wird nun mit folgendem Inhalt erstellt: <code>LoadModule gnutls_module /usr/lib/apache2/modules/mod_gnutls.so</code><br />Und auch die Datei <font color="#FF4500">/etc/apache2/mods-enabled/gnutls.conf</font> muss erstellt werden. Sie sollte Folgendes enthalten:<br/><code>&lt;IfModule gnutls_module&gt;<br />GnuTLSCache dbm /var/cache/mod_gnutls_cache<br />GnuTLSCacheTimeout 300<br />&lt;/IfModule&gt;</code></p>
<p>Nat&uuml;rlich m&uuml;ssen die virtuellen Hosts noch angepasst werden. Jeder vHost, der SSL verwenden soll, ben&ouml;tigt folgende Zeilen:<br /><code>&lt;VirtualHost 192.168.1.250:443&gt;<br />ServerName www.example.de<br />GnuTLSEnable on<br />GnuTLSPriorities NORMAL<br />GnuTLSCertificateFile /etc/certs/example_server.pem<br />GnuTLSKeyFile /etc/certs/example_key.pem<br />DocumentRoot &quot;/var/www/example.de&quot;<br />...<br />&lt;/DocumentRoot&gt;</p>
<p>Die m&ouml;glicherweise bisher vorhandenen Zeilen, beginnend mit SSL, m&uuml;ssen selbstverst&auml;ndlich den neuen Angaben weichen.<br />Achtung: Die VirtualHosts-Direktiven m&uuml;ssen mit IP-Adresse definiert werden. Ggf. werden also f&uuml;r ein DocumentRoot 2 Eintr&auml;ge erstellt, beispielsweise bei paralleler Verwendung von IPv4 &amp; IPv6.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tech-nerds.de/blog/2009/02/apache2-mit-mehreren-ssl-virtualhosts/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

