t_wの輪郭

Feedlyでフォローするボタン
PostgreSQLGroonga
『t_wの輪郭』に攻撃が来た 2022年11月6日『PostgreSQLで日本語全文検索 - LIKEとpg_bigmとPGroonga』Postgresqlの日本語全文検索『t_wの輪郭』の検索機能を改善

は?やべぇ。攻撃来てるかも。攻撃戦だ。


nginxのログみたら、SQLっぽいクエリで検索めっちゃされてる。
nginxでIPをはじくようにした。
IPをBANしたら、一旦攻撃は止んだ。


攻撃の対策どうしよう、fail2bannginx-403-404は設定してるけど、サイト内検索を連打されるとこれ効かないんだよな。
WAF入れるのが手っ取り早いんだろうけど、勉強にならないし、お金かかるしで、もうちょっとほかの手段を検討したい。


fail2banSQLインジェクションを検知してBANする
②nginxで高頻度の検索を検知してBANする
あたりかしら

設定するのめんどくせー
ちゃんと設定できてるか検証するのもめんどくせー


①検証用の被攻撃サーバーと攻撃用サーバーを立ててそこで対策が有効かを検証
本番環境に反映したら攻撃用サーバーから攻撃してみて、ちゃんと対策されているか検証

って感じで進めるとお行儀が良さそう。
めんどくせー
本番環境でペペぺって設定して、自宅のPCから実際攻撃して検証したい。そして自宅のPCから本番環境にアクセスできなくなるワナ。

こういうのって制定された手順とかあるんかな。ありそう。先に調べよう。


そもそもサイト内検索が大変重たいという問題も解決したい。
自作の検索機能がDBにインデックス張ってないわ、title LIKE %hogehoge% OR body_text LIKE %hogehoge%とかやって全文検索走るわでイケてない。
DBにちゃんとインデックス張ればいいんだろうけど、PostgreSQLの日本語のインデックスって、PGroonga入れたり、pg_bigm入れたりで、これまた検証サーバー立てないと怖いのよね。
めんどくせー。

  • 課題:全文検索にしてあるはずなのに、検索結果に出てこない輪郭がある
  • 原因:@@演算子を使っていた
    • @@演算子は何もせずともインデックスを使用すると誤認しており、LIKEよりも大幅に高速だと誤認していた。
    • @@演算子で全文検索できると誤認していた。
  • 対策:LIKEを使用する。
  • 付記:将来的に検索速度が問題になるようであれば、pg_bigmPGroongaの利用を検討する。