Databázový server MySQ
MySQL je multiplatformní databáze. Komunikace s ní probíhá pomocí jazyka SQL, který je implementován pouze jako dialekt tohoto jazyka s některými rozšířeními. Pro svou snadnou implementovatelnost (lze jej instalovat na Linux, MS Windows, ale i další operační systémy), výkon a především díky tomu, že se jedná o volně šiřitelný software, má vysoký podíl na v současné době používaných databázích. Velmi oblíbená a často nasazovaná je kombinace Linux, MySQL, PHP a Apache jako základní software webového serveru.
Samotný MySQL server má velmi omezené možnosti logování - k dispozici je pouze error log, který obsahuje pouze stavové hlášení a chyby nebo lze zapnout logování všech SQL dotazů, které způsobí velkou zátěž celého serveru a tím degradaci výkonu MySQL. Proto jsme zvolili volně dostupné doplňky, které lze do MySQL doinstalovat a nastavit je tak, aby se logovali pouze požadované druhy dotazů.
Uvedený postup je založený na doplňku MySQL Audit:
https://github.com/mcafee/mysql-audit
Doplněk je ve výchozím stavu nastavený tak, že maskuje hesla v SQL dotazech.
-
Nejprve stáhneme odpovídající verzi pluginu pro náš MySQL server:
-
Zjistíme si umístění složky MySQL plugin:
mysql> SHOW GLOBAL VARIABLES LIKE 'plugin_dir';
-
Zjistíme si umístění složky pro uložení audit logu:
mysql> SHOW GLOBAL VARIABLES LIKE 'log_error';
-
Rozbalíme soubor
audit-plugin-mysql-5.x-x.x.x-xxx\lib\libaudit_plugin.so
do složkyplugin_dir
-
Do konfiguračního souboru MySQL serveru
my.cnf
doplníme na konec sekce [mysqld]:# načtení audit doplňku plugin-load=AUDIT=libaudit_plugin.so # nastavení, co chceme logovat, doporučená varianta audit_record_cmds=process,drop,truncate,alter,trigger,grant, super,reload,shutdown,create_user,revoke; # log chceme jako JSON audit_json_file=1 # cesta k log souboru audit_json_log_file=/var/log/mysql/mysql-audit.json # nechceme, aby se dal plugin odinstalovat uživateli audit_uninstall_plugin=0 # rotace log souboru: audit_json_file_flush=on
-
Provedeme restartování služby MySQL, aby se načetla nová konfigurace:
service mysql restart
-
Ověříme, zda se povedlo načtení doplňku do MySQL serveru, v seznamu hledáme položku AUDIT
mysql> show plugins;
-
Pokud je AUDIT uveden, doplněk je správně nastavený
-
Zkontrolujeme, zda audit log obsahuje data:
cat /var/log/mysql/mysql-audit.json
V této části nastavení provedeme konfiguraci odesílání audit logu, ale i error logu do Logmanageru.
-
Zeditujte konfigurační soubor
/etc/syslog-ng/syslog-ng.conf
-
Zkontrolujte, zda soubor obsahuje tyto parametry:
source s_src { system(); internal(); }; @include "/etc/syslog-ng/conf.d/"
-
Soubor uložte
-
Vytvořte soubor
/etc/syslog-ng/conf.d/mysql.conf
-
Vložte do něj následující kód: (ip adresu nastavte na adresu Logmanageru, taktéž port a nastavte vlastní cestu k log souborům):
# MySQL audit log source s_mysqlaudit { file( "/var/log/mysql/mysql-audit.json", program_override("MySQL") flags(no-parse) default-facility(local0) default-priority(notice) ); }; destination d_mysqlaudit { tcp( "192.168.1.1" port(514) template("<133>$DATE $HOST $MSGHDR$MSG\n") template_escape(no) ); }; log { source(s_mysqlaudit); destination(d_mysqlaudit); }; # MySQL error log source s_mysqlerror { file( "/var/log/mysql/error.log", program_override("MySQL") flags(no-parse) default-facility(local0) default-priority(error) ); }; destination d_mysqlerror { tcp( "192.168.1.1" port(514) template("<131>$DATE $HOST $MSGHDR$MSG\n") template_escape(no) ); }; log { source(s_mysqlerror); destination(d_mysqlerror); };
-
Soubor uložte
-
Zrestartujte službu syslog-ng příkazem:
/etc/init.d/syslog-ng restart
Pokud AUDIT v seznamu modulů uvedený není, musíme najít soubor error.log
, ze kterého zjistíme příčinu chyby. Kde je uložený soubor error.log zjistíme příkazem:
mysql> SHOW GLOBAL VARIABLES LIKE 'log_error';
Chyba může být způsobena špatnou verzí doplňku nebo chybějícím údajem offset, který se liší podle použité Linuxové distribuce (offset je jednoznačná identifikace MySQL serveru).
Vhodný offset lze najít přímo ve zdrojových kódech doplňku:
-
V souboru
audit_offsets.cc
nalezneme řádek s verzí 5.6.26://offsets for: /mysqlrpm/5.6.26/usr/sbin/mysqld (5.6.26) {"5.6.26","560ab8bd2c6513eac8283af1630e604a", 6992, 7040, 4000, 4520, 72, 2704, 96, 0, 32, 104, 136, 7128},
-
Nyní provedeme nastavení konfiguračního souboru MySQL
my.cnf
:audit_validate_checksum=OFF audit_offsets=6992, 7040, 4000, 4520, 72, 2704, 96, 0, 32, 104, 136, 7128
-
Provedeme restartování MySQL serveru:
service mysql restart
-
Zkontrolujeme, zda se načetl audit plugin a pokračujeme v nastavení odesílání logu do Logmanageru:
mysql> show plugins;
-
Pokračujeme v nastavení Nastavení odesílání logů do Logmanagerur
Pod systémem Windows máme k dispozici doplněk, který umožňuje logování na třech úrovních - connect, query, table. Doporučujeme použít pouze možnost connect (připojení do databáze), případně možnost table (úpravy tabulek). Uvedený postup je založený na doplňku MariaDB Audit Plugin, který je zdarma dostupný pod licencí CC-BY-SA a GFDL:
https://mariadb.com/kb/en/mariadb/about-the-mariadb-audit-plugin/
-
Stáhneme si plugin pro naší verzi serveru MySQL
-
Zjistíme složku pro uložení staženého pluginu:
mysql> SHOW GLOBAL VARIABLES LIKE 'plugin_dir';
-
Nahrajeme soubor
server_audit.dll
dox:\mysql server\lib\plugin
-
Upravíme konfigurační soubor
my.ini
:# cesta k adresáři plugin plugin_dir="x:\mysql server\lib\plugin" # chceme logovat neúspěšné pokusy o přihlášení log_warnings = 2 # zapnout audit log server_audit_logging=ON # co požadujeme logovat server_audit_events=connect
-
Soubor uložíme a provedeme restartování služby MySQL
-
Pro ověření, zda je plugin spuštěný použijeme příkaz:
mysql> SHOW GLOBAL VARIABLES LIKE 'audit_server%';
Pokud je zobrazeno server_audit_logging = ON, plugin je spuštěn.
-
Audit log je uložen v datovém adresáři MySQL:
x:\mysql server\data\server_audit.log
Tato procedura ukazuje konfiguraci uživatelského rozhraní (GUI) pro všechny dostupné zprávy.
-
Nastavte Logmanager tak, aby sledoval soubory s logy na systému Windows s MySQL serverem. Postupujte podle kapitoly Windows.
-
Nalezněte počítač s MySQL serverem a dále nastavte následující parametry na stránce Editace klientské stanice:
- Zadejte do pole typ logu hodnotu mysqlwindowsaudit.
- Do pole zdroje logů vložte cestu k log souboru:
x:\\mysql_server\\data\\server_audit.log
- Do pole typ logu zadejte hodnotu mysqlerror.
- Do pole zdroje logů vložte cestu k souboru:
x:\\mysql_server\\data\\pcname.err
Po aktulizaci nastavení Windows Event Senderu se zprávy začnou posílat do Logmanageru.