모든 제한 및 금지의 현재 상태를 볼 수 있습니다. 기존 키/금지를 삭제합니다. 수동으로 금지를 추가합니다.
영감을 받은 곳: https://www.backerkit.com/blog/building-a-rackattack-dashboard/
애플리케이션의 Gemfile
에 다음 줄을 추가하세요.
gem 'rack_attack_admin'
애플리케이션의 config/routes.rb
에 다음 줄을 추가하세요.
mount RackAttackAdmin :: Engine , at : '/admin/rack_attack'
브라우저에서 http://localhost:3000/admin/rack_attack으로 이동하세요!
웹 인터페이스 대신 제공된 읽기 전용 명령줄 명령인 rake rack_attack_admin:watch
사용할 수도 있습니다.
+-------------------------------+--------------------+
| Banned IP | Previous (5 s ago) |
+-------------------------------+--------------------+
| allow2ban:ban:login-127.0.0.1 | |
+-------------------------------+--------------------+
+----------------------------------------------------------------------------------+---------------+--------------------+
| Key | Current Count | Previous (5 s ago) |
+----------------------------------------------------------------------------------+---------------+--------------------+
| ('allow2ban:count'):login-127.0.0.1 | 2 | 1 |
| throttle('logins/ip'):127.0.0.1 | 1 | |
| throttle('logins/email'):[email protected] | 1 | |
| throttle('req/ip'):127.0.0.1 | 2 | 1 |
+----------------------------------------------------------------------------------+---------------+--------------------+
Fail2Ban/Allow2Ban 규칙을 이 앱에서 검사할 수 있도록 하려면 업스트림 Rack::Attack 문서에서 정의하는 것과 약간 다르게 정의해야 합니다.
다음과 같이 차단 목록에 Allow2Ban 필터가 있는 경우:
blocklist ( 'login:allow2ban' ) do | req |
Rack :: Attack :: Allow2Ban . filter ( "login- #{ req . ip } " , maxretry : 5 , findtime : 1 . minute , bantime : 10 . minutes ) do
# The count for the IP is incremented if this return value is truthy.
is_login . ( req )
end
end
, 이를 동등한 정의로 변경할 수 있습니다.
blocklist ( 'login:allow2ban' ) do | req |
def_allow2ban ( 'login' , limit : 5 , period : 1 . minute , bantime : 10 . minutes )
allow2ban ( 'login' , req . ip ) do
is_login . ( req )
end
end
def_fail2ban
/ def_allow2ban
구성을 해시에 저장합니다(식별자 없이 이름으로). throttle
과 거의 동일합니다.
fail2ban
/ allow2ban
메소드는 정의에서 옵션(주어진 이름과 일치)을 조회하고 사용하는 Rack::Attack::Allow2Ban.filter
에 대한 단순한 래퍼입니다.
여기에는 다음과 같은 장점이 있습니다.
throttle
명령과 더 유사하고 일관성이 있는 API 및 옵션을 제공합니다. # Compare:
def_allow2ban ( 'login' , limit : 5 , period : 1 . minute , bantime : … )
allow2ban ( 'login' , discriminator ) do
# Return truthy value to increment counter
end
# allow2ban returns true if counter reaches limit
throttle ( 'logins/email' , limit : 5 , period : 1 . minute ) do | req |
discriminator . ( req )
end
maxretry
및 findtime
옵션 대신 익숙한 limit
및 period
옵션을 사용할 수 있습니다.Fail2Ban.filter
구문을 사용하는 것처럼 판별자를 문자열에 삽입할 필요가 없습니다. 이는 전적으로 선택 사항입니다. 이 방법으로 정의하지 않기로 결정한 경우에도 Fail2ban 카운터 키와 값이 표시됩니다. 일치하는 규칙을 찾을 수 없으므로 해당 카운터 키에 대한 제한 또는 시간 버킷이 무엇인지 표시할 수 없습니다. 따라서 위 스크린샷에 표시된 것처럼 allow2ban('login')
에 대한 제한을 표시하는 대신 해당 키에 대해 표시할 수 있는 부분만 표시하는 것으로 대체됩니다.
이는 Rack::Attack.cache.store
다음 인스턴스로 설정하여 테스트되었습니다.
Redis::Store
. ( ActiveSupport::Cache::RedisStore
에서 사용됨(redis-activesupport/redis-rails gems에서))ActiveSupport::Cache::RedisCacheStore
(Rails 5.2 이상에서 제공) 버그 보고서 및 끌어오기 요청은 GitHub(https://github.com/TylerRick/rack_attack_admin)에서 환영합니다.