実現したいこと
railsで作成したサービスのセキュリティをさらに上げるためにrack-attackのgemを導入しました。
管理者ページを自身のIPアドレスのみしか閲覧できないように試しに行うためにまずは、適当な数字を打ち込んだIPアドレスから閲覧規制が掛かるかを試したのですが、普通に閲覧できました。
そもそも規制が掛かった際にどのような状態になるのか分からないので、教えて頂きたいです。
前提
・rack-attack gemはインストール済み
・initializers/rack_attack.rbを作成済み
発生している問題・エラーメッセージ
規制が掛からない
該当のソースコード
application.rb
1class Application < Rails::Application 2 config.middleware.use Rack::Attack 3end
development.rb
1config.middleware.use Rack::Attack
initializers/rack_attack.rb
1class Rack::Attack 2 OFFICE_IP_ADDRESS ='xxx.xxx.xxx.xxx' #IPアドレス 3 4 blocklist('only allow from office') do |req| 5 req.path.match(%r{^/admin}) && (OFFICE_IP_ADDRESS != req.ip) #/adminのところは任意のページのURLに変えてください。 6 end 7 8 # 同一IPアドレスからのリクエストを5回/秒に制限 9 Rack::Attack.throttle('req/ip', limit: 5, period: 1.second) do |req| 10 req.ip 11 end 12 13 # 同一IPアドレスからのリクエストを100回/分に制限 14 Rack::Attack.throttle('req/ip', :limit => 100, :period => 1.minutes) do |req| 15 req.ip 16 end 17 18 # 1.2.3.4からのアクセスを拒否する 19 Rack::Attack.blocklist('block xxx.xxx.xxx.xxx') do |req| 20 'xxx.xxx.xxx.xxx' == req.ip 21 end 22 23 # BadUAが含まれたUserAgentからのログイン画面アクセスを拒否する 24 Rack::Attack.blocklist('block bad UA logins') do |req| 25 req.path == '/users/sign_in' && req.post? && req.user_agent == 'BadUA' 26 end 27 28end
試したこと
users/adminのページを規制したいので、初期はこの記述にしていたのですが、規制が掛かっている様子が無かったので、下記に変更してみて試してみたのですが、ダメでした。
ルーティングが間違っている可能性はありますか?
(%r{^/admin})
補足情報(FW/ツールのバージョンなど)
ruby 3.2.2
rails 6
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/12/31 16:42
2025/01/01 07:29
2025/01/02 17:57
2025/01/02 23:30 編集