Layer 7 - Angriff

Allgemeine Diskussionen rund um KeyHelp.
omexlu
Posts: 269
Joined: Wed 28. Aug 2024, 10:42

Layer 7 - Angriff

Post by omexlu »

Hi,

Wie es scheint leide ich aktuell stark unter einem Layer 7 Angriff, es kommen tausende Requests rein von vielen verschiedenen IPs was den Webserver überlastet und somit die Seiten offline sind, alles andere läuft.

Ich habe auch schon die Domain raus (eins meiner Projekte) nun da ich das noch nie hatte bin ich völlig überfordert was kann ich tun oder was sollte ich machen wenn es wieder läuft :/

Würde mod_evarsive was helfen, bin auch ratlos wie ich das sauber ins System integrieren kann ohne es zu brechen.

Danke im voraus.
User avatar
Florian
Keyweb AG
Posts: 1922
Joined: Wed 20. Jan 2016, 02:28

Re: Layer 7 - Angriff

Post by Florian »

Hallo,

mal in das Access Log schauen was das für Requests sind. Wenn es von Bots kommt dann über Fail2Ban Badbots das Ganze blocken.

Wenn es da kein Muster gibt dann beispielsweise via ipset nur Zugriffe aus dem DACH Raum temporär zulassen, wenn das für deine Website reicht.

Ich habe mal mit KI mir ein Script erstellen lassen. Keine Garantie (!!!!), aber ich habe es schon auf Server erfolgreich getestet

1.

Code: Select all

apt install ipset jq
2. Die HTTP Firewall Regel im Keyhelp, bearbeiten und den Zugriff von der eigene IP zulassen. Das ist ein Fallback

3. Script ausführen. Das Script lässt in dieser Ausführung Zugriffe aus der EU, der Schweiz und von den Google Bots zu auf Port 80 und 443 zu. Die Länderliste kann natürlich angepasst werden.

Code: Select all

#!/bin/bash
set -euo pipefail

# Konfiguration
EU_SET="eu_ipv4"
GOOGLE_SET="google_ipv4"
TMPDIR="/tmp/ipset-eu"
MAXELEM=4000000
IPDENY_URL="https://www.ipdeny.com/ipblocks/data/countries"  # per-country files
# Liste EU-Ländercodes (ISO2). Ergänze falls nötig.
EU_COUNTRIES=(at be bg hr cy cz ch dk ee fi fr de gr hu ie it lv lt lu mt nl pl pt ro sk si es se)

# Google crawler JSON (ersetze durch offiziellen Google-Link falls nötig)
GOOGLE_JSON_URL="https://developers.google.com/static/search/apis/ipranges/googlebot.json"

mkdir -p "$TMPDIR"

# create ipsets (ignore if exist)
ipset create $EU_SET nethash maxelem $MAXELEM 2>/dev/null || true
ipset create $GOOGLE_SET nethash maxelem 65536 2>/dev/null || true

# flush temporary files
> "$TMPDIR/eu.list"
> "$TMPDIR/google.list"

# Download per-country CIDR lists from ipdeny (one file per country)
for cc in "${EU_COUNTRIES[@]}"; do
  url="$IPDENY_URL/${cc}.zone"
  echo "Downloading $url"
  if curl -fsS "$url" >> "$TMPDIR/eu.list"; then
    echo "OK $cc"
  else
    echo "WARN: $cc konnte nicht geladen werden"
  fi
done

# Populate ipset (replace existing entries atomically)
ipset -q flush $EU_SET
while read -r cidr; do
  [[ -z "$cidr" ]] && continue
  ipset -q add $EU_SET "$cidr"
done < "$TMPDIR/eu.list"

# Fetch Google crawler IP ranges (JSON contains prefixes; Struktur kann sich ändern)
if curl -fsS "$GOOGLE_JSON_URL" -o "$TMPDIR/google.json"; then
  # Beispiel: JSON kann "prefixes" mit "ipv4Prefix" Feldern enthalten
  jq -r '.prefixes[] | select(.ipv4Prefix) | .ipv4Prefix' "$TMPDIR/google.json" >> "$TMPDIR/google.list" || true
fi

ipset -q flush $GOOGLE_SET
while read -r cidr; do
  [[ -z "$cidr" ]] && continue
  ipset -q add $GOOGLE_SET "$cidr"
done < "$TMPDIR/google.list"

# iptables Regeln (vorhandene Regeln nicht duplizieren)
# Erlaube EU und Google zu 80/443
iptables -C INPUT -p tcp -m multiport --dports 80,443 -m set --match-set $EU_SET src -j ACCEPT 2>/dev/null || \
  iptables -I INPUT -p tcp -m multiport --dports 80,443 -m set --match-set $EU_SET src -j ACCEPT

