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

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    
    <title>Zugschlusbeobachtungen - Security</title>
    <link>http://blog.zugschlus.de/</link>
    <description>Das persönliche Blog von Marc Haber</description>
    <dc:language>en</dc:language>
    <admin:errorReportsTo rdf:resource="mailto:mh+blog-zugschlus-de@zugschlus.de" />
    <generator>Serendipity 1.5.5 - http://www.s9y.org/</generator>
    <pubDate>Mon, 04 Oct 2010 08:14:31 GMT</pubDate>

    <image>
        <url>http://blog.zugschlus.de/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Zugschlusbeobachtungen - Security - Das persönliche Blog von Marc Haber</title>
        <link>http://blog.zugschlus.de/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>My GPG key signing notes</title>
    <link>http://blog.zugschlus.de/archives/909-My-GPG-key-signing-notes.html</link>
            <category>Security</category>
    
    <comments>http://blog.zugschlus.de/archives/909-My-GPG-key-signing-notes.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=909</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=909</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
      
    </content:encoded>

    <pubDate>Mon, 04 Oct 2010 10:07:09 +0200</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/909-guid.html</guid>
    <category>gpg</category>
<category>key</category>

</item>
<item>
    <title>Spezifikation von Firewallregeln - do's and dont's</title>
    <link>http://blog.zugschlus.de/archives/877-Spezifikation-von-Firewallregeln-dos-and-donts.html</link>
            <category>Security</category>
    
    <comments>http://blog.zugschlus.de/archives/877-Spezifikation-von-Firewallregeln-dos-and-donts.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=877</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=877</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    &lt;p&gt;
Wenn eine Applikation über das Netz kommuniziert, funktioniert sie natürlich nur dann, wenn das Netz zwischen den
beteiligten Maschinen diese Kommunikation auch durchleitet. Das ist im Internet üblicherweise der Fall; beim Übergang
zwischen privaten Netzen und dem Internet in aller Regel nicht: Dort ist eine Firewall im Einsatz, die üblicherweise
nach der Deny-all-Strategie alle Kommunikation blockiert, die nicht explizit freigegeben ist.
&lt;/p&gt;
&lt;p&gt;
Auf diese Weise wird man im allgemeinen für eine neue Applikation eine Anpassung an der Firewall vornehmen müssen - es
sei denn, die Applikation gibt sich Mühe, wie ein Dienst auszusehen, der üblicherweise freigegeben ist. Das tun
zunehmend viele Applikationen und geben sich durch Benutzung von http als Transportprotokoll als Webclient und Webserver
aus, was in vielen Firewalls direkt freigegeben ist. Doch dies ist Stoff für einen anderen Artikel.
&lt;/p&gt;
&lt;p&gt;
In diesem Artikel möchte ich davon schreiben, wie die Spezifikation aussehen soll, damit der Firewalladmin auch weiß,
was er für eine neue Applikation in seiner Firewall freischalten soll. In vielen Dokumentationen über (freie oder
kommerzielle) Software findet man Listen von Ports, die mehr oder weniger vollständig und mehr oder weniger korrekt
sind. Leider trifft in den meisten Fällen das &amp;#8220;weniger&amp;#8221; zu.
&lt;/p&gt;
 &lt;p&gt;
