Fingerprinting jetzt auch mit OpenBSD-PF

Original geschrieben von ColdWisdom
Jedoch gilt dies natürlich nur für den Port 80/443 bzw. http/https.

Klar, dies war auch nur als Beispiel gedacht. Man kann, wenn nur der Port 80 betroffen sein sollte, zwar den Rechner davor schützen das dieser sich aufhängt, aber wenn ich nur 150 forks zulasse und diese mit unsinnigen DoS Anfragen beschäftigt sind, kann mir auch keiner mehr den eigentlichen Dienst wirklich nutzen.

Interessant finde ich den thread jetzt wirklich denn, ich bin gerade dabei meinen Router/FW sicherer zu gestalten, was man mit einer festen IP und 24/7 mit eigene mail+webserver schon machen sollte.

Portsentry hat leider den gravierenden Nachteil, dass sie erst nachdem die vermeintliche Attacke passiert ist, die Alarmglocke lauten lässt. Und ein PacketFilter in Verbindung mit einem Fingerprint soll zeitgleich reagieren und die jeweilige Aktion (je nach Verbindungs-/Angriffs-Szenario) starten.

Nicht ganz.
Im Prinzip hört portsentry auf die angegeben Ports und versucht zu erkennen, ob ein portscan von einem möglichen Hacker kommt der evtl. einen Services sucht über den er ins System kommt. Ist dies der Fall, so setzt portsentry eine Regel ab:

Code:
KILL_ROUTE="/sbin/ipfw/ add 1 deny all from $BöserJunge:255.255.255.255 to any"

Diese IP bleibt dann auch so lange in der portsentry DB, bis der Rechner neu gestartet wird oder man diese IP entfernt.
Meist ist es aber so, das die Jungs über Rechner kommen die auch schon gehackt sind und nur als Sprungbrett dienen.
Es ist kein Allheilmittel, aber wie von Dir schon erkannt, macht es die Summe aus der Security Features die man nutzt.

1.) Umleitung auf Honeypots (also nicht-existente Rechner)

Welche Programme für honeypots gibt es denn?
Das Modell ist mir klar, die Implementierung noch nicht.

Außerdem können Attacken auch aus dem Inneren des Netzes kommen.

Gerade was "hacks" angeht, so ist dies in Unternehmen ein häufig unterschätztes Problem. Nach aussen absichern, innen darf aber jeder alles anschauen.
Dazu braucht es dann nichtmal einer Kenntnis der Möglichkeiten der Attacke, denn diese braucht es nicht, es ist eh alles für jeden irgendwie zugänglich.

Man sagt ja (es gibt auch Belege dafür), dass ca. 60-70% der Attacken (aller Art) im Innern passieren (also nicht so sehr durch böse Hacker :)

Exakt. Oder einfach durch Dummheit. Ein Mailwurm im internen Netz sorgt innerhalb von Minuten für den Stillstand. Nur weil ein User eine mail und Anhang geöffnet hat der "screensaver" hiess. Alles schon mitgemacht.

Daher sollte man sich wegen ein paar Filter, IDSe u.ä. nicht in Sicherheit wähnen.

Das nicht, aber man sollte dennoch ruhig schlafen können. Denn es kann jeden treffen. Durch gewissen Massnahmen kann man aber die Arbeit danach erleichtern, oder davon ausgehen das nichts wirklich wichtiges verändert wurde.

Oder aber einen Host aufsetzen und mit einem Script per ssh die Daten rüberscheffeln.
So habe ich es mit meinen Firewall-Logdateien gemacht.
Da habe ich eine fette Platte in die Logmaschine eingebaut und per ssh von den Firewalls die Logs geholt, sodass die Firewall nicht einmal die Logs auf ihre Platte zwischenspeichern sollte.
Alles ging direkt vom logischen pflog0-Device (mit 100Mbit per ssh) auf die Logmaschine rüber.
Dies ist natürlich nur eine der viele, guten Möglichkeiten.

Eine weitere Möglichkeit wäre es den Server im securelevel 1 laufen zu lassen, oder höher. Soweit so gut, es kann aber immer noch genug passieren. Daher wäre der nächste Schritt die wichtigen Dateien auch noch mit dem "schg flag" zu markieren (schg -R $Datei).

Folgende Vorgehensweise wäre denkbar:

1. rc.conf
Securelevel auf "1" oder höher setzen.