iptables -C INPUT -p tcp -m multiport --dports 80,443 -m set --match-set $GOOGLE_SET src -j ACCEPT 2>/dev/null || \
  iptables -I INPUT -p tcp -m multiport --dports 80,443 -m set --match-set $GOOGLE_SET src -j ACCEPT

# Danach alle anderen Verbindungen zu 80/443 droppen (nur wenn nicht schon vorhanden)
iptables -C INPUT -p tcp -m multiport --dports 80,443 -j DROP 2>/dev/null || \
  iptables -A INPUT -p tcp -m multiport --dports 80,443 -j DROP

echo "Fertig. EU ipset: $EU_SET, Google ipset: $GOOGLE_SET"
Das ist wie gesagt nur ein Vorschlag! Es gibt natürlich noch andere Wege

Die Regeln sind wieder weg, wenn man den Server rebootet. Die Keyhelp Firewall Regel für HTTP muss dann natürlich wieder global geöffnet werden.
Mit freundlichen Grüßen / Best regards
Florian Cheno

**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
omexlu
Posts: 269
Joined: Wed 28. Aug 2024, 10:42

Re: Layer 7 - Angriff

Post by omexlu »

Hallo,

Ich habe die access.log beobachtet und es waren IPs aus allen Möglichen Ecken und sehr viele Aufrufe der Webseite (aktuell ist Ruhig wieder).

Leider verfolgt es keinem Muster. DACH Raum würde nicht reichen aber ganze EU + paar Ausnahmen wäre doch möglich, nehme ich an?
User avatar
Florian
Keyweb AG
Posts: 1922
Joined: Wed 20. Jan 2016, 02:28

Re: Layer 7 - Angriff

Post by Florian »

omexlu wrote: Wed 6. May 2026, 15:25 Hallo,

Ich habe die access.log beobachtet und es waren IPs aus allen Möglichen Ecken und sehr viele Aufrufe der Webseite (aktuell ist Ruhig wieder).

Leider verfolgt es keinem Muster. DACH Raum würde nicht reichen aber ganze EU + paar Ausnahmen wäre doch möglich, nehme ich an?
Ja das ist klar, du musst in der Ziele gucken wo der Client vermerkt ist. Dort steht dann z.B AmazonBot, ClaudBot usw.
Mit freundlichen Grüßen / Best regards
Florian Cheno

**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
omexlu
Posts: 269
Joined: Wed 28. Aug 2024, 10:42

Re: Layer 7 - Angriff

Post by omexlu »

Ne, waren keine Bots, hab den Clienten gekuckt :)

Wird auf kniffig mit dem Geo-Blocking um all die "guten" Dinge noch weiter Zugriff zu gewähren :/
User avatar
Ralph
Posts: 1491
Joined: Mon 30. Mar 2020, 16:14

Re: Layer 7 - Angriff

Post by Ralph »

Ja, heute isses mal wieder heftig ...
Schau auch mal wohin die requests gehen ... welche Domain bzw. User, vieleicht gibt es dort Sicherheitslücken in Anwendungen ...
und auch mal die UA Kennung checken und danach suchen z.b.

Code: Select all

tail -n 1000 /home/users/*/logs/*/access.log | grep "python-requests"
tail -n 1000 /home/users/*/logs/*/access.log | grep "python-http"
tail -n 1000 /home/users/*/logs/*/access.log | grep "axios"
tail -n 1000 /home/users/*/logs/*/access.log | grep " aiohttp"
tail -n 1000 /home/users/*/logs/*/access.log | grep "go-resty"

Code: Select all

netstat -Wnat | grep -E ':80|:443'
Die IPs kannst du hier auf reports checken:
https://www.abuseipdb.com/
omexlu
Posts: 269
Joined: Wed 28. Aug 2024, 10:42

Re: Layer 7 - Angriff

Post by omexlu »

Hast du auch heute Layer-7 Angriffe? In der Nacht hatte ich einen und jetzt vorhin, ging immer über paar Stunden. Aktuell ist es wieder ruhig.

Ausser (nur 4 Zeilen):

Code: Select all

tail -n 1000 /home/users/*/logs/*/access.log | grep "python-http"
ergibt die suche nichts.

Ich weiss nicht wie ich das Problem ordentlich ohne Cloudflare lösen kann ohne die häfte der nützlichen Bots und legitimen Usern auszusperren :/
hase
Posts: 252
Joined: Fri 29. Sep 2017, 16:18

