hier im Forum gibt es Menschen, die -- wie auch ich -- einen oder mehrere öffentliche Webserver betreiben und deren Logdate(i)en dabei von allerlei "besonderen Menschen" überflutet werden.
Meine Fragen ist: tut Ihr etwas dagegen? Wenn ja, was?
Logfile analysieren und dann handeln. Wahrscheinlich reicht Dein Platz nicht für unendliche Logfiles? Logfiles gehören eigentlich auf einen anderen Server, um nach einem Störfall noch nachsehen zu können.
Lieben Dank für Eure Antworten. Allerdings hab' ich durchaus einige Gigabyte für Logs übrig, und die Größe derselben ist auch nicht mein Problem. log2ban und fail2ban kenne ich auch schon, danke für die Hinweise.
Mein Problem ist vielmehr das: wie unterscheide ich (bei der Analyse meiner Logs) Freund und Feind? Also legitime User und A-löcher?
Ich betreue mit einer Kollegin 3 öffentliche Webserver. Wir werten access.log, error.log von Apache bzw Nginx und fail2ban aus.
Radikales Vorgehen: alle IPs aus RU/BY/CN/HK sind auf der Firewall, und zwar für immer; alle IPs die wirklich aggressive Anfragen stellen sind auf der Firewall, mindestens 1 Jahr, bei Wiederholung für immer. Fail2ban auf SSH gleich für immer (SSH liegt nicht auf Port 22).
Die Firewall wird täglich mindestens 1x erneuert, das sind inzwischen etliche Tausend IP-Bereiche, mindestens /24, oft sogar /16, etc. Tägliches Backup des Servers ist Pflicht, nach Änderungen ggf auch 2x. Macht Arbeit, wem das zu viel ist soll's lassen.
Alle verdächtigen IPs sperren kann viel Admin-Arbeit bedeuten, da manche Leute gemeinsam diese eine IP benutzen könnten.
Schöner wäre den Bösewichten Zeit stehlen und Spaß verderben, indem man manche ihrer Aktionen erst nach Minuten od. Stunden oder einer Eingabe wieder erlaubt.
"Nomen est omen" -> Manche Feinde sind am Namen erkennbar, da gibt es Listen bekannter Bösewichter (IP) oder clients. Und manchmal ist die angefragte URL verdächtig, wenn also einer nach password.txt oder ähnlichen fragt ...
Und Bösewichter sind meist script-kiddies, aus den Anfragen kann man also herauslesen, das es sich um scripte handelt (schnelles menschenuntypisches timing).
Und dann könnte man sich davon leiten lassen, das friedliche Menschen abends schlafen. Wenn also das Reverse-IP-DNS eine geo-reference eine timezone ermittelt in der eigentlich Schalfenmszeit ist ... (OK, das kann auch zu false positive führen).
Ich betreue mit einer Kollegin 3 öffentliche Webserver. Wir werten
access.log, error.log von Apache bzw Nginx und fail2ban aus.
Radikales Vorgehen: alle IPs aus RU/BY/CN/HK sind auf der Firewall, und
zwar für immer; alle IPs die wirklich aggressive Anfragen stellen sind
auf der Firewall, mindestens 1 Jahr, bei Wiederholung für immer.
Fail2ban auf SSH gleich für immer (SSH liegt nicht auf Port 22).
Das würde ich gerne machen, kann aber nicht. Mein Auftraggeber veranstaltet internationale Fachkongresse, da sind Wissenschaffende aus aller Herren Länder vertreten, sollen es sein, und bleiben. :-)
Andererseits hast Du mich auf ein paar gute Ideen gebracht, lieben Dank!
Man könnte ja... okay, ich habe eine Client-IP. Was ist, wenn die vermehrt HTTP [45]xx anstelle von [23]yy wirft, weil da einer die Muster veralteter Versionen von (zum Beispiel) Wordpress abklappert? (Zum Beispiel halt)
Entschuldigt bitte, ich... denke eher darüber nach, wie ich die Schmutzfinken erkennen kann. Erst wenn ich das kann, darf ich mir Gedanken machen, wie ich mit erkannten Schmutzfinken verfahre.
Ich habe Logs auf Webservern die ich betreibe, in ganz ganz seltenen Fällen zum Debuggen benötigt. Ansonsten habe ich (bzw. ein cronjob) die Logs nur gelöscht. Deswegen bin ich seit einiger Zeit dazu übergegangen, gar keine Logs mehr zu schreiben sobald der Service läuft.
Für die Firma, bei der ich mir meine Sporen verdient habe (lang ists her) habe ich die Logs einmal im Monat durch ein Analysetool gedreht. Clickstreams, Landing pages, originating TLDs und lauter so ein Zeugs. Keine Ahnung ob die Reports jemand gelesen hat. Wenn ja, dann nur Marketingdroiden... ismirsowasvonegal <shrug>
Man könnte ja... okay, ich habe eine Client-IP. Was ist, wenn die
vermehrt HTTP [45]xx anstelle von [23]yy wirft, weil da einer die Muster
veralteter Versionen von (zum Beispiel) Wordpress abklappert? (Zum
Beispiel halt)
Ist eine gängige Methode, nach x-mal 4xx (bei 5xx wäre ich vorsichtig) wird erstmal temporär gesperrt.
Dann musst Du aber a) bei Änderungen an der Website gut aufpassen, dass es keine fehlenden Bilder o.dgl. gibt und b) Fälle wie robots.txt, favicon.ico und irgendwelches Apple-Touch-Icon-Geraffel berücksichtigen (oder die Schwelle hoch genug setzen).
Als Kollateralschäden könntest Du andere Kunden hinter (CG)NAT-Gateways erwischen, aber das dürfte nur bei stark frequentierten Websites ein Hindernis sein.
alle IPs die wirklich aggressive Anfragen stellen sind
auf der Firewall, mindestens 1 Jahr, bei Wiederholung für immer
Das ist totaler Blödsinn. Wenn jemand wirklich aggressiv angreift, dann macht der das nicht mit seiner echten IP, sondern mit einer gespooften, über ein paar Proxies oder mit einer VPN-Lösung. Wenn man die IP, über die derjenige dann reinkommt, für längere Zeit blockiert, dann trifft man damit alles mögliche, aber ganz sicher nicht den Angreifer. In der Folge ärgern sich dann evtl. etliche ehrliche User über Deine ach so tolle Sperre, die nur zufällig über die gleiche IP reinkommen, die zuvor für einen Angriff genutzt wurde. Das ist total toll und für die Popularität einer Seite ein großes Plus. Ich möchte da nicht den Support für machen.
Zum Thema allgemein: Man muss schauen welche Ziele angegriffen werden und entsprechend handeln. Die meisten Angriffe, die ich sehe, sind immer noch dumme Script-Scans nach irgendwelchen Programmen oder Admin-Tools im Web-Ordner. Diese sind mir komplett egal, solange diese Tools entsprechend geupdatet sind. Die meisten der angegriffenen Tools nutzt man sowieso nicht oder man braucht auch nur den Standard-Ordnernamen zu ändern, damit solche Scans ins Leere laufen.
Bei besser gezielten Angriffen z.B. auf eine Passwort-Abfrage, kann man sehr gut Teergruben einsetzen. Also den ganzen Prozess der Passwort-Abfrage künstlich so verlangsamen, daß sich kein Bruteforce- oder Wörterbuchangriff mehr lohnt. Notfalls auch nach einer größeren Anzahl Fehlversuche über einen zweiten Kanal, wie beispielsweise einen Code per eMail verschicken, der zusätzlich abgefragt wird. Mit sowas aber wieder Vorsicht, denn das nervt den ehrlichen User und es darf sich nichts an der Ausgabe des Webservers ändern, was darauf schließen lässt, daß man das korrekte Passwort hat. Sondern nach vielleicht 10 Fehlversuchen nur noch ein Bildschirm, daß eine eMail an das Postfach gegangen ist, in der weitere Schritte zum Wiederherstellen eines vergessenen Kennworts stehen oder so. Diese eMail darf natürlich nicht jedes Mal tatsächlich versandt werden, sondern nur wenn das korrekte Kennwort eingegeben wurde (aber die erlaubten Fehlversuche voll sind) oder wenn der echte User das will (z.B. Link auf Kennwort vergessen anklickt). Dieser Umweg wird den User auch nerven, ist aber besser als ein verlorener Account.
alle IPs die wirklich aggressive Anfragen stellen sind
auf der Firewall, mindestens 1 Jahr, bei Wiederholung für immer
Das ist totaler Blödsinn. Wenn jemand wirklich aggressiv angreift, dann
macht der das nicht mit seiner echten IP, sondern mit einer gespooften,
über ein paar Proxies oder mit einer VPN-Lösung.
Da hast Du natürlich theoretisch recht, es sind jedoch immer die gleichen Proxies und Hoster, über die die Angriffe laufen. Und die sperren wir, weil eine Beschwerde über Abuse von denen wohl nicht mal gelesen wird (einige haben im Whois nicht mal eine Abuse-Email angegeben).
Und|Oder einen Honeypot installieren und zusammen mit vielen anderen
mittels Internet Storm Center rechtzeitig Attacken erkennen und
Gegenmaßnahmen ergreifen.
Bei mir laufen alle paar Minuten Scripts, die die Logfiles parsen und gewisse Suchmuster aufstöbern, die IP-Adressse extrahieren, in eine DB schreiben und von dort aus einen Export für das RULESET herstellen, das von den »nftables« importiert wird. Das heißt, die nft-firewall wird automatisch alle paar Minuten automatisch aktualisiert (non-artificial intelligence ;-)
wie unterscheide ich (bei der Analyse
meiner Logs) Freund und Feind?
Wenn du das nicht kannst, woher weißt du dann, dass es "Feinde" sind?
Sheeva,
mach mal einen nmap-scan auf deinen server. Schau, welche offenen Ports du hast.
Sollte da was offen sein, das du nach »draußen« gar nicht »anbieten« willst, dann hast du schon mal den ersten Anhaltspunkt, wo du ansetzen mußt.
Die meisten Angriffe kommen aus China, Rußland, Südafrika, Nordkorea etc. Also sperre von denen gleich ganze IP-Ranges (i.e. 1.24.0.0/13). Damit reduzierst du die Logfilegrößen schon mal um ein Drittel, wenn nicht mehr.
Suche mit grep die Logfiles nach DPT durch und sortiere und zähle sie, dann wirst du schnell fündig, dass die meisten Versuche an all jenen Ports anzudocken, die du auf deiner Maschine nicht geöffnet hast, definitiv keine Freunde sind.
Andererseits hast Du mich auf ein paar gute Ideen gebracht, lieben Dank!
Vielleicht noch was: den SSH-Zugang nicht per Username/Passwort sondern ausschliesslich über Publickey mit elliptischer Kurve erlauben (und natürlich kein root), einen hohen Port für SSH (und dann nicht 222, sondern z.B. 51736) und kein FTP/FTPS (Port 21/20), sondern SFTP, SCP und rsync -e ssh (das läuft dann alles über SSH), wieder 2 Ports zu. Der hohe Port für SSH ist erstaunlich erfolgreich, ich hatte früher Port 229 und trotzdem tausende IPs in Fail2ban, jetzt in fast 4 Jahren insgesamt nur 3 (i.W. drei) Angreifer die sich die Mühe gemacht haben alle Ports abzuscannen, das dauert halt. Was noch ginge wäre Port Knocking mit dem Paket knockd, damit habe ich aber keine Erfahrung.
hier im Forum gibt es Menschen, die -- wie auch ich -- einen oder
mehrere öffentliche Webserver betreiben und deren Logdate(i)en dabei von
allerlei "besonderen Menschen" überflutet werden.
Meine Fragen ist: tut Ihr etwas dagegen? Wenn ja, was?
Lieben Dank,
Sheeva
Ich hatte eine riesige händisch gepflegte IP-Sperrliste, was aber ein Kampf gegen Windmühlen war. Außerdem noch ein Script, das automatisch Tor-Server aufspürte und in die Sperrliste aufnahm.
Jetzt habe ich keinen eigenen Server mehr, das Risiko wurde mir irgendwann zu groß.
SSH kann man auch auf IPs beschränken. Muss die Kundschaft
normalerweise
nicht nutzen.
Genau SSH kann man gut schützen. Es braucht nur wenige Änderungen in der Konfigurationsdatei. Bereits den Port zu ändern hält schon viele Angriffsversuche ab.
Klar doch. Funktioniert mit nftables genauso locker wie mit ipv4.
Sieht man sich aber die Logfiles auf ipv6 an, wird schnell klar,
dass es besser ist, du disable ipv6 in der /etc/sysctl.conf:
Das ist totaler Blödsinn. Wenn jemand wirklich aggressiv angreift, dann
macht der das nicht mit seiner echten IP, sondern mit einer gespooften,
über ein paar Proxies oder mit einer VPN-Lösung.
Man merkt, dass Du von der Praxis keine Ahnung hast.
Es gibt haufenweise Adressblöcke, die seit Jahren für Angriffe eingesetzt werden. Die Eigentümer sind z.B. gelegentlich wechselnde russische Briefkastenfirmen, da kannst Du dann erahnen, was eine Mail an die Abuse-Adresse bringt.
Ansonsten gibt es noch genug Hoster, denen Beschwerden egal zu sein, mir fällt da spontan ein grosser aus Frankreich ein.
TOR und irgendwelche Kinder-VPNs sieht man zwar auch mal, aber das sind dann eher Forenspammer und ähnlicher Kleinkram.
Bereits den Port zu ändern hält schon viele Angriffsversuche ab.
Es bleibt leider genug übrig. Sobald einer der 24/7 aktiven Portscanner den gefunden hat, sieht man selbst Monate nach dem Dichtmachen noch gehäufte Versuche auf diesem Port.
Finde ich gar nicht. Was wäre eine wirklich realistische Alternative für Kleinbetreiber? Dein POV ist aus Sicht einer größeren Firma. Die kleinen haben keine Loadbalancer, DMZs, eigene DNS oder HardwareFirewalls oder oder.
Und: Die Verteidigung nach dem schwächsten, anzunehmenden ehrlichen User der Kette auszurichten, ist ein schwerer taktisch und strategischer Fehler.
Erstens muss man seine Klientel erziehen. Gratis E-Mail-Adressen usw., die Zeit ist längst vorbei. Ich weiß, für die meisten ist es das noch immer nicht. Thema Verschlüsselung: genau die gleiche Tragödie. Willst du einen ehrlichen User zulassen, hat sich der im Netz nicht anonym von irgendwoher zu bewegen. Im Straßenverkehr hat man Nummerntafeln. Wäre im Internet mit ipvng auch möglich, weil connection-oriented und nicht wie bei ipv4 connection-less.
Das ist aber ein zweischneidiges Schwert: die totale Überwachung.
Wenn jemand wirklich aggressiv angreift, dann
macht der das nicht mit seiner echten IP, sondern mit einer gespooften,
über ein paar Proxies oder mit einer VPN-Lösung.
Aber nicht jene aus China, Nordkorea etc., weil VPNs (z.Tor) »sau langsam« ist und die Angreifer meist keine Menschen sind, sondern BOTs, hunderte kleine Rasbperries oder dgl. Ausserdem: was soll ein ehrlicher Chinese oder Russe oder oder oder auf deiner in deutsch gehaltenen Website finden? Also sperr das ganze Zeugs. Aber wenn jemand via abuse dir eine Mail schickt, dann werde aktiv. Und nicht im vorauseilenden Gehorsam.
Und wenn jemand - normaler User - auf eine gewöhnliche kommerzielle Seite über VPN kommt, ist sie selber schuld.
Meine Erfahrung ist, dass sehr viele Angreifer sich in Europa schmale, billigste vhosts bzw. Docker oder LXD-cluster mieten oder kaufen und von dort aus Angriffe starten. Wenn die dann von der Mehrheit gesperrt werden, kündigen sie diese Range und nehmen sich die nächste Range beim nächsten europäischen Provider, die voller Gier nach allem, was nach Gold glänzt, lächzen und keine Moral oder Sicherheitsbedenken haben (Dein POV?). Denk an T-Mobile u.a. und 5G und so fort.
Radikales Vorgehen: alle IPs aus RU/BY/CN/HK sind auf der Firewall, und
zwar für immer
Das ist nicht nur rassistisch, sondern verhindert auch, dass unsere Landsleute selber nicht mehr zugreifen können, wenn sie mal Urlaub oder eine Geschäftsreise in ein solches Land machen.
Im Übrigen hat Rassissmus im Kontext der Selbstverteidigung aber sowas von keinen Rechtfertigungsanspruch. Egal welche Rasse angreift. Wird man angegriffen, muss man sich verteidigen.
, sondern verhindert auch, dass unsere
Landsleute
Vorsicht! Rassismus?
selber nicht mehr zugreifen können, wenn sie mal Urlaub oder
eine Geschäftsreise in ein solches Land machen.
Das wirft die Frage auf, wer macht Urlaub in Belaruss, in China, in Russland? Nicht in Male? ;-) Und im Urlaub surft frau dann auf dt. Websites, um was zu tun? Einzukaufen? Wird wohl bis nach dem Urlaub warten können, oder?
Und Geschäftsreisende verwenden Firmen-VPNs. Ausser du bist ranghoher Offizier der Bundeswehr und kannst damit nicht umgehen.
Wo liegt das Problem?
Zusammengefasst: deine Argumente sind nicht stimmig.
vielen lieben Dank für Euren Input. Vielen Dank auch für die Hinweise zur Absicherung von SSH, die habe ich allerdings bereits umgesetzt -- für einen Einsteiger wären das aber natürlich trotzdem wertvolle Hinweise und eventuell stolpert ja mal einer über diesen Thread.
Zudem hat mich insbesondere der Hinweis auf dshield [1] zu einigen weiteren Fundstellen geführt, insbesondere FireHOL [2], die verschiedene Blocklisten zusammen in einem Github-Repository aggregieren [3]. Die werde ich mal in eine OpenSearch-Instanz überführen und dann mit meinen aktuellen Logs und etwas Statistik herausfinden, ob und wie nützlich diese Listen sind.
Im Moment verfolge ich allerdings gedanklich einen mehrstufigen Ansatz: Positiv- und Negativlisten, ein oder mehrere der online angebotenen Listen etwa von FireHOL, und dazu Counter auf den HTTP Response Codes. Diese Daten werden dann mit einer Fuzzy Logik auf einen einzelnen Score-Wert reduziert, und beim Überschreiten konfigurierbarer Schwellwerte bekommt der Client den HTTP-Statuscode 403 Forbidden (oder hat jemand einen besseren Vorschlag?) sowie eine entsprechende Fehlermeldung. Ob ich vor Rückgabe des Fehlercode noch ein bisschen abwarte, um den Client ein wenig zu verlangsamen... das schauen wir dann mal. Zunächst geht es allerdings ohnehin nur um das Sammeln von Daten. Die werden dann ausgewertet, um meine Schwellwerte zu ermitteln.
Vielen lieben Dank für die rege Teilnahme an der Diskussion und die wertvollen Hinweise. Ich wünsche Euch allen ein schönes Wochenende! :-)
Wer schreibt denn heute noch eMails an irgendwelche Abuse-Adressen? Da würde ich nicht vom geringsten Erfolg ausgehen bzw. eher sende ich dadurch noch eine Art Empfangsbestätigung und mache mich damit möglicherweise als Ziel noch attraktiver. Dafür ist mir meine Zeit zu schade.
Wer schreibt denn heute noch eMails an irgendwelche Abuse-Adressen? Da
würde ich nicht vom geringsten Erfolg ausgehen
Und wieder einmal merkt man, dass Du keine Ahnung von der Praxis hast.
Es gibt Hoster mit gutem Abuse-Handling, es gibt Hoster mit schlechtem Abuse-Handling, und es gibt Bulletproof- und Fake-Hoster. Je nach Kategorie tut oder lässt man das.
Positiv kann ich z.B. Hetzner erwähnen. Man muss zwar ein nerviges Web-Formular benutzen, dafür kann man aber explizit festlegen, welche Daten deren Kunde bekommt, im Zweifelsfall nur die Beschreibung und (anonymisierte) Logfiles. Und bisher war nach dem Feedback, dass der Fall erledigt ist, auch immer tatsächlich Ruhe.
Wenn man für Beschwerden auch selbst eine Abuse-Adresse verwendet, ist das nicht das Thema, die werden selbst bei öffentlicher Auffindbarkeit (Whois-Datenbank) äusserst selten vollgespammt.
Wer schreibt denn heute noch eMails an irgendwelche Abuse-Adressen? Da
würde ich nicht vom geringsten Erfolg ausgehen bzw. eher sende ich
dadurch noch eine Art Empfangsbestätigung und mache mich damit
möglicherweise als Ziel noch attraktiver. Dafür ist mir meine Zeit zu
schade.
Das bringt es in der Tat nicht. Ich hatte damit überhaupt nur ein einziges Mal Erfolg, bei einem Schweizer Internetprovider. Die haben den Störer tatsächlich verwarnt und ich hatte seitdem Ruhe.
Edit: Habe eben nachgesehen, Bluewin war der Provider. Die haben mein Anliegen total ernst genommen, nach ein Nutzer mein Forum wochenlang terrorisiert hatte.
Beim heute nahezu durchweg genutzten SSL gibt's aber nicht viel zu analysieren, ohne die Verschlüsselung im Proxy aufzubrechen. Will man das nicht, ist das Log ergiebiger.
Logs kann man u.U. live mitlesen, muss sie nicht scannen.
Logs kann man u.U. live mitlesen, muss sie nicht scannen.
Richtig, wenn man sonst nichts zu tun hat. Der TO hat einige Webserver nicht bloß einen.
Und wie viel glaubst du, wirst du selbst manuell erwischen? Human visual pattern-matcher? Echt? Nur um einer Maschine - wofür sie gemacht ist - das Scannen zu ersparen?
Anstelle Log files alle minuten zu scannen, kann man auch gleich einen
proxy einsetzen, welcher alle Anfragen auseinander nimmt und validiert.
Unnötiger Aufwand. So kommen aus Webserver-Sicht alle Connections vom Proxy, sofern man nicht wieder trickst, um die echte Client-IP per Header mitzuliefern.
Elegantere Methode: Webserver in eine Pipe loggen lassen.
Anstelle Log files alle minuten zu scannen, kann man auch gleich einen
proxy einsetzen, welcher alle Anfragen auseinander nimmt und validiert.
Der TO hat mehrere Webserver. Vermutlich nicht bei ein und dem Selben Hoster. Das heißt, für jeden Webserver einen Proxy bauen. Womöglich noch am selben vhost laufen lassen. Wie sieht das Configuration-Management aus?
Was hast du gegen scannen?
Und wie viel glaubst du, wirst du selbst manuell erwischen? Human visual
pattern-matcher? Echt? Nur um einer Maschine - wofür sie gemacht ist -
das Scannen zu ersparen?
Ich glaube, Du hast nicht ganz begriffen, was er mit "Mitlesen" gemeint hat.
Unnötiger Aufwand. So kommen aus Webserver-Sicht alle Connections vom
Proxy, sofern man nicht wieder trickst, um die echte Client-IP per
Header mitzuliefern.
Ist keine Trickserei. Z.B. bei HaProxy ist das nur eine Zeile Konfiguration.
Elegantere Methode: Webserver in eine Pipe loggen lassen.
Elegantere Methode: Webserver in eine Pipe loggen lassen.
Und dann? Live mitlesen?
Genau das. Auch das nicht mit den Augen, versteht sich.
Ist eigentlich recht trivial: 4xx-Errors für eine Weile cachen, bei Überschreitung einer gewissen Anzahl pro Host und Zeiteinheit Sanktionen (z.B. lokale Firewall-Rule) auslösen, ggf. nach einem Timeout wieder freigeben.
Unnötiger Aufwand. So kommen aus Webserver-Sicht alle Connections vom
Proxy, sofern man nicht wieder trickst, um die echte Client-IP per
Header mitzuliefern.
Transparente Proxies treten nicht als Proxy in Erscheinung, sondern bleiben für HTTP unsichtbar. Enterprise Firewalls mit Decryption arbeiten so, sie brechen SSL auf und untersuchen die Inhalte.
Also doch wieder nur die halbe Miete. Das meint, Mensch muss dann nochmal drüber gehen, entscheiden, händisch sperren etc.
Also ich lass das die Scripts alle paar Minuten machen.
BTW. Verteilte Systeme zentral loggen lassen, alles recht und schön. Ein kleiner Webhostbetreiber kann das nicht. Vielleicht kann der TO ja a bisschen mehr über seine Anforderungen, seine Topographie erzählen, was die Sache besser einschätzen lässt, was vorteilhafter für ihn wäre.
Transparente Proxies treten nicht als Proxy in Erscheinung, sondern
bleiben für HTTP unsichtbar.
Ja, ich ging jetzt von HTTPS aus, und da geht's eben nicht transparent.
Womit also die Frage des tatsächlichen Aufwandes in Relation zum Nutzen steht.
Proxies aufsetzen, auf jeden Production-Host vor dem Webserver, zentral loggen lassen irgendwohin (NOC - das ein kleiner nicht hat), Analysesoftware (teuer) und dann noch zusätzlich manuelle Arbeit um zu entscheiden, was OK geht und was nicht und dann die jeweiligen Produktion-Host-Firewalls entsprechend anpassen.
Mann-O-Mann.
Ja, ich ging jetzt von HTTPS aus, und da geht's eben nicht transparent.
Doch.
Achso, Du meinst quasi "halbtransparent", die TLS-Connection endet beim Transparent Proxy, der ein passendes Zertifikat hat und dem echten Server gegenüber dann die Client-IP spooft? Das geht natürlich, und aus HTTP-Sicht bleibt es transparent.
Wenn es mehrere Wege gibt, die man verfolgen kann, muss man sich gerade
bei diesem Thema nicht zwingend für einen einzigen entscheiden.
Lese noch einmal gaaaanz oben den Ausgangspunkt vom TO. Versuch dich in seine Lage zu versetzen. Und allen Anscheines ist er auch kein Systemadmin oder so. Also Relation zu Aufwand und Nutzen ist hier wichtig.
Aber am Einfachsten ist, du fragst ihn mal selbst.
Achso, Du meinst quasi "halbtransparent", die TLS-Connection endet beim
Transparent Proxy, der ein passendes Zertifikat hat und dem echten
Server gegenüber dann die Client-IP spooft? Das geht natürlich, und aus
HTTP-Sicht bleibt es transparent.
Ja. Und wenn der kein Let's Encrypt versteht, fällt dieser günstige Weg, an Zertifikate zu kommen, vielleicht flach.
Beim heute nahezu durchweg genutzten SSL gibt's aber nicht viel zu
analysieren, ohne die Verschlüsselung im Proxy aufzubrechen. Will man
das nicht, ist das Log ergiebiger.
Logs kann man u.U. live mitlesen, muss sie nicht scannen.
Jetzt hatte ich schon gedacht, der Thread sei beendet, schon nimmt er eine augesprochen interessante Wendung.
Deswegen möchte ich zunächst kurz etwas mehr zur Infrastruktur sagen, was mir für die ursprüngliche Frage, die Freund-Feind-Erkennung, unwichtig erschien.
Bei den Webservern handelt es sich in meinem Fall um einen Docker Swarm Cluster mit einem Manager- und drei Worker Nodes, auf dem Manager Node ist Traefik als Reverse Proxy ausgerollt. Der gesamte Cluster und alle darauf laufenden Applikationen werden ab Oberkante SSH mit Ansible ausgerollt und konfiguriert. Der Reverse Proxy kümmert sich um den gesamten externen Verkehr über HTTP (welches automatisch auf HTTPS umgeleitet wird) sowie um Beschaffung und Erneuerung von TLS-Zertifikaten von Letsencrypt, das Swarm Routing Mesh wird nicht verwendet. Die internen Netzwerke des Clusters werden von Docker Swarm symmetrisch mit AES verschlüsselt, und alle zwölf Stunden findet ein automatischer Schlüsseltausch statt. Alle Nodes des Cluster loggen über den systemd-journal-remote auf den Manager. Der geplante Produktionscluster soll einen eigenen Loghost, mehrere Manager und eine Floating IP-Adresse haben.
Okay, genug Bullshit-Bingo, kommen wir wieder auf die Sache mit den Logs zurück. Tatsache ist, daß ich die Systemlogs über den Docker-Socket auf dem Manager, den journald oder rsyslog live mitlesen kann. Außerdem bietet mir Traefik ein interessantes Feature namens ForwardAuth [1], mit dem ich alle Requests mit der Middleware zuerst an einen beliebigen Dienst weiterleiten kann, und je nach Antwort dieses Dienstes reicht Traefik den Request an den dafür konfigurierten Service (Container) weiter oder gibt die Antwort des besagten Dienstes aus.
Der Kerngedanke meiner Überlegungen ist nun, die Pfade für die verschiedenen Aufgaben zu trennen. Die Betrachtung der Logs kann ja durchaus signifikante Aufwände erzeugen, das möchte ich nicht im performancekritischen Live-Pfad haben. Im Live-Pfad wird dann nur noch (über die ForwardAuth-Middleware) der genannte Dienst abgefragt, der fragt dann eine High-Performance-"Datenbank" wie beispielsweise Redis und gibt je nach Antwort einen entsprechenden HTTP Statuscode oder einen HTTP 403 zurück. Abgesehen davon kann ich die Analyse meiner Logs auch nicht -- oder nur unter stark erschwerten Bedingungen -- mit einem ForwardAuth-Dienst machen, denn das findet ja vor dem Request an den Backend-Service statt und daher habe ich an dieser Stelle noch gar keinen Statuscode, es sei denn, ich würde eine Liste aller zulässiger HTTP-Pfade aller Services... genau, nein.
Eine weitere Idee, die mir dabei gekommen ist, ist allerdings: wenn ich mal Langeweile habe, könnte ich automatisierte Reports an die Abuse-Adressen der beteiligten ISPs schreiben. Das ist allerdings eh Zukunftsmusik, kommen wir also wieder zum Anfang zurück: der Freund-Feind-Erkennung.
Hat jemand Einwände gegen meinen Ansatz, (manuell gepflegte) Scores je nach Land (GeoIP), Statistiken über die Klassen der HTTP-Responsecodes sowie die Daten von Dshield / FireHOL / ... zur Klassifizierung zu verwenden und die Ergebnisse aus diesen Daten zu korrelieren? Hat vielleicht jemand weitere kluge Ideen, was ich betrachten könnte oder wo es interessante Daten gibt?
Lieben Dank für Eure Mitwirkung.
PS: FTP gibt es auf meinen Maschinen schon seit > 20 Jahren nicht mehr. Eine schöne Anekdote aus jener Zeit ist, daß meine Webdesigner damals sehr böse geworden sind, weil ihr Macromedia Dreamweaver kein SFTP konnte. Auf meine E-Mail an Macromedia, daß SFTP eine prima Idee und höchstwahrscheinlich leicht einzubauen sei, habe ich zwar niemals eine Antwort erhalten, aber die nächste Version des Dreamweaver konnte, tadaaah!, SFTP und ich bilde mir gerne ein, daß das mit meiner E-Mail zusammenhing... :-)
Es gibt Hoster mit gutem Abuse-Handling, es gibt Hoster mit schlechtem
Abuse-Handling, und es gibt Bulletproof- und Fake-Hoster. Je nach
Kategorie tut oder lässt man das.
Kennst Du dazu eventuell irgendwelche Daten für Provider?
Bei den Webservern handelt es sich in meinem Fall um einen Docker Swarm
Cluster mit einem Manager- und drei Worker Nodes, auf dem Manager Node
ist Traefik als Reverse Proxy ausgerollt.
Wieso sagst denn das nicht gleich?!
Somit ist die Sache mit den Pipes von Hmmi wieder im Rennen, und auch der prx mit seinen (au(tomaten in den Augen spielt wieder mit. Obendrein ist wegen Reverse Proxy auch die Sache mit den durchgereichten CERTs gegessen.
Deine Archillesferse liegt also - wie bei so vielen anderen - im Design. Da kann dir der Hmmi sicher weiterhelfen.
Und ich dachte, du bist ein armer kleiner Webadmin.
Hast du auch eigene DNS?
Liebe Grüße
Karl
ps.: mit Proxy in front sieht die Sache gleich ganz anders aus. Vermeide doppelt gemoppelt. Kaskadiert ja, aber nicht doppelt.
Genau das. Auch das nicht mit den Augen, versteht sich.
;-)
Ist eigentlich recht trivial: 4xx-Errors für eine Weile cachen, bei
Überschreitung einer gewissen Anzahl pro Host und Zeiteinheit Sanktionen
(z.B. lokale Firewall-Rule) auslösen, ggf. nach einem Timeout wieder
freigeben.
Hm, das wäre ein einfacher Ansatz, allerdings würde ich Verhältnisse zwischen den HTTP-Statusklassen bevorzugen, think CG-SNAT. Bei
1
count(40x) / count(20x)
größer 1,5 wäre, wäre das schon ein Hinweis auf einen Mistfink, bei < 0,5 würde ich das sogar als entlastendes Merkmal sehen. (Nur mal so ins Blaue, bislang habe ich noch keine Statistiken gemacht.)
Also doch wieder nur die halbe Miete. Das meint, Mensch muss dann
nochmal drüber gehen, entscheiden, händisch sperren etc.
Also ich lass das die Scripts alle paar Minuten machen.
Just das ist mein Punkt: ich möchte das automatisieren. Daß ich dazu erst einige Untersuchungen und Statistiken machen muß -- zum Beispiel, um die Schwellwerte zu ermitteln -- ist nicht der Punkt.
BTW. Verteilte Systeme zentral loggen lassen, alles recht und schön. Ein
kleiner Webhostbetreiber kann das nicht.
hüstel Das ginge schon, wenn man denn wollte und daran interessiert wäre. Aber Logdaten lesen oder gar analysieren, das machen viele nicht, denn das kostet Zeit und Geld und Rechenleistung und... naja, am Ende eben auch eine gewisse Expertise. Und bei manchen Betreibern ist es ja auch so, daß sie... wie sage ich das jetzt... zwar mit ein bisschen Einarbeitung und Basteleien vielleicht sogar Erkenntnisse aus ihren Logs gewinnen könnten, aber was tun sie dann damit? Aus einer Mailingliste kenne ich einige Webserverbetreiber, meistens Webdesign-Einzelkämpfer oder kleine Agenturen, die haben weder die Ressourcen für solche Analysen noch die Expertise, um mit den Erkenntnissen solcher Analysen etwas sinnvolles anzufangen.
Versteh' mich bitte nicht flashc: da gibt es viele sehr liebe und ihn ihren Fächern auch topfitte Experten. Aber manche von ihnen können nicht einmal dann einen Paketfilter oder einen Webserver konfigurieren, wenn ihre Hosting-Pakete das zulassen würden. Da könnte man sich als erfahrener Sysop natürlich auf den Standpunkt stellen: "wenn sie das nicht können, sollten sie keine betreiben". Aber Tatsache ist, sie tun es, und daran werden wir nichts ändern. Aus meiner ganz persönlichen Sicht wäre es deswegen klüger, ihnen zu helfen, damit dieses Internet für uns alle ein sichererer und angenehmerer Ort werden kann.
Genau das ist die Überlegung, die ich gerade verfolge: am Ende will ich meine Lösung gern veröffentlichen, und sie der Allgemeinheit zur Verfügung stellen. Schon Laotse wußte allerdings, daß jeder Weg mit einem ersten Schritt beginnt. Deswegen frage ich hier: wie erkennt Ihr die Schmutzfüße, wie geht Ihr damit um, welche Maßnahmen ergreift ihr?
Vielleicht kann der TO ja a
bisschen mehr über seine Anforderungen, seine Topographie erzählen, was
die Sache besser einschätzen lässt, was vorteilhafter für ihn wäre.
Das habe ich eben in einem anderen Beitrag getan und stehe für Fragen und Ideen natürlich gerne zur Verfügung. Hmmm, das wird ja doch größer (und dank Euch auch viel interessanter) als gedacht. Danke! :-)
Es gibt böse Geister, die haben viel Zeit und senden jeden Tag nur 3 Versuche und es gibt fleißige Suchmaschinen... Man sollte Erfahrung sammeln und die Quellen des Übels erkennen und sperren.
Verd*mmte Axt, danke für die Erinnerung, an die RIPE-Datenbanken hatte
ich noch gar nicht gedacht! :-)
Im Ripe ist aber nur der offizielle Besitzer der IP, de facto werden die IPs (besonders die IPv4) hin und her geschoben und vermietet. Eine gute Anlaufstelle ist https://ip-api.com/, die haben mehr oder weniger den tatsächlichen Standort des Servers, die haben auch eine schöne API, die z.B. CSV- oder JSON-Daten ausspuckt.
Kennst Du dazu eventuell irgendwelche Daten für Provider?
Du meinst Access-Provider? Leider nichts Aktuelles, weil der meiste Ärger inzwischen von "Cloud"-Hosts kommt.
Die Telekom hat jedenfalls stark nachgelassen, bei den letzten Vorfällen kam nie eine Antwort. Teilweise hörten die Angriffe zwar kurz danach auf, aber ob sie eingegriffen haben oder freiwillig aufgehört wurde, blieb offen.
Hm, das wäre ein einfacher Ansatz, allerdings würde ich Verhältnisse
zwischen den HTTP-Statusklassen bevorzugen
Ja, auch das wäre eine Möglichkeit. So hast Du weniger Kollateralschäden, aber wenn ein Bot erst den Content nach eMail-Adressen durchforstet, bevor er mit WordPress-Exploitversuchen o.dgl. loslegt, hat er natürlich erstmal ein paar Freischüsse.
Für die eigentlichen Anwendungen (insbesondere die Logins dazu) bieten sich auch noch RBLs an. Aber auch wirklich nur dort, weil Du sonst viel DNS-Traffic erzeugst und Deine Webserver ausbremst.
An solchen Stellen gibt's dann auch nicht nur schwarz und weiss, sondern auch noch die Möglichkeit, auffällige Hosts zwar zuzulassen, aber nur mit einem Captcha.
Wenn man in eine Pipe logt, ist man spaeter erst am reagieren.
Wenn man direkt analysiert kann man direkt reagieren.
Loggen ist sicher angesagt um spaeter analysieren zu koennen. Aber einen Systemschutz gibt es nur mit direktem analysieren.
Bei SSL kommt die URL und die GET Parameter im Klartext, allfaellige POST parameter sind verschluesselt.
Die Frage ist nun, will man lausige Serversoftware schuetzen, oder nur den Server gegen ueberlast und Hackversuche.
Hat man die Serversoftware unter Kontrolle, oder laeuft ein loechriges Packet wie Wordpress
Wenn man in eine Pipe logt, ist man spaeter erst am reagieren.
Du weisst, was eine Pipe ist? Da landet die Zeile nicht im Logfile, sondern direkt bei der Software am anderen Ende der Pipe.
Dass es nicht darum geht, den jeweiligen Request abzufangen, sondern nach mehreren (!) verdächtigen Requests zu reagieren, hättest Du dem Thread entnehmen können.
Bei SSL kommt die URL und die GET Parameter im Klartext, allfaellige
POST parameter sind verschluesselt.
Blödsinn. Bei HTTPS ist die gesamte HTTP-Kommunikation TLS-verschlüsselt. Was zusätzlich (!) auch im Klartext übertragen wird, nämlich beim TLS-Handshake, ist der nackte Hostname bei Verwendung von SNI.
Bei SSL kommt die URL und die GET Parameter im Klartext, allfaellige
POST parameter sind verschluesselt.
Blödsinn. Bei HTTPS ist die gesamte HTTP-Kommunikation
TLS-verschlüsselt. Was zusätzlich (!) auch im Klartext übertragen wird,
nämlich beim TLS-Handshake, ist der nackte Hostname bei Verwendung von
SNI.
Korrekt.
Siehe
https://datatracker.ietf.org/doc/html/rfc2818 bzw.
https://www.datenschutzzentrum.de/tb/tb37/kap10.html
[Zitat]
Vorsicht bei der Einführung von TLS 1.3 ist allerdings angesagt, denn mit TLS 1.3e bzw. eTLS oder (nach Intervention der IETF ob des Namens) nun ETS wurde an der IETF vorbei unter einer sehr ähnlichen Bezeichnung eine künstlich kompromittierte Variante von TLS 1.3 publiziert, die einige der neuen Sicherheitsfeatures wieder untergräbt und damit deutlich hinter den Stand der Technik zurückfällt:
[/Zitat]
Wer verwendet das durch die EU reingedrückte eTLS?
Anbei eine genaue Beschreibung von damals vor Einfürung durch die EU.
Bis auf Graylog, Elastic- und OpenSearch ist mir bisher wenig
Brauchbares begegnet. Hast Du bessere Ideen?
Habe grad gefragt: Elastic + Kibana als Kernprodukte. Dann gibt es eine Reihe Log-Anlieferer wie Logbeat für Windows, Linux, Syslog, Firewalls, ... Erst für sowas wie KI gestützte Auswertung wird Geld fällig.
Pandur S. schrieb:
Bei SSL kommt die URL und die GET Parameter im Klartext, allfaellige
POST parameter sind verschluesselt.
Blödsinn. Bei HTTPS ist die gesamte HTTP-Kommunikation
TLS-verschlüsselt. Was zusätzlich (!) auch im Klartext übertragen wird,
nämlich beim TLS-Handshake, ist der nackte Hostname bei Verwendung von
SNI.
Nicht alle koennen alles verstehen... Wie soll eine URL bei einem Router aufgeloest werden wenn sie verschluesselt ist ?
Was soll denn Vorratsgespeichert werden wenn's denn verschluesselt ist ?
Nicht alle koennen alles verstehen... Wie soll eine URL bei einem Router
aufgeloest werden wenn sie verschluesselt ist ?
Wenn 50 verschiedene Seiten unter 50 verschiedenen Servernamen auf 1 Server liegen, haben die Seiten alle die gleiche IP-Adresse. Dieser Server erhält von Client per SNI unverschlüsselt ausschliesslich den Servernamen aus der URL, damit er das richtige Zertifikat zuordnen kann. Erst dann kann anhand dieses Zertifikats die TLS-Verbindung aufgebaut werden und die Seite wird darüber ansprechbar.
Und noch viel mehr!
Wäre bereits IPv6 vollends implementiert, würde sogar jedes Haar - inklusive jede einzelne Amöbe - auf deinem Körper eindeutig addressierbar sein. Und da du durch eine eindeutige IPv6-Adresse dann vollständig gläsern bist, auch wenn du bloß atmest, all das weiß das Netz dann bzw. all jene, die dich kontrollieren wollen. Gute Nacht!
Und noch viel mehr!
Wäre bereits IPv6 vollends implementiert, würde sogar jedes Haar -
inklusive jede einzelne Amöbe - auf deinem Körper eindeutig
addressierbar sein.
Üblicherweise wird bei Privatkunden der Prefix (analog zu IPv4-Adressen) dynamisch zugeteilt, und die Host-Adresse wechselt dank Privacy Extensions ebenfalls.
Ohne hättest Du natürlich recht, wenn jeder seine MAC-Adresse in die Welt posaunen würde.
Routing geschieht am Layer3. Der weiß nichts, was in der Payload steckt. Die Auflösung der IP-Adressen ist etwas ganz anderes, als die Auflösung einer URL.
Ich kenne welche, die glauben tatsächlich, dass sie auf Webseiten surfen, sozusagen phsikalisch dort Vorort sind. Wenn du eine Website dir anschaust, dann ist sie auf deinem Computer.
Üblicherweise wird bei Privatkunden der Prefix (analog zu IPv4-Adressen)
dynamisch zugeteilt, und die Host-Adresse wechselt dank Privacy
Extensions ebenfalls.
Alles klar. Nur das ist nicht in Stein gemeisselt.
Habe grad gefragt: Elastic + Kibana als Kernprodukte. Dann gibt es eine
Reihe Log-Anlieferer wie Logbeat für Windows, Linux, Syslog, Firewalls,
... Erst für sowas wie KI gestützte Auswertung wird Geld fällig.
Also der klassische ELK-Stack, der ist IMHO immer eine gute Wahl. Danke, daß Du das nochmal nachgefragt hast! :-)
Ich kenne welche, die glauben tatsächlich, dass sie auf Webseiten
surfen, sozusagen phsikalisch dort Vorort sind. Wenn du eine Website dir
anschaust, dann ist sie auf deinem Computer.
Und was ist daran falsch, wenn wir vereinfachend von statischem HTML ausgehen? Da befindet sich die gerade dargestellte Seite tatsächlich als Kopie auf deinem Computer.
Von solcher Sophisterei leben DRM-Anwälte und andere aus der Rechthaber-Branche.
hier im Forum gibt es Menschen, die -- wie auch ich -- einen oder
mehrere öffentliche Webserver betreiben und deren Logdate(i)en dabei von
allerlei "besonderen Menschen" überflutet werden.
Meine Fragen ist: tut Ihr etwas dagegen? Wenn ja, was?
Lieben Dank,
Sheeva
Ich blocke einfach alle Zugriffe von nicht deutschen IPs und TOR Exitnodes aus.
Auch ohne erneute Lektüre von RFCs ist es für meine Fragen und diesen Thread unerheblich. Wenn Du das detaillierter ausdiskutieren möchtest, dann eröffne bitte einen eigenen Thread dazu. Vielen Dank.
Auch ohne erneute Lektüre von RFCs ist es für meine Fragen und diesen
Thread unerheblich.
Das ist ein Irrtum. Ein schwerer Fehler. Denn versteht man, wie Protokolle funktionieren, kann man Gegenmaßnahmen ergreifen, um Attacken abwehren, abschwächen, umlenken und und und zu können, was ja dein Begehr ist.
Und offensichtlich hast - und nicht nur du - genau dort das Problem. »Wasch mir den Pelz, aber mach mich nicht naß« ;-)
Sehr gerne werde ich mit Expertise und Wortspenden auf dein Ersuchen hin von nun an Abstand nehmen.
Gerade mal wieder spaßenshalber meine Logdatei durchgelesen...
Reiner Testserver ohne Domain an privater IP, also könnte man praktisch jeden Zugriff von extern, der nicht durch mich selbst oder Bekannte von mir erfolgt, als potentiellen Angriff werten.
Ansonsten halt die üblichen Scans nach "kaputter" Software in ihren Standard-Pfaden, die üblichen Versuche von directory traversals, code injection... jede Menge traurige 400 und 404 Fehler. Lustigerweise kein einziger Zugriff auf Dinge, die wirklich auf dem Server liegen. Gut, erstes kleines Foul, die Pfade sind nirgendwo gelistet und /index enthält nur eine komplett leere und funktionslose Seite.
Aber ich kriege Lust, mir mal anzuschauen, was da teilweise bei den versuchten code injections base64-codiert verschickt wurde. Oder vielleicht ist genau das die Falle, wer weiß.
Wenn ich da jetzt versuche, zu jeder der geloggten IPs den ISP oder Hoster zu ermitteln und abuse-eMails zu verschicken, dann wäre ich wahrscheinlich die ganze Nacht beschäftigt. Nee, da habe ich besseres zu tun.
Wenn solche Angriffe nicht üblicherweise deutlich mehr Bandbreite hätten als ich, würde ich denen am liebsten auf manche Anfragen hin erstmal 100 Megabyte zufälligen Datenmüll zurückschicken, der sich extra schlecht komprimieren lässt...
würde ich denen am liebsten auf manche Anfragen hin erstmal 100
Megabyte zufälligen Datenmüll zurückschicken, der sich extra schlecht
komprimieren lässt...
Leg doch mal ein Verzeichnis mit einer alten Linux-CD an und verschlüssle diese. Du wirst interessante Logs finden. Hat mein Dozent schon vor Jahren gemacht.