Doch zunächst ein paar Grundlagen zum Thema TCP/IP. Damit man in der Firewall nicht zu viel freigeben muss, sollten die
notwendigen Kommunikationsbeziehungen möglichst eng beschrieben sein. Eine TCP/IP-Kommunikationsbeziehung fast aller
Mainstreamprotokolle beschreibt ein Fünftupel, bestehend aus Source-IP, Destination-IP, Protokoll, Source-Port und
Destination-Port.
&lt;/p&gt;
&lt;p&gt;
Wenn ein Client C mit einem Server S sprechen möchte, dann ist das Protokoll, das er dafür benutzen möchte, in der
Applikation festgelegt. TCP wird für Datenübertragung benutzt, bei der man sich darauf verlassen möchte, dass die
Daten bei ihrer Ankunft am Ziel korrekt und vollständig sind, und bereit ist, dafür erhöhten Netzaufwand und
unregelmäßige Übertragungszeiten in kauf zu nehmen. UDP benutzt man üblicherweise, wenn es sich nur um winzige
Datenmengen (z.B. DNS-Anfragen und ihre Antworten) handelt oder es eher darauf ankommt, dass Daten entweder gar nicht
oder halbwegs zeitlich passend ankommen (Streaming, Telefonie etc).
&lt;/p&gt;
&lt;p&gt;
In beiden Fällen würfelt sich der Client normalerweise einen seiner freien Ports aus und benutzt diesen als
Source-Port. Der Destination-Port ist meist mit der Applikation festgelegt und bestimmt auf der Seite des Empfängers
den Prozess, bei dem das Paket abgeliefert werden soll. In der Programmierung funktioniert das so, dass der
Serverprozess sich an den von ihm gewünschten Port bindet, ihn sozusagen &amp;#8220;abhört&amp;#8221; (im englischen nennt man
das passender &amp;#8220;listen on the port&amp;#8221;) und alle dorthin gesendeten Daten empfangen kann.
&lt;/p&gt;
&lt;p&gt;
So hat eine DNS-Anfrage üblicherweise das Protokoll UDP (Protokollnummer 17), die Destination-IP des Nameservers und
den Destination-Port 53. Der Server dreht bei seiner Antwort das Tupel um und sendet seine Antwort mit Source-Port 53
mit der IP des Clients als Destination-IP und der vom Client als seinen Source-Port gewählten Portnummer als
Destination-Port. Das sieht &amp;#8220;auf dem Kabel&amp;#8221; in etwa so aus:
&lt;blockquote&gt;&lt;pre&gt;
01: proto=UDP srcip=192.168.218.21 srcport=49221 dstip=206.251.36.94 dstport=53
02: proto=UDP srcip=206.251.36.94 srcport=53 dstip=192.168.218.21 dstport=49221
&lt;/pre&gt;&lt;/blockquote&gt;
Hier hat sich der Client also den Port 49221 gewürfelt.  Die Antwort des Servers kommt bei der Client-Applikation an,
weil sie an den Port 49221 geschickt wurde - der Client kann also die Antwort anhand des Destination-Ports des
Antwortpaketes der Frage zuordnen.
&lt;/p&gt;
&lt;p&gt;
Bei TCP (Protokollnummer 6) ist&amp;#8217;s im Prinzip dasselbe, nur dass schon der Verbindungsaufbau (also bevor überhaupt
ein Bit Nutzdaten geflossen sind) aus drei Paketen (dem sogenannten Dreiwegehandshake) besteht. Hier dasselbe für TCP
und eine kurze http-Anfrage:
&lt;blockquote&gt;&lt;pre&gt;
01: proto=TCP flags=SYN srcip=192.168.218.21 srcport=37734 dstip=81.169.179.176 dstport=80
02: proto=TCP flags=SYN,ACK srcip=81.169.179.176 srcport=80 dstip=192.168.218.21 dstport=37734
03: proto=TCP flags=ACK srcip=192.168.218.21 srcport=37734 dstip=81.169.179.176 dstport=80
04: proto=TCP flags= srcip=192.168.218.21 srcport=37734 dstip=81.169.179.176 dstport=80
05: proto=TCP flags= srcip=81.169.179.176 srcport=80 dstip=192.168.218.21 dstport=37734
06: proto=TCP flags= srcip=81.169.179.176 srcport=80 dstip=192.168.218.21 dstport=37734
07: proto=TCP flags= srcip=192.168.218.21 srcport=37734 dstip=81.169.179.176 dstport=80
08: proto=TCP flags=FIN srcip=81.169.179.176 srcport=80 dstip=192.168.218.21 dstport=37734
09: proto=TCP flags= srcip=192.168.218.21 srcport=37734 dstip=81.169.179.176 dstport=80
10: proto=TCP flags=FIN srcip=192.168.218.21 srcport=37734 dstip=81.169.179.176 dstport=80
11: proto=TCP flags= srcip=81.169.179.176 srcport=80 dstip=192.168.218.21 dstport=37734
&lt;/blockquote&gt;&lt;/pre&gt;
Das bedarf dann doch einer kleinen Erklärung: Die Pakete 01 bis 03 sind der Dreiwegehandshake für den
Verbindungsaufbau (SYN, SYN/ACK, ACK). In Paket 04 übermittelt der Client seinen http-Request, der in Paket 05 vom
Server quittiert wird. Paket 06 ist die (in ein Paket passende) Antwort; Paket 07 die dazu gehörende Quittung. Da der
Server keine weiteren Daten zu übermitteln hat, signalisiert er in Paket 08 den Wunsch des Verbindungsabbaus (FIN).
Paket 09 ist die Quittung dafür; die Pakete 10 und 11 sind der Verbindungsabbau seitens des Clients und die dazu
passende Quittung.
&lt;/p&gt;
&lt;p&gt;
Abgesehen von den oben gezeigten Standardfällen gibt es noch einen ganzen Haufen von Sonderfällen. So hat ESP als
IP-Protokoll keine Portnummern, so dass ein Paket einer ESP-Verbindung nur durch das Tripel Source-IP, Destination-IP,
Protokollnummer 50 (ESP) klassifiziert werden kann. In einigen wenigen Protokollen spielt die Absenderportnummer eine
Rolle; und wieder andere wenige Protokolle benutzen TCP &lt;u&gt;UND&lt;/u&gt; UDP, dies aber auf derselben Portnummer. Und dann
gibt es natürlich &amp;#8220;kranke, firewallfeindliche&amp;#8221; Protokolle wie ftp, SIP, nfs, amanda, RPC (inklusive
MS-RPC), bei denen die Portnummern für den &amp;#8220;eigentlichen&amp;#8221; Dienst beidseitig erst durch eine Unterhaltung
der beteiligten Systeme durch eine Steuerverbindung auf einem wohldefinierten Port ermittelt werden.
&lt;/p&gt;
&lt;p&gt;
Wir sehen auch, dass im allgemeinen die Kommunikation zwischen zwei Systemen nahezu immer bidirektional stattfindet. Nur
in ganz wenigen Sonderfällen (von denen mir gerade partout keiner einfallen möchte) versendet die eine Seite ein
Paket, ohne sich jemals für eine Antwort oder Quittung zu interessieren. Glücklicherweise braucht man sich darum in
der Regel heutzutage bei halbwegs aktuellen Firewalls nicht mehr zu kümmern: Es reicht, wenn man für eine erwünschte
Kommunikationsbeziehung das jeweils erste Paket erlaubt; die direkt oder indirekt dazu gehörenden Pakete werden von der
Firewall automatisch als solche erkannt und automatisch durchgelassen. Das trifft meist auf die direkten Antwortpakete
zu, aber bei besseren Systemen auch auf kompliziertere Fälle wie den unabhängigen Datenkanal bei &amp;#8220;kranken&amp;#8221;
Protokollen wie ftp oder zur Verbindung gehörende ICMP-Fehler wie &amp;#8220;host unreachable&amp;#8221; oder
&amp;#8220;fragmentation needed&amp;#8221;.
&lt;/p&gt;
&lt;p&gt;
Für die beiden oben zitierten Paketdumps reichen also zwei Regeln:
&lt;blockquote&gt;&lt;pre&gt;
proto=UDP srcip=192.168.218.21 srcport=49221 dstip=206.251.36.94 dstport=53
proto=TCP flags=SYN srcip=192.168.218.21 srcport=37734 dstip=81.169.179.176 dstport=80
&lt;/blockquote&gt;&lt;/pre&gt;
Halt, stop. Da ist noch was zu viel: Der Source-Port wird vom Client jeweils neu ausgewürfelt; wir dürfen die
Firewallregeln also nicht ganz so eng fassen, wenn der Dienst auch beim zweiten Zugriffsversuch noch funktionieren
soll:
&lt;blockquote&gt;&lt;pre&gt;
proto=UDP srcip=192.168.218.21 dstip=206.251.36.94 dstport=53
proto=TCP flags=SYN srcip=192.168.218.21 dstip=81.169.179.176 dstport=80
&lt;/blockquote&gt;&lt;/pre&gt;
Wie wir alle wissen, benutzt DNS im Normalfall UDP, fällt aber bei manchen Fehlern auf das (langsamere, aufwändigere)
TCP zurück - beispielsweise wenn die Antwort nicht mehr in ein Antwortpaket passt. Also braucht&amp;#8217;s noch eine
dritte Regel, die den DNS-Sonderfall abdeckt:
&lt;blockquote&gt;&lt;pre&gt;
proto=TCP flags=SYN srcip=192.168.218.21 dstip=206.251.36.94 dstport=53
&lt;/blockquote&gt;&lt;/pre&gt;
Bei TCP ist es zweckmäßig, nur &amp;#8220;erste&amp;#8221; Pakete durchzulassen, die auch korrekterweise das SYN-Flag gesetzt
haben. Sonst lässt man im Zweifel Pakete bis zum Host durch, von denen wir schon wissen, dass sie nicht koscher sind,
und dass der Host sie eh nur verwerfen wird.
&lt;/p&gt;
&lt;p&gt;
Auf Unix-ähnlichen Systemen gibt es noch eine weitere Unterscheidung: Die Ports 1-1023 bleiben dem Benutzer root
vorbehalten; nur Prozesse, die als root laufen, dürfen diese Ports des lokalen Systems verwenden. Man sieht deswegen in
Firewallregeln wie den oberen oft die Begrenzung auf die &amp;#8220;hohen&amp;#8221; Ports ab 1024. Eine solche Begrenzung
bringt aber keine zusätzliche Sicherheit, denn ein Prozess, der einen der &amp;#8220;niedrigen&amp;#8221; Ports benutzen darf,
könnte genauso gut einen &amp;#8220;hohen&amp;#8221; Port verwenden. Ich empfehle deswegen das KISS-Prinzip und den allgemeinen
Verzicht auf Beschränkungen des Source-Ports bei so einfachen Regeln.
&lt;/p&gt;
&lt;p&gt;
Aus diesen Informationen dürfte klar sein, dass an Herstellerdokumentationen &amp;#8220;erlauben Sie Port 80 TCP/UDP&amp;#8221;
oder &amp;#8220;Wir benutzen die Ports 514 und 443 incoming und outgoing&amp;#8221; oder &amp;#8220;benötigt: Port
1024-65535&amp;#8221; wenig Sachkenntnis beteiligt war. Wer stur nach solchen Regeln arbeitet, reißt sich große
Sicherheitslöcher in seine Infrastruktur und ist nur noch durch das vielleicht vorhandene NAT vor den fatalen Folgen
solcher Konfigurationsfehlern geschützt - oder eben nicht.
&lt;/p&gt;
&lt;p&gt;
Je länger die Portliste, desto höher ist die Wahrscheinlichkeit, dass manche dieser Ports nur noch aus historischen
Gründen in der Liste stehen und von der Applikation seit etwa 1948 nicht mehr genutzt werden. Gerne sieht man das bei
Applikationen, die unter Windows entweder Laufwerke mappen wollen oder in irgend einer Art mit dem Active Directory
sprechen: Microsoft hat diese beiden Zugriffsmethoden in den letzten zehn Jahren mehrfach umspezifiziert und jedes Mal
neue Ports verwendet, und die älteren Portnummern braucht man nur, wenn auch noch ältere Versionen im Einsatz sind. In
aktuellen Netzen reißt man sich damit potenzielle Sicherheitslöcher, denn auch die aktuellen Server lauschen
natürlich im Interesse der Rückwärtskompatibilität auch auf den &amp;#8220;älteren&amp;#8221; Ports. 
&lt;/p&gt;
&lt;p&gt;
Viele andere Ports aus solchen ellenlangen Listen werden nur dann benötigt, wenn man ein bestimmtes obskures Feature
der Software verwendet. Oder ein Eintrag in einer Portliste ist schlicht und einfach inkorrekt. Auch schon passiert: Ein
essentiell wichtiger Port steht aus irgend einem Grund &lt;u&gt;nicht&lt;/u&gt; in der Liste und lässt die Applikation auch dann
subtil versagen, wenn man die Portdokumentation sklavisch in Firewallregeln konvertiert hat.
&lt;/p&gt;
&lt;p&gt;
Deswegen lautet meine Empfehlung ganz klar, vom Hersteller einer Software gelieferte Portlisten komplett zu ignorieren
und aus tcpdump und Firewall-Log herauszudestillieren, welche Kommunikationsbeziehungen die Applikation im gegebenen
Anwendungsszenario &lt;u&gt;wirklich&lt;/u&gt; zu benutzen gedenkt. Das funktioniert allerdings selten auf Anhieb, weil oftmals der
nächste Port erst benutzt wird, wenn der Zugriff auf den erstfreigegebenen Port erfolgreich war. Man ist also gut
beraten, wenn man die Applikation entweder selbst bedient oder den Anwender vorher darauf vorbereitet, dass man mehrere
Iterationen von &amp;#8220;probier&amp;#8217;s nochmal, ah ja, moment&amp;#8221; benötigen wird bis die Applikation benutzbar sein
wird - denn sonst wird einem diese Trial-and-Error-Methode gerne als unstrukturiertes oder unfähiges Vorgehen
missinterpretiert. Außerdem muss man darauf vorbereitet sein, im Rahmen dieser Vorgehensweise auch die obskureren
Funktionen der Software bis hin zum &amp;#8220;Agent-Update auf dem Client&amp;#8221; auszuprobieren, denn sonst fällt einem
die Sicherheitspolicy vielleicht irgendwann im laufenden Betrieb schmerzhaft auf den Fuß.
&lt;/p&gt;
&lt;p&gt;
Wenn man die aufwändige Phase einmal abgeschlossen hat, wird man nicht selten mit einem schlanken, gut dokumentierten
Regelwerk belohnt, von dem man weiß, dass es keine unnötigen Risiken enthält. Außerdem bekommt man durch die Arbeit
mit dem Firewall-Log und tcpdump ein Gefühl für die Kommunikation und genug Erfahrung mit den Tools, um später im
Fehlerfall souverän mit den Tools umgehen zu können und deren Ausgabe sinnvoll interpretieren zu können. Und es
erspart einem unnötige Aktionen mit der Glaskugel um zu raten, was der Hersteller mit seiner unvollständigen
Dokumentation, die nicht selten stur aus einer Portliste ohne Protokoll- und Richtungsangabe besteht, wohl gemeint haben
könnte.
&lt;/p&gt;
&lt;p&gt;
Abschließend noch eine Wunschliste: Wenn Ihr den Firewallbetreuern Eurer Anwender einen großen Gefallen tut, dann
beschreibt die Kommunikationsbeziehungen Eurer Software vollständig. Das bedeutet also im Zweifel eine Liste wie hier:
&lt;blockquote&gt;&lt;pre&gt;
name=DNS proto=(UDP/TCP) srcip=(1) dstip=(2) dstport=53
name=http proto=TCP srcip=(1) dstip=ivanova.notwork.de,*.zugschlus.de dstport=80
name=amanda-control proto=UDP srcip=client dstip=server dstport=10080
name=amanda-data proto=TCP srcip=client srcport=50000 dstip=server dstport=50000-50100

