Czy adres IP żądania HTTP może być sfałszowany?

27

Na stronie, którą tworzę, planuję rejestrować adresy IP zgłoszeń, na wypadek, gdyby było to konieczne. Nie mam nic przeciwko serwerom proxy, ale jawne podszywanie się pod twój adres IP może zniszczyć cel.

Aby wykonać pełną akcję GET (niezależnie od tego, czy otrzymałeś, czy przeszedłeś, czy nie) wymagany jest prawidłowy adres IP? A może witryna jest spamowana postami z przypadkowych fałszywych adresów IP?

(Czy POST jest inny?)

TND
źródło
2
Innym podejściem jest podejście zastosowane przez DuckDuckGo: nie śledzą adresów IP na wypadek, gdyby zostali o nie poproszeni. Zobacz ich politykę prywatności na duckduckgo.com/privacy.html#s3 . Mówisz „na wszelki wypadek” - czy masz dobre pomysły, dlaczego może to być konieczne?
Randy Orrison,

Odpowiedzi:

31

Nie. No tak. Albo może. To zależy od tego, skąd otrzymujesz dane z „adresu IP” i czy im ufasz.

Jeśli sam pobierasz adres z pakietów IP, możesz mieć pewność, że ktokolwiek wysłał pakiety, ma dostęp do pakietów wysłanych na ten adres IP. Może to oznaczać, że jest to legalny użytkownik tego adresu IP (dla odpowiednio ograniczonych wartości słowa „legalny”, w tym wieku botnetów, otwartych serwerów proxy i Tora) lub że ktokolwiek wysłał pakiety, ma dostęp do systemu pośredniego i widzą pakiety, które wysyłasz, gdy przechodzą.

Jednak przy szerokim rozpowszechnieniu odwrotnych serwerów proxy pakiet IP często może fałszywie przedstawiać źródło połączenia, dlatego wprowadzono różne nagłówki HTTP, aby umożliwić dostarczenie „rzeczywistego” adresu IP pochodzenia przez serwer proxy. Problem polega na tym, że musisz zaufać każdemu, kto wysyła nagłówek, aby podać dokładne informacje. Ponadto domyślne (lub błędne kopiowanie makaronu) konfiguracje mogą z łatwością pozostawić Cię otwartym na fałszowanie tych nagłówków. W związku z tym musisz ustalić, czy jakiekolwiek zwrotne serwery proxy są zgodne z prawem w twoich żądaniach i upewnić się, że (i twój serwer) są odpowiednio skonfigurowane i zabezpieczone.

womble
źródło
23

Nie.

Połączenia TCP (których używa HTTP) wymagają komunikacji dwukierunkowej. Chociaż możesz łatwo sfałszować źródłowy adres IP SYNpakietu, SYN-ACKodpowiedź z serwera zostanie przekierowana na adres IP, który sfałszowałeś w pakiecie początkowym - nie będziesz w stanie zakończyć połączenia, chyba że zobaczysz odpowiedź z serwera.

Jednak anonimowe narzędzia proxy, takie jak Tor, mogą zapewnić sposób łatwej anonimizacji źródła połączenia - pamiętaj, że może to łatwo pokonać kontrolę spamu poprzez łatwe blokowanie adresów IP.

Shane Madden
źródło
12

Krótka odpowiedź ... nie dzisiaj nie możesz.

W przeszłości komputery były bardzo przewidywalne w numerach sekwencyjnych dla ruchu TCP. Oznacza to, że atakujący po prostu wyśle ​​legalny ruch, dopóki nie zorientuje się, jakie są numery sekwencyjne, i będzie w stanie zgadnąć, co będzie dalej. Następnie wysłałby ruch TCP naśladujący sfałszowany adres IP, a host na drugim końcu uwierzyłby. Abyś mógł sfałszować potrójny uścisk dłoni .

Dzisiaj i powiedziałbym, że ponad 10 lat .. komputery są dużo lepsze w losowaniu, więc jest to dość trudne, jeśli nie niemożliwe. Moim zdaniem atakujący byłby to strata czasu.

Mikrofon
źródło
8

HTTP działa na TCP. Aby TCP działał, potrzebujesz pełnego 3-kierunkowego uzgadniania SYN / ACK, zanim dojdziesz wystarczająco daleko, aby wysłać żądanie GET lub POST, więc proste sfałszowane źródło nie zrobi wiele. Inne bardziej zaawansowane formy fałszowania (MitM) byłyby nadal skuteczne.

techieb0y
źródło