Donnerstag, 24. August 2023

RHEL7: Aktivierung des Audit Logs bei der MariaDB 10.3

Das Audit Plugin von MariaDB erlaubt die Aufzeichnung von SQL-Aktivitäten in MariaDB.

Hier eine Beispiel Konfiguration:

vim /etc/opt/rh/rh-mariadb103/my.cnf.d/mariadb-server.cnf
  [mysqld]
  server_audit_logging=ON
  server_audit_excl_users='automysqlbackup'
  server_audit_output_type = 'syslog'
  server_audit_events = 'QUERY,TABLE'
  [mariadb]
  plugin_load_add = server_audit

restorecon /etc/opt/rh/rh-mariadb103/my.cnf.d/mariadb-server.cnf

RHEL7: MariaDB von 5.5 auf 10.3 aktualisieren

Hier wird der Weg beschrieben, wie man bei einen RHEL7 Server die MariaDB von 5.5 auf 10.3 aktualisieren kann.


5.5 -> 10.0

# Stoppen

systemctl stop mariadb

# Repo aktivieren
subscription-manager repos --enable=rhel-server-rhscl-7-rpms

# Paket installieren
yum install rh-mariadb100-mariadb-server -y

# Daten migrieren
rm -rf /var/opt/rh/rh-mariadb100/lib/mysql/
cp -r /var/lib/mysql/ /var/opt/rh/rh-mariadb100/lib/
chown -R mysql:mysql /var/opt/rh/rh-mariadb100/lib/mysql/
restorecon -R /var/opt/rh/rh-mariadb100/lib/mysql/

# Starten
systemctl start rh-mariadb100-mariadb

# Upgrade starten
scl enable rh-mariadb100 'mysql_upgrade -u root -p'

# Neuen Dienst aktivieren
systemctl enable rh-mariadb100-mariadb

# Alte DB entfernen
yum remove mariadb mariadb-server -y


10.0 -> 10.3

MariaDB103_Upgrade(){
# Version prüfen
if rpm -qa | grep -q "rh-mariadb"; then
echo "Es wurde eine MariaDB aus der RH Collection gefunden! Die Migration auf Version 10.3 wird nun gestartet."
else
echo "Ein Upgrade ist nicht möglich!"
exit
fi

MariaDB_Upgrade(){
# Parameter
oldPackage=$1
newPackage=$2
# Upgrade ankündigen
echo "$oldPackage -> $newPackage"

# Paket installieren
yum install rh-${newPackage}-mariadb-server -y
# Dienst stoppen
systemctl stop rh-${oldPackage}-mariadb
# Daten kopieren und Berechtigungen setzen
cp -r /var/opt/rh/rh-${oldPackage}/lib/mysql/ /var/opt/rh/rh-${newPackage}/lib/
chown -R mysql:mysql /var/opt/rh/rh-${newPackage}/lib/mysql/
restorecon -R /var/opt/rh/rh-${newPackage}/lib/mysql/
# Dienst starten
service rh-${newPackage}-mariadb start
# Upgrade durchführen
scl enable rh-${newPackage} -- mysql_upgrade -p
# Neuen Dienst aktivieren
systemctl enable rh-${newPackage}-mariadb
# Soft Link setzen
ln -sf /opt/rh/rh-${newPackage}/root/bin/mysql /bin/
ln -sf /opt/rh/rh-${newPackage}/root/usr/bin/mysqladmin /bin/
# Alte DB entfernen
yum remove rh-${oldPackage}-* -y
rm -rf /var/opt/rh/rh-${oldPackage}
}
# Upgrade durchführen
if [ "$(systemctl status rh-mariadb100-mariadb)" ]; then
MariaDB_Upgrade mariadb100 mariadb101
fi
if [ "$(systemctl status rh-mariadb101-mariadb)" ]; then
MariaDB_Upgrade mariadb101 mariadb102
fi
if [ "$(systemctl status rh-mariadb102-mariadb)" ]; then
yum install rh-mariadb103-mariadb-server-utils -y # Bug 1738201
MariaDB_Upgrade mariadb102 mariadb103
yum remove rh-mariadb103-mariadb-server-utils -y # Bug 1738201
fi
}
MariaDB103_Upgrade

E-Mail Adressen Liste in SHA256 umwandeln

Mit diesen Python Skript kann man eine Liste von E-Mail Adressen in SHA256 umwandeln. Diese Liste kann dann an einen Dienstleister verschickt werden, damit dieser prüfen kann, ob diese E-Mail Adresse bei ihm in der Datenbank existieren.

#
# Imports
#
import csv
import hashlib
import sys
import os

#
# Variablen
#
csvDelimiter = ';'
csvFile      = 'Adressen.csv'

#
# Funktionen
#
def encrypt_string(hash_string):
    sha_signature = hashlib.sha256(hash_string.encode()).hexdigest()
    return sha_signature

#
# Main
#
print("###########################")
print("# E-Mail SHA256 Converter #")
print("###########################")
if not os.path.isfile(csvFile):
    with open(csvFile, 'w', newline='') as output:
        writer = csv.writer(output, delimiter=csvDelimiter)
        writer.writerow(['E-Mail', ''])
        sys.exit('Es konnte keine CSV Datei gefunden werden, es wird eine angelegt!') 

print("Gesamtzahl der Zeilen auslesen")
file = open(csvFile)
reader = csv.reader(file)
row_count = len(list(reader))

print("Umwandlung in SHA-256 (doppelte Einträge werden entfernt!)")
with open(csvFile) as f:
    emailHash = dict()
    reader = csv.reader(f, delimiter=csvDelimiter)    
    for row in reader:
        emailHash[row[0]] = encrypt_string(row[0].strip())
        
print("Speichern der neuen CSV Datei")
with open(csvFile, 'w', newline='') as output:
    writer = csv.writer(output, delimiter=csvDelimiter)
    for key, value in emailHash.items():
        writer.writerow([key, value])

print("Programm durchgelaufen")