web-dev-qa-db-ja.com

HerokuでIPアドレスをブロックまたはフィルタリングするにはどうすればよいですか?

Herokuで特定のIPを制限またはブロックするためにnginx/Apacheで行うのと同じように、IPフィルタリングまたはIPアクセスルールを実装する方法はありますか?

注:これはアプリケーション(Rails 3.2)内から非常に簡単に実行できることはわかっていますが、これがHerokuのリソースの最も効率的な使用法ではないと思います。また、Railsでフィルタリングを実装するよりも、ラックベースのソリューションの方が適しています。

24
Matt Smith

ラックミドルウェアとして 'rack-block' を追加しました。 config/initializersで、新しいファイルを追加します。

YourApp::Application.configure do

  config.middleware.insert_before(Rack::Lock, Rack::Block) do  
    # Add your rules with the rack-block syntax in here
  end

end

チャームのように機能します。

8
Nate Berkopec

rack-attackをチェックしてください。ラックブロックと同じように見えますが、はるかに広く使用され、頻繁に更新されます。特定のIPをブロックするには、次のようにします。

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