2. Damit niemand diese Datei bearbeiten kann, ein Hacker könnte eindringen und diese Datei öffnen, den securelvel runtersetzen und die Kiste neu booten, noch /etc/rc.conf mit "schg" markieren.
Nun kann auch root diese Datei nicht mehr bearbeiten.
Um den securelevel nun wieder runterzusetzen wenn man die Welt bauen möchte, muss man schon in den single user mode. Da der keine Netzverbindung hat, für einen Hacker von aussen nicht möglich.

3. Dateien in /bin /usr/lib,... auf "schg" setzen.
Auch hier gilt dann, wenn man den kernel neu bauen möchte, zuerst in den single user mode, die flags entfernen, booten.

4. /usr/local/etc/rc.d/ Skripte laden dazu ein das System in die Hand zu bekommen. Hier kann ein Hacker ein Script ablegen was sonstwas ausführt, beispielsweise einen eigenen "rc" der dann alles umgeht was man an Sicherheit eingerichtet hat. Also Vorsicht.

5. Dateien wie .hostory und log files sollten auch mit einem flag versehen werden, welches im securelevel 1 nicht mehr geändert werden kann. Dabei bietet sich "sappnd" an. Dieses flag setzen, und der Hacker kann beispielsweise .history oder eben die logs nicht mehr nach /dev/null umleiten um seine Spuren zu verwischen. Gotcha babe.
So kann man sich den Weg über einen anderen Server auf dem die logs liegen sparen.

6. Jails nutzen und eine Backup Jail anlegen die sofort mit den gleichen Diensten genutzt werden kann. Ist ein Hacker in eine Jail eingebrochen, so kann diese auch kontaminiert sein, man weiss es nicht ob hier oder dort doch ein Trojaner oder sonstwas liegt. Wenn man Paranoid ist dann sollte man das gesammte System neu afsetzen (wenn man keine Jails nutzt). Nutzt man hingegen Jails, so einfach die gehackte löschen und die BackupJail aktivieren.


Wie man aber sieht gibt es derer zwei Dinge zu meistern:

1. Veränbderungen am eigenen System sind kaum mehr möglich und man muss viele Unwegsamkeiten in Kauf nehmen um das System einigermassen sicher zu machen.

2. Man sollte sich genaustens Aufschreiben wo man welche Veränderung an welcher Datei/ welchem Verzeichnis gemacht hat. Nach wenigen Wochen vergisst man dies und steht dann schnell im Regen.

OpenBSD zumindest läuft out-of-the-box mit Securelevel 1.

Wobei da dann kein X läuft. Aber he, wer auf einem Server X laufen lässt....

Ich habe auf einer Website einige gute Skripte gefunden, die dann systemwichtige Dateien auf schg setzen und Seclevel 2 einschalten.

Hehe, das ist genau das was ich wohl eben beschrieben habe, zeig doch mal.

Aber bitte auf der Logmaschine ;)

Oder, wie oben beschrieben, entspr. flags setzen.

Ich bin gerade je selbst auf der Suche nach einer entspr. Security für meinen Server wie ich schon schrieb. Wer also konkrete Ideen hat, kann diese gerne posten, ich freu mich drüber.
 
Original geschrieben von asg
Klar, dies war auch nur als Beispiel gedacht. Man kann, wenn nur der Port 80 betroffen sein sollte, zwar den Rechner davor schützen das dieser sich aufhängt, aber wenn ich nur 150 forks zulasse und diese mit unsinnigen DoS Anfragen beschäftigt sind, kann mir auch keiner mehr den eigentlichen Dienst wirklich nutzen.


Daher sollte man eben auf die Honeypots zugreifen.

Da kann man z.B. einige fake-Webserver einrichten, mit den sich dann die Eindringlinge beschäftigen können.

Dann kommt es erst gar nicht dazu, dass man Dutzende/Hunderte/wieviel-auch-immer Anfragen hat.

Interessant finde ich den thread jetzt wirklich denn, ich bin gerade dabei meinen Router/FW sicherer zu gestalten, was man mit einer festen IP und 24/7 mit eigene mail+webserver schon machen sollte.

Gut! :)

Nicht ganz.
Im Prinzip hört portsentry auf die angegeben Ports und versucht zu erkennen, ob ein portscan von einem möglichen Hacker kommt der evtl. einen Services sucht über den er ins System kommt. Ist dies der Fall, so setzt portsentry eine Regel ab:

