2013-05-03 16 views
5

Mam aplikację szyny na heroku, a jest około 10 żądań na sekundę, co jest dziwne, ponieważ nikt nie używa tej aplikacji w tej chwili. Wszystkie żądania dotyczą identyfikatorów URI, które wyraźnie próbują wykorzystać luki w zabezpieczeniach, na przykład.Blokowanie adresów IP W aplikacji szyny na heroku

i podobne rzeczy.

Jak mogę zablokować tej osobie dostęp do mojej aplikacji? Czy jest to szybkie rozwiązanie?

Odpowiedz

7

Być może rack-attack zrobi, co chcesz?

# Block requests from 1.2.3.4 
Rack::Attack.blacklist('block 1.2.3.4') do |req| 
    # Request are blocked if the return value is truthy 
    '1.2.3.4' == req.ip 
end 
+1

Czy jest jakiś sposób, aby ustawić to do pracy dynamicznie z tabeli bazy danych? Jak mogłem zrobić coś podobnego za pomocą czarnej listy? – OneChillDude

+0

prawdopodobnie, ale musiałbyś sam to zaprojektować. Możesz tam spojrzeć na inne opcje Railsów, jeśli możesz je znaleźć. – catsby

+1

Jest wbudowana obsługa Redis, roszczenia dokumentacji. – RandallB

2

Moja odpowiedź jest trochę spóźniona, ale ponieważ zapytano Cię później o dynamiczne dodawanie adresów IP, równie dobrze możesz je udostępniać.

Z tego Github Issue. Być może możesz użyć obecności/istnienia adresu IP w magazynie pamięci podręcznej, aby określić, czy ma on być blokowany (w porównaniu do ręcznego dodawania adresu IP i ponownego wdrażania aplikacji).

Rack::Attack.blacklist('block <ip>') do |req| 
    # if variable `block <ip>` exists in cache store, then we'll block the request 
    Rails.cache.fetch("block #{req.ip}").present? 
end 

Za pomocą aplikacji lub konsoli można pisać do sklepu z pamięci podręcznej.

Rails.cache.write('block 1.2.3.4', true, expires_in: 5.days) 
Powiązane problemy