(1)=IP-Adresse des lokalen Systems
(2)=Full Service Resolver für das lokale System
&lt;/blockquote&gt;&lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;
Dokumentation gehört zum Regelwerk dazu, denn man möchte auch in zwei Jahren noch verstehen, warum man das, was da
drin steht, auch reingeschrieben hat. Deswegen liefert Eurem Firewaller bitte auch, wie das System heißt, für das da
die Regeln eingetragen werden sollen, und was es tut. Er wird dann noch das aktuelle Datum und Euren Namen
dazuschreiben, und dann ist die Dokumentation brauchbar.
&lt;/p&gt;
&lt;p&gt;
Wenn es sich um ein Testsystem handelt, ist es sinnvoll, die damit verbundenen Regeln zeitlich zu beschränken. Dazu
muss der Firewaller aber wissen, dass es ein Test ist, und wie lange er voraussichtlich dauern wird. Manche
Firewallsysteme können bei jeder Regel sofort ein Verfallsdatum dazuschreiben. ab der die Regel automatisch nicht mehr
angewendet wird. Sonst muss man das halt manuell mit Kommentaren im Regelwerk machen. Geht auch.
&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Mon, 11 Jan 2010 10:29:40 +0100</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/877-guid.html</guid>
    <category>firewall</category>
<category>ip</category>
<category>security</category>
<category>tcp</category>
<category>tcp/ip</category>
<category>udp</category>

</item>
<item>
    <title>Scan eingehender Mail auf Malware</title>
    <link>http://blog.zugschlus.de/archives/772-Scan-eingehender-Mail-auf-Malware.html</link>
            <category>Security</category>
    
    <comments>http://blog.zugschlus.de/archives/772-Scan-eingehender-Mail-auf-Malware.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=772</wfw:comment>

    <slash:comments>5</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=772</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    &lt;p&gt;
Dadurch, dass mein Mailsystem in seiner Eigenschaft als Nichtwindows nicht besonders anfällig gegen Malware ist und ich
auch nicht blind auf jeden Anhang klicke, leiste ich mir seit einigen Jahren den Luxus, dass der Clamav auf meinem
Mailserver nur die Malware ablehnt, die ich explizit konfiguriert habe. So werde ich die lästigsten Störer automatisch
los und habe trotzdem einen Überblick darüber, was im Moment so an Malware unterwegs ist, weil der Clamav natürlich
auch Malware, die nicht auf der Reject-Liste steht, markiert.
&lt;/p&gt;
&lt;p&gt;
Es gab zwischendrin eine Zeit, da kam ungefähr gar nichts. So wenig jedenfalls, dass ich ernsthaft darüber nachgedacht
habe, die CPU-Zyklen für den Scan eingehender Mail auf Malware einzusparen und den Mailvirenscanner abzuschalten.
&lt;/p&gt;
&lt;p&gt;
Gut, dass ich das nicht gemacht habe, denn in den letzten zwei bis drei Wochen kommt durchaus wieder Malware per Mail in
signifikanter Menge (also mehr als zwanzig pro Tag). So hat der Clamav wieder ein wenig mehr zu tun, und ich werde in
Zukunft nicht mehr so schnell darüber nachdenken, einen nicht störenden Sicherheitsmechanismus wegen
&amp;#8220;irrelevant, braucht man heutzutage nicht mehr&amp;#8221; abzuschalten.
&lt;/p&gt;
  
    </content:encoded>

    <pubDate>Fri, 07 Nov 2008 18:30:43 +0100</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/772-guid.html</guid>
    <category>mail</category>
<category>malware</category>
<category>security</category>

</item>
<item>
    <title>Funktastaturen sind immer noch böse</title>
    <link>http://blog.zugschlus.de/archives/601-Funktastaturen-sind-immer-noch-boese.html</link>
            <category>Security</category>
    
    <comments>http://blog.zugschlus.de/archives/601-Funktastaturen-sind-immer-noch-boese.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=601</wfw:comment>

    <slash:comments>6</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=601</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    &lt;p&gt;
Funktastaturen sind dafür, dass sie gegenüber klassischen Tastaturen eigentlich nur Nachteile haben, erschreckend weit
verbreitet. Sie sind nur unwesentlich weniger unhandlich wie kabelgebundene TastBaturen, fressen dafür Batterien wie
blöde, verringern den Kabelsalat nicht - und unsicher sind sie oft auch.
&lt;/p&gt;
&lt;p&gt;
Funktastaturen sind besonders im Firmenumfeld fast ausschließlich dort zu finden, wo mit vertraulichen Strategiedaten
umgegangen wird, nämlich in der Chefetage. Dort sind die Informationen, die tagein, tagaus in die Tastaturen gehämmert
werden, in aller Regel sensibler als dort, wo es aus Kostengründen keine Funktastaturen gibt (sie aber eventuell
sinnvoller wären). Schließlich erwartet man gerade von den großen Herstellern mit L und mit M, dass sie sich ein
Mindestmaß über die Vertraulichkeit der über die meist proprietären Funkstrecken Gedanken machen.
&lt;/p&gt;
&lt;p&gt;
Schon vor fünf Jahren konnten meine Kollegen mit ihren L-Tastaturen die Eingaben der Firma eine Etage höher abgreifen,
und laut &lt;a href=&quot;http://blog.zugschlus.de/exit.php?url=aHR0cDovL3d3dy5oZWlzZS5kZS9uZXdzdGlja2VyL21lbGR1bmcvOTk4NjQ=&amp;amp;entry_id=601&quot;  onmouseover=&quot;window.status=&#039;http://www.heise.de/newsticker/meldung/99864&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; title=&quot;externer Link zum Heiseticker&quot;&gt;heise online&lt;/a&gt;
hat es jetzt die mit einem dem Stand der Technik von 1540 entsprechenden 8-Bit-XOR-Schlüssel gesicherten Funktastaturen
von M erwischt. So eine &amp;#8220;Verschlüsselung&amp;#8221; reicht gerade, um dem Laien zu zeigen, dass da keine
Klartextdaten über die Luftschnittstelle gehen; einem mit unterdurchschnittlicher Energie ankommenden Angreifer hält
so eine &amp;#8220;Sicherheit&amp;#8221; geschätzt dreieinhalb Sekunden stand, und dann liegen alle getippten Passworte und
Buchhaltungsdaten dem Mithörer weit offen.
&lt;/p&gt;
&lt;p&gt;
Und so muss meine Empfehlung weiterhin lauten: Finger weg von Funktastaturen. Und wenn es partout ein Statussymbol sein
muss, oder der Einsatz einer Funktastatur ausnahmsweise mal Sinn und Zweck haben (z.B. bei einem Entertainment-PC, den
man auch vom Sofa aus bedienen können will), sollte man wenigstens das Geld für eine Bluetooth-Tastatur in die Hand
nehmen: Das ist ein offener Standard, dessen Sicherheit zwar nicht berauschend gut ist, aber eine derartige
Peinlichkeit, wie sie sich Vendor M mit seinen Produkten geleistet hat, ist dort eher nicht zu erwarten.
&lt;/p&gt;
&lt;p&gt;
Ach ja, übrigens: Wenn Ihr mich richtig ärgern wollt, nehmt mir meine kabellose Maus weg. Besonders mit Bluetooth ist
das Klasse, wenn das Notebook das Bluetooth-Interface bereits eingebaut hat und man am Notebook überhaupt nichts
einstöpseln muss und die Maus trotzdem einfach funktioniert. Aber das Konzept war wohl zu einfach und nicht proprietär
genug, denn Vendor L hat die MX 900 schon vor vielen Monaten aus dem Programm genommen.
&lt;/p&gt;
  
    </content:encoded>

    <pubDate>Sat, 01 Dec 2007 17:39:20 +0100</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/601-guid.html</guid>
    <category>funkmaus</category>
<category>funktastatur</category>
<category>heise</category>
<category>security</category>

</item>
<item>
    <title>Dysfunktionales Yahoogroups</title>
    <link>http://blog.zugschlus.de/archives/556-Dysfunktionales-Yahoogroups.html</link>
            <category>Security</category>
    
    <comments>http://blog.zugschlus.de/archives/556-Dysfunktionales-Yahoogroups.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=556</wfw:comment>

    <slash:comments>10</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=556</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    &lt;p&gt;
