it-swarm-eu.dev

Mohu důvěřovat zdrojové IP požadavku HTTP?

Pokud jsem pochopil, pokud se pokusíte vydat požadavek HTTP se spoofed IP adresou, pak handshake TCP handshake selže, takže není možné dokončit HTTP požadavek, protože SYN/ACK ze serveru nedosahuje zlého klienta ...

... ve většině případů. Nyní však většinou nezohledňujeme tyto čtyři případy:
- Muž uprostřed (MITM) útočí
- Případ, kdy zlý klient ovládá síť webového serveru
- Případ, kdy zlý klient předstírá jinou IP ve své vlastní místní síti
- útoky BGP

Pak mohu skutečně důvěřovat IP adrese požadavku HTTP?

Pozadí: Přemýšlím o vytvoření mapy IP adres a využití zdrojů a blokování IP adres, které spotřebovávají příliš mnoho zdrojů. Ale zajímalo by mě, jestli existuje nějaký způsob, jak napodobit nekonečný počet IP adres (vydáním úspěšných požadavků HTTP s falešnými IP), takže webový server resource-use-by-IP- nárazníky roste obrovsky a způsobuje chyby v paměti.

(Hmm, možná by zlý internetový router mohl předstírat velmi mnoho požadavků. Ale nejsou to zlí, jsou. (To by byl útok MITM? Proto jsem řekl většinou ignorování, výše))

41
KajMagnus

Ano (s vašimi předpoklady, že zanedbáte, že je klient schopen zachytit návrat handshake na spoofed IP), pokud děláte věci správně. HTTP požadavky jsou prováděny přes TCP; Dokud není handshake dokončen, webový server nezačne zpracovávat požadavek HTTP. Udělil náhodný uživatel by mohl pokusit se spoof na konci handshake; ale protože musí hádat server generovaný ACK, měli by mít vždy jen 1 z 2 ^ 32 (~ 4 miliardy) šanci na úspěšné provedení pokaždé.

Jak poznamenal Ladadadada, ujistěte se, že ve vaší webové aplikaci nezískáváte špatnou hodnotu vzdálené IP adresy. Chcete IP adresu z záhlaví datagramu IP (konkrétně zdrojová IP adresa). Nechcete, aby byly hodnoty jako X-Forwarded-For/X-Real-IP , které je možné bezvadně falšovat, jak jsou nastaveny v hlavičce HTTP. Rozhodně vyzkoušejte pokusem o spoof některé IP adresy; s řekněte plugin prohlížeče nebo ručně s telnet yourserver.com 80.

Účelem těchto polí je, aby webové servery proxy (které mohou říci, že obsah mezipaměti slouží rychleji), mohou webovým serverům komunikovat spíše o skutečné adrese IP uživatele než o adrese proxy serveru proxy (což může být pro stovky uživatelů). Protože však toto pole může nastavit kdokoli, nemělo by být důvěryhodné.

23
dr jimbob

Mohu důvěřovat zdrojové IP požadavku HTTP?

Můžete si být jisti, že zdrojová adresa IP požadavku HTTP je zdrojová adresa připojení TCP, které vygenerovalo požadavek).

Kdy důvěřovat IP adrese je složitá kontextově specifická otázka, ale ve skutečnosti to není to, na co se ptáte.

máte obavy z dopadu používání/implementace limitů rychlosti za IP na aplikační vrstvě a další zranitelnosti vůči útokům odmítnutí služby?

Zajímalo by mě, jestli to dělá, ve vrstvě aplikace, zavádí další zranitelnosti, ano.

Záleží zcela na vaší implementaci, politice i technologii.

  • Jaký druh zdroje chcete hodnotit omezení spotřeby?
  • Co chcete dosáhnout vytvořením tohoto limitu?
  • V jakém časovém období chcete provádět účetnictví?
  • Kde chcete použít limit?
  • Je IP adresa nejlepším klíčem pro rychlostní limit?
  • Jaké jsou pravděpodobné důvody nadměrné spotřeby?
  • Jaký by měl být uživatelský zážitek v případě nadměrné spotřeby?

V závislosti na odpovědích na tyto otázky může být sazebník lépe umístěn jinde v servisní infrastruktuře, např. vyhrazený firewall, místní firewall. Nebo je-li přístup ověřen, může být ověřeným pověřením lepší klíč pro účtování sazeb a vaše hranice by byly definovány.

2
MattH

Jaký by měl smysl vydávat spoofed SYN na HTTP server, pokud nemáte v úmyslu pokračovat v handshake TCP?) Váš webový server neuvidí HTTP požadavek, pokud (možná předstíraný) klient získá SYN/ACK a pokračuje ve vytváření relace TCP) a odešle požadavek HTTP.

Uložte databázi na disk a pro rychlá vyhledávání ji vytvořte chytře (jako strom).

Pokud je klient spoofed nebo ne, opravdu to pro vás něco změní? Pokud se nebudou chovat, chová se bez ohledu na to, zda jsou podvrženi nebo ne.

Z pohledu webového serveru bych považoval vzdálenou IP za skutečnou vzdálenou IP.

1
MattBianco