by:

Hallo,


Nachdem ich in letzter Zeit viel zu tun hatte, dachte ich, es wird mal wieder
Zeit einen Beitrag zu schreiben.
Um dem Blog auch eine etwas persönlichere Note zu geben, behandelt dieser Artikel
diesmal keine technische Anleitung.
Es geht hier um meine aktuellen Projekte, etwas um mein Leben und was mir sonst noch so einfällt.

Gestern war ich auf der ISA 08 (Internet Summit), wo es hauptsächlich um
Web Accessibility ging. Wobei mir vorkam, dass die Anwesenden weniger
an einem barrierefreien Internet interessiert waren, als mehr an neuen Geschäftskontakten. Also mehr so was wie ein "Meet and Greet"... Aber das ist natürlich nur meine private Meinung.
Ansonsten war ich am letzten Wochenende in Berlin, was mir sehr gut getan hat.
Es war schön mal wieder Zeit mit der Familie zu verbringen und etwas von Berlin zu sehen. :)

Viel Zeit geht im Moment für Auftragsarbeiten drauf, weshalb meine OpenSource Projekte
wenig weiter entwickelt werden. Ich hoffe der Umstand wird sich bald wieder ändern.
Trotzdem möchte ich einen kleinen Überblick über meine Projekte geben:

1. CMS Bandits
2. b2b-portal
3. uploaded.ath.cx
4. webtools4larbin
5. Online Face Detection

1. CMS Bandits

Mein insgesamt aktivstes Projekt hat in letzter Zeit wenig neues erfahren.
Wie im Changelog geschrieben wurde das Menu überarbeitet, das Design auf Tableless
umgestellt und ist nun W3C konform. Außerdem gibt es einen noch nicht so ausgereiften
PDF Support.

Die nächsten Änderungen werden sein:

1. Template System
2. Admin - Verwaltungstool
3. Ein neuer Name

Bei Punkt 3 überlege ich schon seit längerem das Projekt unter
einem neuen Namen weiterzuentwickeln, habe aber noch keinen
passenen gefunden. Eventuell fällt dir ja einer ein, ich würde mich zumindest
über Vörschläge freuen ;)
Die nächste Release wird veraussichtlich zu Weihnachten veröffentlicht und
wird stark von der jetzigen Entwicklerversion abgeleitet sein.

2. b2b - portal

Ein sehr junges im konzeptuellen und experimentellen
Stadium befindliches Projekt das noch nicht veröffentlicht ist.
Das Ziel ist eine Mischung aus Firmendb und Community Portal.
Ähnlich wie Xing nur mit kostenlosen Community Funktionen, rein werbefinanziert.
Eine Alpharelease kann man sich hier anschauen:
http://www.codejungle.org/b2b
Wie gesagt handelt es sich um ein Projekt im Experimentierstadium,
d.h. die meisten geplanten Funktionen sind noch nicht verfügbar.

3. uploaded.ath.cx

Dieses Projekt wurde auch noch nicht der Öffentlichkeit vorgestellt, ist
aber soweit funktionsfähig.
Man kann über ein Webinterface bis zu 100 MB hochladen und bekommt anschließend eine
Adresse über die man die Daten wieder abrufen kann.
Es besteht auch die Möglichkeit via anonymen FTP auf die Daten zuzugreifen.

4. webtools4larbin

Dies ist ein sehr altes Projekt von mir (2006) was eigentlich nur aus
einer Release besteht. Ich habe über die Jahre immer wieder mit
Webcrawlern und Möglichkeiten zum effizienten indexieren experimentiert und werde vermutlich
in diesem Jahr noch eine überarbeitete Version des Indexers Online stellen.

5. Online Face Detection

Man kann derzeit Bilder hochladen wenn Gesichter erkannt werden, werden Sie rot Umramt und Angezeigt. Für die Zukunft ist auch Gesichtserkennung in Videos angedacht.



Ich hoffe euch hat dieser kleine Exkurs zu meinen Projekten gefallen.
Wie immer freue ich mich natürlich über Anregungen, Kritik und Kommentare.

Andreas


Kommentare