Die Raptor-Mailingliste hat hat Ende 2005 ihren Hoster verloren und der Moderator hat sie umgezogen. Zu Yahoogroups.
Grmbl.
&lt;/p&gt;
&lt;p&gt;
Da kann man zwar subscriben als wäre es eine Mailingliste, aber in Wirklichkeit gibt es natürlich
&amp;#8220;Mehrwert&amp;#8221;. Zum Beispiel den Mehrwert, dass man sich für jeden Scheixx anmelden muss. So zum Beispiel auch
dafür, wenn man gucken will, warum Mails nicht ankommen in der Liste.
&lt;/p&gt;
&lt;p&gt;
Die letzte Mail, die ich über die Liste bekommen habe, ist vom 30. April. Das ist für eine Liste, die normalerweise
gut über zehn Beiträge pro Monat sammelt, eine schon verhältnismäßig lange Pause. Und die Mail, die ich am 16. Mai
an die Liste geschrieben habe, ist noch nicht angekommen.
&lt;/p&gt;
&lt;p&gt;
Ich frage mich nun: Ist die Liste technisch gestört, oder ist sie &amp;#8220;nur&amp;#8221; tot und ich habe bei meiner
Einreichung etwas falsch gemacht? Leider braucht man zur Ermittlung dieses Status eine Yahoo-ID, die ich nicht habe, und
wenn ich versuche herauszufinden ob vielleicht automatisch eine angelegt wurde, fragt er haufenweise persönliche Daten
ab, die ich sicher beim subscribe nicht angegeben habe, und will dann ein nicht funktionierndes Captcha gelöst haben.
&lt;/p&gt;
&lt;p&gt;
Warum hätte man nicht einfach einen Mailinglistenservice nehmen können?
&lt;/p&gt;
  
    </content:encoded>

    <pubDate>Sat, 26 May 2007 08:34:53 +0200</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/556-guid.html</guid>
    <category>symantec</category>
<category>yahoo</category>

</item>
<item>
    <title>Berufsverbot</title>
    <link>http://blog.zugschlus.de/archives/449-Berufsverbot.html</link>
            <category>Security</category>
    
    <comments>http://blog.zugschlus.de/archives/449-Berufsverbot.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=449</wfw:comment>

    <slash:comments>6</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=449</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    &lt;p&gt;
Das Bundesministerium der Justiz bereitet einen Gesetzentwurf vor, der den Schutz vor Computerkriminalität mit
strafrechtlichen Maßnahmen verbessern soll. Und handelt Deutschland erneut den Verlust von zahlreichen
hochqualifizierten Arbeitsplätzen im Hochtechnologiesektor ein.
&lt;/p&gt;
 Der &lt;a href=&quot;http://blog.zugschlus.de/exit.php?url_id=2095&amp;amp;entry_id=449&quot;  onmouseover=&quot;window.status=&#039;http://www.bmj.bund.de/media/archive/1317.pdf&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;  title=&quot;externer Link zum Bundesministerium der
Justiz&quot;&gt;Gesetzentwurf zur Änderung des StGB&lt;/a&gt; fügt einen neuen Paragrafen 202 c &amp;#8220;Vorbereiten des Ausspähens
und Abfangens von Daten&amp;#8221; in das Strafgesetzbuch ein.