Code:
KILL_ROUTE="/sbin/ipfw/ add 1 deny all from $BöserJunge:255.255.255.255 to any"

Eine weitere Möglichkeit von mir:

Dies kann (unter anderem) mit dem PF so bewerkstelligt werden, dass der Fingerprint (mit der von mir vorgestellten, neuen Technik) im Hintergrund läuft und wir schon zuvor in der /etc/pf.conf (der PF-Konfigdatei) eine table <bad_guys> persist anlegen.

Mit dieser fett markierten Anweisung wird eine Tabelle im Arbeitsspeicher angelegt, sobald der PF die pf.conf geparst hat, Diese bleibt selbst dann erhalten, wenn keine Regel sie benutzt (für mehr Infos kannst du meine Übersetzung der FAQ holen).

Denn normalerweise werden ja "nutzlose" (also auch leere) Tabellen weggewischt.

*Übrigens ist eine Tabelle nichts anderes als ein Platzhalter für viele (auch für viele Zehntaused) IPs.*

So, jetzt stellen wir uns folgendes vor:

-----------------------------------------------------------------------------

* Unsere Firewall filtert den Traffic und schützt die Server im Inneren.

* Zugleich läuft auch der Fingerprint im PF.

* Ein Eindringling versucht irgendetwas anormales anzustellen ... z.B. einen nmap-Scan, oder versucht unseren Mailserver als Relay zu nutzen (Stichwort: Spam) ... es gibt halt viele Szenarien.

* Der Fingerprint erkennt dies und lässt die zuvor angelegte, persistente Tabelle mit einer neuen IP auffüllen. --> der IP des Eindringlings

* Und nachdem die Tabelle diese IP erhalten hat, schlägt die, von uns bereits vordefinierte, Block-Regel in der /etc/pf.conf zu und schnappt sich die Tabelle (und somit auch die Adressen in ihr) und BLOCKT die IP.


* Klatsch, Klatsch!

-----------------------------------------------------------------------------

Das hast du doch mal irgendwo angesprochen, in einem früheren Thread ... IP blocken, fertig aus!


So könnte man dies mit PF bewerkstelligen und da FreeBSD den PF in den Ports/Packages hat (NetBSD als Package), wäre dies auf allen BSDs machbar.

Ich kenne mich leider mit ipfw/ipfw2 und den anderen Tools nicht auch und möchte daher nicht auf diese eingehen. Mit diesen sollte dies aber auch machbar sein.

Ich hoffe, dass die Idee übertragbar ist, was die Konfigurationsdateien / Filtersysteme angeht.

Wenn du aber gute Beispiele für ipfw u.ä. hast, dann her mit diesen :)

Diese IP bleibt dann auch so lange in der portsentry DB, bis der Rechner neu gestartet wird oder man diese IP entfernt.

Entspricht meinem obigen Beispiel (was die Bearbeitung angeht) ... die Ideen sind übertragbar ... das ist gut.

Meist ist es aber so, das die Jungs über Rechner kommen die auch schon gehackt sind und nur als Sprungbrett dienen.

Und daher sollte man eben eine forensische Analyse parat führen und zugleich jede Menge Honigtöpfe basteln.

Nur wenn man weiß, dass man z.B. monatlich nicht mehr als, sagen wir mal 25% der Anfragen auf den Webserver von Windows-Maschinen stammen (weil das Angebot auf der Website für Unixer gedacht ist), kann man auch eine Attacke von einem anormalen Traffic unterscheiden.

Nehmen wir an, dein Webserver hat nur Unix im Angebot und seltsamerweise ist die Anzahl der Anfragen an dich in den letzten 3 Tagen von nur noch 10% der Unixoiden Systeme gekommen und der rest war Windows.

Würde dich das denn nicht stutzig machen? :)

Es ist kein Allheilmittel, aber wie von Dir schon erkannt, macht es die Summe aus der Security Features die man nutzt.

Alles Patchwork, was der Mensch macht, weil er selber Gottes Patchwork ist.

Häh ... schon wieder philosophisch ... sorry, musste mich mal kurz von Denken entspannen.

Nur so gelingen die besten Philosophien ... wenn man nicht denkt.

Alles andere ... nur harte Arbeit :)