by:
  1. Was ist ein transparenter Proxy?
  2. Beispiel Implementierung
  3. Anwendungsbeispiele
  4. Spaß mit Proxys


Was ist ein transparenter Proxy?

Ein transparenter Proxy beschreibt im wesentlichen die Technik bestimmte
Anfragen an einen Proxy weiterzuleiten.
Der Benutzer bekommt von der Umleitung in der Regel nichts mit.


Beispiel Implementierung

In unserem Beispiel gehen wir mal davon aus, alle http Anfragen (also TCP Port 80)
an unseren Proxy weiterzugeben.
Dies machen wir mit Hilfe einer IP Tables Regel auf unserem Router:

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

Nun werden alle Anfragen auf den Proxy Port 3128 weitergeleitet.
Eventuell müsst Ihr noch das Input Device (im Beispiel eth1) wechseln.


Anwendunsbeispiele

Da es relativ viele Möglichkeiten gibt seinen Proxy zu konfigurieren, möchte ich hier
nur einen Überblick geben, wozu ich bisher Proxys installiert habe.

Der Cache
Der Klassiker ist sicher ein reiner Webseiten-Cache. Er dient dem Zweck Webseiten
zwischenzuspeichern und spart somit Bandbreite und verkürzt dazu noch die Ladezeit.

Der Anonyme
Der Proxy bewirkt, dass Verbindungsdaten anonymisiert werden.
Bei der Variante Tor hat man in der Regel bei jeder Anfrage eine andere IP die nach
außen sichtbar ist.
Die Rechtslage dazu ist derzeit unklar, da innerhalb der EU alle Verbindungsdaten gespeichert
werden müssen.
Auch die Zuverlässigkeit ist umstritten, da es vereinzelt Meldungen gibt,
wie man Tor Traffic beeinflussen kann.
Ein Nachteil ist außerdem, dass die Verbindungen unter anderem sehr langsam sind.

Der Filter Proxy
Er kann so konfiguriert werden, dass man Werbung, bestimmte Webseiten
oder einzelne Texte/Bilder filtert.
Vor einiger Zeit habe ich auch mal einen Proxy installiert, der alle Downloads zuerst durch den Virenscanner laufen ließ.

Andere Formen von Proxys
Web Proxy: Er dient der Zwischenspeicherung von Anfragen an den Webserver um diesen zu
entlasten.
MySQL- Proxy: Er verteilt die Anfragen an die Datenbank.

Natürlich kann man einen Proxy auch dazu verwenden um Mitarbeiter zu
überwachen und deren gesamten Webverlauf zu protokollieren.

Wie ihr seht, gibt es viele Einsatzgebiete, wo es Sinn macht einen Proxy einzusetzen,
sei es aus Performance- oder Sicherheitsgründen.

Es gibt selbstverständlich noch zahllose andere Anwendungsmöglichkeiten für einen Proxy,
diese hier aufzulisten würde wohl den Rahmen sprengen...
Dennoch hoffe ich, ihr konntet einen kurzen Einblick in die Materie erhalten.

Ich denke das Internet würde es heute nicht in der Form geben, würden nicht vereinzelt Proxys
die Inhalte zwischenspeichern und so uns einen schnellen Zugriff auf die gewünschten
Informationen gewährleisten.


Spaß mit Proxys

Spaß mit Proxys kann man haben, wenn man z.B. Bilder oder einzelne Texte ersetzt.
Die Erfahrung hat gezeigt, dass viele Anwender Manipulationen nicht mal bemerken, solange man es nicht allzu offensichtlich macht und einfach alle Bilder mit seinem Allerwertesten ersetzt.


Wer Fragen zur Konfiguration der vorgestellten Varianten hat, kann sie gerne stellen,
auch Kommentare sind herzlich Willkommen! ;)

LG

Andreas


Quellen:

http://de.wikipedia.org/wiki/Proxy_(Rechnernetz)

http://www.squid-cache.org
http://www.squid-handbuch.de/hb/
http://www.torproject.org
http://forge.mysql.com/wiki/MySQL_Proxy


Kommentare

by:

