Leider gibt es zum Zeitpunkt des Verfassens dieses Tutorials keinen Port von GreenSQL, daher müssen wir einiges selbst machen. Aber immer schön der Reihe nach. Was ist GreenSQL eigentlich? - GreenSQL ist ein mySQL-Proxy, der zwischen den eigentlichen Datenbankserver und den Webserver geschalten wird. GreenSQL erhält also die Abfragen, die normalerweise an den mySQL-Server weitergeleitet werden. Diese Abfragen werden auf ihre Sicherheit hin untersucht und an den Datenbankserver weitergeleitet, falls keine Gefahr besteht. GreenSQL hat vier Betriebs-Modi:
- Simulations-Modus (Intrusion Detection System)
- Sperre verdächtiger Abfragen (Intrusion Prevention System)
- Lern-Modus
- Datenbank-Firewall
- Als erstes überlegst du dir, ob du für GreenSQL eine eigene Jail anlegen willst oder ob du den Proxy in der mySQL-Jail laufen lassen willst. Der Vorteil einer eigenen Jail ist neben der Sicherheit auch der, dass bei den Webanwendungen lediglich die IP-Adresse und nicht auch der Port angepasst werden muss. Ich habe mich für eine Jail entschieden.
- Bevor wir uns an die Installation von GreenSQL machen, installieren wir die Abhängigkeiten:
# cd /usr/ports/devel/bison/ && make install clean
# cd /usr/ports/devel/libevent/ && make install clean
# cd /usr/ports/devel/pcre/ && make install clean
# cd /usr/ports/databases/mysql51-client/ && make install clean - Dann laden wir uns also den aktuellen Quellcode von der Website herunter und entpacken ihn in einem temporären Verzeichnis, bspw. "/tmp". (Leider gibt es auf der Website keinen Direktlink zum Download, daher muss das Archiv erst downgeloaded und dann per SFTP wieder hochgeladen werden.)
# tar -xzf greensql-fw-x.x.x.tar.gz - Anschliessend wechseln wir in das neue Verzeichnis "greensql-fw-x.x.x" und kompilieren das Binary "greensql-fw":
# cd /tmp/greensql-fw-x.x.x/ && make - Nach dem Kompilieren kopieren wir das Binary in den Zielordner, an dem es vom Startskript erwartet wird:
# cp /tmp/greensql-fw-x.x.x/greensql-fw /usr/local/sbin/. - Anschliessend erstellen wir einen Datenbank-Benutzer in unserem existierenden Datenbank-Server zusammen mit einer neuen Datenbank an (bspw. greensql für User und Datenbank). Wie das geht ist nicht Teil dieses Tutorials. Achte darauf, dass die Datenbank von der GreenSQL-Jail aus zugänglich ist.
- Nachdem die Datenbank erstellt ist, importieren wir das SQL-File "mysql_create_tables.sql" aus dem Verzeichnis "/tmp/greensql-fw-x.x.x/db/". Vorher solltest du aber noch folgende Zeile (29) anpassen:
insert into proxy values (0,'Default Proxy',INET_ATON('GREENSQL-IP'),GREENSQL-PORT,'MYSQL-HOSTNAME',INET_ATON('MYSQL-IP'),MYSQL-PORT,'mysql',1);
- Wenn das erledigt ist, erstellen wir das GreenSQL-Verzeichnis und kopieren die Konfigurationsdateien aus dem Verzeichnis "/tmp/greensql-fw-x.x.x/conf/" in das GreenSQL-Verzeichnis "/usr/local/etc/greensql/" bzw. das Startskript nach "/usr/local/etc/rc.d/":
# mkdir -p /usr/local/etc/greensql/
# cp /tmp/greensql-fw-x.x.x/conf/* /usr/local/etc/greensql/.
# cp /tmp/greensql-fw-x.x.x/freebsd/greensql-fw.sh /usr/local/etc/rc.d/. - Jetzt, wo die Konfigurationsdateien am richtigen Ort sind, müssen wir sie also an unsere Serverumgebung anpassen. Die "mysql.conf" müssen wir nicht anfassen, lediglich die "greensql.conf" muss angepasst werden. Die Abschnitte die zu bearbeiten sind, müssen wie folgt aussehen:
[database]
dbHost = IP-des-DB-Servers
dbPort = 3306
dbName = greensql
dbUser = greensql
dbpass = Passwort-des-GreenSQL-DB-Users
[client]
host = IP-des-DB-Servers
port = 3306
user = Root-Username-des-DB-Servers
password = Root-Password-des-DB-Root-Users - Jetzt müssen wir noch den User anlegen, unter dem GreenSQL laufen soll (unterprivilegierter User):
# pw user add greensql -d /nonexistent -s /sbin/nologin - Wie bei jedem FreeBSD-Startskript, passen wir noch die "rc.conf" an, um GreenSQL zu aktivieren. Folgende Zeile fügen wir also ein:
greensql_enable="YES" - Jetzt ist eigentlich erstmal soweit alles fertig, wir starten also GreenSQL das erste Mail mir folgendem Befehl:
# /usr/local/etc/rc.d/greensql-fw start - Wenn jetzt der GreenSQL-Prozess läuft (ps aux gibt Auskunft), kannst du bei deinen Webanwendungen die IP-Adresse des Datenbankservers durch die der GreenSQL-Jail austauschen. Achte aber darauf, dass auch der entsprechende Datenbank-User für die GreenSQL-Jail-IP im Datenbankserver freigeschalten ist.
- Um die Performance zu verbessern, solltest du Logging ausschalten. Diese weitere Konfigurationsoptionen findest du auf der Website, auch wie du die verschiedenen Betriebsmodi umstellst. Da dies sehr individuell ist (ich würde bspw. das IPS verwenden), soll dies nicht Teil dieses Tutorials sein.
Einen Kommentar hinzufügen