Welche Programme für honeypots gibt es denn?
Das Modell ist mir klar, die Implementierung noch nicht.

In meinem zweiten Posting ganz oben habe ich die Homepage von Niels Provos (einer der OBSD-Jungs) gepostet. Er ist derjenige, der einen Honeypot-Daemon als erster entworfen hat.

So bin ich zumindest informiert worden.

Dort findest du ein Package.

Leider kann man aber das Package nicht mehr aus den USA (wo er seine Dissertation macht) beziehen, weil das neue USA/Michigan-Gesetz solche Technologien verbietet.

Es gibt aber einen reserve-Server (ich glaube in Belgien oder Niederlanden), von dem aus du den neusten Quellcode ziehen kannst.

Unter OpenBSD läuft es sofort (kein Wunder, weil der halt bei OBSD mitmacht) und unter den anderen BSDs sollte es auch gehen. Linuxer habe auch ihre Packages, sodass alle die dies lesen, gerne mitmachen können.

Und die Texte von Lance Spitzner sind für den theoretischen Hintergrund zu empfehlen (er hat auch eine Menge an praktischen Berichten, leider aber nur unter Linux).

Besuche die Links. Du wirst es nicht bereuen.

Da würde ich einige Stunden schon investieren.

Gerade was "hacks" angeht, so ist dies in Unternehmen ein häufig unterschätztes Problem. Nach aussen absichern, innen darf aber jeder alles anschauen.

Und dafür (bzw. gegen dieses Verhalten in den Firmen) sind die Honeytokens am besten geeignet.

Man sollte die Honeytokens nicht mit Honeypots verwechseln.

Sie verfolgen ähnliche Prinzipien, unterscheiden sich aber in der Flexibilität und den Features.

Und das wirklich Tolle dabei ist, dass du deine eigenen Honeytokens basteln kannst, ohne ein Package, Quellcode oder Port.

Man soll sich aber auf jeden Fall die Texte von Spitzner durchgelesen haben, um zu verstehen, was sie sind und wie man sie baut.

Dazu braucht es dann nichtmal einer Kenntnis der Möglichkeiten der Attacke, denn diese braucht es nicht, es ist eh alles für jeden irgendwie zugänglich.

Daher sollte man nicht mehr passiv bleiben.

Daher diese neuen Techniken: integrierte Fingerprints, Honeypots, Honeytokens.

Wobei da dann kein X läuft. Aber he, wer auf einem Server X laufen lässt....

Stimmt nicht, denn OpenBSD hat den in-Kernel Aperture-Treiber.

Das könntest du aber nicht wissen, weil du ja kein OpenBSD fährst.

NetBSD Leute müssen sich z.B. diesen Treiber erst einmal aus den Posts/Packages holen, die lkm.conf anpassen, die rc.conf editieren, dass sie LKMs akzeptiert und dann rebooten.

Bei OBSD ist das schon drin.

Aber ich will ja keine Werbung hier machen. Es sollte dir bloß als Info dienen.

Und es stimmt, dass X auf einem Server nix zu suchen hat.

Hehe, das ist genau das was ich wohl eben beschrieben habe, zeig doch mal.

Hier der Link zum Härten von OpenBSD: http://www.geodsoft.com/howto/harden/


Gruß

CW
 
Nachtrag

Ach, gerade fiel mir ein, das ich in meinem letzten Post angegeben habe, dass es in meinen 2 Post von oben beide Links zu Honeypots zu finden gäbe.

Das stimmt nicht ganz, denn dort findet man nur den Link von Niels Provos-Homepage.

Die Lance Spitzner-Homepage ist weiter unten ... 8 oder 9 Post.

Gruß

CW
 
Zuletzt bearbeitet:
Original geschrieben von asg
Nach 2 mails an die Jungs vom heise newsticker, berichtet auch dieser nun davon:
http://www.heise.de/newsticker/data/kav-26.08.03-001/

Sehr gut! :)

Vor allem, wenn ich mir die Postings dieser Trolle bei heise.de durchlese.

Die wissen doch nicht einmal wo der Unterschied zwischen den einzelnen Netzschichten zu finden ist, geschweige denn was Fingerprintig sei und wie man es (richtig) einsetzt.

Auf jeden Fall ist es sehr spaßig die Beiträge zu lesen.

Gruß

CW
 
Zurück
Oben