Die Angriffsformen sind gefährlich und können erheblichen Schaden anrichten, um ihnen effizient begegnen zu können ist es notwendig ihre Funktionsweise zu verstehen.

Anmerkung:

Alle vorgestellten Techniken sind ausschließlich zu edukativen Zwecken gedacht! Die Anwendung dieser Angriffe in öffentlichen Netzwerken ist ILLEGAL.

Bedenkt auch, dass in manchen Ländern schon das reine Beschaffen der Software strafbar ist (siehe sogenannter Hackerparagraph § 202c).

Was ist eine Man in the Middle Attacke (MitM) ?

Eine MitM Attacke bedeutet, dass man seinem Opfer vortäuscht, das eigentliche Ziel zu sein.

In der Praxis sendet der Angreifer dem Opfer gefälschte ARP Pakete indem er vorgibt, der Gatewayrechner zu sein. Ab diesem Zeitpunkt werden alle Anfragen vom Opfer an den Angreifer gesendet, man spricht auch von ARP Spoofing. Der Angreifer kann jetzt die Pakete weiterleiten und manipulieren. Natürlich ist es nun möglich alle in Klartext gesendeten Passwörter ohne große Mühe mitzulesen, sowie gefälschte Antworten an das Opfer zu senden.

Typisches Angriffsszenario

Der Angreifer führt eine MitM Attacke durch und leitet mit Hilfe von DNS Spoofing das Opfer auf eine gefälschte Webseite weiter. Diese entspricht rein optisch zumeist der eigentlichen Zielseite des Opfers. Hier hat der Angreifer jedoch die Möglichkeit die gefälschte Webseite so zu manipulieren, dass Passwörter und andere Eingaben gespeichert werden. Das Opfer bleibt in dem Glauben, dass alles in Ordnung ist und lediglich der Service vorübergehend nicht verfügbar ist oder das Passwort nicht mehr gültig sei...

Der Angriff

Ich persönlich empfehle Ettercap (0.6.b), da es Plattform unabhängig ist und eine Reihe von nützlichen Plugins mitliefert.

Wir editieren für unser DNS Spoofing zuerst die etter.dns Datei, die nach der Default- Installation im Verzeichnis /usr/local/share/ettercap zu finden ist.

78.41.112.52 *

Bei diesem Eintrag werden alle DNS Anfragen mit der IP 78.41.112.52 beantwortet.

Es ist natürlich auch möglich einzelne Hostnamen einzutragen:

78.41.112.52 microsoft.com

Nun können wir Ettercap starten, das Gateway mit der Entertaste auswählen, die a- Taste aktiviert das ARP Spoofing und das Plugin können wir mit p auswählen und aktivieren.

Bitte beachte, dass du als Angreifer nicht von der DNS Attacke betroffen bist, suche dir daher zum Testen und Überprüfen des Angriffs einen anderen Client Rechner in deinem lokalen Netzwerk.

Prävention

Eine gut gemachte MitM Attacke ist für den Laien nicht erkennbar und selbst für Leute, die sich damit auskennen, oft nicht leicht zu bemerken. Prävention ist daher eine wichtige Maßnahme.

Eine einfache Form der Prävention ist beispielsweise seine Daten zu verschlüsseln, was man bei sensiblen Daten prinzipiell immer machen sollte.

Der Chaos Computer Club hat allerdings schon bewiesen, dass auch verschlüsselte Webseiten mit SSL nicht unbedingt sicher sind.

Eine andere effektive Form der Prävention wäre z.B. statisches Routing, was allerdings bei größeren Netzwerken viel Administrationsaufwand bedeutet.

Desweiteren gibt es sogenante IDS (Intrusion Detection System) Systeme wie Snort, die solche Attacken erkennnen und gegebenenfalls darauf reagieren können.

[UPDATE]

Nachdem die Nachfrage nach Prävention hoch ist, möchte ich hier noch näher darauf eingehen.

Unter Windows gibt es das Tool Xarp2, welches Manipulation des ARP Caches erkennt. Man kann eine kostenlose Testversion hier herunterladen:

