(かなり重要な)wordpressデータベースの1つが不可解に削除されました。幸い、夜間のバックアップを保持しているため、世界の終わりにはなりませんが、避けたい、または少なくとも将来的にこれを追跡することができます。
現在、後輩の開発者が誤って間違ったmysqlコマンドラインまたはphpymadminウィンドウにコマンドを入力したためにデータベースが削除されたのか、それともこれが悪意のあるSQLインジェクション攻撃であったのかはわかりません。
明らかに、ジュニア開発者のmysqlユーザーアカウントをより厳密に制御する必要がありますが、それを超えて、サーバー管理を介してSQLインジェクションを検出/防止するためのベストプラクティスは何か疑問に思っています。
注入力を個別にサニタイズする方法を知りたくありません-毎回そうしますが、カスタムスクリプトをたくさん作成し、常にジュニア開発者をスタッフに配置しますこれを忘れたり、間違えたりする可能性のある人。少なくとも、次のことを行うための最良の(最も簡単な)方法を知りたいと思います。
クエリ文字列を含むすべてのGET
またはPOST
リクエストを標準のアクセスログ形式でログに記録するか、SQLを含むデータを投稿します(/(drop|delete|truncate|update|insert)/
のような正規表現を使用してgrepできるすべての仮想ホストの単一ファイル
drop
、delete
、truncate
で始まるmysqlコマンドのみを単一のファイルに記録します。各エントリには、最小限の時間とmysqlユーザーを含める必要がありますが、コマンドラインまたはphpのどちらを使用しているか、およびphpの場合はスクリプトが何であるかを確認できれば便利です。
ご協力いただきありがとうございます!そして明らかに、私が見落としていた標準ログを使用した基本的な解決策があるかどうかを知らせてください。
GreenSQLをチェックしてください: http://www.greensql.net/
乾杯
wordpress site suggests using mod_security forthis。
GETおよびPOST)と一緒に追加するだけで、COOKIE、FILE、REQUESTもログに記録する必要があります。
あなたへのいくつかの提案:
-MySQLロギングを有効にします。 OSSECを使用して、これらのログを監視します。 http://www.ossec.net/wiki/SQL_Logging#MySQL_Logging
-Wordpressロギングプラグインを有効にします( http://www.ossec.net/main/wpsyslog2 )。 Wordpress内で発生するすべてのログ(新しい投稿、新しいユーザー、ログイン、ログアウトなど)が生成されます。
-Apacheログを分析します(繰り返しになりますが、OSSECをお勧めします)。
これらの3つの監査証跡を使用すると、このような問題やその他の種類の攻撃を簡単に監視および検出できます。