READMEを触って見てみる。
インストール
- Gemfileに追記
gem 'rack-attack'

- インストール
bundle

ファイルでの有効化方法

■ファイル
config.ru

■追記
require "rack/attack"
use Rack::Attack

READMEのusageを触る。

設定ファイルはこちらが推奨されている。
:
config/initializers/rack_attack.rb
リクセストの許可
一番優先されるらしい、ブロックよりも優先された。
  • safelist(name, &block)
  • blocklist(name, &block)
$ cat config/initializers/rack_attack.rb
class Rack::Attack

  # safelist_ip("<家のIP>")
  # safelist_ip("<家のIP>/xx")

  safelist('safelist') do |req|
    '<家のIP>' == req.ip
  end

  blocklist('blocklist') do |req|
    '<家のIP>' == req.ip
  end
end


Fail2Ban

特定のPATHへのアクセスとかクエリをBANできる。
READMEの例
  • CGI.unescape
    • クエリに特定の文字列が含まれていたらbanする。
  • req.path.include?
    • PATHに文字列が含まれていたらbanする
$ cat config/initializers/rack_attack.rb
Rack::Attack.blocklist('fail2ban pentesters') do |req|
  Rack::Attack::Fail2Ban.filter("pentesters-#{req.ip}", maxretry: 3, findtime: 10.minutes, bantime: 5.minutes) do
    CGI.unescape(req.query_string) =~ %r{適当な文字列} ||
    req.path.include?('.env')
  end
end
動作確認
■URL?<banする文字列>でアクセスすると弾かれた。
■URL/.env でアクセスすると弾かれた。