http://www.chrismc.de/development/xarp/index.html

Ein kostenloses Tool unter Linux wäre Arpwatch, das ebenfalls die Übersetzung Hardware zu IP Adresse überwacht und gegebenfalls den Administrator informiert:

http://www-nrg.ee.lbl.gov/ Download

Ich habe auch von dem Lösungsansatz gehört, dass jeder User in einem eigenen VLAN ist.

Ein Warnhinweis in eigener Sache:

Ich habe solche Attacken mit Erfolg in vielen Netzwerken getestet, dabei war mir die gesamte Tragweite oft nicht klar. Zum Beispiel bin ich nach einer erfolgreichen MitM- Attacke auf über 400 Rechner drauf gekommen, dass im Nachbarzimmer atomarer Abfall gelagert wurde... Ich gehe zwar davon aus, dass dieser gesondert gesichert ist, dennoch waren mir am Beginn des Angriffes die eventuellen Folgen nicht bewusst.

Ich bitte daher nochmals solche Angriffe nur im lokalen Netzwerk zu testen und es auch dabei zu belassen.

Ich hoffe euch hat der Beitrag gefallen und ich würde mich sehr über Feedback freuen.

Wer noch mehr Erfahren möchte kann hier weiterlesen.

Liebe Grüße

Andreas

Quellen:

http://de.wikipedia.org/wiki/Man-In-The-Middle-Angriff

http://ettercap.sourceforge.net/

http://www.monkey.org/~dugsong/dsniff/

http://www.snort.org


Kommentare

by:

1. PHP caching mit eaccelerator
2. MySQL und Indexes
3. MySQL socket over TCP
4. PHP Sessionhandler DB
5. Temp- Dateien von MySQL und PHP
6. Codeprofiling
7. MySQL- Proxy
8. Benchmarking


1. Caching mit eaccelerator

eaccelerator ist eine gute Wahl für Server, die eine hohe Last bewältigen müssen.
Die Vorteile liegen darin, dass PHP Skripte nicht bei jedem Aufruf neu gelesen und
interpretiert werden müssen, was bei mehreren Anfragen Zeit spart.
Ausserdem schont es die Festplatte, da der interpretierte Code im RAM gehalten wird.
Es gibt diverse Benchmarks die belegen sollten, dass eaccelerator eines der besten Cachingsysteme für PHP ist.
Ich selber verwende eaccelerator seit mehreren Jahren und bin sehr zufrieden.

2. MySQL und Indexes

Etwas worauf man immer wieder stößt, wenn man sich mit Performance und MySQL beschäftigt, ist die Aufforderung Indexe richtig zu setzen. Dem kann man eigentlich wenig hinzufügen.
Es hat sich gezeigt, dass gerade bei größeren DBs die Geschwindigkeit dramatisch gesteigert werden kann, wenn man seine Indexes richtig setzt.
Die MySQL Funktion "explain" hilft dabei queries zu optimieren.

3. MySql und Sockets

Wenn es möglich ist, sollte man Socket- Verbindungen der TCP- Verbindung vorziehen, da TCP- Verbindungen meist nur ein unnötiger Overhead sind. Manche Seiten berichten von einem Performancegewinn bis zu 20 %.
Die Verbindung lässt sich in PHP relativ einfach aufbauen,
entweder man verwendet beim mysql_connect localhost, dann versucht die Funktion
selbstständig eine Socket- Verbindung aufzubauen, oder man gibt den Pfad direkt an:

Code

<?php mysql_connect("/tmp/mysql.sock""root""pass"); ?>


4. PHP Sessionhandler

Ich verwende seit kurzem für mein CMS einen Datenbank- Sessionhandler, weniger aus Performance- Gründen, als mehr zur Lastverteilung.
Wie ein Datenbank- Sessionhandler ausschaut, könnt ihr euch hier ansehen:
http://www.codejungle.org/tag/Database_Session_handler_for_php/3.html

5. Temp- Dateien von MySQL und PHP