Re: Layer 7 - Angriff

Post by hase »

Hi,
danke für das kleine GeoIP Bash-Script.

Wie sieht es aber z.B. mit Lets Encrypt aus? Es sollte doch auf jedenfall "US" mit zugefügt werden wegen der Zertifikate, ansonsten kann es Probleme geben. Oder mach ich einen Denkfehler?
viele Grüße
Andi
omexlu
Posts: 269
Joined: Wed 28. Aug 2024, 10:42

Re: Layer 7 - Angriff

Post by omexlu »

Das Script wäre nur Temporär eine Dauerlösung ist das so nicht und wäre viel zu Wartungsintensiv da IPs von Diensten ständig wechseln.
Man sperrt sich so die Hälfe aus und wenn man USA erlaubt hat man die Angriffe zu 50% wieder.

Die Lösung ist für mich nicht optimal.

Schon jemand was con CrowdSec gehört oder ähnlichem?
Blubby
Posts: 110
Joined: Tue 5. Mar 2024, 13:10

Re: Layer 7 - Angriff

Post by Blubby »

omexlu wrote: Wed 6. May 2026, 17:32
Schon jemand was con CrowdSec gehört oder ähnlichem?
Ja, habe ich laufen. Tut seine Sache recht gut. Aber wenn der Angriff direkt auf dich gemünzt ist hilft es dir auch nicht weiter. Dann agiert es wie Fail2ban.
User avatar
Ralph
Posts: 1491
Joined: Mon 30. Mar 2020, 16:14

Re: Layer 7 - Angriff

Post by Ralph »

kommt darauf an wie tief du suchst und auf das date/time im log und wonach gesucht wird ... also bei der UA Kennung python-requests

Code: Select all

grep "python-requests" /home/users/*/logs/*/access.log
wenn eine verdächtige IP gefunden wird, nochmal mit der IP suchen um Details zu erhalten:

Code: Select all

grep "136.112.192.228" /home/users/*/logs/*/access.log
Die Details z.b. requests auf .env kannst du dann über einen fail2ban filter automatisch blocken o. eben von Hand die IP Adressen blocken.

Das zeigt nur kurzfristig die aktuellen requests ... ist fürs grobe eingrenzen gedacht

Code: Select all

netstat -Wnat | grep -E ':80|:443'
omexlu
Posts: 269
Joined: Wed 28. Aug 2024, 10:42

Re: Layer 7 - Angriff

Post by omexlu »

Hab für den Zeitraum gesucht wo das ganze stattfand. IPs per Hand blocken wirst nix bei der Anzahl.
Und auf Fail2Ban Filter werden hier nicht viel bringen wenn es nach legit traffic aussieht aber 1000 IPs.

Soeine Kacke, aktuell ist es ruhig aber kein Plan wie ohne Cloudflare aber eignetlich möchte ich auf Cloudflare verzichten macht nur Stress.
User avatar
Florian
Keyweb AG
Posts: 1922
Joined: Wed 20. Jan 2016, 02:28

Re: Layer 7 - Angriff

Post by Florian »

hase wrote: Wed 6. May 2026, 17:26 Hi,
danke für das kleine GeoIP Bash-Script.

Wie sieht es aber z.B. mit Lets Encrypt aus? Es sollte doch auf jedenfall "US" mit zugefügt werden wegen der Zertifikate, ansonsten kann es Probleme geben. Oder mach ich einen Denkfehler?
Natürlich ist das nur für den temporären Einsatz gedacht. Meistens legen sich solche Attacken nach einiger Zeit. So bleibt der Server aber wenigstens erreichbar.
Mit freundlichen Grüßen / Best regards
Florian Cheno

**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
omexlu
Posts: 269
Joined: Wed 28. Aug 2024, 10:42

Re: Layer 7 - Angriff

Post by omexlu »

Jemand erfahrungen mit BitNinja gemacht? :)
User avatar
Ralph
Posts: 1491
Joined: Mon 30. Mar 2020, 16:14

Re: Layer 7 - Angriff

Post by Ralph »

omexlu wrote: Wed 6. May 2026, 17:46 Und auf Fail2Ban Filter werden hier nicht viel bringen wenn es nach legit traffic aussieht aber 1000 IPs.
Worauf greifen die IP Adressen denn zu ... welches "Ziel" bzw. was zeigt das log denn überhaupt an?
Picke einfach mal 3-4 dieser IP Adressen raus und suche danach in den User logs

Code: Select all

grep "xx.xx.xxx.xx" /home/users/*/logs/*/access.log
Post Reply