私はこれらのようないくつかのOSSEC rootcheckアラートを沈黙させようとしています:-
** Alert 1456448991.70239: mail - ossec,rootcheck,
2016 Feb 26 01:09:51 myhost->rootcheck
Rule: 519 (level 7) -> 'System Audit: Vulnerable web application found.'
System Audit: Web vulnerability - Backdoors / Web based malware found - eval(base64_decode. File: /var/www/somepath/app/code/local/Mlx/Mlx/Model/Observer.php.
** Alert 1456448991.70587: mail - ossec,rootcheck,
2016 Feb 26 01:09:51 myhost->rootcheck
Rule: 519 (level 7) -> 'System Audit: Vulnerable web application found.'
System Audit: Web vulnerability - Backdoors / Web based malware found - eval(base64_decode. File: /var/www/otherpath/app/code/local/Mlx/Mlx/controllers/ServiceController.php.
rules/local_rules.xml
にルールを追加しました。level="0"
を設定してアラートを停止する必要があります:-
<group name="rootcheck">
<rule id="100200" level="0">
<if_sid>519</if_sid>
<match>Web vulnerability - Backdoors / Web based malware found - eval(base64_decode</match>
<match>app/code/local/Mlx/Mlx</match>
<description>Ignore Magento extension Mlx license restriction PHP</description>
</rule>
依存する一連のルールは次のとおりです。rules/ossec_rules.xml
:
<group name="ossec,">
<rule id="509" level="0">
<category>ossec</category>
<decoded_as>rootcheck</decoded_as>
<description>Rootcheck event.</description>
<group>rootcheck,</group>
</rule>
<rule id="510" level="7">
<if_sid>509</if_sid>
<description>Host-based anomaly detection event (rootcheck).</description>
<group>rootcheck,</group>
<if_fts />
</rule>
<rule id="516" level="3">
<if_sid>510</if_sid>
<match>^System Audit</match>
<description>System Audit event.</description>
<group>rootcheck,</group>
</rule>
<rule id="519" level="7">
<if_sid>516</if_sid>
<match>^System Audit: Web vulnerability</match>
<description>System Audit: Vulnerable web application found.</description>
<group>rootcheck,</group>
</rule>
これらのコマンドは、ルールに変更を加えた後に実行され、ossecを再起動し、rootcheck dbをクリアして、(少し遅れて)新しいrootcheckを開始します。
# bin/ossec-control restart
# bin/rootcheck_control -u 000
# bin/agent_control -ru 000
ossec-logtest
を使用して、ログファイルの行がどのようにデコードされ、アラートを生成するためにどのルールが使用されるかを確認できますが、ルートチェックルールのテストには使用できないようです:-
# bin/ossec-logtest
2016/02/26 01:52:55 ossec-testrule: INFO: Reading local decoder file.
2016/02/26 01:52:55 ossec-testrule: INFO: Started (pid: 24633).
ossec-testrule: Type one log per line.
System Audit: Web vulnerability - Backdoors / Web based malware found - eval(base64_decode. File: /var/www/otherpath/app/code/local/Mlx/Mlx/controllers/ServiceController.php.
**Phase 1: Completed pre-decoding.
full event: 'System Audit: Web vulnerability - Backdoors / Web based
malware found - eval(base64_decode. File:
/var/www/otherpath/app/code/local/Mlx/Mlx/controllers/ServiceController.php.'
hostname: 'myhost'
program_name: '(null)'
log: 'System Audit: Web vulnerability - Backdoors / Web based
malware found - eval(base64_decode. File:
/var/www/otherpath/app/code/local/Mlx/Mlx/controllers/ServiceController.php.'
**Phase 2: Completed decoding.
No decoder matched.
実際、この「ログ」行(または私が試したバリエーション)をデコードするデコーダーはありません。
ルールをlocal_rules.xml
にコピーしてoverwrite
属性を追加することで、ルールを上書きすることができます:-
<rule id="519" level="0" overwrite="yes">
<if_sid>516</if_sid>
<match>^System Audit: Web vulnerability</match>
<description>System Audit: Vulnerable web application found.</description>
<group>rootcheck,</group>
</rule>
また、level
属性を変更すると、519のアラートはすべて無効になります。
だから私のルールには何か問題があるに違いない。何が悪いのですか?
あなたが間違っているのは、複数の<match>
ルール内の要素は、実際に連結されたときにAND
edされます。だからあなたのルール:-
<group name="rootcheck">
<rule id="100200" level="0">
<if_sid>519</if_sid>
<match>Web vulnerability - Backdoors / Web based malware found - eval(base64_decode</match>
<match>app/code/local/Mlx/Mlx</match>
</rule>
アラートが発生しているメッセージとは一致しませんが、文字列と一致します:-
「Webの脆弱性-バックドア/ Webベースのマルウェアが見つかりました-eval(base64_decod ea pp/code/local/Mlx/Mlx "」
あなたはこれを試すかもしれません:-
<rule id="100200" level="0">
<if_sid>519</if_sid>
<match>System Audit: Web vulnerability - Backdoors / Web based malware found</match>
<match> - eval(base64_decode. File: /var/www/</match>
<regex>somepath/app/code/local/Mlx/Mlx|</regex>
<regex>otherpath/app/code/local/Mlx/Mlx</regex>
<description>Ignore Magento extension Mlx license restriction PHP</description>
</rule>
このルールでは、複数のmatch
およびregex
要素を使用してパターンを短くし、読みやすくしています。複数の正規表現要素も連結され、この場合は2つのOR
dパターンになります(パイプ記号を使用してそれらを分離します)。結果の一致と正規表現の文字列はAND
edなので、このルールは期待どおりに機能します。
上記の作業規則は許容度が高すぎることも指摘しておく必要があります。
「システム監査:Webの脆弱性-バックドア/ Webベースのマルウェアが見つかりました-eval(base64_decode。File:/ var/www/completely-different-path/somepath/app/code/local/Mlx/Mlx/ReallyEvil.php。」
本当に邪悪な何かが存在する場合にアラートをトリガーしないでください。一致するパスについて非常に具体的な複数のルールを使用することをお勧めします。
この最初のルールは、ルール519「システム監査:脆弱なWebアプリケーションが見つかりました」を拡張したもので、同じアラートレベルを使用し、少し具体的な一致と説明があります。
<rule id="100200" level="7">
<if_sid>519</if_sid>
<match>^System Audit: Web vulnerability - Backdoors / Web based malware found - eval(base64_decode.</match>
<description>System Audit: Vulnerable web application with possible back door or web based malware found.</description>
<group>rootcheck</group>
</rule>
次に、これらの追加ルールは、ルール100200を拡張して、メッセージの最後で一致する特定のファイルのアラートを抑制します。
<rule id="100201" level="0">
<if_sid>100200</if_sid>
<match>File: /var/www/somepath/app/code/local/Mlx/Mlx/Model/Observer.php.$</match>
<description>Ignore Magento extension Mlx license restriction PHP</description>
<group>rootcheck</group>
</rule>
<rule id="100202" level="0">
<if_sid>100200</if_sid>
<match>File: /var/www/otherpath/app/code/local/Mlx/Mlx/controllers/ServiceController.php.$</match>
<description>Ignore Magento extension Mlx license restriction PHP</description>
<group>rootcheck</group>
</rule>
冗長ですが、より正確です。