天天看點

MariaDB Audit Plugin 将日志儲存到 syslog

Syslog 使用廣泛,對日志進行獨立存儲。而且有很多的工具可對 syslog 資料進行聚合、監控、查詢和分析。Syslog 資料可以當成是一個中央資料庫。

你也可以在 MariaDB 中将日志寫到 Syslog 中,步驟很簡單:

首先下載下傳 MariaDB 的 audit 插件,下載下傳位址:

<a target="_blank" href="http://www.skysql.com/downloads/mariadb-audit-plugin-beta">http://www.skysql.com/downloads/mariadb-audit-plugin-beta</a>

然後将 server_audit.so 檔案拷貝到你的 MySQL/MariaDB 下的 lib/plugin 目錄,并通過如下指令激活該插件:

<a target="_blank" href="#viewSource">view source</a>

<code>1</code>

<code>MariaDB [(none)]&gt; INSTALL PLUGIN server_audit SONAME</code><code>'server_audit.so'</code><code>;</code>

系統預設的日志是寫到檔案,我們需要改為 Syslog:

<code>MariaDB [test]&gt;</code><code>SET</code>

<code>GLOBAL</code> <code>server_audit_output_type=SYSLOG;</code>

<code>2</code>

<code>GLOBAL</code> <code>server_audit_events=</code><code>'CONNECT,QUERY'</code><code>;</code>

<code>3</code>

<code>GLOBAL</code> <code>server_audit_logging=</code><code>on</code><code>;</code>

相關的配置項如下:

<code>01</code>

<code>MariaDB [test]&gt; show variables</code>

<code>like</code> <code>'%audit%'</code><code>;</code>

<code>02</code>

<code>+</code><code>-------------------------------------+-----------------------+</code>

<code>03</code>

<code>| Variable_name                       | Value                 |</code>

<code>04</code>

<code>05</code>

<code>| server_audit_events                 |</code><code>CONNECT</code><code>,QUERY         |</code>

<code>06</code>

<code>| server_audit_excl_users |           |                       |</code>

<code>07</code>

<code>| server_audit_file_path              | server_audit.log      |</code>

<code>08</code>

<code>| server_audit_file_rotate_now        |</code><code>OFF</code>                   <code>|</code>

<code>09</code>

<code>| server_audit_file_rotate_size       | 1000000               |</code>

<code>10</code>

<code>| server_audit_file_rotations         | 9                     |</code>

<code>11</code>

<code>| server_audit_incl_users             |                       |</code>

<code>12</code>

<code>| server_audit_logging                |</code><code>ON</code>                    <code>|</code>

<code>13</code>

<code>| server_audit_mode                   | 0                     |</code>

<code>14</code>

<code>| server_audit_output_type            | syslog                |</code>

<code>15</code>

<code>| server_audit_syslog_facility        | LOG_USER              |</code>

<code>16</code>

<code>| server_audit_syslog_ident           | mysql-server_auditing |</code>

<code>17</code>

<code>| server_audit_syslog_info            |                       |</code>

<code>18</code>

<code>| server_audit_syslog_priority        | LOG_INFO              |</code>

<code>19</code>

<code>20</code>

<code>14</code><code>rows</code>

<code>in</code> <code>set</code> <code>(0.00 sec)</code>

運作狀态資訊:

<code>MariaDB [test]&gt; show status</code><code>like</code>

<code>'%audit%'</code><code>;</code>

<code>+</code><code>------------------------------ +--------------+</code>

<code>| Variable_name                 | Value        |</code>

<code>+</code><code>----------------------------- -+--------------+</code>

<code>| server_audit_active           |</code>

<code>ON</code>           <code>|</code>

<code>| server_audit_current_log      | [SYSLOG]     |</code>

<code>| server_audit_last_error       |              |</code>

<code>| server_audit_writes_failed    | 0            |</code>

<code>+</code><code>-------------------------------+--------------+</code>

<code>4</code><code>rows</code>

確定 rsyslog 在運作:

<code>[root@centos1 log]</code><code># service rsyslog restart</code>

<code>Shutting down system logger: [ OK ]</code>

<code>Starting system logger: [ OK ]</code>

現在所有連接配接和查詢 MariaDB 的動作都會寫到 syslog 日志裡:

<code>[root@centos1 log]</code><code># tail -f /var/log/messages</code>

<code>Sep 21 00:07:07 centos1 mysql-server_auditing: centos1.localdomain,root,localhost,1,10,QUERY,,</code><code>'set global server_audit_logging=on'</code><code>,0</code>

<code>Sep 21 00:07:11 centos1 mysql-server_auditing: centos1.localdomain,root,localhost,1,11,QUERY,,</code><code>'show status like \'%audit%\''</code><code>,0</code>

<code>4</code>

<code>Sep 21 00:07:21 centos1 mysql-server_auditing: centos1.localdomain,root,localhost,1,12,QUERY,,</code><code>'show variables like \'%audit%\''</code><code>,0</code>

<code>5</code>

<code>Sep 21 00:10:06 centos1 mysql-server_auditing: centos1.localdomain,root,localhost,1,13,QUERY,,</code><code>'set global server_audit_events=\'CONNECT,QUERY\''</code><code>,0</code>

<code>6</code>

<code>Sep 21 00:13:09 centos1 mysql-server_auditing: centos1.localdomain,root,localhost,1,14,QUERY,,</code><code>'SELECT DATABASE()'</code><code>,0</code>

<code>7</code>

<code>Sep 21 00:13:09 centos1 mysql-server_auditing: centos1.localdomain,root,localhost,1,16,QUERY,</code><code>test</code><code>,</code><code>'show databases'</code><code>,0</code>

<code>8</code>

<code>Sep 21 00:13:09 centos1 mysql-server_auditing: centos1.localdomain,root,localhost,1,17,QUERY,</code><code>test</code><code>,</code><code>'show tables'</code><code>,0</code>

<code>9</code>

<code>Sep 21 00:13:14 centos1 mysql-server_auditing: centos1.localdomain,root,localhost,1,18,QUERY,</code><code>test</code><code>,</code><code>'show tables'</code><code>,0</code>

日志寫到 /var/log/messages 檔案是由 /etc/rsyslog.conf 進行配置的:

<code>*.info;mail.none;authpriv.none;</code><code>cron</code><code>.none /var/log/messages</code>

如果你想要将日志寫到不同的檔案,可以:

<code>if</code> <code>$programname ==</code><code>'mysql-server_auditing'</code> <code>then</code> <code>/var/log/mariadbaudit1</code>

使用 MariaDB Audit Plugin 對安全和系統管理來說是一個好的選擇。

英文原文:http://serge.frezefond.com/2013/09/mariadb-audit-plugin-logging-to-syslog/

繼續閱讀