Temporäre Dateien von MySQL und PHP kann man auch im RAM speichern,
dazu legt man einfach ein Verzeichnis im tmp Ordner an:
mkdir /tmp/ram
und weist einen Teil des Arbeitsspeichers diesem Verzeichnis zu (in dem Fall 150mb):
/bin/mount -t tmpfs /dev/shm /tmp/ram/ -o size=150m

Danach muss man MySQL und PHP nur noch sagen wo sie die Temp Dateien speichern sollen.

MySQL mit dem Parameter --tempdir=/tmp/ram/ starten
und in der php.ini den session.save_path auf /tmp/ram/ setzen.

Nach meinen Tests hat dies zwar nicht viel Performance gebracht, aber naja, Kleinvieh macht auch Mist.

6. Code Profiling

Code Profiling ist eine nützliche Methode um seinen Code zu verbessern.
Man sieht, welche Funktionen wie viel Speicher, CPU und Zeit brauchen und kann
dann seinen Code optimieren. Ich selber habe xdebug zum optimieren verwendet,
es gibt aber auch noch eine Reihe anderer Profiler.
mod-top z.B. habe ich mir bisher zwar noch nicht näher angeschaut, es scheint aber auch relativ brauchbar zu sein.

7. MySQL- Proxy

MySQL- Proxy kann man als DB Lastenverteiler, aber auch als eine Failover Lösung benutzen.
Ich selber habe einige Lastenverteiler getestet und hier meine Ergebnisse veröffentlicht:

http://www.codejungle.org/tag/Lastenverteilung_mit_MySQL_und_SQLrelay/5.html


8. Benchmarking

Bevor man in den produktiven Betrieb geht sollte man seine Anwendung immer einem Benchmark unterziehen.
Eine einfache Methode ist AB, was für Apache Benchmark steht.
Mit AB ist es möglich mehrere Anfragen paralell an den Webserver zu senden und in den meisten Fällen kann man so auch die Grenzen des Servers ermitteln.

Beispiel für einen Befehl:
ab -c 100 -n 100 http://testserver.com/

Apache Benchmark ist bei der Default- Installation von Apache dabei.



Desweiteren möchte ich auf memcache aufmerksam machen, ich selber habe zwar keine praktischen Erfahrungen mit dem Object- Cachingsystem, doch ich denke, dass es für HighLoad Anwendungen durchaus interessant ist.

Ich hoffe euch hat der Beitrag gefallen.

MFG

Andreas


Quellen:

http://eaccelerator.net/
http://www.xdebug.org/
http://www.mod-top.org/
http://forge.mysql.com/wiki/MySQL_Proxy
http://www.mysqlperformanceblog.com/
http://www.h07.org/projects/apachetuning/#21
http://www.danga.com/memcached/


Kommentare

by:

Hallo,

nachdem ich immer wieder SSH Bruteforce Attacken auf meinem Server festgestellt habe, möchte ich euch heute ein kleines aber nützliches Tool vorstellen, was diese unterbindet. Denyhosts ist besonders dann praktisch, wenn man den SSH Port nicht auf eine bestimmte IP beschränken kann oder will. Die Installation unter Debian ist äusserst einfach.

Ein "apt-get install denyhosts" reicht in der Regel aus und man hat keinen Ärger mehr mit den lästigen SSH Bruteforce Attacken. Bei 5 (default) fehlgeschlagenen Loginversuchen wird die IP automatisch auf die hosts.deny Liste gesetzt.

Eine andere Möglichkeit ist Port Knocking, was einer Challenge- Response Lösung nahe kommt. Man sendet ein Packet an einen oder mehrere vorkonfigurierte TCP/UDP Ports und erst dann ist der SSH Port 22 für eine bestimmte Zeit erreichbar.

Ich hoffe euch hat der Beitrag gefallen.

Andreas

[UPDATE]

Zur Zeit verwende ich fail2ban, da es auch andere Protokolle (ssh, ftp, pop..) beherrscht und bin damit recht zufrieden. Anders als denyhosts verwendet es iptables Regeln.

Quellen:

http://www.fail2ban.org/

http://denyhosts.sourceforge.net/

http://en.wikipedia.org/wiki/Port_knocking


Kommentare


Seiten: