Mam nadzieję, że moje pytanie pasuje do zakresu tej witryny.
Tworzę CMS . Obecnie moi zalogowani użytkownicy są zablokowani na swoim adresie IP dla sesji. Niestety niewielka część mojej bazy użytkowników ciągle przeskakuje między dwoma lub więcej adresami IP. Większość z nich prawdopodobnie używa funkcji równoważenia obciążenia. Z technicznego punktu widzenia nie jest konieczne blokowanie sesji użytkowników na jednym adresie IP. Nie spodziewałem się, że klienci będą przełączać się między wieloma adresami IP dla pojedynczego żądania strony w mojej witrynie.
Zastanawiam się teraz, jakie są zagrożenia, pozwalając moim klientom na ciągłe przeskakiwanie między adresami IP w celu żądania strony (na przykład pliki CSS są wymagane przez xxx.xxx.xxx.xxx, a pliki JavaScript są wymagane przez yyy.yyy.yyy. rrr) Czy ogólnie powinienem na to zezwalać czy zakazać?
Odpowiedzi:
Przyczyny
Zakładając, że Twoi użytkownicy nie próbują aktywnie ukrywać swoich prawdziwych adresów IP za pomocą usługi anonimizacji ...:
Większość korporacyjnych przykładów, które widziałem, są spowodowane przez większe firmy i niektórych dostawców usług internetowych korzystających z klastra serwerów proxy, z których każdy ma inny zewnętrzny adres IP, a żądania użytkowników są równoważone w tym klastrze.
Możesz zobaczyć użytkowników stosu podwójnego, którzy przesyłają żądania zarówno przez IPv4, jak i IPv6 i przełączają się między dwoma protokołami RFC 8305 dla kolejnych żądań.
Drugi scenariusz polega na tym, że jestem w skrajnym zasięgu punktu dostępowego Wi-Fi, a moje urządzenie „losowo” przełącza się między Wi-Fi a danymi komórkowymi.
Rozwiązania
W pierwszym scenariuszu możesz zagrozić utrzymaniu takiego bezpieczeństwa IP w sesjach, biorąc pod uwagę tylko pierwsze trzy oktety, ponieważ zwykle taki klaster serwerów proxy znajduje się w małej podsieci i będzie miał sąsiadujące adresy IP.
W drugim i trzecim scenariuszu zobaczysz zupełnie inne adresy IP klientów, nawet od niepowiązanych dostawców.
Nie łącz sesji z konkretnym adresem IP, który może zepsuć wrażenia użytkownika, a nie zapewnić rzeczywistą poprawę bezpieczeństwa.
źródło
Podstawowym ryzykiem jest złośliwy użytkownik przejmujący sesję. Jeśli możesz zablokować jeden lub niewielki zestaw adresów IP, możesz zablokować użytkownikom całkowicie różne adresy IP przed przejęciem sesji.
Problem polega na tym, że niektórzy użytkownicy robią to zgodnie z prawem. Niezależnie od tego, czy używają proxy z równoważeniem obciążenia, czy znajdują się na marginesie dwóch bezprzewodowych punktów dostępowych (lub cokolwiek innego), używają wielu adresów IP. Więc prawie na to musisz pozwolić tym użytkownikom. I trudno powiedzieć, którzy użytkownicy wymagają wielu adresów IP, z wyjątkiem sytuacji, gdy żądają wielu adresów IP.
Jednym ze sposobów zmniejszenia tego wpływu jest użycie HTTPS. Następnie złośliwy aktor musi mieć sposób na złamanie bezpiecznej warstwy oraz pliku cookie sesji. W przypadku niepewnego połączenia złośliwy aktor może po prostu skorzystać z inspekcji sieci, aby skompromitować sesyjny plik cookie. Ale w przypadku HTTPS ten sam złośliwy aktor musi mieć dostęp do jednego z końców rozmowy. A jeśli złośliwy aktor to ma, nie trzeba używać innego adresu IP.
TL; DR : należy zasadniczo zezwolić na żądania z różnych adresów IP dla tego samego użytkownika. Istnieją uzasadnione powody, dla których może się to zdarzyć. Zamiast tego użyj HTTPS, aby chronić przed tą klasą exploitów.
źródło
Z punktu widzenia bezpieczeństwa - zero ryzyka.
Teraz z praktycznego punktu widzenia. Oznacza to, że nie można używać niektórych rodzajów algorytmów ani do ochrony, ani do ochrony DoS .
Prostym sposobem na ograniczenie żądań użytkowników jest śledzenie według adresu IP. Ponieważ nie wymaga to interakcji z serwerem aplikacji, możesz w tym celu korzystać z usług na niższych poziomach. Robią to programy takie jak mod_evasive Apache. Nadal możesz korzystać z tych technik, ale zmiana adresów IP przez użytkownika zmniejszy ich skuteczność. Z drugiej strony użytkownicy i tak zmienią adresy IP, aby techniki te nigdy tak naprawdę nie były skuteczne.
Powiązanym, ale innym przypadkiem użycia jest ograniczanie nieudanych prób logowania. Zapobiega to zgadywaniu hasła z użyciem siły brute-force. Ale znowu nic nie możesz zrobić, jeśli użytkownicy zmienią adresy IP. Naprawdę poważny haker nawet nie używałby własnych maszyn. Po prostu kupi trochę czasu w botnecie (lub użyje swojego wcześniej zainfekowanego botnetu) i połączy się z twoją usługą za pośrednictwem komputerów 10 000 innych osób (adresy IP). Nie jest to tak naprawdę związane z ograniczaniem adresu IP użytkownika, ponieważ jest to logowanie wstępne, ale należy o tym pamiętać.
źródło
Istnieje kilka powodów, dla których użytkownik może przejść na nowy adres IP.
Zaletą blokowania sesji klienta na adresy IP jest utrudnienie kradzieży sesji. Jeśli atakujący ma mechanizm, który pozwala mu ukraść pliki cookie klientów, ale nie pozwala im nawiązywać połączeń z serwerem z adresu IP klienta, blokada IP zablokuje je przed kradzieżą sesji.
Minusem jest to, jak mówisz, spowoduje uszkodzenie niektórych użytkowników, dla których sesja zostanie unieważniona bez wyraźnego powodu.
Obecnie wydaje się, że większość witryn uważa, że złamanie zabezpieczeń przewyższa zalety takiego blokowania.
źródło