個人で作ったシステム等を cultivationdata.net で公開しているのですが、最近そのサーバーへのアクセスが増えてきまして、同時に攻撃的なアクセスも見られるようになりました。貧弱なサーバーなので、ちょっと負荷がかかるとあっさりと落ちます。
ですが、特に Web API なんかは、連絡をいただいているところでは研究やシステムへの組み込みなどにも使ってもらっているらしいので、なるべく安定的に運用していきたいと思っています。
ということで、以下のような感じでいろいろと対策をしてみました。(セキュリティの問題で公開していないものもあります。)
リンク先は note の記事になります。英語版はこちらにあります。
→ Linux 上でシステムを管理するにあたって便利そうなコマンド集です。
→ Nginx のアクセスログを監視し、高頻度のアクセスパターンを検出するためのツールです。短期的および長期的な高頻度アクセスを IP アドレスごとに追跡し、設定された閾値を超えた場合に通知を行います。
(Nginx 用に作成されていますが、適切な修正を加えることで Apache などの他のウェブサーバーのアクセス監視にも使用できます。)
→ Nginx のアクセスログファイルからユニークな IP アドレスを抽出し、各 IP アドレスに関する詳細情報を取得して、それらを CSV ファイルに出力するツールです。
(Nginx 用に作ってありますが、extract_unique_ips 関数の IP アドレスを抽出する正規表現とログファイルのパスを修正することでApacheなどの他のウェブサーバーにも利用できます。)
→ Nginx のレート制限(アクセス制限)機能を監視するための基本的な方法の解説です。
→ Linux(Ubuntu)上のサーバーのCPUとメモリの使用率を監視し、設定された閾値を超えた場合に自動的にサービスを再起動するシステムです。このシステムのおかげで、かなり安定しました。
→ Google Apps Script を使用して、複数のサーバーの健全性を監視するシステムです。個人でのサーバー運用の場合、監視のためにまた別個にサーバーを立てるのはコスト面からも大変です。そんな時には GAS が便利です。
何かの参考になれば幸いです。