Rack :: Attack не блокирует IP-адреса - PullRequest
0 голосов
/ 04 декабря 2018

Я установил и настроил Rack :: Attack, но ip-адреса из черного списка все еще постоянно посещают мой сайт.

В config / application.rb:

require_relative 'boot'

require 'rails/all'

# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)

module MyApp
  class Application < Rails::Application
    # Initialize configuration defaults for originally generated Rails version.
    config.load_defaults 5.1
    config.middleware.use Rack::Attack


    ActionController::Base.config.relative_url_root = ''
  end
end

и в инициализаторах/rack_attack.rb

class Rack::Attack

  Rack::Attack.blocklist_ip("46.229.168.154")
  Rack::Attack.blocklist_ip("23.101.169.3")

  RANGE = (IPAddr.new('54.36.0.0').to_i..IPAddr.new('54.38.255.255').to_i)
  Rack::Attack.blocklist('block_local_network')  do|req|
    RANGE.include?(IPAddr.new(req.ip).to_i)
  end


end

После установки конфигурации, те же ip_addresses все еще попадают на мой сайт.Я был взволнован, потому что мой трафик вырос в 5 раз, как обычно, только для того, чтобы у этих спам-ботов был сенокос.

1 Ответ

0 голосов
/ 25 марта 2019

Проверьте свой список надежных отправителей , чтобы узнать, есть ли диапазон или заполнитель для IP-адресов, которые вы хотите заблокировать.Если IP-адрес включен в список безопасности, он не будет заблокирован, даже если он находится в списке блокировки.Кстати, ваш код может быть немного упрощен с помощью диапазонов IP-адресов.Кроме того, IPAddr.new (req.ip) .to_i не требуется, просто используйте вместо него req.ip.

RANGE = IPAddr.new '54.36.0.0/14'
puts RANGE.to_range                  # 54.36.0.0..54.39.255.255
puts RANGE.include? '54.36.0.0'      # true
puts RANGE.include? '54.39.255.255'  # true
...