Logmanager dokumentace
Přepnout tmavý/světlý/automatický režim Přepnout tmavý/světlý/automatický režim Přepnout tmavý/světlý/automatický režim Zpět na domovskou stránku

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ů.

Verze pro Linux

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.

MySQL configuration

  1. Nejprve stáhneme odpovídající verzi pluginu pro náš MySQL server:

    https://github.com/mcafee/mysql-audit

    https://bintray.com/mcafee/mysql-audit-plugin/release

  2. Zjistíme si umístění složky MySQL plugin:

    mysql> SHOW GLOBAL VARIABLES LIKE 'plugin_dir';
    
  3. Zjistíme si umístění složky pro uložení audit logu:

    mysql> SHOW GLOBAL VARIABLES LIKE 'log_error';
    
  4. Rozbalíme soubor audit-plugin-mysql-5.x-x.x.x-xxx\lib\libaudit_plugin.so do složky plugin_dir

  5. 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
    
  6. Provedeme restartování služby MySQL, aby se načetla nová konfigurace:

    service mysql restart
    
  7. Ověříme, zda se povedlo načtení doplňku do MySQL serveru, v seznamu hledáme položku AUDIT

    mysql> show plugins;
    
  8. Pokud je AUDIT uveden, doplněk je správně nastavený

  9. Zkontrolujeme, zda audit log obsahuje data:

    cat /var/log/mysql/mysql-audit.json
    

Nastavení odesílání logů do Logmanageru

V této části nastavení provedeme konfiguraci odesílání audit logu, ale i error logu do Logmanageru.

  1. Zeditujte konfigurační soubor /etc/syslog-ng/syslog-ng.conf

  2. Zkontrolujte, zda soubor obsahuje tyto parametry:

    source s_src { system(); internal(); };
    @include "/etc/syslog-ng/conf.d/"
    
  3. Soubor uložte

  4. Vytvořte soubor /etc/syslog-ng/conf.d/mysql.conf

  5. 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);
    };
    
  6. Soubor uložte

  7. Zrestartujte službu syslog-ng příkazem:

    /etc/init.d/syslog-ng restart
    

Odstraňování problémů

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:

Příklad pro verzi MySQL 5.6.26

  1. 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},
    
  2. 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
    
  3. Provedeme restartování MySQL serveru:

    service mysql restart
    
  4. Zkontrolujeme, zda se načetl audit plugin a pokračujeme v nastavení odesílání logu do Logmanageru:

    mysql> show plugins;
    
  5. Pokračujeme v nastavení Nastavení odesílání logů do Logmanagerur

Verze pro Windows

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/

MySQL konfigurace

  1. Stáhneme si plugin pro naší verzi serveru MySQL

  2. Zjistíme složku pro uložení staženého pluginu:

    mysql> SHOW GLOBAL VARIABLES LIKE 'plugin_dir';
    
  3. Nahrajeme soubor server_audit.dll do x:\mysql server\lib\plugin

  4. 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
    
  5. Soubor uložíme a provedeme restartování služby MySQL

  6. 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.

  7. Audit log je uložen v datovém adresáři MySQL: x:\mysql server\data\server_audit.log

Logmanager konfigurace

Tato procedura ukazuje konfiguraci uživatelského rozhraní (GUI) pro všechny dostupné zprávy.

  1. Nastavte Logmanager tak, aby sledoval soubory s logy na systému Windows s MySQL serverem. Postupujte podle kapitoly Windows.

  2. 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
    Přidání parametrů pro MySQL server

    Přidání parametrů pro MySQL server

Po aktulizaci nastavení Windows Event Senderu se zprávy začnou posílat do Logmanageru.