Chciałbym zezwolić tylko jednemu adresowi IP na wykorzystanie do, powiedzmy 1 GB, ruchu dziennie, a jeśli limit ten zostanie przekroczony, wszystkie żądania z tego adresu IP zostaną odrzucone do następnego dnia. Wystarczyłoby jednak prostsze rozwiązanie, w którym połączenie jest przerywane po określonej liczbie żądań.
Czy jest już jakiś moduł, który może to zrobić? A może mogę to osiągnąć za pomocą czegoś takiego jak iptables?
Dzięki
Odpowiedzi:
Jeśli potrzebujesz czystego rozwiązania Apache bw_mod dla Apache 2.0 i mod_bandwidth dla Apache 1.3. Mogą zmniejszyć przepustowość serwera, aby ograniczyć wykorzystanie przepustowości.
Istnieje również mod_limitipconn, który uniemożliwia jednemu użytkownikowi nawiązywanie wielu połączeń z serwerem. mod_cband to kolejna opcja, ale nigdy jej nie użyłem.
Jeśli nie chcesz zadzierać z instalacją Apache, możesz umieścić serwer proxy kałamarnicy przed Apache. Daje to większą kontrolę również nad ograniczeniem przepustowości.
Jednak w większości przypadków problemem jest kilka dużych obiektów, gdy chcesz ograniczyć przepustowość na IP i chcesz przekazać rozsądny komunikat o błędzie, gdy użytkownik pobiera zbyt dużo danych i blokujesz go. W takim przypadku może być łatwiej napisać skrypt PHP i przechowywać informacje o dostępie w tymczasowej tabeli w bazie danych.
źródło
To jest moje rozwiązanie iptables dla tego rodzaju problemów. Dostosuj
--seconds
--hitcount
według potrzeb, także tabelę iptables.Wyjaśnione:
iptables
sprawdź, czy źródłowy adres IP jest wymieniony w pliku / proc / net / ipt_recent / ATACK przez 5 lub więcej razy w odstępie 600 sekund i czy jest to NOWE żądanie. Jeśli tak, zrób odrzucenie; jeszczeiptables
sprawdź, czy żądanie jest kierowane do portu 80. Jeśli tak, wydrukuj adres IP i znacznik czasu do / proc / net / ipt_recent / ATACK i przekaż pakiet.Działa dobrze dla moich potrzeb.
źródło
Czy spojrzałeś na narzędzie takie jak fail2ban? Może to być dla ciebie trochę trudne, ale pozwoli ci to ograniczyć liczbę żądań, które są dozwolone dla danego adresu IP. Działa, patrząc na dzienniki, a Ty ustalasz reguły dotyczące liczby naruszeń w danym czasie, więc dla Ciebie mogą to być żądania dziennie. Gdy przejdą dalej, może to zrobić np. Zablokować je za pomocą ipchains.
Użyłem go do bardzo skutecznego blokowania ataków DDoS na serwer pocztowy. Może jednak zużywać znaczną ilość mocy procesora.
źródło
spróbuj
mod_dosevasive
lubmod_security
mod_dosevasive
można skonfigurować tak, aby zablokował adres IP po określonej liczbie lub żądaniach strony do witryny w określonych ramach czasowych.źródło