&lt;blockquote&gt;
&lt;p&gt;
Wer eine Straftat nach § 202 a oder § 202 b vorbereitet, indem er
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Passworte oder sonstige Sicherungscodes, die den Zugang zu Daten (§ 202 a Abs. 2) ermöglichen, oder&lt;/li&gt;
&lt;li&gt;Computerprogramme, deren Zweck die Begehung einer solchen Tat ist, herstellt, sich oder einem anderen verschafft,
verkauft, einem anderen überlässt, verbreitet oder sonst zugänglich macht,
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;wird mit Freiheitsstrafe bis zu einem Jahr oder mit Geldstrafe bestraft.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;
§ 202 a ist heute schon &amp;#8220;Ausspähen von Daten&amp;#8221;; § 202 b wird &amp;#8220;Abfangen von Daten&amp;#8221;.
&lt;/p&gt;
&lt;p&gt;
Es wird also in Zukunft verboten sein,
&lt;ul&gt;
&lt;li&gt;Proof of Concepts für Schwachstellenausnutzung zu erstellen (&amp;#8220;herstellen&amp;#8221;)&lt;/li&gt;
&lt;li&gt;Bugtraq, Full Disclosure oder ähnliche Mailinglisten auch nur abonniert zu haben (&amp;#8220;sich
verschaffen&amp;#8221;)&lt;/li&gt;
&lt;li&gt;Schwachstellenanalysen durchzuführen (da man sich vorher Tools entweder verschaffen oder herstellen muss)&lt;/li&gt;
&lt;li&gt;&amp;#8220;Live Hacking&amp;#8221; als Schockeffekt in Seminaren (&amp;#8220;sonst zugänglich machen&amp;#8221;)&lt;/li&gt;
&lt;li&gt;Linux-Distributionen, die nmap oder nessus enthalten zum Download bereitzuhalten (&amp;#8220;verbreiten&amp;#8221;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
Was bleibt einem Security-Consultant in Deutschland dann noch als Arbeitsmöglichkeiten offen?
&lt;/p&gt;
&lt;p&gt;
Ich glaube, ich muss doch auf Schafzucht oder Lokführer umsatteln. Qualifizierte Arbeitsplätze sind in Deutschland
wohl unerwünscht.
&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Thu, 21 Sep 2006 10:38:28 +0200</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/449-guid.html</guid>
    <category>arbeitsplatz</category>
<category>dummes-gesetz</category>
<category>politik</category>
<category>security</category>

</item>
<item>
    <title>Sind Firewalls noch zeitgemäß?</title>
    <link>http://blog.zugschlus.de/archives/416-Sind-Firewalls-noch-zeitgemaess.html</link>
            <category>Security</category>
    
    <comments>http://blog.zugschlus.de/archives/416-Sind-Firewalls-noch-zeitgemaess.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=416</wfw:comment>

    <slash:comments>8</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=416</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    &lt;p&gt;
Die meisten restriktiven Security Policies haben inzwischen ein Alter von drei bis fünf Jahren erreicht. Damals hat man
das als Policy niedergelegt, was im gerade führenden Fachbuch stand, und somit auch schon einige Jahre auf dem Buckel
hatte. Auf solch einer alten Policy aufgesetzte Sicherheitsmaßnahmen, die typischerweise das böse Internet mit einer
(!) Firewall von dem einen (!) internen Netz abtrennen und bestenfalls eine kleine Handvoll Servicenetze (vulgo
&amp;#8220;DMZ&amp;#8221;, wobei &amp;#8220;mehr als ein Servicenetz&amp;#8221; immer noch mit &amp;#8220;Respekt! Das ist aber gut
durchdacht!&amp;#8221; kommentiert wird) beinhalten, sind in der heutigen Welt kaum mehr zeitgemäß; es ist Zeit, hier
anzusetzen.
&lt;/p&gt;
 &lt;p&gt;
Mit Policies auf dem technischen Stand von vor fünf Jahren ist heute ein messbarer Sicherheitsgewinn kaum mehr
erreichbar. Zu sehr verschwimmen in den letzten Jahren die Netzgrenzen, werden durch Inter-, Extra- und Intranet,
VPN-Tunnel, UMTS, Wireless LAN, Mobile Devices, Suspendmodi und andere Dinge immer weiter aufgeweicht, so dass eine
einzige klassische Firewall am Unternehmenseingang heute nicht mehr zeitgemäß ist. Mit solchen Lösungen erreicht man
nur, dass die Leute, die die Arbeit machen, bei ihrer Leistungserbringung massiv behindert werden, was die IT-Kosten in
ihrer Gesamtheit in astronomische Höhen treibt. Außerdem bauen die Leistungsträger sich in so einer Umgebung
policykonforme Workarounds, die nur deswegen policykonform sind, weil es sie zum Zeitpunkt der Policyerstellung schlicht
noch nicht gab und sie deswegen in der Policy nicht verboten sind. Interessant finde ich übrigens, dass es kaum eine
Security Policy gibt, die die in der Technik seit 20 Jahren übliche Maxime &amp;#8220;Es ist alles verboten, was nicht
ausdrücklich erlaubt ist&amp;#8221; (vulgo &amp;#8220;default deny&amp;#8221;) zur Grundlage hat. Nein, die meisten Policies
ergehen sich in seitenlangen Listen von Dingen, die bei sofortiger Entleibung niemalsnie passieren dürfen. Das Ergebnis
ist der GAU: Hohe Kosten bei nur mäßigem Sicherheitsniveau.
&lt;/p&gt;
&lt;p&gt;
Nun, wie schon so oft: Kris Köhntopp hat das schon vor Jahren ausgeforscht. &lt;a
href=&quot;http://blog.zugschlus.de/exit.php?url_id=2125&amp;amp;entry_id=416&quot; title=&quot;http://kris.koehntopp.de/artikel/mobile_devices/&quot;  onmouseover=&quot;window.status=&#039;http://kris.koehntopp.de/artikel/mobile_devices/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Seine Präsentation über Mobile Devices&lt;/a&gt; spricht mir aus der
Seele, und er hat natürlich Recht. Besonders seine Aussage, dass die Benutzer immer kreativer werden, je restriktiver
die Policy ist, ist eine viel zu selten in dieser Deutlichkeit ausgesprochene Wahrheit.
&lt;/p&gt;
&lt;p&gt;
Was lernen wir daraus? Eine Security Policy ist nur dann sinnvoll, wenn man sie aktuell hält. Wobei
&amp;#8220;aktuell&amp;#8221; nicht nur heißt, dass man die technischen Weiterentwicklungen, die den Sinn der alten Policy in
Frage stellen, verbietet - nein, das wird man eh nicht durchhalten können, weil viele dieser technischen
Weiterentwicklungen als Spielzeug für die Entscheider taugen und man deren Verbot deswegen eh nicht wird durchhalten
können. Es ist vielmehr sinnvoll, die existierende Policy in regelmäßigen Abständen - am besten innerhalb eines
formellen Review-Prozesses - zu hinterfragen und zu modernisieren. Das bedeutet freilich auch, dass manche Verbote
aufgehoben oder abgeschwächt gehören und man sich nach anderen Wegen zur Reduktion des Risikos umsehen muss. Die
Security wird in den nächsten Jahren wieder näher an die Daten selbst, also an die Server, heranrücken müssen, und
dafür wird Geld in die Hand genomen werden müssen. Als Belohnung winken schneller ablaufende, weniger kostende
IT-Projekte in der Zukunft.
&lt;/p&gt;
&lt;p&gt;Viele Unternehmen werden externen Rat nötig haben, und zwar sowohl im Prozess der Policyanpassung als auch bei der
Umsetzung der neuen Policy. Es wird viel zu tun geben - fragen Sie bitte jemanden, der sich auskennt!
&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Wed, 19 Jul 2006 13:55:36 +0200</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/416-guid.html</guid>
    <category>consulting</category>
<category>firewalls</category>
<category>security</category>
<category>security policy</category>

</item>
<item>
    <title>Microsoft über den Umgang mit kompromittierten Systemen</title>
    <link>http://blog.zugschlus.de/archives/397-Microsoft-ueber-den-Umgang-mit-kompromittierten-Systemen.html</link>
            <category>Security</category>
    
    <comments>http://blog.zugschlus.de/archives/397-Microsoft-ueber-den-Umgang-mit-kompromittierten-Systemen.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=397</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=397</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    &lt;p&gt;
Im Microsoft Technet stehen von Zeit zu Zeit echte Perlen. Aber die hier ist so gut (und so wahr), dass ich sie sogar
hier zitieren muss.
&lt;/p&gt;

&lt;p&gt;
Jesper M. Johansson, Ph.D., CISSP, MCSE, MCP+I, seines Zeichens Security Program Manager bei der Microsoft Corporation,
schreibt in einem &lt;a href=&quot;http://blog.zugschlus.de/exit.php?url=aHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3RlY2huZXQvY29tbXVuaXR5L2NvbHVtbnMvc2VjbWdtdC9zbTA1MDQubXNweA==&amp;amp;entry_id=397&quot; title=&quot;http://www.microsoft.com/technet/community/columns/secmgmt/sm0504.mspx&quot;  onmouseover=&quot;window.status=&#039;http://www.microsoft.com/technet/community/columns/secmgmt/sm0504.mspx&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; &gt;Artikel mit dem
Titel &amp;#8220;Help: I Got Hacked. Now What Do I Do?&amp;#8221; aus dem Mai 2004:&lt;/a&gt;
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can’t clean a compromised system by patching it. Patching only removes the vulnerability. Upon getting into
your system, the attacker probably ensured that there were several other ways to get back in.&lt;/li&gt;
&lt;li&gt;You can’t clean a compromised system by removing the back doors. You can never guarantee that you found all the
back doors the attacker put in. The fact that you can’t find any more may only mean you don’t know where to look, or
that the system is so compromised that what you are seeing is not actually what is there.&lt;/li&gt;
&lt;li&gt;You can’t clean a compromised system by using some “vulnerability remover.” Let’s say you had a system hit
by Blaster. A number of vendors (including Microsoft) published vulnerability removers for Blaster. Can you trust a
system that had Blaster after the tool is run? I wouldn’t. If the system was vulnerable to Blaster, it was also
vulnerable to a number of other attacks. Can you guarantee that none of those have been run against it? I didn’t think
so.&lt;/li&gt;
&lt;li&gt;You can’t clean a compromised system by using a virus scanner. To tell you the truth, a fully compromised system
can’t be trusted. Even virus scanners must at some level rely on the system to not lie to them. If they ask whether a
particular file is present, the attacker may simply have a tool in place that lies about it. Note that if you can
guarantee that the only thing that compromised the system was a particular virus or worm and you know that this virus
has no back doors associated with it, and the vulnerability used by the virus was not available remotely, then a virus
scanner can be used to clean the system. For example, the vast majority of e-mail worms rely on a user opening an
attachment. In this particular case, it is possible that the only infection on the system is the one that came from the
attachment containing the worm. However, if the vulnerability used by the worm was available remotely without user
action, then you can’t guarantee that the worm was the only thing that used that vulnerability. It is entirely
possible that something else used the same vulnerability. In this case, you can’t just patch the system.&lt;/li&gt;
&lt;li&gt;You can’t clean a compromised system by reinstalling the operating system over the existing installation. Again,
the attacker may very well have tools in place that tell the installer lies. If that happens, the installer may not
actually remove the compromised files. In addition, the attacker may also have put back doors in non-operating system
components.&lt;/li&gt;
&lt;li&gt;You can’t trust any data copied from a compromised system. Once an attacker gets into a system, all the data on it
may be modified. In the best-case scenario, copying data off a compromised system and putting it on a clean system will
give you potentially untrustworthy data. In the worst-case scenario, you may actually have copied a back door hidden in
the data.&lt;/li&gt;
&lt;li&gt;You can’t trust the event logs on a compromised system. Upon gaining full access to a system, it is simple for an
attacker to modify the event logs on that system to cover any tracks. If you rely on the event logs to tell you what has
been done to your system, you may just be reading what the attacker wants you to read.&lt;/li&gt;
&lt;li&gt;You may not be able to trust your latest backup. How can you tell when the original attack took place? The event
logs cannot be trusted to tell you. Without that knowledge, your latest backup is useless. It may be a backup that
includes all the back doors currently on the system.&lt;/li&gt;
&lt;li&gt;The only way to clean a compromised system is to flatten and rebuild. That’s right. If you have a system that has
been completely compromised, the only thing you can do is to flatten the system (reformat the system disk) and rebuild
it from scratch (reinstall Windows and your applications). Alternatively, you could of course work on your resume
instead, but I don’t want to see you doing that.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Ein weiser Mann. Ich wünsche mir, dass einige Manager in Zukunft auf diesen weisen Mann hören.
&lt;/p&gt;

&lt;p&gt;
Gefunden hab ich das übrigens bei &lt;a
href=&quot;http://blog.zugschlus.de/exit.php?url_id=1884&amp;amp;entry_id=397&quot; title=&quot;http://www.deimeke.net/dirk/blog/index.php?/archives/404-Kompromittierte-Systeme-....html&quot;  onmouseover=&quot;window.status=&#039;http://www.deimeke.net/dirk/blog/index.php?/archives/404-Kompromittierte-Systeme-....html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; &gt;Dirk,&lt;/a&gt; und der
hat&amp;#8217;s von &lt;a href=&quot;http://blog.zugschlus.de/exit.php?url=aHR0cDovL2Jsb2cucG9tbWVzYnVkZS5vcmcvYXJjaGl2ZXMvMjAzLVdhcy10dW4tYmVpLWtvbXByb21pdHRpZXJ0ZW0tV2luZG93cy1SZWNobmVyLmh0bWw=&amp;amp;entry_id=397&quot; title=&quot;http://blog.pommesbude.org/archives/203-Was-tun-bei-kompromittiertem-Windows-Rechner.html&quot;  onmouseover=&quot;window.status=&#039;http://blog.pommesbude.org/archives/203-Was-tun-bei-kompromittiertem-Windows-Rechner.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; &gt;El
Loco.&lt;/a&gt;  
    </content:encoded>

    <pubDate>Sun, 21 May 2006 09:06:42 +0200</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/397-guid.html</guid>
    <category>exploit</category>
<category>security</category>

</item>
<item>
    <title>Port Knocking für ssh</title>
    <link>http://blog.zugschlus.de/archives/387-Port-Knocking-fuer-ssh.html</link>
            <category>Security</category>
    
    <comments>http://blog.zugschlus.de/archives/387-Port-Knocking-fuer-ssh.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=387</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=387</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    &lt;p&gt;
&lt;a href=&quot;http://blog.zugschlus.de/exit.php?url=aHR0cDovL2Jsb2cudm9ka2FtZWxvbmUuZGUvYXJjaGl2ZXMvOTItU3Bhc3MtbWl0LU9wZW5TU0guaHRtbA==&amp;amp;entry_id=387&quot; title=&quot;http://blog.vodkamelone.de/archives/92-Spass-mit-OpenSSH.html&quot;  onmouseover=&quot;window.status=&#039;http://blog.vodkamelone.de/archives/92-Spass-mit-OpenSSH.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; &gt;ixs berichtet&lt;/a&gt; über eine neue mögliche aus
der Ferne ausnutzbare Schwachstelle in OpenSSH, und ich nutze die Gelegenheit, für etwas Forschung im Bereich &lt;a
href=&quot;http://blog.zugschlus.de/exit.php?url=aHR0cDovL3d3dy5wb3J0a25vY2tpbmcub3JnLw==&amp;amp;entry_id=387&quot; title=&quot;http://www.portknocking.org/&quot;  onmouseover=&quot;window.status=&#039;http://www.portknocking.org/&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; &gt;Port Knocking.&lt;/a&gt;
&lt;/p&gt;
 &lt;p&gt;
Port Knocking ist eine Technik, bei der ein auf einem System im Internet laufender Dienst erst dann für die IP-Adresse
eines Clients sichtbar wird, wenn dieser Client vorher eine Folge von vorab festgelegten Paketen an den Host geschickt
hat. Das ganze ist natürlich eine Art Security by Obscurity, und ähnelt den Mechanismen von Geheimdiensten, bei denen
man erst vom Agenten angesprochen wird, wenn man sich zuerst in der Nase gebohrt, dann die Brille zurechtgerückt und
schließlich etwas vom Boden aufgehoben hat.
&lt;/p&gt;

&lt;p&gt;
Eine kurze Suche im Debian-Archiv fördert die Package &lt;a href=&quot;http://blog.zugschlus.de/exit.php?url=aHR0cDovL3BhY2thZ2VzLmRlYmlhbi5vcmcva25vY2tk&amp;amp;entry_id=387&quot; title=&quot;http://packages.debian.org/knockd&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/knockd&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; &gt;knockd&lt;/a&gt; zu Tage,
die einen Daemon und einen Client enthält, mit dem man Port Knocking umsetzen kann. Mit einer schön einfachen
konfiguration kann man den knockd dazu veranlassen, nach Empfang gewisser Pakete bestimmte Kommandos auszuführen. Hier
ein Beispiel:
&lt;/p&gt;

&lt;blockquote&gt;
&lt;pre&gt;
[opencloseSSH]
        sequence         = 1234:udp,8765:tcp,54321:tcp
        seq_timeout      = 5
        start_command    = /sbin/iptables --append dynamic -s %IP% -p tcp --dport 22 -j ACCEPT
        tcpflags         = syn
        cmd_timeout      = 60
        stop_command     = /sbin/iptables --delete dynamic -s %IP% -p tcp --dport 22 -j ACCEPT
&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;
In diesem Beispiel legt der knockd eine iptables-Regel an, die den Zugriff auf TCP-Port 22 von einer IP genau dann
erlaubt, wenn innerhalb von fünf Sekunden von dieser IP-Adresse ein Paket an UDP-Port 1234, dann ein Paket an TCP-Port
8765 und schließlich ein Paket an TCP-port 54321 empfangen wurde. Diese Regel bleibt 60 Sekunden bestehen und wird
danach wieder entfernt.
&lt;/p&gt;

&lt;p&gt;
Sprich: Wenn man knockd verwenden will, braucht&amp;#8217;s mindestens ein minimales Paketfiltermanagement auf dem System,
denn sonst fehlt das Drumrum. Ich habe zwar mit meinem netfilter-init eine eigene Dauerbaustelle von einem sehr
leistungsfähigen (aber auch langsamen) Paketfiltermanager, wollte hier aber auf eine Standardlösung zurückgreifen.
Die Auswahl hierfür fiel schnell auf &lt;a href=&quot;http://blog.zugschlus.de/exit.php?url=aHR0cDovL3BhY2thZ2VzLmRlYmlhbi5vcmcvc2hvcmV3YWxs&amp;amp;entry_id=387&quot; title=&quot;http://packages.debian.org/shorewall&quot;  onmouseover=&quot;window.status=&#039;http://packages.debian.org/shorewall&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot; &gt;shorewall,&lt;/a&gt; weil ich mir das
schon lange mal angucken wollte.
&lt;/p&gt;

&lt;p&gt;
Die Shorewall-Package in Debian haut mich nicht wirklich vom Stuhl: Entgegen dem, was ich eigentlich erwarte, kommt sie
in keinster Weise vorkonfiguriert, der Paketfilter ist disabled und das Regelwerk leer. Man muss sich also aus den nach
/usr/share/doc/shorewall installierten Beispielen aus der Original-Doku sein eigenes Regelwerk zusammenzimmern und
bekommt auf diese Weise keine automatischen Updates.
&lt;/p&gt;

&lt;p&gt;
Nun, eine &amp;#8220;allow all&amp;#8221; Policy ist schnell zusammengezimmert. Das Regelwerk, das im Default gebaut wird,
kümmert sich schön um Grenzfälle und ist in diesem Punkt besser als das, was mein netfilter-init bastelt.
&lt;/p&gt;

&lt;p&gt;
Allerdings ist shorewall nicht so &amp;#8220;high-level&amp;#8221; wie es sich in den Markeingtexten gibt. Auch hier schreibt
man Regeln, welches Protokoll und welche Quell-/Zielports von welcher IP auf welche IP erlaubt und verboten sein sollen,
wobei es schöne Symboliken für Netze und Interfacegruppen (so genannte Zonen) gibt. Hübsch. Auch gibt es Mechanismen,
die nach einer bestimmten Zeit wieder auf den alten Zustand (bzw. &amp;#8220;komplett offen&amp;#8221;) zurückrollen, wenn die
erfolgreiche Aktivierung des Paketfilters nicht vom Bediener bestätigt wird.
&lt;/p&gt;

&lt;p&gt;
Etwas unterentwickelt sind die Blacklistfähigkeiten. Man kann mit einem Shellkommando einzelne IP-Adressen komplett
blocken, und diese Blockierung wieder aufheben. Einem Angreifer nur einen Port sperren, oder eine weiter hinten im
Regelwerk stehende Reject-Regel für einzelne IP-Adressen aufheben (wie es für das Port-Knocking-Projekt notwendig
ist), geht mit Bordmitteln nicht. Leider sind meine Bugs, die ich heute mittag gegen Shorewall geschrieben habe,
irgendwo versackt und nichtmal im Exim-Log des Hosts angekommen.
&lt;/p&gt;

&lt;p&gt;
Mit der Kombination aus dem wie oben gezeigten knockd und shorewall funktioniert Port Knocking auf nechayev.zugschlus.de
inzwischen ziemlich gut, ich bin zufrieden. Ich werd mir das mal ein paar Tage angucken und dann überlegen, ob ich es
auf die anderen Hosts ausdehne.
&lt;/p&gt;

&lt;p&gt;
knockd enthält auch einen Client, mit dem man die notwendigen Pakete verschicken kann. Das einzige, was noch fehlt, ist
eine Hook-Option im Openssh-Client, um den knock-Aufruf automatisch in das ssh-Kommando einzuklinken. Bugreport ist
eingereicht.
&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Wed, 03 May 2006 22:50:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/387-guid.html</guid>
    
</item>
<item>
    <title>X509 Certification Authority</title>
    <link>http://blog.zugschlus.de/archives/377-X509-Certification-Authority.html</link>
            <category>Security</category>
    
    <comments>http://blog.zugschlus.de/archives/377-X509-Certification-Authority.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=377</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=377</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    In diesem Artikel samme ich Links zu Literatur und HOWTOs über den Aufbau lokaler X.509 Certification Authorities.
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.zugschlus.de/exit.php?url=aHR0cDovL3d3dy5kYXZpZHBhc2hsZXkuY29tL2FydGljbGVzL2NlcnQtYXV0aG9yaXR5Lmh0bWw=&amp;amp;entry_id=377&quot; title=&quot;http://www.davidpashley.com/articles/cert-authority.html&quot;  onmouseover=&quot;window.status=&#039;http://www.davidpashley.com/articles/cert-authority.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;David Pashley: Becoming a X.509 Certificate
Authority.&lt;/A&gt; Inklusive einiger interessanter Artikellinks für &amp;#8220;further reading&amp;#8221; am Ende des
Artikels.&lt;/li&gt;
&lt;/ul&gt;
 
    </content:encoded>

    <pubDate>Fri, 14 Apr 2006 15:44:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/377-guid.html</guid>
    <category>pki</category>

</item>
<item>
    <title>virtually exploitable</title>
    <link>http://blog.zugschlus.de/archives/292-virtually-exploitable.html</link>
            <category>Security</category>
    
    <comments>http://blog.zugschlus.de/archives/292-virtually-exploitable.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=292</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=292</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    &lt;p&gt;Seit Jahren schon unke ich darüber, dass Virtualisierung a la vmware, Xen und Co zwar sehr kostensenkend und
vereinfachend sein kann, aber mit einer Reduktion des Sicherheitsniveaus einhergeht. Und auch seit Jahren werde ich
dafür belächelt und die virtuelle Umgebung trotzdem weiter ausgerollt.&lt;/p&gt;

 &lt;p&gt;So erfüllt es mich mit wenigstens etwas Befriedigung, dass der von mir vorhergesagte Fall inzwischen eingetreten
ist: Durch einen Buffer Overflow im vmware-NAT-Treiber ist - sowohl unter Linux als auch unter Windows - die Übernahme
des Gastgebersystems möglich. Und da dieser Treiber ziemlich weit unten im Gastsystem eingreift, gibt&amp;#8217;s die root-
und/oder Administratorprivilegien gratis und franko gleich dazu. Dazu, dass dieser Exploit ausgerechnet (oder&lt;br /&gt;
erwartungsgemäß?) die kommerzielle Virtualisierungsvariante vmware betrifft, sag ich lieber nichts, denn die
entsprechende Lücke in einer der freien Alternativen kommt bestimmt.&lt;/p&gt;

&lt;p&gt;vmware hat gepatched und eine korrigierte Version ohne diese Schwachstelle herausgegeben, die alle vmware-Admins nun
bitte schnellstmöglich auf ihre Systeme ausrollen mögen.&lt;/p&gt;

&lt;p&gt;Es bleibt das etwas schale Gefühl, Recht gehabt zu haben mit der Unkerei. Gut tun tut das irgendwie nicht.&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Thu, 19 Jan 2006 09:59:42 +0100</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/292-guid.html</guid>
    <category>exploit</category>
<category>security</category>
<category>virtualisierung</category>
<category>vmware</category>

</item>
<item>
    <title>To self-signed or not to self-sign?</title>
    <link>http://blog.zugschlus.de/archives/269-To-self-signed-or-not-to-self-sign.html</link>
            <category>Security</category>
    
    <comments>http://blog.zugschlus.de/archives/269-To-self-signed-or-not-to-self-sign.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=269</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=269</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    &lt;p&gt;Auf der &lt;a href=&quot;http://blog.zugschlus.de/exit.php?url_id=1729&amp;amp;entry_id=269&quot; title=&quot;http://mail.nessus.org/mailman/listinfo/nessus&quot;  onmouseover=&quot;window.status=&#039;http://mail.nessus.org/mailman/listinfo/nessus&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Nesus-Mailingliste&lt;/a&gt; fand ich heute eine &lt;a
href=&quot;http://blog.zugschlus.de/exit.php?url_id=1730&amp;amp;entry_id=269&quot; title=&quot;http://mail.nessus.org/pipermail/nessus/2005-December/msg00050.html&quot;  onmouseover=&quot;window.status=&#039;http://mail.nessus.org/pipermail/nessus/2005-December/msg00050.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Mail,&lt;/a&gt; deren Autor sich darüber wundert,
dass&lt;br /&gt; Nessus bei einem Self-Signed Certificate keine Warnung wirft.&lt;/p&gt;

&lt;p&gt;Schließlich ist das eine schlechte Security-Maßnahme weil auf diese Weise Man-in-the-Middle-Attacken möglich
werden. Das sei insbesondere im kommerziellen Umfeld ein Problem.&lt;/p&gt;

&lt;p&gt;Nun, meine Meinung dazu ist, dass es sicherer sein kann, ein selbstsigniertes Zertifikat selbst zu verifizieren als
sich blind auf die durchaus durchwachsenen Prozesse einer kommerziellen CA zu verlassen.&lt;/p&gt;

&lt;p&gt;Ach ja, die oben zitierte Mail kam von einem Verisign-Mitarbeiter.&lt;/p&gt;

  
    </content:encoded>

    <pubDate>Thu, 08 Dec 2005 14:52:05 +0100</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/269-guid.html</guid>
    <category>certificates</category>
<category>nessus</category>
<category>pki</category>
<category>security</category>
<category>verisign</category>
<category>x509</category>

</item>
<item>
    <title>suexec, die nächste</title>
    <link>http://blog.zugschlus.de/archives/252-suexec,-die-naechste.html</link>
            <category>Security</category>
    
    <comments>http://blog.zugschlus.de/archives/252-suexec,-die-naechste.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=252</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=252</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    &lt;p&gt;In Fortsetzung von &lt;a onclick=&quot;window.open(this.href, &#039;_blank&#039;); return false;&quot;
href=&quot;http://blog.zugschlus.de/exit.php?url_id=1739&amp;amp;entry_id=252&quot; title=&quot;http://blog.zugschlus.de/archives/211-suexec-my-php,-babywapache2.html&quot;  onmouseover=&quot;window.status=&#039;http://blog.zugschlus.de/archives/211-suexec-my-php,-babywapache2.html&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;suexec my php, baby^wapache&lt;/a&gt;&lt;span
style=&quot;text-decoration: underline;&quot;&gt; &lt;/span&gt;habe ich gestern suexec auf dem ersten Produktivsystem verfügbar gemacht,
und einige Unzulänglichkeiten im Debian-Setup gefunden.&lt;/p&gt;

 &lt;p&gt;Die Umstellung des Zielsystems von apache auf apache2 ging erschreckend schmerzfrei vonstatten. Die einzige Falle
dabei war, dass einige Dinge (z.B. der &lt;font face=&quot;courier new,courier,monospace&quot;&gt;ScriptAlias&lt;/font&gt; auf &lt;font
face=&quot;courier new,courier,monospace&quot;&gt;/usr/lib/cgi-bin&lt;/font&gt;) bei apache in der Serverkonfiguration steht, bei apache2
aber (IMO sinnvollerweise) in den virtual host geschrieben werden muss. Es waren also minimale Änderungen an der
kopierten virtual-host-Konfiguration notwendig.&lt;/p&gt;

&lt;div align=&quot;left&quot;&gt;Dann suexec. Ich bin natürlich &lt;u&gt;wieder&lt;/u&gt; in die Falle getappt, dass ich erwartet habe, dass das
cgi mit den Rechten des Fileowners läuft, und ich habe &lt;u&gt;wieder&lt;/u&gt; übersehen, dass suexec ein eigenes Log (&lt;font
face=&quot;courier new,courier,monospace&quot;&gt;/var/log/apache2/suexec.log&lt;/font&gt;) schreibt. Als nächstes musste ich die
userbezogenen virtuellen Hosts von &lt;font face=&quot;courier new,courier,monospace&quot;&gt;~user/.www/www.virthost.example&lt;/font&gt;
nach &lt;font face=&quot;courier new,courier,monospace&quot;&gt;/var/www/virtual-hosts/user/www.virthost.example&lt;/font&gt; verschieben, da
Debians suexec nur cgi-bins aus &lt;font face=&quot;courier new,courier,monospace&quot;&gt;/var/www&lt;/font&gt; suexecen mag. &lt;font
face=&quot;courier new,courier,monospace&quot;&gt;/var/www/virtual-hosts&lt;/font&gt; muss man dann in der Konfiguration für den default
virtual host auf &amp;#8220;deny from all&amp;#8221; setzen, damit man die Inhalte der virtual hosts nicht zusätzlich noch
über den default virtual host erreichen kann. Das ist auch der Grund für die dazwischen eingeschobene
Verzeichnisebene.&lt;/div&gt;

&lt;p&gt;So weit, so gut, für die cgi-bins der Benutzer.&lt;/p&gt;

&lt;p&gt;Nun möchte ich allerdings, wenn ich schon suexec am Start habe, auch gerne die aus Debian-Packages kommenden
cgi-Scripts suexecen. Und das ist ein Punkt, wo ich vorerst bei einem knackingen &amp;#8220;geht nicht&amp;#8221; angekommen
bin.&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;suexec suexect nur, was in &lt;font face=&quot;courier new,courier,monospace&quot;&gt;/var/www&lt;/font&gt; liegt. Debian-Packages
werfen ihre cgi-scrips aber nach &lt;font face=&quot;courier
new,courier,monospace&quot;&gt;/usr/lib/cgi-bin&lt;/font&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;suexec kann für jeden Virtual Host nur auf einen User
suexecen. Bei den Scripts aus Debian-Packages wäre es aber sinnvoll, unterschiedliche Scripte auf unterschiedliche User
zu mappen.&lt;/li&gt;&lt;/ul&gt;

&lt;p&gt;Also wird man wohl in den sauren Apfel beissen und sich darauf verlassen müssen, dass das, was aus Debian-Packages
kommt, hinreichend sicher ist, dass man es mit den Rechten des Webservers laufen lassen kann. Auch wenn das bedeutet,
dass einige Logs für &lt;font face=&quot;courier new,courier,monospace&quot;&gt;www-data&lt;/font&gt; writeable sein müssen, was ich
persönlich so richtig ätzend finde.&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Sun, 27 Nov 2005 11:27:02 +0100</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/252-guid.html</guid>
    <category>apache</category>
<category>php</category>
<category>security</category>
<category>suexec</category>
<category>webapps</category>

</item>
<item>
    <title>suexec my php, baby^wapache2</title>
    <link>http://blog.zugschlus.de/archives/211-suexec-my-php,-babywapache2.html</link>
            <category>Security</category>
    
    <comments>http://blog.zugschlus.de/archives/211-suexec-my-php,-babywapache2.html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=211</wfw:comment>

    <slash:comments>5</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=211</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    &lt;p&gt;Von einem der auszog, seine PHP-Scripts nicht mehr als www-data laufen zu sehen.&lt;/p&gt;

&lt;p&gt;Auf der Suche nach einer Lösung für ein Standardproblem&lt;/p&gt;

 &lt;p&gt;Während meiner ISP-Zeit habe ich es nur in zwei Bereichen geschafft, den Rat eines Kollegen (&amp;#8220;Du kannst Dich
nicht mit allem auskennen&amp;#8221;) zu beherzigen: Webserver und RADIUS. Der bewusste Verzicht auf RADIUS-Kenntnisse wäre
heute im ISP-Bereich ein Hindernis, und Webserver-Knowhow versuche ich derzeit durch kleinere private Projektchen
aufzubauen.&lt;/p&gt;

&lt;p&gt;Eins dieser Projektchen war der Bau eines Webservers, bei dem PHP-Scripts nicht mit den Rechten des Webservers
laufen, sondern mit den Rechten des Benutzers. Auf Servern, bei denen die Betreiber der virtuellen Server sich nicht
gegenseitig vertrauen, ist das eine Grundanforderung, die gar nicht &lt;u&gt;sooo&lt;/u&gt; leicht zu befriedigen ist. Apache bringt
zwar schon seit geraumer Zeit suexec mit, das eigentlich genau diese Aufgabe erledigen soll. Allerdings arbeiten die
großen Hoster teilweise aus historischen Gründen mit grotesk gepatschtem suexec, so dass man die Berichte, die man aus
diesen Ecken bekommt, für ein privates Feldwaldundwiesenprojekt nicht umsetzbar sind. Die im Web ergooglebaren
Dokumentationen sind allesamt durchwachsen, und nicht selten so voller Widersprüche, dass man am besten mit dem Lesen
aufhört, ehe man völlig verwirrt ist.&lt;/p&gt;

&lt;p&gt;Kurze Recherche zeigt, dass suexec sowieso ein Auslaufmodell ist. Irgendwann wird apache2 mit dem perchild threaded
model so weit sein, dass für jeden virtuellen Host ein eigener Apache-Prozess mit den entsprechenden Rechten läuft,
was alle heuten Probleme lösen dürfte. Aber, &amp;#8220;This MPM is not currently expected to work correctly, if at
all.&amp;#8221; Also lieber erstmal die Finger weg. Den Spezialfall PHP bekommt man heute mit suphp erschlagen, aber das ist
ein Projekt für die nächsten Tage. Mein aktuelles Vorhaben war, die Geschichte von der Pike auf zu lernen, und das
heißt definitiv klassisches suexec.&lt;/p&gt;

&lt;p&gt;suexec ist ein Wrapper für CGI-Scripts, der vom Apache aufgerufen dank suid root erstmal seine Privilegien
eskaliert, nach Prüfung einer ganzen Latte von Preconditions seine Rechte auf die des &amp;#8220;target users&amp;#8221;
reduziert und schließlich endlich das CGI-Script aufruft. Nun, wenn ich hier von CGI spreche, meine ich auch CGI. Da
perl und php normalerweise als Apache-Modul gerufen werden, kann man da nicht mit suexec eingreifen. Also muss man die
Scripts als CGI aufrufen, was zu einem Performanceverlust führt. Das machen die großen Hoster auch nicht anders, also
ist dieser Weg so verkehrt nicht.&lt;/p&gt;

&lt;p&gt;Also: mod_php raus, php4-cgi installiert und die (einfache) Konfiguration für &amp;#8220;PHP als CGI&amp;#8221;
durchgeführt.&lt;br /&gt;
Dabei fällt schon auf, dass die apache2-Packages von Debian ziemlich schlau gebaut sind: Jede Apache-Erweiterung bringt
in ihrer Package entsprechende Konfigschnipsel mit, die der Administrator mit den Scripts a2{en|dis}{mod|site} ein- und
ausschalten kann. Gute Arbeit, das fühlt sich &lt;u&gt;viel&lt;/u&gt; besser an als die wilden Debconf-Orgien
(&amp;#8220;Pondering....... Doing Magic......&amp;#8221;) der apache-1.3-Packages. Ist halt wieder eine typische
Debian-Geschichte mit vielen kleinen Dateien, die apache aber dank seines flexiblen Konfig-Parsers automatisch
zusammenstellen kann; update-apache2.conf gibt es - glücklicherweise - nicht. Kris wird dieses Setup sicher nicht
gefallen, ich mag es. Schön finde ich auch, dass suexec, das sehr stark zur compilezeit konfiguriert wird, in der
Debian-Package sinnvoll parametriert daherkommt.&lt;/p&gt;

&lt;p&gt;Die CGIs im Userdir ~/public_html laufen auf Anhieb unter meinem User. Allerdings ist&amp;#8217;s etwas komplexer, das
auch ausserhalb des Userdirs hinzubekommen. Ursache dafür ist, dass ich mir selbst ein Bein gestellt hatte. Ich ging
fälschlicherweise davon aus, dass auch ausserhalb des Userdirs suexec seine Rechte auf die des Users fallen lässt, dem
die Datei gehört, in dem das CGI-Script steht; sozusagen ein auf den Webserver übertragenes suid-bit. Das stimmt aber
nicht: Für suexec ausserhalb des Userdirs muss man innerhalb der Definition des virtual hosts explizit mit der
Direktive SuexecUserGroup einen Target-User und eine Target-Group angeben, sonst fällt suexec transparent und
kommentarlos auf den Fallbackuser zurück, der www-data heißt und man somit der Meinung ist, dass das suexec gar nicht
aufgerufen würde. Nachdem dies endlich verstanden war, war der Weg zum ersten als mh laufenden CGI aus /var/www nicht
mehr weit.&lt;/p&gt;

&lt;p&gt;PHP als CGI unter suexec ist ein bisschen schwieriger. Bei einem über eine Action aufgerufenen php zählt nicht der
Ablageort des PHP-Scripts, sondern der Ablageort des PHP-Binaries - und das liegt natürlich bei Debian weder innerhalb
des Webspaces, noch gehört es dem richtigen User. Also wird man für jeden User, der PHP verwenden wird, ein eigenes
PHP-Binary innerhalb des Webspaces brauchen, das obendrein auch noch dem richtigen User gehören muss. Ausserdem
braucht&amp;#8217;s wohl noch eine passende Action-Direktive für jeden Virtuellen Host; das hab ich allerdings noch nicht
ausprobiert, weil ich immer nur mit einem virtuellen Host gearbeitet habe. Kaum macht man&amp;#8217;s richtig,
funktioniert&amp;#8217;s auch schon, und mein passthru(&amp;#8220;id&amp;#8221;) sagte ordentlich id=1001(mh). Erfolgserlebnis.&lt;/p&gt;

&lt;p&gt;Was lernen wir daraus: Auch wenn man erwartet, zu wissen was in der Doku steht, kostet Querlesen gerne mal einen Tag
Zeit, weil man die wichtigen Informationen mehrfach überliest. de.comm.software.webserver ist für Fragen dieser
Gewichtsklasse überfordert, ausser Bastian Blank hat sich niemand zur Antwort auf meine Fragen motivieren
können.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;
Dasselbe gilt für #apache in Freenode, dessen Niveau bedauernswert niedrig ist und wo die Leute größtenteils nicht
einmal wussten, was suexec ist. Das beste Debugging-Tool ist nach wie vor strace, weil man damit dem Prozess so weit auf
die Finger gucken kann, dass man irgendwann mal zu dem Schluß kommt &amp;#8220;das ist aber nicht so wie ichs aus der Doku
erinnere, lasst mal lieber genau nachlesen&amp;#8221;.&lt;/p&gt;

&lt;p&gt;Nächste Projekte: suphp, und dann endlich die erste eigene s9y-Testinstallation.&lt;/p&gt;

 
    </content:encoded>

    <pubDate>Sat, 08 Oct 2005 01:47:00 +0200</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/211-guid.html</guid>
    <category>apache</category>
<category>php</category>
<category>security</category>
<category>suexec</category>
<category>webapps</category>

</item>
<item>
    <title>Bugtraq b0rken. For me.</title>
    <link>http://blog.zugschlus.de/archives/204-Bugtraq-b0rken.-For-me..html</link>
            <category>Security</category>
    
    <comments>http://blog.zugschlus.de/archives/204-Bugtraq-b0rken.-For-me..html#comments</comments>
    <wfw:comment>http://blog.zugschlus.de/wfwcomment.php?cid=204</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://blog.zugschlus.de/rss.php?version=2.0&amp;type=comments&amp;cid=204</wfw:commentRss>
    

    <author>mh+blog-zugschlus-de@zugschlus.de (Marc 'Zugschlus' Haber)</author>
    <content:encoded>
    &lt;p&gt;Seit Oktober 2004 habe ich über die &lt;a href=&quot;http://blog.zugschlus.de/exit.php?url_id=1745&amp;amp;entry_id=204&quot; title=&quot;http://www.securityfocus.com/archive/1&quot;  onmouseover=&quot;window.status=&#039;http://www.securityfocus.com/archive/1&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Bugtraq-Mailingliste&lt;/a&gt; genau
eine (in Ziffern: 1) Mail bekommen, und das war im Juli 2005. Trotzdem sagt der &lt;a
href=&quot;http://blog.zugschlus.de/exit.php?url_id=1746&amp;amp;entry_id=204&quot; title=&quot;http://www.securityfocus.com/archive&quot;  onmouseover=&quot;window.status=&#039;http://www.securityfocus.com/archive&#039;;return true;&quot; onmouseout=&quot;window.status=&#039;&#039;;return true;&quot;&gt;Mailinglisten-Robot,&lt;/a&gt; ich sei subscribed.&lt;/p&gt;

&lt;p&gt;Begeisterung aller Orten.&lt;/p&gt;

  
    </content:encoded>

    <pubDate>Mon, 03 Oct 2005 14:14:38 +0200</pubDate>
    <guid isPermaLink="false">http://blog.zugschlus.de/archives/204-guid.html</guid>
    <category>bugtraq</category>

</item>

</channel>
</rss>