【要約】1日数人の個人サイトが1か月で33万回攻撃されていた — ログを数えて塞ぐまで [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
筆者が運用する個人サイトにおいて、想定を遥かに超える規模の自動化された攻撃に直面した。攻撃は特定のターゲットを狙うものではなく、全アドレスを機械的にスキャンする性質を持つ。具体的には以下の課題が挙げられる。
- ・SSHログイン失敗が月間33万回を超え、1日あたり約1.2万回の試行が発生。
- ・攻撃元は正規のクラウド事業者であり、GeoIPによる国別制限が機能しにくい。
- ・WebとSSHの両方を狙う攻撃者が存在し、片面だけの対策では不十分。
- ・AIクローラによる大量アクセスが、アクセス解析の精度を著しく低下させている。
// Approach
筆者は、攻撃の実態をログから定量的に把握し、設定ミスを防ぎつつ防御力を高める運用フローを構築した。単にツールを入れるだけでなく、設定の優先順位や作業の安全性に重点を置いている。
- ・
lastbやnginx access.logを用い、攻撃回数や攻撃元を詳細に分析。 - ・
sshd_configの「先勝ち」ルールに基づき、00-hardening.confによる設定の優先順位を適正化。 - ・
systemd-run --on-activeを利用し、SSH設定変更時に失敗しても10分後に自動復旧する仕組みを導入。 - ・
fail2banを導入し、systemdバックエンドを用いて攻撃元IPを自動遮断。 - ・1x1のGIFビーコンを用い、AIクローラを除外する新しいアクセス解析手法を採用。
// Result
筆者は、攻撃の性質が「脆弱な設定の探索」であることを突き止め、防御体制を強化した。これにより、攻撃のノイズを減らし、管理の安全性を向上させている。
- ・SSHの公開鍵認証への完全移行と設定修正により、パスワード認証を確実に無効化。
- ・
systemd-runによる自動巻き戻し手順の確立により、SSH設定変更時の心理的・技術的リスクを低減。 - ・
fail2banによる自動遮断で、ログのノイズを削減し、真の異常検知を容易にした。 - ・自身の管理不足による設定ファイルの置き忘れ(
.confファイル)を特定し、即時排除。
Senior Engineer Insight
> 本記事の真価は、設定変更に伴う「締め出し」という運用リスクへの具体的な解法にある。特に
systemd-runを用いた自動巻き戻しは、リモート環境での作業における致命的な失敗を回避する極めて優れたプラクティスだ。また、sshd_configの読み込み順序の罠や、fail2banがnftablesを使用する点など、OSの仕様変更に即した実戦的な知見が含まれている。高度な防御よりも、基本設定の徹底と、ミスを前提とした運用設計が重要であることを再認識させる内容である。