0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

OSSECデコーダーとルール、ossec-logtestについて

Last updated at Posted at 2022-03-05

はじめに

OSSECデコーダーとルール、ossec-logtestについて記事にしました。
なお、OSSECのインストール手順にご興味のある方は以下の記事を参照ください。

各種ファイルとパスについて

  • デコードとルールのテストツール:/var/ossec/bin/ossec-logtest
  • デコード設定:/var/ossec/etc/decoder.xml
  • ルール設定:/var/ossec/rules/*.xml
  • OSSECのログファイル:/var/ossec/logs/ossec.log
  • OSSECのアラートログ:/var/ossec/logs/alerts/alerts.log
  • Active Responseのログ:/var/ossec/logs/active-responses.log

各種ファイルの出力例

  • Active Responseのログ
/var/ossec/logs/active-responses.log
# cat active-responses.log
Tue Mar  1 08:42:57 UTC 2022 /var/ossec/active-response/bin/host-deny.sh add - 1xx.4x.1xx.1xx 1646124177.162 5706
Tue Mar  1 08:42:57 UTC 2022 /var/ossec/active-response/bin/firewall-drop.sh add - 1xx.4x.1xx.1xx 1646124177.162 5706
Tue Mar  1 08:53:27 UTC 2022 /var/ossec/active-response/bin/host-deny.sh delete - 1xx.4x.1xx.1xx 1646124177.162 5706
Tue Mar  1 08:53:27 UTC 2022 /var/ossec/active-response/bin/firewall-drop.sh delete - 1xx.4x.1xx.1xx 1646124177.162 5706
Tue Mar  1 09:57:52 UTC 2022 /var/ossec/active-response/bin/host-deny.sh add - 3x.1xx.2xx.2xx 1646128672.11989 5758
Tue Mar  1 09:57:52 UTC 2022 /var/ossec/active-response/bin/firewall-drop.sh add - 3x.1xx.2xx.2xx 1646128672.11989 5758
Tue Mar  1 10:08:23 UTC 2022 /var/ossec/active-response/bin/host-deny.sh delete - 3x.1xx.2xx.2xx 1646128672.11989 5758
Tue Mar  1 10:08:23 UTC 2022 /var/ossec/active-response/bin/firewall-drop.sh delete - 3x.1xx.2xx.2xx 1646128672.11989 5758
  • OSSECのログ
/var/ossec/logs/ossec.log
2022/03/05 11:52:10 ossec-testrule: INFO: Reading local decoder file.
2022/03/05 11:52:10 ossec-testrule: INFO: Started (pid: 3264).
2022/03/05 12:36:49 ossec-testrule: INFO: Reading local decoder file.
2022/03/05 12:36:49 ossec-testrule: INFO: Started (pid: 3658).
2022/03/05 12:38:27 ossec-testrule: INFO: Reading local decoder file.
2022/03/05 12:38:27 ossec-testrule: INFO: Started (pid: 3661).

デコーダーとルールについて

OSSECにはマネージャーとエージェントがあります。エージェントは監視対象のサーバログやファイルのハッシュをマネージャーに送信します。マネージャーはエージェントから送られてきた情報を分析し、アラートの通知や通信の遮断などのアクティブレスポンスを行います。

なお、デコーダー機能とルールマッチ機能は、マネージャーにだけ存在する機能になっております。
デーモンは、/var/ossec/bin/ossec-analysisd です。

また、デコードの設定は、xmlファイルに書かれています。
デコードの設定ファイル:/var/ossec/etc/decoder.xml

デフォルトで、デコード設定は330個ありました。

/var/ossec/etc/decoder.xml
# cd /var/ossec/etc
# # grep decoder decoder.xml | grep name | wc -l
330

デコード設定の名前だけ抽出してみます。

/var/ossec/etc/decoder.xml
# cd /var/ossec/etc
# grep decoder decoder.xml | grep name
<decoder name="pam">
<decoder name="pam">
<decoder name="pam-user">

例として、loginページへのアクセスのデコーダーを見てみます。
正規表現を利用してデコードしています。
\S は 空白文字以外、\S+ は空白文字以外の1回以上の繰り返しです。

/var/ossec/etc/decoder.xml
<decoder name="web-accesslog">
  <type>web-log</type>
  <prematch_pcre2>^\S+ \S+ \S+ \[\S+ \S\d+\] "\w+ \S+ HTTP\S+" </prematch_pcre2>
  <pcre2>^(\S+) \S+ (\S+) \[\S+ \S\d+\] </pcre2>
  <pcre2>"(\w+) (\S+) HTTP\S+" (\d+) </pcre2>
  <order>srcip, srcuser, action, url, id</order>
</decoder>

ルールは/var/ossec/rulesのxmlに書かれています。

/var/ossec/rules/*.xml
#cd /var/ossec/rules
#ls 
apache_rules.xml     ftpd_rules.xml              ms_dhcp_rules.xml        ossec_rules.xml       sendmail_rules.xml        unbound_rules.xml
apparmor_rules.xml   hordeimp_rules.xml          ms-exchange_rules.xml    owncloud_rules.xml    smbd_rules.xml            vmpop3d_rules.xml
arpwatch_rules.xml   ids_rules.xml               ms_firewall_rules.xml    pam_rules.xml         solaris_bsm_rules.xml     vmware_rules.xml
asterisk_rules.xml   imapd_rules.xml             ms_ftpd_rules.xml        php_rules.xml         sonicwall_rules.xml       vpn_concentrator_rules.xml
attack_rules.xml     kesl_rules.xml              ms_ipsec_rules.xml       pix_rules.xml         spamd_rules.xml           vpopmail_rules.xml
cimserver_rules.xml  last_rootlogin_rules.xml    ms_powershell_rules.xml  policy_rules.xml      squid_rules.xml           vsftpd_rules.xml
cisco-ios_rules.xml  lighttpd_rules.xml          ms-se_rules.xml          postfix_rules.xml     sshd_rules.xml            web_appsec_rules.xml
clam_av_rules.xml    linux_usbdetect_rules.xml   mysql_rules.xml          postgresql_rules.xml  symantec-av_rules.xml     web_rules.xml
courier_rules.xml    local_rules.xml             named_rules.xml          proftpd_rules.xml     symantec-ws_rules.xml     wordpress_rules.xml
dnsmasq_rules.xml    mailscanner_rules.xml       netscreenfw_rules.xml    proxmox-ve_rules.xml  syslog_rules.xml          zeus_rules.xml
dovecot_rules.xml    mcafee_av_rules.xml         nginx_rules.xml          psad_rules.xml        sysmon_rules.xml
dropbear_rules.xml   mhn_cowrie_rules.xml        nsd_rules.xml            pure-ftpd_rules.xml   systemd_rules.xml
exim_rules.xml       mhn_dionaea_rules.xml       openbsd-dhcpd_rules.xml  racoon_rules.xml      telnetd_rules.xml
firewalld_rules.xml  ms1016_usbdetect_rules.xml  openbsd_rules.xml        roundcube_rules.xml   topleveldomain_rules.xml
firewall_rules.xml   msauth_rules.xml            opensmtpd_rules.xml      rules_config.xml      trend-osce_rules.xml

web,accesslogのルールは、/var/ossec/rules/web_rules.xml にありました。

/var/ossec/rules/web_rules.xml
<group name="web,accesslog,">
  <rule id="31100" level="0">
    <category>web-log</category>
    <description>Access log messages grouped.</description>
  </rule>

  <rule id="31108" level="0">
    <if_sid>31100</if_sid>
    <id_pcre2>^2|^3</id_pcre2>
    <compiled_rule>is_simple_http_request</compiled_rule>
    <description>Ignored URLs (simple queries).</description>
   </rule>

  <rule id="31101" level="5">
    <if_sid>31100</if_sid>
    <id_pcre2>^4</id_pcre2>
    <description>Web server 400 error code.</description>
  </rule>

  <rule id="31102" level="0">
    <if_sid>31101</if_sid>
    <url_pcre2>\.jpg$|\.gif$|favicon\.ico$|\.png$|robots\.txt$|\.css$|\.js$|\.jpeg$</url_pcre2>
    <compiled_rule>is_simple_http_request</compiled_rule>
    <description>Ignored extensions on 400 error codes.</description>
  </rule>

  <rule id="31103" level="6">
    <if_sid>31100,31108</if_sid>
    <url_pcre2>=select%20|select\+|insert%20|%20from%20|%20where%20|union%20|</url_pcre2>
    <url_pcre2>union\+|where\+|null,null|xp_cmdshell</url_pcre2>
    <description>SQL injection attempt.</description>
    <group>attack,sql_injection,</group>
  </rule>
  <rule id="31104" level="6">
    <if_sid>31100</if_sid>

    <!-- Attempt to do directory transversal, simple sql injections,
      -  or access to the etc or bin directory (unix). -->
    <url_pcre2>%027|%00|%01|%7f|%2E%2E|%0A|%0D|\.\./\.\.|\.\.\\\.\.|echo;|</url_pcre2>
    <url_pcre2>cmd\.exe|root\.exe|_mem_bin|msadc|/winnt/|/boot\.ini|</url_pcre2>
    <url_pcre2>/x90/|default\.ida|/sumthin|nsiislog\.dll|chmod%|wget%|cd%20|</url_pcre2>
    <url_pcre2>exec%20|\.\./\.\.//|%5C\.\./%5C|\./\./\./\./|2e%2e%5c%2e|\\x5C\\x5C</url_pcre2>
    <description>Common web attack.</description>
    <group>attack,</group>
  </rule>

  <rule id="31105" level="6">
    <if_sid>31100</if_sid>
    <url_pcre2>%3Cscript|%3C%2Fscript|script>|script%3E|SRC=javascript|IMG%20|</url_pcre2>
    <url_pcre2>%20ONLOAD=|INPUT%20|iframe%20</url_pcre2>
    <description>XSS (Cross Site Scripting) attempt.</description>
    <group>attack,</group>
  </rule>

ossec-logtestについて

デコーダーとルールは、/var/ossec/bin/ossec-logtest を利用して、テストすることができます。
198.168.3.5 - - [05/Mar/2022:21:38:24 +0900] "POST /login HTTP/1.1" 200 - をテストしてみたところ、ルールID:31108にヒットしました。

# /var/ossec/bin/ossec-logtest
2022/03/05 12:38:27 ossec-testrule: INFO: Reading local decoder file.
2022/03/05 12:38:27 ossec-testrule: INFO: Started (pid: 3661).
ossec-testrule: Type one log per line.

198.168.3.5 - - [05/Mar/2022:21:38:24 +0900] "POST /login HTTP/1.1" 200 -


**Phase 1: Completed pre-decoding.
       full event: '198.168.3.5 - - [05/Mar/2022:21:38:24 +0900] "POST /login HTTP/1.1" 200 -'
       hostname: 'ip-172-31-83-176'
       program_name: '(null)'
       log: '198.168.3.5 - - [05/Mar/2022:21:38:24 +0900] "POST /login HTTP/1.1" 200 -'

**Phase 2: Completed decoding.
       decoder: 'web-accesslog'
       srcip: '198.168.3.5'
       srcuser: '-'
       action: 'POST'
       url: '/login'
       id: '200'

**Phase 3: Completed filtering (rules).
       Rule id: '31108'
       Level: '0'
       Description: 'Ignored URLs (simple queries).'

おわりに

今回の記事は以上です。では、また。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?