ログを分析する [セキュリティ研究室]

 こんにちは!
 ナビゲータのEVEです。

 本日また新しい発見がありました。それは、デバック・・・。
 当プロジェクトの開発は、ブラウザを使用しているときは、ブラウザ上に表示されるエラーメッセージ・・・。そして、CLIの場合は、TeraTermに表示されるメッセージが主なのですが、以下を設定することにより実現をしていました。

display_errors = On(Off)

ただ、本日、デバックしていたところ、画面にエラーメッセージが表示されていないことに気づきました。それは、つい最近、CLIでの開発をしましたが、その時に、CLIとブラウザのPHPの環境をそろえたことにより、php.iniの設定が初期値に戻ってしまったようです。
 いつもなら、display_errorsをOffからonに変更するだけなのですが、今回は、その前に、どこを変更したらいいのか、Copilotに聞いてみました。そうすると、以下の点を修正すべきと回答がありました。

output_buffering = Off(4096)
display_startup_errors = On(Off)
error_reporting = E_ALL(E_ALL & ~E_DEPRECATED & ~E_STRICT)
log_errors = On
zend.exception_ignore_args = Off
track_errors = On
*()内は初期値です。
track_errorsは、php.iniに設定されていません。phpの最終行などに追加するなどして対応してください。
分類 設定 初期値 デバッグ推奨
エラー検出 error_reporting E_ALL & ~DEPRECATED & ~STRICT E_ALL
画面表示 display_errors Off On
起動時エラー display_startup_errors Off On
ログ出力 log_errors On On
ログ場所 error_log 未設定 設定推奨
バッファ output_buffering On Off
例外情報 zend.exception_ignore_args On Off
レガシー補助 track_errors 無し 任意

想像以上に、修正する点が多いのには驚きましたが、素直に修正しました。そうすると、デバックしたシステムからエラーが頻発・・・。ちょっと、信じられませんでした・・・。内容を確認すると、開発したプログラムにBOMのような不正な見えないコードが入っていることが判明・・・。まっ、バグがあるなら修正するしかありませんもんね・・・。そこから本日は、同エラーを修正していました。そのため、予定していた、EVEMST00310バッチログ一覧処理の開発に入ることができませんでした。
 ただ、一応、本日新たに検出されたバグについては修正完了しています。
 知らないことがたくさんありますね・・・。今後は、今まで通り、どんなに知っていると思ったことも、AIに相談し、システムを最新化していきたいと思います。
 なお、本番環境では、以下の設定が好ましいらしいです。気を付けてください。

output_buffering = Off
display_errors = On
display_startup_errors = On
error_reporting = E_ALL
log_errors = On
zend.exception_ignore_args = Off
track_errors = On

 では、本日は、セキュリティの日ですが、今週まで製造していた、ログ情報抽出処理について、どんなことをして、セキュリティを高めようとしているのか話したいと思います。

[どんなシステム]

 ログ情報抽出処理は、任意の文字列がログに存在した場合、その当該文字列ヒット行を、DBに書き込むという単純な処理です。
 最初、同システムで、不正アクセスを検出するなどのことも考えましたが、汎用性が失わるという理由で中止しました。任意の文字列が見つかった段階でセキュリティリスクかどうか判明できる場合もあるのですが、そうでないケースもあります。そうでないケースを開発しているシステムに組み込んだ場合、共通で利用するという意味で、不要なロジックが増えてしまうのです。そのため、任意文字を検索→任意文字列にヒット→DBに書き込むといった単純な処理に落ち着きました。
 今後の方針ですが、バッチ処理限定ですが、1プログラム、1機能で製造していきます。その場合リソース管理がめんどくさくなるのですが、構成管理システムを充実させることにより、同問題を解決する予定です。

[管理ログ]

 今回、各ログから、rsyslogで抽出します。その抽出した情報を、EVEシステムで検証するのですが、現時点の対象としては、以下のファイルとしています。なお、今後追加される可能性はあります。

apache_access.log
apache_error.log
auth.log
clamav.log
mysql_error.log
php_errors.log
postfix.log
ufw.log

 例えば、apache_access.logに404という文字列があるかどうか検索し、存在した場合、当該ログのレコードをDBに書き出すというのが、ログ情報抽出処理になります。しかも、404の検索キーワードには危険レベルを設定していて、404だったら、危険レベル2といった感じで画面上に表示するというのが以降に開発するシステムになります。
 このシステムを導入することにより、危険な攻撃を一目で見つけることが可能になります。

[あとがき]

 なんか、開発のレベルをディープにしていくと、何かと問題がでてきます。ただ、開発レベルをディープにしないと見つからない異常は、潜在バグです。今後も、何をするにしても、AIに相談し、潜在バグ絶滅に努めたいと思います。
 なお、今回開発をしたシステムは、セキュリティの入り口で、今後、ログ情報抽出処理で抽出した情報を分析するシステムを製造する予定です。同開発は、土~日曜日に実施し、全体の進捗へ影響を与えないようにしたいと考えています。
 では、また!

コメント